From 0302cf4f566c1e56856ffd7aa55b739cd2f476ef Mon Sep 17 00:00:00 2001 From: yoduyodu Date: Mon, 1 Apr 2024 14:46:25 -0700 Subject: [PATCH 01/10] initial --- xmtp_id/src/bindings/base_64.rs | 119 + xmtp_id/src/bindings/base_64_url.rs | 119 + xmtp_id/src/bindings/coinbase_smart_wallet.rs | 2623 ++++++++++++++++ .../bindings/coinbase_smart_wallet_factory.rs | 496 +++ xmtp_id/src/bindings/dummy.rs | 576 ++++ xmtp_id/src/bindings/erc1271.rs | 463 +++ .../src/bindings/erc1271_input_generator.rs | 316 ++ xmtp_id/src/bindings/fcl_ecdsa.rs | 119 + xmtp_id/src/bindings/fcl_elliptic_zz.rs | 121 + xmtp_id/src/bindings/helpers.rs | 70 + xmtp_id/src/bindings/i_aggregator.rs | 384 +++ xmtp_id/src/bindings/i_entry_point.rs | 2546 ++++++++++++++++ xmtp_id/src/bindings/i_nonce_manager.rs | 247 ++ xmtp_id/src/bindings/i_stake_manager.rs | 855 ++++++ .../src/bindings/ierc721_token_receiver.rs | 165 + xmtp_id/src/bindings/lib_clone.rs | 294 ++ xmtp_id/src/bindings/lib_string.rs | 260 ++ .../bindings/mock_coinbase_smart_wallet.rs | 2710 +++++++++++++++++ xmtp_id/src/bindings/mock_entry_point.rs | 468 +++ xmtp_id/src/bindings/mock_erc20.rs | 1299 ++++++++ xmtp_id/src/bindings/mock_erc721.rs | 1389 +++++++++ xmtp_id/src/bindings/mock_multi_ownable.rs | 1191 ++++++++ xmtp_id/src/bindings/mock_target.rs | 495 +++ xmtp_id/src/bindings/mod.rs | 37 + xmtp_id/src/bindings/multi_ownable.rs | 1132 +++++++ xmtp_id/src/bindings/receiver.rs | 70 + xmtp_id/src/bindings/shared_types.rs | 64 + xmtp_id/src/bindings/signature_checker_lib.rs | 121 + xmtp_id/src/bindings/static_.rs | 119 + xmtp_id/src/bindings/user_operation_lib.rs | 121 + xmtp_id/src/bindings/utils.rs | 202 ++ xmtp_id/src/bindings/uups_upgradeable.rs | 411 +++ xmtp_id/src/bindings/web_authn.rs | 119 + xmtp_id/src/verifier.rs | 47 + 34 files changed, 19768 insertions(+) create mode 100644 xmtp_id/src/bindings/base_64.rs create mode 100644 xmtp_id/src/bindings/base_64_url.rs create mode 100644 xmtp_id/src/bindings/coinbase_smart_wallet.rs create mode 100644 xmtp_id/src/bindings/coinbase_smart_wallet_factory.rs create mode 100644 xmtp_id/src/bindings/dummy.rs create mode 100644 xmtp_id/src/bindings/erc1271.rs create mode 100644 xmtp_id/src/bindings/erc1271_input_generator.rs create mode 100644 xmtp_id/src/bindings/fcl_ecdsa.rs create mode 100644 xmtp_id/src/bindings/fcl_elliptic_zz.rs create mode 100644 xmtp_id/src/bindings/helpers.rs create mode 100644 xmtp_id/src/bindings/i_aggregator.rs create mode 100644 xmtp_id/src/bindings/i_entry_point.rs create mode 100644 xmtp_id/src/bindings/i_nonce_manager.rs create mode 100644 xmtp_id/src/bindings/i_stake_manager.rs create mode 100644 xmtp_id/src/bindings/ierc721_token_receiver.rs create mode 100644 xmtp_id/src/bindings/lib_clone.rs create mode 100644 xmtp_id/src/bindings/lib_string.rs create mode 100644 xmtp_id/src/bindings/mock_coinbase_smart_wallet.rs create mode 100644 xmtp_id/src/bindings/mock_entry_point.rs create mode 100644 xmtp_id/src/bindings/mock_erc20.rs create mode 100644 xmtp_id/src/bindings/mock_erc721.rs create mode 100644 xmtp_id/src/bindings/mock_multi_ownable.rs create mode 100644 xmtp_id/src/bindings/mock_target.rs create mode 100644 xmtp_id/src/bindings/mod.rs create mode 100644 xmtp_id/src/bindings/multi_ownable.rs create mode 100644 xmtp_id/src/bindings/receiver.rs create mode 100644 xmtp_id/src/bindings/shared_types.rs create mode 100644 xmtp_id/src/bindings/signature_checker_lib.rs create mode 100644 xmtp_id/src/bindings/static_.rs create mode 100644 xmtp_id/src/bindings/user_operation_lib.rs create mode 100644 xmtp_id/src/bindings/utils.rs create mode 100644 xmtp_id/src/bindings/uups_upgradeable.rs create mode 100644 xmtp_id/src/bindings/web_authn.rs create mode 100644 xmtp_id/src/verifier.rs diff --git a/xmtp_id/src/bindings/base_64.rs b/xmtp_id/src/bindings/base_64.rs new file mode 100644 index 000000000..7e103147e --- /dev/null +++ b/xmtp_id/src/bindings/base_64.rs @@ -0,0 +1,119 @@ +pub use base_64::*; +/// 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 base_64 { + #[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 BASE64_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9DGb\x8C3\x8A\xAC\x06\x01\xDF\x06~\x1A1:\x8E`:\xF3R\x12\xED\xF1\xE1\x1C\x9AT\xAC\x16\x07\xADXdsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static BASE64_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9DGb\x8C3\x8A\xAC\x06\x01\xDF\x06~\x1A1:\x8E`:\xF3R\x12\xED\xF1\xE1\x1C\x9AT\xAC\x16\x07\xADXdsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static BASE64_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Base64(::ethers::contract::Contract); + impl ::core::clone::Clone for Base64 { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Base64 { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Base64 { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Base64 { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Base64)) + .field(&self.address()) + .finish() + } + } + impl Base64 { + /// 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(), + BASE64_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( + BASE64_ABI.clone(), + BASE64_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 Base64 { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/xmtp_id/src/bindings/base_64_url.rs b/xmtp_id/src/bindings/base_64_url.rs new file mode 100644 index 000000000..4324c9f5b --- /dev/null +++ b/xmtp_id/src/bindings/base_64_url.rs @@ -0,0 +1,119 @@ +pub use base_64_url::*; +/// 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 base_64_url { + #[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 BASE64URL_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD5\xE6\x1B\xE4\x1A8S\xB6\x84\xB6-\x82\x8B\x9D\xFB6\x95\xEB\xDA'\x91Y\x05'}\x9C\xC1\x07\x8B\xA5 \x90dsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static BASE64URL_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD5\xE6\x1B\xE4\x1A8S\xB6\x84\xB6-\x82\x8B\x9D\xFB6\x95\xEB\xDA'\x91Y\x05'}\x9C\xC1\x07\x8B\xA5 \x90dsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static BASE64URL_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Base64Url(::ethers::contract::Contract); + impl ::core::clone::Clone for Base64Url { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Base64Url { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Base64Url { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Base64Url { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Base64Url)) + .field(&self.address()) + .finish() + } + } + impl Base64Url { + /// 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(), + BASE64URL_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( + BASE64URL_ABI.clone(), + BASE64URL_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 Base64Url { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/xmtp_id/src/bindings/coinbase_smart_wallet.rs b/xmtp_id/src/bindings/coinbase_smart_wallet.rs new file mode 100644 index 000000000..052bb35a3 --- /dev/null +++ b/xmtp_id/src/bindings/coinbase_smart_wallet.rs @@ -0,0 +1,2623 @@ +pub use coinbase_smart_wallet::*; +/// 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 coinbase_smart_wallet { + 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![], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("REPLAYABLE_NONCE_KEY"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("REPLAYABLE_NONCE_KEY",), + 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("addOwnerAddress"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("addOwnerAddress"), + 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"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + 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("y"), + 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("canSkipChainIdValidation"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("canSkipChainIdValidation",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("functionSelector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + },], + 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::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("domainSeparator"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("domainSeparator"), + 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("eip712Domain"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("eip712Domain"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("fields"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(1usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes1"), + ), + }, + ::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("version"), + 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("chainId"), + 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("verifyingContract"), + 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("salt"), + 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("extensions"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::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("entryPoint"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("entryPoint"), + 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("execute"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("execute"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("target"), + 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("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::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("executeBatch"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("executeBatch"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("calls"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct CoinbaseSmartWallet.Call[]", + ), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("executeWithoutChainIdValidation"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("executeWithoutChainIdValidation",), + inputs: ::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"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getUserOpHashWithoutChainId"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getUserOpHashWithoutChainId",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOp"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOpHash"), + 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("implementation"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("implementation"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("$"), + 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("owners"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::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::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("isOwnerAddress"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerAddress"), + 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"), + ), + },], + 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("isOwnerBytes"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerBytes"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("account"), + 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::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("isOwnerPublicKey"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerPublicKey"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + 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("y"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + 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("isValidSignature"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isValidSignature"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hash"), + 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("signature"), + 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("result"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), + 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("ownerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ownerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("proxiableUUID"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), + 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("removeOwnerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("removeOwnerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("replaySafeHash"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("replaySafeHash"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + 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("upgradeToAndCall"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newImplementation"), + 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("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::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateUserOp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateUserOp"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOp"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOpHash"), + 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("missingAccountFunds",), + 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("validationData"), + 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, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AddOwner"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("AddOwner"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("index"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("RemoveOwner"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("RemoveOwner"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("index"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Upgraded"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Upgraded"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("implementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + },], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AlreadyOwner"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("AlreadyOwner"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Initialized"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Initialized"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidNonceKey"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidNonceKey"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("key"), + 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("InvalidOwnerBytesLength"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("SelectorNotAllowed"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("SelectorNotAllowed"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Unauthorized"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Unauthorized"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UpgradeFailed"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UpgradeFailed"), + inputs: ::std::vec![], + },], + ), + ]), + receive: true, + fallback: true, + } + } + ///The parsed JSON ABI of the contract. + pub static COINBASESMARTWALLET_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xA0`@R0`\x80R4\x80\x15b\0\0\x15W`\0\x80\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\0-W\x90PP`@\x80Q`\0` \x82\x01R\x91\x92P\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81`\0\x81Q\x81\x10b\0\0wWb\0\0wb\0\x03zV[` \x90\x81\x02\x91\x90\x91\x01\x01Rb\0\0\x8D\x81b\0\0\x94V[Pb\0\x05\xB0V[`\0[\x81Q\x81\x10\x15b\0\x02&W\x81\x81\x81Q\x81\x10b\0\0\xB6Wb\0\0\xB6b\0\x03zV[` \x02` \x01\x01QQ` \x14\x15\x80\x15b\0\0\xEEWP\x81\x81\x81Q\x81\x10b\0\0\xE0Wb\0\0\xE0b\0\x03zV[` \x02` \x01\x01QQ`@\x14\x15[\x15b\0\x016W\x81\x81\x81Q\x81\x10b\0\x01\tWb\0\x01\tb\0\x03zV[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01b\0\x01-\x91\x90b\0\x03\xB6V[`@Q\x80\x91\x03\x90\xFD[\x81\x81\x81Q\x81\x10b\0\x01KWb\0\x01Kb\0\x03zV[` \x02` \x01\x01QQ` \x14\x80\x15b\0\x01\x93WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10b\0\x01~Wb\0\x01~b\0\x03zV[` \x02` \x01\x01Qb\0\x01\x91\x90b\0\x03\xEBV[\x11[\x15b\0\x01\xD2W\x81\x81\x81Q\x81\x10b\0\x01\xAEWb\0\x01\xAEb\0\x03zV[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01b\0\x01-\x91\x90b\0\x03\xB6V[b\0\x02\x1D\x82\x82\x81Q\x81\x10b\0\x01\xEBWb\0\x01\xEBb\0\x03zV[` \x02` \x01\x01Qb\0\x02\x03b\0\x02*` \x1B` \x1CV[\x80T\x90`\0b\0\x02\x13\x83b\0\x04\x13V[\x90\x91UPb\0\x02=V[`\x01\x01b\0\0\x97V[PPV[`\0\x80Q` b\087\x839\x81Q\x91R\x90V[b\0\x02H\x82b\0\x03&V[\x15b\0\x02kW\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01b\0\x01-\x91\x90b\0\x03\xB6V[`\x01`\0\x80Q` b\087\x839\x81Q\x91R`\x02\x01\x83`@Qb\0\x02\x90\x91\x90b\0\x04;V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81b\0\x02\xC8`\0\x80Q` b\087\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90b\0\x02\xE7\x90\x82b\0\x04\xE4V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qb\0\x03\x1A\x91\x90b\0\x03\xB6V[`@Q\x80\x91\x03\x90\xA2PPV[`\0`\0\x80Q` b\087\x839\x81Q\x91R`\x02\x01\x82`@Qb\0\x03K\x91\x90b\0\x04;V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15b\0\x03\xADW\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x03\x93V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Rb\0\x03\xD7\x81`@\x85\x01` \x87\x01b\0\x03\x90V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15b\0\x04\rW`\0\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\0`\x01\x82\x01b\0\x044WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[`\0\x82Qb\0\x04O\x81\x84` \x87\x01b\0\x03\x90V[\x91\x90\x91\x01\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x04nW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x04\rWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[`\x1F\x82\x11\x15b\0\x04\xDFW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x04\xBAWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x04\xDBW\x82\x81U`\x01\x01b\0\x04\xC6V[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x05\0Wb\0\x05\0b\0\x03dV[b\0\x05\x18\x81b\0\x05\x11\x84Tb\0\x04YV[\x84b\0\x04\x8FV[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x05PW`\0\x84\x15b\0\x057WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x04\xDBV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x05\x81W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x05`V[P\x85\x82\x10\x15b\0\x05\xA0W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x80Qa2db\0\x05\xD3`\09`\0\x81\x81a\x08\x1E\x01Ra\tU\x01Ra2d`\0\xF3\xFE`\x80`@R`\x046\x10a\x01OW`\x005`\xE0\x1C\x80cr\xDE;Z\x11a\0\xB6W\x80c\xB0\xD6\x91\xFE\x11a\0oW\x80c\xB0\xD6\x91\xFE\x14a\x03\xF4W\x80c\xB6\x1D'\xF6\x14a\x04\x1BW\x80c\xBFk\xA1\xFC\x14a\x04.W\x80c\xCE\x15\x06\xBE\x14a\x04AW\x80c\xD9H\xFD.\x14a\x04aW\x80c\xF6\x98\xDA%\x14a\x04\x83Wa\x01VV[\x80cr\xDE;Z\x14a\x03)W\x80c\x84\xB0\x19n\x14a\x03IW\x80c\x88\xCEL|\x14a\x03qW\x80c\x8E\xA6\x90)\x14a\x03\x87W\x80c\x9F\x9B\xCB4\x14a\x03\xB4W\x80c\xA2\xE1\xA8\xD8\x14a\x03\xD4Wa\x01VV[\x80c:\x87\x1C\xDD\x11a\x01\x08W\x80c:\x87\x1C\xDD\x14a\x02eW\x80cO\x1E\xF2\x86\x14a\x02\x86W\x80cOn\x7F\"\x14a\x02\x99W\x80cR\xD1\x90-\x14a\x02\xB9W\x80c\\`\xDA\x1B\x14a\x02\xCEW\x80co-\xE7\x0E\x14a\x03\x16Wa\x01VV[\x80c\x06j\x1E\xB7\x14a\x01\x84W\x80c\x0F\x0F?$\x14a\x01\xB9W\x80c\x16&\xBA~\x14a\x01\xD9W\x80c\x1C\xA59?\x14a\x02\x12W\x80c)V^;\x14a\x022W\x80c4\xFC\xD5\xBE\x14a\x02RWa\x01VV[6a\x01VW\0[`\x005`\xE0\x1Cc\xBC\x19|\x81\x81\x14c\xF2:na\x82\x14\x17c\x15\x0Bz\x02\x82\x14\x17\x15a\x01\x82W\x80` R` `<\xF3[\0[4\x80\x15a\x01\x90W`\0\x80\xFD[Pa\x01\xA4a\x01\x9F6`\x04a'iV[a\x04\x98V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC5W`\0\x80\xFD[Pa\x01\x82a\x01\xD46`\x04a'\xA7V[a\x05\x07V[4\x80\x15a\x01\xE5W`\0\x80\xFD[Pa\x01\xF9a\x01\xF46`\x04a(\nV[a\x05?V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01\xB0V[4\x80\x15a\x02\x1EW`\0\x80\xFD[Pa\x01\xA4a\x02-6`\x04a)@V[a\x05yV[4\x80\x15a\x02>W`\0\x80\xFD[Pa\x01\x82a\x02M6`\x04a'iV[a\x05\xB4V[a\x01\x82a\x02`6`\x04a)\xB8V[a\x05\xDDV[a\x02xa\x02s6`\x04a*\x12V[a\x06\xE1V[`@Q\x90\x81R` \x01a\x01\xB0V[a\x01\x82a\x02\x946`\x04a*_V[a\x08\x1CV[4\x80\x15a\x02\xA5W`\0\x80\xFD[Pa\x02xa\x02\xB46`\x04a*\x98V[a\t\0V[4\x80\x15a\x02\xC5W`\0\x80\xFD[Pa\x02xa\tQV[4\x80\x15a\x02\xDAW`\0\x80\xFD[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xB0V[a\x01\x82a\x03$6`\x04a)\xB8V[a\t\xB1V[4\x80\x15a\x035W`\0\x80\xFD[Pa\x01\x82a\x03D6`\x04a*\xCCV[a\t\xF1V[4\x80\x15a\x03UW`\0\x80\xFD[Pa\x03^a\n\xDEV[`@Qa\x01\xB0\x97\x96\x95\x94\x93\x92\x91\x90a+5V[4\x80\x15a\x03}W`\0\x80\xFD[Pa\x02xa!\x05\x81V[4\x80\x15a\x03\x93W`\0\x80\xFD[Pa\x03\xA7a\x03\xA26`\x04a*\xCCV[a\x0B\x05V[`@Qa\x01\xB0\x91\x90a+\xCEV[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xA4a\x03\xCF6`\x04a+\xE1V[a\x0B\xC6V[4\x80\x15a\x03\xE0W`\0\x80\xFD[Pa\x01\xA4a\x03\xEF6`\x04a'\xA7V[a\x0CBV[4\x80\x15a\x04\0W`\0\x80\xFD[Ps_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89a\x02\xFEV[a\x01\x82a\x04)6`\x04a,\x0BV[a\x0C\x88V[a\x01\x82a\x04<6`\x04a,dV[a\x0C\xECV[4\x80\x15a\x04MW`\0\x80\xFD[Pa\x02xa\x04\\6`\x04a*\xCCV[a\r\xADV[4\x80\x15a\x04mW`\0\x80\xFD[P`\0\x80Q` a2\x0F\x839\x81Q\x91RTa\x02xV[4\x80\x15a\x04\x8FW`\0\x80\xFD[Pa\x02xa\r\xB8V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x04\xEB\x91a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P[\x92\x91PPV[a\x05\x0Fa\x0E>V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x05<\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0EpV[PV[`\0a\x05Ta\x05M\x85a\r\xADV[\x84\x84a\x0E\x9BV[\x15a\x05gWPc\x0B\x13]?`\xE1\x1Ba\x05rV[P`\x01`\x01`\xE0\x1B\x03\x19[\x93\x92PPPV[`\0`\0\x80Q` a2\x0F\x839\x81Q\x91R`\x02\x01\x82`@Qa\x05\x9B\x91\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x05\xBCa\x0E>V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x05\xD9\x90``\x01a\x05(V[PPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x06\0Wa\x06\0a\x0E>V[`\0[\x81\x81\x10\x15a\x06\xDCWa\x06\xD4\x83\x83\x83\x81\x81\x10a\x06 Wa\x06 a,\xB5V[\x90P` \x02\x81\x01\x90a\x062\x91\x90a,\xCBV[a\x06@\x90` \x81\x01\x90a'\xA7V[\x84\x84\x84\x81\x81\x10a\x06RWa\x06Ra,\xB5V[\x90P` \x02\x81\x01\x90a\x06d\x91\x90a,\xCBV[` \x015\x85\x85\x85\x81\x81\x10a\x06zWa\x06za,\xB5V[\x90P` \x02\x81\x01\x90a\x06\x8C\x91\x90a,\xCBV[a\x06\x9A\x90`@\x81\x01\x90a,\xE1V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[`\x01\x01a\x06\x03V[PPPV[`\x003s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x07\x16W`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81` \x85\x015`@\x1C`\x04a\x07.``\x88\x01\x88a,\xE1V[\x90P\x10\x15\x80\x15a\x07rWPa\x07F``\x87\x01\x87a,\xE1V[a\x07U\x91`\x04\x91`\0\x91a-'V[a\x07^\x91a-QV[`\x01`\x01`\xE0\x1B\x03\x19\x16c\xBFk\xA1\xFC`\xE0\x1B\x14[\x15a\x07\xB1Wa\x07\x80\x86a\t\0V[\x94Pa!\x05\x81\x14a\x07\xACW`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x07\xD6V[a!\x05\x81\x03a\x07\xD6W`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x07\xA3V[a\x07\xED\x85a\x07\xE8a\x01@\x89\x01\x89a,\xE1V[a\x0E\x9BV[\x15a\x07\xFCW`\0\x92PPa\x08\x02V[`\x01\x92PP[\x80\x15a\x08\x14W`\08`\08\x843Z\xF1P[P\x93\x92PPPV[\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\x000\x81\x03a\x08RWc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[a\x08[\x84a\x10 V[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x08\xADWcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\x08\xFAW`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\x08\xF8W=`\0\x82>=\x81\xFD[P[PPPPV[`\0a\t\x0B\x82a\x10(V[`@\x80Q` \x81\x01\x92\x90\x92Rs_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x90\x82\x01R``\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\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\x000\x81\x14a\t\x89Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91P[P\x90V[`\0\x80Q` a2\x0F\x839\x81Q\x91RT\x15a\t\xDFW`@Qc\x02\xEDT=`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05\xD9a\t\xEC\x82\x84a-\x81V[a\x10AV[a\t\xF9a\x0E>V[`\0a\n\x04\x82a\x0B\x05V[\x90P\x80Q`\0\x03a\n+W`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01a\x07\xA3V[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\n[\x90\x83\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\n\x87`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\n\xA2\x91a'\x1FV[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\n\xD2\x91\x90a+\xCEV[`@Q\x80\x91\x03\x90\xA2PPV[`\x0F`\xF8\x1B``\x80`\0\x80\x80\x83a\n\xF3a\x11\x93V[\x97\x98\x90\x97\x96PF\x95P0\x94P\x91\x92P\x90V[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x0BA\x90a.\x06V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0Bm\x90a.\x06V[\x80\x15a\x0B\xBAW\x80`\x1F\x10a\x0B\x8FWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0B\xBAV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0B\x9DW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c)V^;`\xE0\x1B\x14\x80a\x0B\xF7WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x03\xC3\xCF\xC9`\xE2\x1B\x14[\x80a\x0C\x12WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c9o\x1D\xAD`\xE1\x1B\x14[\x80a\x0C-WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c'\x8FyC`\xE1\x1B\x14[\x15a\x0C:WP`\x01\x91\x90PV[P`\0\x91\x90PV[`\0`\0\x80Q` a2\x0F\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\x9B\x91a,\x99V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x0C\xABWa\x0C\xABa\x0E>V[a\x08\xFA\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x1FW`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\r.`\x04\x82\x84\x86a-'V[a\r7\x91a-QV[\x90Pa\rB\x81a\x0B\xC6V[a\rkW`@Qc\x1D\x83p\xA3`\xE1\x1B\x81R`\x01`\x01`\xE0\x1B\x03\x19\x82\x16`\x04\x82\x01R`$\x01a\x07\xA3V[a\x06\xDC0`\0\x85\x85\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[`\0a\x05\x01\x82a\x11\xDAV[`\0\x80`\0a\r\xC5a\x11\x93V[\x81Q` \x80\x84\x01\x91\x90\x91 \x82Q\x82\x84\x01 `@\x80Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x94\x81\x01\x94\x90\x94R\x83\x01\x91\x90\x91R``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R\x91\x93P\x91P`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x92PPP\x90V[a\x0EG3a\x0CBV[\x80a\x0EQWP30\x14[\x15a\x0EXWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05<\x81`\0\x80Q` a2\x0F\x839\x81Q\x91R[\x80T\x90`\0a\x0E\x92\x83a.PV[\x91\x90PUa\x12\x10V[`\0\x80a\x0E\xAA\x83\x85\x01\x85a.iV[\x90P`\0a\x0E\xBB\x82`\0\x01Qa\x0B\x05V[\x90P\x80Q` \x03a\x0F\x1AW`\x01`\x01`\xA0\x1B\x03a\x0E\xD7\x82a.\xF5V[\x11\x15a\x0E\xF8W\x80`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\0` \x82\x01Q\x90Pa\x0F\x10\x81\x88\x85` \x01Qa\x12\xDFV[\x93PPPPa\x05rV[\x80Q`@\x03a\x0F\x95W`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x0F:\x91\x90a/\x19V[\x91P\x91P`\0\x84` \x01Q\x80` \x01\x90Q\x81\x01\x90a\x0FX\x91\x90a/\x82V[\x90Pa\x0F\x89\x89`@Q` \x01a\x0Fp\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\0\x83\x86\x86a\x13\xE4V[\x95PPPPPPa\x05rV[\x80`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x0F\xCC\x91\x90a,\x99V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x10\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10\x0EV[``\x91P[P\x91P\x91P\x81a\x08\xF8W\x80Q` \x82\x01\xFD[a\x05V[`\0a\x103\x82a\x17TV[\x80Q\x90` \x01 \x90P\x91\x90PV[`\0[\x81Q\x81\x10\x15a\x05\xD9W\x81\x81\x81Q\x81\x10a\x10_Wa\x10_a,\xB5V[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x10\x93WP\x81\x81\x81Q\x81\x10a\x10\x85Wa\x10\x85a,\xB5V[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x10\xCCW\x81\x81\x81Q\x81\x10a\x10\xAAWa\x10\xAAa,\xB5V[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[\x81\x81\x81Q\x81\x10a\x10\xDEWa\x10\xDEa,\xB5V[` \x02` \x01\x01QQ` \x14\x80\x15a\x11 WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x11\rWa\x11\ra,\xB5V[` \x02` \x01\x01Qa\x11\x1E\x90a.\xF5V[\x11[\x15a\x11YW\x81\x81\x81Q\x81\x10a\x117Wa\x117a,\xB5V[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[a\x11\x8B\x82\x82\x81Q\x81\x10a\x11nWa\x11na,\xB5V[` \x02` \x01\x01Qa\x0E\x84`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\x01\x01a\x10DV[`@\x80Q\x80\x82\x01\x82R`\x15\x81Rt\x10\xDB\xDA[\x98\x98\\\xD9H\x14\xDBX\\\x9D\x08\x15\xD8[\x1B\x19]`Z\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R`\x01\x83R`1`\xF8\x1B\x90\x83\x01R\x91V[`\0a\x11\xE4a\r\xB8V[a\x11\xED\x83a\x18'V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x92\x90\x92R`B\x82\x01R`b\x01a\t4V[a\x12\x19\x82a\x05yV[\x15a\x129W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\x01`\0\x80Q` a2\x0F\x839\x81Q\x91R`\x02\x01\x83`@Qa\x12[\x91\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x12\x91`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x12\xAE\x90\x82a0\x8DV[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\n\xD2\x91\x90a+\xCEV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91`\0\x83\x15a\x05rW`@Q\x83`\0R` \x83\x01Q`@R`@\x83Q\x03a\x13OW`@\x83\x01Q`\x1B\x81`\xFF\x1C\x01` R\x80`\x01\x1B`\x01\x1C``RP` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13MWP`\0``R`@RP`\x01a\x05rV[P[`A\x83Q\x03a\x13\x95W``\x83\x01Q`\0\x1A` R`@\x83\x01Q``R` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\x93WP`\0``R`@RP`\x01a\x05rV[P[`\0``R\x80`@Rc\x16&\xBA~`\xE0\x1B\x80\x82R\x84`\x04\x83\x01R`$\x82\x01`@\x81R\x84Q` \x01\x80`D\x85\x01\x82\x88`\x04Z\xFAPP` \x81`D=\x01\x85\x8AZ\xFA\x90Q\x90\x91\x14\x16\x91PP\x93\x92PPPV[`\0\x7F\x7F\xFF\xFF\xFF\x80\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDEs}V\xD3\x8B\xCFBy\xDC\xE5a~1\x92\xA8\x84`\xA0\x01Q\x11\x15a\x14\x1AWP`\0a\x17KV[``\x84\x01Q`\0\x90a\x14=\x90a\x141\x81`\x15a1LV[` \x88\x01Q\x91\x90a\x18bV[\x90P\x7F\xFF\x1A*\x91v\xD6P\xE4\xA9\x9D\xED\xB5\x8F\x17\x93\095\x13\x05y\xFE\x17\xB5\xA3\xF6\x98\xAC[\0\xE64\x81\x80Q\x90` \x01 \x14a\x14wW`\0\x91PPa\x17KV[`\0a\x14\x85\x88`\x01\x80a\x18\xC8V[`@Q` \x01a\x14\x95\x91\x90a1_V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x14\xCD\x87`@\x01Q\x83Q\x89`@\x01Qa\x14\xC1\x91\x90a1LV[` \x8A\x01Q\x91\x90a\x18bV[\x90P\x81\x80Q\x90` \x01 \x81\x80Q\x90` \x01 \x14a\x14\xF0W`\0\x93PPPPa\x17KV[\x86Q\x80Q`\x01`\xF8\x1B\x91\x82\x91` \x90\x81\x10a\x15\rWa\x15\ra,\xB5V[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14a\x15.W`\0\x93PPPPa\x17KV[\x87\x80\x15a\x15fWP\x86Q\x80Q`\x01`\xFA\x1B\x91\x82\x91` \x90\x81\x10a\x15SWa\x15Sa,\xB5V[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14\x15[\x15a\x15wW`\0\x93PPPPa\x17KV[`\0`\x02\x88` \x01Q`@Qa\x15\x8D\x91\x90a,\x99V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x15\xAAW=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xCD\x91\x90a1\xA0V[\x90P`\0`\x02\x89`\0\x01Q\x83`@Q` \x01a\x15\xEA\x92\x91\x90a1\xB9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x16\x04\x91a,\x99V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16!W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16D\x91\x90a1\xA0V[`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`@\x80Q` \x81\x01\x87\x90R\x90\x81\x01\x93\x90\x93R``\x83\x01R\x91\x81\x01\x8B\x90R\x90\x81\x01\x89\x90R\x90\x91P`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80a\x01\0`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x16\xAA\x91\x90a,\x99V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x16\xE5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x16\xEAV[``\x91P[P\x80Q\x91\x93P\x91P\x15\x15\x82\x80\x15a\x16\xFEWP\x80[\x15a\x17*W\x81\x80` \x01\x90Q\x81\x01\x90a\x17\x17\x91\x90a1\xA0V[`\x01\x14\x99PPPPPPPPPPa\x17KV[a\x17?\x85\x8E`\x80\x01Q\x8F`\xA0\x01Q\x8F\x8Fa\x19\xBDV[\x99PPPPPPPPPP[\x95\x94PPPPPV[``\x815` \x83\x015`\0a\x17ta\x17o`@\x87\x01\x87a,\xE1V[a\x1A\xA0V[\x90P`\0a\x17\x88a\x17o``\x88\x01\x88a,\xE1V[\x90P`\x80\x86\x015`\xA0\x87\x015`\xC0\x88\x015`\xE0\x89\x015a\x01\0\x8A\x015`\0a\x17\xB7a\x17oa\x01 \x8E\x01\x8Ea,\xE1V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x9C\x90\x9C\x16` \x8D\x01R\x8B\x81\x01\x9A\x90\x9AR``\x8B\x01\x98\x90\x98RP`\x80\x89\x01\x95\x90\x95R`\xA0\x88\x01\x93\x90\x93R`\xC0\x87\x01\x91\x90\x91R`\xE0\x86\x01Ra\x01\0\x85\x01Ra\x01 \x84\x01Ra\x01@\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81Ra\x01`\x90\x92\x01\x90R\x92\x91PPV[`@\x80Q\x7F\x9BI=\"!\x05\xFE\xE7\xDF\x16:\xB5\xD5\x7F\x0B\xF1\xFF\xD2\xDA\x04\xDD_\xAF\xBE\x10\xB5LA\xC1\xAD\xC6W` \x82\x01R\x90\x81\x01\x82\x90R`\0\x90``\x01a\t4V[``\x83Q\x82\x81\x11a\x18qW\x80\x92P[\x83\x81\x11a\x18|W\x80\x93P[P\x81\x83\x10\x15a\x05rWP`@Q\x82\x82\x03\x80\x82R\x93\x83\x01\x93`\x1F\x19`\x1F\x82\x01\x81\x16[\x86\x81\x01Q\x84\x82\x01R\x81\x01\x80a\x18\x9DWP`\0\x83\x83\x01` \x01R`?\x90\x91\x01\x16\x81\x01`@R\x93\x92PPPV[``\x83Q\x80\x15a\x08\x14W`\x03`\x02\x82\x01\x04`\x02\x1B`@Q\x92P\x7FABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`\x1FRa\x06p\x85\x15\x02\x7Fghijklmnopqrstuvwxyz0123456789-_\x18`?R` \x83\x01\x81\x81\x01\x83\x88` \x01\x01\x80Q`\0\x82R[`\x03\x8A\x01\x99P\x89Q`?\x81`\x12\x1C\x16Q`\0S`?\x81`\x0C\x1C\x16Q`\x01S`?\x81`\x06\x1C\x16Q`\x02S`?\x81\x16Q`\x03SP`\0Q\x84R`\x04\x84\x01\x93P\x82\x84\x10a\x19DW\x90R` \x01`@Ra==`\xF0\x1B`\x03\x84\x06`\x02\x04\x80\x83\x03\x91\x90\x91R`\0\x86\x15\x15\x90\x91\x02\x91\x82\x90\x03R\x90\x03\x82RP\x93\x92PPPV[`\0\x84\x15\x80a\x19\xDAWP`\0\x80Q` a1\xEF\x839\x81Q\x91R\x85\x10\x15[\x80a\x19\xE3WP\x83\x15[\x80a\x19\xFCWP`\0\x80Q` a1\xEF\x839\x81Q\x91R\x84\x10\x15[\x15a\x1A\tWP`\0a\x17KV[a\x1A\x13\x83\x83a\x1A\xB3V[a\x1A\x1FWP`\0a\x17KV[`\0a\x1A*\x85a\x1B\xADV[\x90P`\0`\0\x80Q` a1\xEF\x839\x81Q\x91R\x82\x89\t\x90P`\0`\0\x80Q` a1\xEF\x839\x81Q\x91R\x83\x89\t\x90P`\0a\x1Af\x87\x87\x85\x85a\x1C\x1FV[\x90P`\0\x80Q` a1\xEF\x839\x81Q\x91Ra\x1A\x8F\x8A`\0\x80Q` a1\xEF\x839\x81Q\x91Ra1\xDBV[\x82\x08\x15\x9A\x99PPPPPPPPPPV[`\0`@Q\x82\x80\x85\x837\x90 \x93\x92PPPV[`\0\x82\x15\x80\x15a\x1A\xC1WP\x81\x15[\x80a\x1A\xD9WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x14[\x80a\x1A\xF1WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x14[\x15a\x1A\xFEWP`\0a\x05\x01V[`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x90P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x7F\xFF\xFF\xFF\xFF\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x87\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\t\x08\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x7FZ\xC65\xD8\xAA:\x93\xE7\xB3\xEB\xBDUv\x98\x86\xBCe\x1D\x06\xB0\xCCS\xB0\xF6;\xCE<>'\xD2`K\x82\x08\x91\x90\x91\x14\x94\x93PPPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%O`\x80\x82\x01R`\0\x80Q` a1\xEF\x839\x81Q\x91R`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C\x18W`\0\x80\xFD[Q\x92\x91PPV[`\0\x80\x80\x80`\xFF\x81\x80\x88\x15\x80\x15a\x1C4WP\x87\x15[\x15a\x1CHW`\0\x96PPPPPPPa\"\xE1V[a\x1C\x94\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x8D\x8Da\"\xE9V[\x90\x92P\x90P\x81\x15\x80\x15a\x1C\xA5WP\x80\x15[\x15a\x1C\xD3W`\0\x80Q` a1\xEF\x839\x81Q\x91R\x88`\0\x80Q` a1\xEF\x839\x81Q\x91R\x03\x8A\x08\x98P`\0\x97P[`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01[\x80a\x1D\x06W`\x01\x84\x03\x93P`\x01\x8A\x85\x1C\x16`\x01\x8A\x86\x1C\x16`\x01\x1B\x01\x90Pa\x1C\xE4V[P`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01\x95P`\x01\x86\x03a\x1DhW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x96P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x93P[`\x02\x86\x03a\x1DwW\x8A\x96P\x89\x93P[`\x03\x86\x03a\x1D\x86W\x81\x96P\x80\x93P[`\x01\x83\x03\x92P`\x01\x95P`\x01\x94P[\x82`\0\x19\x11\x15a\"jW`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x02\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8A\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x84\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x8D\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08\t`\x03\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x85\t\x98P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x84\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x08\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\x82\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x87\t\x08\x97P`\x01\x8D\x88\x1C\x16`\x01\x8D\x89\x1C\x16`\x01\x1B\x01\x90P\x80a\x1F\x12W\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x97PPPPPa\"_V[`\x01\x81\x03a\x1FaW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x93P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x92P[`\x02\x81\x03a\x1FpW\x8E\x93P\x8D\x92P[`\x03\x81\x03a\x1F\x7FW\x85\x93P\x84\x92P[\x89a\x1F\x98WP\x91\x98P`\x01\x97P\x87\x96P\x94Pa\"_\x90PV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x86\t\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x88\t\x08\x93P\x80a!QW\x83a!QW`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x86\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8D\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x86\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x8F\x08\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81`\x03\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x86\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x85\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x08\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8D`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x85\x08\x83\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8A\x87\t\x85\x08\x98PPPPPPa\"_V[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x83\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8D\t\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8C\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8E\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87\x88\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83\x8D\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x86\x08\t\x08\x9APPPP\x80\x9APPPPP[`\x01\x83\x03\x92Pa\x1D\x95V[`@Q\x86``\x82\x01R` \x81R` \x80\x82\x01R` `@\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\"\xC4W`\0\x80\xFD[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81Q\x89\t\x97PPPPPPPP[\x94\x93PPPPV[`\0\x80\x80\x80\x86a#\0W\x85\x85\x93P\x93PPPa#nV[\x84a#\x12W\x87\x87\x93P\x93PPPa#nV[\x85\x88\x14\x80\x15a# WP\x84\x87\x14[\x15a#AWa#2\x88\x88`\x01\x80a#wV[\x92\x9AP\x90\x98P\x92P\x90Pa#[V[a#P\x88\x88`\x01\x80\x8A\x8Aa$\xD2V[\x92\x9AP\x90\x98P\x92P\x90P[a#g\x88\x88\x84\x84a&VV[\x93P\x93PPP[\x94P\x94\x92PPPV[`\0\x80`\0\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x02\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x83\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x8B\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8C\x08\t`\x03\t\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x89\t\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x83\x08\x87\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x84\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x88\x85\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x89\x08\x92P\x94P\x94P\x94P\x94\x90PV[`\0\x80`\0\x80\x88`\0\x03a$\xF1WP\x84\x92P\x83\x91P`\x01\x90P\x80a&IV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x98\x89\x03\x98\x89\x81\x89\x88\t\x08\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x89\t\x08\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x87\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x89\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x88\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8B\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84\x8B\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\t\x08\x92P[\x96P\x96P\x96P\x96\x92PPPV[`\0\x80`\0a&d\x84a&\xC3V[\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x87\t\x91P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x87\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x93PPP\x94P\x94\x92PPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C\x18W`\0\x80\xFD[P\x80Ta'+\x90a.\x06V[`\0\x82U\x80`\x1F\x10a';WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x05<\x91\x90[\x80\x82\x11\x15a\t\xADW`\0\x81U`\x01\x01a'UV[`\0\x80`@\x83\x85\x03\x12\x15a'|W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a'\xA2W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a'\xB9W`\0\x80\xFD[a\x05r\x82a'\x8BV[`\0\x80\x83`\x1F\x84\x01\x12a'\xD4W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a'\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a(\x03W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a(\x1FW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(W`\0\x80\xFD[Pa\x01\x82a\x02M6`\x04a'iV[a\x05\xB4V[a\x01\x82a\x02`6`\x04a)\xB8V[a\x05\xDDV[a\x02xa\x02s6`\x04a*\x12V[a\x06\xE1V[`@Q\x90\x81R` \x01a\x01\xB0V[a\x01\x82a\x02\x946`\x04a*_V[a\x08\x1CV[4\x80\x15a\x02\xA5W`\0\x80\xFD[Pa\x02xa\x02\xB46`\x04a*\x98V[a\t\0V[4\x80\x15a\x02\xC5W`\0\x80\xFD[Pa\x02xa\tQV[4\x80\x15a\x02\xDAW`\0\x80\xFD[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xB0V[a\x01\x82a\x03$6`\x04a)\xB8V[a\t\xB1V[4\x80\x15a\x035W`\0\x80\xFD[Pa\x01\x82a\x03D6`\x04a*\xCCV[a\t\xF1V[4\x80\x15a\x03UW`\0\x80\xFD[Pa\x03^a\n\xDEV[`@Qa\x01\xB0\x97\x96\x95\x94\x93\x92\x91\x90a+5V[4\x80\x15a\x03}W`\0\x80\xFD[Pa\x02xa!\x05\x81V[4\x80\x15a\x03\x93W`\0\x80\xFD[Pa\x03\xA7a\x03\xA26`\x04a*\xCCV[a\x0B\x05V[`@Qa\x01\xB0\x91\x90a+\xCEV[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xA4a\x03\xCF6`\x04a+\xE1V[a\x0B\xC6V[4\x80\x15a\x03\xE0W`\0\x80\xFD[Pa\x01\xA4a\x03\xEF6`\x04a'\xA7V[a\x0CBV[4\x80\x15a\x04\0W`\0\x80\xFD[Ps_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89a\x02\xFEV[a\x01\x82a\x04)6`\x04a,\x0BV[a\x0C\x88V[a\x01\x82a\x04<6`\x04a,dV[a\x0C\xECV[4\x80\x15a\x04MW`\0\x80\xFD[Pa\x02xa\x04\\6`\x04a*\xCCV[a\r\xADV[4\x80\x15a\x04mW`\0\x80\xFD[P`\0\x80Q` a2\x0F\x839\x81Q\x91RTa\x02xV[4\x80\x15a\x04\x8FW`\0\x80\xFD[Pa\x02xa\r\xB8V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x04\xEB\x91a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P[\x92\x91PPV[a\x05\x0Fa\x0E>V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x05<\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0EpV[PV[`\0a\x05Ta\x05M\x85a\r\xADV[\x84\x84a\x0E\x9BV[\x15a\x05gWPc\x0B\x13]?`\xE1\x1Ba\x05rV[P`\x01`\x01`\xE0\x1B\x03\x19[\x93\x92PPPV[`\0`\0\x80Q` a2\x0F\x839\x81Q\x91R`\x02\x01\x82`@Qa\x05\x9B\x91\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x05\xBCa\x0E>V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x05\xD9\x90``\x01a\x05(V[PPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x06\0Wa\x06\0a\x0E>V[`\0[\x81\x81\x10\x15a\x06\xDCWa\x06\xD4\x83\x83\x83\x81\x81\x10a\x06 Wa\x06 a,\xB5V[\x90P` \x02\x81\x01\x90a\x062\x91\x90a,\xCBV[a\x06@\x90` \x81\x01\x90a'\xA7V[\x84\x84\x84\x81\x81\x10a\x06RWa\x06Ra,\xB5V[\x90P` \x02\x81\x01\x90a\x06d\x91\x90a,\xCBV[` \x015\x85\x85\x85\x81\x81\x10a\x06zWa\x06za,\xB5V[\x90P` \x02\x81\x01\x90a\x06\x8C\x91\x90a,\xCBV[a\x06\x9A\x90`@\x81\x01\x90a,\xE1V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[`\x01\x01a\x06\x03V[PPPV[`\x003s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x07\x16W`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81` \x85\x015`@\x1C`\x04a\x07.``\x88\x01\x88a,\xE1V[\x90P\x10\x15\x80\x15a\x07rWPa\x07F``\x87\x01\x87a,\xE1V[a\x07U\x91`\x04\x91`\0\x91a-'V[a\x07^\x91a-QV[`\x01`\x01`\xE0\x1B\x03\x19\x16c\xBFk\xA1\xFC`\xE0\x1B\x14[\x15a\x07\xB1Wa\x07\x80\x86a\t\0V[\x94Pa!\x05\x81\x14a\x07\xACW`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x07\xD6V[a!\x05\x81\x03a\x07\xD6W`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x07\xA3V[a\x07\xED\x85a\x07\xE8a\x01@\x89\x01\x89a,\xE1V[a\x0E\x9BV[\x15a\x07\xFCW`\0\x92PPa\x08\x02V[`\x01\x92PP[\x80\x15a\x08\x14W`\08`\08\x843Z\xF1P[P\x93\x92PPPV[\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\x000\x81\x03a\x08RWc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[a\x08[\x84a\x10 V[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x08\xADWcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\x08\xFAW`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\x08\xF8W=`\0\x82>=\x81\xFD[P[PPPPV[`\0a\t\x0B\x82a\x10(V[`@\x80Q` \x81\x01\x92\x90\x92Rs_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x90\x82\x01R``\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\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\x000\x81\x14a\t\x89Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91P[P\x90V[`\0\x80Q` a2\x0F\x839\x81Q\x91RT\x15a\t\xDFW`@Qc\x02\xEDT=`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05\xD9a\t\xEC\x82\x84a-\x81V[a\x10AV[a\t\xF9a\x0E>V[`\0a\n\x04\x82a\x0B\x05V[\x90P\x80Q`\0\x03a\n+W`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01a\x07\xA3V[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\n[\x90\x83\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\n\x87`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\n\xA2\x91a'\x1FV[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\n\xD2\x91\x90a+\xCEV[`@Q\x80\x91\x03\x90\xA2PPV[`\x0F`\xF8\x1B``\x80`\0\x80\x80\x83a\n\xF3a\x11\x93V[\x97\x98\x90\x97\x96PF\x95P0\x94P\x91\x92P\x90V[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x0BA\x90a.\x06V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0Bm\x90a.\x06V[\x80\x15a\x0B\xBAW\x80`\x1F\x10a\x0B\x8FWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0B\xBAV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0B\x9DW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c)V^;`\xE0\x1B\x14\x80a\x0B\xF7WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x03\xC3\xCF\xC9`\xE2\x1B\x14[\x80a\x0C\x12WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c9o\x1D\xAD`\xE1\x1B\x14[\x80a\x0C-WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c'\x8FyC`\xE1\x1B\x14[\x15a\x0C:WP`\x01\x91\x90PV[P`\0\x91\x90PV[`\0`\0\x80Q` a2\x0F\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\x9B\x91a,\x99V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x0C\xABWa\x0C\xABa\x0E>V[a\x08\xFA\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x1FW`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\r.`\x04\x82\x84\x86a-'V[a\r7\x91a-QV[\x90Pa\rB\x81a\x0B\xC6V[a\rkW`@Qc\x1D\x83p\xA3`\xE1\x1B\x81R`\x01`\x01`\xE0\x1B\x03\x19\x82\x16`\x04\x82\x01R`$\x01a\x07\xA3V[a\x06\xDC0`\0\x85\x85\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[`\0a\x05\x01\x82a\x11\xDAV[`\0\x80`\0a\r\xC5a\x11\x93V[\x81Q` \x80\x84\x01\x91\x90\x91 \x82Q\x82\x84\x01 `@\x80Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x94\x81\x01\x94\x90\x94R\x83\x01\x91\x90\x91R``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R\x91\x93P\x91P`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x92PPP\x90V[a\x0EG3a\x0CBV[\x80a\x0EQWP30\x14[\x15a\x0EXWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05<\x81`\0\x80Q` a2\x0F\x839\x81Q\x91R[\x80T\x90`\0a\x0E\x92\x83a.PV[\x91\x90PUa\x12\x10V[`\0\x80a\x0E\xAA\x83\x85\x01\x85a.iV[\x90P`\0a\x0E\xBB\x82`\0\x01Qa\x0B\x05V[\x90P\x80Q` \x03a\x0F\x1AW`\x01`\x01`\xA0\x1B\x03a\x0E\xD7\x82a.\xF5V[\x11\x15a\x0E\xF8W\x80`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\0` \x82\x01Q\x90Pa\x0F\x10\x81\x88\x85` \x01Qa\x12\xDFV[\x93PPPPa\x05rV[\x80Q`@\x03a\x0F\x95W`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x0F:\x91\x90a/\x19V[\x91P\x91P`\0\x84` \x01Q\x80` \x01\x90Q\x81\x01\x90a\x0FX\x91\x90a/\x82V[\x90Pa\x0F\x89\x89`@Q` \x01a\x0Fp\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\0\x83\x86\x86a\x13\xE4V[\x95PPPPPPa\x05rV[\x80`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x0F\xCC\x91\x90a,\x99V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x10\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10\x0EV[``\x91P[P\x91P\x91P\x81a\x08\xF8W\x80Q` \x82\x01\xFD[a\x05V[`\0a\x103\x82a\x17TV[\x80Q\x90` \x01 \x90P\x91\x90PV[`\0[\x81Q\x81\x10\x15a\x05\xD9W\x81\x81\x81Q\x81\x10a\x10_Wa\x10_a,\xB5V[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x10\x93WP\x81\x81\x81Q\x81\x10a\x10\x85Wa\x10\x85a,\xB5V[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x10\xCCW\x81\x81\x81Q\x81\x10a\x10\xAAWa\x10\xAAa,\xB5V[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[\x81\x81\x81Q\x81\x10a\x10\xDEWa\x10\xDEa,\xB5V[` \x02` \x01\x01QQ` \x14\x80\x15a\x11 WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x11\rWa\x11\ra,\xB5V[` \x02` \x01\x01Qa\x11\x1E\x90a.\xF5V[\x11[\x15a\x11YW\x81\x81\x81Q\x81\x10a\x117Wa\x117a,\xB5V[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[a\x11\x8B\x82\x82\x81Q\x81\x10a\x11nWa\x11na,\xB5V[` \x02` \x01\x01Qa\x0E\x84`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\x01\x01a\x10DV[`@\x80Q\x80\x82\x01\x82R`\x15\x81Rt\x10\xDB\xDA[\x98\x98\\\xD9H\x14\xDBX\\\x9D\x08\x15\xD8[\x1B\x19]`Z\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R`\x01\x83R`1`\xF8\x1B\x90\x83\x01R\x91V[`\0a\x11\xE4a\r\xB8V[a\x11\xED\x83a\x18'V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x92\x90\x92R`B\x82\x01R`b\x01a\t4V[a\x12\x19\x82a\x05yV[\x15a\x129W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\x01`\0\x80Q` a2\x0F\x839\x81Q\x91R`\x02\x01\x83`@Qa\x12[\x91\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x12\x91`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x12\xAE\x90\x82a0\x8DV[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\n\xD2\x91\x90a+\xCEV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91`\0\x83\x15a\x05rW`@Q\x83`\0R` \x83\x01Q`@R`@\x83Q\x03a\x13OW`@\x83\x01Q`\x1B\x81`\xFF\x1C\x01` R\x80`\x01\x1B`\x01\x1C``RP` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13MWP`\0``R`@RP`\x01a\x05rV[P[`A\x83Q\x03a\x13\x95W``\x83\x01Q`\0\x1A` R`@\x83\x01Q``R` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\x93WP`\0``R`@RP`\x01a\x05rV[P[`\0``R\x80`@Rc\x16&\xBA~`\xE0\x1B\x80\x82R\x84`\x04\x83\x01R`$\x82\x01`@\x81R\x84Q` \x01\x80`D\x85\x01\x82\x88`\x04Z\xFAPP` \x81`D=\x01\x85\x8AZ\xFA\x90Q\x90\x91\x14\x16\x91PP\x93\x92PPPV[`\0\x7F\x7F\xFF\xFF\xFF\x80\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDEs}V\xD3\x8B\xCFBy\xDC\xE5a~1\x92\xA8\x84`\xA0\x01Q\x11\x15a\x14\x1AWP`\0a\x17KV[``\x84\x01Q`\0\x90a\x14=\x90a\x141\x81`\x15a1LV[` \x88\x01Q\x91\x90a\x18bV[\x90P\x7F\xFF\x1A*\x91v\xD6P\xE4\xA9\x9D\xED\xB5\x8F\x17\x93\095\x13\x05y\xFE\x17\xB5\xA3\xF6\x98\xAC[\0\xE64\x81\x80Q\x90` \x01 \x14a\x14wW`\0\x91PPa\x17KV[`\0a\x14\x85\x88`\x01\x80a\x18\xC8V[`@Q` \x01a\x14\x95\x91\x90a1_V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x14\xCD\x87`@\x01Q\x83Q\x89`@\x01Qa\x14\xC1\x91\x90a1LV[` \x8A\x01Q\x91\x90a\x18bV[\x90P\x81\x80Q\x90` \x01 \x81\x80Q\x90` \x01 \x14a\x14\xF0W`\0\x93PPPPa\x17KV[\x86Q\x80Q`\x01`\xF8\x1B\x91\x82\x91` \x90\x81\x10a\x15\rWa\x15\ra,\xB5V[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14a\x15.W`\0\x93PPPPa\x17KV[\x87\x80\x15a\x15fWP\x86Q\x80Q`\x01`\xFA\x1B\x91\x82\x91` \x90\x81\x10a\x15SWa\x15Sa,\xB5V[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14\x15[\x15a\x15wW`\0\x93PPPPa\x17KV[`\0`\x02\x88` \x01Q`@Qa\x15\x8D\x91\x90a,\x99V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x15\xAAW=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xCD\x91\x90a1\xA0V[\x90P`\0`\x02\x89`\0\x01Q\x83`@Q` \x01a\x15\xEA\x92\x91\x90a1\xB9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x16\x04\x91a,\x99V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16!W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16D\x91\x90a1\xA0V[`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`@\x80Q` \x81\x01\x87\x90R\x90\x81\x01\x93\x90\x93R``\x83\x01R\x91\x81\x01\x8B\x90R\x90\x81\x01\x89\x90R\x90\x91P`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80a\x01\0`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x16\xAA\x91\x90a,\x99V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x16\xE5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x16\xEAV[``\x91P[P\x80Q\x91\x93P\x91P\x15\x15\x82\x80\x15a\x16\xFEWP\x80[\x15a\x17*W\x81\x80` \x01\x90Q\x81\x01\x90a\x17\x17\x91\x90a1\xA0V[`\x01\x14\x99PPPPPPPPPPa\x17KV[a\x17?\x85\x8E`\x80\x01Q\x8F`\xA0\x01Q\x8F\x8Fa\x19\xBDV[\x99PPPPPPPPPP[\x95\x94PPPPPV[``\x815` \x83\x015`\0a\x17ta\x17o`@\x87\x01\x87a,\xE1V[a\x1A\xA0V[\x90P`\0a\x17\x88a\x17o``\x88\x01\x88a,\xE1V[\x90P`\x80\x86\x015`\xA0\x87\x015`\xC0\x88\x015`\xE0\x89\x015a\x01\0\x8A\x015`\0a\x17\xB7a\x17oa\x01 \x8E\x01\x8Ea,\xE1V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x9C\x90\x9C\x16` \x8D\x01R\x8B\x81\x01\x9A\x90\x9AR``\x8B\x01\x98\x90\x98RP`\x80\x89\x01\x95\x90\x95R`\xA0\x88\x01\x93\x90\x93R`\xC0\x87\x01\x91\x90\x91R`\xE0\x86\x01Ra\x01\0\x85\x01Ra\x01 \x84\x01Ra\x01@\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81Ra\x01`\x90\x92\x01\x90R\x92\x91PPV[`@\x80Q\x7F\x9BI=\"!\x05\xFE\xE7\xDF\x16:\xB5\xD5\x7F\x0B\xF1\xFF\xD2\xDA\x04\xDD_\xAF\xBE\x10\xB5LA\xC1\xAD\xC6W` \x82\x01R\x90\x81\x01\x82\x90R`\0\x90``\x01a\t4V[``\x83Q\x82\x81\x11a\x18qW\x80\x92P[\x83\x81\x11a\x18|W\x80\x93P[P\x81\x83\x10\x15a\x05rWP`@Q\x82\x82\x03\x80\x82R\x93\x83\x01\x93`\x1F\x19`\x1F\x82\x01\x81\x16[\x86\x81\x01Q\x84\x82\x01R\x81\x01\x80a\x18\x9DWP`\0\x83\x83\x01` \x01R`?\x90\x91\x01\x16\x81\x01`@R\x93\x92PPPV[``\x83Q\x80\x15a\x08\x14W`\x03`\x02\x82\x01\x04`\x02\x1B`@Q\x92P\x7FABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`\x1FRa\x06p\x85\x15\x02\x7Fghijklmnopqrstuvwxyz0123456789-_\x18`?R` \x83\x01\x81\x81\x01\x83\x88` \x01\x01\x80Q`\0\x82R[`\x03\x8A\x01\x99P\x89Q`?\x81`\x12\x1C\x16Q`\0S`?\x81`\x0C\x1C\x16Q`\x01S`?\x81`\x06\x1C\x16Q`\x02S`?\x81\x16Q`\x03SP`\0Q\x84R`\x04\x84\x01\x93P\x82\x84\x10a\x19DW\x90R` \x01`@Ra==`\xF0\x1B`\x03\x84\x06`\x02\x04\x80\x83\x03\x91\x90\x91R`\0\x86\x15\x15\x90\x91\x02\x91\x82\x90\x03R\x90\x03\x82RP\x93\x92PPPV[`\0\x84\x15\x80a\x19\xDAWP`\0\x80Q` a1\xEF\x839\x81Q\x91R\x85\x10\x15[\x80a\x19\xE3WP\x83\x15[\x80a\x19\xFCWP`\0\x80Q` a1\xEF\x839\x81Q\x91R\x84\x10\x15[\x15a\x1A\tWP`\0a\x17KV[a\x1A\x13\x83\x83a\x1A\xB3V[a\x1A\x1FWP`\0a\x17KV[`\0a\x1A*\x85a\x1B\xADV[\x90P`\0`\0\x80Q` a1\xEF\x839\x81Q\x91R\x82\x89\t\x90P`\0`\0\x80Q` a1\xEF\x839\x81Q\x91R\x83\x89\t\x90P`\0a\x1Af\x87\x87\x85\x85a\x1C\x1FV[\x90P`\0\x80Q` a1\xEF\x839\x81Q\x91Ra\x1A\x8F\x8A`\0\x80Q` a1\xEF\x839\x81Q\x91Ra1\xDBV[\x82\x08\x15\x9A\x99PPPPPPPPPPV[`\0`@Q\x82\x80\x85\x837\x90 \x93\x92PPPV[`\0\x82\x15\x80\x15a\x1A\xC1WP\x81\x15[\x80a\x1A\xD9WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x14[\x80a\x1A\xF1WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x14[\x15a\x1A\xFEWP`\0a\x05\x01V[`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x90P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x7F\xFF\xFF\xFF\xFF\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x87\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\t\x08\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x7FZ\xC65\xD8\xAA:\x93\xE7\xB3\xEB\xBDUv\x98\x86\xBCe\x1D\x06\xB0\xCCS\xB0\xF6;\xCE<>'\xD2`K\x82\x08\x91\x90\x91\x14\x94\x93PPPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%O`\x80\x82\x01R`\0\x80Q` a1\xEF\x839\x81Q\x91R`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C\x18W`\0\x80\xFD[Q\x92\x91PPV[`\0\x80\x80\x80`\xFF\x81\x80\x88\x15\x80\x15a\x1C4WP\x87\x15[\x15a\x1CHW`\0\x96PPPPPPPa\"\xE1V[a\x1C\x94\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x8D\x8Da\"\xE9V[\x90\x92P\x90P\x81\x15\x80\x15a\x1C\xA5WP\x80\x15[\x15a\x1C\xD3W`\0\x80Q` a1\xEF\x839\x81Q\x91R\x88`\0\x80Q` a1\xEF\x839\x81Q\x91R\x03\x8A\x08\x98P`\0\x97P[`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01[\x80a\x1D\x06W`\x01\x84\x03\x93P`\x01\x8A\x85\x1C\x16`\x01\x8A\x86\x1C\x16`\x01\x1B\x01\x90Pa\x1C\xE4V[P`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01\x95P`\x01\x86\x03a\x1DhW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x96P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x93P[`\x02\x86\x03a\x1DwW\x8A\x96P\x89\x93P[`\x03\x86\x03a\x1D\x86W\x81\x96P\x80\x93P[`\x01\x83\x03\x92P`\x01\x95P`\x01\x94P[\x82`\0\x19\x11\x15a\"jW`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x02\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8A\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x84\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x8D\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08\t`\x03\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x85\t\x98P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x84\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x08\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\x82\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x87\t\x08\x97P`\x01\x8D\x88\x1C\x16`\x01\x8D\x89\x1C\x16`\x01\x1B\x01\x90P\x80a\x1F\x12W\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x97PPPPPa\"_V[`\x01\x81\x03a\x1FaW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x93P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x92P[`\x02\x81\x03a\x1FpW\x8E\x93P\x8D\x92P[`\x03\x81\x03a\x1F\x7FW\x85\x93P\x84\x92P[\x89a\x1F\x98WP\x91\x98P`\x01\x97P\x87\x96P\x94Pa\"_\x90PV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x86\t\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x88\t\x08\x93P\x80a!QW\x83a!QW`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x86\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8D\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x86\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x8F\x08\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81`\x03\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x86\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x85\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x08\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8D`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x85\x08\x83\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8A\x87\t\x85\x08\x98PPPPPPa\"_V[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x83\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8D\t\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8C\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8E\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87\x88\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83\x8D\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x86\x08\t\x08\x9APPPP\x80\x9APPPPP[`\x01\x83\x03\x92Pa\x1D\x95V[`@Q\x86``\x82\x01R` \x81R` \x80\x82\x01R` `@\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\"\xC4W`\0\x80\xFD[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81Q\x89\t\x97PPPPPPPP[\x94\x93PPPPV[`\0\x80\x80\x80\x86a#\0W\x85\x85\x93P\x93PPPa#nV[\x84a#\x12W\x87\x87\x93P\x93PPPa#nV[\x85\x88\x14\x80\x15a# WP\x84\x87\x14[\x15a#AWa#2\x88\x88`\x01\x80a#wV[\x92\x9AP\x90\x98P\x92P\x90Pa#[V[a#P\x88\x88`\x01\x80\x8A\x8Aa$\xD2V[\x92\x9AP\x90\x98P\x92P\x90P[a#g\x88\x88\x84\x84a&VV[\x93P\x93PPP[\x94P\x94\x92PPPV[`\0\x80`\0\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x02\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x83\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x8B\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8C\x08\t`\x03\t\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x89\t\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x83\x08\x87\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x84\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x88\x85\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x89\x08\x92P\x94P\x94P\x94P\x94\x90PV[`\0\x80`\0\x80\x88`\0\x03a$\xF1WP\x84\x92P\x83\x91P`\x01\x90P\x80a&IV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x98\x89\x03\x98\x89\x81\x89\x88\t\x08\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x89\t\x08\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x87\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x89\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x88\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8B\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84\x8B\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\t\x08\x92P[\x96P\x96P\x96P\x96\x92PPPV[`\0\x80`\0a&d\x84a&\xC3V[\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x87\t\x91P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x87\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x93PPP\x94P\x94\x92PPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C\x18W`\0\x80\xFD[P\x80Ta'+\x90a.\x06V[`\0\x82U\x80`\x1F\x10a';WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x05<\x91\x90[\x80\x82\x11\x15a\t\xADW`\0\x81U`\x01\x01a'UV[`\0\x80`@\x83\x85\x03\x12\x15a'|W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a'\xA2W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a'\xB9W`\0\x80\xFD[a\x05r\x82a'\x8BV[`\0\x80\x83`\x1F\x84\x01\x12a'\xD4W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a'\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a(\x03W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a(\x1FW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a((::ethers::contract::Contract); + impl ::core::clone::Clone for CoinbaseSmartWallet { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for CoinbaseSmartWallet { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for CoinbaseSmartWallet { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for CoinbaseSmartWallet { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(CoinbaseSmartWallet)) + .field(&self.address()) + .finish() + } + } + impl CoinbaseSmartWallet { + /// 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(), + COINBASESMARTWALLET_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( + COINBASESMARTWALLET_ABI.clone(), + COINBASESMARTWALLET_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `REPLAYABLE_NONCE_KEY` (0x88ce4c7c) function + pub fn replayable_nonce_key( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([136, 206, 76, 124], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `addOwnerAddress` (0x0f0f3f24) function + pub fn add_owner_address( + &self, + owner: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([15, 15, 63, 36], owner) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `addOwnerPublicKey` (0x29565e3b) function + pub fn add_owner_public_key( + &self, + x: [u8; 32], + y: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([41, 86, 94, 59], (x, y)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `canSkipChainIdValidation` (0x9f9bcb34) function + pub fn can_skip_chain_id_validation( + &self, + function_selector: [u8; 4], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([159, 155, 203, 52], function_selector) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `domainSeparator` (0xf698da25) function + pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([246, 152, 218, 37], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `eip712Domain` (0x84b0196e) function + pub fn eip_712_domain( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + [u8; 1], + ::std::string::String, + ::std::string::String, + ::ethers::core::types::U256, + ::ethers::core::types::Address, + [u8; 32], + ::std::vec::Vec<::ethers::core::types::U256>, + ), + > { + self.0 + .method_hash([132, 176, 25, 110], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `entryPoint` (0xb0d691fe) function + pub fn entry_point( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([176, 214, 145, 254], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `execute` (0xb61d27f6) function + pub fn execute( + &self, + target: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([182, 29, 39, 246], (target, value, data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `executeBatch` (0x34fcd5be) function + pub fn execute_batch( + &self, + calls: ::std::vec::Vec, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([52, 252, 213, 190], calls) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `executeWithoutChainIdValidation` (0xbf6ba1fc) function + pub fn execute_without_chain_id_validation( + &self, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([191, 107, 161, 252], data) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getUserOpHashWithoutChainId` (0x4f6e7f22) function + pub fn get_user_op_hash_without_chain_id( + &self, + user_op: UserOperation, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([79, 110, 127, 34], (user_op,)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `implementation` (0x5c60da1b) function + pub fn implementation( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([92, 96, 218, 27], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `initialize` (0x6f2de70e) function + pub fn initialize( + &self, + owners: ::std::vec::Vec<::ethers::core::types::Bytes>, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([111, 45, 231, 14], owners) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerAddress` (0xa2e1a8d8) function + pub fn is_owner_address( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([162, 225, 168, 216], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerBytes` (0x1ca5393f) function + pub fn is_owner_bytes( + &self, + account: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([28, 165, 57, 63], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerPublicKey` (0x066a1eb7) function + pub fn is_owner_public_key( + &self, + x: [u8; 32], + y: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 106, 30, 183], (x, y)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isValidSignature` (0x1626ba7e) function + pub fn is_valid_signature( + &self, + hash: [u8; 32], + signature: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([22, 38, 186, 126], (hash, signature)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `nextOwnerIndex` (0xd948fd2e) function + pub fn next_owner_index( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([217, 72, 253, 46], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `ownerAtIndex` (0x8ea69029) function + pub fn owner_at_index( + &self, + index: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([142, 166, 144, 41], index) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `proxiableUUID` (0x52d1902d) function + pub fn proxiable_uuid(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([82, 209, 144, 45], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `removeOwnerAtIndex` (0x72de3b5a) function + pub fn remove_owner_at_index( + &self, + index: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([114, 222, 59, 90], index) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `replaySafeHash` (0xce1506be) function + pub fn replay_safe_hash( + &self, + hash: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([206, 21, 6, 190], hash) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function + pub fn upgrade_to_and_call( + &self, + new_implementation: ::ethers::core::types::Address, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([79, 30, 242, 134], (new_implementation, data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `validateUserOp` (0x3a871cdd) function + pub fn validate_user_op( + &self, + user_op: UserOperation, + user_op_hash: [u8; 32], + missing_account_funds: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [58, 135, 28, 221], + (user_op, user_op_hash, missing_account_funds), + ) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `AddOwner` event + pub fn add_owner_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AddOwnerFilter> { + self.0.event() + } + ///Gets the contract's `RemoveOwner` event + pub fn remove_owner_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, RemoveOwnerFilter> + { + self.0.event() + } + ///Gets the contract's `Upgraded` event + pub fn upgraded_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradedFilter> { + 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, CoinbaseSmartWalletEvents> + { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for CoinbaseSmartWallet + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `AlreadyOwner` with signature `AlreadyOwner(bytes)` and selector `0x8d16255a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "AlreadyOwner", abi = "AlreadyOwner(bytes)")] + pub struct AlreadyOwner { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `Initialized` with signature `Initialized()` and selector `0x5daa87a0` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Initialized", abi = "Initialized()")] + pub struct Initialized; + ///Custom Error type `InvalidEthereumAddressOwner` with signature `InvalidEthereumAddressOwner(bytes)` and selector `0xbff1ac65` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidEthereumAddressOwner", + abi = "InvalidEthereumAddressOwner(bytes)" + )] + pub struct InvalidEthereumAddressOwner { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `InvalidNonceKey` with signature `InvalidNonceKey(uint256)` and selector `0x2ef37813` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidNonceKey", abi = "InvalidNonceKey(uint256)")] + pub struct InvalidNonceKey { + pub key: ::ethers::core::types::U256, + } + ///Custom Error type `InvalidOwnerBytesLength` with signature `InvalidOwnerBytesLength(bytes)` and selector `0x4eeab722` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidOwnerBytesLength", + abi = "InvalidOwnerBytesLength(bytes)" + )] + pub struct InvalidOwnerBytesLength { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `NoOwnerAtIndex` with signature `NoOwnerAtIndex(uint256)` and selector `0x68188e7a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NoOwnerAtIndex", abi = "NoOwnerAtIndex(uint256)")] + pub struct NoOwnerAtIndex { + pub index: ::ethers::core::types::U256, + } + ///Custom Error type `SelectorNotAllowed` with signature `SelectorNotAllowed(bytes4)` and selector `0x3b06e146` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "SelectorNotAllowed", abi = "SelectorNotAllowed(bytes4)")] + pub struct SelectorNotAllowed { + pub selector: [u8; 4], + } + ///Custom Error type `Unauthorized` with signature `Unauthorized()` and selector `0x82b42900` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Unauthorized", abi = "Unauthorized()")] + pub struct Unauthorized; + ///Custom Error type `UnauthorizedCallContext` with signature `UnauthorizedCallContext()` and selector `0x9f03a026` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "UnauthorizedCallContext", abi = "UnauthorizedCallContext()")] + pub struct UnauthorizedCallContext; + ///Custom Error type `UpgradeFailed` with signature `UpgradeFailed()` and selector `0x55299b49` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "UpgradeFailed", abi = "UpgradeFailed()")] + pub struct UpgradeFailed; + ///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 CoinbaseSmartWalletErrors { + AlreadyOwner(AlreadyOwner), + Initialized(Initialized), + InvalidEthereumAddressOwner(InvalidEthereumAddressOwner), + InvalidNonceKey(InvalidNonceKey), + InvalidOwnerBytesLength(InvalidOwnerBytesLength), + NoOwnerAtIndex(NoOwnerAtIndex), + SelectorNotAllowed(SelectorNotAllowed), + Unauthorized(Unauthorized), + UnauthorizedCallContext(UnauthorizedCallContext), + UpgradeFailed(UpgradeFailed), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for CoinbaseSmartWalletErrors { + 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::AlreadyOwner(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Initialized(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidEthereumAddressOwner(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidNonceKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidOwnerBytesLength(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NoOwnerAtIndex(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SelectorNotAllowed(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Unauthorized(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UnauthorizedCallContext(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::UpgradeFailed(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for CoinbaseSmartWalletErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::AlreadyOwner(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Initialized(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidEthereumAddressOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidNonceKey(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidOwnerBytesLength(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::NoOwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SelectorNotAllowed(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Unauthorized(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::UnauthorizedCallContext(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UpgradeFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for CoinbaseSmartWalletErrors { + 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 + } + _ => false, + } + } + } + impl ::core::fmt::Display for CoinbaseSmartWalletErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AlreadyOwner(element) => ::core::fmt::Display::fmt(element, f), + Self::Initialized(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidEthereumAddressOwner(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidNonceKey(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidOwnerBytesLength(element) => ::core::fmt::Display::fmt(element, f), + Self::NoOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::SelectorNotAllowed(element) => ::core::fmt::Display::fmt(element, f), + Self::Unauthorized(element) => ::core::fmt::Display::fmt(element, f), + Self::UnauthorizedCallContext(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeFailed(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for CoinbaseSmartWalletErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletErrors { + fn from(value: AlreadyOwner) -> Self { + Self::AlreadyOwner(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletErrors { + fn from(value: Initialized) -> Self { + Self::Initialized(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletErrors { + fn from(value: InvalidEthereumAddressOwner) -> Self { + Self::InvalidEthereumAddressOwner(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletErrors { + fn from(value: InvalidNonceKey) -> Self { + Self::InvalidNonceKey(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletErrors { + fn from(value: InvalidOwnerBytesLength) -> Self { + Self::InvalidOwnerBytesLength(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletErrors { + fn from(value: NoOwnerAtIndex) -> Self { + Self::NoOwnerAtIndex(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletErrors { + fn from(value: SelectorNotAllowed) -> Self { + Self::SelectorNotAllowed(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletErrors { + fn from(value: Unauthorized) -> Self { + Self::Unauthorized(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletErrors { + fn from(value: UnauthorizedCallContext) -> Self { + Self::UnauthorizedCallContext(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletErrors { + fn from(value: UpgradeFailed) -> Self { + Self::UpgradeFailed(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "AddOwner", abi = "AddOwner(uint256,bytes)")] + pub struct AddOwnerFilter { + #[ethevent(indexed)] + pub index: ::ethers::core::types::U256, + pub owner: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "RemoveOwner", abi = "RemoveOwner(uint256,bytes)")] + pub struct RemoveOwnerFilter { + #[ethevent(indexed)] + pub index: ::ethers::core::types::U256, + pub owner: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] + pub struct UpgradedFilter { + #[ethevent(indexed)] + pub implementation: ::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 CoinbaseSmartWalletEvents { + AddOwnerFilter(AddOwnerFilter), + RemoveOwnerFilter(RemoveOwnerFilter), + UpgradedFilter(UpgradedFilter), + } + impl ::ethers::contract::EthLogDecode for CoinbaseSmartWalletEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = AddOwnerFilter::decode_log(log) { + return Ok(CoinbaseSmartWalletEvents::AddOwnerFilter(decoded)); + } + if let Ok(decoded) = RemoveOwnerFilter::decode_log(log) { + return Ok(CoinbaseSmartWalletEvents::RemoveOwnerFilter(decoded)); + } + if let Ok(decoded) = UpgradedFilter::decode_log(log) { + return Ok(CoinbaseSmartWalletEvents::UpgradedFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for CoinbaseSmartWalletEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::RemoveOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradedFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for CoinbaseSmartWalletEvents { + fn from(value: AddOwnerFilter) -> Self { + Self::AddOwnerFilter(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletEvents { + fn from(value: RemoveOwnerFilter) -> Self { + Self::RemoveOwnerFilter(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletEvents { + fn from(value: UpgradedFilter) -> Self { + Self::UpgradedFilter(value) + } + } + ///Container type for all input parameters for the `REPLAYABLE_NONCE_KEY` function with signature `REPLAYABLE_NONCE_KEY()` and selector `0x88ce4c7c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "REPLAYABLE_NONCE_KEY", abi = "REPLAYABLE_NONCE_KEY()")] + pub struct ReplayableNonceKeyCall; + ///Container type for all input parameters for the `addOwnerAddress` function with signature `addOwnerAddress(address)` and selector `0x0f0f3f24` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "addOwnerAddress", abi = "addOwnerAddress(address)")] + pub struct AddOwnerAddressCall { + pub owner: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `addOwnerPublicKey` function with signature `addOwnerPublicKey(bytes32,bytes32)` and selector `0x29565e3b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "addOwnerPublicKey", abi = "addOwnerPublicKey(bytes32,bytes32)")] + pub struct AddOwnerPublicKeyCall { + pub x: [u8; 32], + pub y: [u8; 32], + } + ///Container type for all input parameters for the `canSkipChainIdValidation` function with signature `canSkipChainIdValidation(bytes4)` and selector `0x9f9bcb34` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "canSkipChainIdValidation", + abi = "canSkipChainIdValidation(bytes4)" + )] + pub struct CanSkipChainIdValidationCall { + pub function_selector: [u8; 4], + } + ///Container type for all input parameters for the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "domainSeparator", abi = "domainSeparator()")] + pub struct DomainSeparatorCall; + ///Container type for all input parameters for the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "eip712Domain", abi = "eip712Domain()")] + pub struct Eip712DomainCall; + ///Container type for all input parameters for the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "entryPoint", abi = "entryPoint()")] + pub struct EntryPointCall; + ///Container type for all input parameters for the `execute` function with signature `execute(address,uint256,bytes)` and selector `0xb61d27f6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "execute", abi = "execute(address,uint256,bytes)")] + pub struct ExecuteCall { + pub target: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((address,uint256,bytes)[])` and selector `0x34fcd5be` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "executeBatch", abi = "executeBatch((address,uint256,bytes)[])")] + pub struct ExecuteBatchCall { + pub calls: ::std::vec::Vec, + } + ///Container type for all input parameters for the `executeWithoutChainIdValidation` function with signature `executeWithoutChainIdValidation(bytes)` and selector `0xbf6ba1fc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "executeWithoutChainIdValidation", + abi = "executeWithoutChainIdValidation(bytes)" + )] + pub struct ExecuteWithoutChainIdValidationCall { + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `getUserOpHashWithoutChainId` function with signature `getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x4f6e7f22` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getUserOpHashWithoutChainId", + abi = "getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" + )] + pub struct GetUserOpHashWithoutChainIdCall { + pub user_op: UserOperation, + } + ///Container type for all input parameters for the `implementation` function with signature `implementation()` and selector `0x5c60da1b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "implementation", abi = "implementation()")] + pub struct ImplementationCall; + ///Container type for all input parameters for the `initialize` function with signature `initialize(bytes[])` and selector `0x6f2de70e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "initialize", abi = "initialize(bytes[])")] + pub struct InitializeCall { + pub owners: ::std::vec::Vec<::ethers::core::types::Bytes>, + } + ///Container type for all input parameters for the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerAddress", abi = "isOwnerAddress(address)")] + pub struct IsOwnerAddressCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerBytes", abi = "isOwnerBytes(bytes)")] + pub struct IsOwnerBytesCall { + pub account: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerPublicKey", abi = "isOwnerPublicKey(bytes32,bytes32)")] + pub struct IsOwnerPublicKeyCall { + pub x: [u8; 32], + pub y: [u8; 32], + } + ///Container type for all input parameters for the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isValidSignature", abi = "isValidSignature(bytes32,bytes)")] + pub struct IsValidSignatureCall { + pub hash: [u8; 32], + pub signature: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nextOwnerIndex", abi = "nextOwnerIndex()")] + pub struct NextOwnerIndexCall; + ///Container type for all input parameters for the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "ownerAtIndex", abi = "ownerAtIndex(uint256)")] + pub struct OwnerAtIndexCall { + pub index: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] + pub struct ProxiableUUIDCall; + ///Container type for all input parameters for the `removeOwnerAtIndex` function with signature `removeOwnerAtIndex(uint256)` and selector `0x72de3b5a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "removeOwnerAtIndex", abi = "removeOwnerAtIndex(uint256)")] + pub struct RemoveOwnerAtIndexCall { + pub index: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "replaySafeHash", abi = "replaySafeHash(bytes32)")] + pub struct ReplaySafeHashCall { + pub hash: [u8; 32], + } + ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] + pub struct UpgradeToAndCallCall { + pub new_implementation: ::ethers::core::types::Address, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `validateUserOp` function with signature `validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0x3a871cdd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "validateUserOp", + abi = "validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)" + )] + pub struct ValidateUserOpCall { + pub user_op: UserOperation, + pub user_op_hash: [u8; 32], + pub missing_account_funds: ::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 CoinbaseSmartWalletCalls { + ReplayableNonceKey(ReplayableNonceKeyCall), + AddOwnerAddress(AddOwnerAddressCall), + AddOwnerPublicKey(AddOwnerPublicKeyCall), + CanSkipChainIdValidation(CanSkipChainIdValidationCall), + DomainSeparator(DomainSeparatorCall), + Eip712Domain(Eip712DomainCall), + EntryPoint(EntryPointCall), + Execute(ExecuteCall), + ExecuteBatch(ExecuteBatchCall), + ExecuteWithoutChainIdValidation(ExecuteWithoutChainIdValidationCall), + GetUserOpHashWithoutChainId(GetUserOpHashWithoutChainIdCall), + Implementation(ImplementationCall), + Initialize(InitializeCall), + IsOwnerAddress(IsOwnerAddressCall), + IsOwnerBytes(IsOwnerBytesCall), + IsOwnerPublicKey(IsOwnerPublicKeyCall), + IsValidSignature(IsValidSignatureCall), + NextOwnerIndex(NextOwnerIndexCall), + OwnerAtIndex(OwnerAtIndexCall), + ProxiableUUID(ProxiableUUIDCall), + RemoveOwnerAtIndex(RemoveOwnerAtIndexCall), + ReplaySafeHash(ReplaySafeHashCall), + UpgradeToAndCall(UpgradeToAndCallCall), + ValidateUserOp(ValidateUserOpCall), + } + impl ::ethers::core::abi::AbiDecode for CoinbaseSmartWalletCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ReplayableNonceKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AddOwnerAddress(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AddOwnerPublicKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::CanSkipChainIdValidation(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DomainSeparator(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::Eip712Domain(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::EntryPoint(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Execute(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ExecuteBatch(decoded)); + } + if let Ok(decoded) = + ::decode( + data, + ) + { + return Ok(Self::ExecuteWithoutChainIdValidation(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetUserOpHashWithoutChainId(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::Implementation(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Initialize(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsOwnerAddress(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::IsOwnerBytes(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsOwnerPublicKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsValidSignature(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::NextOwnerIndex(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::OwnerAtIndex(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ProxiableUUID(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::RemoveOwnerAtIndex(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ReplaySafeHash(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UpgradeToAndCall(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidateUserOp(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for CoinbaseSmartWalletCalls { + fn encode(self) -> Vec { + match self { + Self::ReplayableNonceKey(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::AddOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::AddOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::CanSkipChainIdValidation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Eip712Domain(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::EntryPoint(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ExecuteBatch(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ExecuteWithoutChainIdValidation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetUserOpHashWithoutChainId(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Implementation(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Initialize(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerBytes(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsValidSignature(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NextOwnerIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ProxiableUUID(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RemoveOwnerAtIndex(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ReplaySafeHash(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::UpgradeToAndCall(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ValidateUserOp(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for CoinbaseSmartWalletCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ReplayableNonceKey(element) => ::core::fmt::Display::fmt(element, f), + Self::AddOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::AddOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), + Self::CanSkipChainIdValidation(element) => ::core::fmt::Display::fmt(element, f), + Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), + Self::Eip712Domain(element) => ::core::fmt::Display::fmt(element, f), + Self::EntryPoint(element) => ::core::fmt::Display::fmt(element, f), + Self::Execute(element) => ::core::fmt::Display::fmt(element, f), + Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), + Self::ExecuteWithoutChainIdValidation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::GetUserOpHashWithoutChainId(element) => ::core::fmt::Display::fmt(element, f), + Self::Implementation(element) => ::core::fmt::Display::fmt(element, f), + Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerBytes(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), + Self::IsValidSignature(element) => ::core::fmt::Display::fmt(element, f), + Self::NextOwnerIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), + Self::RemoveOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::ReplaySafeHash(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateUserOp(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: ReplayableNonceKeyCall) -> Self { + Self::ReplayableNonceKey(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: AddOwnerAddressCall) -> Self { + Self::AddOwnerAddress(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: AddOwnerPublicKeyCall) -> Self { + Self::AddOwnerPublicKey(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: CanSkipChainIdValidationCall) -> Self { + Self::CanSkipChainIdValidation(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: DomainSeparatorCall) -> Self { + Self::DomainSeparator(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: Eip712DomainCall) -> Self { + Self::Eip712Domain(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: EntryPointCall) -> Self { + Self::EntryPoint(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: ExecuteCall) -> Self { + Self::Execute(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: ExecuteBatchCall) -> Self { + Self::ExecuteBatch(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: ExecuteWithoutChainIdValidationCall) -> Self { + Self::ExecuteWithoutChainIdValidation(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: GetUserOpHashWithoutChainIdCall) -> Self { + Self::GetUserOpHashWithoutChainId(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: ImplementationCall) -> Self { + Self::Implementation(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: InitializeCall) -> Self { + Self::Initialize(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: IsOwnerAddressCall) -> Self { + Self::IsOwnerAddress(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: IsOwnerBytesCall) -> Self { + Self::IsOwnerBytes(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: IsOwnerPublicKeyCall) -> Self { + Self::IsOwnerPublicKey(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: IsValidSignatureCall) -> Self { + Self::IsValidSignature(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: NextOwnerIndexCall) -> Self { + Self::NextOwnerIndex(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: OwnerAtIndexCall) -> Self { + Self::OwnerAtIndex(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: ProxiableUUIDCall) -> Self { + Self::ProxiableUUID(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: RemoveOwnerAtIndexCall) -> Self { + Self::RemoveOwnerAtIndex(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: ReplaySafeHashCall) -> Self { + Self::ReplaySafeHash(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: UpgradeToAndCallCall) -> Self { + Self::UpgradeToAndCall(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletCalls { + fn from(value: ValidateUserOpCall) -> Self { + Self::ValidateUserOp(value) + } + } + ///Container type for all return fields from the `REPLAYABLE_NONCE_KEY` function with signature `REPLAYABLE_NONCE_KEY()` and selector `0x88ce4c7c` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ReplayableNonceKeyReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `canSkipChainIdValidation` function with signature `canSkipChainIdValidation(bytes4)` and selector `0x9f9bcb34` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CanSkipChainIdValidationReturn(pub bool); + ///Container type for all return fields from the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` + #[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 `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct Eip712DomainReturn { + pub fields: [u8; 1], + pub name: ::std::string::String, + pub version: ::std::string::String, + pub chain_id: ::ethers::core::types::U256, + pub verifying_contract: ::ethers::core::types::Address, + pub salt: [u8; 32], + pub extensions: ::std::vec::Vec<::ethers::core::types::U256>, + } + ///Container type for all return fields from the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct EntryPointReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `getUserOpHashWithoutChainId` function with signature `getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x4f6e7f22` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetUserOpHashWithoutChainIdReturn { + pub user_op_hash: [u8; 32], + } + ///Container type for all return fields from the `implementation` function with signature `implementation()` and selector `0x5c60da1b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ImplementationReturn { + pub address: ::ethers::core::types::Address, + } + ///Container type for all return fields from the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerAddressReturn(pub bool); + ///Container type for all return fields from the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerBytesReturn(pub bool); + ///Container type for all return fields from the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerPublicKeyReturn(pub bool); + ///Container type for all return fields from the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsValidSignatureReturn { + pub result: [u8; 4], + } + ///Container type for all return fields from the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NextOwnerIndexReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct OwnerAtIndexReturn(pub ::ethers::core::types::Bytes); + ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ProxiableUUIDReturn(pub [u8; 32]); + ///Container type for all return fields from the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ReplaySafeHashReturn(pub [u8; 32]); + ///Container type for all return fields from the `validateUserOp` function with signature `validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0x3a871cdd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateUserOpReturn { + pub validation_data: ::ethers::core::types::U256, + } +} diff --git a/xmtp_id/src/bindings/coinbase_smart_wallet_factory.rs b/xmtp_id/src/bindings/coinbase_smart_wallet_factory.rs new file mode 100644 index 000000000..e04ba2c94 --- /dev/null +++ b/xmtp_id/src/bindings/coinbase_smart_wallet_factory.rs @@ -0,0 +1,496 @@ +pub use coinbase_smart_wallet_factory::*; +/// 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 coinbase_smart_wallet_factory { + #[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("erc4337"), + 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("createAccount"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("createAccount"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owners"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Bytes, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes[]"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nonce"), + 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("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("contract CoinbaseSmartWallet",), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getAddress"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getAddress"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owners"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Bytes, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes[]"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nonce"), + 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("predicted"), + 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("implementation"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("implementation"), + 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("initCodeHash"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("initCodeHash"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("result"), + 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, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([( + ::std::borrow::ToOwned::to_owned("OwnerRequired"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("OwnerRequired"), + inputs: ::std::vec![], + },], + )]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static COINBASESMARTWALLETFACTORY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xA0`@R`@Qa\x05\xEB8\x03\x80a\x05\xEB\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x003V[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0cV[`\0` \x82\x84\x03\x12\x15a\0EW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\\W`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x05`a\0\x8B`\09`\0\x81\x81`\xA6\x01R\x81\x81a\x01<\x01Ra\x02;\x01Ra\x05``\0\xF3\xFE`\x80`@R`\x046\x10a\0?W`\x005`\xE0\x1C\x80c%\x0B\x1BA\x14a\0DW\x80c?\xFB\xA3o\x14a\0\x81W\x80c\\`\xDA\x1B\x14a\0\x94W\x80c\xDBLT^\x14a\0\xC8W[`\0\x80\xFD[4\x80\x15a\0PW`\0\x80\xFD[Pa\0da\0_6`\x04a\x03\xB7V[a\0\xEBV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0da\0\x8F6`\x04a\x03\xB7V[a\x01\x11V[4\x80\x15a\0\xA0W`\0\x80\xFD[Pa\0d\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\x81V[4\x80\x15a\0\xD4W`\0\x80\xFD[Pa\0\xDDa\x01\xE6V[`@Q\x90\x81R` \x01a\0xV[`\0a\x01\ta\0\xF8a\x01\xE6V[a\x01\x03\x86\x86\x86a\x02{V[0a\x02\xB1V[\x94\x93PPPPV[`\0\x82\x81\x03a\x013W`@Qc=`\0\xFD[PPPP[PP\x93\x92PPPV[`@\x80Q\x7F\xCC75\xA9 \xA3\xCAP]8+\xBCTZ\xF4=`\0\x80>`8W=`\0\xFD[=`\0\xF3``\x90\x81R\x7FQU\xF36==7==6=\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\x83Ra`\t` R\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`\x1ERh`==\x81`\"=9s`\nR`_`! \x91\x90\x92R`\0\x90\x91R\x90V[`\0\x83\x83\x83`@Q` \x01a\x02\x92\x93\x92\x91\x90a\x05\x06V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x93\x92PPPV[`\0`\xFF`\0SP`5\x92\x83R``\x1B`\x01R`\x15R`U`\0\x90\x81 \x91R\x90V[`\0\x80`@Q\x7F\xCC75\xA9 \xA3\xCAP]8+\xBCTZ\xF4=`\0\x80>`8W=`\0\xFD[=`\0\xF3``R\x7FQU\xF36==7==6=\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v`@Ra`\t` R\x84`\x1ERh`==\x81`\"=9s`\nR`_`! `5\x82\x01R0`X\x1B\x81R`\xFF\x81S\x83`\x15\x82\x01R`U\x81 \x91P\x81;a\x03\x7FW\x83`_`!\x88\xF5\x91P\x81a\x03zWc0\x11d%`\0R`\x04`\x1C\xFD[a\x03\xA5V[`\x01\x92P\x85\x15a\x03\xA5W`\08`\08\x89\x86Z\xF1a\x03\xA5Wc\xB1-\x13\xEB`\0R`\x04`\x1C\xFD[\x80`@RP`\0``R\x93P\x93\x91PPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x03\xCCW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03\xE4W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x03\xF8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\x07W`\0\x80\xFD[\x87` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x1CW`\0\x80\xFD[` \x92\x83\x01\x98\x90\x97P\x95\x90\x91\x015\x94\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\0\x83\x83\x85R` \x80\x86\x01\x95P` \x85`\x05\x1B\x83\x01\x01\x84`\0[\x87\x81\x10\x15a\x04\xE5W\x84\x83\x03`\x1F\x19\x01\x89R\x8156\x88\x90\x03`\x1E\x19\x01\x81\x12a\x04\x9BW`\0\x80\xFD[\x87\x01\x84\x81\x01\x905g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xB7W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x04\xC6W`\0\x80\xFD[a\x04\xD1\x85\x82\x84a\x042V[\x9A\x86\x01\x9A\x94PPP\x90\x83\x01\x90`\x01\x01a\x04uV[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x01\t` \x83\x01\x84\x86a\x04[V[`@\x81R`\0a\x05\x1A`@\x83\x01\x85\x87a\x04[V[\x90P\x82` \x83\x01R\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \x98\xBA\xE6Nb\x85\x9A\xC8\xD5\xED\x01\xC4\x92~_\xCE@oc+Q|\x86\xF08\xF0o\xEF\x83U\xDB\xA1dsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static COINBASESMARTWALLETFACTORY_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0?W`\x005`\xE0\x1C\x80c%\x0B\x1BA\x14a\0DW\x80c?\xFB\xA3o\x14a\0\x81W\x80c\\`\xDA\x1B\x14a\0\x94W\x80c\xDBLT^\x14a\0\xC8W[`\0\x80\xFD[4\x80\x15a\0PW`\0\x80\xFD[Pa\0da\0_6`\x04a\x03\xB7V[a\0\xEBV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0da\0\x8F6`\x04a\x03\xB7V[a\x01\x11V[4\x80\x15a\0\xA0W`\0\x80\xFD[Pa\0d\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\x81V[4\x80\x15a\0\xD4W`\0\x80\xFD[Pa\0\xDDa\x01\xE6V[`@Q\x90\x81R` \x01a\0xV[`\0a\x01\ta\0\xF8a\x01\xE6V[a\x01\x03\x86\x86\x86a\x02{V[0a\x02\xB1V[\x94\x93PPPPV[`\0\x82\x81\x03a\x013W`@Qc=`\0\xFD[PPPP[PP\x93\x92PPPV[`@\x80Q\x7F\xCC75\xA9 \xA3\xCAP]8+\xBCTZ\xF4=`\0\x80>`8W=`\0\xFD[=`\0\xF3``\x90\x81R\x7FQU\xF36==7==6=\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\x83Ra`\t` R\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`\x1ERh`==\x81`\"=9s`\nR`_`! \x91\x90\x92R`\0\x90\x91R\x90V[`\0\x83\x83\x83`@Q` \x01a\x02\x92\x93\x92\x91\x90a\x05\x06V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x93\x92PPPV[`\0`\xFF`\0SP`5\x92\x83R``\x1B`\x01R`\x15R`U`\0\x90\x81 \x91R\x90V[`\0\x80`@Q\x7F\xCC75\xA9 \xA3\xCAP]8+\xBCTZ\xF4=`\0\x80>`8W=`\0\xFD[=`\0\xF3``R\x7FQU\xF36==7==6=\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v`@Ra`\t` R\x84`\x1ERh`==\x81`\"=9s`\nR`_`! `5\x82\x01R0`X\x1B\x81R`\xFF\x81S\x83`\x15\x82\x01R`U\x81 \x91P\x81;a\x03\x7FW\x83`_`!\x88\xF5\x91P\x81a\x03zWc0\x11d%`\0R`\x04`\x1C\xFD[a\x03\xA5V[`\x01\x92P\x85\x15a\x03\xA5W`\08`\08\x89\x86Z\xF1a\x03\xA5Wc\xB1-\x13\xEB`\0R`\x04`\x1C\xFD[\x80`@RP`\0``R\x93P\x93\x91PPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x03\xCCW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03\xE4W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x03\xF8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\x07W`\0\x80\xFD[\x87` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x1CW`\0\x80\xFD[` \x92\x83\x01\x98\x90\x97P\x95\x90\x91\x015\x94\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\0\x83\x83\x85R` \x80\x86\x01\x95P` \x85`\x05\x1B\x83\x01\x01\x84`\0[\x87\x81\x10\x15a\x04\xE5W\x84\x83\x03`\x1F\x19\x01\x89R\x8156\x88\x90\x03`\x1E\x19\x01\x81\x12a\x04\x9BW`\0\x80\xFD[\x87\x01\x84\x81\x01\x905g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xB7W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x04\xC6W`\0\x80\xFD[a\x04\xD1\x85\x82\x84a\x042V[\x9A\x86\x01\x9A\x94PPP\x90\x83\x01\x90`\x01\x01a\x04uV[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x01\t` \x83\x01\x84\x86a\x04[V[`@\x81R`\0a\x05\x1A`@\x83\x01\x85\x87a\x04[V[\x90P\x82` \x83\x01R\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \x98\xBA\xE6Nb\x85\x9A\xC8\xD5\xED\x01\xC4\x92~_\xCE@oc+Q|\x86\xF08\xF0o\xEF\x83U\xDB\xA1dsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static COINBASESMARTWALLETFACTORY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct CoinbaseSmartWalletFactory(::ethers::contract::Contract); + impl ::core::clone::Clone for CoinbaseSmartWalletFactory { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for CoinbaseSmartWalletFactory { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for CoinbaseSmartWalletFactory { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for CoinbaseSmartWalletFactory { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(CoinbaseSmartWalletFactory)) + .field(&self.address()) + .finish() + } + } + impl CoinbaseSmartWalletFactory { + /// 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(), + COINBASESMARTWALLETFACTORY_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( + COINBASESMARTWALLETFACTORY_ABI.clone(), + COINBASESMARTWALLETFACTORY_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `createAccount` (0x3ffba36f) function + pub fn create_account( + &self, + owners: ::std::vec::Vec<::ethers::core::types::Bytes>, + nonce: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([63, 251, 163, 111], (owners, nonce)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getAddress` (0x250b1b41) function + pub fn get_address( + &self, + owners: ::std::vec::Vec<::ethers::core::types::Bytes>, + nonce: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([37, 11, 27, 65], (owners, nonce)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `implementation` (0x5c60da1b) function + pub fn implementation( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([92, 96, 218, 27], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `initCodeHash` (0xdb4c545e) function + pub fn init_code_hash(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([219, 76, 84, 94], ()) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for CoinbaseSmartWalletFactory + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `OwnerRequired` with signature `OwnerRequired()` and selector `0x3c776be1` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "OwnerRequired", abi = "OwnerRequired()")] + pub struct OwnerRequired; + ///Container type for all input parameters for the `createAccount` function with signature `createAccount(bytes[],uint256)` and selector `0x3ffba36f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "createAccount", abi = "createAccount(bytes[],uint256)")] + pub struct CreateAccountCall { + pub owners: ::std::vec::Vec<::ethers::core::types::Bytes>, + pub nonce: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getAddress` function with signature `getAddress(bytes[],uint256)` and selector `0x250b1b41` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getAddress", abi = "getAddress(bytes[],uint256)")] + pub struct GetAddressCall { + pub owners: ::std::vec::Vec<::ethers::core::types::Bytes>, + pub nonce: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `implementation` function with signature `implementation()` and selector `0x5c60da1b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "implementation", abi = "implementation()")] + pub struct ImplementationCall; + ///Container type for all input parameters for the `initCodeHash` function with signature `initCodeHash()` and selector `0xdb4c545e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "initCodeHash", abi = "initCodeHash()")] + pub struct InitCodeHashCall; + ///Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum CoinbaseSmartWalletFactoryCalls { + CreateAccount(CreateAccountCall), + GetAddress(GetAddressCall), + Implementation(ImplementationCall), + InitCodeHash(InitCodeHashCall), + } + impl ::ethers::core::abi::AbiDecode for CoinbaseSmartWalletFactoryCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::CreateAccount(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::GetAddress(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::Implementation(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::InitCodeHash(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for CoinbaseSmartWalletFactoryCalls { + fn encode(self) -> Vec { + match self { + Self::CreateAccount(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Implementation(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InitCodeHash(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for CoinbaseSmartWalletFactoryCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::CreateAccount(element) => ::core::fmt::Display::fmt(element, f), + Self::GetAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::Implementation(element) => ::core::fmt::Display::fmt(element, f), + Self::InitCodeHash(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for CoinbaseSmartWalletFactoryCalls { + fn from(value: CreateAccountCall) -> Self { + Self::CreateAccount(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletFactoryCalls { + fn from(value: GetAddressCall) -> Self { + Self::GetAddress(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletFactoryCalls { + fn from(value: ImplementationCall) -> Self { + Self::Implementation(value) + } + } + impl ::core::convert::From for CoinbaseSmartWalletFactoryCalls { + fn from(value: InitCodeHashCall) -> Self { + Self::InitCodeHash(value) + } + } + ///Container type for all return fields from the `createAccount` function with signature `createAccount(bytes[],uint256)` and selector `0x3ffba36f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CreateAccountReturn { + pub account: ::ethers::core::types::Address, + } + ///Container type for all return fields from the `getAddress` function with signature `getAddress(bytes[],uint256)` and selector `0x250b1b41` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetAddressReturn { + pub predicted: ::ethers::core::types::Address, + } + ///Container type for all return fields from the `implementation` function with signature `implementation()` and selector `0x5c60da1b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ImplementationReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `initCodeHash` function with signature `initCodeHash()` and selector `0xdb4c545e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct InitCodeHashReturn { + pub result: [u8; 32], + } +} diff --git a/xmtp_id/src/bindings/dummy.rs b/xmtp_id/src/bindings/dummy.rs new file mode 100644 index 000000000..4d978770c --- /dev/null +++ b/xmtp_id/src/bindings/dummy.rs @@ -0,0 +1,576 @@ +pub use dummy::*; +/// 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 dummy { + #[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("dummy"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("dummy"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("proxiableUUID"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), + 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("upgradeToAndCall"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newImplementation"), + 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("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::Payable, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("Done"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Done"), + inputs: ::std::vec![], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Upgraded"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Upgraded"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("implementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + },], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UpgradeFailed"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UpgradeFailed"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static DUMMY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xA0`@R0`\x80R4\x80\x15a\0\x14W`\0\x80\xFD[P`\x80Qa\x02\xB6a\x006`\09`\0\x81\x81`\xB7\x01Ra\x01\x94\x01Ra\x02\xB6`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c2\xE4:\x11\x14a\09W\x80cO\x1E\xF2\x86\x14a\0PW\x80cR\xD1\x90-\x14a\0cW[`\0\x80\xFD[4\x80\x15a\0EW`\0\x80\xFD[Pa\0Na\0\x8AV[\0[a\0Na\0^6`\x04a\x01\xEFV[a\0\xB5V[4\x80\x15a\0oW`\0\x80\xFD[Pa\0xa\x01\x90V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`@Q\x7F\x9F\x9F\xB44WGI\xB7DX\xE0\xDD\xC3\xCF_\xD5\xBD\xB1\xB0\t\xC8a^\x82V\x06\xB57$Wo5\x90`\0\x90\xA1V[\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\x000\x81\x03a\0\xEBWc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x01=WcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\x01\x8AW`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\x01\x88W=`\0\x82>=\x81\xFD[P[PPPPV[`\0\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\x000\x81\x14a\x01\xC8Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91PP\x90V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x02\x04W`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x1BW`\0\x80\xFD[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x028W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02LW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02[W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x02mW`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V\xFE\xA2dipfsX\"\x12 \xC0_GN:KSv\n\n\x1Fs\x98xg\xACN\xD4\x98\xFDh\x9E\x93\x88h?\x84r\xA9{i/dsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static DUMMY_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c2\xE4:\x11\x14a\09W\x80cO\x1E\xF2\x86\x14a\0PW\x80cR\xD1\x90-\x14a\0cW[`\0\x80\xFD[4\x80\x15a\0EW`\0\x80\xFD[Pa\0Na\0\x8AV[\0[a\0Na\0^6`\x04a\x01\xEFV[a\0\xB5V[4\x80\x15a\0oW`\0\x80\xFD[Pa\0xa\x01\x90V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`@Q\x7F\x9F\x9F\xB44WGI\xB7DX\xE0\xDD\xC3\xCF_\xD5\xBD\xB1\xB0\t\xC8a^\x82V\x06\xB57$Wo5\x90`\0\x90\xA1V[\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\x000\x81\x03a\0\xEBWc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x01=WcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\x01\x8AW`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\x01\x88W=`\0\x82>=\x81\xFD[P[PPPPV[`\0\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\x000\x81\x14a\x01\xC8Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91PP\x90V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x02\x04W`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x1BW`\0\x80\xFD[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x028W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02LW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02[W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x02mW`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V\xFE\xA2dipfsX\"\x12 \xC0_GN:KSv\n\n\x1Fs\x98xg\xACN\xD4\x98\xFDh\x9E\x93\x88h?\x84r\xA9{i/dsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static DUMMY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Dummy(::ethers::contract::Contract); + impl ::core::clone::Clone for Dummy { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Dummy { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Dummy { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Dummy { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Dummy)) + .field(&self.address()) + .finish() + } + } + impl Dummy { + /// 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(), + DUMMY_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( + DUMMY_ABI.clone(), + DUMMY_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `dummy` (0x32e43a11) function + pub fn dummy(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([50, 228, 58, 17], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `proxiableUUID` (0x52d1902d) function + pub fn proxiable_uuid(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([82, 209, 144, 45], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function + pub fn upgrade_to_and_call( + &self, + new_implementation: ::ethers::core::types::Address, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([79, 30, 242, 134], (new_implementation, data)) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `Done` event + pub fn done_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DoneFilter> { + self.0.event() + } + ///Gets the contract's `Upgraded` event + pub fn upgraded_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradedFilter> { + 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, DummyEvents> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for Dummy { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `UnauthorizedCallContext` with signature `UnauthorizedCallContext()` and selector `0x9f03a026` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "UnauthorizedCallContext", abi = "UnauthorizedCallContext()")] + pub struct UnauthorizedCallContext; + ///Custom Error type `UpgradeFailed` with signature `UpgradeFailed()` and selector `0x55299b49` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "UpgradeFailed", abi = "UpgradeFailed()")] + pub struct UpgradeFailed; + ///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 DummyErrors { + UnauthorizedCallContext(UnauthorizedCallContext), + UpgradeFailed(UpgradeFailed), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for DummyErrors { + 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::UnauthorizedCallContext(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::UpgradeFailed(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for DummyErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::UnauthorizedCallContext(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UpgradeFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for DummyErrors { + 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 DummyErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::UnauthorizedCallContext(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeFailed(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for DummyErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for DummyErrors { + fn from(value: UnauthorizedCallContext) -> Self { + Self::UnauthorizedCallContext(value) + } + } + impl ::core::convert::From for DummyErrors { + fn from(value: UpgradeFailed) -> Self { + Self::UpgradeFailed(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Done", abi = "Done()")] + pub struct DoneFilter; + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] + pub struct UpgradedFilter { + #[ethevent(indexed)] + pub implementation: ::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 DummyEvents { + DoneFilter(DoneFilter), + UpgradedFilter(UpgradedFilter), + } + impl ::ethers::contract::EthLogDecode for DummyEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = DoneFilter::decode_log(log) { + return Ok(DummyEvents::DoneFilter(decoded)); + } + if let Ok(decoded) = UpgradedFilter::decode_log(log) { + return Ok(DummyEvents::UpgradedFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for DummyEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DoneFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradedFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for DummyEvents { + fn from(value: DoneFilter) -> Self { + Self::DoneFilter(value) + } + } + impl ::core::convert::From for DummyEvents { + fn from(value: UpgradedFilter) -> Self { + Self::UpgradedFilter(value) + } + } + ///Container type for all input parameters for the `dummy` function with signature `dummy()` and selector `0x32e43a11` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "dummy", abi = "dummy()")] + pub struct DummyCall; + ///Container type for all input parameters for the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] + pub struct ProxiableUUIDCall; + ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] + pub struct UpgradeToAndCallCall { + pub new_implementation: ::ethers::core::types::Address, + 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 DummyCalls { + Dummy(DummyCall), + ProxiableUUID(ProxiableUUIDCall), + UpgradeToAndCall(UpgradeToAndCallCall), + } + impl ::ethers::core::abi::AbiDecode for DummyCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Dummy(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ProxiableUUID(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UpgradeToAndCall(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for DummyCalls { + fn encode(self) -> Vec { + match self { + Self::Dummy(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ProxiableUUID(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::UpgradeToAndCall(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for DummyCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Dummy(element) => ::core::fmt::Display::fmt(element, f), + Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for DummyCalls { + fn from(value: DummyCall) -> Self { + Self::Dummy(value) + } + } + impl ::core::convert::From for DummyCalls { + fn from(value: ProxiableUUIDCall) -> Self { + Self::ProxiableUUID(value) + } + } + impl ::core::convert::From for DummyCalls { + fn from(value: UpgradeToAndCallCall) -> Self { + Self::UpgradeToAndCall(value) + } + } + ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ProxiableUUIDReturn(pub [u8; 32]); +} diff --git a/xmtp_id/src/bindings/erc1271.rs b/xmtp_id/src/bindings/erc1271.rs new file mode 100644 index 000000000..1ef23f45c --- /dev/null +++ b/xmtp_id/src/bindings/erc1271.rs @@ -0,0 +1,463 @@ +pub use erc1271::*; +/// 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 erc1271 { + #[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("domainSeparator"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("domainSeparator"), + 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("eip712Domain"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("eip712Domain"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("fields"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(1usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes1"), + ), + }, + ::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("version"), + 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("chainId"), + 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("verifyingContract"), + 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("salt"), + 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("extensions"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::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("isValidSignature"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isValidSignature"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hash"), + 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("signature"), + 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("result"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("replaySafeHash"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("replaySafeHash"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + 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, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static ERC1271_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct ERC1271(::ethers::contract::Contract); + impl ::core::clone::Clone for ERC1271 { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for ERC1271 { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for ERC1271 { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for ERC1271 { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(ERC1271)) + .field(&self.address()) + .finish() + } + } + impl ERC1271 { + /// 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(), + ERC1271_ABI.clone(), + client, + )) + } + ///Calls the contract's `domainSeparator` (0xf698da25) function + pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([246, 152, 218, 37], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `eip712Domain` (0x84b0196e) function + pub fn eip_712_domain( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + [u8; 1], + ::std::string::String, + ::std::string::String, + ::ethers::core::types::U256, + ::ethers::core::types::Address, + [u8; 32], + ::std::vec::Vec<::ethers::core::types::U256>, + ), + > { + self.0 + .method_hash([132, 176, 25, 110], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isValidSignature` (0x1626ba7e) function + pub fn is_valid_signature( + &self, + hash: [u8; 32], + signature: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([22, 38, 186, 126], (hash, signature)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `replaySafeHash` (0xce1506be) function + pub fn replay_safe_hash( + &self, + hash: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([206, 21, 6, 190], hash) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for ERC1271 { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "domainSeparator", abi = "domainSeparator()")] + pub struct DomainSeparatorCall; + ///Container type for all input parameters for the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "eip712Domain", abi = "eip712Domain()")] + pub struct Eip712DomainCall; + ///Container type for all input parameters for the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isValidSignature", abi = "isValidSignature(bytes32,bytes)")] + pub struct IsValidSignatureCall { + pub hash: [u8; 32], + pub signature: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "replaySafeHash", abi = "replaySafeHash(bytes32)")] + pub struct ReplaySafeHashCall { + pub hash: [u8; 32], + } + ///Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum ERC1271Calls { + DomainSeparator(DomainSeparatorCall), + Eip712Domain(Eip712DomainCall), + IsValidSignature(IsValidSignatureCall), + ReplaySafeHash(ReplaySafeHashCall), + } + impl ::ethers::core::abi::AbiDecode for ERC1271Calls { + 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::Eip712Domain(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsValidSignature(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ReplaySafeHash(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for ERC1271Calls { + fn encode(self) -> Vec { + match self { + Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Eip712Domain(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsValidSignature(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ReplaySafeHash(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for ERC1271Calls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), + Self::Eip712Domain(element) => ::core::fmt::Display::fmt(element, f), + Self::IsValidSignature(element) => ::core::fmt::Display::fmt(element, f), + Self::ReplaySafeHash(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for ERC1271Calls { + fn from(value: DomainSeparatorCall) -> Self { + Self::DomainSeparator(value) + } + } + impl ::core::convert::From for ERC1271Calls { + fn from(value: Eip712DomainCall) -> Self { + Self::Eip712Domain(value) + } + } + impl ::core::convert::From for ERC1271Calls { + fn from(value: IsValidSignatureCall) -> Self { + Self::IsValidSignature(value) + } + } + impl ::core::convert::From for ERC1271Calls { + fn from(value: ReplaySafeHashCall) -> Self { + Self::ReplaySafeHash(value) + } + } + ///Container type for all return fields from the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` + #[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 `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct Eip712DomainReturn { + pub fields: [u8; 1], + pub name: ::std::string::String, + pub version: ::std::string::String, + pub chain_id: ::ethers::core::types::U256, + pub verifying_contract: ::ethers::core::types::Address, + pub salt: [u8; 32], + pub extensions: ::std::vec::Vec<::ethers::core::types::U256>, + } + ///Container type for all return fields from the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsValidSignatureReturn { + pub result: [u8; 4], + } + ///Container type for all return fields from the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ReplaySafeHashReturn(pub [u8; 32]); +} diff --git a/xmtp_id/src/bindings/erc1271_input_generator.rs b/xmtp_id/src/bindings/erc1271_input_generator.rs new file mode 100644 index 000000000..c592e1146 --- /dev/null +++ b/xmtp_id/src/bindings/erc1271_input_generator.rs @@ -0,0 +1,316 @@ +pub use erc1271_input_generator::*; +/// 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 erc1271_input_generator { + #[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("account"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("contract CoinbaseSmartWallet",), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hash"), + 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("accountFactory"), + 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("factoryCalldata"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + }), + functions: ::std::collections::BTreeMap::new(), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AccountDeploymentFailed"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("AccountDeploymentFailed",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ReturnedAddressDoesNotMatchAccount"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ReturnedAddressDoesNotMatchAccount", + ), + 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("returned"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + },], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static ERC1271INPUTGENERATOR_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x03\xAB8\x03\x80a\x03\xAB\x839\x81\x01`@\x81\x90Ra\0/\x91a\x02tV[`\0a\0=\x85\x85\x85\x85a\0IV[\x90P\x80`\x80R` `\x80\xF3[`\0`\x01`\x01`\xA0\x1B\x03\x85\x16;\x15a\0\xCBW`@Qcg\n\x83_`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c\xCE\x15\x06\xBE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xA0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xC4\x91\x90a\x03QV[\x90Pa\x02\x1AV[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\0\xE6\x91\x90a\x03jV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x01#W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01(V[``\x91P[P\x91P\x91P\x81a\x01JW`@Qb\x94UU`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x81\x80` \x01\x90Q\x81\x01\x90a\x01`\x91\x90a\x03\x86V[\x90P\x87`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x14a\x01\xABW`@Qc\xC8bC\x83`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16`\x04\x83\x01R\x82\x16`$\x82\x01R`D\x01`@Q\x80\x91\x03\x90\xFD[`@Qcg\n\x83_`\xE1\x1B\x81R`\x04\x81\x01\x88\x90R`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\xCE\x15\x06\xBE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x14\x91\x90a\x03QV[\x93PPPP[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x027W`\0\x80\xFD[PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x02kW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02SV[PP`\0\x91\x01RV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x02\x8AW`\0\x80\xFD[\x84Qa\x02\x95\x81a\x02\"V[` \x86\x01Q`@\x87\x01Q\x91\x95P\x93Pa\x02\xAD\x81a\x02\"V[``\x86\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x02\xCAW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x02\xDEW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x02\xF0Wa\x02\xF0a\x02:V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03\x18Wa\x03\x18a\x02:V[\x81`@R\x82\x81R\x8A` \x84\x87\x01\x01\x11\x15a\x031W`\0\x80\xFD[a\x03B\x83` \x83\x01` \x88\x01a\x02PV[\x97\x9A\x96\x99P\x94\x97PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03cW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82Qa\x03|\x81\x84` \x87\x01a\x02PV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x03\x98W`\0\x80\xFD[\x81Qa\x03\xA3\x81a\x02\"V[\x93\x92PPPV\xFE"; + /// The bytecode of the contract. + pub static ERC1271INPUTGENERATOR_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x86\x8Dv\xF4p\xB7z\x1B/?\x11U\xB1\xCF\x83\xC7\xDA\x8A\xA4\x93\xAF\x03\xF9\x84;\xE8\x86\xD5\xCC\xFAC\x10dsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static ERC1271INPUTGENERATOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct ERC1271InputGenerator(::ethers::contract::Contract); + impl ::core::clone::Clone for ERC1271InputGenerator { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for ERC1271InputGenerator { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for ERC1271InputGenerator { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for ERC1271InputGenerator { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(ERC1271InputGenerator)) + .field(&self.address()) + .finish() + } + } + impl ERC1271InputGenerator { + /// 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(), + ERC1271INPUTGENERATOR_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( + ERC1271INPUTGENERATOR_ABI.clone(), + ERC1271INPUTGENERATOR_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 ERC1271InputGenerator + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `AccountDeploymentFailed` with signature `AccountDeploymentFailed()` and selector `0x128aaaa0` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "AccountDeploymentFailed", abi = "AccountDeploymentFailed()")] + pub struct AccountDeploymentFailed; + ///Custom Error type `ReturnedAddressDoesNotMatchAccount` with signature `ReturnedAddressDoesNotMatchAccount(address,address)` and selector `0xc8624383` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "ReturnedAddressDoesNotMatchAccount", + abi = "ReturnedAddressDoesNotMatchAccount(address,address)" + )] + pub struct ReturnedAddressDoesNotMatchAccount { + pub account: ::ethers::core::types::Address, + pub returned: ::ethers::core::types::Address, + } + ///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 ERC1271InputGeneratorErrors { + AccountDeploymentFailed(AccountDeploymentFailed), + ReturnedAddressDoesNotMatchAccount(ReturnedAddressDoesNotMatchAccount), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for ERC1271InputGeneratorErrors { + 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::AccountDeploymentFailed(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ReturnedAddressDoesNotMatchAccount(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for ERC1271InputGeneratorErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::AccountDeploymentFailed(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ReturnedAddressDoesNotMatchAccount(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for ERC1271InputGeneratorErrors { + 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 ERC1271InputGeneratorErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AccountDeploymentFailed(element) => ::core::fmt::Display::fmt(element, f), + Self::ReturnedAddressDoesNotMatchAccount(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for ERC1271InputGeneratorErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for ERC1271InputGeneratorErrors { + fn from(value: AccountDeploymentFailed) -> Self { + Self::AccountDeploymentFailed(value) + } + } + impl ::core::convert::From for ERC1271InputGeneratorErrors { + fn from(value: ReturnedAddressDoesNotMatchAccount) -> Self { + Self::ReturnedAddressDoesNotMatchAccount(value) + } + } +} diff --git a/xmtp_id/src/bindings/fcl_ecdsa.rs b/xmtp_id/src/bindings/fcl_ecdsa.rs new file mode 100644 index 000000000..e999c8acc --- /dev/null +++ b/xmtp_id/src/bindings/fcl_ecdsa.rs @@ -0,0 +1,119 @@ +pub use fcl_ecdsa::*; +/// 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 fcl_ecdsa { + #[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 FCL_ECDSA_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xA4E\x8B\xE3\0\xB4|\xB4\x0FK\x1F\xEF\xCB\xC7\x1AO\xB6\x13\"\t\xE7\x1954d\xB9\xF0\xFA\xE4_d&dsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static FCL_ECDSA_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xA4E\x8B\xE3\0\xB4|\xB4\x0FK\x1F\xEF\xCB\xC7\x1AO\xB6\x13\"\t\xE7\x1954d\xB9\xF0\xFA\xE4_d&dsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static FCL_ECDSA_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct FCL_ecdsa(::ethers::contract::Contract); + impl ::core::clone::Clone for FCL_ecdsa { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for FCL_ecdsa { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for FCL_ecdsa { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for FCL_ecdsa { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(FCL_ecdsa)) + .field(&self.address()) + .finish() + } + } + impl FCL_ecdsa { + /// 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(), + FCL_ECDSA_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( + FCL_ECDSA_ABI.clone(), + FCL_ECDSA_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 FCL_ecdsa { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/xmtp_id/src/bindings/fcl_elliptic_zz.rs b/xmtp_id/src/bindings/fcl_elliptic_zz.rs new file mode 100644 index 000000000..17bf6501d --- /dev/null +++ b/xmtp_id/src/bindings/fcl_elliptic_zz.rs @@ -0,0 +1,121 @@ +pub use fcl_elliptic_zz::*; +/// 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 fcl_elliptic_zz { + #[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 FCL_ELLIPTIC_ZZ_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEF\x9E\x9EP\x8F\x1E\xE66\x0F\xCC\xC9\x19\x81\xA97u\xADD\xFCPbe\xDF#=\xC0|\xD7\x9A\x1D'VdsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static FCL_ELLIPTIC_ZZ_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEF\x9E\x9EP\x8F\x1E\xE66\x0F\xCC\xC9\x19\x81\xA97u\xADD\xFCPbe\xDF#=\xC0|\xD7\x9A\x1D'VdsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static FCL_ELLIPTIC_ZZ_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct FCL_Elliptic_ZZ(::ethers::contract::Contract); + impl ::core::clone::Clone for FCL_Elliptic_ZZ { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for FCL_Elliptic_ZZ { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for FCL_Elliptic_ZZ { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for FCL_Elliptic_ZZ { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(FCL_Elliptic_ZZ)) + .field(&self.address()) + .finish() + } + } + impl FCL_Elliptic_ZZ { + /// 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(), + FCL_ELLIPTIC_ZZ_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( + FCL_ELLIPTIC_ZZ_ABI.clone(), + FCL_ELLIPTIC_ZZ_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 FCL_Elliptic_ZZ + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/xmtp_id/src/bindings/helpers.rs b/xmtp_id/src/bindings/helpers.rs new file mode 100644 index 000000000..9b1f08d06 --- /dev/null +++ b/xmtp_id/src/bindings/helpers.rs @@ -0,0 +1,70 @@ +pub use helpers::*; +/// 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 helpers { + #[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 HELPERS_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct Helpers(::ethers::contract::Contract); + impl ::core::clone::Clone for Helpers { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Helpers { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Helpers { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Helpers { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Helpers)) + .field(&self.address()) + .finish() + } + } + impl Helpers { + /// 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(), + HELPERS_ABI.clone(), + client, + )) + } + } + impl From<::ethers::contract::Contract> for Helpers { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/xmtp_id/src/bindings/i_aggregator.rs b/xmtp_id/src/bindings/i_aggregator.rs new file mode 100644 index 000000000..14186a7fb --- /dev/null +++ b/xmtp_id/src/bindings/i_aggregator.rs @@ -0,0 +1,384 @@ +pub use i_aggregator::*; +/// 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_aggregator { + 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("aggregateSignatures"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("aggregateSignatures",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOps"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation[]"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("aggregatedSignature",), + 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("validateSignatures"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateSignatures"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOps"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation[]"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("signature"), + 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::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateUserOpSignature"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateUserOpSignature",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOp"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("sigForUserOp"), + 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, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static IAGGREGATOR_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct IAggregator(::ethers::contract::Contract); + impl ::core::clone::Clone for IAggregator { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for IAggregator { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for IAggregator { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for IAggregator { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(IAggregator)) + .field(&self.address()) + .finish() + } + } + impl IAggregator { + /// 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(), + IAGGREGATOR_ABI.clone(), + client, + )) + } + ///Calls the contract's `aggregateSignatures` (0x275e2d79) function + pub fn aggregate_signatures( + &self, + user_ops: ::std::vec::Vec, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([39, 94, 45, 121], user_ops) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `validateSignatures` (0xe3563a4f) function + pub fn validate_signatures( + &self, + user_ops: ::std::vec::Vec, + signature: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([227, 86, 58, 79], (user_ops, signature)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `validateUserOpSignature` (0x64c530cd) function + pub fn validate_user_op_signature( + &self, + user_op: UserOperation, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([100, 197, 48, 205], (user_op,)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for IAggregator { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `aggregateSignatures` function with signature `aggregateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])` and selector `0x275e2d79` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "aggregateSignatures", + abi = "aggregateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])" + )] + pub struct AggregateSignaturesCall { + pub user_ops: ::std::vec::Vec, + } + ///Container type for all input parameters for the `validateSignatures` function with signature `validateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes)` and selector `0xe3563a4f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "validateSignatures", + abi = "validateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes)" + )] + pub struct ValidateSignaturesCall { + pub user_ops: ::std::vec::Vec, + pub signature: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `validateUserOpSignature` function with signature `validateUserOpSignature((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x64c530cd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "validateUserOpSignature", + abi = "validateUserOpSignature((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" + )] + pub struct ValidateUserOpSignatureCall { + pub user_op: UserOperation, + } + ///Container type for all of the contract's call + #[derive( + Clone, + ::ethers::contract::EthAbiType, + serde::Serialize, + serde::Deserialize, + Debug, + PartialEq, + Eq, + Hash, + )] + pub enum IAggregatorCalls { + AggregateSignatures(AggregateSignaturesCall), + ValidateSignatures(ValidateSignaturesCall), + ValidateUserOpSignature(ValidateUserOpSignatureCall), + } + impl ::ethers::core::abi::AbiDecode for IAggregatorCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AggregateSignatures(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidateSignatures(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidateUserOpSignature(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IAggregatorCalls { + fn encode(self) -> Vec { + match self { + Self::AggregateSignatures(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateSignatures(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidateUserOpSignature(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for IAggregatorCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AggregateSignatures(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateSignatures(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateUserOpSignature(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IAggregatorCalls { + fn from(value: AggregateSignaturesCall) -> Self { + Self::AggregateSignatures(value) + } + } + impl ::core::convert::From for IAggregatorCalls { + fn from(value: ValidateSignaturesCall) -> Self { + Self::ValidateSignatures(value) + } + } + impl ::core::convert::From for IAggregatorCalls { + fn from(value: ValidateUserOpSignatureCall) -> Self { + Self::ValidateUserOpSignature(value) + } + } + ///Container type for all return fields from the `aggregateSignatures` function with signature `aggregateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])` and selector `0x275e2d79` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct AggregateSignaturesReturn { + pub aggregated_signature: ::ethers::core::types::Bytes, + } + ///Container type for all return fields from the `validateUserOpSignature` function with signature `validateUserOpSignature((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x64c530cd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateUserOpSignatureReturn { + pub sig_for_user_op: ::ethers::core::types::Bytes, + } +} diff --git a/xmtp_id/src/bindings/i_entry_point.rs b/xmtp_id/src/bindings/i_entry_point.rs new file mode 100644 index 000000000..0d1866279 --- /dev/null +++ b/xmtp_id/src/bindings/i_entry_point.rs @@ -0,0 +1,2546 @@ +pub use i_entry_point::*; +/// 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_entry_point { + 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("addStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("addStake"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_unstakeDelaySec"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint32"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + }, + ], + ), + ( + ::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::borrow::ToOwned::to_owned("account"), + 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("depositTo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("depositTo"), + 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"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getDepositInfo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getDepositInfo"), + 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"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("info"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(112usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(112usize), + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IStakeManager.DepositInfo", + ), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("getNonce"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getNonce"), + 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("key"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 192usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint192"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nonce"), + 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("getSenderAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getSenderAddress"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("initCode"), + 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("getUserOpHash"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getUserOpHash"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOp"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation"), + ), + }, + ], + 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("handleAggregatedOps"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "handleAggregatedOps", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("opsPerAggregator"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ], + ), + ), + ), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ], + ), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IEntryPoint.UserOpsPerAggregator[]", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("beneficiary"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address payable"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("handleOps"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("handleOps"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("ops"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ], + ), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation[]"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("beneficiary"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address payable"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("incrementNonce"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("incrementNonce"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 192usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint192"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("simulateHandleOp"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("simulateHandleOp"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("op"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("target"), + 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("targetCallData"), + 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("simulateValidation"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("simulateValidation"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOp"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("unlockStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("unlockStake"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawStake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("withdrawStake"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("withdrawAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address payable"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawTo"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("withdrawTo"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("withdrawAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address payable"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("withdrawAmount"), + 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("AccountDeployed"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("AccountDeployed"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("userOpHash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 32usize, + ), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("factory"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("paymaster"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("BeforeExecution"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("BeforeExecution"), + inputs: ::std::vec![], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("Deposited"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Deposited"), + 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("totalDeposit"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SignatureAggregatorChanged"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "SignatureAggregatorChanged", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("aggregator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeLocked"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("StakeLocked"), + 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("totalStaked"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("unstakeDelaySec"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeUnlocked"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("StakeUnlocked"), + 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("withdrawTime"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), + 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("withdrawAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::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("UserOperationEvent"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("UserOperationEvent"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("userOpHash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 32usize, + ), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("paymaster"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("nonce"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("success"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("actualGasCost"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("actualGasUsed"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("UserOperationRevertReason"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "UserOperationRevertReason", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("userOpHash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 32usize, + ), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("nonce"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("revertReason"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("Withdrawn"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Withdrawn"), + 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("withdrawAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::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("ExecutionResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ExecutionResult"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("preOpGas"), + 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("paid"), + 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("validAfter"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint48"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("validUntil"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint48"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("targetSuccess"), + 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("targetResult"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("FailedOp"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("FailedOp"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("opIndex"), + 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("reason"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SenderAddressResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "SenderAddressResult", + ), + 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"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SignatureValidationFailed"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "SignatureValidationFailed", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("aggregator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidationResult"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ValidationResult"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("returnInfo"), + 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::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IEntryPoint.ReturnInfo", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("senderInfo"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IStakeManager.StakeInfo", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("factoryInfo"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IStakeManager.StakeInfo", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("paymasterInfo"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IStakeManager.StakeInfo", + ), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidationResultWithAggregation"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidationResultWithAggregation", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("returnInfo"), + 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::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IEntryPoint.ReturnInfo", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("senderInfo"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IStakeManager.StakeInfo", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("factoryInfo"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IStakeManager.StakeInfo", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("paymasterInfo"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IStakeManager.StakeInfo", + ), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("aggregatorInfo"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IEntryPoint.AggregatorStakeInfo", + ), + ), + }, + ], + }, + ], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static IENTRYPOINT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct IEntryPoint(::ethers::contract::Contract); + impl ::core::clone::Clone for IEntryPoint { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for IEntryPoint { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for IEntryPoint { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for IEntryPoint { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(IEntryPoint)) + .field(&self.address()) + .finish() + } + } + impl IEntryPoint { + /// 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(), + IENTRYPOINT_ABI.clone(), + client, + )) + } + ///Calls the contract's `addStake` (0x0396cb60) function + pub fn add_stake( + &self, + unstake_delay_sec: u32, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([3, 150, 203, 96], unstake_delay_sec) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `depositTo` (0xb760faf9) function + pub fn deposit_to( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([183, 96, 250, 249], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getDepositInfo` (0x5287ce12) function + pub fn get_deposit_info( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([82, 135, 206, 18], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getNonce` (0x35567e1a) function + pub fn get_nonce( + &self, + sender: ::ethers::core::types::Address, + key: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([53, 86, 126, 26], (sender, key)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getSenderAddress` (0x9b249f69) function + pub fn get_sender_address( + &self, + init_code: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([155, 36, 159, 105], init_code) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getUserOpHash` (0xa6193531) function + pub fn get_user_op_hash( + &self, + user_op: UserOperation, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([166, 25, 53, 49], (user_op,)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `handleAggregatedOps` (0x4b1d7cf5) function + pub fn handle_aggregated_ops( + &self, + ops_per_aggregator: ::std::vec::Vec, + beneficiary: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([75, 29, 124, 245], (ops_per_aggregator, beneficiary)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `handleOps` (0x1fad948c) function + pub fn handle_ops( + &self, + ops: ::std::vec::Vec, + beneficiary: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([31, 173, 148, 140], (ops, beneficiary)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `incrementNonce` (0x0bd28e3b) function + pub fn increment_nonce( + &self, + key: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([11, 210, 142, 59], key) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `simulateHandleOp` (0xd6383f94) function + pub fn simulate_handle_op( + &self, + op: UserOperation, + target: ::ethers::core::types::Address, + target_call_data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([214, 56, 63, 148], (op, target, target_call_data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `simulateValidation` (0xee219423) function + pub fn simulate_validation( + &self, + user_op: UserOperation, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([238, 33, 148, 35], (user_op,)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `unlockStake` (0xbb9fe6bf) function + pub fn unlock_stake(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([187, 159, 230, 191], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawStake` (0xc23a5cea) function + pub fn withdraw_stake( + &self, + withdraw_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([194, 58, 92, 234], withdraw_address) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawTo` (0x205c2878) function + pub fn withdraw_to( + &self, + withdraw_address: ::ethers::core::types::Address, + withdraw_amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([32, 92, 40, 120], (withdraw_address, withdraw_amount)) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `AccountDeployed` event + pub fn account_deployed_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AccountDeployedFilter> + { + self.0.event() + } + ///Gets the contract's `BeforeExecution` event + pub fn before_execution_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, BeforeExecutionFilter> + { + self.0.event() + } + ///Gets the contract's `Deposited` event + pub fn deposited_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DepositedFilter> { + self.0.event() + } + ///Gets the contract's `SignatureAggregatorChanged` event + pub fn signature_aggregator_changed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + SignatureAggregatorChangedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeLocked` event + pub fn stake_locked_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeLockedFilter> + { + self.0.event() + } + ///Gets the contract's `StakeUnlocked` event + pub fn stake_unlocked_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeUnlockedFilter> + { + self.0.event() + } + ///Gets the contract's `StakeWithdrawn` event + pub fn stake_withdrawn_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeWithdrawnFilter> + { + self.0.event() + } + ///Gets the contract's `UserOperationEvent` event + pub fn user_operation_event_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UserOperationEventFilter> + { + self.0.event() + } + ///Gets the contract's `UserOperationRevertReason` event + pub fn user_operation_revert_reason_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + UserOperationRevertReasonFilter, + > { + self.0.event() + } + ///Gets the contract's `Withdrawn` event + pub fn withdrawn_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, WithdrawnFilter> { + 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, IEntryPointEvents> + { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for IEntryPoint { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `ExecutionResult` with signature `ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)` and selector `0x8b7ac980` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "ExecutionResult", + abi = "ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)" + )] + pub struct ExecutionResult { + pub pre_op_gas: ::ethers::core::types::U256, + pub paid: ::ethers::core::types::U256, + pub valid_after: u64, + pub valid_until: u64, + pub target_success: bool, + pub target_result: ::ethers::core::types::Bytes, + } + ///Custom Error type `FailedOp` with signature `FailedOp(uint256,string)` and selector `0x220266b6` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "FailedOp", abi = "FailedOp(uint256,string)")] + pub struct FailedOp { + pub op_index: ::ethers::core::types::U256, + pub reason: ::std::string::String, + } + ///Custom Error type `SenderAddressResult` with signature `SenderAddressResult(address)` and selector `0x6ca7b806` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "SenderAddressResult", abi = "SenderAddressResult(address)")] + pub struct SenderAddressResult { + pub sender: ::ethers::core::types::Address, + } + ///Custom Error type `SignatureValidationFailed` with signature `SignatureValidationFailed(address)` and selector `0x86a9f750` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "SignatureValidationFailed", + abi = "SignatureValidationFailed(address)" + )] + pub struct SignatureValidationFailed { + pub aggregator: ::ethers::core::types::Address, + } + ///Custom Error type `ValidationResult` with signature `ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0xe0cff05f` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "ValidationResult", + abi = "ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))" + )] + pub struct ValidationResult { + pub return_info: ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + bool, + u64, + u64, + ::ethers::core::types::Bytes, + ), + pub sender_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub factory_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub paymaster_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + } + ///Custom Error type `ValidationResultWithAggregation` with signature `ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))` and selector `0xfaecb4e4` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "ValidationResultWithAggregation", + abi = "ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))" + )] + pub struct ValidationResultWithAggregation { + pub return_info: ( + ::ethers::core::types::U256, + ::ethers::core::types::U256, + bool, + u64, + u64, + ::ethers::core::types::Bytes, + ), + pub sender_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub factory_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub paymaster_info: (::ethers::core::types::U256, ::ethers::core::types::U256), + pub aggregator_info: ( + ::ethers::core::types::Address, + (::ethers::core::types::U256, ::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 IEntryPointErrors { + ExecutionResult(ExecutionResult), + FailedOp(FailedOp), + SenderAddressResult(SenderAddressResult), + SignatureValidationFailed(SignatureValidationFailed), + ValidationResult(ValidationResult), + ValidationResultWithAggregation(ValidationResultWithAggregation), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for IEntryPointErrors { + 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::ExecutionResult(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::FailedOp(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SenderAddressResult(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SignatureValidationFailed(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ValidationResult(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidationResultWithAggregation(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IEntryPointErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::ExecutionResult(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::FailedOp(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SenderAddressResult(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SignatureValidationFailed(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ValidationResult(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ValidationResultWithAggregation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for IEntryPointErrors { + 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 IEntryPointErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ExecutionResult(element) => ::core::fmt::Display::fmt(element, f), + Self::FailedOp(element) => ::core::fmt::Display::fmt(element, f), + Self::SenderAddressResult(element) => ::core::fmt::Display::fmt(element, f), + Self::SignatureValidationFailed(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidationResult(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidationResultWithAggregation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for IEntryPointErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: ExecutionResult) -> Self { + Self::ExecutionResult(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: FailedOp) -> Self { + Self::FailedOp(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: SenderAddressResult) -> Self { + Self::SenderAddressResult(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: SignatureValidationFailed) -> Self { + Self::SignatureValidationFailed(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: ValidationResult) -> Self { + Self::ValidationResult(value) + } + } + impl ::core::convert::From for IEntryPointErrors { + fn from(value: ValidationResultWithAggregation) -> Self { + Self::ValidationResultWithAggregation(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "AccountDeployed", + abi = "AccountDeployed(bytes32,address,address,address)" + )] + pub struct AccountDeployedFilter { + #[ethevent(indexed)] + pub user_op_hash: [u8; 32], + #[ethevent(indexed)] + pub sender: ::ethers::core::types::Address, + pub factory: ::ethers::core::types::Address, + pub paymaster: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "BeforeExecution", abi = "BeforeExecution()")] + pub struct BeforeExecutionFilter; + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Deposited", abi = "Deposited(address,uint256)")] + pub struct DepositedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub total_deposit: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "SignatureAggregatorChanged", + abi = "SignatureAggregatorChanged(address)" + )] + pub struct SignatureAggregatorChangedFilter { + #[ethevent(indexed)] + pub aggregator: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "StakeLocked", abi = "StakeLocked(address,uint256,uint256)")] + pub struct StakeLockedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub total_staked: ::ethers::core::types::U256, + pub unstake_delay_sec: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "StakeUnlocked", abi = "StakeUnlocked(address,uint256)")] + pub struct StakeUnlockedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_time: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "StakeWithdrawn", + abi = "StakeWithdrawn(address,address,uint256)" + )] + pub struct StakeWithdrawnFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_address: ::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 = "UserOperationEvent", + abi = "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)" + )] + pub struct UserOperationEventFilter { + #[ethevent(indexed)] + pub user_op_hash: [u8; 32], + #[ethevent(indexed)] + pub sender: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub paymaster: ::ethers::core::types::Address, + pub nonce: ::ethers::core::types::U256, + pub success: bool, + pub actual_gas_cost: ::ethers::core::types::U256, + pub actual_gas_used: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "UserOperationRevertReason", + abi = "UserOperationRevertReason(bytes32,address,uint256,bytes)" + )] + pub struct UserOperationRevertReasonFilter { + #[ethevent(indexed)] + pub user_op_hash: [u8; 32], + #[ethevent(indexed)] + pub sender: ::ethers::core::types::Address, + pub nonce: ::ethers::core::types::U256, + pub revert_reason: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Withdrawn", abi = "Withdrawn(address,address,uint256)")] + pub struct WithdrawnFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_address: ::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 IEntryPointEvents { + AccountDeployedFilter(AccountDeployedFilter), + BeforeExecutionFilter(BeforeExecutionFilter), + DepositedFilter(DepositedFilter), + SignatureAggregatorChangedFilter(SignatureAggregatorChangedFilter), + StakeLockedFilter(StakeLockedFilter), + StakeUnlockedFilter(StakeUnlockedFilter), + StakeWithdrawnFilter(StakeWithdrawnFilter), + UserOperationEventFilter(UserOperationEventFilter), + UserOperationRevertReasonFilter(UserOperationRevertReasonFilter), + WithdrawnFilter(WithdrawnFilter), + } + impl ::ethers::contract::EthLogDecode for IEntryPointEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = AccountDeployedFilter::decode_log(log) { + return Ok(IEntryPointEvents::AccountDeployedFilter(decoded)); + } + if let Ok(decoded) = BeforeExecutionFilter::decode_log(log) { + return Ok(IEntryPointEvents::BeforeExecutionFilter(decoded)); + } + if let Ok(decoded) = DepositedFilter::decode_log(log) { + return Ok(IEntryPointEvents::DepositedFilter(decoded)); + } + if let Ok(decoded) = SignatureAggregatorChangedFilter::decode_log(log) { + return Ok(IEntryPointEvents::SignatureAggregatorChangedFilter(decoded)); + } + if let Ok(decoded) = StakeLockedFilter::decode_log(log) { + return Ok(IEntryPointEvents::StakeLockedFilter(decoded)); + } + if let Ok(decoded) = StakeUnlockedFilter::decode_log(log) { + return Ok(IEntryPointEvents::StakeUnlockedFilter(decoded)); + } + if let Ok(decoded) = StakeWithdrawnFilter::decode_log(log) { + return Ok(IEntryPointEvents::StakeWithdrawnFilter(decoded)); + } + if let Ok(decoded) = UserOperationEventFilter::decode_log(log) { + return Ok(IEntryPointEvents::UserOperationEventFilter(decoded)); + } + if let Ok(decoded) = UserOperationRevertReasonFilter::decode_log(log) { + return Ok(IEntryPointEvents::UserOperationRevertReasonFilter(decoded)); + } + if let Ok(decoded) = WithdrawnFilter::decode_log(log) { + return Ok(IEntryPointEvents::WithdrawnFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for IEntryPointEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AccountDeployedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::BeforeExecutionFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::DepositedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::SignatureAggregatorChangedFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::StakeLockedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::StakeUnlockedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::StakeWithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::UserOperationEventFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::UserOperationRevertReasonFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::WithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: AccountDeployedFilter) -> Self { + Self::AccountDeployedFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: BeforeExecutionFilter) -> Self { + Self::BeforeExecutionFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: DepositedFilter) -> Self { + Self::DepositedFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: SignatureAggregatorChangedFilter) -> Self { + Self::SignatureAggregatorChangedFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: StakeLockedFilter) -> Self { + Self::StakeLockedFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: StakeUnlockedFilter) -> Self { + Self::StakeUnlockedFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: StakeWithdrawnFilter) -> Self { + Self::StakeWithdrawnFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: UserOperationEventFilter) -> Self { + Self::UserOperationEventFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: UserOperationRevertReasonFilter) -> Self { + Self::UserOperationRevertReasonFilter(value) + } + } + impl ::core::convert::From for IEntryPointEvents { + fn from(value: WithdrawnFilter) -> Self { + Self::WithdrawnFilter(value) + } + } + ///Container type for all input parameters for the `addStake` function with signature `addStake(uint32)` and selector `0x0396cb60` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "addStake", abi = "addStake(uint32)")] + pub struct AddStakeCall { + pub unstake_delay_sec: u32, + } + ///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 account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `depositTo` function with signature `depositTo(address)` and selector `0xb760faf9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "depositTo", abi = "depositTo(address)")] + pub struct DepositToCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getDepositInfo", abi = "getDepositInfo(address)")] + pub struct GetDepositInfoCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getNonce` function with signature `getNonce(address,uint192)` and selector `0x35567e1a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getNonce", abi = "getNonce(address,uint192)")] + pub struct GetNonceCall { + pub sender: ::ethers::core::types::Address, + pub key: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getSenderAddress` function with signature `getSenderAddress(bytes)` and selector `0x9b249f69` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getSenderAddress", abi = "getSenderAddress(bytes)")] + pub struct GetSenderAddressCall { + pub init_code: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `getUserOpHash` function with signature `getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xa6193531` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getUserOpHash", + abi = "getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" + )] + pub struct GetUserOpHashCall { + pub user_op: UserOperation, + } + ///Container type for all input parameters for the `handleAggregatedOps` function with signature `handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)` and selector `0x4b1d7cf5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "handleAggregatedOps", + abi = "handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)" + )] + pub struct HandleAggregatedOpsCall { + pub ops_per_aggregator: ::std::vec::Vec, + pub beneficiary: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `handleOps` function with signature `handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)` and selector `0x1fad948c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "handleOps", + abi = "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)" + )] + pub struct HandleOpsCall { + pub ops: ::std::vec::Vec, + pub beneficiary: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `incrementNonce` function with signature `incrementNonce(uint192)` and selector `0x0bd28e3b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "incrementNonce", abi = "incrementNonce(uint192)")] + pub struct IncrementNonceCall { + pub key: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `simulateHandleOp` function with signature `simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)` and selector `0xd6383f94` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "simulateHandleOp", + abi = "simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)" + )] + pub struct SimulateHandleOpCall { + pub op: UserOperation, + pub target: ::ethers::core::types::Address, + pub target_call_data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `simulateValidation` function with signature `simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xee219423` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "simulateValidation", + abi = "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" + )] + pub struct SimulateValidationCall { + pub user_op: UserOperation, + } + ///Container type for all input parameters for the `unlockStake` function with signature `unlockStake()` and selector `0xbb9fe6bf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "unlockStake", abi = "unlockStake()")] + pub struct UnlockStakeCall; + ///Container type for all input parameters for the `withdrawStake` function with signature `withdrawStake(address)` and selector `0xc23a5cea` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "withdrawStake", abi = "withdrawStake(address)")] + pub struct WithdrawStakeCall { + pub withdraw_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `withdrawTo` function with signature `withdrawTo(address,uint256)` and selector `0x205c2878` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "withdrawTo", abi = "withdrawTo(address,uint256)")] + pub struct WithdrawToCall { + pub withdraw_address: ::ethers::core::types::Address, + pub withdraw_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 IEntryPointCalls { + AddStake(AddStakeCall), + BalanceOf(BalanceOfCall), + DepositTo(DepositToCall), + GetDepositInfo(GetDepositInfoCall), + GetNonce(GetNonceCall), + GetSenderAddress(GetSenderAddressCall), + GetUserOpHash(GetUserOpHashCall), + HandleAggregatedOps(HandleAggregatedOpsCall), + HandleOps(HandleOpsCall), + IncrementNonce(IncrementNonceCall), + SimulateHandleOp(SimulateHandleOpCall), + SimulateValidation(SimulateValidationCall), + UnlockStake(UnlockStakeCall), + WithdrawStake(WithdrawStakeCall), + WithdrawTo(WithdrawToCall), + } + impl ::ethers::core::abi::AbiDecode for IEntryPointCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::AddStake(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::DepositTo(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetDepositInfo(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::GetNonce(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetSenderAddress(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::GetUserOpHash(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::HandleAggregatedOps(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::HandleOps(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IncrementNonce(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SimulateHandleOp(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SimulateValidation(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::UnlockStake(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::WithdrawStake(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::WithdrawTo(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IEntryPointCalls { + fn encode(self) -> Vec { + match self { + Self::AddStake(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DepositTo(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetDepositInfo(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetNonce(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetSenderAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetUserOpHash(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::HandleAggregatedOps(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::HandleOps(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IncrementNonce(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SimulateHandleOp(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SimulateValidation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UnlockStake(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::WithdrawStake(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::WithdrawTo(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for IEntryPointCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddStake(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::DepositTo(element) => ::core::fmt::Display::fmt(element, f), + Self::GetDepositInfo(element) => ::core::fmt::Display::fmt(element, f), + Self::GetNonce(element) => ::core::fmt::Display::fmt(element, f), + Self::GetSenderAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::GetUserOpHash(element) => ::core::fmt::Display::fmt(element, f), + Self::HandleAggregatedOps(element) => ::core::fmt::Display::fmt(element, f), + Self::HandleOps(element) => ::core::fmt::Display::fmt(element, f), + Self::IncrementNonce(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateHandleOp(element) => ::core::fmt::Display::fmt(element, f), + Self::SimulateValidation(element) => ::core::fmt::Display::fmt(element, f), + Self::UnlockStake(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawStake(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawTo(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: AddStakeCall) -> Self { + Self::AddStake(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: DepositToCall) -> Self { + Self::DepositTo(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: GetDepositInfoCall) -> Self { + Self::GetDepositInfo(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: GetNonceCall) -> Self { + Self::GetNonce(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: GetSenderAddressCall) -> Self { + Self::GetSenderAddress(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: GetUserOpHashCall) -> Self { + Self::GetUserOpHash(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: HandleAggregatedOpsCall) -> Self { + Self::HandleAggregatedOps(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: HandleOpsCall) -> Self { + Self::HandleOps(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: IncrementNonceCall) -> Self { + Self::IncrementNonce(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: SimulateHandleOpCall) -> Self { + Self::SimulateHandleOp(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: SimulateValidationCall) -> Self { + Self::SimulateValidation(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: UnlockStakeCall) -> Self { + Self::UnlockStake(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: WithdrawStakeCall) -> Self { + Self::WithdrawStake(value) + } + } + impl ::core::convert::From for IEntryPointCalls { + fn from(value: WithdrawToCall) -> Self { + Self::WithdrawTo(value) + } + } + ///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 `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetDepositInfoReturn { + pub info: DepositInfo, + } + ///Container type for all return fields from the `getNonce` function with signature `getNonce(address,uint192)` and selector `0x35567e1a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetNonceReturn { + pub nonce: ::ethers::core::types::U256, + } + ///Container type for all return fields from the `getUserOpHash` function with signature `getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xa6193531` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetUserOpHashReturn(pub [u8; 32]); + ///`UserOpsPerAggregator((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct UserOpsPerAggregator { + pub user_ops: ::std::vec::Vec, + pub aggregator: ::ethers::core::types::Address, + pub signature: ::ethers::core::types::Bytes, + } +} diff --git a/xmtp_id/src/bindings/i_nonce_manager.rs b/xmtp_id/src/bindings/i_nonce_manager.rs new file mode 100644 index 000000000..03108d458 --- /dev/null +++ b/xmtp_id/src/bindings/i_nonce_manager.rs @@ -0,0 +1,247 @@ +pub use i_nonce_manager::*; +/// 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_nonce_manager { + #[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("getNonce"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getNonce"), + 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("key"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(192usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint192"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("nonce"), + 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("incrementNonce"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("incrementNonce"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(192usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint192"), + ), + },], + 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 INONCEMANAGER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct INonceManager(::ethers::contract::Contract); + impl ::core::clone::Clone for INonceManager { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for INonceManager { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for INonceManager { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for INonceManager { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(INonceManager)) + .field(&self.address()) + .finish() + } + } + impl INonceManager { + /// 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(), + INONCEMANAGER_ABI.clone(), + client, + )) + } + ///Calls the contract's `getNonce` (0x35567e1a) function + pub fn get_nonce( + &self, + sender: ::ethers::core::types::Address, + key: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([53, 86, 126, 26], (sender, key)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `incrementNonce` (0x0bd28e3b) function + pub fn increment_nonce( + &self, + key: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([11, 210, 142, 59], key) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for INonceManager + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `getNonce` function with signature `getNonce(address,uint192)` and selector `0x35567e1a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getNonce", abi = "getNonce(address,uint192)")] + pub struct GetNonceCall { + pub sender: ::ethers::core::types::Address, + pub key: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `incrementNonce` function with signature `incrementNonce(uint192)` and selector `0x0bd28e3b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "incrementNonce", abi = "incrementNonce(uint192)")] + pub struct IncrementNonceCall { + pub key: ::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 INonceManagerCalls { + GetNonce(GetNonceCall), + IncrementNonce(IncrementNonceCall), + } + impl ::ethers::core::abi::AbiDecode for INonceManagerCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::GetNonce(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IncrementNonce(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for INonceManagerCalls { + fn encode(self) -> Vec { + match self { + Self::GetNonce(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IncrementNonce(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for INonceManagerCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::GetNonce(element) => ::core::fmt::Display::fmt(element, f), + Self::IncrementNonce(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for INonceManagerCalls { + fn from(value: GetNonceCall) -> Self { + Self::GetNonce(value) + } + } + impl ::core::convert::From for INonceManagerCalls { + fn from(value: IncrementNonceCall) -> Self { + Self::IncrementNonce(value) + } + } + ///Container type for all return fields from the `getNonce` function with signature `getNonce(address,uint192)` and selector `0x35567e1a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetNonceReturn { + pub nonce: ::ethers::core::types::U256, + } +} diff --git a/xmtp_id/src/bindings/i_stake_manager.rs b/xmtp_id/src/bindings/i_stake_manager.rs new file mode 100644 index 000000000..c9552c1eb --- /dev/null +++ b/xmtp_id/src/bindings/i_stake_manager.rs @@ -0,0 +1,855 @@ +pub use i_stake_manager::*; +/// 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_stake_manager { + 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("addStake"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("addStake"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_unstakeDelaySec"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint32"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::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::borrow::ToOwned::to_owned("account"), + 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("depositTo"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("depositTo"), + 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"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getDepositInfo"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getDepositInfo"), + 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"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("info"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(112usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Uint(112usize), + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Uint(48usize), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IStakeManager.DepositInfo", + ), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("unlockStake"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("unlockStake"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawStake"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("withdrawStake"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("withdrawAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address payable"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("withdrawTo"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("withdrawTo"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("withdrawAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address payable"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("withdrawAmount"), + 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("Deposited"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Deposited"), + 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("totalDeposit"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeLocked"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("StakeLocked"), + 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("totalStaked"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("unstakeDelaySec"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeUnlocked"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("StakeUnlocked"), + 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("withdrawTime"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), + 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("withdrawAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::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("Withdrawn"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Withdrawn"), + 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("withdrawAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::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 ISTAKEMANAGER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct IStakeManager(::ethers::contract::Contract); + impl ::core::clone::Clone for IStakeManager { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for IStakeManager { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for IStakeManager { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for IStakeManager { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(IStakeManager)) + .field(&self.address()) + .finish() + } + } + impl IStakeManager { + /// 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(), + ISTAKEMANAGER_ABI.clone(), + client, + )) + } + ///Calls the contract's `addStake` (0x0396cb60) function + pub fn add_stake( + &self, + unstake_delay_sec: u32, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([3, 150, 203, 96], unstake_delay_sec) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `depositTo` (0xb760faf9) function + pub fn deposit_to( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([183, 96, 250, 249], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getDepositInfo` (0x5287ce12) function + pub fn get_deposit_info( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([82, 135, 206, 18], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `unlockStake` (0xbb9fe6bf) function + pub fn unlock_stake(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([187, 159, 230, 191], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawStake` (0xc23a5cea) function + pub fn withdraw_stake( + &self, + withdraw_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([194, 58, 92, 234], withdraw_address) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawTo` (0x205c2878) function + pub fn withdraw_to( + &self, + withdraw_address: ::ethers::core::types::Address, + withdraw_amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([32, 92, 40, 120], (withdraw_address, withdraw_amount)) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `Deposited` event + pub fn deposited_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DepositedFilter> { + self.0.event() + } + ///Gets the contract's `StakeLocked` event + pub fn stake_locked_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeLockedFilter> + { + self.0.event() + } + ///Gets the contract's `StakeUnlocked` event + pub fn stake_unlocked_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeUnlockedFilter> + { + self.0.event() + } + ///Gets the contract's `StakeWithdrawn` event + pub fn stake_withdrawn_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeWithdrawnFilter> + { + self.0.event() + } + ///Gets the contract's `Withdrawn` event + pub fn withdrawn_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, WithdrawnFilter> { + 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, IStakeManagerEvents> + { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for IStakeManager + { + 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 = "Deposited", abi = "Deposited(address,uint256)")] + pub struct DepositedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub total_deposit: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "StakeLocked", abi = "StakeLocked(address,uint256,uint256)")] + pub struct StakeLockedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub total_staked: ::ethers::core::types::U256, + pub unstake_delay_sec: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "StakeUnlocked", abi = "StakeUnlocked(address,uint256)")] + pub struct StakeUnlockedFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_time: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent( + name = "StakeWithdrawn", + abi = "StakeWithdrawn(address,address,uint256)" + )] + pub struct StakeWithdrawnFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_address: ::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 = "Withdrawn", abi = "Withdrawn(address,address,uint256)")] + pub struct WithdrawnFilter { + #[ethevent(indexed)] + pub account: ::ethers::core::types::Address, + pub withdraw_address: ::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 IStakeManagerEvents { + DepositedFilter(DepositedFilter), + StakeLockedFilter(StakeLockedFilter), + StakeUnlockedFilter(StakeUnlockedFilter), + StakeWithdrawnFilter(StakeWithdrawnFilter), + WithdrawnFilter(WithdrawnFilter), + } + impl ::ethers::contract::EthLogDecode for IStakeManagerEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = DepositedFilter::decode_log(log) { + return Ok(IStakeManagerEvents::DepositedFilter(decoded)); + } + if let Ok(decoded) = StakeLockedFilter::decode_log(log) { + return Ok(IStakeManagerEvents::StakeLockedFilter(decoded)); + } + if let Ok(decoded) = StakeUnlockedFilter::decode_log(log) { + return Ok(IStakeManagerEvents::StakeUnlockedFilter(decoded)); + } + if let Ok(decoded) = StakeWithdrawnFilter::decode_log(log) { + return Ok(IStakeManagerEvents::StakeWithdrawnFilter(decoded)); + } + if let Ok(decoded) = WithdrawnFilter::decode_log(log) { + return Ok(IStakeManagerEvents::WithdrawnFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for IStakeManagerEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DepositedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::StakeLockedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::StakeUnlockedFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::StakeWithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IStakeManagerEvents { + fn from(value: DepositedFilter) -> Self { + Self::DepositedFilter(value) + } + } + impl ::core::convert::From for IStakeManagerEvents { + fn from(value: StakeLockedFilter) -> Self { + Self::StakeLockedFilter(value) + } + } + impl ::core::convert::From for IStakeManagerEvents { + fn from(value: StakeUnlockedFilter) -> Self { + Self::StakeUnlockedFilter(value) + } + } + impl ::core::convert::From for IStakeManagerEvents { + fn from(value: StakeWithdrawnFilter) -> Self { + Self::StakeWithdrawnFilter(value) + } + } + impl ::core::convert::From for IStakeManagerEvents { + fn from(value: WithdrawnFilter) -> Self { + Self::WithdrawnFilter(value) + } + } + ///Container type for all input parameters for the `addStake` function with signature `addStake(uint32)` and selector `0x0396cb60` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "addStake", abi = "addStake(uint32)")] + pub struct AddStakeCall { + pub unstake_delay_sec: u32, + } + ///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 account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `depositTo` function with signature `depositTo(address)` and selector `0xb760faf9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "depositTo", abi = "depositTo(address)")] + pub struct DepositToCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getDepositInfo", abi = "getDepositInfo(address)")] + pub struct GetDepositInfoCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `unlockStake` function with signature `unlockStake()` and selector `0xbb9fe6bf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "unlockStake", abi = "unlockStake()")] + pub struct UnlockStakeCall; + ///Container type for all input parameters for the `withdrawStake` function with signature `withdrawStake(address)` and selector `0xc23a5cea` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "withdrawStake", abi = "withdrawStake(address)")] + pub struct WithdrawStakeCall { + pub withdraw_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `withdrawTo` function with signature `withdrawTo(address,uint256)` and selector `0x205c2878` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "withdrawTo", abi = "withdrawTo(address,uint256)")] + pub struct WithdrawToCall { + pub withdraw_address: ::ethers::core::types::Address, + pub withdraw_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 IStakeManagerCalls { + AddStake(AddStakeCall), + BalanceOf(BalanceOfCall), + DepositTo(DepositToCall), + GetDepositInfo(GetDepositInfoCall), + UnlockStake(UnlockStakeCall), + WithdrawStake(WithdrawStakeCall), + WithdrawTo(WithdrawToCall), + } + impl ::ethers::core::abi::AbiDecode for IStakeManagerCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::AddStake(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::DepositTo(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetDepositInfo(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::UnlockStake(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::WithdrawStake(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::WithdrawTo(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IStakeManagerCalls { + fn encode(self) -> Vec { + match self { + Self::AddStake(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DepositTo(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetDepositInfo(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::UnlockStake(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::WithdrawStake(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::WithdrawTo(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for IStakeManagerCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddStake(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::DepositTo(element) => ::core::fmt::Display::fmt(element, f), + Self::GetDepositInfo(element) => ::core::fmt::Display::fmt(element, f), + Self::UnlockStake(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawStake(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawTo(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IStakeManagerCalls { + fn from(value: AddStakeCall) -> Self { + Self::AddStake(value) + } + } + impl ::core::convert::From for IStakeManagerCalls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for IStakeManagerCalls { + fn from(value: DepositToCall) -> Self { + Self::DepositTo(value) + } + } + impl ::core::convert::From for IStakeManagerCalls { + fn from(value: GetDepositInfoCall) -> Self { + Self::GetDepositInfo(value) + } + } + impl ::core::convert::From for IStakeManagerCalls { + fn from(value: UnlockStakeCall) -> Self { + Self::UnlockStake(value) + } + } + impl ::core::convert::From for IStakeManagerCalls { + fn from(value: WithdrawStakeCall) -> Self { + Self::WithdrawStake(value) + } + } + impl ::core::convert::From for IStakeManagerCalls { + fn from(value: WithdrawToCall) -> Self { + Self::WithdrawTo(value) + } + } + ///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 `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetDepositInfoReturn { + pub info: DepositInfo, + } +} diff --git a/xmtp_id/src/bindings/ierc721_token_receiver.rs b/xmtp_id/src/bindings/ierc721_token_receiver.rs new file mode 100644 index 000000000..5be56a4b6 --- /dev/null +++ b/xmtp_id/src/bindings/ierc721_token_receiver.rs @@ -0,0 +1,165 @@ +pub use ierc721_token_receiver::*; +/// 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 ierc721_token_receiver { + #[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("onERC721Received"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("onERC721Received"), + 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"), + ), + }, + ::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"), + ), + }, + ], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + },], + 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 IERC721TOKENRECEIVER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct IERC721TokenReceiver(::ethers::contract::Contract); + impl ::core::clone::Clone for IERC721TokenReceiver { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for IERC721TokenReceiver { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for IERC721TokenReceiver { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for IERC721TokenReceiver { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(IERC721TokenReceiver)) + .field(&self.address()) + .finish() + } + } + impl IERC721TokenReceiver { + /// 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(), + IERC721TOKENRECEIVER_ABI.clone(), + client, + )) + } + ///Calls the contract's `onERC721Received` (0x150b7a02) function + pub fn on_erc721_received( + &self, + p0: ::ethers::core::types::Address, + p1: ::ethers::core::types::Address, + p2: ::ethers::core::types::U256, + p3: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([21, 11, 122, 2], (p0, p1, p2, p3)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for IERC721TokenReceiver + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `onERC721Received` function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "onERC721Received", + abi = "onERC721Received(address,address,uint256,bytes)" + )] + pub struct OnERC721ReceivedCall( + pub ::ethers::core::types::Address, + pub ::ethers::core::types::Address, + pub ::ethers::core::types::U256, + pub ::ethers::core::types::Bytes, + ); + ///Container type for all return fields from the `onERC721Received` function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct OnERC721ReceivedReturn(pub [u8; 4]); +} diff --git a/xmtp_id/src/bindings/lib_clone.rs b/xmtp_id/src/bindings/lib_clone.rs new file mode 100644 index 000000000..df0f5892b --- /dev/null +++ b/xmtp_id/src/bindings/lib_clone.rs @@ -0,0 +1,294 @@ +pub use lib_clone::*; +/// 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_clone { + #[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("DeploymentFailed"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("DeploymentFailed"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ETHTransferFailed"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ETHTransferFailed"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("SaltDoesNotStartWith"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("SaltDoesNotStartWith",), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static LIBCLONE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 +\xDE\xA0\xC2\x9C\x15\xB7e\x0E\xEC\xDA\xEA1=\xE6\x98\x87\xD5\x10\xF2\xB5$\x03Q\xEB\xF7\t\xB7B0\xB5ldsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static LIBCLONE_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 +\xDE\xA0\xC2\x9C\x15\xB7e\x0E\xEC\xDA\xEA1=\xE6\x98\x87\xD5\x10\xF2\xB5$\x03Q\xEB\xF7\t\xB7B0\xB5ldsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static LIBCLONE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct LibClone(::ethers::contract::Contract); + impl ::core::clone::Clone for LibClone { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for LibClone { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for LibClone { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for LibClone { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(LibClone)) + .field(&self.address()) + .finish() + } + } + impl LibClone { + /// 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(), + LIBCLONE_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( + LIBCLONE_ABI.clone(), + LIBCLONE_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 LibClone { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `DeploymentFailed` with signature `DeploymentFailed()` and selector `0x30116425` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "DeploymentFailed", abi = "DeploymentFailed()")] + pub struct DeploymentFailed; + ///Custom Error type `ETHTransferFailed` with signature `ETHTransferFailed()` and selector `0xb12d13eb` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "ETHTransferFailed", abi = "ETHTransferFailed()")] + pub struct ETHTransferFailed; + ///Custom Error type `SaltDoesNotStartWith` with signature `SaltDoesNotStartWith()` and selector `0x0c4549ef` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "SaltDoesNotStartWith", abi = "SaltDoesNotStartWith()")] + pub struct SaltDoesNotStartWith; + ///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 LibCloneErrors { + DeploymentFailed(DeploymentFailed), + ETHTransferFailed(ETHTransferFailed), + SaltDoesNotStartWith(SaltDoesNotStartWith), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for LibCloneErrors { + 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::DeploymentFailed(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ETHTransferFailed(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SaltDoesNotStartWith(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LibCloneErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::DeploymentFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ETHTransferFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SaltDoesNotStartWith(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for LibCloneErrors { + 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 LibCloneErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::DeploymentFailed(element) => ::core::fmt::Display::fmt(element, f), + Self::ETHTransferFailed(element) => ::core::fmt::Display::fmt(element, f), + Self::SaltDoesNotStartWith(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for LibCloneErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for LibCloneErrors { + fn from(value: DeploymentFailed) -> Self { + Self::DeploymentFailed(value) + } + } + impl ::core::convert::From for LibCloneErrors { + fn from(value: ETHTransferFailed) -> Self { + Self::ETHTransferFailed(value) + } + } + impl ::core::convert::From for LibCloneErrors { + fn from(value: SaltDoesNotStartWith) -> Self { + Self::SaltDoesNotStartWith(value) + } + } +} diff --git a/xmtp_id/src/bindings/lib_string.rs b/xmtp_id/src/bindings/lib_string.rs new file mode 100644 index 000000000..75c86f646 --- /dev/null +++ b/xmtp_id/src/bindings/lib_string.rs @@ -0,0 +1,260 @@ +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: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("HexLengthInsufficient"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("HexLengthInsufficient",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("TooBigForSmallString"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("TooBigForSmallString",), + inputs: ::std::vec![], + },], + ), + ]), + 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"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 T\xF2H\x14\x86f*0e6]?\x16&\xBE{o\x9F\x86a\x0E\x1C$_\x1Cx1a\xE2\xC3b\xE7dsolcC\0\x08\x17\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"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 T\xF2H\x14\x86f*0e6]?\x16&\xBE{o\x9F\x86a\x0E\x1C$_\x1Cx1a\xE2\xC3b\xE7dsolcC\0\x08\x17\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()) + } + } + ///Custom Error type `HexLengthInsufficient` with signature `HexLengthInsufficient()` and selector `0x2194895a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "HexLengthInsufficient", abi = "HexLengthInsufficient()")] + pub struct HexLengthInsufficient; + ///Custom Error type `TooBigForSmallString` with signature `TooBigForSmallString()` and selector `0xec92f9a3` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "TooBigForSmallString", abi = "TooBigForSmallString()")] + pub struct TooBigForSmallString; + ///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 LibStringErrors { + HexLengthInsufficient(HexLengthInsufficient), + TooBigForSmallString(TooBigForSmallString), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for LibStringErrors { + 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::HexLengthInsufficient(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::TooBigForSmallString(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for LibStringErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::HexLengthInsufficient(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TooBigForSmallString(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for LibStringErrors { + 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 LibStringErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::HexLengthInsufficient(element) => ::core::fmt::Display::fmt(element, f), + Self::TooBigForSmallString(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for LibStringErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for LibStringErrors { + fn from(value: HexLengthInsufficient) -> Self { + Self::HexLengthInsufficient(value) + } + } + impl ::core::convert::From for LibStringErrors { + fn from(value: TooBigForSmallString) -> Self { + Self::TooBigForSmallString(value) + } + } +} diff --git a/xmtp_id/src/bindings/mock_coinbase_smart_wallet.rs b/xmtp_id/src/bindings/mock_coinbase_smart_wallet.rs new file mode 100644 index 000000000..e93d52b6c --- /dev/null +++ b/xmtp_id/src/bindings/mock_coinbase_smart_wallet.rs @@ -0,0 +1,2710 @@ +pub use mock_coinbase_smart_wallet::*; +/// 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_coinbase_smart_wallet { + 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![], + }), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("REPLAYABLE_NONCE_KEY"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("REPLAYABLE_NONCE_KEY",), + 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("addOwnerAddress"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("addOwnerAddress"), + 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"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + 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("y"), + 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("canSkipChainIdValidation"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("canSkipChainIdValidation",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("functionSelector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + },], + 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::Pure, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("domainSeparator"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("domainSeparator"), + 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("eip712Domain"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("eip712Domain"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("fields"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(1usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes1"), + ), + }, + ::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("version"), + 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("chainId"), + 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("verifyingContract"), + 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("salt"), + 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("extensions"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::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("entryPoint"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("entryPoint"), + 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("execute"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("execute"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("target"), + 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("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::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("executeBatch"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("executeBatch"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("calls"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct CoinbaseSmartWallet.Call[]", + ), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + }, + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("executeBatch"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("filler"), + 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("calls"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize + ), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ], + ), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct CoinbaseSmartWallet.Call[]", + ), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("executeWithoutChainIdValidation"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("executeWithoutChainIdValidation",), + inputs: ::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"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("getUserOpHashWithoutChainId"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getUserOpHashWithoutChainId",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOp"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation"), + ), + },], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOpHash"), + 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("implementation"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("implementation"), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("$"), + 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("owners"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::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::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("isOwnerAddress"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerAddress"), + 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"), + ), + },], + 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("isOwnerBytes"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerBytes"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("account"), + 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::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("isOwnerPublicKey"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerPublicKey"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + 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("y"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + 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("isValidSignature"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isValidSignature"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hash"), + 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("signature"), + 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("result"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), + 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("ownerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ownerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("proxiableUUID"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), + 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("removeOwnerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("removeOwnerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("replaySafeHash"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("replaySafeHash"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("hash"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + 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("upgradeToAndCall"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newImplementation"), + 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("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::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateUserOp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateUserOp"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOp"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOpHash"), + 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("missingAccountFunds",), + 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("validationData"), + 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, + },], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AddOwner"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("AddOwner"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("index"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("RemoveOwner"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("RemoveOwner"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("index"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Upgraded"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Upgraded"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("implementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + },], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AlreadyOwner"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("AlreadyOwner"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Initialized"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Initialized"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidNonceKey"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidNonceKey"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("key"), + 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("InvalidOwnerBytesLength"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("SelectorNotAllowed"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("SelectorNotAllowed"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("Unauthorized"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Unauthorized"), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UpgradeFailed"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UpgradeFailed"), + inputs: ::std::vec![], + },], + ), + ]), + receive: true, + fallback: true, + } + } + ///The parsed JSON ABI of the contract. + pub static MOCKCOINBASESMARTWALLET_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\xA0`@R0`\x80R4\x80\x15b\0\0\x15W`\0\x80\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\0-W\x90PP`@\x80Q`\0` \x82\x01R\x91\x92P\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81`\0\x81Q\x81\x10b\0\0wWb\0\0wb\0\x03\x8DV[` \x90\x81\x02\x91\x90\x91\x01\x01Rb\0\0\x8D\x81b\0\0\xA7V[P`\0`\0\x80Q` b\08\xEE\x839\x81Q\x91RUb\0\x05\xC3V[`\0[\x81Q\x81\x10\x15b\0\x029W\x81\x81\x81Q\x81\x10b\0\0\xC9Wb\0\0\xC9b\0\x03\x8DV[` \x02` \x01\x01QQ` \x14\x15\x80\x15b\0\x01\x01WP\x81\x81\x81Q\x81\x10b\0\0\xF3Wb\0\0\xF3b\0\x03\x8DV[` \x02` \x01\x01QQ`@\x14\x15[\x15b\0\x01IW\x81\x81\x81Q\x81\x10b\0\x01\x1CWb\0\x01\x1Cb\0\x03\x8DV[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01b\0\x01@\x91\x90b\0\x03\xC9V[`@Q\x80\x91\x03\x90\xFD[\x81\x81\x81Q\x81\x10b\0\x01^Wb\0\x01^b\0\x03\x8DV[` \x02` \x01\x01QQ` \x14\x80\x15b\0\x01\xA6WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10b\0\x01\x91Wb\0\x01\x91b\0\x03\x8DV[` \x02` \x01\x01Qb\0\x01\xA4\x90b\0\x03\xFEV[\x11[\x15b\0\x01\xE5W\x81\x81\x81Q\x81\x10b\0\x01\xC1Wb\0\x01\xC1b\0\x03\x8DV[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01b\0\x01@\x91\x90b\0\x03\xC9V[b\0\x020\x82\x82\x81Q\x81\x10b\0\x01\xFEWb\0\x01\xFEb\0\x03\x8DV[` \x02` \x01\x01Qb\0\x02\x16b\0\x02=` \x1B` \x1CV[\x80T\x90`\0b\0\x02&\x83b\0\x04&V[\x90\x91UPb\0\x02PV[`\x01\x01b\0\0\xAAV[PPV[`\0\x80Q` b\08\xEE\x839\x81Q\x91R\x90V[b\0\x02[\x82b\0\x039V[\x15b\0\x02~W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01b\0\x01@\x91\x90b\0\x03\xC9V[`\x01`\0\x80Q` b\08\xEE\x839\x81Q\x91R`\x02\x01\x83`@Qb\0\x02\xA3\x91\x90b\0\x04NV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81b\0\x02\xDB`\0\x80Q` b\08\xEE\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90b\0\x02\xFA\x90\x82b\0\x04\xF7V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qb\0\x03-\x91\x90b\0\x03\xC9V[`@Q\x80\x91\x03\x90\xA2PPV[`\0`\0\x80Q` b\08\xEE\x839\x81Q\x91R`\x02\x01\x82`@Qb\0\x03^\x91\x90b\0\x04NV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15b\0\x03\xC0W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x03\xA6V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Rb\0\x03\xEA\x81`@\x85\x01` \x87\x01b\0\x03\xA3V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15b\0\x04 W`\0\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\0`\x01\x82\x01b\0\x04GWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[`\0\x82Qb\0\x04b\x81\x84` \x87\x01b\0\x03\xA3V[\x91\x90\x91\x01\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x04\x81W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x04 WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[`\x1F\x82\x11\x15b\0\x04\xF2W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x04\xCDWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x04\xEEW\x82\x81U`\x01\x01b\0\x04\xD9V[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x05\x13Wb\0\x05\x13b\0\x03wV[b\0\x05+\x81b\0\x05$\x84Tb\0\x04lV[\x84b\0\x04\xA2V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x05cW`\0\x84\x15b\0\x05JWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x04\xEEV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x05\x94W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x05sV[P\x85\x82\x10\x15b\0\x05\xB3W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x80Qa3\x08b\0\x05\xE6`\09`\0\x81\x81a\x08L\x01Ra\t\x83\x01Ra3\x08`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co-\xE7\x0E\x11a\0\xD1W\x80c\xA2\xE1\xA8\xD8\x11a\0\x8AW\x80c\xBFk\xA1\xFC\x11a\0dW\x80c\xBFk\xA1\xFC\x14a\x04\\W\x80c\xCE\x15\x06\xBE\x14a\x04oW\x80c\xD9H\xFD.\x14a\x04\x8FW\x80c\xF6\x98\xDA%\x14a\x04\xB1Wa\x01qV[\x80c\xA2\xE1\xA8\xD8\x14a\x04\x02W\x80c\xB0\xD6\x91\xFE\x14a\x04\"W\x80c\xB6\x1D'\xF6\x14a\x04IWa\x01qV[\x80co-\xE7\x0E\x14a\x03DW\x80cr\xDE;Z\x14a\x03WW\x80c\x84\xB0\x19n\x14a\x03wW\x80c\x88\xCEL|\x14a\x03\x9FW\x80c\x8E\xA6\x90)\x14a\x03\xB5W\x80c\x9F\x9B\xCB4\x14a\x03\xE2Wa\x01qV[\x80c:\x87\x1C\xDD\x11a\x01#W\x80c:\x87\x1C\xDD\x14a\x02\x80W\x80cO\x1E\xF2\x86\x14a\x02\xA1W\x80cOn\x7F\"\x14a\x02\xB4W\x80cR\xD1\x90-\x14a\x02\xD4W\x80cW\x7F<\xBF\x14a\x02\xE9W\x80c\\`\xDA\x1B\x14a\x02\xFCWa\x01qV[\x80c\x06j\x1E\xB7\x14a\x01\x9FW\x80c\x0F\x0F?$\x14a\x01\xD4W\x80c\x16&\xBA~\x14a\x01\xF4W\x80c\x1C\xA59?\x14a\x02-W\x80c)V^;\x14a\x02MW\x80c4\xFC\xD5\xBE\x14a\x02mWa\x01qV[6a\x01qW\0[`\x005`\xE0\x1Cc\xBC\x19|\x81\x81\x14c\xF2:na\x82\x14\x17c\x15\x0Bz\x02\x82\x14\x17\x15a\x01\x9DW\x80` R` `<\xF3[\0[4\x80\x15a\x01\xABW`\0\x80\xFD[Pa\x01\xBFa\x01\xBA6`\x04a'\xCFV[a\x04\xC6V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xE0W`\0\x80\xFD[Pa\x01\x9Da\x01\xEF6`\x04a(\rV[a\x055V[4\x80\x15a\x02\0W`\0\x80\xFD[Pa\x02\x14a\x02\x0F6`\x04a(pV[a\x05mV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01\xCBV[4\x80\x15a\x029W`\0\x80\xFD[Pa\x01\xBFa\x02H6`\x04a)\xA6V[a\x05\xA7V[4\x80\x15a\x02YW`\0\x80\xFD[Pa\x01\x9Da\x02h6`\x04a'\xCFV[a\x05\xE2V[a\x01\x9Da\x02{6`\x04a*\x1EV[a\x06\x0BV[a\x02\x93a\x02\x8E6`\x04a*xV[a\x07\x0FV[`@Q\x90\x81R` \x01a\x01\xCBV[a\x01\x9Da\x02\xAF6`\x04a*\xC5V[a\x08JV[4\x80\x15a\x02\xC0W`\0\x80\xFD[Pa\x02\x93a\x02\xCF6`\x04a*\xFEV[a\t.V[4\x80\x15a\x02\xE0W`\0\x80\xFD[Pa\x02\x93a\t\x7FV[a\x01\x9Da\x02\xF76`\x04a+2V[a\t\xDFV[4\x80\x15a\x03\x08W`\0\x80\xFD[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xCBV[a\x01\x9Da\x03R6`\x04a*\x1EV[a\n\x17V[4\x80\x15a\x03cW`\0\x80\xFD[Pa\x01\x9Da\x03r6`\x04a+pV[a\nWV[4\x80\x15a\x03\x83W`\0\x80\xFD[Pa\x03\x8Ca\x0BDV[`@Qa\x01\xCB\x97\x96\x95\x94\x93\x92\x91\x90a+\xD9V[4\x80\x15a\x03\xABW`\0\x80\xFD[Pa\x02\x93a!\x05\x81V[4\x80\x15a\x03\xC1W`\0\x80\xFD[Pa\x03\xD5a\x03\xD06`\x04a+pV[a\x0BkV[`@Qa\x01\xCB\x91\x90a,rV[4\x80\x15a\x03\xEEW`\0\x80\xFD[Pa\x01\xBFa\x03\xFD6`\x04a,\x85V[a\x0C,V[4\x80\x15a\x04\x0EW`\0\x80\xFD[Pa\x01\xBFa\x04\x1D6`\x04a(\rV[a\x0C\xA8V[4\x80\x15a\x04.W`\0\x80\xFD[Ps_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89a\x03,V[a\x01\x9Da\x04W6`\x04a,\xAFV[a\x0C\xEEV[a\x01\x9Da\x04j6`\x04a-\x08V[a\rRV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x02\x93a\x04\x8A6`\x04a+pV[a\x0E\x13V[4\x80\x15a\x04\x9BW`\0\x80\xFD[P`\0\x80Q` a2\xB3\x839\x81Q\x91RTa\x02\x93V[4\x80\x15a\x04\xBDW`\0\x80\xFD[Pa\x02\x93a\x0E\x1EV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\x19\x91a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P[\x92\x91PPV[a\x05=a\x0E\xA4V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x05j\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0E\xD6V[PV[`\0a\x05\x82a\x05{\x85a\x0E\x13V[\x84\x84a\x0F\x01V[\x15a\x05\x95WPc\x0B\x13]?`\xE1\x1Ba\x05\xA0V[P`\x01`\x01`\xE0\x1B\x03\x19[\x93\x92PPPV[`\0`\0\x80Q` a2\xB3\x839\x81Q\x91R`\x02\x01\x82`@Qa\x05\xC9\x91\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x05\xEAa\x0E\xA4V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x06\x07\x90``\x01a\x05VV[PPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x06.Wa\x06.a\x0E\xA4V[`\0[\x81\x81\x10\x15a\x07\nWa\x07\x02\x83\x83\x83\x81\x81\x10a\x06NWa\x06Na-YV[\x90P` \x02\x81\x01\x90a\x06`\x91\x90a-oV[a\x06n\x90` \x81\x01\x90a(\rV[\x84\x84\x84\x81\x81\x10a\x06\x80Wa\x06\x80a-YV[\x90P` \x02\x81\x01\x90a\x06\x92\x91\x90a-oV[` \x015\x85\x85\x85\x81\x81\x10a\x06\xA8Wa\x06\xA8a-YV[\x90P` \x02\x81\x01\x90a\x06\xBA\x91\x90a-oV[a\x06\xC8\x90`@\x81\x01\x90a-\x85V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[`\x01\x01a\x061V[PPPV[`\x003s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x07DW`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81` \x85\x015`@\x1C`\x04a\x07\\``\x88\x01\x88a-\x85V[\x90P\x10\x15\x80\x15a\x07\xA0WPa\x07t``\x87\x01\x87a-\x85V[a\x07\x83\x91`\x04\x91`\0\x91a-\xCBV[a\x07\x8C\x91a-\xF5V[`\x01`\x01`\xE0\x1B\x03\x19\x16c\xBFk\xA1\xFC`\xE0\x1B\x14[\x15a\x07\xDFWa\x07\xAE\x86a\t.V[\x94Pa!\x05\x81\x14a\x07\xDAW`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x08\x04V[a!\x05\x81\x03a\x08\x04W`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x07\xD1V[a\x08\x1B\x85a\x08\x16a\x01@\x89\x01\x89a-\x85V[a\x0F\x01V[\x15a\x08*W`\0\x92PPa\x080V[`\x01\x92PP[\x80\x15a\x08BW`\08`\08\x843Z\xF1P[P\x93\x92PPPV[\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\x000\x81\x03a\x08\x80Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[a\x08\x89\x84a\x10\x86V[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x08\xDBWcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\t(W`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\t&W=`\0\x82>=\x81\xFD[P[PPPPV[`\0a\t9\x82a\x10\x8EV[`@\x80Q` \x81\x01\x92\x90\x92Rs_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x90\x82\x01R``\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\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\x000\x81\x14a\t\xB7Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91P[P\x90V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\n\x02Wa\n\x02a\x0E\xA4V[`@\x83\x06`@Q\x01`@Ra\x07\n\x82\x82a\x06\x0BV[`\0\x80Q` a2\xB3\x839\x81Q\x91RT\x15a\nEW`@Qc\x02\xEDT=`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x06\x07a\nR\x82\x84a.%V[a\x10\xA7V[a\n_a\x0E\xA4V[`\0a\nj\x82a\x0BkV[\x90P\x80Q`\0\x03a\n\x91W`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01a\x07\xD1V[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\n\xC1\x90\x83\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\n\xED`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x0B\x08\x91a'\x85V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x0B8\x91\x90a,rV[`@Q\x80\x91\x03\x90\xA2PPV[`\x0F`\xF8\x1B``\x80`\0\x80\x80\x83a\x0BYa\x11\xF9V[\x97\x98\x90\x97\x96PF\x95P0\x94P\x91\x92P\x90V[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x0B\xA7\x90a.\xAAV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0B\xD3\x90a.\xAAV[\x80\x15a\x0C W\x80`\x1F\x10a\x0B\xF5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0C V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0C\x03W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c)V^;`\xE0\x1B\x14\x80a\x0C]WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x03\xC3\xCF\xC9`\xE2\x1B\x14[\x80a\x0CxWP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c9o\x1D\xAD`\xE1\x1B\x14[\x80a\x0C\x93WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c'\x8FyC`\xE1\x1B\x14[\x15a\x0C\xA0WP`\x01\x91\x90PV[P`\0\x91\x90PV[`\0`\0\x80Q` a2\xB3\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\xC9\x91a-=V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x11Wa\r\x11a\x0E\xA4V[a\t(\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x85W`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\r\x94`\x04\x82\x84\x86a-\xCBV[a\r\x9D\x91a-\xF5V[\x90Pa\r\xA8\x81a\x0C,V[a\r\xD1W`@Qc\x1D\x83p\xA3`\xE1\x1B\x81R`\x01`\x01`\xE0\x1B\x03\x19\x82\x16`\x04\x82\x01R`$\x01a\x07\xD1V[a\x07\n0`\0\x85\x85\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[`\0a\x05/\x82a\x12@V[`\0\x80`\0a\x0E+a\x11\xF9V[\x81Q` \x80\x84\x01\x91\x90\x91 \x82Q\x82\x84\x01 `@\x80Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x94\x81\x01\x94\x90\x94R\x83\x01\x91\x90\x91R``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R\x91\x93P\x91P`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x92PPP\x90V[a\x0E\xAD3a\x0C\xA8V[\x80a\x0E\xB7WP30\x14[\x15a\x0E\xBEWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05j\x81`\0\x80Q` a2\xB3\x839\x81Q\x91R[\x80T\x90`\0a\x0E\xF8\x83a.\xF4V[\x91\x90PUa\x12vV[`\0\x80a\x0F\x10\x83\x85\x01\x85a/\rV[\x90P`\0a\x0F!\x82`\0\x01Qa\x0BkV[\x90P\x80Q` \x03a\x0F\x80W`\x01`\x01`\xA0\x1B\x03a\x0F=\x82a/\x99V[\x11\x15a\x0F^W\x80`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\0` \x82\x01Q\x90Pa\x0Fv\x81\x88\x85` \x01Qa\x13EV[\x93PPPPa\x05\xA0V[\x80Q`@\x03a\x0F\xFBW`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x0F\xA0\x91\x90a/\xBDV[\x91P\x91P`\0\x84` \x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xBE\x91\x90a0&V[\x90Pa\x0F\xEF\x89`@Q` \x01a\x0F\xD6\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\0\x83\x86\x86a\x14JV[\x95PPPPPPa\x05\xA0V[\x80`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x102\x91\x90a-=V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x10oW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10tV[``\x91P[P\x91P\x91P\x81a\t&W\x80Q` \x82\x01\xFD[a\x05ja\x0E\xA4V[`\0a\x10\x99\x82a\x17\xBAV[\x80Q\x90` \x01 \x90P\x91\x90PV[`\0[\x81Q\x81\x10\x15a\x06\x07W\x81\x81\x81Q\x81\x10a\x10\xC5Wa\x10\xC5a-YV[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x10\xF9WP\x81\x81\x81Q\x81\x10a\x10\xEBWa\x10\xEBa-YV[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x112W\x81\x81\x81Q\x81\x10a\x11\x10Wa\x11\x10a-YV[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[\x81\x81\x81Q\x81\x10a\x11DWa\x11Da-YV[` \x02` \x01\x01QQ` \x14\x80\x15a\x11\x86WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x11sWa\x11sa-YV[` \x02` \x01\x01Qa\x11\x84\x90a/\x99V[\x11[\x15a\x11\xBFW\x81\x81\x81Q\x81\x10a\x11\x9DWa\x11\x9Da-YV[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[a\x11\xF1\x82\x82\x81Q\x81\x10a\x11\xD4Wa\x11\xD4a-YV[` \x02` \x01\x01Qa\x0E\xEA`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\x01\x01a\x10\xAAV[`@\x80Q\x80\x82\x01\x82R`\x15\x81Rt\x10\xDB\xDA[\x98\x98\\\xD9H\x14\xDBX\\\x9D\x08\x15\xD8[\x1B\x19]`Z\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R`\x01\x83R`1`\xF8\x1B\x90\x83\x01R\x91V[`\0a\x12Ja\x0E\x1EV[a\x12S\x83a\x18\x8DV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x92\x90\x92R`B\x82\x01R`b\x01a\tbV[a\x12\x7F\x82a\x05\xA7V[\x15a\x12\x9FW\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\x01`\0\x80Q` a2\xB3\x839\x81Q\x91R`\x02\x01\x83`@Qa\x12\xC1\x91\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x12\xF7`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x13\x14\x90\x82a11V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x0B8\x91\x90a,rV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91`\0\x83\x15a\x05\xA0W`@Q\x83`\0R` \x83\x01Q`@R`@\x83Q\x03a\x13\xB5W`@\x83\x01Q`\x1B\x81`\xFF\x1C\x01` R\x80`\x01\x1B`\x01\x1C``RP` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\xB3WP`\0``R`@RP`\x01a\x05\xA0V[P[`A\x83Q\x03a\x13\xFBW``\x83\x01Q`\0\x1A` R`@\x83\x01Q``R` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\xF9WP`\0``R`@RP`\x01a\x05\xA0V[P[`\0``R\x80`@Rc\x16&\xBA~`\xE0\x1B\x80\x82R\x84`\x04\x83\x01R`$\x82\x01`@\x81R\x84Q` \x01\x80`D\x85\x01\x82\x88`\x04Z\xFAPP` \x81`D=\x01\x85\x8AZ\xFA\x90Q\x90\x91\x14\x16\x91PP\x93\x92PPPV[`\0\x7F\x7F\xFF\xFF\xFF\x80\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDEs}V\xD3\x8B\xCFBy\xDC\xE5a~1\x92\xA8\x84`\xA0\x01Q\x11\x15a\x14\x80WP`\0a\x17\xB1V[``\x84\x01Q`\0\x90a\x14\xA3\x90a\x14\x97\x81`\x15a1\xF0V[` \x88\x01Q\x91\x90a\x18\xC8V[\x90P\x7F\xFF\x1A*\x91v\xD6P\xE4\xA9\x9D\xED\xB5\x8F\x17\x93\095\x13\x05y\xFE\x17\xB5\xA3\xF6\x98\xAC[\0\xE64\x81\x80Q\x90` \x01 \x14a\x14\xDDW`\0\x91PPa\x17\xB1V[`\0a\x14\xEB\x88`\x01\x80a\x19.V[`@Q` \x01a\x14\xFB\x91\x90a2\x03V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x153\x87`@\x01Q\x83Q\x89`@\x01Qa\x15'\x91\x90a1\xF0V[` \x8A\x01Q\x91\x90a\x18\xC8V[\x90P\x81\x80Q\x90` \x01 \x81\x80Q\x90` \x01 \x14a\x15VW`\0\x93PPPPa\x17\xB1V[\x86Q\x80Q`\x01`\xF8\x1B\x91\x82\x91` \x90\x81\x10a\x15sWa\x15sa-YV[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14a\x15\x94W`\0\x93PPPPa\x17\xB1V[\x87\x80\x15a\x15\xCCWP\x86Q\x80Q`\x01`\xFA\x1B\x91\x82\x91` \x90\x81\x10a\x15\xB9Wa\x15\xB9a-YV[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14\x15[\x15a\x15\xDDW`\0\x93PPPPa\x17\xB1V[`\0`\x02\x88` \x01Q`@Qa\x15\xF3\x91\x90a-=V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16\x10W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x163\x91\x90a2DV[\x90P`\0`\x02\x89`\0\x01Q\x83`@Q` \x01a\x16P\x92\x91\x90a2]V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x16j\x91a-=V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16\x87W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xAA\x91\x90a2DV[`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`@\x80Q` \x81\x01\x87\x90R\x90\x81\x01\x93\x90\x93R``\x83\x01R\x91\x81\x01\x8B\x90R\x90\x81\x01\x89\x90R\x90\x91P`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80a\x01\0`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x17\x10\x91\x90a-=V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x17KW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x17PV[``\x91P[P\x80Q\x91\x93P\x91P\x15\x15\x82\x80\x15a\x17dWP\x80[\x15a\x17\x90W\x81\x80` \x01\x90Q\x81\x01\x90a\x17}\x91\x90a2DV[`\x01\x14\x99PPPPPPPPPPa\x17\xB1V[a\x17\xA5\x85\x8E`\x80\x01Q\x8F`\xA0\x01Q\x8F\x8Fa\x1A#V[\x99PPPPPPPPPP[\x95\x94PPPPPV[``\x815` \x83\x015`\0a\x17\xDAa\x17\xD5`@\x87\x01\x87a-\x85V[a\x1B\x06V[\x90P`\0a\x17\xEEa\x17\xD5``\x88\x01\x88a-\x85V[\x90P`\x80\x86\x015`\xA0\x87\x015`\xC0\x88\x015`\xE0\x89\x015a\x01\0\x8A\x015`\0a\x18\x1Da\x17\xD5a\x01 \x8E\x01\x8Ea-\x85V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x9C\x90\x9C\x16` \x8D\x01R\x8B\x81\x01\x9A\x90\x9AR``\x8B\x01\x98\x90\x98RP`\x80\x89\x01\x95\x90\x95R`\xA0\x88\x01\x93\x90\x93R`\xC0\x87\x01\x91\x90\x91R`\xE0\x86\x01Ra\x01\0\x85\x01Ra\x01 \x84\x01Ra\x01@\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81Ra\x01`\x90\x92\x01\x90R\x92\x91PPV[`@\x80Q\x7F\x9BI=\"!\x05\xFE\xE7\xDF\x16:\xB5\xD5\x7F\x0B\xF1\xFF\xD2\xDA\x04\xDD_\xAF\xBE\x10\xB5LA\xC1\xAD\xC6W` \x82\x01R\x90\x81\x01\x82\x90R`\0\x90``\x01a\tbV[``\x83Q\x82\x81\x11a\x18\xD7W\x80\x92P[\x83\x81\x11a\x18\xE2W\x80\x93P[P\x81\x83\x10\x15a\x05\xA0WP`@Q\x82\x82\x03\x80\x82R\x93\x83\x01\x93`\x1F\x19`\x1F\x82\x01\x81\x16[\x86\x81\x01Q\x84\x82\x01R\x81\x01\x80a\x19\x03WP`\0\x83\x83\x01` \x01R`?\x90\x91\x01\x16\x81\x01`@R\x93\x92PPPV[``\x83Q\x80\x15a\x08BW`\x03`\x02\x82\x01\x04`\x02\x1B`@Q\x92P\x7FABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`\x1FRa\x06p\x85\x15\x02\x7Fghijklmnopqrstuvwxyz0123456789-_\x18`?R` \x83\x01\x81\x81\x01\x83\x88` \x01\x01\x80Q`\0\x82R[`\x03\x8A\x01\x99P\x89Q`?\x81`\x12\x1C\x16Q`\0S`?\x81`\x0C\x1C\x16Q`\x01S`?\x81`\x06\x1C\x16Q`\x02S`?\x81\x16Q`\x03SP`\0Q\x84R`\x04\x84\x01\x93P\x82\x84\x10a\x19\xAAW\x90R` \x01`@Ra==`\xF0\x1B`\x03\x84\x06`\x02\x04\x80\x83\x03\x91\x90\x91R`\0\x86\x15\x15\x90\x91\x02\x91\x82\x90\x03R\x90\x03\x82RP\x93\x92PPPV[`\0\x84\x15\x80a\x1A@WP`\0\x80Q` a2\x93\x839\x81Q\x91R\x85\x10\x15[\x80a\x1AIWP\x83\x15[\x80a\x1AbWP`\0\x80Q` a2\x93\x839\x81Q\x91R\x84\x10\x15[\x15a\x1AoWP`\0a\x17\xB1V[a\x1Ay\x83\x83a\x1B\x19V[a\x1A\x85WP`\0a\x17\xB1V[`\0a\x1A\x90\x85a\x1C\x13V[\x90P`\0`\0\x80Q` a2\x93\x839\x81Q\x91R\x82\x89\t\x90P`\0`\0\x80Q` a2\x93\x839\x81Q\x91R\x83\x89\t\x90P`\0a\x1A\xCC\x87\x87\x85\x85a\x1C\x85V[\x90P`\0\x80Q` a2\x93\x839\x81Q\x91Ra\x1A\xF5\x8A`\0\x80Q` a2\x93\x839\x81Q\x91Ra2\x7FV[\x82\x08\x15\x9A\x99PPPPPPPPPPV[`\0`@Q\x82\x80\x85\x837\x90 \x93\x92PPPV[`\0\x82\x15\x80\x15a\x1B'WP\x81\x15[\x80a\x1B?WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x14[\x80a\x1BWWP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x14[\x15a\x1BdWP`\0a\x05/V[`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x90P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x7F\xFF\xFF\xFF\xFF\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x87\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\t\x08\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x7FZ\xC65\xD8\xAA:\x93\xE7\xB3\xEB\xBDUv\x98\x86\xBCe\x1D\x06\xB0\xCCS\xB0\xF6;\xCE<>'\xD2`K\x82\x08\x91\x90\x91\x14\x94\x93PPPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%O`\x80\x82\x01R`\0\x80Q` a2\x93\x839\x81Q\x91R`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C~W`\0\x80\xFD[Q\x92\x91PPV[`\0\x80\x80\x80`\xFF\x81\x80\x88\x15\x80\x15a\x1C\x9AWP\x87\x15[\x15a\x1C\xAEW`\0\x96PPPPPPPa#GV[a\x1C\xFA\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x8D\x8Da#OV[\x90\x92P\x90P\x81\x15\x80\x15a\x1D\x0BWP\x80\x15[\x15a\x1D9W`\0\x80Q` a2\x93\x839\x81Q\x91R\x88`\0\x80Q` a2\x93\x839\x81Q\x91R\x03\x8A\x08\x98P`\0\x97P[`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01[\x80a\x1DlW`\x01\x84\x03\x93P`\x01\x8A\x85\x1C\x16`\x01\x8A\x86\x1C\x16`\x01\x1B\x01\x90Pa\x1DJV[P`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01\x95P`\x01\x86\x03a\x1D\xCEW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x96P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x93P[`\x02\x86\x03a\x1D\xDDW\x8A\x96P\x89\x93P[`\x03\x86\x03a\x1D\xECW\x81\x96P\x80\x93P[`\x01\x83\x03\x92P`\x01\x95P`\x01\x94P[\x82`\0\x19\x11\x15a\"\xD0W`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x02\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8A\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x84\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x8D\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08\t`\x03\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x85\t\x98P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x84\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x08\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\x82\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x87\t\x08\x97P`\x01\x8D\x88\x1C\x16`\x01\x8D\x89\x1C\x16`\x01\x1B\x01\x90P\x80a\x1FxW\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x97PPPPPa\"\xC5V[`\x01\x81\x03a\x1F\xC7W\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x93P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x92P[`\x02\x81\x03a\x1F\xD6W\x8E\x93P\x8D\x92P[`\x03\x81\x03a\x1F\xE5W\x85\x93P\x84\x92P[\x89a\x1F\xFEWP\x91\x98P`\x01\x97P\x87\x96P\x94Pa\"\xC5\x90PV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x86\t\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x88\t\x08\x93P\x80a!\xB7W\x83a!\xB7W`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x86\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8D\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x86\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x8F\x08\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81`\x03\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x86\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x85\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x08\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8D`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x85\x08\x83\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8A\x87\t\x85\x08\x98PPPPPPa\"\xC5V[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x83\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8D\t\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8C\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8E\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87\x88\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83\x8D\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x86\x08\t\x08\x9APPPP\x80\x9APPPPP[`\x01\x83\x03\x92Pa\x1D\xFBV[`@Q\x86``\x82\x01R` \x81R` \x80\x82\x01R` `@\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa#*W`\0\x80\xFD[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81Q\x89\t\x97PPPPPPPP[\x94\x93PPPPV[`\0\x80\x80\x80\x86a#fW\x85\x85\x93P\x93PPPa#\xD4V[\x84a#xW\x87\x87\x93P\x93PPPa#\xD4V[\x85\x88\x14\x80\x15a#\x86WP\x84\x87\x14[\x15a#\xA7Wa#\x98\x88\x88`\x01\x80a#\xDDV[\x92\x9AP\x90\x98P\x92P\x90Pa#\xC1V[a#\xB6\x88\x88`\x01\x80\x8A\x8Aa%8V[\x92\x9AP\x90\x98P\x92P\x90P[a#\xCD\x88\x88\x84\x84a&\xBCV[\x93P\x93PPP[\x94P\x94\x92PPPV[`\0\x80`\0\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x02\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x83\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x8B\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8C\x08\t`\x03\t\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x89\t\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x83\x08\x87\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x84\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x88\x85\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x89\x08\x92P\x94P\x94P\x94P\x94\x90PV[`\0\x80`\0\x80\x88`\0\x03a%WWP\x84\x92P\x83\x91P`\x01\x90P\x80a&\xAFV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x98\x89\x03\x98\x89\x81\x89\x88\t\x08\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x89\t\x08\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x87\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x89\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x88\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8B\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84\x8B\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\t\x08\x92P[\x96P\x96P\x96P\x96\x92PPPV[`\0\x80`\0a&\xCA\x84a')V[\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x87\t\x91P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x87\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x93PPP\x94P\x94\x92PPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C~W`\0\x80\xFD[P\x80Ta'\x91\x90a.\xAAV[`\0\x82U\x80`\x1F\x10a'\xA1WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x05j\x91\x90[\x80\x82\x11\x15a\t\xDBW`\0\x81U`\x01\x01a'\xBBV[`\0\x80`@\x83\x85\x03\x12\x15a'\xE2W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a(\x08W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a(\x1FW`\0\x80\xFD[a\x05\xA0\x82a'\xF1V[`\0\x80\x83`\x1F\x84\x01\x12a(:W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(QW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a(iW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a(\x85W`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xA2W`\0\x80\xFD[a(\xAE\x86\x82\x87\x01a((V[\x94\x97\x90\x96P\x93\x94PPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a(\xF3Wa(\xF3a(\xBBV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)!Wa)!a(\xBBV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a)BWa)Ba(\xBBV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)aW`\0\x80\xFD[\x815a)ta)o\x82a))V[a(\xF9V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\x89W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a)\xB8W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xCEW`\0\x80\xFD[a#G\x84\x82\x85\x01a)PV[`\0\x80\x83`\x1F\x84\x01\x12a)\xECW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x03W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a(iW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a*1W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a*GW`\0\x80\xFD[a*S\x85\x82\x86\x01a)\xDAV[\x90\x96\x90\x95P\x93PPPPV[`\0a\x01`\x82\x84\x03\x12\x15a*rW`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a*\x8DW`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xA3W`\0\x80\xFD[a*\xAF\x86\x82\x87\x01a*_V[\x96` \x86\x015\x96P`@\x90\x95\x015\x94\x93PPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a*\xDAW`\0\x80\xFD[a*\xE3\x84a'\xF1V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xA2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a+\x10W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a+&W`\0\x80\xFD[a#G\x84\x82\x85\x01a*_V[`\0\x80`\0`@\x84\x86\x03\x12\x15a+GW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+dW`\0\x80\xFD[a(\xAE\x86\x82\x87\x01a)\xDAV[`\0` \x82\x84\x03\x12\x15a+\x82W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a+\xA4W\x81\x81\x01Q\x83\x82\x01R` \x01a+\x8CV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra+\xC5\x81` \x86\x01` \x86\x01a+\x89V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\xFF`\xF8\x1B\x88\x16\x81R`\0` `\xE0` \x84\x01Ra+\xFA`\xE0\x84\x01\x8Aa+\xADV[\x83\x81\x03`@\x85\x01Ra,\x0C\x81\x8Aa+\xADV[``\x85\x01\x89\x90R`\x01`\x01`\xA0\x1B\x03\x88\x16`\x80\x86\x01R`\xA0\x85\x01\x87\x90R\x84\x81\x03`\xC0\x86\x01R\x85Q\x80\x82R` \x80\x88\x01\x93P\x90\x91\x01\x90`\0[\x81\x81\x10\x15a,`W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a,DV[P\x90\x9C\x9BPPPPPPPPPPPPV[` \x81R`\0a\x05\xA0` \x83\x01\x84a+\xADV[`\0` \x82\x84\x03\x12\x15a,\x97W`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\xA0W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a,\xC5W`\0\x80\xFD[a,\xCE\x85a'\xF1V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xF0W`\0\x80\xFD[a,\xFC\x87\x82\x88\x01a((V[\x95\x98\x94\x97P\x95PPPPV[`\0\x80` \x83\x85\x03\x12\x15a-\x1BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-1W`\0\x80\xFD[a*S\x85\x82\x86\x01a((V[`\0\x82Qa-O\x81\x84` \x87\x01a+\x89V[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x825`^\x19\x836\x03\x01\x81\x12a-OW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a-\x9CW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a-\xB6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a(iW`\0\x80\xFD[`\0\x80\x85\x85\x11\x15a-\xDBW`\0\x80\xFD[\x83\x86\x11\x15a-\xE8W`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\x01`\x01`\xE0\x1B\x03\x19\x815\x81\x81\x16\x91`\x04\x85\x10\x15a.\x1DW\x80\x81\x86`\x04\x03`\x03\x1B\x1B\x83\x16\x16\x92P[PP\x92\x91PPV[`\0`\x01`\x01`@\x1B\x03\x80\x84\x11\x15a.?Wa.?a(\xBBV[\x83`\x05\x1B` a.Q` \x83\x01a(\xF9V[\x86\x81R\x91\x85\x01\x91` \x81\x01\x906\x84\x11\x15a.jW`\0\x80\xFD[\x86[\x84\x81\x10\x15a.\x9EW\x805\x86\x81\x11\x15a.\x84W`\0\x80\x81\xFD[a.\x906\x82\x8B\x01a)PV[\x84RP\x91\x83\x01\x91\x83\x01a.lV[P\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a.\xBEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a*rWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a/\x06Wa/\x06a.\xDEV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a/\x1FW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a/6W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a/JW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a/eWa/ea(\xBBV[`@R\x825\x81R` \x83\x015\x82\x81\x11\x15a/~W`\0\x80\xFD[a/\x8A\x87\x82\x86\x01a)PV[` \x83\x01RP\x95\x94PPPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a*rW`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a/\xD0W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0\x82`\x1F\x83\x01\x12a/\xF2W`\0\x80\xFD[\x81Qa0\0a)o\x82a))V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a0\x15W`\0\x80\xFD[a#G\x82` \x83\x01` \x87\x01a+\x89V[`\0` \x82\x84\x03\x12\x15a08W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0OW`\0\x80\xFD[\x90\x83\x01\x90`\xC0\x82\x86\x03\x12\x15a0cW`\0\x80\xFD[a0ka(\xD1V[\x82Q\x82\x81\x11\x15a0zW`\0\x80\xFD[a0\x86\x87\x82\x86\x01a/\xE1V[\x82RP` \x83\x01Q\x82\x81\x11\x15a0\x9BW`\0\x80\xFD[a0\xA7\x87\x82\x86\x01a/\xE1V[` \x83\x01RP`@\x83\x01Q`@\x82\x01R``\x83\x01Q``\x82\x01R`\x80\x83\x01Q`\x80\x82\x01R`\xA0\x83\x01Q`\xA0\x82\x01R\x80\x93PPPP\x92\x91PPV[`\x1F\x82\x11\x15a\x07\nW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a1\nWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a1)W\x82\x81U`\x01\x01a1\x16V[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a1JWa1Ja(\xBBV[a1^\x81a1X\x84Ta.\xAAV[\x84a0\xE1V[` \x80`\x1F\x83\x11`\x01\x81\x14a1\x93W`\0\x84\x15a1{WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua1)V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a1\xC2W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a1\xA3V[P\x85\x82\x10\x15a1\xE0W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[\x80\x82\x01\x80\x82\x11\x15a\x05/Wa\x05/a.\xDEV[l\x111\xB40\xB662\xB73\xB2\x91\x1D\x11`\x99\x1B\x81R\x81Q`\0\x90a2,\x81`\r\x85\x01` \x87\x01a+\x89V[`\x11`\xF9\x1B`\r\x93\x90\x91\x01\x92\x83\x01RP`\x0E\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15a2VW`\0\x80\xFD[PQ\x91\x90PV[`\0\x83Qa2o\x81\x84` \x88\x01a+\x89V[\x91\x90\x91\x01\x91\x82RP` \x01\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x05/Wa\x05/a.\xDEV\xFE\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%Q\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\0\xA2dipfsX\"\x12 v\xB8R\xC4N\x04\xB7(<\xDC\\\xE0:a\xAFh%I\x82*%\xC9\xCD\x17 \xCFHp\xE5B\xBD\xDDdsolcC\0\x08\x17\x003\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\0"; + /// The bytecode of the contract. + pub static MOCKCOINBASESMARTWALLET_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co-\xE7\x0E\x11a\0\xD1W\x80c\xA2\xE1\xA8\xD8\x11a\0\x8AW\x80c\xBFk\xA1\xFC\x11a\0dW\x80c\xBFk\xA1\xFC\x14a\x04\\W\x80c\xCE\x15\x06\xBE\x14a\x04oW\x80c\xD9H\xFD.\x14a\x04\x8FW\x80c\xF6\x98\xDA%\x14a\x04\xB1Wa\x01qV[\x80c\xA2\xE1\xA8\xD8\x14a\x04\x02W\x80c\xB0\xD6\x91\xFE\x14a\x04\"W\x80c\xB6\x1D'\xF6\x14a\x04IWa\x01qV[\x80co-\xE7\x0E\x14a\x03DW\x80cr\xDE;Z\x14a\x03WW\x80c\x84\xB0\x19n\x14a\x03wW\x80c\x88\xCEL|\x14a\x03\x9FW\x80c\x8E\xA6\x90)\x14a\x03\xB5W\x80c\x9F\x9B\xCB4\x14a\x03\xE2Wa\x01qV[\x80c:\x87\x1C\xDD\x11a\x01#W\x80c:\x87\x1C\xDD\x14a\x02\x80W\x80cO\x1E\xF2\x86\x14a\x02\xA1W\x80cOn\x7F\"\x14a\x02\xB4W\x80cR\xD1\x90-\x14a\x02\xD4W\x80cW\x7F<\xBF\x14a\x02\xE9W\x80c\\`\xDA\x1B\x14a\x02\xFCWa\x01qV[\x80c\x06j\x1E\xB7\x14a\x01\x9FW\x80c\x0F\x0F?$\x14a\x01\xD4W\x80c\x16&\xBA~\x14a\x01\xF4W\x80c\x1C\xA59?\x14a\x02-W\x80c)V^;\x14a\x02MW\x80c4\xFC\xD5\xBE\x14a\x02mWa\x01qV[6a\x01qW\0[`\x005`\xE0\x1Cc\xBC\x19|\x81\x81\x14c\xF2:na\x82\x14\x17c\x15\x0Bz\x02\x82\x14\x17\x15a\x01\x9DW\x80` R` `<\xF3[\0[4\x80\x15a\x01\xABW`\0\x80\xFD[Pa\x01\xBFa\x01\xBA6`\x04a'\xCFV[a\x04\xC6V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xE0W`\0\x80\xFD[Pa\x01\x9Da\x01\xEF6`\x04a(\rV[a\x055V[4\x80\x15a\x02\0W`\0\x80\xFD[Pa\x02\x14a\x02\x0F6`\x04a(pV[a\x05mV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01\xCBV[4\x80\x15a\x029W`\0\x80\xFD[Pa\x01\xBFa\x02H6`\x04a)\xA6V[a\x05\xA7V[4\x80\x15a\x02YW`\0\x80\xFD[Pa\x01\x9Da\x02h6`\x04a'\xCFV[a\x05\xE2V[a\x01\x9Da\x02{6`\x04a*\x1EV[a\x06\x0BV[a\x02\x93a\x02\x8E6`\x04a*xV[a\x07\x0FV[`@Q\x90\x81R` \x01a\x01\xCBV[a\x01\x9Da\x02\xAF6`\x04a*\xC5V[a\x08JV[4\x80\x15a\x02\xC0W`\0\x80\xFD[Pa\x02\x93a\x02\xCF6`\x04a*\xFEV[a\t.V[4\x80\x15a\x02\xE0W`\0\x80\xFD[Pa\x02\x93a\t\x7FV[a\x01\x9Da\x02\xF76`\x04a+2V[a\t\xDFV[4\x80\x15a\x03\x08W`\0\x80\xFD[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xCBV[a\x01\x9Da\x03R6`\x04a*\x1EV[a\n\x17V[4\x80\x15a\x03cW`\0\x80\xFD[Pa\x01\x9Da\x03r6`\x04a+pV[a\nWV[4\x80\x15a\x03\x83W`\0\x80\xFD[Pa\x03\x8Ca\x0BDV[`@Qa\x01\xCB\x97\x96\x95\x94\x93\x92\x91\x90a+\xD9V[4\x80\x15a\x03\xABW`\0\x80\xFD[Pa\x02\x93a!\x05\x81V[4\x80\x15a\x03\xC1W`\0\x80\xFD[Pa\x03\xD5a\x03\xD06`\x04a+pV[a\x0BkV[`@Qa\x01\xCB\x91\x90a,rV[4\x80\x15a\x03\xEEW`\0\x80\xFD[Pa\x01\xBFa\x03\xFD6`\x04a,\x85V[a\x0C,V[4\x80\x15a\x04\x0EW`\0\x80\xFD[Pa\x01\xBFa\x04\x1D6`\x04a(\rV[a\x0C\xA8V[4\x80\x15a\x04.W`\0\x80\xFD[Ps_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89a\x03,V[a\x01\x9Da\x04W6`\x04a,\xAFV[a\x0C\xEEV[a\x01\x9Da\x04j6`\x04a-\x08V[a\rRV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x02\x93a\x04\x8A6`\x04a+pV[a\x0E\x13V[4\x80\x15a\x04\x9BW`\0\x80\xFD[P`\0\x80Q` a2\xB3\x839\x81Q\x91RTa\x02\x93V[4\x80\x15a\x04\xBDW`\0\x80\xFD[Pa\x02\x93a\x0E\x1EV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\x19\x91a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P[\x92\x91PPV[a\x05=a\x0E\xA4V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x05j\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0E\xD6V[PV[`\0a\x05\x82a\x05{\x85a\x0E\x13V[\x84\x84a\x0F\x01V[\x15a\x05\x95WPc\x0B\x13]?`\xE1\x1Ba\x05\xA0V[P`\x01`\x01`\xE0\x1B\x03\x19[\x93\x92PPPV[`\0`\0\x80Q` a2\xB3\x839\x81Q\x91R`\x02\x01\x82`@Qa\x05\xC9\x91\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x05\xEAa\x0E\xA4V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x06\x07\x90``\x01a\x05VV[PPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x06.Wa\x06.a\x0E\xA4V[`\0[\x81\x81\x10\x15a\x07\nWa\x07\x02\x83\x83\x83\x81\x81\x10a\x06NWa\x06Na-YV[\x90P` \x02\x81\x01\x90a\x06`\x91\x90a-oV[a\x06n\x90` \x81\x01\x90a(\rV[\x84\x84\x84\x81\x81\x10a\x06\x80Wa\x06\x80a-YV[\x90P` \x02\x81\x01\x90a\x06\x92\x91\x90a-oV[` \x015\x85\x85\x85\x81\x81\x10a\x06\xA8Wa\x06\xA8a-YV[\x90P` \x02\x81\x01\x90a\x06\xBA\x91\x90a-oV[a\x06\xC8\x90`@\x81\x01\x90a-\x85V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[`\x01\x01a\x061V[PPPV[`\x003s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x07DW`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81` \x85\x015`@\x1C`\x04a\x07\\``\x88\x01\x88a-\x85V[\x90P\x10\x15\x80\x15a\x07\xA0WPa\x07t``\x87\x01\x87a-\x85V[a\x07\x83\x91`\x04\x91`\0\x91a-\xCBV[a\x07\x8C\x91a-\xF5V[`\x01`\x01`\xE0\x1B\x03\x19\x16c\xBFk\xA1\xFC`\xE0\x1B\x14[\x15a\x07\xDFWa\x07\xAE\x86a\t.V[\x94Pa!\x05\x81\x14a\x07\xDAW`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x08\x04V[a!\x05\x81\x03a\x08\x04W`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x07\xD1V[a\x08\x1B\x85a\x08\x16a\x01@\x89\x01\x89a-\x85V[a\x0F\x01V[\x15a\x08*W`\0\x92PPa\x080V[`\x01\x92PP[\x80\x15a\x08BW`\08`\08\x843Z\xF1P[P\x93\x92PPPV[\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\x000\x81\x03a\x08\x80Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[a\x08\x89\x84a\x10\x86V[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x08\xDBWcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\t(W`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\t&W=`\0\x82>=\x81\xFD[P[PPPPV[`\0a\t9\x82a\x10\x8EV[`@\x80Q` \x81\x01\x92\x90\x92Rs_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x90\x82\x01R``\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\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\x000\x81\x14a\t\xB7Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91P[P\x90V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\n\x02Wa\n\x02a\x0E\xA4V[`@\x83\x06`@Q\x01`@Ra\x07\n\x82\x82a\x06\x0BV[`\0\x80Q` a2\xB3\x839\x81Q\x91RT\x15a\nEW`@Qc\x02\xEDT=`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x06\x07a\nR\x82\x84a.%V[a\x10\xA7V[a\n_a\x0E\xA4V[`\0a\nj\x82a\x0BkV[\x90P\x80Q`\0\x03a\n\x91W`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01a\x07\xD1V[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\n\xC1\x90\x83\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\n\xED`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x0B\x08\x91a'\x85V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x0B8\x91\x90a,rV[`@Q\x80\x91\x03\x90\xA2PPV[`\x0F`\xF8\x1B``\x80`\0\x80\x80\x83a\x0BYa\x11\xF9V[\x97\x98\x90\x97\x96PF\x95P0\x94P\x91\x92P\x90V[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x0B\xA7\x90a.\xAAV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0B\xD3\x90a.\xAAV[\x80\x15a\x0C W\x80`\x1F\x10a\x0B\xF5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0C V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0C\x03W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c)V^;`\xE0\x1B\x14\x80a\x0C]WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x03\xC3\xCF\xC9`\xE2\x1B\x14[\x80a\x0CxWP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c9o\x1D\xAD`\xE1\x1B\x14[\x80a\x0C\x93WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c'\x8FyC`\xE1\x1B\x14[\x15a\x0C\xA0WP`\x01\x91\x90PV[P`\0\x91\x90PV[`\0`\0\x80Q` a2\xB3\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\xC9\x91a-=V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x11Wa\r\x11a\x0E\xA4V[a\t(\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x85W`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\r\x94`\x04\x82\x84\x86a-\xCBV[a\r\x9D\x91a-\xF5V[\x90Pa\r\xA8\x81a\x0C,V[a\r\xD1W`@Qc\x1D\x83p\xA3`\xE1\x1B\x81R`\x01`\x01`\xE0\x1B\x03\x19\x82\x16`\x04\x82\x01R`$\x01a\x07\xD1V[a\x07\n0`\0\x85\x85\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[`\0a\x05/\x82a\x12@V[`\0\x80`\0a\x0E+a\x11\xF9V[\x81Q` \x80\x84\x01\x91\x90\x91 \x82Q\x82\x84\x01 `@\x80Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x94\x81\x01\x94\x90\x94R\x83\x01\x91\x90\x91R``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R\x91\x93P\x91P`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x92PPP\x90V[a\x0E\xAD3a\x0C\xA8V[\x80a\x0E\xB7WP30\x14[\x15a\x0E\xBEWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05j\x81`\0\x80Q` a2\xB3\x839\x81Q\x91R[\x80T\x90`\0a\x0E\xF8\x83a.\xF4V[\x91\x90PUa\x12vV[`\0\x80a\x0F\x10\x83\x85\x01\x85a/\rV[\x90P`\0a\x0F!\x82`\0\x01Qa\x0BkV[\x90P\x80Q` \x03a\x0F\x80W`\x01`\x01`\xA0\x1B\x03a\x0F=\x82a/\x99V[\x11\x15a\x0F^W\x80`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\0` \x82\x01Q\x90Pa\x0Fv\x81\x88\x85` \x01Qa\x13EV[\x93PPPPa\x05\xA0V[\x80Q`@\x03a\x0F\xFBW`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x0F\xA0\x91\x90a/\xBDV[\x91P\x91P`\0\x84` \x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xBE\x91\x90a0&V[\x90Pa\x0F\xEF\x89`@Q` \x01a\x0F\xD6\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\0\x83\x86\x86a\x14JV[\x95PPPPPPa\x05\xA0V[\x80`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x102\x91\x90a-=V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x10oW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10tV[``\x91P[P\x91P\x91P\x81a\t&W\x80Q` \x82\x01\xFD[a\x05ja\x0E\xA4V[`\0a\x10\x99\x82a\x17\xBAV[\x80Q\x90` \x01 \x90P\x91\x90PV[`\0[\x81Q\x81\x10\x15a\x06\x07W\x81\x81\x81Q\x81\x10a\x10\xC5Wa\x10\xC5a-YV[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x10\xF9WP\x81\x81\x81Q\x81\x10a\x10\xEBWa\x10\xEBa-YV[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x112W\x81\x81\x81Q\x81\x10a\x11\x10Wa\x11\x10a-YV[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[\x81\x81\x81Q\x81\x10a\x11DWa\x11Da-YV[` \x02` \x01\x01QQ` \x14\x80\x15a\x11\x86WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x11sWa\x11sa-YV[` \x02` \x01\x01Qa\x11\x84\x90a/\x99V[\x11[\x15a\x11\xBFW\x81\x81\x81Q\x81\x10a\x11\x9DWa\x11\x9Da-YV[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[a\x11\xF1\x82\x82\x81Q\x81\x10a\x11\xD4Wa\x11\xD4a-YV[` \x02` \x01\x01Qa\x0E\xEA`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\x01\x01a\x10\xAAV[`@\x80Q\x80\x82\x01\x82R`\x15\x81Rt\x10\xDB\xDA[\x98\x98\\\xD9H\x14\xDBX\\\x9D\x08\x15\xD8[\x1B\x19]`Z\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R`\x01\x83R`1`\xF8\x1B\x90\x83\x01R\x91V[`\0a\x12Ja\x0E\x1EV[a\x12S\x83a\x18\x8DV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x92\x90\x92R`B\x82\x01R`b\x01a\tbV[a\x12\x7F\x82a\x05\xA7V[\x15a\x12\x9FW\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\x01`\0\x80Q` a2\xB3\x839\x81Q\x91R`\x02\x01\x83`@Qa\x12\xC1\x91\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x12\xF7`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x13\x14\x90\x82a11V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x0B8\x91\x90a,rV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91`\0\x83\x15a\x05\xA0W`@Q\x83`\0R` \x83\x01Q`@R`@\x83Q\x03a\x13\xB5W`@\x83\x01Q`\x1B\x81`\xFF\x1C\x01` R\x80`\x01\x1B`\x01\x1C``RP` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\xB3WP`\0``R`@RP`\x01a\x05\xA0V[P[`A\x83Q\x03a\x13\xFBW``\x83\x01Q`\0\x1A` R`@\x83\x01Q``R` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\xF9WP`\0``R`@RP`\x01a\x05\xA0V[P[`\0``R\x80`@Rc\x16&\xBA~`\xE0\x1B\x80\x82R\x84`\x04\x83\x01R`$\x82\x01`@\x81R\x84Q` \x01\x80`D\x85\x01\x82\x88`\x04Z\xFAPP` \x81`D=\x01\x85\x8AZ\xFA\x90Q\x90\x91\x14\x16\x91PP\x93\x92PPPV[`\0\x7F\x7F\xFF\xFF\xFF\x80\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDEs}V\xD3\x8B\xCFBy\xDC\xE5a~1\x92\xA8\x84`\xA0\x01Q\x11\x15a\x14\x80WP`\0a\x17\xB1V[``\x84\x01Q`\0\x90a\x14\xA3\x90a\x14\x97\x81`\x15a1\xF0V[` \x88\x01Q\x91\x90a\x18\xC8V[\x90P\x7F\xFF\x1A*\x91v\xD6P\xE4\xA9\x9D\xED\xB5\x8F\x17\x93\095\x13\x05y\xFE\x17\xB5\xA3\xF6\x98\xAC[\0\xE64\x81\x80Q\x90` \x01 \x14a\x14\xDDW`\0\x91PPa\x17\xB1V[`\0a\x14\xEB\x88`\x01\x80a\x19.V[`@Q` \x01a\x14\xFB\x91\x90a2\x03V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x153\x87`@\x01Q\x83Q\x89`@\x01Qa\x15'\x91\x90a1\xF0V[` \x8A\x01Q\x91\x90a\x18\xC8V[\x90P\x81\x80Q\x90` \x01 \x81\x80Q\x90` \x01 \x14a\x15VW`\0\x93PPPPa\x17\xB1V[\x86Q\x80Q`\x01`\xF8\x1B\x91\x82\x91` \x90\x81\x10a\x15sWa\x15sa-YV[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14a\x15\x94W`\0\x93PPPPa\x17\xB1V[\x87\x80\x15a\x15\xCCWP\x86Q\x80Q`\x01`\xFA\x1B\x91\x82\x91` \x90\x81\x10a\x15\xB9Wa\x15\xB9a-YV[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14\x15[\x15a\x15\xDDW`\0\x93PPPPa\x17\xB1V[`\0`\x02\x88` \x01Q`@Qa\x15\xF3\x91\x90a-=V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16\x10W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x163\x91\x90a2DV[\x90P`\0`\x02\x89`\0\x01Q\x83`@Q` \x01a\x16P\x92\x91\x90a2]V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x16j\x91a-=V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16\x87W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xAA\x91\x90a2DV[`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`@\x80Q` \x81\x01\x87\x90R\x90\x81\x01\x93\x90\x93R``\x83\x01R\x91\x81\x01\x8B\x90R\x90\x81\x01\x89\x90R\x90\x91P`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80a\x01\0`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x17\x10\x91\x90a-=V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x17KW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x17PV[``\x91P[P\x80Q\x91\x93P\x91P\x15\x15\x82\x80\x15a\x17dWP\x80[\x15a\x17\x90W\x81\x80` \x01\x90Q\x81\x01\x90a\x17}\x91\x90a2DV[`\x01\x14\x99PPPPPPPPPPa\x17\xB1V[a\x17\xA5\x85\x8E`\x80\x01Q\x8F`\xA0\x01Q\x8F\x8Fa\x1A#V[\x99PPPPPPPPPP[\x95\x94PPPPPV[``\x815` \x83\x015`\0a\x17\xDAa\x17\xD5`@\x87\x01\x87a-\x85V[a\x1B\x06V[\x90P`\0a\x17\xEEa\x17\xD5``\x88\x01\x88a-\x85V[\x90P`\x80\x86\x015`\xA0\x87\x015`\xC0\x88\x015`\xE0\x89\x015a\x01\0\x8A\x015`\0a\x18\x1Da\x17\xD5a\x01 \x8E\x01\x8Ea-\x85V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x9C\x90\x9C\x16` \x8D\x01R\x8B\x81\x01\x9A\x90\x9AR``\x8B\x01\x98\x90\x98RP`\x80\x89\x01\x95\x90\x95R`\xA0\x88\x01\x93\x90\x93R`\xC0\x87\x01\x91\x90\x91R`\xE0\x86\x01Ra\x01\0\x85\x01Ra\x01 \x84\x01Ra\x01@\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81Ra\x01`\x90\x92\x01\x90R\x92\x91PPV[`@\x80Q\x7F\x9BI=\"!\x05\xFE\xE7\xDF\x16:\xB5\xD5\x7F\x0B\xF1\xFF\xD2\xDA\x04\xDD_\xAF\xBE\x10\xB5LA\xC1\xAD\xC6W` \x82\x01R\x90\x81\x01\x82\x90R`\0\x90``\x01a\tbV[``\x83Q\x82\x81\x11a\x18\xD7W\x80\x92P[\x83\x81\x11a\x18\xE2W\x80\x93P[P\x81\x83\x10\x15a\x05\xA0WP`@Q\x82\x82\x03\x80\x82R\x93\x83\x01\x93`\x1F\x19`\x1F\x82\x01\x81\x16[\x86\x81\x01Q\x84\x82\x01R\x81\x01\x80a\x19\x03WP`\0\x83\x83\x01` \x01R`?\x90\x91\x01\x16\x81\x01`@R\x93\x92PPPV[``\x83Q\x80\x15a\x08BW`\x03`\x02\x82\x01\x04`\x02\x1B`@Q\x92P\x7FABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`\x1FRa\x06p\x85\x15\x02\x7Fghijklmnopqrstuvwxyz0123456789-_\x18`?R` \x83\x01\x81\x81\x01\x83\x88` \x01\x01\x80Q`\0\x82R[`\x03\x8A\x01\x99P\x89Q`?\x81`\x12\x1C\x16Q`\0S`?\x81`\x0C\x1C\x16Q`\x01S`?\x81`\x06\x1C\x16Q`\x02S`?\x81\x16Q`\x03SP`\0Q\x84R`\x04\x84\x01\x93P\x82\x84\x10a\x19\xAAW\x90R` \x01`@Ra==`\xF0\x1B`\x03\x84\x06`\x02\x04\x80\x83\x03\x91\x90\x91R`\0\x86\x15\x15\x90\x91\x02\x91\x82\x90\x03R\x90\x03\x82RP\x93\x92PPPV[`\0\x84\x15\x80a\x1A@WP`\0\x80Q` a2\x93\x839\x81Q\x91R\x85\x10\x15[\x80a\x1AIWP\x83\x15[\x80a\x1AbWP`\0\x80Q` a2\x93\x839\x81Q\x91R\x84\x10\x15[\x15a\x1AoWP`\0a\x17\xB1V[a\x1Ay\x83\x83a\x1B\x19V[a\x1A\x85WP`\0a\x17\xB1V[`\0a\x1A\x90\x85a\x1C\x13V[\x90P`\0`\0\x80Q` a2\x93\x839\x81Q\x91R\x82\x89\t\x90P`\0`\0\x80Q` a2\x93\x839\x81Q\x91R\x83\x89\t\x90P`\0a\x1A\xCC\x87\x87\x85\x85a\x1C\x85V[\x90P`\0\x80Q` a2\x93\x839\x81Q\x91Ra\x1A\xF5\x8A`\0\x80Q` a2\x93\x839\x81Q\x91Ra2\x7FV[\x82\x08\x15\x9A\x99PPPPPPPPPPV[`\0`@Q\x82\x80\x85\x837\x90 \x93\x92PPPV[`\0\x82\x15\x80\x15a\x1B'WP\x81\x15[\x80a\x1B?WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x14[\x80a\x1BWWP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x14[\x15a\x1BdWP`\0a\x05/V[`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x90P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x7F\xFF\xFF\xFF\xFF\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x87\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\t\x08\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x7FZ\xC65\xD8\xAA:\x93\xE7\xB3\xEB\xBDUv\x98\x86\xBCe\x1D\x06\xB0\xCCS\xB0\xF6;\xCE<>'\xD2`K\x82\x08\x91\x90\x91\x14\x94\x93PPPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%O`\x80\x82\x01R`\0\x80Q` a2\x93\x839\x81Q\x91R`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C~W`\0\x80\xFD[Q\x92\x91PPV[`\0\x80\x80\x80`\xFF\x81\x80\x88\x15\x80\x15a\x1C\x9AWP\x87\x15[\x15a\x1C\xAEW`\0\x96PPPPPPPa#GV[a\x1C\xFA\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x8D\x8Da#OV[\x90\x92P\x90P\x81\x15\x80\x15a\x1D\x0BWP\x80\x15[\x15a\x1D9W`\0\x80Q` a2\x93\x839\x81Q\x91R\x88`\0\x80Q` a2\x93\x839\x81Q\x91R\x03\x8A\x08\x98P`\0\x97P[`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01[\x80a\x1DlW`\x01\x84\x03\x93P`\x01\x8A\x85\x1C\x16`\x01\x8A\x86\x1C\x16`\x01\x1B\x01\x90Pa\x1DJV[P`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01\x95P`\x01\x86\x03a\x1D\xCEW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x96P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x93P[`\x02\x86\x03a\x1D\xDDW\x8A\x96P\x89\x93P[`\x03\x86\x03a\x1D\xECW\x81\x96P\x80\x93P[`\x01\x83\x03\x92P`\x01\x95P`\x01\x94P[\x82`\0\x19\x11\x15a\"\xD0W`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x02\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8A\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x84\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x8D\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08\t`\x03\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x85\t\x98P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x84\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x08\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\x82\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x87\t\x08\x97P`\x01\x8D\x88\x1C\x16`\x01\x8D\x89\x1C\x16`\x01\x1B\x01\x90P\x80a\x1FxW\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x97PPPPPa\"\xC5V[`\x01\x81\x03a\x1F\xC7W\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x93P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x92P[`\x02\x81\x03a\x1F\xD6W\x8E\x93P\x8D\x92P[`\x03\x81\x03a\x1F\xE5W\x85\x93P\x84\x92P[\x89a\x1F\xFEWP\x91\x98P`\x01\x97P\x87\x96P\x94Pa\"\xC5\x90PV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x86\t\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x88\t\x08\x93P\x80a!\xB7W\x83a!\xB7W`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x86\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8D\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x86\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x8F\x08\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81`\x03\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x86\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x85\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x08\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8D`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x85\x08\x83\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8A\x87\t\x85\x08\x98PPPPPPa\"\xC5V[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x83\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8D\t\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8C\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8E\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87\x88\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83\x8D\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x86\x08\t\x08\x9APPPP\x80\x9APPPPP[`\x01\x83\x03\x92Pa\x1D\xFBV[`@Q\x86``\x82\x01R` \x81R` \x80\x82\x01R` `@\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa#*W`\0\x80\xFD[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81Q\x89\t\x97PPPPPPPP[\x94\x93PPPPV[`\0\x80\x80\x80\x86a#fW\x85\x85\x93P\x93PPPa#\xD4V[\x84a#xW\x87\x87\x93P\x93PPPa#\xD4V[\x85\x88\x14\x80\x15a#\x86WP\x84\x87\x14[\x15a#\xA7Wa#\x98\x88\x88`\x01\x80a#\xDDV[\x92\x9AP\x90\x98P\x92P\x90Pa#\xC1V[a#\xB6\x88\x88`\x01\x80\x8A\x8Aa%8V[\x92\x9AP\x90\x98P\x92P\x90P[a#\xCD\x88\x88\x84\x84a&\xBCV[\x93P\x93PPP[\x94P\x94\x92PPPV[`\0\x80`\0\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x02\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x83\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x8B\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8C\x08\t`\x03\t\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x89\t\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x83\x08\x87\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x84\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x88\x85\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x89\x08\x92P\x94P\x94P\x94P\x94\x90PV[`\0\x80`\0\x80\x88`\0\x03a%WWP\x84\x92P\x83\x91P`\x01\x90P\x80a&\xAFV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x98\x89\x03\x98\x89\x81\x89\x88\t\x08\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x89\t\x08\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x87\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x89\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x88\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8B\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84\x8B\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\t\x08\x92P[\x96P\x96P\x96P\x96\x92PPPV[`\0\x80`\0a&\xCA\x84a')V[\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x87\t\x91P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x87\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x93PPP\x94P\x94\x92PPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C~W`\0\x80\xFD[P\x80Ta'\x91\x90a.\xAAV[`\0\x82U\x80`\x1F\x10a'\xA1WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x05j\x91\x90[\x80\x82\x11\x15a\t\xDBW`\0\x81U`\x01\x01a'\xBBV[`\0\x80`@\x83\x85\x03\x12\x15a'\xE2W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a(\x08W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a(\x1FW`\0\x80\xFD[a\x05\xA0\x82a'\xF1V[`\0\x80\x83`\x1F\x84\x01\x12a(:W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(QW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a(iW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a(\x85W`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xA2W`\0\x80\xFD[a(\xAE\x86\x82\x87\x01a((V[\x94\x97\x90\x96P\x93\x94PPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a(\xF3Wa(\xF3a(\xBBV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)!Wa)!a(\xBBV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a)BWa)Ba(\xBBV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)aW`\0\x80\xFD[\x815a)ta)o\x82a))V[a(\xF9V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\x89W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a)\xB8W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xCEW`\0\x80\xFD[a#G\x84\x82\x85\x01a)PV[`\0\x80\x83`\x1F\x84\x01\x12a)\xECW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x03W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a(iW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a*1W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a*GW`\0\x80\xFD[a*S\x85\x82\x86\x01a)\xDAV[\x90\x96\x90\x95P\x93PPPPV[`\0a\x01`\x82\x84\x03\x12\x15a*rW`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a*\x8DW`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xA3W`\0\x80\xFD[a*\xAF\x86\x82\x87\x01a*_V[\x96` \x86\x015\x96P`@\x90\x95\x015\x94\x93PPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a*\xDAW`\0\x80\xFD[a*\xE3\x84a'\xF1V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xA2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a+\x10W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a+&W`\0\x80\xFD[a#G\x84\x82\x85\x01a*_V[`\0\x80`\0`@\x84\x86\x03\x12\x15a+GW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+dW`\0\x80\xFD[a(\xAE\x86\x82\x87\x01a)\xDAV[`\0` \x82\x84\x03\x12\x15a+\x82W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a+\xA4W\x81\x81\x01Q\x83\x82\x01R` \x01a+\x8CV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra+\xC5\x81` \x86\x01` \x86\x01a+\x89V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\xFF`\xF8\x1B\x88\x16\x81R`\0` `\xE0` \x84\x01Ra+\xFA`\xE0\x84\x01\x8Aa+\xADV[\x83\x81\x03`@\x85\x01Ra,\x0C\x81\x8Aa+\xADV[``\x85\x01\x89\x90R`\x01`\x01`\xA0\x1B\x03\x88\x16`\x80\x86\x01R`\xA0\x85\x01\x87\x90R\x84\x81\x03`\xC0\x86\x01R\x85Q\x80\x82R` \x80\x88\x01\x93P\x90\x91\x01\x90`\0[\x81\x81\x10\x15a,`W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a,DV[P\x90\x9C\x9BPPPPPPPPPPPPV[` \x81R`\0a\x05\xA0` \x83\x01\x84a+\xADV[`\0` \x82\x84\x03\x12\x15a,\x97W`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\xA0W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a,\xC5W`\0\x80\xFD[a,\xCE\x85a'\xF1V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xF0W`\0\x80\xFD[a,\xFC\x87\x82\x88\x01a((V[\x95\x98\x94\x97P\x95PPPPV[`\0\x80` \x83\x85\x03\x12\x15a-\x1BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-1W`\0\x80\xFD[a*S\x85\x82\x86\x01a((V[`\0\x82Qa-O\x81\x84` \x87\x01a+\x89V[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x825`^\x19\x836\x03\x01\x81\x12a-OW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a-\x9CW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a-\xB6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a(iW`\0\x80\xFD[`\0\x80\x85\x85\x11\x15a-\xDBW`\0\x80\xFD[\x83\x86\x11\x15a-\xE8W`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\x01`\x01`\xE0\x1B\x03\x19\x815\x81\x81\x16\x91`\x04\x85\x10\x15a.\x1DW\x80\x81\x86`\x04\x03`\x03\x1B\x1B\x83\x16\x16\x92P[PP\x92\x91PPV[`\0`\x01`\x01`@\x1B\x03\x80\x84\x11\x15a.?Wa.?a(\xBBV[\x83`\x05\x1B` a.Q` \x83\x01a(\xF9V[\x86\x81R\x91\x85\x01\x91` \x81\x01\x906\x84\x11\x15a.jW`\0\x80\xFD[\x86[\x84\x81\x10\x15a.\x9EW\x805\x86\x81\x11\x15a.\x84W`\0\x80\x81\xFD[a.\x906\x82\x8B\x01a)PV[\x84RP\x91\x83\x01\x91\x83\x01a.lV[P\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a.\xBEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a*rWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a/\x06Wa/\x06a.\xDEV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a/\x1FW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a/6W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a/JW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a/eWa/ea(\xBBV[`@R\x825\x81R` \x83\x015\x82\x81\x11\x15a/~W`\0\x80\xFD[a/\x8A\x87\x82\x86\x01a)PV[` \x83\x01RP\x95\x94PPPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a*rW`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a/\xD0W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0\x82`\x1F\x83\x01\x12a/\xF2W`\0\x80\xFD[\x81Qa0\0a)o\x82a))V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a0\x15W`\0\x80\xFD[a#G\x82` \x83\x01` \x87\x01a+\x89V[`\0` \x82\x84\x03\x12\x15a08W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0OW`\0\x80\xFD[\x90\x83\x01\x90`\xC0\x82\x86\x03\x12\x15a0cW`\0\x80\xFD[a0ka(\xD1V[\x82Q\x82\x81\x11\x15a0zW`\0\x80\xFD[a0\x86\x87\x82\x86\x01a/\xE1V[\x82RP` \x83\x01Q\x82\x81\x11\x15a0\x9BW`\0\x80\xFD[a0\xA7\x87\x82\x86\x01a/\xE1V[` \x83\x01RP`@\x83\x01Q`@\x82\x01R``\x83\x01Q``\x82\x01R`\x80\x83\x01Q`\x80\x82\x01R`\xA0\x83\x01Q`\xA0\x82\x01R\x80\x93PPPP\x92\x91PPV[`\x1F\x82\x11\x15a\x07\nW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a1\nWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a1)W\x82\x81U`\x01\x01a1\x16V[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a1JWa1Ja(\xBBV[a1^\x81a1X\x84Ta.\xAAV[\x84a0\xE1V[` \x80`\x1F\x83\x11`\x01\x81\x14a1\x93W`\0\x84\x15a1{WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua1)V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a1\xC2W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a1\xA3V[P\x85\x82\x10\x15a1\xE0W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[\x80\x82\x01\x80\x82\x11\x15a\x05/Wa\x05/a.\xDEV[l\x111\xB40\xB662\xB73\xB2\x91\x1D\x11`\x99\x1B\x81R\x81Q`\0\x90a2,\x81`\r\x85\x01` \x87\x01a+\x89V[`\x11`\xF9\x1B`\r\x93\x90\x91\x01\x92\x83\x01RP`\x0E\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15a2VW`\0\x80\xFD[PQ\x91\x90PV[`\0\x83Qa2o\x81\x84` \x88\x01a+\x89V[\x91\x90\x91\x01\x91\x82RP` \x01\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x05/Wa\x05/a.\xDEV\xFE\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%Q\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\0\xA2dipfsX\"\x12 v\xB8R\xC4N\x04\xB7(<\xDC\\\xE0:a\xAFh%I\x82*%\xC9\xCD\x17 \xCFHp\xE5B\xBD\xDDdsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static MOCKCOINBASESMARTWALLET_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct MockCoinbaseSmartWallet(::ethers::contract::Contract); + impl ::core::clone::Clone for MockCoinbaseSmartWallet { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for MockCoinbaseSmartWallet { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for MockCoinbaseSmartWallet { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for MockCoinbaseSmartWallet { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(MockCoinbaseSmartWallet)) + .field(&self.address()) + .finish() + } + } + impl MockCoinbaseSmartWallet { + /// 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(), + MOCKCOINBASESMARTWALLET_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( + MOCKCOINBASESMARTWALLET_ABI.clone(), + MOCKCOINBASESMARTWALLET_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `REPLAYABLE_NONCE_KEY` (0x88ce4c7c) function + pub fn replayable_nonce_key( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([136, 206, 76, 124], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `addOwnerAddress` (0x0f0f3f24) function + pub fn add_owner_address( + &self, + owner: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([15, 15, 63, 36], owner) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `addOwnerPublicKey` (0x29565e3b) function + pub fn add_owner_public_key( + &self, + x: [u8; 32], + y: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([41, 86, 94, 59], (x, y)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `canSkipChainIdValidation` (0x9f9bcb34) function + pub fn can_skip_chain_id_validation( + &self, + function_selector: [u8; 4], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([159, 155, 203, 52], function_selector) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `domainSeparator` (0xf698da25) function + pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([246, 152, 218, 37], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `eip712Domain` (0x84b0196e) function + pub fn eip_712_domain( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ( + [u8; 1], + ::std::string::String, + ::std::string::String, + ::ethers::core::types::U256, + ::ethers::core::types::Address, + [u8; 32], + ::std::vec::Vec<::ethers::core::types::U256>, + ), + > { + self.0 + .method_hash([132, 176, 25, 110], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `entryPoint` (0xb0d691fe) function + pub fn entry_point( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([176, 214, 145, 254], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `execute` (0xb61d27f6) function + pub fn execute( + &self, + target: ::ethers::core::types::Address, + value: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([182, 29, 39, 246], (target, value, data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `executeBatch` (0x34fcd5be) function + pub fn execute_batch( + &self, + calls: ::std::vec::Vec, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([52, 252, 213, 190], calls) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `executeBatch` (0x577f3cbf) function + pub fn execute_batch_with_filler( + &self, + filler: ::ethers::core::types::U256, + calls: ::std::vec::Vec, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([87, 127, 60, 191], (filler, calls)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `executeWithoutChainIdValidation` (0xbf6ba1fc) function + pub fn execute_without_chain_id_validation( + &self, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([191, 107, 161, 252], data) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getUserOpHashWithoutChainId` (0x4f6e7f22) function + pub fn get_user_op_hash_without_chain_id( + &self, + user_op: UserOperation, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([79, 110, 127, 34], (user_op,)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `implementation` (0x5c60da1b) function + pub fn implementation( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([92, 96, 218, 27], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `initialize` (0x6f2de70e) function + pub fn initialize( + &self, + owners: ::std::vec::Vec<::ethers::core::types::Bytes>, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([111, 45, 231, 14], owners) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerAddress` (0xa2e1a8d8) function + pub fn is_owner_address( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([162, 225, 168, 216], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerBytes` (0x1ca5393f) function + pub fn is_owner_bytes( + &self, + account: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([28, 165, 57, 63], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerPublicKey` (0x066a1eb7) function + pub fn is_owner_public_key( + &self, + x: [u8; 32], + y: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 106, 30, 183], (x, y)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isValidSignature` (0x1626ba7e) function + pub fn is_valid_signature( + &self, + hash: [u8; 32], + signature: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([22, 38, 186, 126], (hash, signature)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `nextOwnerIndex` (0xd948fd2e) function + pub fn next_owner_index( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([217, 72, 253, 46], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `ownerAtIndex` (0x8ea69029) function + pub fn owner_at_index( + &self, + index: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([142, 166, 144, 41], index) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `proxiableUUID` (0x52d1902d) function + pub fn proxiable_uuid(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([82, 209, 144, 45], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `removeOwnerAtIndex` (0x72de3b5a) function + pub fn remove_owner_at_index( + &self, + index: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([114, 222, 59, 90], index) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `replaySafeHash` (0xce1506be) function + pub fn replay_safe_hash( + &self, + hash: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([206, 21, 6, 190], hash) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function + pub fn upgrade_to_and_call( + &self, + new_implementation: ::ethers::core::types::Address, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([79, 30, 242, 134], (new_implementation, data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `validateUserOp` (0x3a871cdd) function + pub fn validate_user_op( + &self, + user_op: UserOperation, + user_op_hash: [u8; 32], + missing_account_funds: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [58, 135, 28, 221], + (user_op, user_op_hash, missing_account_funds), + ) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `AddOwner` event + pub fn add_owner_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AddOwnerFilter> { + self.0.event() + } + ///Gets the contract's `RemoveOwner` event + pub fn remove_owner_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, RemoveOwnerFilter> + { + self.0.event() + } + ///Gets the contract's `Upgraded` event + pub fn upgraded_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradedFilter> { + 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, + MockCoinbaseSmartWalletEvents, + > { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for MockCoinbaseSmartWallet + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `AlreadyOwner` with signature `AlreadyOwner(bytes)` and selector `0x8d16255a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "AlreadyOwner", abi = "AlreadyOwner(bytes)")] + pub struct AlreadyOwner { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `Initialized` with signature `Initialized()` and selector `0x5daa87a0` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Initialized", abi = "Initialized()")] + pub struct Initialized; + ///Custom Error type `InvalidEthereumAddressOwner` with signature `InvalidEthereumAddressOwner(bytes)` and selector `0xbff1ac65` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidEthereumAddressOwner", + abi = "InvalidEthereumAddressOwner(bytes)" + )] + pub struct InvalidEthereumAddressOwner { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `InvalidNonceKey` with signature `InvalidNonceKey(uint256)` and selector `0x2ef37813` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "InvalidNonceKey", abi = "InvalidNonceKey(uint256)")] + pub struct InvalidNonceKey { + pub key: ::ethers::core::types::U256, + } + ///Custom Error type `InvalidOwnerBytesLength` with signature `InvalidOwnerBytesLength(bytes)` and selector `0x4eeab722` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidOwnerBytesLength", + abi = "InvalidOwnerBytesLength(bytes)" + )] + pub struct InvalidOwnerBytesLength { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `NoOwnerAtIndex` with signature `NoOwnerAtIndex(uint256)` and selector `0x68188e7a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NoOwnerAtIndex", abi = "NoOwnerAtIndex(uint256)")] + pub struct NoOwnerAtIndex { + pub index: ::ethers::core::types::U256, + } + ///Custom Error type `SelectorNotAllowed` with signature `SelectorNotAllowed(bytes4)` and selector `0x3b06e146` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "SelectorNotAllowed", abi = "SelectorNotAllowed(bytes4)")] + pub struct SelectorNotAllowed { + pub selector: [u8; 4], + } + ///Custom Error type `Unauthorized` with signature `Unauthorized()` and selector `0x82b42900` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Unauthorized", abi = "Unauthorized()")] + pub struct Unauthorized; + ///Custom Error type `UnauthorizedCallContext` with signature `UnauthorizedCallContext()` and selector `0x9f03a026` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "UnauthorizedCallContext", abi = "UnauthorizedCallContext()")] + pub struct UnauthorizedCallContext; + ///Custom Error type `UpgradeFailed` with signature `UpgradeFailed()` and selector `0x55299b49` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "UpgradeFailed", abi = "UpgradeFailed()")] + pub struct UpgradeFailed; + ///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 MockCoinbaseSmartWalletErrors { + AlreadyOwner(AlreadyOwner), + Initialized(Initialized), + InvalidEthereumAddressOwner(InvalidEthereumAddressOwner), + InvalidNonceKey(InvalidNonceKey), + InvalidOwnerBytesLength(InvalidOwnerBytesLength), + NoOwnerAtIndex(NoOwnerAtIndex), + SelectorNotAllowed(SelectorNotAllowed), + Unauthorized(Unauthorized), + UnauthorizedCallContext(UnauthorizedCallContext), + UpgradeFailed(UpgradeFailed), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for MockCoinbaseSmartWalletErrors { + 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::AlreadyOwner(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Initialized(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidEthereumAddressOwner(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::InvalidNonceKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidOwnerBytesLength(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NoOwnerAtIndex(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SelectorNotAllowed(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Unauthorized(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UnauthorizedCallContext(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::UpgradeFailed(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MockCoinbaseSmartWalletErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::AlreadyOwner(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Initialized(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidEthereumAddressOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidNonceKey(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidOwnerBytesLength(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::NoOwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SelectorNotAllowed(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Unauthorized(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::UnauthorizedCallContext(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UpgradeFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for MockCoinbaseSmartWalletErrors { + 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 + } + _ => false, + } + } + } + impl ::core::fmt::Display for MockCoinbaseSmartWalletErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AlreadyOwner(element) => ::core::fmt::Display::fmt(element, f), + Self::Initialized(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidEthereumAddressOwner(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidNonceKey(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidOwnerBytesLength(element) => ::core::fmt::Display::fmt(element, f), + Self::NoOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::SelectorNotAllowed(element) => ::core::fmt::Display::fmt(element, f), + Self::Unauthorized(element) => ::core::fmt::Display::fmt(element, f), + Self::UnauthorizedCallContext(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeFailed(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for MockCoinbaseSmartWalletErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletErrors { + fn from(value: AlreadyOwner) -> Self { + Self::AlreadyOwner(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletErrors { + fn from(value: Initialized) -> Self { + Self::Initialized(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletErrors { + fn from(value: InvalidEthereumAddressOwner) -> Self { + Self::InvalidEthereumAddressOwner(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletErrors { + fn from(value: InvalidNonceKey) -> Self { + Self::InvalidNonceKey(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletErrors { + fn from(value: InvalidOwnerBytesLength) -> Self { + Self::InvalidOwnerBytesLength(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletErrors { + fn from(value: NoOwnerAtIndex) -> Self { + Self::NoOwnerAtIndex(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletErrors { + fn from(value: SelectorNotAllowed) -> Self { + Self::SelectorNotAllowed(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletErrors { + fn from(value: Unauthorized) -> Self { + Self::Unauthorized(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletErrors { + fn from(value: UnauthorizedCallContext) -> Self { + Self::UnauthorizedCallContext(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletErrors { + fn from(value: UpgradeFailed) -> Self { + Self::UpgradeFailed(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "AddOwner", abi = "AddOwner(uint256,bytes)")] + pub struct AddOwnerFilter { + #[ethevent(indexed)] + pub index: ::ethers::core::types::U256, + pub owner: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "RemoveOwner", abi = "RemoveOwner(uint256,bytes)")] + pub struct RemoveOwnerFilter { + #[ethevent(indexed)] + pub index: ::ethers::core::types::U256, + pub owner: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] + pub struct UpgradedFilter { + #[ethevent(indexed)] + pub implementation: ::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 MockCoinbaseSmartWalletEvents { + AddOwnerFilter(AddOwnerFilter), + RemoveOwnerFilter(RemoveOwnerFilter), + UpgradedFilter(UpgradedFilter), + } + impl ::ethers::contract::EthLogDecode for MockCoinbaseSmartWalletEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = AddOwnerFilter::decode_log(log) { + return Ok(MockCoinbaseSmartWalletEvents::AddOwnerFilter(decoded)); + } + if let Ok(decoded) = RemoveOwnerFilter::decode_log(log) { + return Ok(MockCoinbaseSmartWalletEvents::RemoveOwnerFilter(decoded)); + } + if let Ok(decoded) = UpgradedFilter::decode_log(log) { + return Ok(MockCoinbaseSmartWalletEvents::UpgradedFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for MockCoinbaseSmartWalletEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::RemoveOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradedFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletEvents { + fn from(value: AddOwnerFilter) -> Self { + Self::AddOwnerFilter(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletEvents { + fn from(value: RemoveOwnerFilter) -> Self { + Self::RemoveOwnerFilter(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletEvents { + fn from(value: UpgradedFilter) -> Self { + Self::UpgradedFilter(value) + } + } + ///Container type for all input parameters for the `REPLAYABLE_NONCE_KEY` function with signature `REPLAYABLE_NONCE_KEY()` and selector `0x88ce4c7c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "REPLAYABLE_NONCE_KEY", abi = "REPLAYABLE_NONCE_KEY()")] + pub struct ReplayableNonceKeyCall; + ///Container type for all input parameters for the `addOwnerAddress` function with signature `addOwnerAddress(address)` and selector `0x0f0f3f24` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "addOwnerAddress", abi = "addOwnerAddress(address)")] + pub struct AddOwnerAddressCall { + pub owner: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `addOwnerPublicKey` function with signature `addOwnerPublicKey(bytes32,bytes32)` and selector `0x29565e3b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "addOwnerPublicKey", abi = "addOwnerPublicKey(bytes32,bytes32)")] + pub struct AddOwnerPublicKeyCall { + pub x: [u8; 32], + pub y: [u8; 32], + } + ///Container type for all input parameters for the `canSkipChainIdValidation` function with signature `canSkipChainIdValidation(bytes4)` and selector `0x9f9bcb34` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "canSkipChainIdValidation", + abi = "canSkipChainIdValidation(bytes4)" + )] + pub struct CanSkipChainIdValidationCall { + pub function_selector: [u8; 4], + } + ///Container type for all input parameters for the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "domainSeparator", abi = "domainSeparator()")] + pub struct DomainSeparatorCall; + ///Container type for all input parameters for the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "eip712Domain", abi = "eip712Domain()")] + pub struct Eip712DomainCall; + ///Container type for all input parameters for the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "entryPoint", abi = "entryPoint()")] + pub struct EntryPointCall; + ///Container type for all input parameters for the `execute` function with signature `execute(address,uint256,bytes)` and selector `0xb61d27f6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "execute", abi = "execute(address,uint256,bytes)")] + pub struct ExecuteCall { + pub target: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((address,uint256,bytes)[])` and selector `0x34fcd5be` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "executeBatch", abi = "executeBatch((address,uint256,bytes)[])")] + pub struct ExecuteBatchCall { + pub calls: ::std::vec::Vec, + } + ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch(uint256,(address,uint256,bytes)[])` and selector `0x577f3cbf` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "executeBatch", + abi = "executeBatch(uint256,(address,uint256,bytes)[])" + )] + pub struct ExecuteBatchWithFillerCall { + pub filler: ::ethers::core::types::U256, + pub calls: ::std::vec::Vec, + } + ///Container type for all input parameters for the `executeWithoutChainIdValidation` function with signature `executeWithoutChainIdValidation(bytes)` and selector `0xbf6ba1fc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "executeWithoutChainIdValidation", + abi = "executeWithoutChainIdValidation(bytes)" + )] + pub struct ExecuteWithoutChainIdValidationCall { + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `getUserOpHashWithoutChainId` function with signature `getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x4f6e7f22` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "getUserOpHashWithoutChainId", + abi = "getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" + )] + pub struct GetUserOpHashWithoutChainIdCall { + pub user_op: UserOperation, + } + ///Container type for all input parameters for the `implementation` function with signature `implementation()` and selector `0x5c60da1b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "implementation", abi = "implementation()")] + pub struct ImplementationCall; + ///Container type for all input parameters for the `initialize` function with signature `initialize(bytes[])` and selector `0x6f2de70e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "initialize", abi = "initialize(bytes[])")] + pub struct InitializeCall { + pub owners: ::std::vec::Vec<::ethers::core::types::Bytes>, + } + ///Container type for all input parameters for the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerAddress", abi = "isOwnerAddress(address)")] + pub struct IsOwnerAddressCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerBytes", abi = "isOwnerBytes(bytes)")] + pub struct IsOwnerBytesCall { + pub account: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerPublicKey", abi = "isOwnerPublicKey(bytes32,bytes32)")] + pub struct IsOwnerPublicKeyCall { + pub x: [u8; 32], + pub y: [u8; 32], + } + ///Container type for all input parameters for the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isValidSignature", abi = "isValidSignature(bytes32,bytes)")] + pub struct IsValidSignatureCall { + pub hash: [u8; 32], + pub signature: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nextOwnerIndex", abi = "nextOwnerIndex()")] + pub struct NextOwnerIndexCall; + ///Container type for all input parameters for the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "ownerAtIndex", abi = "ownerAtIndex(uint256)")] + pub struct OwnerAtIndexCall { + pub index: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] + pub struct ProxiableUUIDCall; + ///Container type for all input parameters for the `removeOwnerAtIndex` function with signature `removeOwnerAtIndex(uint256)` and selector `0x72de3b5a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "removeOwnerAtIndex", abi = "removeOwnerAtIndex(uint256)")] + pub struct RemoveOwnerAtIndexCall { + pub index: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "replaySafeHash", abi = "replaySafeHash(bytes32)")] + pub struct ReplaySafeHashCall { + pub hash: [u8; 32], + } + ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] + pub struct UpgradeToAndCallCall { + pub new_implementation: ::ethers::core::types::Address, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `validateUserOp` function with signature `validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0x3a871cdd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "validateUserOp", + abi = "validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)" + )] + pub struct ValidateUserOpCall { + pub user_op: UserOperation, + pub user_op_hash: [u8; 32], + pub missing_account_funds: ::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 MockCoinbaseSmartWalletCalls { + ReplayableNonceKey(ReplayableNonceKeyCall), + AddOwnerAddress(AddOwnerAddressCall), + AddOwnerPublicKey(AddOwnerPublicKeyCall), + CanSkipChainIdValidation(CanSkipChainIdValidationCall), + DomainSeparator(DomainSeparatorCall), + Eip712Domain(Eip712DomainCall), + EntryPoint(EntryPointCall), + Execute(ExecuteCall), + ExecuteBatch(ExecuteBatchCall), + ExecuteBatchWithFiller(ExecuteBatchWithFillerCall), + ExecuteWithoutChainIdValidation(ExecuteWithoutChainIdValidationCall), + GetUserOpHashWithoutChainId(GetUserOpHashWithoutChainIdCall), + Implementation(ImplementationCall), + Initialize(InitializeCall), + IsOwnerAddress(IsOwnerAddressCall), + IsOwnerBytes(IsOwnerBytesCall), + IsOwnerPublicKey(IsOwnerPublicKeyCall), + IsValidSignature(IsValidSignatureCall), + NextOwnerIndex(NextOwnerIndexCall), + OwnerAtIndex(OwnerAtIndexCall), + ProxiableUUID(ProxiableUUIDCall), + RemoveOwnerAtIndex(RemoveOwnerAtIndexCall), + ReplaySafeHash(ReplaySafeHashCall), + UpgradeToAndCall(UpgradeToAndCallCall), + ValidateUserOp(ValidateUserOpCall), + } + impl ::ethers::core::abi::AbiDecode for MockCoinbaseSmartWalletCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ReplayableNonceKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AddOwnerAddress(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AddOwnerPublicKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::CanSkipChainIdValidation(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::DomainSeparator(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::Eip712Domain(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::EntryPoint(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Execute(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ExecuteBatch(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ExecuteBatchWithFiller(decoded)); + } + if let Ok(decoded) = + ::decode( + data, + ) + { + return Ok(Self::ExecuteWithoutChainIdValidation(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::GetUserOpHashWithoutChainId(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::Implementation(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Initialize(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsOwnerAddress(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::IsOwnerBytes(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsOwnerPublicKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsValidSignature(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::NextOwnerIndex(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::OwnerAtIndex(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ProxiableUUID(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::RemoveOwnerAtIndex(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ReplaySafeHash(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UpgradeToAndCall(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidateUserOp(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MockCoinbaseSmartWalletCalls { + fn encode(self) -> Vec { + match self { + Self::ReplayableNonceKey(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::AddOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::AddOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::CanSkipChainIdValidation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Eip712Domain(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::EntryPoint(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ExecuteBatch(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ExecuteBatchWithFiller(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ExecuteWithoutChainIdValidation(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GetUserOpHashWithoutChainId(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Implementation(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Initialize(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerBytes(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsValidSignature(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NextOwnerIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ProxiableUUID(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RemoveOwnerAtIndex(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ReplaySafeHash(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::UpgradeToAndCall(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ValidateUserOp(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for MockCoinbaseSmartWalletCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ReplayableNonceKey(element) => ::core::fmt::Display::fmt(element, f), + Self::AddOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::AddOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), + Self::CanSkipChainIdValidation(element) => ::core::fmt::Display::fmt(element, f), + Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), + Self::Eip712Domain(element) => ::core::fmt::Display::fmt(element, f), + Self::EntryPoint(element) => ::core::fmt::Display::fmt(element, f), + Self::Execute(element) => ::core::fmt::Display::fmt(element, f), + Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), + Self::ExecuteBatchWithFiller(element) => ::core::fmt::Display::fmt(element, f), + Self::ExecuteWithoutChainIdValidation(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::GetUserOpHashWithoutChainId(element) => ::core::fmt::Display::fmt(element, f), + Self::Implementation(element) => ::core::fmt::Display::fmt(element, f), + Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerBytes(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), + Self::IsValidSignature(element) => ::core::fmt::Display::fmt(element, f), + Self::NextOwnerIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), + Self::RemoveOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::ReplaySafeHash(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateUserOp(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: ReplayableNonceKeyCall) -> Self { + Self::ReplayableNonceKey(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: AddOwnerAddressCall) -> Self { + Self::AddOwnerAddress(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: AddOwnerPublicKeyCall) -> Self { + Self::AddOwnerPublicKey(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: CanSkipChainIdValidationCall) -> Self { + Self::CanSkipChainIdValidation(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: DomainSeparatorCall) -> Self { + Self::DomainSeparator(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: Eip712DomainCall) -> Self { + Self::Eip712Domain(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: EntryPointCall) -> Self { + Self::EntryPoint(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: ExecuteCall) -> Self { + Self::Execute(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: ExecuteBatchCall) -> Self { + Self::ExecuteBatch(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: ExecuteBatchWithFillerCall) -> Self { + Self::ExecuteBatchWithFiller(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: ExecuteWithoutChainIdValidationCall) -> Self { + Self::ExecuteWithoutChainIdValidation(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: GetUserOpHashWithoutChainIdCall) -> Self { + Self::GetUserOpHashWithoutChainId(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: ImplementationCall) -> Self { + Self::Implementation(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: InitializeCall) -> Self { + Self::Initialize(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: IsOwnerAddressCall) -> Self { + Self::IsOwnerAddress(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: IsOwnerBytesCall) -> Self { + Self::IsOwnerBytes(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: IsOwnerPublicKeyCall) -> Self { + Self::IsOwnerPublicKey(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: IsValidSignatureCall) -> Self { + Self::IsValidSignature(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: NextOwnerIndexCall) -> Self { + Self::NextOwnerIndex(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: OwnerAtIndexCall) -> Self { + Self::OwnerAtIndex(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: ProxiableUUIDCall) -> Self { + Self::ProxiableUUID(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: RemoveOwnerAtIndexCall) -> Self { + Self::RemoveOwnerAtIndex(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: ReplaySafeHashCall) -> Self { + Self::ReplaySafeHash(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: UpgradeToAndCallCall) -> Self { + Self::UpgradeToAndCall(value) + } + } + impl ::core::convert::From for MockCoinbaseSmartWalletCalls { + fn from(value: ValidateUserOpCall) -> Self { + Self::ValidateUserOp(value) + } + } + ///Container type for all return fields from the `REPLAYABLE_NONCE_KEY` function with signature `REPLAYABLE_NONCE_KEY()` and selector `0x88ce4c7c` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ReplayableNonceKeyReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `canSkipChainIdValidation` function with signature `canSkipChainIdValidation(bytes4)` and selector `0x9f9bcb34` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct CanSkipChainIdValidationReturn(pub bool); + ///Container type for all return fields from the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` + #[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 `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct Eip712DomainReturn { + pub fields: [u8; 1], + pub name: ::std::string::String, + pub version: ::std::string::String, + pub chain_id: ::ethers::core::types::U256, + pub verifying_contract: ::ethers::core::types::Address, + pub salt: [u8; 32], + pub extensions: ::std::vec::Vec<::ethers::core::types::U256>, + } + ///Container type for all return fields from the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct EntryPointReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `getUserOpHashWithoutChainId` function with signature `getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x4f6e7f22` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetUserOpHashWithoutChainIdReturn { + pub user_op_hash: [u8; 32], + } + ///Container type for all return fields from the `implementation` function with signature `implementation()` and selector `0x5c60da1b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ImplementationReturn { + pub address: ::ethers::core::types::Address, + } + ///Container type for all return fields from the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerAddressReturn(pub bool); + ///Container type for all return fields from the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerBytesReturn(pub bool); + ///Container type for all return fields from the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerPublicKeyReturn(pub bool); + ///Container type for all return fields from the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsValidSignatureReturn { + pub result: [u8; 4], + } + ///Container type for all return fields from the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NextOwnerIndexReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct OwnerAtIndexReturn(pub ::ethers::core::types::Bytes); + ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ProxiableUUIDReturn(pub [u8; 32]); + ///Container type for all return fields from the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ReplaySafeHashReturn(pub [u8; 32]); + ///Container type for all return fields from the `validateUserOp` function with signature `validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0x3a871cdd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateUserOpReturn { + pub validation_data: ::ethers::core::types::U256, + } +} diff --git a/xmtp_id/src/bindings/mock_entry_point.rs b/xmtp_id/src/bindings/mock_entry_point.rs new file mode 100644 index 000000000..c5d5cbd42 --- /dev/null +++ b/xmtp_id/src/bindings/mock_entry_point.rs @@ -0,0 +1,468 @@ +pub use mock_entry_point::*; +/// 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_entry_point { + 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("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("depositTo"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("depositTo"), + 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"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("validateUserOp"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validateUserOp"), + 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("userOp"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::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::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Bytes, + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct UserOperation"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userOpHash"), + 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("missingAccountFunds",), + 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("validationData"), + 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("withdrawTo"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("withdrawTo"), + 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::Payable, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: true, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static MOCKENTRYPOINT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x06O\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0CW`\x005`\xE0\x1C\x80c \\(x\x14a\0XW\x80cp\xA0\x821\x14a\0kW\x80c\xA1\x9D\x19\xD5\x14a\0\xAAW\x80c\xB7`\xFA\xF9\x14a\0\xBDW`\0\x80\xFD[6a\0SWa\0Q3a\0\xCBV[\0[`\0\x80\xFD[a\0Qa\0f6`\x04a\x02\x1DV[a\0\xFBV[4\x80\x15a\0wW`\0\x80\xFD[Pa\0\x98a\0\x866`\x04a\x02GV[`\0` \x81\x90R\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x98a\0\xB86`\x04a\x036V[a\x01\x82V[a\0Qa\0\xCB6`\x04a\x02GV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T4\x92\x90a\0\xF3\x90\x84\x90a\x04\x9CV[\x90\x91UPPPV[3`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90a\x01\x1A\x90\x84\x90a\x04\xB5V[\x90\x91UPP`@Q`\0\x90`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x83\x90\x83\x81\x81\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x01jW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01oV[``\x91P[PP\x90P\x80a\x01}W`\0\x80\xFD[PPPV[`@Qc:\x87\x1C\xDD`\xE0\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c:\x87\x1C\xDD\x90a\x01\xB5\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x05\x0EV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xF8\x91\x90a\x06\0V[\x95\x94PPPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x18W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x020W`\0\x80\xFD[a\x029\x83a\x02\x01V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x02YW`\0\x80\xFD[a\x02b\x82a\x02\x01V[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Qa\x01`\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\xA3Wa\x02\xA3a\x02iV[`@R\x90V[`\0\x82`\x1F\x83\x01\x12a\x02\xBAW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\xD5Wa\x02\xD5a\x02iV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x02\xFDWa\x02\xFDa\x02iV[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\x03\x16W`\0\x80\xFD[\x83` \x87\x01` \x83\x017`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x03LW`\0\x80\xFD[a\x03U\x85a\x02\x01V[\x93P` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03rW`\0\x80\xFD[\x90\x86\x01\x90a\x01`\x82\x89\x03\x12\x15a\x03\x87W`\0\x80\xFD[a\x03\x8Fa\x02\x7FV[a\x03\x98\x83a\x02\x01V[\x81R` \x83\x015` \x82\x01R`@\x83\x015\x82\x81\x11\x15a\x03\xB6W`\0\x80\xFD[a\x03\xC2\x8A\x82\x86\x01a\x02\xA9V[`@\x83\x01RP``\x83\x015\x82\x81\x11\x15a\x03\xDAW`\0\x80\xFD[a\x03\xE6\x8A\x82\x86\x01a\x02\xA9V[``\x83\x01RP`\x80\x83\x015`\x80\x82\x01R`\xA0\x83\x015`\xA0\x82\x01R`\xC0\x83\x015`\xC0\x82\x01R`\xE0\x83\x015`\xE0\x82\x01Ra\x01\0\x80\x84\x015\x81\x83\x01RPa\x01 \x80\x84\x015\x83\x81\x11\x15a\x044W`\0\x80\xFD[a\x04@\x8B\x82\x87\x01a\x02\xA9V[\x82\x84\x01RPPa\x01@\x80\x84\x015\x83\x81\x11\x15a\x04ZW`\0\x80\xFD[a\x04f\x8B\x82\x87\x01a\x02\xA9V[\x91\x83\x01\x91\x90\x91RP\x95\x98\x95\x97PPPP`@\x84\x015\x93``\x015\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xAFWa\x04\xAFa\x04\x86V[\x92\x91PPV[\x81\x81\x03\x81\x81\x11\x15a\x04\xAFWa\x04\xAFa\x04\x86V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x04\xEEW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x04\xD2V[P`\0` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[``\x81Ra\x05(``\x82\x01\x85Q`\x01`\x01`\xA0\x1B\x03\x16\x90RV[` \x84\x01Q`\x80\x82\x01R`\0`@\x85\x01Qa\x01`\x80`\xA0\x85\x01Ra\x05Pa\x01\xC0\x85\x01\x83a\x04\xC8V[\x91P``\x87\x01Q`_\x19\x80\x86\x85\x03\x01`\xC0\x87\x01Ra\x05n\x84\x83a\x04\xC8V[\x93P`\x80\x89\x01Q`\xE0\x87\x01R`\xA0\x89\x01Q\x91Pa\x01\0\x82\x81\x88\x01R`\xC0\x8A\x01Q\x92Pa\x01 \x83\x81\x89\x01R`\xE0\x8B\x01Q\x93Pa\x01@\x84\x81\x8A\x01R\x82\x8C\x01Q\x86\x8A\x01R\x81\x8C\x01Q\x95P\x83\x89\x88\x03\x01a\x01\x80\x8A\x01Ra\x05\xCA\x87\x87a\x04\xC8V[\x96P\x80\x8C\x01Q\x95PPPP\x80\x86\x85\x03\x01a\x01\xA0\x87\x01RPPa\x05\xEC\x82\x82a\x04\xC8V[` \x85\x01\x96\x90\x96RPPP`@\x01R\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\x12W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xF4:J\xCD\xE6\xE3\xF3\xAF\xC1\xCC\xFA\xE5\xEF~?\x1B$9n\x8FV\x92b\x02\xC8\xBC\xF9\xD3\xD8|\xAA\xBCdsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static MOCKENTRYPOINT_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0CW`\x005`\xE0\x1C\x80c \\(x\x14a\0XW\x80cp\xA0\x821\x14a\0kW\x80c\xA1\x9D\x19\xD5\x14a\0\xAAW\x80c\xB7`\xFA\xF9\x14a\0\xBDW`\0\x80\xFD[6a\0SWa\0Q3a\0\xCBV[\0[`\0\x80\xFD[a\0Qa\0f6`\x04a\x02\x1DV[a\0\xFBV[4\x80\x15a\0wW`\0\x80\xFD[Pa\0\x98a\0\x866`\x04a\x02GV[`\0` \x81\x90R\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x98a\0\xB86`\x04a\x036V[a\x01\x82V[a\0Qa\0\xCB6`\x04a\x02GV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T4\x92\x90a\0\xF3\x90\x84\x90a\x04\x9CV[\x90\x91UPPPV[3`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90a\x01\x1A\x90\x84\x90a\x04\xB5V[\x90\x91UPP`@Q`\0\x90`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x83\x90\x83\x81\x81\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x01jW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01oV[``\x91P[PP\x90P\x80a\x01}W`\0\x80\xFD[PPPV[`@Qc:\x87\x1C\xDD`\xE0\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c:\x87\x1C\xDD\x90a\x01\xB5\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x05\x0EV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xF8\x91\x90a\x06\0V[\x95\x94PPPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x18W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x020W`\0\x80\xFD[a\x029\x83a\x02\x01V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x02YW`\0\x80\xFD[a\x02b\x82a\x02\x01V[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Qa\x01`\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\xA3Wa\x02\xA3a\x02iV[`@R\x90V[`\0\x82`\x1F\x83\x01\x12a\x02\xBAW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\xD5Wa\x02\xD5a\x02iV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x02\xFDWa\x02\xFDa\x02iV[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\x03\x16W`\0\x80\xFD[\x83` \x87\x01` \x83\x017`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x03LW`\0\x80\xFD[a\x03U\x85a\x02\x01V[\x93P` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03rW`\0\x80\xFD[\x90\x86\x01\x90a\x01`\x82\x89\x03\x12\x15a\x03\x87W`\0\x80\xFD[a\x03\x8Fa\x02\x7FV[a\x03\x98\x83a\x02\x01V[\x81R` \x83\x015` \x82\x01R`@\x83\x015\x82\x81\x11\x15a\x03\xB6W`\0\x80\xFD[a\x03\xC2\x8A\x82\x86\x01a\x02\xA9V[`@\x83\x01RP``\x83\x015\x82\x81\x11\x15a\x03\xDAW`\0\x80\xFD[a\x03\xE6\x8A\x82\x86\x01a\x02\xA9V[``\x83\x01RP`\x80\x83\x015`\x80\x82\x01R`\xA0\x83\x015`\xA0\x82\x01R`\xC0\x83\x015`\xC0\x82\x01R`\xE0\x83\x015`\xE0\x82\x01Ra\x01\0\x80\x84\x015\x81\x83\x01RPa\x01 \x80\x84\x015\x83\x81\x11\x15a\x044W`\0\x80\xFD[a\x04@\x8B\x82\x87\x01a\x02\xA9V[\x82\x84\x01RPPa\x01@\x80\x84\x015\x83\x81\x11\x15a\x04ZW`\0\x80\xFD[a\x04f\x8B\x82\x87\x01a\x02\xA9V[\x91\x83\x01\x91\x90\x91RP\x95\x98\x95\x97PPPP`@\x84\x015\x93``\x015\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xAFWa\x04\xAFa\x04\x86V[\x92\x91PPV[\x81\x81\x03\x81\x81\x11\x15a\x04\xAFWa\x04\xAFa\x04\x86V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x04\xEEW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x04\xD2V[P`\0` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[``\x81Ra\x05(``\x82\x01\x85Q`\x01`\x01`\xA0\x1B\x03\x16\x90RV[` \x84\x01Q`\x80\x82\x01R`\0`@\x85\x01Qa\x01`\x80`\xA0\x85\x01Ra\x05Pa\x01\xC0\x85\x01\x83a\x04\xC8V[\x91P``\x87\x01Q`_\x19\x80\x86\x85\x03\x01`\xC0\x87\x01Ra\x05n\x84\x83a\x04\xC8V[\x93P`\x80\x89\x01Q`\xE0\x87\x01R`\xA0\x89\x01Q\x91Pa\x01\0\x82\x81\x88\x01R`\xC0\x8A\x01Q\x92Pa\x01 \x83\x81\x89\x01R`\xE0\x8B\x01Q\x93Pa\x01@\x84\x81\x8A\x01R\x82\x8C\x01Q\x86\x8A\x01R\x81\x8C\x01Q\x95P\x83\x89\x88\x03\x01a\x01\x80\x8A\x01Ra\x05\xCA\x87\x87a\x04\xC8V[\x96P\x80\x8C\x01Q\x95PPPP\x80\x86\x85\x03\x01a\x01\xA0\x87\x01RPPa\x05\xEC\x82\x82a\x04\xC8V[` \x85\x01\x96\x90\x96RPPP`@\x01R\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\x12W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xF4:J\xCD\xE6\xE3\xF3\xAF\xC1\xCC\xFA\xE5\xEF~?\x1B$9n\x8FV\x92b\x02\xC8\xBC\xF9\xD3\xD8|\xAA\xBCdsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static MOCKENTRYPOINT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct MockEntryPoint(::ethers::contract::Contract); + impl ::core::clone::Clone for MockEntryPoint { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for MockEntryPoint { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for MockEntryPoint { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for MockEntryPoint { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(MockEntryPoint)) + .field(&self.address()) + .finish() + } + } + impl MockEntryPoint { + /// 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(), + MOCKENTRYPOINT_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( + MOCKENTRYPOINT_ABI.clone(), + MOCKENTRYPOINT_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///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 `depositTo` (0xb760faf9) function + pub fn deposit_to( + &self, + to: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([183, 96, 250, 249], to) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `validateUserOp` (0xa19d19d5) function + pub fn validate_user_op( + &self, + account: ::ethers::core::types::Address, + user_op: UserOperation, + user_op_hash: [u8; 32], + missing_account_funds: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [161, 157, 25, 213], + (account, user_op, user_op_hash, missing_account_funds), + ) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `withdrawTo` (0x205c2878) function + pub fn withdraw_to( + &self, + to: ::ethers::core::types::Address, + amount: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([32, 92, 40, 120], (to, amount)) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> + for MockEntryPoint + { + 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 input parameters for the `depositTo` function with signature `depositTo(address)` and selector `0xb760faf9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "depositTo", abi = "depositTo(address)")] + pub struct DepositToCall { + pub to: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `validateUserOp` function with signature `validateUserOp(address,(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0xa19d19d5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "validateUserOp", + abi = "validateUserOp(address,(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)" + )] + pub struct ValidateUserOpCall { + pub account: ::ethers::core::types::Address, + pub user_op: UserOperation, + pub user_op_hash: [u8; 32], + pub missing_account_funds: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `withdrawTo` function with signature `withdrawTo(address,uint256)` and selector `0x205c2878` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "withdrawTo", abi = "withdrawTo(address,uint256)")] + pub struct WithdrawToCall { + 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 MockEntryPointCalls { + BalanceOf(BalanceOfCall), + DepositTo(DepositToCall), + ValidateUserOp(ValidateUserOpCall), + WithdrawTo(WithdrawToCall), + } + impl ::ethers::core::abi::AbiDecode for MockEntryPointCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) { + return Ok(Self::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::DepositTo(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ValidateUserOp(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::WithdrawTo(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MockEntryPointCalls { + fn encode(self) -> Vec { + match self { + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::DepositTo(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ValidateUserOp(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::WithdrawTo(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for MockEntryPointCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::DepositTo(element) => ::core::fmt::Display::fmt(element, f), + Self::ValidateUserOp(element) => ::core::fmt::Display::fmt(element, f), + Self::WithdrawTo(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockEntryPointCalls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for MockEntryPointCalls { + fn from(value: DepositToCall) -> Self { + Self::DepositTo(value) + } + } + impl ::core::convert::From for MockEntryPointCalls { + fn from(value: ValidateUserOpCall) -> Self { + Self::ValidateUserOp(value) + } + } + impl ::core::convert::From for MockEntryPointCalls { + fn from(value: WithdrawToCall) -> Self { + Self::WithdrawTo(value) + } + } + ///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 `validateUserOp` function with signature `validateUserOp(address,(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0xa19d19d5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ValidateUserOpReturn { + pub validation_data: ::ethers::core::types::U256, + } +} diff --git a/xmtp_id/src/bindings/mock_erc20.rs b/xmtp_id/src/bindings/mock_erc20.rs new file mode 100644 index 000000000..6bc053d3a --- /dev/null +++ b/xmtp_id/src/bindings/mock_erc20.rs @@ -0,0 +1,1299 @@ +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::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("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"), + ), + }, + ::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"), + ), + }, + ], + 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"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x0Ej\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c6D\xE5\x15\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xBBW\x80c\xA9\x05\x9C\xBB\x14a\x01\xC3W\x80c\xD5\x05\xAC\xCF\x14a\x01\xD6W\x80c\xDDb\xED>\x14a\x01\xE9W`\0\x80\xFD[\x80c6D\xE5\x15\x14a\x01sW\x80cp\xA0\x821\x14a\x01{W\x80c~\xCE\xBE\0\x14a\x01\x9BW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x16$\xF6\xC6\x14a\x01\x15W\x80c\x18\x16\r\xDD\x14a\x01*W\x80c#\xB8r\xDD\x14a\x01AW\x80c1<\xE5g\x14a\x01TW[`\0\x80\xFD[a\0\xDCa\x02\x14V[`@Qa\0\xE9\x91\x90a\tmV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\t\xD8V[a\x02\xA2V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[a\x01(a\x01#6`\x04a\n\xB6V[a\x03\x0FV[\0[a\x013`\x03T\x81V[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x01O6`\x04a\x0B*V[a\x03\xAEV[`\x02Ta\x01a\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\0\xE9V[a\x013a\x04\xC3V[a\x013a\x01\x896`\x04a\x0BfV[`\x04` R`\0\x90\x81R`@\x90 T\x81V[a\x013a\x01\xA96`\x04a\x0BfV[`\x08` R`\0\x90\x81R`@\x90 T\x81V[a\0\xDCa\x04\xE9V[a\x01\x05a\x01\xD16`\x04a\t\xD8V[a\x04\xF6V[a\x01(a\x01\xE46`\x04a\x0B\x81V[a\x05\x8DV[a\x013a\x01\xF76`\x04a\x0B\xEBV[`\x05` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`\0\x80Ta\x02!\x90a\x0C\x1EV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02M\x90a\x0C\x1EV[\x80\x15a\x02\x9AW\x80`\x1F\x10a\x02oWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\x9AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02}W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x02\xFD\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[`\tT`\xFF\x16\x15a\x03]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10S\x14\x91PQ\x16W\xD2S\x92U\x12PS\x12V\x91Q`j\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x03i\x84\x82a\x0C\xA9V[P`\x01a\x03v\x83\x82a\x0C\xA9V[P`\x02\x80T`\xFF\x19\x16`\xFF\x83\x16\x17\x90Ua\x03\x8Ea\x07\xEBV[`\x06Ua\x03\x99a\x08\x04V[`\x07UPP`\t\x80T`\xFF\x19\x16`\x01\x17\x90UPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T`\0\x19\x81\x14a\x04\nWa\x03\xE5\x81\x84a\x08\xA7V[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x04` R`@\x90 Ta\x04-\x90\x84a\x08\xA7V[`\x01`\x01`\xA0\x1B\x03\x80\x87\x16`\0\x90\x81R`\x04` R`@\x80\x82 \x93\x90\x93U\x90\x86\x16\x81R Ta\x04\\\x90\x84a\t\nV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\0\x81\x81R`\x04` R`@\x90\x81\x90 \x93\x90\x93U\x91Q\x90\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x04\xB0\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[`\0`\x06Ta\x04\xD0a\x07\xEBV[\x14a\x04\xE2Wa\x04\xDDa\x08\x04V[\x90P\x90V[P`\x07T\x90V[`\x01\x80Ta\x02!\x90a\x0C\x1EV[3`\0\x90\x81R`\x04` R`@\x81 Ta\x05\x10\x90\x83a\x08\xA7V[3`\0\x90\x81R`\x04` R`@\x80\x82 \x92\x90\x92U`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R Ta\x05<\x90\x83a\t\nV[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x81\x81R`\x04` R`@\x90\x81\x90 \x92\x90\x92U\x90Q3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x02\xFD\x90\x86\x81R` \x01\x90V[B\x84\x10\x15a\x05\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03TV[`\0`\x01a\x05\xE9a\x04\xC3V[`\x01`\x01`\xA0\x1B\x03\x8A\x16`\0\x90\x81R`\x08` R`@\x81 \x80T\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x92\x8D\x92\x8D\x92\x8D\x92\x90\x91\x90a\x067\x83a\r\x7FV[\x90\x91UP`@\x80Q` \x81\x01\x96\x90\x96R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x90\x86\x01R\x92\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x81\x01\x88\x90R`\xE0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `@Q` \x01a\x06\xB0\x92\x91\x90a\x19\x01`\xF0\x1B\x81R`\x02\x81\x01\x92\x90\x92R`\"\x82\x01R`B\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x87\x16\x90\x82\x01R``\x81\x01\x85\x90R`\x80\x81\x01\x84\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x07\x0EW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16\x15\x80\x15\x90a\x07DWP\x87`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x14[a\x07\x81W`@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\x01a\x03TV[`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x8B\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x8A\x90UQ\x89\x81R\x91\x92\x8B\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPPV[`\0a\ti\x80a\x07\xFDc\xFF\xFF\xFF\xFF\x82\x16V[\x92PPP\x90V[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\x086\x91\x90a\r\x98V[`@Q\x80\x91\x03\x90 \x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6a\x08ga\x07\xEBV[`@\x80Q` \x81\x01\x95\x90\x95R\x84\x01\x92\x90\x92R``\x83\x01R`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[`\0\x81\x83\x10\x15a\x08\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FERC20: subtraction underflow\0\0\0\0`D\x82\x01R`d\x01a\x03TV[a\t\x03\x82\x84a\x0E\x0EV[\x93\x92PPPV[`\0\x80a\t\x17\x83\x85a\x0E!V[\x90P\x83\x81\x10\x15a\t\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FERC20: addition overflow\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03TV[F\x90V[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\t\x9BW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\t\x7FV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xD3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xEBW`\0\x80\xFD[a\t\xF4\x83a\t\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a\n)W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\nDWa\nDa\n\x02V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\nlWa\nla\n\x02V[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\n\x85W`\0\x80\xFD[\x83` \x87\x01` \x83\x017`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[\x805`\xFF\x81\x16\x81\x14a\t\xD3W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\xCBW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\n\xE3W`\0\x80\xFD[a\n\xEF\x87\x83\x88\x01a\n\x18V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x0B\x05W`\0\x80\xFD[Pa\x0B\x12\x86\x82\x87\x01a\n\x18V[\x92PPa\x0B!`@\x85\x01a\n\xA5V[\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B?W`\0\x80\xFD[a\x0BH\x84a\t\xBCV[\x92Pa\x0BV` \x85\x01a\t\xBCV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0BxW`\0\x80\xFD[a\t\x03\x82a\t\xBCV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\x0B\x9CW`\0\x80\xFD[a\x0B\xA5\x88a\t\xBCV[\x96Pa\x0B\xB3` \x89\x01a\t\xBCV[\x95P`@\x88\x015\x94P``\x88\x015\x93Pa\x0B\xCF`\x80\x89\x01a\n\xA5V[\x92P`\xA0\x88\x015\x91P`\xC0\x88\x015\x90P\x92\x95\x98\x91\x94\x97P\x92\x95PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xFEW`\0\x80\xFD[a\x0C\x07\x83a\t\xBCV[\x91Pa\x0C\x15` \x84\x01a\t\xBCV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C2W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0CRWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x0C\xA4W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x0C\x81WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x0C\xA0W\x82\x81U`\x01\x01a\x0C\x8DV[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\xC3Wa\x0C\xC3a\n\x02V[a\x0C\xD7\x81a\x0C\xD1\x84Ta\x0C\x1EV[\x84a\x0CXV[` \x80`\x1F\x83\x11`\x01\x81\x14a\r\x0CW`\0\x84\x15a\x0C\xF4WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x0C\xA0V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\r;W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\r\x1CV[P\x85\x82\x10\x15a\rYW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\r\x91Wa\r\x91a\riV[P`\x01\x01\x90V[`\0\x80\x83Ta\r\xA6\x81a\x0C\x1EV[`\x01\x82\x81\x16\x80\x15a\r\xBEW`\x01\x81\x14a\r\xD3Wa\x0E\x02V[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pa\x0E\x02V[\x87`\0R` \x80`\0 `\0[\x85\x81\x10\x15a\r\xF9W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a\r\xE0V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[\x81\x81\x03\x81\x81\x11\x15a\x03\tWa\x03\ta\riV[\x80\x82\x01\x80\x82\x11\x15a\x03\tWa\x03\ta\riV\xFE\xA2dipfsX\"\x12 ~\xCC:\x08\xB5\x03l\xB5d\x08\xBEJ\x0B\0\x92\\\x99D\xA8\xD8\x92\x19}?D\xDF5-\x9D\xCE\xCF\x80dsolcC\0\x08\x17\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`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c6D\xE5\x15\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xBBW\x80c\xA9\x05\x9C\xBB\x14a\x01\xC3W\x80c\xD5\x05\xAC\xCF\x14a\x01\xD6W\x80c\xDDb\xED>\x14a\x01\xE9W`\0\x80\xFD[\x80c6D\xE5\x15\x14a\x01sW\x80cp\xA0\x821\x14a\x01{W\x80c~\xCE\xBE\0\x14a\x01\x9BW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x16$\xF6\xC6\x14a\x01\x15W\x80c\x18\x16\r\xDD\x14a\x01*W\x80c#\xB8r\xDD\x14a\x01AW\x80c1<\xE5g\x14a\x01TW[`\0\x80\xFD[a\0\xDCa\x02\x14V[`@Qa\0\xE9\x91\x90a\tmV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\t\xD8V[a\x02\xA2V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[a\x01(a\x01#6`\x04a\n\xB6V[a\x03\x0FV[\0[a\x013`\x03T\x81V[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x01O6`\x04a\x0B*V[a\x03\xAEV[`\x02Ta\x01a\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\0\xE9V[a\x013a\x04\xC3V[a\x013a\x01\x896`\x04a\x0BfV[`\x04` R`\0\x90\x81R`@\x90 T\x81V[a\x013a\x01\xA96`\x04a\x0BfV[`\x08` R`\0\x90\x81R`@\x90 T\x81V[a\0\xDCa\x04\xE9V[a\x01\x05a\x01\xD16`\x04a\t\xD8V[a\x04\xF6V[a\x01(a\x01\xE46`\x04a\x0B\x81V[a\x05\x8DV[a\x013a\x01\xF76`\x04a\x0B\xEBV[`\x05` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`\0\x80Ta\x02!\x90a\x0C\x1EV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02M\x90a\x0C\x1EV[\x80\x15a\x02\x9AW\x80`\x1F\x10a\x02oWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\x9AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02}W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x02\xFD\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[`\tT`\xFF\x16\x15a\x03]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10S\x14\x91PQ\x16W\xD2S\x92U\x12PS\x12V\x91Q`j\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x03i\x84\x82a\x0C\xA9V[P`\x01a\x03v\x83\x82a\x0C\xA9V[P`\x02\x80T`\xFF\x19\x16`\xFF\x83\x16\x17\x90Ua\x03\x8Ea\x07\xEBV[`\x06Ua\x03\x99a\x08\x04V[`\x07UPP`\t\x80T`\xFF\x19\x16`\x01\x17\x90UPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T`\0\x19\x81\x14a\x04\nWa\x03\xE5\x81\x84a\x08\xA7V[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x04` R`@\x90 Ta\x04-\x90\x84a\x08\xA7V[`\x01`\x01`\xA0\x1B\x03\x80\x87\x16`\0\x90\x81R`\x04` R`@\x80\x82 \x93\x90\x93U\x90\x86\x16\x81R Ta\x04\\\x90\x84a\t\nV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\0\x81\x81R`\x04` R`@\x90\x81\x90 \x93\x90\x93U\x91Q\x90\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x04\xB0\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[`\0`\x06Ta\x04\xD0a\x07\xEBV[\x14a\x04\xE2Wa\x04\xDDa\x08\x04V[\x90P\x90V[P`\x07T\x90V[`\x01\x80Ta\x02!\x90a\x0C\x1EV[3`\0\x90\x81R`\x04` R`@\x81 Ta\x05\x10\x90\x83a\x08\xA7V[3`\0\x90\x81R`\x04` R`@\x80\x82 \x92\x90\x92U`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R Ta\x05<\x90\x83a\t\nV[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x81\x81R`\x04` R`@\x90\x81\x90 \x92\x90\x92U\x90Q3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x02\xFD\x90\x86\x81R` \x01\x90V[B\x84\x10\x15a\x05\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03TV[`\0`\x01a\x05\xE9a\x04\xC3V[`\x01`\x01`\xA0\x1B\x03\x8A\x16`\0\x90\x81R`\x08` R`@\x81 \x80T\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x92\x8D\x92\x8D\x92\x8D\x92\x90\x91\x90a\x067\x83a\r\x7FV[\x90\x91UP`@\x80Q` \x81\x01\x96\x90\x96R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x90\x86\x01R\x92\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x81\x01\x88\x90R`\xE0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `@Q` \x01a\x06\xB0\x92\x91\x90a\x19\x01`\xF0\x1B\x81R`\x02\x81\x01\x92\x90\x92R`\"\x82\x01R`B\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x87\x16\x90\x82\x01R``\x81\x01\x85\x90R`\x80\x81\x01\x84\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x07\x0EW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16\x15\x80\x15\x90a\x07DWP\x87`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x14[a\x07\x81W`@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\x01a\x03TV[`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x8B\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x8A\x90UQ\x89\x81R\x91\x92\x8B\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPPV[`\0a\ti\x80a\x07\xFDc\xFF\xFF\xFF\xFF\x82\x16V[\x92PPP\x90V[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\x086\x91\x90a\r\x98V[`@Q\x80\x91\x03\x90 \x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6a\x08ga\x07\xEBV[`@\x80Q` \x81\x01\x95\x90\x95R\x84\x01\x92\x90\x92R``\x83\x01R`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[`\0\x81\x83\x10\x15a\x08\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FERC20: subtraction underflow\0\0\0\0`D\x82\x01R`d\x01a\x03TV[a\t\x03\x82\x84a\x0E\x0EV[\x93\x92PPPV[`\0\x80a\t\x17\x83\x85a\x0E!V[\x90P\x83\x81\x10\x15a\t\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FERC20: addition overflow\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03TV[F\x90V[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\t\x9BW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\t\x7FV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xD3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xEBW`\0\x80\xFD[a\t\xF4\x83a\t\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a\n)W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\nDWa\nDa\n\x02V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\nlWa\nla\n\x02V[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\n\x85W`\0\x80\xFD[\x83` \x87\x01` \x83\x017`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[\x805`\xFF\x81\x16\x81\x14a\t\xD3W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\xCBW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\n\xE3W`\0\x80\xFD[a\n\xEF\x87\x83\x88\x01a\n\x18V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x0B\x05W`\0\x80\xFD[Pa\x0B\x12\x86\x82\x87\x01a\n\x18V[\x92PPa\x0B!`@\x85\x01a\n\xA5V[\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B?W`\0\x80\xFD[a\x0BH\x84a\t\xBCV[\x92Pa\x0BV` \x85\x01a\t\xBCV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0BxW`\0\x80\xFD[a\t\x03\x82a\t\xBCV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\x0B\x9CW`\0\x80\xFD[a\x0B\xA5\x88a\t\xBCV[\x96Pa\x0B\xB3` \x89\x01a\t\xBCV[\x95P`@\x88\x015\x94P``\x88\x015\x93Pa\x0B\xCF`\x80\x89\x01a\n\xA5V[\x92P`\xA0\x88\x015\x91P`\xC0\x88\x015\x90P\x92\x95\x98\x91\x94\x97P\x92\x95PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xFEW`\0\x80\xFD[a\x0C\x07\x83a\t\xBCV[\x91Pa\x0C\x15` \x84\x01a\t\xBCV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C2W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0CRWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x0C\xA4W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x0C\x81WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x0C\xA0W\x82\x81U`\x01\x01a\x0C\x8DV[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\xC3Wa\x0C\xC3a\n\x02V[a\x0C\xD7\x81a\x0C\xD1\x84Ta\x0C\x1EV[\x84a\x0CXV[` \x80`\x1F\x83\x11`\x01\x81\x14a\r\x0CW`\0\x84\x15a\x0C\xF4WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x0C\xA0V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\r;W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\r\x1CV[P\x85\x82\x10\x15a\rYW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\r\x91Wa\r\x91a\riV[P`\x01\x01\x90V[`\0\x80\x83Ta\r\xA6\x81a\x0C\x1EV[`\x01\x82\x81\x16\x80\x15a\r\xBEW`\x01\x81\x14a\r\xD3Wa\x0E\x02V[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pa\x0E\x02V[\x87`\0R` \x80`\0 `\0[\x85\x81\x10\x15a\r\xF9W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a\r\xE0V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[\x81\x81\x03\x81\x81\x11\x15a\x03\tWa\x03\ta\riV[\x80\x82\x01\x80\x82\x11\x15a\x03\tWa\x03\ta\riV\xFE\xA2dipfsX\"\x12 ~\xCC:\x08\xB5\x03l\xB5d\x08\xBEJ\x0B\0\x92\\\x99D\xA8\xD8\x92\x19}?D\xDF5-\x9D\xCE\xCF\x80dsolcC\0\x08\x17\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 `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 `initialize` (0x1624f6c6) function + pub fn initialize( + &self, + name: ::std::string::String, + symbol: ::std::string::String, + decimals: u8, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([22, 36, 246, 198], (name, symbol, decimals)) + .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 `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 `initialize` function with signature `initialize(string,string,uint8)` and selector `0x1624f6c6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "initialize", abi = "initialize(string,string,uint8)")] + pub struct InitializeCall { + pub name: ::std::string::String, + pub symbol: ::std::string::String, + pub decimals: u8, + } + ///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), + Decimals(DecimalsCall), + Initialize(InitializeCall), + 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::Decimals(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Initialize(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::Decimals(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Initialize(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::Decimals(element) => ::core::fmt::Display::fmt(element, f), + Self::Initialize(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: DecimalsCall) -> Self { + Self::Decimals(value) + } + } + impl ::core::convert::From for MockERC20Calls { + fn from(value: InitializeCall) -> Self { + Self::Initialize(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/xmtp_id/src/bindings/mock_erc721.rs b/xmtp_id/src/bindings/mock_erc721.rs new file mode 100644 index 000000000..1a754d17d --- /dev/null +++ b/xmtp_id/src/bindings/mock_erc721.rs @@ -0,0 +1,1389 @@ +pub use mock_erc721::*; +/// 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_erc721 { + #[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("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("id"), + 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("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::borrow::ToOwned::to_owned("owner"), + 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("getApproved"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getApproved"), + 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::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("isApprovedForAll"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isApprovedForAll"), + 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::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("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("ownerOf"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ownerOf"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("id"), + 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("owner"), + 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("safeTransferFrom"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), + 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("id"), + 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, + }, + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), + 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("id"), + 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("setApprovalForAll"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setApprovalForAll"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("operator"), + 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("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("supportsInterface"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("supportsInterface"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("interfaceId"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + },], + 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::Pure, + },], + ), + ( + ::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("tokenURI"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("tokenURI"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("id"), + 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::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("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("id"), + 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("id"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + 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("operator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + 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("id"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static MOCKERC721_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x0E\xF3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80ccR!\x1E\x11a\0\x8CW\x80c\xA2,\xB4e\x11a\0fW\x80c\xA2,\xB4e\x14a\x01\xF7W\x80c\xB8\x8DO\xDE\x14a\x02\nW\x80c\xC8{V\xDD\x14a\x02\x1DW\x80c\xE9\x85\xE9\xC5\x14a\x021W`\0\x80\xFD[\x80ccR!\x1E\x14a\x01\xBBW\x80cp\xA0\x821\x14a\x01\xCEW\x80c\x95\xD8\x9BA\x14a\x01\xEFW`\0\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xC8W\x80c\t^\xA7\xB3\x14a\x01mW\x80c#\xB8r\xDD\x14a\x01\x82W\x80cB\x84.\x0E\x14a\x01\x95W\x80cL\xD8\x8Bv\x14a\x01\xA8W`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xEFW\x80c\x06\xFD\xDE\x03\x14a\x01\x17W\x80c\x08\x18\x12\xFC\x14a\x01,W[`\0\x80\xFD[a\x01\x02a\0\xFD6`\x04a\t\xAAV[a\x02_V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x1Fa\x02\xB1V[`@Qa\x01\x0E\x91\x90a\n\x14V[a\x01Ua\x01:6`\x04a\n'V[`\x04` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x0EV[a\x01\x80a\x01{6`\x04a\nWV[a\x03?V[\0[a\x01\x80a\x01\x906`\x04a\n\x81V[a\x04&V[a\x01\x80a\x01\xA36`\x04a\n\x81V[a\x06\x1FV[a\x01\x80a\x01\xB66`\x04a\x0BiV[a\x07\x0EV[a\x01Ua\x01\xC96`\x04a\n'V[a\x07\x82V[a\x01\xE1a\x01\xDC6`\x04a\x0B\xCDV[a\x07\xD9V[`@Q\x90\x81R` \x01a\x01\x0EV[a\x01\x1Fa\x08=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xBE\x91\x90a\rSV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\x07\tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x03\xC1V[PPPV[`\x06T`\xFF\x16\x15a\x07WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10S\x14\x91PQ\x16W\xD2S\x92U\x12PS\x12V\x91Q`j\x1B`D\x82\x01R`d\x01a\x03\xC1V[`\0a\x07c\x83\x82a\r\xC0V[P`\x01a\x07p\x82\x82a\r\xC0V[PP`\x06\x80T`\xFF\x19\x16`\x01\x17\x90UPV[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x07\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri\x13\x93\xD5\x17\xD3RS\x95\x11Q`\xB2\x1B`D\x82\x01R`d\x01a\x03\xC1V[\x91\x90PV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkZERO_ADDRESS`\xA0\x1B`D\x82\x01R`d\x01a\x03\xC1V[P`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[`\x01\x80Ta\x02\xBE\x90a\x0C\xD3V[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T`\xFF\x19\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x08\xC0\x84\x84\x84a\x04&V[\x82;\x15\x80a\tLWP`@Qc\n\x85\xBD\x01`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x15\x0Bz\x02\x90a\x08\xFD\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x0E\x80V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t@\x91\x90a\rSV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\t\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x03\xC1V[PPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\t\xA7W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\t\xBCW`\0\x80\xFD[\x815a\t\xC7\x81a\t\x91V[\x93\x92PPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\t\xF4W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\t\xD8V[P`\0` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R`\0a\t\xC7` \x83\x01\x84a\t\xCEV[`\0` \x82\x84\x03\x12\x15a\n9W`\0\x80\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xD4W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\njW`\0\x80\xFD[a\ns\x83a\n@V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\x96W`\0\x80\xFD[a\n\x9F\x84a\n@V[\x92Pa\n\xAD` \x85\x01a\n@V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\n\xEEWa\n\xEEa\n\xBDV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0B\x16Wa\x0B\x16a\n\xBDV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x0B/W`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x0BZW`\0\x80\xFD[a\t\xC7\x83\x835` \x85\x01a\n\xD3V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B|W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0B\x94W`\0\x80\xFD[a\x0B\xA0\x86\x83\x87\x01a\x0BIV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x0B\xB6W`\0\x80\xFD[Pa\x0B\xC3\x85\x82\x86\x01a\x0BIV[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0B\xDFW`\0\x80\xFD[a\t\xC7\x82a\n@V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xFBW`\0\x80\xFD[a\x0C\x04\x83a\n@V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x0C\x19W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x0C:W`\0\x80\xFD[a\x0CC\x85a\n@V[\x93Pa\x0CQ` \x86\x01a\n@V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0CtW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x0C\x85W`\0\x80\xFD[a\x0C\x94\x87\x825` \x84\x01a\n\xD3V[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xB3W`\0\x80\xFD[a\x0C\xBC\x83a\n@V[\x91Pa\x0C\xCA` \x84\x01a\n@V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C\xE7W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\x07WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x81a\r2Wa\r2a\r\rV[P`\0\x19\x01\x90V[`\0`\x01\x82\x01a\rLWa\rLa\r\rV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\reW`\0\x80\xFD[\x81Qa\t\xC7\x81a\t\x91V[`\x1F\x82\x11\x15a\x07\tW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\r\x99WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\r\xB8W\x82\x81U`\x01\x01a\r\xA5V[PPPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDAWa\r\xDAa\n\xBDV[a\r\xEE\x81a\r\xE8\x84Ta\x0C\xD3V[\x84a\rpV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x0E#W`\0\x84\x15a\x0E\x0BWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\r\xB8V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x0ERW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x0E3V[P\x85\x82\x10\x15a\x0EpW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x82R\x84\x16` \x82\x01R`@\x81\x01\x83\x90R`\x80``\x82\x01\x81\x90R`\0\x90a\x0E\xB3\x90\x83\x01\x84a\t\xCEV[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 \x88\xC4\xB3~?\t\x01\x0E\x84B\x8E\xD5\x8B\xCA\x98\x02\xC6\xF9\xC1&\x18\xE7\xEF\x82\xB9E0\xACj}h\x1AdsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static MOCKERC721_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80ccR!\x1E\x11a\0\x8CW\x80c\xA2,\xB4e\x11a\0fW\x80c\xA2,\xB4e\x14a\x01\xF7W\x80c\xB8\x8DO\xDE\x14a\x02\nW\x80c\xC8{V\xDD\x14a\x02\x1DW\x80c\xE9\x85\xE9\xC5\x14a\x021W`\0\x80\xFD[\x80ccR!\x1E\x14a\x01\xBBW\x80cp\xA0\x821\x14a\x01\xCEW\x80c\x95\xD8\x9BA\x14a\x01\xEFW`\0\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xC8W\x80c\t^\xA7\xB3\x14a\x01mW\x80c#\xB8r\xDD\x14a\x01\x82W\x80cB\x84.\x0E\x14a\x01\x95W\x80cL\xD8\x8Bv\x14a\x01\xA8W`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xEFW\x80c\x06\xFD\xDE\x03\x14a\x01\x17W\x80c\x08\x18\x12\xFC\x14a\x01,W[`\0\x80\xFD[a\x01\x02a\0\xFD6`\x04a\t\xAAV[a\x02_V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x1Fa\x02\xB1V[`@Qa\x01\x0E\x91\x90a\n\x14V[a\x01Ua\x01:6`\x04a\n'V[`\x04` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x0EV[a\x01\x80a\x01{6`\x04a\nWV[a\x03?V[\0[a\x01\x80a\x01\x906`\x04a\n\x81V[a\x04&V[a\x01\x80a\x01\xA36`\x04a\n\x81V[a\x06\x1FV[a\x01\x80a\x01\xB66`\x04a\x0BiV[a\x07\x0EV[a\x01Ua\x01\xC96`\x04a\n'V[a\x07\x82V[a\x01\xE1a\x01\xDC6`\x04a\x0B\xCDV[a\x07\xD9V[`@Q\x90\x81R` \x01a\x01\x0EV[a\x01\x1Fa\x08=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xBE\x91\x90a\rSV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\x07\tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x03\xC1V[PPPV[`\x06T`\xFF\x16\x15a\x07WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10S\x14\x91PQ\x16W\xD2S\x92U\x12PS\x12V\x91Q`j\x1B`D\x82\x01R`d\x01a\x03\xC1V[`\0a\x07c\x83\x82a\r\xC0V[P`\x01a\x07p\x82\x82a\r\xC0V[PP`\x06\x80T`\xFF\x19\x16`\x01\x17\x90UPV[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x07\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri\x13\x93\xD5\x17\xD3RS\x95\x11Q`\xB2\x1B`D\x82\x01R`d\x01a\x03\xC1V[\x91\x90PV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkZERO_ADDRESS`\xA0\x1B`D\x82\x01R`d\x01a\x03\xC1V[P`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[`\x01\x80Ta\x02\xBE\x90a\x0C\xD3V[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T`\xFF\x19\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x08\xC0\x84\x84\x84a\x04&V[\x82;\x15\x80a\tLWP`@Qc\n\x85\xBD\x01`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x15\x0Bz\x02\x90a\x08\xFD\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x0E\x80V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t@\x91\x90a\rSV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\t\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x03\xC1V[PPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\t\xA7W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\t\xBCW`\0\x80\xFD[\x815a\t\xC7\x81a\t\x91V[\x93\x92PPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\t\xF4W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\t\xD8V[P`\0` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R`\0a\t\xC7` \x83\x01\x84a\t\xCEV[`\0` \x82\x84\x03\x12\x15a\n9W`\0\x80\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xD4W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\njW`\0\x80\xFD[a\ns\x83a\n@V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\x96W`\0\x80\xFD[a\n\x9F\x84a\n@V[\x92Pa\n\xAD` \x85\x01a\n@V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\n\xEEWa\n\xEEa\n\xBDV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0B\x16Wa\x0B\x16a\n\xBDV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x0B/W`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x0BZW`\0\x80\xFD[a\t\xC7\x83\x835` \x85\x01a\n\xD3V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B|W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0B\x94W`\0\x80\xFD[a\x0B\xA0\x86\x83\x87\x01a\x0BIV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x0B\xB6W`\0\x80\xFD[Pa\x0B\xC3\x85\x82\x86\x01a\x0BIV[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0B\xDFW`\0\x80\xFD[a\t\xC7\x82a\n@V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xFBW`\0\x80\xFD[a\x0C\x04\x83a\n@V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x0C\x19W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x0C:W`\0\x80\xFD[a\x0CC\x85a\n@V[\x93Pa\x0CQ` \x86\x01a\n@V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0CtW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x0C\x85W`\0\x80\xFD[a\x0C\x94\x87\x825` \x84\x01a\n\xD3V[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xB3W`\0\x80\xFD[a\x0C\xBC\x83a\n@V[\x91Pa\x0C\xCA` \x84\x01a\n@V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C\xE7W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\x07WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x81a\r2Wa\r2a\r\rV[P`\0\x19\x01\x90V[`\0`\x01\x82\x01a\rLWa\rLa\r\rV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\reW`\0\x80\xFD[\x81Qa\t\xC7\x81a\t\x91V[`\x1F\x82\x11\x15a\x07\tW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\r\x99WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\r\xB8W\x82\x81U`\x01\x01a\r\xA5V[PPPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDAWa\r\xDAa\n\xBDV[a\r\xEE\x81a\r\xE8\x84Ta\x0C\xD3V[\x84a\rpV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x0E#W`\0\x84\x15a\x0E\x0BWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\r\xB8V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x0ERW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x0E3V[P\x85\x82\x10\x15a\x0EpW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x82R\x84\x16` \x82\x01R`@\x81\x01\x83\x90R`\x80``\x82\x01\x81\x90R`\0\x90a\x0E\xB3\x90\x83\x01\x84a\t\xCEV[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 \x88\xC4\xB3~?\t\x01\x0E\x84B\x8E\xD5\x8B\xCA\x98\x02\xC6\xF9\xC1&\x18\xE7\xEF\x82\xB9E0\xACj}h\x1AdsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static MOCKERC721_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct MockERC721(::ethers::contract::Contract); + impl ::core::clone::Clone for MockERC721 { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for MockERC721 { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for MockERC721 { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for MockERC721 { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(MockERC721)) + .field(&self.address()) + .finish() + } + } + impl MockERC721 { + /// 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(), + MOCKERC721_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( + MOCKERC721_ABI.clone(), + MOCKERC721_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `approve` (0x095ea7b3) function + pub fn approve( + &self, + spender: ::ethers::core::types::Address, + id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([9, 94, 167, 179], (spender, id)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `balanceOf` (0x70a08231) function + pub fn balance_of( + &self, + owner: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([112, 160, 130, 49], owner) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getApproved` (0x081812fc) function + pub fn get_approved( + &self, + p0: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([8, 24, 18, 252], p0) + .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 `isApprovedForAll` (0xe985e9c5) function + pub fn is_approved_for_all( + &self, + p0: ::ethers::core::types::Address, + p1: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([233, 133, 233, 197], (p0, p1)) + .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 `ownerOf` (0x6352211e) function + pub fn owner_of( + &self, + id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([99, 82, 33, 30], id) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `safeTransferFrom` (0x42842e0e) function + pub fn safe_transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([66, 132, 46, 14], (from, to, id)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `safeTransferFrom` (0xb88d4fde) function + pub fn safe_transfer_from_with_from_and_to_and_data( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([184, 141, 79, 222], (from, to, id, data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `setApprovalForAll` (0xa22cb465) function + pub fn set_approval_for_all( + &self, + operator: ::ethers::core::types::Address, + approved: bool, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([162, 44, 180, 101], (operator, approved)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `supportsInterface` (0x01ffc9a7) function + pub fn supports_interface( + &self, + interface_id: [u8; 4], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([1, 255, 201, 167], interface_id) + .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 `tokenURI` (0xc87b56dd) function + pub fn token_uri( + &self, + id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([200, 123, 86, 221], id) + .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, + id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 184, 114, 221], (from, to, id)) + .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 `ApprovalForAll` event + pub fn approval_for_all_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ApprovalForAllFilter> + { + 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, MockERC721Events> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for MockERC721 { + 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, + #[ethevent(indexed)] + pub id: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] + pub struct ApprovalForAllFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub operator: ::ethers::core::types::Address, + pub approved: bool, + } + #[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, + #[ethevent(indexed)] + pub id: ::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 MockERC721Events { + ApprovalFilter(ApprovalFilter), + ApprovalForAllFilter(ApprovalForAllFilter), + TransferFilter(TransferFilter), + } + impl ::ethers::contract::EthLogDecode for MockERC721Events { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = ApprovalFilter::decode_log(log) { + return Ok(MockERC721Events::ApprovalFilter(decoded)); + } + if let Ok(decoded) = ApprovalForAllFilter::decode_log(log) { + return Ok(MockERC721Events::ApprovalForAllFilter(decoded)); + } + if let Ok(decoded) = TransferFilter::decode_log(log) { + return Ok(MockERC721Events::TransferFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for MockERC721Events { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::ApprovalForAllFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockERC721Events { + fn from(value: ApprovalFilter) -> Self { + Self::ApprovalFilter(value) + } + } + impl ::core::convert::From for MockERC721Events { + fn from(value: ApprovalForAllFilter) -> Self { + Self::ApprovalForAllFilter(value) + } + } + impl ::core::convert::From for MockERC721Events { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } + ///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 id: ::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 owner: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] + pub struct GetApprovedCall(pub ::ethers::core::types::U256); + ///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 `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] + pub struct IsApprovedForAllCall( + pub ::ethers::core::types::Address, + pub ::ethers::core::types::Address, + ); + ///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 `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] + pub struct OwnerOfCall { + pub id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "safeTransferFrom", + abi = "safeTransferFrom(address,address,uint256)" + )] + pub struct SafeTransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "safeTransferFrom", + abi = "safeTransferFrom(address,address,uint256,bytes)" + )] + pub struct SafeTransferFromWithFromAndToAndDataCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] + pub struct SetApprovalForAllCall { + pub operator: ::ethers::core::types::Address, + pub approved: bool, + } + ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] + pub struct SupportsInterfaceCall { + pub interface_id: [u8; 4], + } + ///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 `tokenURI` function with signature `tokenURI(uint256)` and selector `0xc87b56dd` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "tokenURI", abi = "tokenURI(uint256)")] + pub struct TokenURICall { + pub id: ::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 id: ::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 MockERC721Calls { + Approve(ApproveCall), + BalanceOf(BalanceOfCall), + GetApproved(GetApprovedCall), + Initialize(InitializeCall), + IsApprovedForAll(IsApprovedForAllCall), + Name(NameCall), + OwnerOf(OwnerOfCall), + SafeTransferFrom(SafeTransferFromCall), + SafeTransferFromWithFromAndToAndData(SafeTransferFromWithFromAndToAndDataCall), + SetApprovalForAll(SetApprovalForAllCall), + SupportsInterface(SupportsInterfaceCall), + Symbol(SymbolCall), + TokenURI(TokenURICall), + TransferFrom(TransferFromCall), + } + impl ::ethers::core::abi::AbiDecode for MockERC721Calls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + 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::GetApproved(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Initialize(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsApprovedForAll(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Name(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::OwnerOf(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SafeTransferFrom(decoded)); + } + if let Ok(decoded) = + ::decode( + data, + ) + { + return Ok(Self::SafeTransferFromWithFromAndToAndData(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SetApprovalForAll(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::SupportsInterface(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Symbol(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::TokenURI(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 MockERC721Calls { + fn encode(self) -> Vec { + match self { + Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetApproved(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Initialize(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsApprovedForAll(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnerOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SafeTransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SafeTransferFromWithFromAndToAndData(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SetApprovalForAll(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::SupportsInterface(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TokenURI(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::TransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for MockERC721Calls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::Approve(element) => ::core::fmt::Display::fmt(element, f), + Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), + Self::GetApproved(element) => ::core::fmt::Display::fmt(element, f), + Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), + Self::IsApprovedForAll(element) => ::core::fmt::Display::fmt(element, f), + Self::Name(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnerOf(element) => ::core::fmt::Display::fmt(element, f), + Self::SafeTransferFrom(element) => ::core::fmt::Display::fmt(element, f), + Self::SafeTransferFromWithFromAndToAndData(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::SetApprovalForAll(element) => ::core::fmt::Display::fmt(element, f), + Self::SupportsInterface(element) => ::core::fmt::Display::fmt(element, f), + Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), + Self::TokenURI(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: ApproveCall) -> Self { + Self::Approve(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: BalanceOfCall) -> Self { + Self::BalanceOf(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: GetApprovedCall) -> Self { + Self::GetApproved(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: InitializeCall) -> Self { + Self::Initialize(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: IsApprovedForAllCall) -> Self { + Self::IsApprovedForAll(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: NameCall) -> Self { + Self::Name(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: OwnerOfCall) -> Self { + Self::OwnerOf(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: SafeTransferFromCall) -> Self { + Self::SafeTransferFrom(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: SafeTransferFromWithFromAndToAndDataCall) -> Self { + Self::SafeTransferFromWithFromAndToAndData(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: SetApprovalForAllCall) -> Self { + Self::SetApprovalForAll(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: SupportsInterfaceCall) -> Self { + Self::SupportsInterface(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: SymbolCall) -> Self { + Self::Symbol(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: TokenURICall) -> Self { + Self::TokenURI(value) + } + } + impl ::core::convert::From for MockERC721Calls { + fn from(value: TransferFromCall) -> Self { + Self::TransferFrom(value) + } + } + ///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 `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetApprovedReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsApprovedForAllReturn(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 `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct OwnerOfReturn { + pub owner: ::ethers::core::types::Address, + } + ///Container type for all return fields from the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SupportsInterfaceReturn(pub bool); + ///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 `tokenURI` function with signature `tokenURI(uint256)` and selector `0xc87b56dd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct TokenURIReturn(pub ::std::string::String); +} diff --git a/xmtp_id/src/bindings/mock_multi_ownable.rs b/xmtp_id/src/bindings/mock_multi_ownable.rs new file mode 100644 index 000000000..2e8c40f6a --- /dev/null +++ b/xmtp_id/src/bindings/mock_multi_ownable.rs @@ -0,0 +1,1191 @@ +pub use mock_multi_ownable::*; +/// 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_multi_ownable { + #[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("addOwnerAddress"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("addOwnerAddress"), + 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"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + 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("y"), + 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("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("owners"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::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("isOwnerAddress"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerAddress"), + 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"), + ), + },], + 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("isOwnerBytes"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerBytes"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("account"), + 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::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("isOwnerPublicKey"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerPublicKey"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + 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("y"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + 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("nextOwnerIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), + 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("ownerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ownerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("removeOwnerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("removeOwnerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("AddOwner"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("AddOwner"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("index"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("RemoveOwner"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("RemoveOwner"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("index"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AlreadyOwner"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("AlreadyOwner"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("Unauthorized"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Unauthorized"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static MOCKMULTIOWNABLE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x0C\"\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x93W`\x005`\xE0\x1C\x80cE\x9F\xB2\xAD\x11a\0fW\x80cE\x9F\xB2\xAD\x14a\0\xFBW\x80cr\xDE;Z\x14a\x01\x0EW\x80c\x8E\xA6\x90)\x14a\x01!W\x80c\xA2\xE1\xA8\xD8\x14a\x01AW\x80c\xD9H\xFD.\x14a\x01TW`\0\x80\xFD[\x80c\x06j\x1E\xB7\x14a\0\x98W\x80c\x0F\x0F?$\x14a\0\xC0W\x80c\x1C\xA59?\x14a\0\xD5W\x80c)V^;\x14a\0\xE8W[`\0\x80\xFD[a\0\xABa\0\xA66`\x04a\x07SV[a\x01rV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD3a\0\xCE6`\x04a\x07uV[a\x01\xE0V[\0[a\0\xABa\0\xE36`\x04a\x08\\V[a\x02\x18V[a\0\xD3a\0\xF66`\x04a\x07SV[a\x02SV[a\0\xD3a\x01\t6`\x04a\x08\x99V[a\x02|V[a\0\xD3a\x01\x1C6`\x04a\t\x0EV[a\x02\x8EV[a\x014a\x01/6`\x04a\t\x0EV[a\x03\x80V[`@Qa\0\xB7\x91\x90a\tKV[a\0\xABa\x01O6`\x04a\x07uV[a\x04AV[`\0\x80Q` a\x0B\xCD\x839\x81Q\x91RT`@Q\x90\x81R` \x01a\0\xB7V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\xC5\x91a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P\x92\x91PPV[a\x01\xE8a\x04\x87V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x02\x15\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x04\xB9V[PV[`\0`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`\x02\x01\x82`@Qa\x02:\x91\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x02[a\x04\x87V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x02x\x90``\x01a\x02\x01V[PPV[a\x02xa\x02\x89\x82\x84a\t\x9AV[a\x04\xE4V[a\x02\x96a\x04\x87V[`\0a\x02\xA1\x82a\x03\x80V[\x90P\x80Q`\0\x03a\x02\xCDW`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\x02\xFD\x90\x83\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\x03)`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x03D\x91a\x07\x05V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x03t\x91\x90a\tKV[`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x03\xBC\x90a\n V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\xE8\x90a\n V[\x80\x15a\x045W\x80`\x1F\x10a\x04\nWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x045V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04\x18W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x02:\x91a\t~V[a\x04\x903a\x04AV[\x80a\x04\x9AWP30\x14[\x15a\x04\xA1WV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x02\x15\x81`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R[\x80T\x90`\0a\x04\xDB\x83a\nZV[\x91\x90PUa\x066V[`\0[\x81Q\x81\x10\x15a\x02xW\x81\x81\x81Q\x81\x10a\x05\x02Wa\x05\x02a\n\x81V[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x056WP\x81\x81\x81Q\x81\x10a\x05(Wa\x05(a\n\x81V[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x05oW\x81\x81\x81Q\x81\x10a\x05MWa\x05Ma\n\x81V[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[\x81\x81\x81Q\x81\x10a\x05\x81Wa\x05\x81a\n\x81V[` \x02` \x01\x01QQ` \x14\x80\x15a\x05\xC3WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x05\xB0Wa\x05\xB0a\n\x81V[` \x02` \x01\x01Qa\x05\xC1\x90a\n\x97V[\x11[\x15a\x05\xFCW\x81\x81\x81Q\x81\x10a\x05\xDAWa\x05\xDAa\n\x81V[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[a\x06.\x82\x82\x81Q\x81\x10a\x06\x11Wa\x06\x11a\n\x81V[` \x02` \x01\x01Qa\x04\xCD`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\x01\x01a\x04\xE7V[a\x06?\x82a\x02\x18V[\x15a\x06_W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[`\x01`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`\x02\x01\x83`@Qa\x06\x81\x91\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x06\xB7`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x06\xD4\x90\x82a\x0B\x0CV[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x03t\x91\x90a\tKV[P\x80Ta\x07\x11\x90a\n V[`\0\x82U\x80`\x1F\x10a\x07!WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x02\x15\x91\x90[\x80\x82\x11\x15a\x07OW`\0\x81U`\x01\x01a\x07;V[P\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x07fW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x07\x87W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x9EW`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x07\xE4Wa\x07\xE4a\x07\xA5V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x07\xFDW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08\x17Wa\x08\x17a\x07\xA5V[a\x08*`\x1F\x82\x01`\x1F\x19\x16` \x01a\x07\xBBV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x08?W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x08nW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08\x85W`\0\x80\xFD[a\x08\x91\x84\x82\x85\x01a\x07\xECV[\x94\x93PPPPV[`\0\x80` \x83\x85\x03\x12\x15a\x08\xACW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xC4W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xD8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x08\xE7W`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x08\xFCW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\t W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a\tBW\x81\x81\x01Q\x83\x82\x01R` \x01a\t*V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Ra\tj\x81`@\x85\x01` \x87\x01a\t'V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x82Qa\t\x90\x81\x84` \x87\x01a\t'V[\x91\x90\x91\x01\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\t\xB5Wa\t\xB5a\x07\xA5V[\x83`\x05\x1B` a\t\xC7` \x83\x01a\x07\xBBV[\x86\x81R\x91\x85\x01\x91` \x81\x01\x906\x84\x11\x15a\t\xE0W`\0\x80\xFD[\x86[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\t\xFAW`\0\x80\x81\xFD[a\n\x066\x82\x8B\x01a\x07\xECV[\x84RP\x91\x83\x01\x91\x83\x01a\t\xE2V[P\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\n4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\nTWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0`\x01\x82\x01a\nzWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\nTW`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\x1F\x82\x11\x15a\x0B\x07W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\n\xE4WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x0B\x03W\x82\x81U`\x01\x01a\n\xF0V[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B&Wa\x0B&a\x07\xA5V[a\x0B:\x81a\x0B4\x84Ta\n V[\x84a\n\xBBV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x0BoW`\0\x84\x15a\x0BWWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x0B\x03V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x0B\x9EW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x0B\x7FV[P\x85\x82\x10\x15a\x0B\xBCW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV\xFE\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\0\xA2dipfsX\"\x12 \x8E\xA9\x13\xCA\x12^o\xAD\xA8s\xC1\xD3Y\xFF!\xEA\x04\xB3\x89\x18'\xEC\xCF\x1F\xBA\xEC\xFCL\xA7Gl?dsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static MOCKMULTIOWNABLE_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x93W`\x005`\xE0\x1C\x80cE\x9F\xB2\xAD\x11a\0fW\x80cE\x9F\xB2\xAD\x14a\0\xFBW\x80cr\xDE;Z\x14a\x01\x0EW\x80c\x8E\xA6\x90)\x14a\x01!W\x80c\xA2\xE1\xA8\xD8\x14a\x01AW\x80c\xD9H\xFD.\x14a\x01TW`\0\x80\xFD[\x80c\x06j\x1E\xB7\x14a\0\x98W\x80c\x0F\x0F?$\x14a\0\xC0W\x80c\x1C\xA59?\x14a\0\xD5W\x80c)V^;\x14a\0\xE8W[`\0\x80\xFD[a\0\xABa\0\xA66`\x04a\x07SV[a\x01rV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD3a\0\xCE6`\x04a\x07uV[a\x01\xE0V[\0[a\0\xABa\0\xE36`\x04a\x08\\V[a\x02\x18V[a\0\xD3a\0\xF66`\x04a\x07SV[a\x02SV[a\0\xD3a\x01\t6`\x04a\x08\x99V[a\x02|V[a\0\xD3a\x01\x1C6`\x04a\t\x0EV[a\x02\x8EV[a\x014a\x01/6`\x04a\t\x0EV[a\x03\x80V[`@Qa\0\xB7\x91\x90a\tKV[a\0\xABa\x01O6`\x04a\x07uV[a\x04AV[`\0\x80Q` a\x0B\xCD\x839\x81Q\x91RT`@Q\x90\x81R` \x01a\0\xB7V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\xC5\x91a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P\x92\x91PPV[a\x01\xE8a\x04\x87V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x02\x15\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x04\xB9V[PV[`\0`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`\x02\x01\x82`@Qa\x02:\x91\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x02[a\x04\x87V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x02x\x90``\x01a\x02\x01V[PPV[a\x02xa\x02\x89\x82\x84a\t\x9AV[a\x04\xE4V[a\x02\x96a\x04\x87V[`\0a\x02\xA1\x82a\x03\x80V[\x90P\x80Q`\0\x03a\x02\xCDW`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\x02\xFD\x90\x83\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\x03)`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x03D\x91a\x07\x05V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x03t\x91\x90a\tKV[`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x03\xBC\x90a\n V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\xE8\x90a\n V[\x80\x15a\x045W\x80`\x1F\x10a\x04\nWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x045V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04\x18W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x02:\x91a\t~V[a\x04\x903a\x04AV[\x80a\x04\x9AWP30\x14[\x15a\x04\xA1WV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x02\x15\x81`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R[\x80T\x90`\0a\x04\xDB\x83a\nZV[\x91\x90PUa\x066V[`\0[\x81Q\x81\x10\x15a\x02xW\x81\x81\x81Q\x81\x10a\x05\x02Wa\x05\x02a\n\x81V[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x056WP\x81\x81\x81Q\x81\x10a\x05(Wa\x05(a\n\x81V[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x05oW\x81\x81\x81Q\x81\x10a\x05MWa\x05Ma\n\x81V[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[\x81\x81\x81Q\x81\x10a\x05\x81Wa\x05\x81a\n\x81V[` \x02` \x01\x01QQ` \x14\x80\x15a\x05\xC3WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x05\xB0Wa\x05\xB0a\n\x81V[` \x02` \x01\x01Qa\x05\xC1\x90a\n\x97V[\x11[\x15a\x05\xFCW\x81\x81\x81Q\x81\x10a\x05\xDAWa\x05\xDAa\n\x81V[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[a\x06.\x82\x82\x81Q\x81\x10a\x06\x11Wa\x06\x11a\n\x81V[` \x02` \x01\x01Qa\x04\xCD`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\x01\x01a\x04\xE7V[a\x06?\x82a\x02\x18V[\x15a\x06_W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[`\x01`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`\x02\x01\x83`@Qa\x06\x81\x91\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x06\xB7`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x06\xD4\x90\x82a\x0B\x0CV[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x03t\x91\x90a\tKV[P\x80Ta\x07\x11\x90a\n V[`\0\x82U\x80`\x1F\x10a\x07!WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x02\x15\x91\x90[\x80\x82\x11\x15a\x07OW`\0\x81U`\x01\x01a\x07;V[P\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x07fW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x07\x87W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x9EW`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x07\xE4Wa\x07\xE4a\x07\xA5V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x07\xFDW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08\x17Wa\x08\x17a\x07\xA5V[a\x08*`\x1F\x82\x01`\x1F\x19\x16` \x01a\x07\xBBV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x08?W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x08nW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08\x85W`\0\x80\xFD[a\x08\x91\x84\x82\x85\x01a\x07\xECV[\x94\x93PPPPV[`\0\x80` \x83\x85\x03\x12\x15a\x08\xACW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xC4W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xD8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x08\xE7W`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x08\xFCW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\t W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a\tBW\x81\x81\x01Q\x83\x82\x01R` \x01a\t*V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Ra\tj\x81`@\x85\x01` \x87\x01a\t'V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x82Qa\t\x90\x81\x84` \x87\x01a\t'V[\x91\x90\x91\x01\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\t\xB5Wa\t\xB5a\x07\xA5V[\x83`\x05\x1B` a\t\xC7` \x83\x01a\x07\xBBV[\x86\x81R\x91\x85\x01\x91` \x81\x01\x906\x84\x11\x15a\t\xE0W`\0\x80\xFD[\x86[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\t\xFAW`\0\x80\x81\xFD[a\n\x066\x82\x8B\x01a\x07\xECV[\x84RP\x91\x83\x01\x91\x83\x01a\t\xE2V[P\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\n4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\nTWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0`\x01\x82\x01a\nzWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\nTW`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\x1F\x82\x11\x15a\x0B\x07W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\n\xE4WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x0B\x03W\x82\x81U`\x01\x01a\n\xF0V[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B&Wa\x0B&a\x07\xA5V[a\x0B:\x81a\x0B4\x84Ta\n V[\x84a\n\xBBV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x0BoW`\0\x84\x15a\x0BWWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x0B\x03V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x0B\x9EW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x0B\x7FV[P\x85\x82\x10\x15a\x0B\xBCW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV\xFE\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\0\xA2dipfsX\"\x12 \x8E\xA9\x13\xCA\x12^o\xAD\xA8s\xC1\xD3Y\xFF!\xEA\x04\xB3\x89\x18'\xEC\xCF\x1F\xBA\xEC\xFCL\xA7Gl?dsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static MOCKMULTIOWNABLE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct MockMultiOwnable(::ethers::contract::Contract); + impl ::core::clone::Clone for MockMultiOwnable { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for MockMultiOwnable { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for MockMultiOwnable { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for MockMultiOwnable { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(MockMultiOwnable)) + .field(&self.address()) + .finish() + } + } + impl MockMultiOwnable { + /// 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(), + MOCKMULTIOWNABLE_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( + MOCKMULTIOWNABLE_ABI.clone(), + MOCKMULTIOWNABLE_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `addOwnerAddress` (0x0f0f3f24) function + pub fn add_owner_address( + &self, + owner: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([15, 15, 63, 36], owner) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `addOwnerPublicKey` (0x29565e3b) function + pub fn add_owner_public_key( + &self, + x: [u8; 32], + y: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([41, 86, 94, 59], (x, y)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `init` (0x459fb2ad) function + pub fn init( + &self, + owners: ::std::vec::Vec<::ethers::core::types::Bytes>, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([69, 159, 178, 173], owners) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerAddress` (0xa2e1a8d8) function + pub fn is_owner_address( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([162, 225, 168, 216], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerBytes` (0x1ca5393f) function + pub fn is_owner_bytes( + &self, + account: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([28, 165, 57, 63], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerPublicKey` (0x066a1eb7) function + pub fn is_owner_public_key( + &self, + x: [u8; 32], + y: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 106, 30, 183], (x, y)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `nextOwnerIndex` (0xd948fd2e) function + pub fn next_owner_index( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([217, 72, 253, 46], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `ownerAtIndex` (0x8ea69029) function + pub fn owner_at_index( + &self, + index: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([142, 166, 144, 41], index) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `removeOwnerAtIndex` (0x72de3b5a) function + pub fn remove_owner_at_index( + &self, + index: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([114, 222, 59, 90], index) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `AddOwner` event + pub fn add_owner_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AddOwnerFilter> { + self.0.event() + } + ///Gets the contract's `RemoveOwner` event + pub fn remove_owner_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, RemoveOwnerFilter> + { + 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, MockMultiOwnableEvents> + { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for MockMultiOwnable + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `AlreadyOwner` with signature `AlreadyOwner(bytes)` and selector `0x8d16255a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "AlreadyOwner", abi = "AlreadyOwner(bytes)")] + pub struct AlreadyOwner { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `InvalidEthereumAddressOwner` with signature `InvalidEthereumAddressOwner(bytes)` and selector `0xbff1ac65` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidEthereumAddressOwner", + abi = "InvalidEthereumAddressOwner(bytes)" + )] + pub struct InvalidEthereumAddressOwner { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `InvalidOwnerBytesLength` with signature `InvalidOwnerBytesLength(bytes)` and selector `0x4eeab722` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidOwnerBytesLength", + abi = "InvalidOwnerBytesLength(bytes)" + )] + pub struct InvalidOwnerBytesLength { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `NoOwnerAtIndex` with signature `NoOwnerAtIndex(uint256)` and selector `0x68188e7a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NoOwnerAtIndex", abi = "NoOwnerAtIndex(uint256)")] + pub struct NoOwnerAtIndex { + pub index: ::ethers::core::types::U256, + } + ///Custom Error type `Unauthorized` with signature `Unauthorized()` and selector `0x82b42900` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Unauthorized", abi = "Unauthorized()")] + pub struct Unauthorized; + ///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 MockMultiOwnableErrors { + AlreadyOwner(AlreadyOwner), + InvalidEthereumAddressOwner(InvalidEthereumAddressOwner), + InvalidOwnerBytesLength(InvalidOwnerBytesLength), + NoOwnerAtIndex(NoOwnerAtIndex), + Unauthorized(Unauthorized), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for MockMultiOwnableErrors { + 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::AlreadyOwner(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidEthereumAddressOwner(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidOwnerBytesLength(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NoOwnerAtIndex(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Unauthorized(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MockMultiOwnableErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::AlreadyOwner(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidEthereumAddressOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidOwnerBytesLength(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::NoOwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Unauthorized(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for MockMultiOwnableErrors { + 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 MockMultiOwnableErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AlreadyOwner(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidEthereumAddressOwner(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidOwnerBytesLength(element) => ::core::fmt::Display::fmt(element, f), + Self::NoOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::Unauthorized(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for MockMultiOwnableErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for MockMultiOwnableErrors { + fn from(value: AlreadyOwner) -> Self { + Self::AlreadyOwner(value) + } + } + impl ::core::convert::From for MockMultiOwnableErrors { + fn from(value: InvalidEthereumAddressOwner) -> Self { + Self::InvalidEthereumAddressOwner(value) + } + } + impl ::core::convert::From for MockMultiOwnableErrors { + fn from(value: InvalidOwnerBytesLength) -> Self { + Self::InvalidOwnerBytesLength(value) + } + } + impl ::core::convert::From for MockMultiOwnableErrors { + fn from(value: NoOwnerAtIndex) -> Self { + Self::NoOwnerAtIndex(value) + } + } + impl ::core::convert::From for MockMultiOwnableErrors { + fn from(value: Unauthorized) -> Self { + Self::Unauthorized(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "AddOwner", abi = "AddOwner(uint256,bytes)")] + pub struct AddOwnerFilter { + #[ethevent(indexed)] + pub index: ::ethers::core::types::U256, + pub owner: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "RemoveOwner", abi = "RemoveOwner(uint256,bytes)")] + pub struct RemoveOwnerFilter { + #[ethevent(indexed)] + pub index: ::ethers::core::types::U256, + pub owner: ::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 MockMultiOwnableEvents { + AddOwnerFilter(AddOwnerFilter), + RemoveOwnerFilter(RemoveOwnerFilter), + } + impl ::ethers::contract::EthLogDecode for MockMultiOwnableEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = AddOwnerFilter::decode_log(log) { + return Ok(MockMultiOwnableEvents::AddOwnerFilter(decoded)); + } + if let Ok(decoded) = RemoveOwnerFilter::decode_log(log) { + return Ok(MockMultiOwnableEvents::RemoveOwnerFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for MockMultiOwnableEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::RemoveOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockMultiOwnableEvents { + fn from(value: AddOwnerFilter) -> Self { + Self::AddOwnerFilter(value) + } + } + impl ::core::convert::From for MockMultiOwnableEvents { + fn from(value: RemoveOwnerFilter) -> Self { + Self::RemoveOwnerFilter(value) + } + } + ///Container type for all input parameters for the `addOwnerAddress` function with signature `addOwnerAddress(address)` and selector `0x0f0f3f24` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "addOwnerAddress", abi = "addOwnerAddress(address)")] + pub struct AddOwnerAddressCall { + pub owner: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `addOwnerPublicKey` function with signature `addOwnerPublicKey(bytes32,bytes32)` and selector `0x29565e3b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "addOwnerPublicKey", abi = "addOwnerPublicKey(bytes32,bytes32)")] + pub struct AddOwnerPublicKeyCall { + pub x: [u8; 32], + pub y: [u8; 32], + } + ///Container type for all input parameters for the `init` function with signature `init(bytes[])` and selector `0x459fb2ad` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "init", abi = "init(bytes[])")] + pub struct InitCall { + pub owners: ::std::vec::Vec<::ethers::core::types::Bytes>, + } + ///Container type for all input parameters for the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerAddress", abi = "isOwnerAddress(address)")] + pub struct IsOwnerAddressCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerBytes", abi = "isOwnerBytes(bytes)")] + pub struct IsOwnerBytesCall { + pub account: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerPublicKey", abi = "isOwnerPublicKey(bytes32,bytes32)")] + pub struct IsOwnerPublicKeyCall { + pub x: [u8; 32], + pub y: [u8; 32], + } + ///Container type for all input parameters for the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nextOwnerIndex", abi = "nextOwnerIndex()")] + pub struct NextOwnerIndexCall; + ///Container type for all input parameters for the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "ownerAtIndex", abi = "ownerAtIndex(uint256)")] + pub struct OwnerAtIndexCall { + pub index: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `removeOwnerAtIndex` function with signature `removeOwnerAtIndex(uint256)` and selector `0x72de3b5a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "removeOwnerAtIndex", abi = "removeOwnerAtIndex(uint256)")] + pub struct RemoveOwnerAtIndexCall { + pub index: ::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 MockMultiOwnableCalls { + AddOwnerAddress(AddOwnerAddressCall), + AddOwnerPublicKey(AddOwnerPublicKeyCall), + Init(InitCall), + IsOwnerAddress(IsOwnerAddressCall), + IsOwnerBytes(IsOwnerBytesCall), + IsOwnerPublicKey(IsOwnerPublicKeyCall), + NextOwnerIndex(NextOwnerIndexCall), + OwnerAtIndex(OwnerAtIndexCall), + RemoveOwnerAtIndex(RemoveOwnerAtIndexCall), + } + impl ::ethers::core::abi::AbiDecode for MockMultiOwnableCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AddOwnerAddress(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AddOwnerPublicKey(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Init(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsOwnerAddress(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::IsOwnerBytes(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsOwnerPublicKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::NextOwnerIndex(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::OwnerAtIndex(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::RemoveOwnerAtIndex(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MockMultiOwnableCalls { + fn encode(self) -> Vec { + match self { + Self::AddOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::AddOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Init(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerBytes(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NextOwnerIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RemoveOwnerAtIndex(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for MockMultiOwnableCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::AddOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), + Self::Init(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerBytes(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), + Self::NextOwnerIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::RemoveOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockMultiOwnableCalls { + fn from(value: AddOwnerAddressCall) -> Self { + Self::AddOwnerAddress(value) + } + } + impl ::core::convert::From for MockMultiOwnableCalls { + fn from(value: AddOwnerPublicKeyCall) -> Self { + Self::AddOwnerPublicKey(value) + } + } + impl ::core::convert::From for MockMultiOwnableCalls { + fn from(value: InitCall) -> Self { + Self::Init(value) + } + } + impl ::core::convert::From for MockMultiOwnableCalls { + fn from(value: IsOwnerAddressCall) -> Self { + Self::IsOwnerAddress(value) + } + } + impl ::core::convert::From for MockMultiOwnableCalls { + fn from(value: IsOwnerBytesCall) -> Self { + Self::IsOwnerBytes(value) + } + } + impl ::core::convert::From for MockMultiOwnableCalls { + fn from(value: IsOwnerPublicKeyCall) -> Self { + Self::IsOwnerPublicKey(value) + } + } + impl ::core::convert::From for MockMultiOwnableCalls { + fn from(value: NextOwnerIndexCall) -> Self { + Self::NextOwnerIndex(value) + } + } + impl ::core::convert::From for MockMultiOwnableCalls { + fn from(value: OwnerAtIndexCall) -> Self { + Self::OwnerAtIndex(value) + } + } + impl ::core::convert::From for MockMultiOwnableCalls { + fn from(value: RemoveOwnerAtIndexCall) -> Self { + Self::RemoveOwnerAtIndex(value) + } + } + ///Container type for all return fields from the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerAddressReturn(pub bool); + ///Container type for all return fields from the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerBytesReturn(pub bool); + ///Container type for all return fields from the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerPublicKeyReturn(pub bool); + ///Container type for all return fields from the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NextOwnerIndexReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct OwnerAtIndexReturn(pub ::ethers::core::types::Bytes); +} diff --git a/xmtp_id/src/bindings/mock_target.rs b/xmtp_id/src/bindings/mock_target.rs new file mode 100644 index 000000000..cc7b07652 --- /dev/null +++ b/xmtp_id/src/bindings/mock_target.rs @@ -0,0 +1,495 @@ +pub use mock_target::*; +/// 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_target { + #[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("changeOwnerSlotValue"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("changeOwnerSlotValue",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("change"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("data"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("data"), + inputs: ::std::vec![], + 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("datahash"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("datahash"), + 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("revertWithTargetError"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("revertWithTargetError",), + inputs: ::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"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("setData"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setData"), + inputs: ::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"), + ), + },], + 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::Payable, + },], + ), + ]), + events: ::std::collections::BTreeMap::new(), + errors: ::core::convert::From::from([( + ::std::borrow::ToOwned::to_owned("TargetError"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("TargetError"), + inputs: ::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"), + ), + },], + },], + )]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static MOCKTARGET_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x04y\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0JW`\x005`\xE0\x1C\x80c\x0CO`Y\x14a\0OW\x80c'k\x86\xA9\x14a\0dW\x80ca\xA3\x0B.\x14a\0\x8DW\x80cs\xD4\xA1:\x14a\0\xA0W\x80c\xABb\xF0\xE1\x14a\0\xC2W[`\0\x80\xFD[a\0ba\0]6`\x04a\x01\xCFV[a\0\xD5V[\0[4\x80\x15a\0pW`\0\x80\xFD[Pa\0z`\0T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ba\0\x9B6`\x04a\x02\x80V[a\0\xF9V[4\x80\x15a\0\xACW`\0\x80\xFD[Pa\0\xB5a\x01\x0EV[`@Qa\0\x84\x91\x90a\x02\xA9V[a\0\xB5a\0\xD06`\x04a\x01\xCFV[a\x01\x9CV[\x80`@Qc4>\xB9q`\xE1\x1B\x81R`\x04\x01a\0\xF0\x91\x90a\x02\xA9V[`@Q\x80\x91\x03\x90\xFD[\x80\x15a\x01\x0BWb\x11\"3c\x8Bx\xC6\xD8\x19U[PV[`\x01\x80Ta\x01\x1B\x90a\x02\xF8V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01G\x90a\x02\xF8V[\x80\x15a\x01\x94W\x80`\x1F\x10a\x01iWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x01\x94V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01wW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[```\x01a\x01\xAA\x83\x82a\x03\x83V[PP\x80Q` \x82\x01 `\0U\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x01\xE1W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xF9W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x02\rW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\x1FWa\x02\x1Fa\x01\xB9V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02GWa\x02Ga\x01\xB9V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x02`W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x02\x92W`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x02\xA2W`\0\x80\xFD[\x93\x92PPPV[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\x02\xD7W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x02\xBBV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x03\x0CW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x03,WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x03~W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x03[WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x03zW\x82\x81U`\x01\x01a\x03gV[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x9DWa\x03\x9Da\x01\xB9V[a\x03\xB1\x81a\x03\xAB\x84Ta\x02\xF8V[\x84a\x032V[` \x80`\x1F\x83\x11`\x01\x81\x14a\x03\xE6W`\0\x84\x15a\x03\xCEWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x03zV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x04\x15W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x03\xF6V[P\x85\x82\x10\x15a\x043W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV\xFE\xA2dipfsX\"\x12 G\x92L\xC3U\x8F^\xDF\x01\xB8\x0B\x8Ee\x08\xB6\x8B\xBB\xE6\x12p\xFE\x0F6~\x864\xAC\xEB\xF7\"e\xBEdsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static MOCKTARGET_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0JW`\x005`\xE0\x1C\x80c\x0CO`Y\x14a\0OW\x80c'k\x86\xA9\x14a\0dW\x80ca\xA3\x0B.\x14a\0\x8DW\x80cs\xD4\xA1:\x14a\0\xA0W\x80c\xABb\xF0\xE1\x14a\0\xC2W[`\0\x80\xFD[a\0ba\0]6`\x04a\x01\xCFV[a\0\xD5V[\0[4\x80\x15a\0pW`\0\x80\xFD[Pa\0z`\0T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ba\0\x9B6`\x04a\x02\x80V[a\0\xF9V[4\x80\x15a\0\xACW`\0\x80\xFD[Pa\0\xB5a\x01\x0EV[`@Qa\0\x84\x91\x90a\x02\xA9V[a\0\xB5a\0\xD06`\x04a\x01\xCFV[a\x01\x9CV[\x80`@Qc4>\xB9q`\xE1\x1B\x81R`\x04\x01a\0\xF0\x91\x90a\x02\xA9V[`@Q\x80\x91\x03\x90\xFD[\x80\x15a\x01\x0BWb\x11\"3c\x8Bx\xC6\xD8\x19U[PV[`\x01\x80Ta\x01\x1B\x90a\x02\xF8V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01G\x90a\x02\xF8V[\x80\x15a\x01\x94W\x80`\x1F\x10a\x01iWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x01\x94V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01wW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[```\x01a\x01\xAA\x83\x82a\x03\x83V[PP\x80Q` \x82\x01 `\0U\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x01\xE1W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xF9W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x02\rW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\x1FWa\x02\x1Fa\x01\xB9V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02GWa\x02Ga\x01\xB9V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x02`W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x02\x92W`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x02\xA2W`\0\x80\xFD[\x93\x92PPPV[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\x02\xD7W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x02\xBBV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x03\x0CW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x03,WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x03~W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x03[WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x03zW\x82\x81U`\x01\x01a\x03gV[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x9DWa\x03\x9Da\x01\xB9V[a\x03\xB1\x81a\x03\xAB\x84Ta\x02\xF8V[\x84a\x032V[` \x80`\x1F\x83\x11`\x01\x81\x14a\x03\xE6W`\0\x84\x15a\x03\xCEWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x03zV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x04\x15W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x03\xF6V[P\x85\x82\x10\x15a\x043W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV\xFE\xA2dipfsX\"\x12 G\x92L\xC3U\x8F^\xDF\x01\xB8\x0B\x8Ee\x08\xB6\x8B\xBB\xE6\x12p\xFE\x0F6~\x864\xAC\xEB\xF7\"e\xBEdsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static MOCKTARGET_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct MockTarget(::ethers::contract::Contract); + impl ::core::clone::Clone for MockTarget { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for MockTarget { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for MockTarget { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for MockTarget { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(MockTarget)) + .field(&self.address()) + .finish() + } + } + impl MockTarget { + /// 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(), + MOCKTARGET_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( + MOCKTARGET_ABI.clone(), + MOCKTARGET_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `changeOwnerSlotValue` (0x61a30b2e) function + pub fn change_owner_slot_value( + &self, + change: bool, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([97, 163, 11, 46], change) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `data` (0x73d4a13a) function + pub fn data( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([115, 212, 161, 58], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `datahash` (0x276b86a9) function + pub fn datahash(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([39, 107, 134, 169], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `revertWithTargetError` (0x0c4f6059) function + pub fn revert_with_target_error( + &self, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([12, 79, 96, 89], data) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `setData` (0xab62f0e1) function + pub fn set_data( + &self, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([171, 98, 240, 225], data) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for MockTarget { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `TargetError` with signature `TargetError(bytes)` and selector `0x687d72e2` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "TargetError", abi = "TargetError(bytes)")] + pub struct TargetError { + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `changeOwnerSlotValue` function with signature `changeOwnerSlotValue(bool)` and selector `0x61a30b2e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "changeOwnerSlotValue", abi = "changeOwnerSlotValue(bool)")] + pub struct ChangeOwnerSlotValueCall { + pub change: bool, + } + ///Container type for all input parameters for the `data` function with signature `data()` and selector `0x73d4a13a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "data", abi = "data()")] + pub struct DataCall; + ///Container type for all input parameters for the `datahash` function with signature `datahash()` and selector `0x276b86a9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "datahash", abi = "datahash()")] + pub struct DatahashCall; + ///Container type for all input parameters for the `revertWithTargetError` function with signature `revertWithTargetError(bytes)` and selector `0x0c4f6059` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "revertWithTargetError", abi = "revertWithTargetError(bytes)")] + pub struct RevertWithTargetErrorCall { + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `setData` function with signature `setData(bytes)` and selector `0xab62f0e1` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "setData", abi = "setData(bytes)")] + pub struct SetDataCall { + 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 MockTargetCalls { + ChangeOwnerSlotValue(ChangeOwnerSlotValueCall), + Data(DataCall), + Datahash(DatahashCall), + RevertWithTargetError(RevertWithTargetErrorCall), + SetData(SetDataCall), + } + impl ::ethers::core::abi::AbiDecode for MockTargetCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::ChangeOwnerSlotValue(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Data(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Datahash(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::RevertWithTargetError(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::SetData(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MockTargetCalls { + fn encode(self) -> Vec { + match self { + Self::ChangeOwnerSlotValue(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::Data(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Datahash(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertWithTargetError(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SetData(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for MockTargetCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ChangeOwnerSlotValue(element) => ::core::fmt::Display::fmt(element, f), + Self::Data(element) => ::core::fmt::Display::fmt(element, f), + Self::Datahash(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertWithTargetError(element) => ::core::fmt::Display::fmt(element, f), + Self::SetData(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MockTargetCalls { + fn from(value: ChangeOwnerSlotValueCall) -> Self { + Self::ChangeOwnerSlotValue(value) + } + } + impl ::core::convert::From for MockTargetCalls { + fn from(value: DataCall) -> Self { + Self::Data(value) + } + } + impl ::core::convert::From for MockTargetCalls { + fn from(value: DatahashCall) -> Self { + Self::Datahash(value) + } + } + impl ::core::convert::From for MockTargetCalls { + fn from(value: RevertWithTargetErrorCall) -> Self { + Self::RevertWithTargetError(value) + } + } + impl ::core::convert::From for MockTargetCalls { + fn from(value: SetDataCall) -> Self { + Self::SetData(value) + } + } + ///Container type for all return fields from the `data` function with signature `data()` and selector `0x73d4a13a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DataReturn(pub ::ethers::core::types::Bytes); + ///Container type for all return fields from the `datahash` function with signature `datahash()` and selector `0x276b86a9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct DatahashReturn(pub [u8; 32]); + ///Container type for all return fields from the `setData` function with signature `setData(bytes)` and selector `0xab62f0e1` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct SetDataReturn(pub ::ethers::core::types::Bytes); +} diff --git a/xmtp_id/src/bindings/mod.rs b/xmtp_id/src/bindings/mod.rs new file mode 100644 index 000000000..6dd640266 --- /dev/null +++ b/xmtp_id/src/bindings/mod.rs @@ -0,0 +1,37 @@ +#![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 base_64; +pub mod base_64_url; +pub mod coinbase_smart_wallet; +pub mod coinbase_smart_wallet_factory; +pub mod dummy; +pub mod erc1271; +pub mod erc1271_input_generator; +pub mod fcl_ecdsa; +pub mod fcl_elliptic_zz; +pub mod helpers; +pub mod i_aggregator; +pub mod i_entry_point; +pub mod i_nonce_manager; +pub mod i_stake_manager; +pub mod ierc721_token_receiver; +pub mod lib_clone; +pub mod lib_string; +pub mod mock_coinbase_smart_wallet; +pub mod mock_entry_point; +pub mod mock_erc20; +pub mod mock_erc721; +pub mod mock_multi_ownable; +pub mod mock_target; +pub mod multi_ownable; +pub mod receiver; +pub mod shared_types; +pub mod signature_checker_lib; +pub mod static_; +pub mod user_operation_lib; +pub mod utils; +pub mod uups_upgradeable; +pub mod web_authn; diff --git a/xmtp_id/src/bindings/multi_ownable.rs b/xmtp_id/src/bindings/multi_ownable.rs new file mode 100644 index 000000000..a13fb3cf3 --- /dev/null +++ b/xmtp_id/src/bindings/multi_ownable.rs @@ -0,0 +1,1132 @@ +pub use multi_ownable::*; +/// 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 multi_ownable { + #[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("addOwnerAddress"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("addOwnerAddress"), + 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"), + ), + },], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + 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("y"), + 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("isOwnerAddress"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerAddress"), + 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"), + ), + },], + 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("isOwnerBytes"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerBytes"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("account"), + 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::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("isOwnerPublicKey"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isOwnerPublicKey"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("x"), + 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("y"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + }, + ], + 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("nextOwnerIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), + 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("ownerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ownerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("removeOwnerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("removeOwnerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("AddOwner"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("AddOwner"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("index"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("RemoveOwner"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("RemoveOwner"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("index"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + },], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AlreadyOwner"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("AlreadyOwner"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength",), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + },], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + 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("Unauthorized"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("Unauthorized"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static MULTIOWNABLE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\t8\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80cr\xDE;Z\x11a\0[W\x80cr\xDE;Z\x14a\0\xF0W\x80c\x8E\xA6\x90)\x14a\x01\x03W\x80c\xA2\xE1\xA8\xD8\x14a\x01#W\x80c\xD9H\xFD.\x14a\x016W`\0\x80\xFD[\x80c\x06j\x1E\xB7\x14a\0\x8DW\x80c\x0F\x0F?$\x14a\0\xB5W\x80c\x1C\xA59?\x14a\0\xCAW\x80c)V^;\x14a\0\xDDW[`\0\x80\xFD[a\0\xA0a\0\x9B6`\x04a\x05\xCBV[a\x01TV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC8a\0\xC36`\x04a\x05\xEDV[a\x01\xC2V[\0[a\0\xA0a\0\xD86`\x04a\x063V[a\x01\xFAV[a\0\xC8a\0\xEB6`\x04a\x05\xCBV[a\x025V[a\0\xC8a\0\xFE6`\x04a\x06\xE4V[a\x02^V[a\x01\x16a\x01\x116`\x04a\x06\xE4V[a\x03PV[`@Qa\0\xAC\x91\x90a\x07!V[a\0\xA0a\x0116`\x04a\x05\xEDV[a\x04\x11V[`\0\x80Q` a\x08\xE3\x839\x81Q\x91RT`@Q\x90\x81R` \x01a\0\xACV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\xA7\x91a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P\x92\x91PPV[a\x01\xCAa\x04WV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x01\xF7\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x04\x89V[PV[`\0`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`\x02\x01\x82`@Qa\x02\x1C\x91\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x02=a\x04WV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x02Z\x90``\x01a\x01\xE3V[PPV[a\x02fa\x04WV[`\0a\x02q\x82a\x03PV[\x90P\x80Q`\0\x03a\x02\x9DW`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\x02\xCD\x90\x83\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\x02\xF9`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x03\x14\x91a\x05}V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x03D\x91\x90a\x07!V[`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x03\x8C\x90a\x07pV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\xB8\x90a\x07pV[\x80\x15a\x04\x05W\x80`\x1F\x10a\x03\xDAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04\x05V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xE8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x02\x1C\x91a\x07TV[a\x04`3a\x04\x11V[\x80a\x04jWP30\x14[\x15a\x04qWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x01\xF7\x81`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x80T\x90`\0a\x04\xAA\x83a\x07\xAAV[\x91\x90PUa\x04\xB7\x82a\x01\xFAV[\x15a\x04\xD7W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x02\x94\x91\x90a\x07!V[`\x01`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`\x02\x01\x83`@Qa\x04\xF9\x91\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x05/`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x05L\x90\x82a\x08\"V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x03D\x91\x90a\x07!V[P\x80Ta\x05\x89\x90a\x07pV[`\0\x82U\x80`\x1F\x10a\x05\x99WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x01\xF7\x91\x90[\x80\x82\x11\x15a\x05\xC7W`\0\x81U`\x01\x01a\x05\xB3V[P\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x05\xDEW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x05\xFFW`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x16W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x06EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06]W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x06qW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x06\x83Wa\x06\x83a\x06\x1DV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x06\xABWa\x06\xABa\x06\x1DV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x06\xC4W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x06\xF6W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a\x07\x18W\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\0V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x07@\x81`@\x85\x01` \x87\x01a\x06\xFDV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x82Qa\x07f\x81\x84` \x87\x01a\x06\xFDV[\x91\x90\x91\x01\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x07\x84W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x07\xA4WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0`\x01\x82\x01a\x07\xCAWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[`\x1F\x82\x11\x15a\x08\x1DW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x07\xFAWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x08\x19W\x82\x81U`\x01\x01a\x08\x06V[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08I[gTmvF\xF0J\xDE\x10\xDD@\x17\xA7*\x8B2\xD7dsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static MULTIOWNABLE_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80cr\xDE;Z\x11a\0[W\x80cr\xDE;Z\x14a\0\xF0W\x80c\x8E\xA6\x90)\x14a\x01\x03W\x80c\xA2\xE1\xA8\xD8\x14a\x01#W\x80c\xD9H\xFD.\x14a\x016W`\0\x80\xFD[\x80c\x06j\x1E\xB7\x14a\0\x8DW\x80c\x0F\x0F?$\x14a\0\xB5W\x80c\x1C\xA59?\x14a\0\xCAW\x80c)V^;\x14a\0\xDDW[`\0\x80\xFD[a\0\xA0a\0\x9B6`\x04a\x05\xCBV[a\x01TV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC8a\0\xC36`\x04a\x05\xEDV[a\x01\xC2V[\0[a\0\xA0a\0\xD86`\x04a\x063V[a\x01\xFAV[a\0\xC8a\0\xEB6`\x04a\x05\xCBV[a\x025V[a\0\xC8a\0\xFE6`\x04a\x06\xE4V[a\x02^V[a\x01\x16a\x01\x116`\x04a\x06\xE4V[a\x03PV[`@Qa\0\xAC\x91\x90a\x07!V[a\0\xA0a\x0116`\x04a\x05\xEDV[a\x04\x11V[`\0\x80Q` a\x08\xE3\x839\x81Q\x91RT`@Q\x90\x81R` \x01a\0\xACV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\xA7\x91a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P\x92\x91PPV[a\x01\xCAa\x04WV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x01\xF7\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x04\x89V[PV[`\0`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`\x02\x01\x82`@Qa\x02\x1C\x91\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x02=a\x04WV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x02Z\x90``\x01a\x01\xE3V[PPV[a\x02fa\x04WV[`\0a\x02q\x82a\x03PV[\x90P\x80Q`\0\x03a\x02\x9DW`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\x02\xCD\x90\x83\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\x02\xF9`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x03\x14\x91a\x05}V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x03D\x91\x90a\x07!V[`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x03\x8C\x90a\x07pV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\xB8\x90a\x07pV[\x80\x15a\x04\x05W\x80`\x1F\x10a\x03\xDAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04\x05V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xE8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x02\x1C\x91a\x07TV[a\x04`3a\x04\x11V[\x80a\x04jWP30\x14[\x15a\x04qWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x01\xF7\x81`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x80T\x90`\0a\x04\xAA\x83a\x07\xAAV[\x91\x90PUa\x04\xB7\x82a\x01\xFAV[\x15a\x04\xD7W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x02\x94\x91\x90a\x07!V[`\x01`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`\x02\x01\x83`@Qa\x04\xF9\x91\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x05/`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x05L\x90\x82a\x08\"V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x03D\x91\x90a\x07!V[P\x80Ta\x05\x89\x90a\x07pV[`\0\x82U\x80`\x1F\x10a\x05\x99WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x01\xF7\x91\x90[\x80\x82\x11\x15a\x05\xC7W`\0\x81U`\x01\x01a\x05\xB3V[P\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x05\xDEW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x05\xFFW`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x16W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x06EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06]W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x06qW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x06\x83Wa\x06\x83a\x06\x1DV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x06\xABWa\x06\xABa\x06\x1DV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x06\xC4W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x06\xF6W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a\x07\x18W\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\0V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x07@\x81`@\x85\x01` \x87\x01a\x06\xFDV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x82Qa\x07f\x81\x84` \x87\x01a\x06\xFDV[\x91\x90\x91\x01\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x07\x84W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x07\xA4WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0`\x01\x82\x01a\x07\xCAWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[`\x1F\x82\x11\x15a\x08\x1DW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x07\xFAWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x08\x19W\x82\x81U`\x01\x01a\x08\x06V[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08I[gTmvF\xF0J\xDE\x10\xDD@\x17\xA7*\x8B2\xD7dsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static MULTIOWNABLE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct MultiOwnable(::ethers::contract::Contract); + impl ::core::clone::Clone for MultiOwnable { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for MultiOwnable { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for MultiOwnable { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for MultiOwnable { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(MultiOwnable)) + .field(&self.address()) + .finish() + } + } + impl MultiOwnable { + /// 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(), + MULTIOWNABLE_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( + MULTIOWNABLE_ABI.clone(), + MULTIOWNABLE_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `addOwnerAddress` (0x0f0f3f24) function + pub fn add_owner_address( + &self, + owner: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([15, 15, 63, 36], owner) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `addOwnerPublicKey` (0x29565e3b) function + pub fn add_owner_public_key( + &self, + x: [u8; 32], + y: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([41, 86, 94, 59], (x, y)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerAddress` (0xa2e1a8d8) function + pub fn is_owner_address( + &self, + account: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([162, 225, 168, 216], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerBytes` (0x1ca5393f) function + pub fn is_owner_bytes( + &self, + account: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([28, 165, 57, 63], account) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `isOwnerPublicKey` (0x066a1eb7) function + pub fn is_owner_public_key( + &self, + x: [u8; 32], + y: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([6, 106, 30, 183], (x, y)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `nextOwnerIndex` (0xd948fd2e) function + pub fn next_owner_index( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([217, 72, 253, 46], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `ownerAtIndex` (0x8ea69029) function + pub fn owner_at_index( + &self, + index: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([142, 166, 144, 41], index) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `removeOwnerAtIndex` (0x72de3b5a) function + pub fn remove_owner_at_index( + &self, + index: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([114, 222, 59, 90], index) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `AddOwner` event + pub fn add_owner_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AddOwnerFilter> { + self.0.event() + } + ///Gets the contract's `RemoveOwner` event + pub fn remove_owner_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, RemoveOwnerFilter> + { + 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, MultiOwnableEvents> + { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> for MultiOwnable { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `AlreadyOwner` with signature `AlreadyOwner(bytes)` and selector `0x8d16255a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "AlreadyOwner", abi = "AlreadyOwner(bytes)")] + pub struct AlreadyOwner { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `InvalidEthereumAddressOwner` with signature `InvalidEthereumAddressOwner(bytes)` and selector `0xbff1ac65` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidEthereumAddressOwner", + abi = "InvalidEthereumAddressOwner(bytes)" + )] + pub struct InvalidEthereumAddressOwner { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `InvalidOwnerBytesLength` with signature `InvalidOwnerBytesLength(bytes)` and selector `0x4eeab722` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror( + name = "InvalidOwnerBytesLength", + abi = "InvalidOwnerBytesLength(bytes)" + )] + pub struct InvalidOwnerBytesLength { + pub owner: ::ethers::core::types::Bytes, + } + ///Custom Error type `NoOwnerAtIndex` with signature `NoOwnerAtIndex(uint256)` and selector `0x68188e7a` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "NoOwnerAtIndex", abi = "NoOwnerAtIndex(uint256)")] + pub struct NoOwnerAtIndex { + pub index: ::ethers::core::types::U256, + } + ///Custom Error type `Unauthorized` with signature `Unauthorized()` and selector `0x82b42900` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "Unauthorized", abi = "Unauthorized()")] + pub struct Unauthorized; + ///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 MultiOwnableErrors { + AlreadyOwner(AlreadyOwner), + InvalidEthereumAddressOwner(InvalidEthereumAddressOwner), + InvalidOwnerBytesLength(InvalidOwnerBytesLength), + NoOwnerAtIndex(NoOwnerAtIndex), + Unauthorized(Unauthorized), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for MultiOwnableErrors { + 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::AlreadyOwner(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidEthereumAddressOwner(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::InvalidOwnerBytesLength(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::NoOwnerAtIndex(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::Unauthorized(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MultiOwnableErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::AlreadyOwner(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::InvalidEthereumAddressOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::InvalidOwnerBytesLength(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::NoOwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Unauthorized(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for MultiOwnableErrors { + 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 MultiOwnableErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AlreadyOwner(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidEthereumAddressOwner(element) => ::core::fmt::Display::fmt(element, f), + Self::InvalidOwnerBytesLength(element) => ::core::fmt::Display::fmt(element, f), + Self::NoOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::Unauthorized(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for MultiOwnableErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for MultiOwnableErrors { + fn from(value: AlreadyOwner) -> Self { + Self::AlreadyOwner(value) + } + } + impl ::core::convert::From for MultiOwnableErrors { + fn from(value: InvalidEthereumAddressOwner) -> Self { + Self::InvalidEthereumAddressOwner(value) + } + } + impl ::core::convert::From for MultiOwnableErrors { + fn from(value: InvalidOwnerBytesLength) -> Self { + Self::InvalidOwnerBytesLength(value) + } + } + impl ::core::convert::From for MultiOwnableErrors { + fn from(value: NoOwnerAtIndex) -> Self { + Self::NoOwnerAtIndex(value) + } + } + impl ::core::convert::From for MultiOwnableErrors { + fn from(value: Unauthorized) -> Self { + Self::Unauthorized(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "AddOwner", abi = "AddOwner(uint256,bytes)")] + pub struct AddOwnerFilter { + #[ethevent(indexed)] + pub index: ::ethers::core::types::U256, + pub owner: ::ethers::core::types::Bytes, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "RemoveOwner", abi = "RemoveOwner(uint256,bytes)")] + pub struct RemoveOwnerFilter { + #[ethevent(indexed)] + pub index: ::ethers::core::types::U256, + pub owner: ::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 MultiOwnableEvents { + AddOwnerFilter(AddOwnerFilter), + RemoveOwnerFilter(RemoveOwnerFilter), + } + impl ::ethers::contract::EthLogDecode for MultiOwnableEvents { + fn decode_log( + log: &::ethers::core::abi::RawLog, + ) -> ::core::result::Result { + if let Ok(decoded) = AddOwnerFilter::decode_log(log) { + return Ok(MultiOwnableEvents::AddOwnerFilter(decoded)); + } + if let Ok(decoded) = RemoveOwnerFilter::decode_log(log) { + return Ok(MultiOwnableEvents::RemoveOwnerFilter(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData) + } + } + impl ::core::fmt::Display for MultiOwnableEvents { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::RemoveOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MultiOwnableEvents { + fn from(value: AddOwnerFilter) -> Self { + Self::AddOwnerFilter(value) + } + } + impl ::core::convert::From for MultiOwnableEvents { + fn from(value: RemoveOwnerFilter) -> Self { + Self::RemoveOwnerFilter(value) + } + } + ///Container type for all input parameters for the `addOwnerAddress` function with signature `addOwnerAddress(address)` and selector `0x0f0f3f24` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "addOwnerAddress", abi = "addOwnerAddress(address)")] + pub struct AddOwnerAddressCall { + pub owner: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `addOwnerPublicKey` function with signature `addOwnerPublicKey(bytes32,bytes32)` and selector `0x29565e3b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "addOwnerPublicKey", abi = "addOwnerPublicKey(bytes32,bytes32)")] + pub struct AddOwnerPublicKeyCall { + pub x: [u8; 32], + pub y: [u8; 32], + } + ///Container type for all input parameters for the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerAddress", abi = "isOwnerAddress(address)")] + pub struct IsOwnerAddressCall { + pub account: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerBytes", abi = "isOwnerBytes(bytes)")] + pub struct IsOwnerBytesCall { + pub account: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "isOwnerPublicKey", abi = "isOwnerPublicKey(bytes32,bytes32)")] + pub struct IsOwnerPublicKeyCall { + pub x: [u8; 32], + pub y: [u8; 32], + } + ///Container type for all input parameters for the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "nextOwnerIndex", abi = "nextOwnerIndex()")] + pub struct NextOwnerIndexCall; + ///Container type for all input parameters for the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "ownerAtIndex", abi = "ownerAtIndex(uint256)")] + pub struct OwnerAtIndexCall { + pub index: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `removeOwnerAtIndex` function with signature `removeOwnerAtIndex(uint256)` and selector `0x72de3b5a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "removeOwnerAtIndex", abi = "removeOwnerAtIndex(uint256)")] + pub struct RemoveOwnerAtIndexCall { + pub index: ::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 MultiOwnableCalls { + AddOwnerAddress(AddOwnerAddressCall), + AddOwnerPublicKey(AddOwnerPublicKeyCall), + IsOwnerAddress(IsOwnerAddressCall), + IsOwnerBytes(IsOwnerBytesCall), + IsOwnerPublicKey(IsOwnerPublicKeyCall), + NextOwnerIndex(NextOwnerIndexCall), + OwnerAtIndex(OwnerAtIndexCall), + RemoveOwnerAtIndex(RemoveOwnerAtIndexCall), + } + impl ::ethers::core::abi::AbiDecode for MultiOwnableCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AddOwnerAddress(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::AddOwnerPublicKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsOwnerAddress(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::IsOwnerBytes(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::IsOwnerPublicKey(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::NextOwnerIndex(decoded)); + } + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::OwnerAtIndex(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::RemoveOwnerAtIndex(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for MultiOwnableCalls { + fn encode(self) -> Vec { + match self { + Self::AddOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::AddOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerBytes(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::IsOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::NextOwnerIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RemoveOwnerAtIndex(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for MultiOwnableCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::AddOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::AddOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerBytes(element) => ::core::fmt::Display::fmt(element, f), + Self::IsOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), + Self::NextOwnerIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + Self::RemoveOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for MultiOwnableCalls { + fn from(value: AddOwnerAddressCall) -> Self { + Self::AddOwnerAddress(value) + } + } + impl ::core::convert::From for MultiOwnableCalls { + fn from(value: AddOwnerPublicKeyCall) -> Self { + Self::AddOwnerPublicKey(value) + } + } + impl ::core::convert::From for MultiOwnableCalls { + fn from(value: IsOwnerAddressCall) -> Self { + Self::IsOwnerAddress(value) + } + } + impl ::core::convert::From for MultiOwnableCalls { + fn from(value: IsOwnerBytesCall) -> Self { + Self::IsOwnerBytes(value) + } + } + impl ::core::convert::From for MultiOwnableCalls { + fn from(value: IsOwnerPublicKeyCall) -> Self { + Self::IsOwnerPublicKey(value) + } + } + impl ::core::convert::From for MultiOwnableCalls { + fn from(value: NextOwnerIndexCall) -> Self { + Self::NextOwnerIndex(value) + } + } + impl ::core::convert::From for MultiOwnableCalls { + fn from(value: OwnerAtIndexCall) -> Self { + Self::OwnerAtIndex(value) + } + } + impl ::core::convert::From for MultiOwnableCalls { + fn from(value: RemoveOwnerAtIndexCall) -> Self { + Self::RemoveOwnerAtIndex(value) + } + } + ///Container type for all return fields from the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerAddressReturn(pub bool); + ///Container type for all return fields from the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerBytesReturn(pub bool); + ///Container type for all return fields from the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct IsOwnerPublicKeyReturn(pub bool); + ///Container type for all return fields from the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct NextOwnerIndexReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct OwnerAtIndexReturn(pub ::ethers::core::types::Bytes); +} diff --git a/xmtp_id/src/bindings/receiver.rs b/xmtp_id/src/bindings/receiver.rs new file mode 100644 index 000000000..965439608 --- /dev/null +++ b/xmtp_id/src/bindings/receiver.rs @@ -0,0 +1,70 @@ +pub use receiver::*; +/// 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 receiver { + #[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: true, + fallback: true, + } + } + ///The parsed JSON ABI of the contract. + pub static RECEIVER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct Receiver(::ethers::contract::Contract); + impl ::core::clone::Clone for Receiver { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Receiver { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Receiver { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Receiver { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Receiver)) + .field(&self.address()) + .finish() + } + } + impl Receiver { + /// 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(), + RECEIVER_ABI.clone(), + client, + )) + } + } + impl From<::ethers::contract::Contract> for Receiver { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/xmtp_id/src/bindings/shared_types.rs b/xmtp_id/src/bindings/shared_types.rs new file mode 100644 index 000000000..82d3f4866 --- /dev/null +++ b/xmtp_id/src/bindings/shared_types.rs @@ -0,0 +1,64 @@ +///`Call(address,uint256,bytes)` +#[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, +)] +pub struct Call { + pub target: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, +} +///`DepositInfo(uint112,bool,uint112,uint32,uint48)` +#[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, +)] +pub struct DepositInfo { + pub deposit: u128, + pub staked: bool, + pub stake: u128, + pub unstake_delay_sec: u32, + pub withdraw_time: u64, +} +///`UserOperation(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)` +#[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, +)] +pub struct UserOperation { + pub sender: ::ethers::core::types::Address, + pub nonce: ::ethers::core::types::U256, + pub init_code: ::ethers::core::types::Bytes, + pub call_data: ::ethers::core::types::Bytes, + pub call_gas_limit: ::ethers::core::types::U256, + pub verification_gas_limit: ::ethers::core::types::U256, + pub pre_verification_gas: ::ethers::core::types::U256, + pub max_fee_per_gas: ::ethers::core::types::U256, + pub max_priority_fee_per_gas: ::ethers::core::types::U256, + pub paymaster_and_data: ::ethers::core::types::Bytes, + pub signature: ::ethers::core::types::Bytes, +} diff --git a/xmtp_id/src/bindings/signature_checker_lib.rs b/xmtp_id/src/bindings/signature_checker_lib.rs new file mode 100644 index 000000000..a99f842df --- /dev/null +++ b/xmtp_id/src/bindings/signature_checker_lib.rs @@ -0,0 +1,121 @@ +pub use signature_checker_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 signature_checker_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 SIGNATURECHECKERLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9C\xB1\x93U\x9D\x86\x0CS\xAA\xE6_\xDFzh$\xF7\xE5\xCE\x03\x08\x1D-\xD6\x1Cg%\x1A\x87i\x12\x88\xE4dsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static SIGNATURECHECKERLIB_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9C\xB1\x93U\x9D\x86\x0CS\xAA\xE6_\xDFzh$\xF7\xE5\xCE\x03\x08\x1D-\xD6\x1Cg%\x1A\x87i\x12\x88\xE4dsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static SIGNATURECHECKERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct SignatureCheckerLib(::ethers::contract::Contract); + impl ::core::clone::Clone for SignatureCheckerLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for SignatureCheckerLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for SignatureCheckerLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for SignatureCheckerLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(SignatureCheckerLib)) + .field(&self.address()) + .finish() + } + } + impl SignatureCheckerLib { + /// 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(), + SIGNATURECHECKERLIB_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( + SIGNATURECHECKERLIB_ABI.clone(), + SIGNATURECHECKERLIB_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 SignatureCheckerLib + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/xmtp_id/src/bindings/static_.rs b/xmtp_id/src/bindings/static_.rs new file mode 100644 index 000000000..a8fa29ede --- /dev/null +++ b/xmtp_id/src/bindings/static_.rs @@ -0,0 +1,119 @@ +pub use static_::*; +/// 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 static_ { + #[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 STATIC_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xCA\xE6\xF2\xC3w\xFD\xE2Am\xB9\x15\xF8\x19M\xF1\x1AK |\xD1n\xCE\x1ET\ryU(+\x8D\xFF\x8FdsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static STATIC_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xCA\xE6\xF2\xC3w\xFD\xE2Am\xB9\x15\xF8\x19M\xF1\x1AK |\xD1n\xCE\x1ET\ryU(+\x8D\xFF\x8FdsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static STATIC_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Static(::ethers::contract::Contract); + impl ::core::clone::Clone for Static { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Static { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Static { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Static { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Static)) + .field(&self.address()) + .finish() + } + } + impl Static { + /// 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(), + STATIC_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( + STATIC_ABI.clone(), + STATIC_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 Static { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/xmtp_id/src/bindings/user_operation_lib.rs b/xmtp_id/src/bindings/user_operation_lib.rs new file mode 100644 index 000000000..e73e4dbf3 --- /dev/null +++ b/xmtp_id/src/bindings/user_operation_lib.rs @@ -0,0 +1,121 @@ +pub use user_operation_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 user_operation_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 USEROPERATIONLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xDB\xA9\xE6\xF7\x03\xF2\xD6\xEE\xB19\xF4p\x88\xA6\xA1RLBP\xA7\x18\xDE'\xAE\xD3'Digzb\x8EdsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static USEROPERATIONLIB_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xDB\xA9\xE6\xF7\x03\xF2\xD6\xEE\xB19\xF4p\x88\xA6\xA1RLBP\xA7\x18\xDE'\xAE\xD3'Digzb\x8EdsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static USEROPERATIONLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct UserOperationLib(::ethers::contract::Contract); + impl ::core::clone::Clone for UserOperationLib { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for UserOperationLib { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for UserOperationLib { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for UserOperationLib { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(UserOperationLib)) + .field(&self.address()) + .finish() + } + } + impl UserOperationLib { + /// 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(), + USEROPERATIONLIB_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( + USEROPERATIONLIB_ABI.clone(), + USEROPERATIONLIB_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 UserOperationLib + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/xmtp_id/src/bindings/utils.rs b/xmtp_id/src/bindings/utils.rs new file mode 100644 index 000000000..aee39dba1 --- /dev/null +++ b/xmtp_id/src/bindings/utils.rs @@ -0,0 +1,202 @@ +pub use utils::*; +/// 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 utils { + #[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("getWebAuthnStruct"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getWebAuthnStruct"), + inputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("challenge"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes32"), + ), + },], + 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::Bytes, + ::ethers::core::abi::ethabi::ParamType::String, + ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), + ],), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("struct WebAuthnInfo"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + },], + )]), + events: ::std::collections::BTreeMap::new(), + errors: ::std::collections::BTreeMap::new(), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static UTILS_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"a\x05\xEDa\0:`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14a\0-WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\x046\x10a\x005W`\x005`\xE0\x1C\x80c\x8F\x7FYn\x14a\0:W[`\0\x80\xFD[a\0Ma\0H6`\x04a\x03%V[a\0cV[`@Qa\0Z\x91\x90a\x03\x8EV[`@Q\x80\x91\x03\x90\xF3[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R`\0a\0\xAB\x83`@Q` \x01a\0\x97\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x01\xD4V[\x90P`\0\x81`@Q` \x01a\0\xC0\x91\x90a\x03\xDEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`%\x80\x83R\x90\x92P`\0\x91\x90a\x05S` \x83\x019\x90P`\0`\x02\x83`@Qa\0\xFC\x91\x90a\x04}V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x01\x19W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01<\x91\x90a\x04\x99V[\x90P`\0`\x02\x83\x83`@Q` \x01a\x01U\x92\x91\x90a\x04\xB2V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01o\x91a\x04}V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x01\x8CW=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xAF\x91\x90a\x04\x99V[`@\x80Q``\x81\x01\x82R\x94\x85R` \x85\x01\x95\x90\x95R\x93\x83\x01\x93\x90\x93RP\x94\x93PPPPV[``\x81Q`\0\x03a\x01\xF3WPP`@\x80Q` \x81\x01\x90\x91R`\0\x81R\x90V[`\0`@Q\x80``\x01`@R\x80`@\x81R` \x01a\x05x`@\x919\x90P`\0`\x03\x84Q`\x02a\x02\"\x91\x90a\x04\xEAV[a\x02,\x91\x90a\x05\x03V[a\x027\x90`\x04a\x05%V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02OWa\x02Oa\x05V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0\x82Q``` \x84\x01Ra\x03\xAA`\x80\x84\x01\x82a\x03bV[\x90P` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x03\xC7\x82\x82a\x03bV[\x91PP`@\x84\x01Q``\x84\x01R\x80\x91PP\x92\x91PPV[\x7F{\"type\":\"webauthn.get\",\"challeng\x81Rc2\x91\x1D\x11`\xE1\x1B` \x82\x01R`\0\x82Qa\x04#\x81`$\x85\x01` \x87\x01a\x03>V[\x7F\",\"origin\":\"https://sign.coinbas`$\x93\x90\x91\x01\x92\x83\x01RP\x7Fe.com\",\"crossOrigin\":false}\0\0\0\0\0`D\x82\x01R`_\x01\x91\x90PV[`\0\x82Qa\x04\x8F\x81\x84` \x87\x01a\x03>V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x04\xABW`\0\x80\xFD[PQ\x91\x90PV[`\0\x83Qa\x04\xC4\x81\x84` \x88\x01a\x03>V[\x91\x90\x91\x01\x91\x82RP` \x01\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xFDWa\x04\xFDa\x04\xD4V[\x92\x91PPV[`\0\x82a\x05 WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\xFDWa\x04\xFDa\x04\xD4V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFEI\x96\r\xE5\x88\x0E\x8Cht4\x17\x0Fdv`[\x8F\xE4\xAE\xB9\xA2\x862\xC7\x99\\\xF3\xBA\x83\x1D\x97c\x05\0\0\0\0ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\xA2dipfsX\"\x12 \xD2\xAD\xD6\x1E\x12\xD8p\"ML\x0E\xE2\xB8-\xCCP\xFD\xCA\x0E\xC1\x13\xCCL\xF22 L\xC0\x92\x91\xB4\x10dsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static UTILS_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\x046\x10a\x005W`\x005`\xE0\x1C\x80c\x8F\x7FYn\x14a\0:W[`\0\x80\xFD[a\0Ma\0H6`\x04a\x03%V[a\0cV[`@Qa\0Z\x91\x90a\x03\x8EV[`@Q\x80\x91\x03\x90\xF3[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R`\0a\0\xAB\x83`@Q` \x01a\0\x97\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x01\xD4V[\x90P`\0\x81`@Q` \x01a\0\xC0\x91\x90a\x03\xDEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`%\x80\x83R\x90\x92P`\0\x91\x90a\x05S` \x83\x019\x90P`\0`\x02\x83`@Qa\0\xFC\x91\x90a\x04}V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x01\x19W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01<\x91\x90a\x04\x99V[\x90P`\0`\x02\x83\x83`@Q` \x01a\x01U\x92\x91\x90a\x04\xB2V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01o\x91a\x04}V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x01\x8CW=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xAF\x91\x90a\x04\x99V[`@\x80Q``\x81\x01\x82R\x94\x85R` \x85\x01\x95\x90\x95R\x93\x83\x01\x93\x90\x93RP\x94\x93PPPPV[``\x81Q`\0\x03a\x01\xF3WPP`@\x80Q` \x81\x01\x90\x91R`\0\x81R\x90V[`\0`@Q\x80``\x01`@R\x80`@\x81R` \x01a\x05x`@\x919\x90P`\0`\x03\x84Q`\x02a\x02\"\x91\x90a\x04\xEAV[a\x02,\x91\x90a\x05\x03V[a\x027\x90`\x04a\x05%V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02OWa\x02Oa\x05V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0\x82Q``` \x84\x01Ra\x03\xAA`\x80\x84\x01\x82a\x03bV[\x90P` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x03\xC7\x82\x82a\x03bV[\x91PP`@\x84\x01Q``\x84\x01R\x80\x91PP\x92\x91PPV[\x7F{\"type\":\"webauthn.get\",\"challeng\x81Rc2\x91\x1D\x11`\xE1\x1B` \x82\x01R`\0\x82Qa\x04#\x81`$\x85\x01` \x87\x01a\x03>V[\x7F\",\"origin\":\"https://sign.coinbas`$\x93\x90\x91\x01\x92\x83\x01RP\x7Fe.com\",\"crossOrigin\":false}\0\0\0\0\0`D\x82\x01R`_\x01\x91\x90PV[`\0\x82Qa\x04\x8F\x81\x84` \x87\x01a\x03>V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x04\xABW`\0\x80\xFD[PQ\x91\x90PV[`\0\x83Qa\x04\xC4\x81\x84` \x88\x01a\x03>V[\x91\x90\x91\x01\x91\x82RP` \x01\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xFDWa\x04\xFDa\x04\xD4V[\x92\x91PPV[`\0\x82a\x05 WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\xFDWa\x04\xFDa\x04\xD4V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFEI\x96\r\xE5\x88\x0E\x8Cht4\x17\x0Fdv`[\x8F\xE4\xAE\xB9\xA2\x862\xC7\x99\\\xF3\xBA\x83\x1D\x97c\x05\0\0\0\0ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\xA2dipfsX\"\x12 \xD2\xAD\xD6\x1E\x12\xD8p\"ML\x0E\xE2\xB8-\xCCP\xFD\xCA\x0E\xC1\x13\xCCL\xF22 L\xC0\x92\x91\xB4\x10dsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static UTILS_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct Utils(::ethers::contract::Contract); + impl ::core::clone::Clone for Utils { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Utils { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Utils { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Utils { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Utils)) + .field(&self.address()) + .finish() + } + } + impl Utils { + /// 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(), + UTILS_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( + UTILS_ABI.clone(), + UTILS_BYTECODE.clone().into(), + client, + ); + let deployer = factory.deploy(constructor_args)?; + let deployer = ::ethers::contract::ContractDeployer::new(deployer); + Ok(deployer) + } + ///Calls the contract's `getWebAuthnStruct` (0x8f7f596e) function + pub fn get_web_authn_struct( + &self, + challenge: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([143, 127, 89, 110], challenge) + .expect("method not found (this should never happen)") + } + } + impl From<::ethers::contract::Contract> for Utils { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Container type for all input parameters for the `getWebAuthnStruct` function with signature `getWebAuthnStruct(bytes32)` and selector `0x8f7f596e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "getWebAuthnStruct", abi = "getWebAuthnStruct(bytes32)")] + pub struct GetWebAuthnStructCall { + pub challenge: [u8; 32], + } + ///Container type for all return fields from the `getWebAuthnStruct` function with signature `getWebAuthnStruct(bytes32)` and selector `0x8f7f596e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct GetWebAuthnStructReturn(pub WebAuthnInfo); + ///`WebAuthnInfo(bytes,string,bytes32)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct WebAuthnInfo { + pub authenticator_data: ::ethers::core::types::Bytes, + pub client_data_json: ::std::string::String, + pub message_hash: [u8; 32], + } +} diff --git a/xmtp_id/src/bindings/uups_upgradeable.rs b/xmtp_id/src/bindings/uups_upgradeable.rs new file mode 100644 index 000000000..13d6fa87f --- /dev/null +++ b/xmtp_id/src/bindings/uups_upgradeable.rs @@ -0,0 +1,411 @@ +pub use uups_upgradeable::*; +/// 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 uups_upgradeable { + #[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("proxiableUUID"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), + 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("upgradeToAndCall"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newImplementation"), + 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("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::Payable, + },], + ), + ]), + events: ::core::convert::From::from([( + ::std::borrow::ToOwned::to_owned("Upgraded"), + ::std::vec![::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Upgraded"), + inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("implementation"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + },], + anonymous: false, + },], + )]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext",), + inputs: ::std::vec![], + },], + ), + ( + ::std::borrow::ToOwned::to_owned("UpgradeFailed"), + ::std::vec![::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("UpgradeFailed"), + inputs: ::std::vec![], + },], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static UUPSUPGRADEABLE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + pub struct UUPSUpgradeable(::ethers::contract::Contract); + impl ::core::clone::Clone for UUPSUpgradeable { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for UUPSUpgradeable { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for UUPSUpgradeable { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for UUPSUpgradeable { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(UUPSUpgradeable)) + .field(&self.address()) + .finish() + } + } + impl UUPSUpgradeable { + /// 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(), + UUPSUPGRADEABLE_ABI.clone(), + client, + )) + } + ///Calls the contract's `proxiableUUID` (0x52d1902d) function + pub fn proxiable_uuid(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([82, 209, 144, 45], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function + pub fn upgrade_to_and_call( + &self, + new_implementation: ::ethers::core::types::Address, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([79, 30, 242, 134], (new_implementation, data)) + .expect("method not found (this should never happen)") + } + ///Gets the contract's `Upgraded` event + pub fn upgraded_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradedFilter> { + 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, UpgradedFilter> { + self.0 + .event_with_filter(::core::default::Default::default()) + } + } + impl From<::ethers::contract::Contract> + for UUPSUpgradeable + { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } + ///Custom Error type `UnauthorizedCallContext` with signature `UnauthorizedCallContext()` and selector `0x9f03a026` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "UnauthorizedCallContext", abi = "UnauthorizedCallContext()")] + pub struct UnauthorizedCallContext; + ///Custom Error type `UpgradeFailed` with signature `UpgradeFailed()` and selector `0x55299b49` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[etherror(name = "UpgradeFailed", abi = "UpgradeFailed()")] + pub struct UpgradeFailed; + ///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 UUPSUpgradeableErrors { + UnauthorizedCallContext(UnauthorizedCallContext), + UpgradeFailed(UpgradeFailed), + /// The standard solidity revert string, with selector + /// Error(string) -- 0x08c379a0 + RevertString(::std::string::String), + } + impl ::ethers::core::abi::AbiDecode for UUPSUpgradeableErrors { + 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::UnauthorizedCallContext(decoded)); + } + if let Ok(decoded) = ::decode(data) { + return Ok(Self::UpgradeFailed(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for UUPSUpgradeableErrors { + fn encode(self) -> ::std::vec::Vec { + match self { + Self::UnauthorizedCallContext(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::UpgradeFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), + } + } + } + impl ::ethers::contract::ContractRevert for UUPSUpgradeableErrors { + 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 UUPSUpgradeableErrors { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::UnauthorizedCallContext(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeFailed(element) => ::core::fmt::Display::fmt(element, f), + Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), + } + } + } + impl ::core::convert::From<::std::string::String> for UUPSUpgradeableErrors { + fn from(value: String) -> Self { + Self::RevertString(value) + } + } + impl ::core::convert::From for UUPSUpgradeableErrors { + fn from(value: UnauthorizedCallContext) -> Self { + Self::UnauthorizedCallContext(value) + } + } + impl ::core::convert::From for UUPSUpgradeableErrors { + fn from(value: UpgradeFailed) -> Self { + Self::UpgradeFailed(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] + pub struct UpgradedFilter { + #[ethevent(indexed)] + pub implementation: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] + pub struct ProxiableUUIDCall; + ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] + pub struct UpgradeToAndCallCall { + pub new_implementation: ::ethers::core::types::Address, + 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 UUPSUpgradeableCalls { + ProxiableUUID(ProxiableUUIDCall), + UpgradeToAndCall(UpgradeToAndCallCall), + } + impl ::ethers::core::abi::AbiDecode for UUPSUpgradeableCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = ::decode(data) + { + return Ok(Self::ProxiableUUID(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::UpgradeToAndCall(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for UUPSUpgradeableCalls { + fn encode(self) -> Vec { + match self { + Self::ProxiableUUID(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::UpgradeToAndCall(element) => ::ethers::core::abi::AbiEncode::encode(element), + } + } + } + impl ::core::fmt::Display for UUPSUpgradeableCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), + Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for UUPSUpgradeableCalls { + fn from(value: ProxiableUUIDCall) -> Self { + Self::ProxiableUUID(value) + } + } + impl ::core::convert::From for UUPSUpgradeableCalls { + fn from(value: UpgradeToAndCallCall) -> Self { + Self::UpgradeToAndCall(value) + } + } + ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct ProxiableUUIDReturn(pub [u8; 32]); +} diff --git a/xmtp_id/src/bindings/web_authn.rs b/xmtp_id/src/bindings/web_authn.rs new file mode 100644 index 000000000..ce6082ec7 --- /dev/null +++ b/xmtp_id/src/bindings/web_authn.rs @@ -0,0 +1,119 @@ +pub use web_authn::*; +/// 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 web_authn { + #[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 WEBAUTHN_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = + ::ethers::contract::Lazy::new(__abi); + #[rustfmt::skip] + const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xC8\x13\xB5\t\xB9\xBAVn \x03\xA7e\x86\xD4\xE4\xC2\xB2/\xD5\xE4=%yV\x01\xC1\xF3\xBE\x94\xDB\x08\xA8dsolcC\0\x08\x17\x003"; + /// The bytecode of the contract. + pub static WEBAUTHN_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__BYTECODE); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xC8\x13\xB5\t\xB9\xBAVn \x03\xA7e\x86\xD4\xE4\xC2\xB2/\xD5\xE4=%yV\x01\xC1\xF3\xBE\x94\xDB\x08\xA8dsolcC\0\x08\x17\x003"; + /// The deployed bytecode of the contract. + pub static WEBAUTHN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = + ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); + pub struct WebAuthn(::ethers::contract::Contract); + impl ::core::clone::Clone for WebAuthn { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for WebAuthn { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for WebAuthn { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for WebAuthn { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(WebAuthn)) + .field(&self.address()) + .finish() + } + } + impl WebAuthn { + /// 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(), + WEBAUTHN_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( + WEBAUTHN_ABI.clone(), + WEBAUTHN_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 WebAuthn { + fn from(contract: ::ethers::contract::Contract) -> Self { + Self::new(contract.address(), contract.client()) + } + } +} diff --git a/xmtp_id/src/verifier.rs b/xmtp_id/src/verifier.rs new file mode 100644 index 000000000..6f7c77fe9 --- /dev/null +++ b/xmtp_id/src/verifier.rs @@ -0,0 +1,47 @@ +use ethers::types::{Address, BlockId, Signature}; +use ethers::providers::{Http, Middleware, Provider}; +use std::convert::TryFrom; +use std::sync::Arc; +use crate::bindings::coinbase_smart_wallet::CoinbaseSmartWallet; +use anyhow::Error; + +const BASE_SEPOLIA_RPC_URL: &str = "https://sepolia.base.org"; + +pub struct ERC1271Verifier { + pub provider: Arc>, +} + +impl ERC1271Verifier { + pub fn new() -> Self { + let provider = Arc::new(Provider::::try_from(BASE_SEPOLIA_RPC_URL).unwrap()); + Self { provider } + } + + /// Verifies an ERC-1271(https://eips.ethereum.org/EIPS/eip-1271) signature. + /// + /// # Arguments + /// + /// * `hash` - Hash of the message. + /// * `signature` - generated by signing **Replay safe hash**. + /// * `wallet_address` - Address of the ERC1271 wallet. + /// * `block_id` - Block identifier. + pub async fn verify_erc1271_signature(&self, hash: [u8; 32], owner_index: u64, signature: Signature, wallet_address: Address, block_id: BlockId) -> Result { + let wallet = CoinbaseSmartWallet::new(wallet_address, self.provider.clone()); + + // Used during signature validation, tie a signature with its signer. + let signature_wrapper = ethers::abi::encode(&[ethers::abi::Token::Tuple(vec![ + ethers::abi::Token::Uint(ethers::types::U256::from(owner_index)), + ethers::abi::Token::Bytes(signature.to_vec()), + ])]); + + let res: [u8; 4] = wallet + .is_valid_signature(hash, ethers::types::Bytes::from(signature_wrapper)) + .block(block_id) + .call() + .await? + .into(); + + // check if response is magic value + Ok(res == [0x16, 0x26, 0xba, 0x7e]) + } +} \ No newline at end of file From 5a6371f47a9b2bb029599d8cd56ba7d8f90de678 Mon Sep 17 00:00:00 2001 From: yoduyodu Date: Mon, 1 Apr 2024 17:05:00 -0700 Subject: [PATCH 02/10] const EIP1271_MAGIC_VALUE --- xmtp_id/src/verifier.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xmtp_id/src/verifier.rs b/xmtp_id/src/verifier.rs index 6f7c77fe9..dee72f0f3 100644 --- a/xmtp_id/src/verifier.rs +++ b/xmtp_id/src/verifier.rs @@ -6,6 +6,7 @@ use crate::bindings::coinbase_smart_wallet::CoinbaseSmartWallet; use anyhow::Error; const BASE_SEPOLIA_RPC_URL: &str = "https://sepolia.base.org"; +const EIP1271_MAGIC_VALUE: [u8; 4] = [0x16, 0x26, 0xba, 0x7e]; pub struct ERC1271Verifier { pub provider: Arc>, @@ -41,7 +42,6 @@ impl ERC1271Verifier { .await? .into(); - // check if response is magic value - Ok(res == [0x16, 0x26, 0xba, 0x7e]) + Ok(res == EIP1271_MAGIC_VALUE) } } \ No newline at end of file From a73de1781e7c14882eec77bf58f15ded389256eb Mon Sep 17 00:00:00 2001 From: yoduyodu Date: Wed, 3 Apr 2024 09:23:53 -0700 Subject: [PATCH 03/10] abigen --- Cargo.lock | 2 + Cargo.toml | 1 + bindings_ffi/Cargo.lock | 6 - xmtp_id/Cargo.toml | 3 +- xmtp_id/abi/ERC1271.json | 26 + xmtp_id/src/bindings/base_64.rs | 119 - xmtp_id/src/bindings/base_64_url.rs | 119 - xmtp_id/src/bindings/coinbase_smart_wallet.rs | 2623 ---------------- .../bindings/coinbase_smart_wallet_factory.rs | 496 --- xmtp_id/src/bindings/dummy.rs | 576 ---- xmtp_id/src/bindings/erc1271.rs | 463 --- .../src/bindings/erc1271_input_generator.rs | 316 -- xmtp_id/src/bindings/fcl_ecdsa.rs | 119 - xmtp_id/src/bindings/fcl_elliptic_zz.rs | 121 - xmtp_id/src/bindings/helpers.rs | 70 - xmtp_id/src/bindings/i_aggregator.rs | 384 --- xmtp_id/src/bindings/i_entry_point.rs | 2546 ---------------- xmtp_id/src/bindings/i_nonce_manager.rs | 247 -- xmtp_id/src/bindings/i_stake_manager.rs | 855 ------ .../src/bindings/ierc721_token_receiver.rs | 165 - xmtp_id/src/bindings/lib_clone.rs | 294 -- xmtp_id/src/bindings/lib_string.rs | 260 -- .../bindings/mock_coinbase_smart_wallet.rs | 2710 ----------------- xmtp_id/src/bindings/mock_entry_point.rs | 468 --- xmtp_id/src/bindings/mock_erc20.rs | 1299 -------- xmtp_id/src/bindings/mock_erc721.rs | 1389 --------- xmtp_id/src/bindings/mock_multi_ownable.rs | 1191 -------- xmtp_id/src/bindings/mock_target.rs | 495 --- xmtp_id/src/bindings/mod.rs | 37 - xmtp_id/src/bindings/multi_ownable.rs | 1132 ------- xmtp_id/src/bindings/receiver.rs | 70 - xmtp_id/src/bindings/shared_types.rs | 64 - xmtp_id/src/bindings/signature_checker_lib.rs | 121 - xmtp_id/src/bindings/static_.rs | 119 - xmtp_id/src/bindings/user_operation_lib.rs | 121 - xmtp_id/src/bindings/utils.rs | 202 -- xmtp_id/src/bindings/uups_upgradeable.rs | 411 --- xmtp_id/src/bindings/web_authn.rs | 119 - xmtp_id/src/erc1271_verifier.rs | 45 + xmtp_id/src/lib.rs | 2 +- xmtp_id/src/verifier.rs | 47 - 41 files changed, 77 insertions(+), 19776 deletions(-) create mode 100644 xmtp_id/abi/ERC1271.json delete mode 100644 xmtp_id/src/bindings/base_64.rs delete mode 100644 xmtp_id/src/bindings/base_64_url.rs delete mode 100644 xmtp_id/src/bindings/coinbase_smart_wallet.rs delete mode 100644 xmtp_id/src/bindings/coinbase_smart_wallet_factory.rs delete mode 100644 xmtp_id/src/bindings/dummy.rs delete mode 100644 xmtp_id/src/bindings/erc1271.rs delete mode 100644 xmtp_id/src/bindings/erc1271_input_generator.rs delete mode 100644 xmtp_id/src/bindings/fcl_ecdsa.rs delete mode 100644 xmtp_id/src/bindings/fcl_elliptic_zz.rs delete mode 100644 xmtp_id/src/bindings/helpers.rs delete mode 100644 xmtp_id/src/bindings/i_aggregator.rs delete mode 100644 xmtp_id/src/bindings/i_entry_point.rs delete mode 100644 xmtp_id/src/bindings/i_nonce_manager.rs delete mode 100644 xmtp_id/src/bindings/i_stake_manager.rs delete mode 100644 xmtp_id/src/bindings/ierc721_token_receiver.rs delete mode 100644 xmtp_id/src/bindings/lib_clone.rs delete mode 100644 xmtp_id/src/bindings/lib_string.rs delete mode 100644 xmtp_id/src/bindings/mock_coinbase_smart_wallet.rs delete mode 100644 xmtp_id/src/bindings/mock_entry_point.rs delete mode 100644 xmtp_id/src/bindings/mock_erc20.rs delete mode 100644 xmtp_id/src/bindings/mock_erc721.rs delete mode 100644 xmtp_id/src/bindings/mock_multi_ownable.rs delete mode 100644 xmtp_id/src/bindings/mock_target.rs delete mode 100644 xmtp_id/src/bindings/mod.rs delete mode 100644 xmtp_id/src/bindings/multi_ownable.rs delete mode 100644 xmtp_id/src/bindings/receiver.rs delete mode 100644 xmtp_id/src/bindings/shared_types.rs delete mode 100644 xmtp_id/src/bindings/signature_checker_lib.rs delete mode 100644 xmtp_id/src/bindings/static_.rs delete mode 100644 xmtp_id/src/bindings/user_operation_lib.rs delete mode 100644 xmtp_id/src/bindings/utils.rs delete mode 100644 xmtp_id/src/bindings/uups_upgradeable.rs delete mode 100644 xmtp_id/src/bindings/web_authn.rs create mode 100644 xmtp_id/src/erc1271_verifier.rs delete mode 100644 xmtp_id/src/verifier.rs diff --git a/Cargo.lock b/Cargo.lock index fe7d560ac..1708d2575 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5786,8 +5786,10 @@ dependencies = [ name = "xmtp_id" version = "0.1.0" dependencies = [ + "anyhow", "async-trait", "chrono", + "ethers", "futures", "log", "openmls", diff --git a/Cargo.toml b/Cargo.toml index 20bed97a2..fa91d97ba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,6 +45,7 @@ tls_codec = "0.4.0" tokio = { version = "1.35.1", features = ["macros"] } tonic = "^0.11" tracing = "0.1" +anyhow = "1.0" # Internal Crate Dependencies xmtp_cryptography = { path = "xmtp_cryptography" } diff --git a/bindings_ffi/Cargo.lock b/bindings_ffi/Cargo.lock index ce3dade1a..f835d820b 100644 --- a/bindings_ffi/Cargo.lock +++ b/bindings_ffi/Cargo.lock @@ -5383,7 +5383,6 @@ dependencies = [ "pbjson-types 0.5.1", "prost 0.12.3", "serde", - "serde_json", "tokio", "tonic", "tower", @@ -5474,9 +5473,7 @@ name = "xmtp_v2" version = "0.1.0" dependencies = [ "aes-gcm", - "chrono", "ecdsa 0.15.1", - "ethers-core", "generic-array", "getrandom", "hex", @@ -5484,11 +5481,8 @@ dependencies = [ "k256 0.12.0", "rand", "rand_chacha", - "rlp", - "serde", "sha2", "sha3", - "thiserror", ] [[package]] diff --git a/xmtp_id/Cargo.toml b/xmtp_id/Cargo.toml index 76532705a..f4cedb0d4 100644 --- a/xmtp_id/Cargo.toml +++ b/xmtp_id/Cargo.toml @@ -21,4 +21,5 @@ chrono.workspace = true serde.workspace = true async-trait.workspace = true futures.workspace = true - +ethers.workspace = true +anyhow.workspace = true diff --git a/xmtp_id/abi/ERC1271.json b/xmtp_id/abi/ERC1271.json new file mode 100644 index 000000000..9427c5e08 --- /dev/null +++ b/xmtp_id/abi/ERC1271.json @@ -0,0 +1,26 @@ +[ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "_signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/xmtp_id/src/bindings/base_64.rs b/xmtp_id/src/bindings/base_64.rs deleted file mode 100644 index 7e103147e..000000000 --- a/xmtp_id/src/bindings/base_64.rs +++ /dev/null @@ -1,119 +0,0 @@ -pub use base_64::*; -/// 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 base_64 { - #[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 BASE64_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9DGb\x8C3\x8A\xAC\x06\x01\xDF\x06~\x1A1:\x8E`:\xF3R\x12\xED\xF1\xE1\x1C\x9AT\xAC\x16\x07\xADXdsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static BASE64_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9DGb\x8C3\x8A\xAC\x06\x01\xDF\x06~\x1A1:\x8E`:\xF3R\x12\xED\xF1\xE1\x1C\x9AT\xAC\x16\x07\xADXdsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static BASE64_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Base64(::ethers::contract::Contract); - impl ::core::clone::Clone for Base64 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for Base64 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for Base64 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for Base64 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Base64)) - .field(&self.address()) - .finish() - } - } - impl Base64 { - /// 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(), - BASE64_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( - BASE64_ABI.clone(), - BASE64_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 Base64 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/xmtp_id/src/bindings/base_64_url.rs b/xmtp_id/src/bindings/base_64_url.rs deleted file mode 100644 index 4324c9f5b..000000000 --- a/xmtp_id/src/bindings/base_64_url.rs +++ /dev/null @@ -1,119 +0,0 @@ -pub use base_64_url::*; -/// 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 base_64_url { - #[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 BASE64URL_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD5\xE6\x1B\xE4\x1A8S\xB6\x84\xB6-\x82\x8B\x9D\xFB6\x95\xEB\xDA'\x91Y\x05'}\x9C\xC1\x07\x8B\xA5 \x90dsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static BASE64URL_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xD5\xE6\x1B\xE4\x1A8S\xB6\x84\xB6-\x82\x8B\x9D\xFB6\x95\xEB\xDA'\x91Y\x05'}\x9C\xC1\x07\x8B\xA5 \x90dsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static BASE64URL_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Base64Url(::ethers::contract::Contract); - impl ::core::clone::Clone for Base64Url { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for Base64Url { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for Base64Url { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for Base64Url { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Base64Url)) - .field(&self.address()) - .finish() - } - } - impl Base64Url { - /// 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(), - BASE64URL_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( - BASE64URL_ABI.clone(), - BASE64URL_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 Base64Url { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/xmtp_id/src/bindings/coinbase_smart_wallet.rs b/xmtp_id/src/bindings/coinbase_smart_wallet.rs deleted file mode 100644 index 052bb35a3..000000000 --- a/xmtp_id/src/bindings/coinbase_smart_wallet.rs +++ /dev/null @@ -1,2623 +0,0 @@ -pub use coinbase_smart_wallet::*; -/// 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 coinbase_smart_wallet { - 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![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("REPLAYABLE_NONCE_KEY"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("REPLAYABLE_NONCE_KEY",), - 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("addOwnerAddress"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("addOwnerAddress"), - 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"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("x"), - 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("y"), - 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("canSkipChainIdValidation"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("canSkipChainIdValidation",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("functionSelector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - },], - 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::Pure, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("domainSeparator"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("domainSeparator"), - 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("eip712Domain"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("eip712Domain"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("fields"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(1usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes1"), - ), - }, - ::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("version"), - 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("chainId"), - 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("verifyingContract"), - 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("salt"), - 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("extensions"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::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("entryPoint"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("entryPoint"), - 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("execute"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("target"), - 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("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::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("calls"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ],), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct CoinbaseSmartWallet.Call[]", - ), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithoutChainIdValidation"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeWithoutChainIdValidation",), - inputs: ::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"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("getUserOpHashWithoutChainId"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getUserOpHashWithoutChainId",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOp"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ],), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation"), - ), - },], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOpHash"), - 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("implementation"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("implementation"), - inputs: ::std::vec![], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("$"), - 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("owners"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::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::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("isOwnerAddress"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerAddress"), - 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"), - ), - },], - 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("isOwnerBytes"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerBytes"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("account"), - 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::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("isOwnerPublicKey"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerPublicKey"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("x"), - 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("y"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - 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("isValidSignature"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isValidSignature"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("hash"), - 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("signature"), - 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("result"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - },], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), - 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("ownerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("ownerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("proxiableUUID"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), - 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("removeOwnerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("removeOwnerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("replaySafeHash"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("replaySafeHash"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("hash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - },], - 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("upgradeToAndCall"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newImplementation"), - 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("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::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("validateUserOp"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validateUserOp"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOp"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ],), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOpHash"), - 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("missingAccountFunds",), - 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("validationData"), - 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, - },], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("AddOwner"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("AddOwner"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("RemoveOwner"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("RemoveOwner"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("Upgraded"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Upgraded"), - inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("implementation"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - },], - anonymous: false, - },], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("AlreadyOwner"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("AlreadyOwner"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("Initialized"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("Initialized"), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidNonceKey"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidNonceKey"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("key"), - 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("InvalidOwnerBytesLength"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("SelectorNotAllowed"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("SelectorNotAllowed"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("Unauthorized"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("Unauthorized"), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext",), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("UpgradeFailed"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("UpgradeFailed"), - inputs: ::std::vec![], - },], - ), - ]), - receive: true, - fallback: true, - } - } - ///The parsed JSON ABI of the contract. - pub static COINBASESMARTWALLET_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R0`\x80R4\x80\x15b\0\0\x15W`\0\x80\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\0-W\x90PP`@\x80Q`\0` \x82\x01R\x91\x92P\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81`\0\x81Q\x81\x10b\0\0wWb\0\0wb\0\x03zV[` \x90\x81\x02\x91\x90\x91\x01\x01Rb\0\0\x8D\x81b\0\0\x94V[Pb\0\x05\xB0V[`\0[\x81Q\x81\x10\x15b\0\x02&W\x81\x81\x81Q\x81\x10b\0\0\xB6Wb\0\0\xB6b\0\x03zV[` \x02` \x01\x01QQ` \x14\x15\x80\x15b\0\0\xEEWP\x81\x81\x81Q\x81\x10b\0\0\xE0Wb\0\0\xE0b\0\x03zV[` \x02` \x01\x01QQ`@\x14\x15[\x15b\0\x016W\x81\x81\x81Q\x81\x10b\0\x01\tWb\0\x01\tb\0\x03zV[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01b\0\x01-\x91\x90b\0\x03\xB6V[`@Q\x80\x91\x03\x90\xFD[\x81\x81\x81Q\x81\x10b\0\x01KWb\0\x01Kb\0\x03zV[` \x02` \x01\x01QQ` \x14\x80\x15b\0\x01\x93WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10b\0\x01~Wb\0\x01~b\0\x03zV[` \x02` \x01\x01Qb\0\x01\x91\x90b\0\x03\xEBV[\x11[\x15b\0\x01\xD2W\x81\x81\x81Q\x81\x10b\0\x01\xAEWb\0\x01\xAEb\0\x03zV[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01b\0\x01-\x91\x90b\0\x03\xB6V[b\0\x02\x1D\x82\x82\x81Q\x81\x10b\0\x01\xEBWb\0\x01\xEBb\0\x03zV[` \x02` \x01\x01Qb\0\x02\x03b\0\x02*` \x1B` \x1CV[\x80T\x90`\0b\0\x02\x13\x83b\0\x04\x13V[\x90\x91UPb\0\x02=V[`\x01\x01b\0\0\x97V[PPV[`\0\x80Q` b\087\x839\x81Q\x91R\x90V[b\0\x02H\x82b\0\x03&V[\x15b\0\x02kW\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01b\0\x01-\x91\x90b\0\x03\xB6V[`\x01`\0\x80Q` b\087\x839\x81Q\x91R`\x02\x01\x83`@Qb\0\x02\x90\x91\x90b\0\x04;V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81b\0\x02\xC8`\0\x80Q` b\087\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90b\0\x02\xE7\x90\x82b\0\x04\xE4V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qb\0\x03\x1A\x91\x90b\0\x03\xB6V[`@Q\x80\x91\x03\x90\xA2PPV[`\0`\0\x80Q` b\087\x839\x81Q\x91R`\x02\x01\x82`@Qb\0\x03K\x91\x90b\0\x04;V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15b\0\x03\xADW\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x03\x93V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Rb\0\x03\xD7\x81`@\x85\x01` \x87\x01b\0\x03\x90V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15b\0\x04\rW`\0\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\0`\x01\x82\x01b\0\x044WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[`\0\x82Qb\0\x04O\x81\x84` \x87\x01b\0\x03\x90V[\x91\x90\x91\x01\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x04nW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x04\rWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[`\x1F\x82\x11\x15b\0\x04\xDFW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x04\xBAWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x04\xDBW\x82\x81U`\x01\x01b\0\x04\xC6V[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x05\0Wb\0\x05\0b\0\x03dV[b\0\x05\x18\x81b\0\x05\x11\x84Tb\0\x04YV[\x84b\0\x04\x8FV[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x05PW`\0\x84\x15b\0\x057WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x04\xDBV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x05\x81W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x05`V[P\x85\x82\x10\x15b\0\x05\xA0W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x80Qa2db\0\x05\xD3`\09`\0\x81\x81a\x08\x1E\x01Ra\tU\x01Ra2d`\0\xF3\xFE`\x80`@R`\x046\x10a\x01OW`\x005`\xE0\x1C\x80cr\xDE;Z\x11a\0\xB6W\x80c\xB0\xD6\x91\xFE\x11a\0oW\x80c\xB0\xD6\x91\xFE\x14a\x03\xF4W\x80c\xB6\x1D'\xF6\x14a\x04\x1BW\x80c\xBFk\xA1\xFC\x14a\x04.W\x80c\xCE\x15\x06\xBE\x14a\x04AW\x80c\xD9H\xFD.\x14a\x04aW\x80c\xF6\x98\xDA%\x14a\x04\x83Wa\x01VV[\x80cr\xDE;Z\x14a\x03)W\x80c\x84\xB0\x19n\x14a\x03IW\x80c\x88\xCEL|\x14a\x03qW\x80c\x8E\xA6\x90)\x14a\x03\x87W\x80c\x9F\x9B\xCB4\x14a\x03\xB4W\x80c\xA2\xE1\xA8\xD8\x14a\x03\xD4Wa\x01VV[\x80c:\x87\x1C\xDD\x11a\x01\x08W\x80c:\x87\x1C\xDD\x14a\x02eW\x80cO\x1E\xF2\x86\x14a\x02\x86W\x80cOn\x7F\"\x14a\x02\x99W\x80cR\xD1\x90-\x14a\x02\xB9W\x80c\\`\xDA\x1B\x14a\x02\xCEW\x80co-\xE7\x0E\x14a\x03\x16Wa\x01VV[\x80c\x06j\x1E\xB7\x14a\x01\x84W\x80c\x0F\x0F?$\x14a\x01\xB9W\x80c\x16&\xBA~\x14a\x01\xD9W\x80c\x1C\xA59?\x14a\x02\x12W\x80c)V^;\x14a\x022W\x80c4\xFC\xD5\xBE\x14a\x02RWa\x01VV[6a\x01VW\0[`\x005`\xE0\x1Cc\xBC\x19|\x81\x81\x14c\xF2:na\x82\x14\x17c\x15\x0Bz\x02\x82\x14\x17\x15a\x01\x82W\x80` R` `<\xF3[\0[4\x80\x15a\x01\x90W`\0\x80\xFD[Pa\x01\xA4a\x01\x9F6`\x04a'iV[a\x04\x98V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xC5W`\0\x80\xFD[Pa\x01\x82a\x01\xD46`\x04a'\xA7V[a\x05\x07V[4\x80\x15a\x01\xE5W`\0\x80\xFD[Pa\x01\xF9a\x01\xF46`\x04a(\nV[a\x05?V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01\xB0V[4\x80\x15a\x02\x1EW`\0\x80\xFD[Pa\x01\xA4a\x02-6`\x04a)@V[a\x05yV[4\x80\x15a\x02>W`\0\x80\xFD[Pa\x01\x82a\x02M6`\x04a'iV[a\x05\xB4V[a\x01\x82a\x02`6`\x04a)\xB8V[a\x05\xDDV[a\x02xa\x02s6`\x04a*\x12V[a\x06\xE1V[`@Q\x90\x81R` \x01a\x01\xB0V[a\x01\x82a\x02\x946`\x04a*_V[a\x08\x1CV[4\x80\x15a\x02\xA5W`\0\x80\xFD[Pa\x02xa\x02\xB46`\x04a*\x98V[a\t\0V[4\x80\x15a\x02\xC5W`\0\x80\xFD[Pa\x02xa\tQV[4\x80\x15a\x02\xDAW`\0\x80\xFD[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xB0V[a\x01\x82a\x03$6`\x04a)\xB8V[a\t\xB1V[4\x80\x15a\x035W`\0\x80\xFD[Pa\x01\x82a\x03D6`\x04a*\xCCV[a\t\xF1V[4\x80\x15a\x03UW`\0\x80\xFD[Pa\x03^a\n\xDEV[`@Qa\x01\xB0\x97\x96\x95\x94\x93\x92\x91\x90a+5V[4\x80\x15a\x03}W`\0\x80\xFD[Pa\x02xa!\x05\x81V[4\x80\x15a\x03\x93W`\0\x80\xFD[Pa\x03\xA7a\x03\xA26`\x04a*\xCCV[a\x0B\x05V[`@Qa\x01\xB0\x91\x90a+\xCEV[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xA4a\x03\xCF6`\x04a+\xE1V[a\x0B\xC6V[4\x80\x15a\x03\xE0W`\0\x80\xFD[Pa\x01\xA4a\x03\xEF6`\x04a'\xA7V[a\x0CBV[4\x80\x15a\x04\0W`\0\x80\xFD[Ps_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89a\x02\xFEV[a\x01\x82a\x04)6`\x04a,\x0BV[a\x0C\x88V[a\x01\x82a\x04<6`\x04a,dV[a\x0C\xECV[4\x80\x15a\x04MW`\0\x80\xFD[Pa\x02xa\x04\\6`\x04a*\xCCV[a\r\xADV[4\x80\x15a\x04mW`\0\x80\xFD[P`\0\x80Q` a2\x0F\x839\x81Q\x91RTa\x02xV[4\x80\x15a\x04\x8FW`\0\x80\xFD[Pa\x02xa\r\xB8V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x04\xEB\x91a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P[\x92\x91PPV[a\x05\x0Fa\x0E>V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x05<\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0EpV[PV[`\0a\x05Ta\x05M\x85a\r\xADV[\x84\x84a\x0E\x9BV[\x15a\x05gWPc\x0B\x13]?`\xE1\x1Ba\x05rV[P`\x01`\x01`\xE0\x1B\x03\x19[\x93\x92PPPV[`\0`\0\x80Q` a2\x0F\x839\x81Q\x91R`\x02\x01\x82`@Qa\x05\x9B\x91\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x05\xBCa\x0E>V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x05\xD9\x90``\x01a\x05(V[PPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x06\0Wa\x06\0a\x0E>V[`\0[\x81\x81\x10\x15a\x06\xDCWa\x06\xD4\x83\x83\x83\x81\x81\x10a\x06 Wa\x06 a,\xB5V[\x90P` \x02\x81\x01\x90a\x062\x91\x90a,\xCBV[a\x06@\x90` \x81\x01\x90a'\xA7V[\x84\x84\x84\x81\x81\x10a\x06RWa\x06Ra,\xB5V[\x90P` \x02\x81\x01\x90a\x06d\x91\x90a,\xCBV[` \x015\x85\x85\x85\x81\x81\x10a\x06zWa\x06za,\xB5V[\x90P` \x02\x81\x01\x90a\x06\x8C\x91\x90a,\xCBV[a\x06\x9A\x90`@\x81\x01\x90a,\xE1V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[`\x01\x01a\x06\x03V[PPPV[`\x003s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x07\x16W`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81` \x85\x015`@\x1C`\x04a\x07.``\x88\x01\x88a,\xE1V[\x90P\x10\x15\x80\x15a\x07rWPa\x07F``\x87\x01\x87a,\xE1V[a\x07U\x91`\x04\x91`\0\x91a-'V[a\x07^\x91a-QV[`\x01`\x01`\xE0\x1B\x03\x19\x16c\xBFk\xA1\xFC`\xE0\x1B\x14[\x15a\x07\xB1Wa\x07\x80\x86a\t\0V[\x94Pa!\x05\x81\x14a\x07\xACW`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x07\xD6V[a!\x05\x81\x03a\x07\xD6W`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x07\xA3V[a\x07\xED\x85a\x07\xE8a\x01@\x89\x01\x89a,\xE1V[a\x0E\x9BV[\x15a\x07\xFCW`\0\x92PPa\x08\x02V[`\x01\x92PP[\x80\x15a\x08\x14W`\08`\08\x843Z\xF1P[P\x93\x92PPPV[\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\x000\x81\x03a\x08RWc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[a\x08[\x84a\x10 V[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x08\xADWcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\x08\xFAW`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\x08\xF8W=`\0\x82>=\x81\xFD[P[PPPPV[`\0a\t\x0B\x82a\x10(V[`@\x80Q` \x81\x01\x92\x90\x92Rs_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x90\x82\x01R``\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\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\x000\x81\x14a\t\x89Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91P[P\x90V[`\0\x80Q` a2\x0F\x839\x81Q\x91RT\x15a\t\xDFW`@Qc\x02\xEDT=`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05\xD9a\t\xEC\x82\x84a-\x81V[a\x10AV[a\t\xF9a\x0E>V[`\0a\n\x04\x82a\x0B\x05V[\x90P\x80Q`\0\x03a\n+W`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01a\x07\xA3V[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\n[\x90\x83\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\n\x87`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\n\xA2\x91a'\x1FV[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\n\xD2\x91\x90a+\xCEV[`@Q\x80\x91\x03\x90\xA2PPV[`\x0F`\xF8\x1B``\x80`\0\x80\x80\x83a\n\xF3a\x11\x93V[\x97\x98\x90\x97\x96PF\x95P0\x94P\x91\x92P\x90V[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x0BA\x90a.\x06V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0Bm\x90a.\x06V[\x80\x15a\x0B\xBAW\x80`\x1F\x10a\x0B\x8FWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0B\xBAV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0B\x9DW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c)V^;`\xE0\x1B\x14\x80a\x0B\xF7WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x03\xC3\xCF\xC9`\xE2\x1B\x14[\x80a\x0C\x12WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c9o\x1D\xAD`\xE1\x1B\x14[\x80a\x0C-WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c'\x8FyC`\xE1\x1B\x14[\x15a\x0C:WP`\x01\x91\x90PV[P`\0\x91\x90PV[`\0`\0\x80Q` a2\x0F\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\x9B\x91a,\x99V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x0C\xABWa\x0C\xABa\x0E>V[a\x08\xFA\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x1FW`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\r.`\x04\x82\x84\x86a-'V[a\r7\x91a-QV[\x90Pa\rB\x81a\x0B\xC6V[a\rkW`@Qc\x1D\x83p\xA3`\xE1\x1B\x81R`\x01`\x01`\xE0\x1B\x03\x19\x82\x16`\x04\x82\x01R`$\x01a\x07\xA3V[a\x06\xDC0`\0\x85\x85\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[`\0a\x05\x01\x82a\x11\xDAV[`\0\x80`\0a\r\xC5a\x11\x93V[\x81Q` \x80\x84\x01\x91\x90\x91 \x82Q\x82\x84\x01 `@\x80Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x94\x81\x01\x94\x90\x94R\x83\x01\x91\x90\x91R``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R\x91\x93P\x91P`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x92PPP\x90V[a\x0EG3a\x0CBV[\x80a\x0EQWP30\x14[\x15a\x0EXWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05<\x81`\0\x80Q` a2\x0F\x839\x81Q\x91R[\x80T\x90`\0a\x0E\x92\x83a.PV[\x91\x90PUa\x12\x10V[`\0\x80a\x0E\xAA\x83\x85\x01\x85a.iV[\x90P`\0a\x0E\xBB\x82`\0\x01Qa\x0B\x05V[\x90P\x80Q` \x03a\x0F\x1AW`\x01`\x01`\xA0\x1B\x03a\x0E\xD7\x82a.\xF5V[\x11\x15a\x0E\xF8W\x80`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\0` \x82\x01Q\x90Pa\x0F\x10\x81\x88\x85` \x01Qa\x12\xDFV[\x93PPPPa\x05rV[\x80Q`@\x03a\x0F\x95W`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x0F:\x91\x90a/\x19V[\x91P\x91P`\0\x84` \x01Q\x80` \x01\x90Q\x81\x01\x90a\x0FX\x91\x90a/\x82V[\x90Pa\x0F\x89\x89`@Q` \x01a\x0Fp\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\0\x83\x86\x86a\x13\xE4V[\x95PPPPPPa\x05rV[\x80`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x0F\xCC\x91\x90a,\x99V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x10\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10\x0EV[``\x91P[P\x91P\x91P\x81a\x08\xF8W\x80Q` \x82\x01\xFD[a\x05V[`\0a\x103\x82a\x17TV[\x80Q\x90` \x01 \x90P\x91\x90PV[`\0[\x81Q\x81\x10\x15a\x05\xD9W\x81\x81\x81Q\x81\x10a\x10_Wa\x10_a,\xB5V[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x10\x93WP\x81\x81\x81Q\x81\x10a\x10\x85Wa\x10\x85a,\xB5V[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x10\xCCW\x81\x81\x81Q\x81\x10a\x10\xAAWa\x10\xAAa,\xB5V[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[\x81\x81\x81Q\x81\x10a\x10\xDEWa\x10\xDEa,\xB5V[` \x02` \x01\x01QQ` \x14\x80\x15a\x11 WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x11\rWa\x11\ra,\xB5V[` \x02` \x01\x01Qa\x11\x1E\x90a.\xF5V[\x11[\x15a\x11YW\x81\x81\x81Q\x81\x10a\x117Wa\x117a,\xB5V[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[a\x11\x8B\x82\x82\x81Q\x81\x10a\x11nWa\x11na,\xB5V[` \x02` \x01\x01Qa\x0E\x84`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\x01\x01a\x10DV[`@\x80Q\x80\x82\x01\x82R`\x15\x81Rt\x10\xDB\xDA[\x98\x98\\\xD9H\x14\xDBX\\\x9D\x08\x15\xD8[\x1B\x19]`Z\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R`\x01\x83R`1`\xF8\x1B\x90\x83\x01R\x91V[`\0a\x11\xE4a\r\xB8V[a\x11\xED\x83a\x18'V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x92\x90\x92R`B\x82\x01R`b\x01a\t4V[a\x12\x19\x82a\x05yV[\x15a\x129W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\x01`\0\x80Q` a2\x0F\x839\x81Q\x91R`\x02\x01\x83`@Qa\x12[\x91\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x12\x91`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x12\xAE\x90\x82a0\x8DV[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\n\xD2\x91\x90a+\xCEV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91`\0\x83\x15a\x05rW`@Q\x83`\0R` \x83\x01Q`@R`@\x83Q\x03a\x13OW`@\x83\x01Q`\x1B\x81`\xFF\x1C\x01` R\x80`\x01\x1B`\x01\x1C``RP` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13MWP`\0``R`@RP`\x01a\x05rV[P[`A\x83Q\x03a\x13\x95W``\x83\x01Q`\0\x1A` R`@\x83\x01Q``R` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\x93WP`\0``R`@RP`\x01a\x05rV[P[`\0``R\x80`@Rc\x16&\xBA~`\xE0\x1B\x80\x82R\x84`\x04\x83\x01R`$\x82\x01`@\x81R\x84Q` \x01\x80`D\x85\x01\x82\x88`\x04Z\xFAPP` \x81`D=\x01\x85\x8AZ\xFA\x90Q\x90\x91\x14\x16\x91PP\x93\x92PPPV[`\0\x7F\x7F\xFF\xFF\xFF\x80\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDEs}V\xD3\x8B\xCFBy\xDC\xE5a~1\x92\xA8\x84`\xA0\x01Q\x11\x15a\x14\x1AWP`\0a\x17KV[``\x84\x01Q`\0\x90a\x14=\x90a\x141\x81`\x15a1LV[` \x88\x01Q\x91\x90a\x18bV[\x90P\x7F\xFF\x1A*\x91v\xD6P\xE4\xA9\x9D\xED\xB5\x8F\x17\x93\095\x13\x05y\xFE\x17\xB5\xA3\xF6\x98\xAC[\0\xE64\x81\x80Q\x90` \x01 \x14a\x14wW`\0\x91PPa\x17KV[`\0a\x14\x85\x88`\x01\x80a\x18\xC8V[`@Q` \x01a\x14\x95\x91\x90a1_V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x14\xCD\x87`@\x01Q\x83Q\x89`@\x01Qa\x14\xC1\x91\x90a1LV[` \x8A\x01Q\x91\x90a\x18bV[\x90P\x81\x80Q\x90` \x01 \x81\x80Q\x90` \x01 \x14a\x14\xF0W`\0\x93PPPPa\x17KV[\x86Q\x80Q`\x01`\xF8\x1B\x91\x82\x91` \x90\x81\x10a\x15\rWa\x15\ra,\xB5V[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14a\x15.W`\0\x93PPPPa\x17KV[\x87\x80\x15a\x15fWP\x86Q\x80Q`\x01`\xFA\x1B\x91\x82\x91` \x90\x81\x10a\x15SWa\x15Sa,\xB5V[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14\x15[\x15a\x15wW`\0\x93PPPPa\x17KV[`\0`\x02\x88` \x01Q`@Qa\x15\x8D\x91\x90a,\x99V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x15\xAAW=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xCD\x91\x90a1\xA0V[\x90P`\0`\x02\x89`\0\x01Q\x83`@Q` \x01a\x15\xEA\x92\x91\x90a1\xB9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x16\x04\x91a,\x99V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16!W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16D\x91\x90a1\xA0V[`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`@\x80Q` \x81\x01\x87\x90R\x90\x81\x01\x93\x90\x93R``\x83\x01R\x91\x81\x01\x8B\x90R\x90\x81\x01\x89\x90R\x90\x91P`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80a\x01\0`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x16\xAA\x91\x90a,\x99V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x16\xE5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x16\xEAV[``\x91P[P\x80Q\x91\x93P\x91P\x15\x15\x82\x80\x15a\x16\xFEWP\x80[\x15a\x17*W\x81\x80` \x01\x90Q\x81\x01\x90a\x17\x17\x91\x90a1\xA0V[`\x01\x14\x99PPPPPPPPPPa\x17KV[a\x17?\x85\x8E`\x80\x01Q\x8F`\xA0\x01Q\x8F\x8Fa\x19\xBDV[\x99PPPPPPPPPP[\x95\x94PPPPPV[``\x815` \x83\x015`\0a\x17ta\x17o`@\x87\x01\x87a,\xE1V[a\x1A\xA0V[\x90P`\0a\x17\x88a\x17o``\x88\x01\x88a,\xE1V[\x90P`\x80\x86\x015`\xA0\x87\x015`\xC0\x88\x015`\xE0\x89\x015a\x01\0\x8A\x015`\0a\x17\xB7a\x17oa\x01 \x8E\x01\x8Ea,\xE1V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x9C\x90\x9C\x16` \x8D\x01R\x8B\x81\x01\x9A\x90\x9AR``\x8B\x01\x98\x90\x98RP`\x80\x89\x01\x95\x90\x95R`\xA0\x88\x01\x93\x90\x93R`\xC0\x87\x01\x91\x90\x91R`\xE0\x86\x01Ra\x01\0\x85\x01Ra\x01 \x84\x01Ra\x01@\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81Ra\x01`\x90\x92\x01\x90R\x92\x91PPV[`@\x80Q\x7F\x9BI=\"!\x05\xFE\xE7\xDF\x16:\xB5\xD5\x7F\x0B\xF1\xFF\xD2\xDA\x04\xDD_\xAF\xBE\x10\xB5LA\xC1\xAD\xC6W` \x82\x01R\x90\x81\x01\x82\x90R`\0\x90``\x01a\t4V[``\x83Q\x82\x81\x11a\x18qW\x80\x92P[\x83\x81\x11a\x18|W\x80\x93P[P\x81\x83\x10\x15a\x05rWP`@Q\x82\x82\x03\x80\x82R\x93\x83\x01\x93`\x1F\x19`\x1F\x82\x01\x81\x16[\x86\x81\x01Q\x84\x82\x01R\x81\x01\x80a\x18\x9DWP`\0\x83\x83\x01` \x01R`?\x90\x91\x01\x16\x81\x01`@R\x93\x92PPPV[``\x83Q\x80\x15a\x08\x14W`\x03`\x02\x82\x01\x04`\x02\x1B`@Q\x92P\x7FABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`\x1FRa\x06p\x85\x15\x02\x7Fghijklmnopqrstuvwxyz0123456789-_\x18`?R` \x83\x01\x81\x81\x01\x83\x88` \x01\x01\x80Q`\0\x82R[`\x03\x8A\x01\x99P\x89Q`?\x81`\x12\x1C\x16Q`\0S`?\x81`\x0C\x1C\x16Q`\x01S`?\x81`\x06\x1C\x16Q`\x02S`?\x81\x16Q`\x03SP`\0Q\x84R`\x04\x84\x01\x93P\x82\x84\x10a\x19DW\x90R` \x01`@Ra==`\xF0\x1B`\x03\x84\x06`\x02\x04\x80\x83\x03\x91\x90\x91R`\0\x86\x15\x15\x90\x91\x02\x91\x82\x90\x03R\x90\x03\x82RP\x93\x92PPPV[`\0\x84\x15\x80a\x19\xDAWP`\0\x80Q` a1\xEF\x839\x81Q\x91R\x85\x10\x15[\x80a\x19\xE3WP\x83\x15[\x80a\x19\xFCWP`\0\x80Q` a1\xEF\x839\x81Q\x91R\x84\x10\x15[\x15a\x1A\tWP`\0a\x17KV[a\x1A\x13\x83\x83a\x1A\xB3V[a\x1A\x1FWP`\0a\x17KV[`\0a\x1A*\x85a\x1B\xADV[\x90P`\0`\0\x80Q` a1\xEF\x839\x81Q\x91R\x82\x89\t\x90P`\0`\0\x80Q` a1\xEF\x839\x81Q\x91R\x83\x89\t\x90P`\0a\x1Af\x87\x87\x85\x85a\x1C\x1FV[\x90P`\0\x80Q` a1\xEF\x839\x81Q\x91Ra\x1A\x8F\x8A`\0\x80Q` a1\xEF\x839\x81Q\x91Ra1\xDBV[\x82\x08\x15\x9A\x99PPPPPPPPPPV[`\0`@Q\x82\x80\x85\x837\x90 \x93\x92PPPV[`\0\x82\x15\x80\x15a\x1A\xC1WP\x81\x15[\x80a\x1A\xD9WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x14[\x80a\x1A\xF1WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x14[\x15a\x1A\xFEWP`\0a\x05\x01V[`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x90P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x7F\xFF\xFF\xFF\xFF\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x87\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\t\x08\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x7FZ\xC65\xD8\xAA:\x93\xE7\xB3\xEB\xBDUv\x98\x86\xBCe\x1D\x06\xB0\xCCS\xB0\xF6;\xCE<>'\xD2`K\x82\x08\x91\x90\x91\x14\x94\x93PPPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%O`\x80\x82\x01R`\0\x80Q` a1\xEF\x839\x81Q\x91R`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C\x18W`\0\x80\xFD[Q\x92\x91PPV[`\0\x80\x80\x80`\xFF\x81\x80\x88\x15\x80\x15a\x1C4WP\x87\x15[\x15a\x1CHW`\0\x96PPPPPPPa\"\xE1V[a\x1C\x94\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x8D\x8Da\"\xE9V[\x90\x92P\x90P\x81\x15\x80\x15a\x1C\xA5WP\x80\x15[\x15a\x1C\xD3W`\0\x80Q` a1\xEF\x839\x81Q\x91R\x88`\0\x80Q` a1\xEF\x839\x81Q\x91R\x03\x8A\x08\x98P`\0\x97P[`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01[\x80a\x1D\x06W`\x01\x84\x03\x93P`\x01\x8A\x85\x1C\x16`\x01\x8A\x86\x1C\x16`\x01\x1B\x01\x90Pa\x1C\xE4V[P`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01\x95P`\x01\x86\x03a\x1DhW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x96P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x93P[`\x02\x86\x03a\x1DwW\x8A\x96P\x89\x93P[`\x03\x86\x03a\x1D\x86W\x81\x96P\x80\x93P[`\x01\x83\x03\x92P`\x01\x95P`\x01\x94P[\x82`\0\x19\x11\x15a\"jW`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x02\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8A\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x84\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x8D\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08\t`\x03\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x85\t\x98P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x84\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x08\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\x82\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x87\t\x08\x97P`\x01\x8D\x88\x1C\x16`\x01\x8D\x89\x1C\x16`\x01\x1B\x01\x90P\x80a\x1F\x12W\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x97PPPPPa\"_V[`\x01\x81\x03a\x1FaW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x93P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x92P[`\x02\x81\x03a\x1FpW\x8E\x93P\x8D\x92P[`\x03\x81\x03a\x1F\x7FW\x85\x93P\x84\x92P[\x89a\x1F\x98WP\x91\x98P`\x01\x97P\x87\x96P\x94Pa\"_\x90PV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x86\t\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x88\t\x08\x93P\x80a!QW\x83a!QW`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x86\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8D\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x86\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x8F\x08\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81`\x03\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x86\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x85\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x08\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8D`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x85\x08\x83\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8A\x87\t\x85\x08\x98PPPPPPa\"_V[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x83\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8D\t\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8C\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8E\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87\x88\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83\x8D\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x86\x08\t\x08\x9APPPP\x80\x9APPPPP[`\x01\x83\x03\x92Pa\x1D\x95V[`@Q\x86``\x82\x01R` \x81R` \x80\x82\x01R` `@\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\"\xC4W`\0\x80\xFD[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81Q\x89\t\x97PPPPPPPP[\x94\x93PPPPV[`\0\x80\x80\x80\x86a#\0W\x85\x85\x93P\x93PPPa#nV[\x84a#\x12W\x87\x87\x93P\x93PPPa#nV[\x85\x88\x14\x80\x15a# WP\x84\x87\x14[\x15a#AWa#2\x88\x88`\x01\x80a#wV[\x92\x9AP\x90\x98P\x92P\x90Pa#[V[a#P\x88\x88`\x01\x80\x8A\x8Aa$\xD2V[\x92\x9AP\x90\x98P\x92P\x90P[a#g\x88\x88\x84\x84a&VV[\x93P\x93PPP[\x94P\x94\x92PPPV[`\0\x80`\0\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x02\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x83\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x8B\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8C\x08\t`\x03\t\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x89\t\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x83\x08\x87\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x84\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x88\x85\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x89\x08\x92P\x94P\x94P\x94P\x94\x90PV[`\0\x80`\0\x80\x88`\0\x03a$\xF1WP\x84\x92P\x83\x91P`\x01\x90P\x80a&IV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x98\x89\x03\x98\x89\x81\x89\x88\t\x08\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x89\t\x08\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x87\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x89\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x88\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8B\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84\x8B\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\t\x08\x92P[\x96P\x96P\x96P\x96\x92PPPV[`\0\x80`\0a&d\x84a&\xC3V[\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x87\t\x91P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x87\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x93PPP\x94P\x94\x92PPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C\x18W`\0\x80\xFD[P\x80Ta'+\x90a.\x06V[`\0\x82U\x80`\x1F\x10a';WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x05<\x91\x90[\x80\x82\x11\x15a\t\xADW`\0\x81U`\x01\x01a'UV[`\0\x80`@\x83\x85\x03\x12\x15a'|W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a'\xA2W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a'\xB9W`\0\x80\xFD[a\x05r\x82a'\x8BV[`\0\x80\x83`\x1F\x84\x01\x12a'\xD4W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a'\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a(\x03W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a(\x1FW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(W`\0\x80\xFD[Pa\x01\x82a\x02M6`\x04a'iV[a\x05\xB4V[a\x01\x82a\x02`6`\x04a)\xB8V[a\x05\xDDV[a\x02xa\x02s6`\x04a*\x12V[a\x06\xE1V[`@Q\x90\x81R` \x01a\x01\xB0V[a\x01\x82a\x02\x946`\x04a*_V[a\x08\x1CV[4\x80\x15a\x02\xA5W`\0\x80\xFD[Pa\x02xa\x02\xB46`\x04a*\x98V[a\t\0V[4\x80\x15a\x02\xC5W`\0\x80\xFD[Pa\x02xa\tQV[4\x80\x15a\x02\xDAW`\0\x80\xFD[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xB0V[a\x01\x82a\x03$6`\x04a)\xB8V[a\t\xB1V[4\x80\x15a\x035W`\0\x80\xFD[Pa\x01\x82a\x03D6`\x04a*\xCCV[a\t\xF1V[4\x80\x15a\x03UW`\0\x80\xFD[Pa\x03^a\n\xDEV[`@Qa\x01\xB0\x97\x96\x95\x94\x93\x92\x91\x90a+5V[4\x80\x15a\x03}W`\0\x80\xFD[Pa\x02xa!\x05\x81V[4\x80\x15a\x03\x93W`\0\x80\xFD[Pa\x03\xA7a\x03\xA26`\x04a*\xCCV[a\x0B\x05V[`@Qa\x01\xB0\x91\x90a+\xCEV[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xA4a\x03\xCF6`\x04a+\xE1V[a\x0B\xC6V[4\x80\x15a\x03\xE0W`\0\x80\xFD[Pa\x01\xA4a\x03\xEF6`\x04a'\xA7V[a\x0CBV[4\x80\x15a\x04\0W`\0\x80\xFD[Ps_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89a\x02\xFEV[a\x01\x82a\x04)6`\x04a,\x0BV[a\x0C\x88V[a\x01\x82a\x04<6`\x04a,dV[a\x0C\xECV[4\x80\x15a\x04MW`\0\x80\xFD[Pa\x02xa\x04\\6`\x04a*\xCCV[a\r\xADV[4\x80\x15a\x04mW`\0\x80\xFD[P`\0\x80Q` a2\x0F\x839\x81Q\x91RTa\x02xV[4\x80\x15a\x04\x8FW`\0\x80\xFD[Pa\x02xa\r\xB8V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x04\xEB\x91a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P[\x92\x91PPV[a\x05\x0Fa\x0E>V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x05<\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0EpV[PV[`\0a\x05Ta\x05M\x85a\r\xADV[\x84\x84a\x0E\x9BV[\x15a\x05gWPc\x0B\x13]?`\xE1\x1Ba\x05rV[P`\x01`\x01`\xE0\x1B\x03\x19[\x93\x92PPPV[`\0`\0\x80Q` a2\x0F\x839\x81Q\x91R`\x02\x01\x82`@Qa\x05\x9B\x91\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x05\xBCa\x0E>V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x05\xD9\x90``\x01a\x05(V[PPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x06\0Wa\x06\0a\x0E>V[`\0[\x81\x81\x10\x15a\x06\xDCWa\x06\xD4\x83\x83\x83\x81\x81\x10a\x06 Wa\x06 a,\xB5V[\x90P` \x02\x81\x01\x90a\x062\x91\x90a,\xCBV[a\x06@\x90` \x81\x01\x90a'\xA7V[\x84\x84\x84\x81\x81\x10a\x06RWa\x06Ra,\xB5V[\x90P` \x02\x81\x01\x90a\x06d\x91\x90a,\xCBV[` \x015\x85\x85\x85\x81\x81\x10a\x06zWa\x06za,\xB5V[\x90P` \x02\x81\x01\x90a\x06\x8C\x91\x90a,\xCBV[a\x06\x9A\x90`@\x81\x01\x90a,\xE1V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[`\x01\x01a\x06\x03V[PPPV[`\x003s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x07\x16W`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81` \x85\x015`@\x1C`\x04a\x07.``\x88\x01\x88a,\xE1V[\x90P\x10\x15\x80\x15a\x07rWPa\x07F``\x87\x01\x87a,\xE1V[a\x07U\x91`\x04\x91`\0\x91a-'V[a\x07^\x91a-QV[`\x01`\x01`\xE0\x1B\x03\x19\x16c\xBFk\xA1\xFC`\xE0\x1B\x14[\x15a\x07\xB1Wa\x07\x80\x86a\t\0V[\x94Pa!\x05\x81\x14a\x07\xACW`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x07\xD6V[a!\x05\x81\x03a\x07\xD6W`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x07\xA3V[a\x07\xED\x85a\x07\xE8a\x01@\x89\x01\x89a,\xE1V[a\x0E\x9BV[\x15a\x07\xFCW`\0\x92PPa\x08\x02V[`\x01\x92PP[\x80\x15a\x08\x14W`\08`\08\x843Z\xF1P[P\x93\x92PPPV[\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\x000\x81\x03a\x08RWc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[a\x08[\x84a\x10 V[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x08\xADWcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\x08\xFAW`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\x08\xF8W=`\0\x82>=\x81\xFD[P[PPPPV[`\0a\t\x0B\x82a\x10(V[`@\x80Q` \x81\x01\x92\x90\x92Rs_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x90\x82\x01R``\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\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\x000\x81\x14a\t\x89Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91P[P\x90V[`\0\x80Q` a2\x0F\x839\x81Q\x91RT\x15a\t\xDFW`@Qc\x02\xEDT=`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05\xD9a\t\xEC\x82\x84a-\x81V[a\x10AV[a\t\xF9a\x0E>V[`\0a\n\x04\x82a\x0B\x05V[\x90P\x80Q`\0\x03a\n+W`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01a\x07\xA3V[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\n[\x90\x83\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\n\x87`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\n\xA2\x91a'\x1FV[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\n\xD2\x91\x90a+\xCEV[`@Q\x80\x91\x03\x90\xA2PPV[`\x0F`\xF8\x1B``\x80`\0\x80\x80\x83a\n\xF3a\x11\x93V[\x97\x98\x90\x97\x96PF\x95P0\x94P\x91\x92P\x90V[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x0BA\x90a.\x06V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0Bm\x90a.\x06V[\x80\x15a\x0B\xBAW\x80`\x1F\x10a\x0B\x8FWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0B\xBAV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0B\x9DW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c)V^;`\xE0\x1B\x14\x80a\x0B\xF7WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x03\xC3\xCF\xC9`\xE2\x1B\x14[\x80a\x0C\x12WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c9o\x1D\xAD`\xE1\x1B\x14[\x80a\x0C-WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c'\x8FyC`\xE1\x1B\x14[\x15a\x0C:WP`\x01\x91\x90PV[P`\0\x91\x90PV[`\0`\0\x80Q` a2\x0F\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\x9B\x91a,\x99V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x0C\xABWa\x0C\xABa\x0E>V[a\x08\xFA\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x1FW`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\r.`\x04\x82\x84\x86a-'V[a\r7\x91a-QV[\x90Pa\rB\x81a\x0B\xC6V[a\rkW`@Qc\x1D\x83p\xA3`\xE1\x1B\x81R`\x01`\x01`\xE0\x1B\x03\x19\x82\x16`\x04\x82\x01R`$\x01a\x07\xA3V[a\x06\xDC0`\0\x85\x85\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x0F\xB0\x92PPPV[`\0a\x05\x01\x82a\x11\xDAV[`\0\x80`\0a\r\xC5a\x11\x93V[\x81Q` \x80\x84\x01\x91\x90\x91 \x82Q\x82\x84\x01 `@\x80Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x94\x81\x01\x94\x90\x94R\x83\x01\x91\x90\x91R``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R\x91\x93P\x91P`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x92PPP\x90V[a\x0EG3a\x0CBV[\x80a\x0EQWP30\x14[\x15a\x0EXWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05<\x81`\0\x80Q` a2\x0F\x839\x81Q\x91R[\x80T\x90`\0a\x0E\x92\x83a.PV[\x91\x90PUa\x12\x10V[`\0\x80a\x0E\xAA\x83\x85\x01\x85a.iV[\x90P`\0a\x0E\xBB\x82`\0\x01Qa\x0B\x05V[\x90P\x80Q` \x03a\x0F\x1AW`\x01`\x01`\xA0\x1B\x03a\x0E\xD7\x82a.\xF5V[\x11\x15a\x0E\xF8W\x80`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\0` \x82\x01Q\x90Pa\x0F\x10\x81\x88\x85` \x01Qa\x12\xDFV[\x93PPPPa\x05rV[\x80Q`@\x03a\x0F\x95W`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x0F:\x91\x90a/\x19V[\x91P\x91P`\0\x84` \x01Q\x80` \x01\x90Q\x81\x01\x90a\x0FX\x91\x90a/\x82V[\x90Pa\x0F\x89\x89`@Q` \x01a\x0Fp\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\0\x83\x86\x86a\x13\xE4V[\x95PPPPPPa\x05rV[\x80`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x0F\xCC\x91\x90a,\x99V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x10\tW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10\x0EV[``\x91P[P\x91P\x91P\x81a\x08\xF8W\x80Q` \x82\x01\xFD[a\x05V[`\0a\x103\x82a\x17TV[\x80Q\x90` \x01 \x90P\x91\x90PV[`\0[\x81Q\x81\x10\x15a\x05\xD9W\x81\x81\x81Q\x81\x10a\x10_Wa\x10_a,\xB5V[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x10\x93WP\x81\x81\x81Q\x81\x10a\x10\x85Wa\x10\x85a,\xB5V[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x10\xCCW\x81\x81\x81Q\x81\x10a\x10\xAAWa\x10\xAAa,\xB5V[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[\x81\x81\x81Q\x81\x10a\x10\xDEWa\x10\xDEa,\xB5V[` \x02` \x01\x01QQ` \x14\x80\x15a\x11 WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x11\rWa\x11\ra,\xB5V[` \x02` \x01\x01Qa\x11\x1E\x90a.\xF5V[\x11[\x15a\x11YW\x81\x81\x81Q\x81\x10a\x117Wa\x117a,\xB5V[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[a\x11\x8B\x82\x82\x81Q\x81\x10a\x11nWa\x11na,\xB5V[` \x02` \x01\x01Qa\x0E\x84`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\x01\x01a\x10DV[`@\x80Q\x80\x82\x01\x82R`\x15\x81Rt\x10\xDB\xDA[\x98\x98\\\xD9H\x14\xDBX\\\x9D\x08\x15\xD8[\x1B\x19]`Z\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R`\x01\x83R`1`\xF8\x1B\x90\x83\x01R\x91V[`\0a\x11\xE4a\r\xB8V[a\x11\xED\x83a\x18'V[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x92\x90\x92R`B\x82\x01R`b\x01a\t4V[a\x12\x19\x82a\x05yV[\x15a\x129W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x07\xA3\x91\x90a+\xCEV[`\x01`\0\x80Q` a2\x0F\x839\x81Q\x91R`\x02\x01\x83`@Qa\x12[\x91\x90a,\x99V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x12\x91`\0\x80Q` a2\x0F\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x12\xAE\x90\x82a0\x8DV[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\n\xD2\x91\x90a+\xCEV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91`\0\x83\x15a\x05rW`@Q\x83`\0R` \x83\x01Q`@R`@\x83Q\x03a\x13OW`@\x83\x01Q`\x1B\x81`\xFF\x1C\x01` R\x80`\x01\x1B`\x01\x1C``RP` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13MWP`\0``R`@RP`\x01a\x05rV[P[`A\x83Q\x03a\x13\x95W``\x83\x01Q`\0\x1A` R`@\x83\x01Q``R` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\x93WP`\0``R`@RP`\x01a\x05rV[P[`\0``R\x80`@Rc\x16&\xBA~`\xE0\x1B\x80\x82R\x84`\x04\x83\x01R`$\x82\x01`@\x81R\x84Q` \x01\x80`D\x85\x01\x82\x88`\x04Z\xFAPP` \x81`D=\x01\x85\x8AZ\xFA\x90Q\x90\x91\x14\x16\x91PP\x93\x92PPPV[`\0\x7F\x7F\xFF\xFF\xFF\x80\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDEs}V\xD3\x8B\xCFBy\xDC\xE5a~1\x92\xA8\x84`\xA0\x01Q\x11\x15a\x14\x1AWP`\0a\x17KV[``\x84\x01Q`\0\x90a\x14=\x90a\x141\x81`\x15a1LV[` \x88\x01Q\x91\x90a\x18bV[\x90P\x7F\xFF\x1A*\x91v\xD6P\xE4\xA9\x9D\xED\xB5\x8F\x17\x93\095\x13\x05y\xFE\x17\xB5\xA3\xF6\x98\xAC[\0\xE64\x81\x80Q\x90` \x01 \x14a\x14wW`\0\x91PPa\x17KV[`\0a\x14\x85\x88`\x01\x80a\x18\xC8V[`@Q` \x01a\x14\x95\x91\x90a1_V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x14\xCD\x87`@\x01Q\x83Q\x89`@\x01Qa\x14\xC1\x91\x90a1LV[` \x8A\x01Q\x91\x90a\x18bV[\x90P\x81\x80Q\x90` \x01 \x81\x80Q\x90` \x01 \x14a\x14\xF0W`\0\x93PPPPa\x17KV[\x86Q\x80Q`\x01`\xF8\x1B\x91\x82\x91` \x90\x81\x10a\x15\rWa\x15\ra,\xB5V[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14a\x15.W`\0\x93PPPPa\x17KV[\x87\x80\x15a\x15fWP\x86Q\x80Q`\x01`\xFA\x1B\x91\x82\x91` \x90\x81\x10a\x15SWa\x15Sa,\xB5V[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14\x15[\x15a\x15wW`\0\x93PPPPa\x17KV[`\0`\x02\x88` \x01Q`@Qa\x15\x8D\x91\x90a,\x99V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x15\xAAW=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15\xCD\x91\x90a1\xA0V[\x90P`\0`\x02\x89`\0\x01Q\x83`@Q` \x01a\x15\xEA\x92\x91\x90a1\xB9V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x16\x04\x91a,\x99V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16!W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16D\x91\x90a1\xA0V[`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`@\x80Q` \x81\x01\x87\x90R\x90\x81\x01\x93\x90\x93R``\x83\x01R\x91\x81\x01\x8B\x90R\x90\x81\x01\x89\x90R\x90\x91P`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80a\x01\0`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x16\xAA\x91\x90a,\x99V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x16\xE5W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x16\xEAV[``\x91P[P\x80Q\x91\x93P\x91P\x15\x15\x82\x80\x15a\x16\xFEWP\x80[\x15a\x17*W\x81\x80` \x01\x90Q\x81\x01\x90a\x17\x17\x91\x90a1\xA0V[`\x01\x14\x99PPPPPPPPPPa\x17KV[a\x17?\x85\x8E`\x80\x01Q\x8F`\xA0\x01Q\x8F\x8Fa\x19\xBDV[\x99PPPPPPPPPP[\x95\x94PPPPPV[``\x815` \x83\x015`\0a\x17ta\x17o`@\x87\x01\x87a,\xE1V[a\x1A\xA0V[\x90P`\0a\x17\x88a\x17o``\x88\x01\x88a,\xE1V[\x90P`\x80\x86\x015`\xA0\x87\x015`\xC0\x88\x015`\xE0\x89\x015a\x01\0\x8A\x015`\0a\x17\xB7a\x17oa\x01 \x8E\x01\x8Ea,\xE1V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x9C\x90\x9C\x16` \x8D\x01R\x8B\x81\x01\x9A\x90\x9AR``\x8B\x01\x98\x90\x98RP`\x80\x89\x01\x95\x90\x95R`\xA0\x88\x01\x93\x90\x93R`\xC0\x87\x01\x91\x90\x91R`\xE0\x86\x01Ra\x01\0\x85\x01Ra\x01 \x84\x01Ra\x01@\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81Ra\x01`\x90\x92\x01\x90R\x92\x91PPV[`@\x80Q\x7F\x9BI=\"!\x05\xFE\xE7\xDF\x16:\xB5\xD5\x7F\x0B\xF1\xFF\xD2\xDA\x04\xDD_\xAF\xBE\x10\xB5LA\xC1\xAD\xC6W` \x82\x01R\x90\x81\x01\x82\x90R`\0\x90``\x01a\t4V[``\x83Q\x82\x81\x11a\x18qW\x80\x92P[\x83\x81\x11a\x18|W\x80\x93P[P\x81\x83\x10\x15a\x05rWP`@Q\x82\x82\x03\x80\x82R\x93\x83\x01\x93`\x1F\x19`\x1F\x82\x01\x81\x16[\x86\x81\x01Q\x84\x82\x01R\x81\x01\x80a\x18\x9DWP`\0\x83\x83\x01` \x01R`?\x90\x91\x01\x16\x81\x01`@R\x93\x92PPPV[``\x83Q\x80\x15a\x08\x14W`\x03`\x02\x82\x01\x04`\x02\x1B`@Q\x92P\x7FABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`\x1FRa\x06p\x85\x15\x02\x7Fghijklmnopqrstuvwxyz0123456789-_\x18`?R` \x83\x01\x81\x81\x01\x83\x88` \x01\x01\x80Q`\0\x82R[`\x03\x8A\x01\x99P\x89Q`?\x81`\x12\x1C\x16Q`\0S`?\x81`\x0C\x1C\x16Q`\x01S`?\x81`\x06\x1C\x16Q`\x02S`?\x81\x16Q`\x03SP`\0Q\x84R`\x04\x84\x01\x93P\x82\x84\x10a\x19DW\x90R` \x01`@Ra==`\xF0\x1B`\x03\x84\x06`\x02\x04\x80\x83\x03\x91\x90\x91R`\0\x86\x15\x15\x90\x91\x02\x91\x82\x90\x03R\x90\x03\x82RP\x93\x92PPPV[`\0\x84\x15\x80a\x19\xDAWP`\0\x80Q` a1\xEF\x839\x81Q\x91R\x85\x10\x15[\x80a\x19\xE3WP\x83\x15[\x80a\x19\xFCWP`\0\x80Q` a1\xEF\x839\x81Q\x91R\x84\x10\x15[\x15a\x1A\tWP`\0a\x17KV[a\x1A\x13\x83\x83a\x1A\xB3V[a\x1A\x1FWP`\0a\x17KV[`\0a\x1A*\x85a\x1B\xADV[\x90P`\0`\0\x80Q` a1\xEF\x839\x81Q\x91R\x82\x89\t\x90P`\0`\0\x80Q` a1\xEF\x839\x81Q\x91R\x83\x89\t\x90P`\0a\x1Af\x87\x87\x85\x85a\x1C\x1FV[\x90P`\0\x80Q` a1\xEF\x839\x81Q\x91Ra\x1A\x8F\x8A`\0\x80Q` a1\xEF\x839\x81Q\x91Ra1\xDBV[\x82\x08\x15\x9A\x99PPPPPPPPPPV[`\0`@Q\x82\x80\x85\x837\x90 \x93\x92PPPV[`\0\x82\x15\x80\x15a\x1A\xC1WP\x81\x15[\x80a\x1A\xD9WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x14[\x80a\x1A\xF1WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x14[\x15a\x1A\xFEWP`\0a\x05\x01V[`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x90P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x7F\xFF\xFF\xFF\xFF\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x87\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\t\x08\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x7FZ\xC65\xD8\xAA:\x93\xE7\xB3\xEB\xBDUv\x98\x86\xBCe\x1D\x06\xB0\xCCS\xB0\xF6;\xCE<>'\xD2`K\x82\x08\x91\x90\x91\x14\x94\x93PPPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%O`\x80\x82\x01R`\0\x80Q` a1\xEF\x839\x81Q\x91R`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C\x18W`\0\x80\xFD[Q\x92\x91PPV[`\0\x80\x80\x80`\xFF\x81\x80\x88\x15\x80\x15a\x1C4WP\x87\x15[\x15a\x1CHW`\0\x96PPPPPPPa\"\xE1V[a\x1C\x94\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x8D\x8Da\"\xE9V[\x90\x92P\x90P\x81\x15\x80\x15a\x1C\xA5WP\x80\x15[\x15a\x1C\xD3W`\0\x80Q` a1\xEF\x839\x81Q\x91R\x88`\0\x80Q` a1\xEF\x839\x81Q\x91R\x03\x8A\x08\x98P`\0\x97P[`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01[\x80a\x1D\x06W`\x01\x84\x03\x93P`\x01\x8A\x85\x1C\x16`\x01\x8A\x86\x1C\x16`\x01\x1B\x01\x90Pa\x1C\xE4V[P`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01\x95P`\x01\x86\x03a\x1DhW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x96P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x93P[`\x02\x86\x03a\x1DwW\x8A\x96P\x89\x93P[`\x03\x86\x03a\x1D\x86W\x81\x96P\x80\x93P[`\x01\x83\x03\x92P`\x01\x95P`\x01\x94P[\x82`\0\x19\x11\x15a\"jW`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x02\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8A\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x84\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x8D\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08\t`\x03\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x85\t\x98P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x84\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x08\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\x82\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x87\t\x08\x97P`\x01\x8D\x88\x1C\x16`\x01\x8D\x89\x1C\x16`\x01\x1B\x01\x90P\x80a\x1F\x12W\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x97PPPPPa\"_V[`\x01\x81\x03a\x1FaW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x93P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x92P[`\x02\x81\x03a\x1FpW\x8E\x93P\x8D\x92P[`\x03\x81\x03a\x1F\x7FW\x85\x93P\x84\x92P[\x89a\x1F\x98WP\x91\x98P`\x01\x97P\x87\x96P\x94Pa\"_\x90PV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x86\t\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x88\t\x08\x93P\x80a!QW\x83a!QW`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x86\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8D\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x86\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x8F\x08\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81`\x03\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x86\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x85\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x08\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8D`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x85\x08\x83\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8A\x87\t\x85\x08\x98PPPPPPa\"_V[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x83\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8D\t\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8C\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8E\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87\x88\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83\x8D\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x86\x08\t\x08\x9APPPP\x80\x9APPPPP[`\x01\x83\x03\x92Pa\x1D\x95V[`@Q\x86``\x82\x01R` \x81R` \x80\x82\x01R` `@\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\"\xC4W`\0\x80\xFD[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81Q\x89\t\x97PPPPPPPP[\x94\x93PPPPV[`\0\x80\x80\x80\x86a#\0W\x85\x85\x93P\x93PPPa#nV[\x84a#\x12W\x87\x87\x93P\x93PPPa#nV[\x85\x88\x14\x80\x15a# WP\x84\x87\x14[\x15a#AWa#2\x88\x88`\x01\x80a#wV[\x92\x9AP\x90\x98P\x92P\x90Pa#[V[a#P\x88\x88`\x01\x80\x8A\x8Aa$\xD2V[\x92\x9AP\x90\x98P\x92P\x90P[a#g\x88\x88\x84\x84a&VV[\x93P\x93PPP[\x94P\x94\x92PPPV[`\0\x80`\0\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x02\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x83\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x8B\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8C\x08\t`\x03\t\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x89\t\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x83\x08\x87\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x84\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x88\x85\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x89\x08\x92P\x94P\x94P\x94P\x94\x90PV[`\0\x80`\0\x80\x88`\0\x03a$\xF1WP\x84\x92P\x83\x91P`\x01\x90P\x80a&IV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x98\x89\x03\x98\x89\x81\x89\x88\t\x08\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x89\t\x08\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x87\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x89\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x88\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8B\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84\x8B\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\t\x08\x92P[\x96P\x96P\x96P\x96\x92PPPV[`\0\x80`\0a&d\x84a&\xC3V[\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x87\t\x91P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x87\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x93PPP\x94P\x94\x92PPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C\x18W`\0\x80\xFD[P\x80Ta'+\x90a.\x06V[`\0\x82U\x80`\x1F\x10a';WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x05<\x91\x90[\x80\x82\x11\x15a\t\xADW`\0\x81U`\x01\x01a'UV[`\0\x80`@\x83\x85\x03\x12\x15a'|W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a'\xA2W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a'\xB9W`\0\x80\xFD[a\x05r\x82a'\x8BV[`\0\x80\x83`\x1F\x84\x01\x12a'\xD4W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a'\xEBW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a(\x03W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a(\x1FW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a((::ethers::contract::Contract); - impl ::core::clone::Clone for CoinbaseSmartWallet { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for CoinbaseSmartWallet { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for CoinbaseSmartWallet { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for CoinbaseSmartWallet { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(CoinbaseSmartWallet)) - .field(&self.address()) - .finish() - } - } - impl CoinbaseSmartWallet { - /// 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(), - COINBASESMARTWALLET_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( - COINBASESMARTWALLET_ABI.clone(), - COINBASESMARTWALLET_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `REPLAYABLE_NONCE_KEY` (0x88ce4c7c) function - pub fn replayable_nonce_key( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([136, 206, 76, 124], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `addOwnerAddress` (0x0f0f3f24) function - pub fn add_owner_address( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([15, 15, 63, 36], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `addOwnerPublicKey` (0x29565e3b) function - pub fn add_owner_public_key( - &self, - x: [u8; 32], - y: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([41, 86, 94, 59], (x, y)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `canSkipChainIdValidation` (0x9f9bcb34) function - pub fn can_skip_chain_id_validation( - &self, - function_selector: [u8; 4], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([159, 155, 203, 52], function_selector) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `domainSeparator` (0xf698da25) function - pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([246, 152, 218, 37], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `eip712Domain` (0x84b0196e) function - pub fn eip_712_domain( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ( - [u8; 1], - ::std::string::String, - ::std::string::String, - ::ethers::core::types::U256, - ::ethers::core::types::Address, - [u8; 32], - ::std::vec::Vec<::ethers::core::types::U256>, - ), - > { - self.0 - .method_hash([132, 176, 25, 110], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `entryPoint` (0xb0d691fe) function - pub fn entry_point( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([176, 214, 145, 254], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `execute` (0xb61d27f6) function - pub fn execute( - &self, - target: ::ethers::core::types::Address, - value: ::ethers::core::types::U256, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([182, 29, 39, 246], (target, value, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x34fcd5be) function - pub fn execute_batch( - &self, - calls: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([52, 252, 213, 190], calls) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithoutChainIdValidation` (0xbf6ba1fc) function - pub fn execute_without_chain_id_validation( - &self, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([191, 107, 161, 252], data) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getUserOpHashWithoutChainId` (0x4f6e7f22) function - pub fn get_user_op_hash_without_chain_id( - &self, - user_op: UserOperation, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([79, 110, 127, 34], (user_op,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `implementation` (0x5c60da1b) function - pub fn implementation( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([92, 96, 218, 27], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `initialize` (0x6f2de70e) function - pub fn initialize( - &self, - owners: ::std::vec::Vec<::ethers::core::types::Bytes>, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([111, 45, 231, 14], owners) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerAddress` (0xa2e1a8d8) function - pub fn is_owner_address( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([162, 225, 168, 216], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerBytes` (0x1ca5393f) function - pub fn is_owner_bytes( - &self, - account: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([28, 165, 57, 63], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerPublicKey` (0x066a1eb7) function - pub fn is_owner_public_key( - &self, - x: [u8; 32], - y: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([6, 106, 30, 183], (x, y)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isValidSignature` (0x1626ba7e) function - pub fn is_valid_signature( - &self, - hash: [u8; 32], - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([22, 38, 186, 126], (hash, signature)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `nextOwnerIndex` (0xd948fd2e) function - pub fn next_owner_index( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([217, 72, 253, 46], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `ownerAtIndex` (0x8ea69029) function - pub fn owner_at_index( - &self, - index: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([142, 166, 144, 41], index) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `proxiableUUID` (0x52d1902d) function - pub fn proxiable_uuid(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([82, 209, 144, 45], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `removeOwnerAtIndex` (0x72de3b5a) function - pub fn remove_owner_at_index( - &self, - index: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([114, 222, 59, 90], index) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `replaySafeHash` (0xce1506be) function - pub fn replay_safe_hash( - &self, - hash: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([206, 21, 6, 190], hash) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function - pub fn upgrade_to_and_call( - &self, - new_implementation: ::ethers::core::types::Address, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([79, 30, 242, 134], (new_implementation, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `validateUserOp` (0x3a871cdd) function - pub fn validate_user_op( - &self, - user_op: UserOperation, - user_op_hash: [u8; 32], - missing_account_funds: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [58, 135, 28, 221], - (user_op, user_op_hash, missing_account_funds), - ) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `AddOwner` event - pub fn add_owner_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AddOwnerFilter> { - self.0.event() - } - ///Gets the contract's `RemoveOwner` event - pub fn remove_owner_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, RemoveOwnerFilter> - { - self.0.event() - } - ///Gets the contract's `Upgraded` event - pub fn upgraded_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradedFilter> { - 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, CoinbaseSmartWalletEvents> - { - self.0 - .event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for CoinbaseSmartWallet - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `AlreadyOwner` with signature `AlreadyOwner(bytes)` and selector `0x8d16255a` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "AlreadyOwner", abi = "AlreadyOwner(bytes)")] - pub struct AlreadyOwner { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `Initialized` with signature `Initialized()` and selector `0x5daa87a0` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "Initialized", abi = "Initialized()")] - pub struct Initialized; - ///Custom Error type `InvalidEthereumAddressOwner` with signature `InvalidEthereumAddressOwner(bytes)` and selector `0xbff1ac65` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "InvalidEthereumAddressOwner", - abi = "InvalidEthereumAddressOwner(bytes)" - )] - pub struct InvalidEthereumAddressOwner { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `InvalidNonceKey` with signature `InvalidNonceKey(uint256)` and selector `0x2ef37813` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "InvalidNonceKey", abi = "InvalidNonceKey(uint256)")] - pub struct InvalidNonceKey { - pub key: ::ethers::core::types::U256, - } - ///Custom Error type `InvalidOwnerBytesLength` with signature `InvalidOwnerBytesLength(bytes)` and selector `0x4eeab722` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "InvalidOwnerBytesLength", - abi = "InvalidOwnerBytesLength(bytes)" - )] - pub struct InvalidOwnerBytesLength { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `NoOwnerAtIndex` with signature `NoOwnerAtIndex(uint256)` and selector `0x68188e7a` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "NoOwnerAtIndex", abi = "NoOwnerAtIndex(uint256)")] - pub struct NoOwnerAtIndex { - pub index: ::ethers::core::types::U256, - } - ///Custom Error type `SelectorNotAllowed` with signature `SelectorNotAllowed(bytes4)` and selector `0x3b06e146` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "SelectorNotAllowed", abi = "SelectorNotAllowed(bytes4)")] - pub struct SelectorNotAllowed { - pub selector: [u8; 4], - } - ///Custom Error type `Unauthorized` with signature `Unauthorized()` and selector `0x82b42900` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "Unauthorized", abi = "Unauthorized()")] - pub struct Unauthorized; - ///Custom Error type `UnauthorizedCallContext` with signature `UnauthorizedCallContext()` and selector `0x9f03a026` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "UnauthorizedCallContext", abi = "UnauthorizedCallContext()")] - pub struct UnauthorizedCallContext; - ///Custom Error type `UpgradeFailed` with signature `UpgradeFailed()` and selector `0x55299b49` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "UpgradeFailed", abi = "UpgradeFailed()")] - pub struct UpgradeFailed; - ///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 CoinbaseSmartWalletErrors { - AlreadyOwner(AlreadyOwner), - Initialized(Initialized), - InvalidEthereumAddressOwner(InvalidEthereumAddressOwner), - InvalidNonceKey(InvalidNonceKey), - InvalidOwnerBytesLength(InvalidOwnerBytesLength), - NoOwnerAtIndex(NoOwnerAtIndex), - SelectorNotAllowed(SelectorNotAllowed), - Unauthorized(Unauthorized), - UnauthorizedCallContext(UnauthorizedCallContext), - UpgradeFailed(UpgradeFailed), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for CoinbaseSmartWalletErrors { - 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::AlreadyOwner(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Initialized(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::InvalidEthereumAddressOwner(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::InvalidNonceKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::InvalidOwnerBytesLength(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::NoOwnerAtIndex(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SelectorNotAllowed(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Unauthorized(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::UnauthorizedCallContext(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::UpgradeFailed(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for CoinbaseSmartWalletErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::AlreadyOwner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Initialized(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::InvalidEthereumAddressOwner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidNonceKey(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::InvalidOwnerBytesLength(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NoOwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SelectorNotAllowed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Unauthorized(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::UnauthorizedCallContext(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::UpgradeFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for CoinbaseSmartWalletErrors { - 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 - } - _ => false, - } - } - } - impl ::core::fmt::Display for CoinbaseSmartWalletErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AlreadyOwner(element) => ::core::fmt::Display::fmt(element, f), - Self::Initialized(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidEthereumAddressOwner(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidNonceKey(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidOwnerBytesLength(element) => ::core::fmt::Display::fmt(element, f), - Self::NoOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::SelectorNotAllowed(element) => ::core::fmt::Display::fmt(element, f), - Self::Unauthorized(element) => ::core::fmt::Display::fmt(element, f), - Self::UnauthorizedCallContext(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradeFailed(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for CoinbaseSmartWalletErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletErrors { - fn from(value: AlreadyOwner) -> Self { - Self::AlreadyOwner(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletErrors { - fn from(value: Initialized) -> Self { - Self::Initialized(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletErrors { - fn from(value: InvalidEthereumAddressOwner) -> Self { - Self::InvalidEthereumAddressOwner(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletErrors { - fn from(value: InvalidNonceKey) -> Self { - Self::InvalidNonceKey(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletErrors { - fn from(value: InvalidOwnerBytesLength) -> Self { - Self::InvalidOwnerBytesLength(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletErrors { - fn from(value: NoOwnerAtIndex) -> Self { - Self::NoOwnerAtIndex(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletErrors { - fn from(value: SelectorNotAllowed) -> Self { - Self::SelectorNotAllowed(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletErrors { - fn from(value: Unauthorized) -> Self { - Self::Unauthorized(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletErrors { - fn from(value: UnauthorizedCallContext) -> Self { - Self::UnauthorizedCallContext(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletErrors { - fn from(value: UpgradeFailed) -> Self { - Self::UpgradeFailed(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "AddOwner", abi = "AddOwner(uint256,bytes)")] - pub struct AddOwnerFilter { - #[ethevent(indexed)] - pub index: ::ethers::core::types::U256, - pub owner: ::ethers::core::types::Bytes, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "RemoveOwner", abi = "RemoveOwner(uint256,bytes)")] - pub struct RemoveOwnerFilter { - #[ethevent(indexed)] - pub index: ::ethers::core::types::U256, - pub owner: ::ethers::core::types::Bytes, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] - pub struct UpgradedFilter { - #[ethevent(indexed)] - pub implementation: ::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 CoinbaseSmartWalletEvents { - AddOwnerFilter(AddOwnerFilter), - RemoveOwnerFilter(RemoveOwnerFilter), - UpgradedFilter(UpgradedFilter), - } - impl ::ethers::contract::EthLogDecode for CoinbaseSmartWalletEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = AddOwnerFilter::decode_log(log) { - return Ok(CoinbaseSmartWalletEvents::AddOwnerFilter(decoded)); - } - if let Ok(decoded) = RemoveOwnerFilter::decode_log(log) { - return Ok(CoinbaseSmartWalletEvents::RemoveOwnerFilter(decoded)); - } - if let Ok(decoded) = UpgradedFilter::decode_log(log) { - return Ok(CoinbaseSmartWalletEvents::UpgradedFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for CoinbaseSmartWalletEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AddOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::RemoveOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradedFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for CoinbaseSmartWalletEvents { - fn from(value: AddOwnerFilter) -> Self { - Self::AddOwnerFilter(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletEvents { - fn from(value: RemoveOwnerFilter) -> Self { - Self::RemoveOwnerFilter(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletEvents { - fn from(value: UpgradedFilter) -> Self { - Self::UpgradedFilter(value) - } - } - ///Container type for all input parameters for the `REPLAYABLE_NONCE_KEY` function with signature `REPLAYABLE_NONCE_KEY()` and selector `0x88ce4c7c` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "REPLAYABLE_NONCE_KEY", abi = "REPLAYABLE_NONCE_KEY()")] - pub struct ReplayableNonceKeyCall; - ///Container type for all input parameters for the `addOwnerAddress` function with signature `addOwnerAddress(address)` and selector `0x0f0f3f24` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "addOwnerAddress", abi = "addOwnerAddress(address)")] - pub struct AddOwnerAddressCall { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `addOwnerPublicKey` function with signature `addOwnerPublicKey(bytes32,bytes32)` and selector `0x29565e3b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "addOwnerPublicKey", abi = "addOwnerPublicKey(bytes32,bytes32)")] - pub struct AddOwnerPublicKeyCall { - pub x: [u8; 32], - pub y: [u8; 32], - } - ///Container type for all input parameters for the `canSkipChainIdValidation` function with signature `canSkipChainIdValidation(bytes4)` and selector `0x9f9bcb34` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "canSkipChainIdValidation", - abi = "canSkipChainIdValidation(bytes4)" - )] - pub struct CanSkipChainIdValidationCall { - pub function_selector: [u8; 4], - } - ///Container type for all input parameters for the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "domainSeparator", abi = "domainSeparator()")] - pub struct DomainSeparatorCall; - ///Container type for all input parameters for the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "eip712Domain", abi = "eip712Domain()")] - pub struct Eip712DomainCall; - ///Container type for all input parameters for the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "entryPoint", abi = "entryPoint()")] - pub struct EntryPointCall; - ///Container type for all input parameters for the `execute` function with signature `execute(address,uint256,bytes)` and selector `0xb61d27f6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "execute", abi = "execute(address,uint256,bytes)")] - pub struct ExecuteCall { - pub target: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((address,uint256,bytes)[])` and selector `0x34fcd5be` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((address,uint256,bytes)[])")] - pub struct ExecuteBatchCall { - pub calls: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeWithoutChainIdValidation` function with signature `executeWithoutChainIdValidation(bytes)` and selector `0xbf6ba1fc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "executeWithoutChainIdValidation", - abi = "executeWithoutChainIdValidation(bytes)" - )] - pub struct ExecuteWithoutChainIdValidationCall { - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `getUserOpHashWithoutChainId` function with signature `getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x4f6e7f22` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "getUserOpHashWithoutChainId", - abi = "getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" - )] - pub struct GetUserOpHashWithoutChainIdCall { - pub user_op: UserOperation, - } - ///Container type for all input parameters for the `implementation` function with signature `implementation()` and selector `0x5c60da1b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "implementation", abi = "implementation()")] - pub struct ImplementationCall; - ///Container type for all input parameters for the `initialize` function with signature `initialize(bytes[])` and selector `0x6f2de70e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "initialize", abi = "initialize(bytes[])")] - pub struct InitializeCall { - pub owners: ::std::vec::Vec<::ethers::core::types::Bytes>, - } - ///Container type for all input parameters for the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerAddress", abi = "isOwnerAddress(address)")] - pub struct IsOwnerAddressCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerBytes", abi = "isOwnerBytes(bytes)")] - pub struct IsOwnerBytesCall { - pub account: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerPublicKey", abi = "isOwnerPublicKey(bytes32,bytes32)")] - pub struct IsOwnerPublicKeyCall { - pub x: [u8; 32], - pub y: [u8; 32], - } - ///Container type for all input parameters for the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isValidSignature", abi = "isValidSignature(bytes32,bytes)")] - pub struct IsValidSignatureCall { - pub hash: [u8; 32], - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "nextOwnerIndex", abi = "nextOwnerIndex()")] - pub struct NextOwnerIndexCall; - ///Container type for all input parameters for the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "ownerAtIndex", abi = "ownerAtIndex(uint256)")] - pub struct OwnerAtIndexCall { - pub index: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] - pub struct ProxiableUUIDCall; - ///Container type for all input parameters for the `removeOwnerAtIndex` function with signature `removeOwnerAtIndex(uint256)` and selector `0x72de3b5a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "removeOwnerAtIndex", abi = "removeOwnerAtIndex(uint256)")] - pub struct RemoveOwnerAtIndexCall { - pub index: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "replaySafeHash", abi = "replaySafeHash(bytes32)")] - pub struct ReplaySafeHashCall { - pub hash: [u8; 32], - } - ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] - pub struct UpgradeToAndCallCall { - pub new_implementation: ::ethers::core::types::Address, - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `validateUserOp` function with signature `validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0x3a871cdd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "validateUserOp", - abi = "validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)" - )] - pub struct ValidateUserOpCall { - pub user_op: UserOperation, - pub user_op_hash: [u8; 32], - pub missing_account_funds: ::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 CoinbaseSmartWalletCalls { - ReplayableNonceKey(ReplayableNonceKeyCall), - AddOwnerAddress(AddOwnerAddressCall), - AddOwnerPublicKey(AddOwnerPublicKeyCall), - CanSkipChainIdValidation(CanSkipChainIdValidationCall), - DomainSeparator(DomainSeparatorCall), - Eip712Domain(Eip712DomainCall), - EntryPoint(EntryPointCall), - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteWithoutChainIdValidation(ExecuteWithoutChainIdValidationCall), - GetUserOpHashWithoutChainId(GetUserOpHashWithoutChainIdCall), - Implementation(ImplementationCall), - Initialize(InitializeCall), - IsOwnerAddress(IsOwnerAddressCall), - IsOwnerBytes(IsOwnerBytesCall), - IsOwnerPublicKey(IsOwnerPublicKeyCall), - IsValidSignature(IsValidSignatureCall), - NextOwnerIndex(NextOwnerIndexCall), - OwnerAtIndex(OwnerAtIndexCall), - ProxiableUUID(ProxiableUUIDCall), - RemoveOwnerAtIndex(RemoveOwnerAtIndexCall), - ReplaySafeHash(ReplaySafeHashCall), - UpgradeToAndCall(UpgradeToAndCallCall), - ValidateUserOp(ValidateUserOpCall), - } - impl ::ethers::core::abi::AbiDecode for CoinbaseSmartWalletCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ReplayableNonceKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::AddOwnerAddress(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::AddOwnerPublicKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::CanSkipChainIdValidation(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::DomainSeparator(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::Eip712Domain(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::EntryPoint(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::ExecuteWithoutChainIdValidation(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::GetUserOpHashWithoutChainId(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Implementation(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Initialize(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsOwnerAddress(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::IsOwnerBytes(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsOwnerPublicKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsValidSignature(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::NextOwnerIndex(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::OwnerAtIndex(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::ProxiableUUID(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::RemoveOwnerAtIndex(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ReplaySafeHash(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::UpgradeToAndCall(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ValidateUserOp(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for CoinbaseSmartWalletCalls { - fn encode(self) -> Vec { - match self { - Self::ReplayableNonceKey(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::AddOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::AddOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::CanSkipChainIdValidation(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Eip712Domain(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::EntryPoint(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteWithoutChainIdValidation(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::GetUserOpHashWithoutChainId(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Implementation(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Initialize(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerBytes(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsValidSignature(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::NextOwnerIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::OwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ProxiableUUID(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RemoveOwnerAtIndex(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ReplaySafeHash(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::UpgradeToAndCall(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ValidateUserOp(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for CoinbaseSmartWalletCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ReplayableNonceKey(element) => ::core::fmt::Display::fmt(element, f), - Self::AddOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), - Self::AddOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), - Self::CanSkipChainIdValidation(element) => ::core::fmt::Display::fmt(element, f), - Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), - Self::Eip712Domain(element) => ::core::fmt::Display::fmt(element, f), - Self::EntryPoint(element) => ::core::fmt::Display::fmt(element, f), - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteWithoutChainIdValidation(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::GetUserOpHashWithoutChainId(element) => ::core::fmt::Display::fmt(element, f), - Self::Implementation(element) => ::core::fmt::Display::fmt(element, f), - Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerBytes(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), - Self::IsValidSignature(element) => ::core::fmt::Display::fmt(element, f), - Self::NextOwnerIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), - Self::RemoveOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::ReplaySafeHash(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), - Self::ValidateUserOp(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: ReplayableNonceKeyCall) -> Self { - Self::ReplayableNonceKey(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: AddOwnerAddressCall) -> Self { - Self::AddOwnerAddress(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: AddOwnerPublicKeyCall) -> Self { - Self::AddOwnerPublicKey(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: CanSkipChainIdValidationCall) -> Self { - Self::CanSkipChainIdValidation(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: DomainSeparatorCall) -> Self { - Self::DomainSeparator(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: Eip712DomainCall) -> Self { - Self::Eip712Domain(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: EntryPointCall) -> Self { - Self::EntryPoint(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: ExecuteWithoutChainIdValidationCall) -> Self { - Self::ExecuteWithoutChainIdValidation(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: GetUserOpHashWithoutChainIdCall) -> Self { - Self::GetUserOpHashWithoutChainId(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: ImplementationCall) -> Self { - Self::Implementation(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: InitializeCall) -> Self { - Self::Initialize(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: IsOwnerAddressCall) -> Self { - Self::IsOwnerAddress(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: IsOwnerBytesCall) -> Self { - Self::IsOwnerBytes(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: IsOwnerPublicKeyCall) -> Self { - Self::IsOwnerPublicKey(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: IsValidSignatureCall) -> Self { - Self::IsValidSignature(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: NextOwnerIndexCall) -> Self { - Self::NextOwnerIndex(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: OwnerAtIndexCall) -> Self { - Self::OwnerAtIndex(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: ProxiableUUIDCall) -> Self { - Self::ProxiableUUID(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: RemoveOwnerAtIndexCall) -> Self { - Self::RemoveOwnerAtIndex(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: ReplaySafeHashCall) -> Self { - Self::ReplaySafeHash(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: UpgradeToAndCallCall) -> Self { - Self::UpgradeToAndCall(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletCalls { - fn from(value: ValidateUserOpCall) -> Self { - Self::ValidateUserOp(value) - } - } - ///Container type for all return fields from the `REPLAYABLE_NONCE_KEY` function with signature `REPLAYABLE_NONCE_KEY()` and selector `0x88ce4c7c` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ReplayableNonceKeyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `canSkipChainIdValidation` function with signature `canSkipChainIdValidation(bytes4)` and selector `0x9f9bcb34` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct CanSkipChainIdValidationReturn(pub bool); - ///Container type for all return fields from the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` - #[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 `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct Eip712DomainReturn { - pub fields: [u8; 1], - pub name: ::std::string::String, - pub version: ::std::string::String, - pub chain_id: ::ethers::core::types::U256, - pub verifying_contract: ::ethers::core::types::Address, - pub salt: [u8; 32], - pub extensions: ::std::vec::Vec<::ethers::core::types::U256>, - } - ///Container type for all return fields from the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct EntryPointReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `getUserOpHashWithoutChainId` function with signature `getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x4f6e7f22` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GetUserOpHashWithoutChainIdReturn { - pub user_op_hash: [u8; 32], - } - ///Container type for all return fields from the `implementation` function with signature `implementation()` and selector `0x5c60da1b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ImplementationReturn { - pub address: ::ethers::core::types::Address, - } - ///Container type for all return fields from the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerAddressReturn(pub bool); - ///Container type for all return fields from the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerBytesReturn(pub bool); - ///Container type for all return fields from the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerPublicKeyReturn(pub bool); - ///Container type for all return fields from the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsValidSignatureReturn { - pub result: [u8; 4], - } - ///Container type for all return fields from the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct NextOwnerIndexReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerAtIndexReturn(pub ::ethers::core::types::Bytes); - ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ProxiableUUIDReturn(pub [u8; 32]); - ///Container type for all return fields from the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ReplaySafeHashReturn(pub [u8; 32]); - ///Container type for all return fields from the `validateUserOp` function with signature `validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0x3a871cdd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ValidateUserOpReturn { - pub validation_data: ::ethers::core::types::U256, - } -} diff --git a/xmtp_id/src/bindings/coinbase_smart_wallet_factory.rs b/xmtp_id/src/bindings/coinbase_smart_wallet_factory.rs deleted file mode 100644 index e04ba2c94..000000000 --- a/xmtp_id/src/bindings/coinbase_smart_wallet_factory.rs +++ /dev/null @@ -1,496 +0,0 @@ -pub use coinbase_smart_wallet_factory::*; -/// 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 coinbase_smart_wallet_factory { - #[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("erc4337"), - 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("createAccount"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("createAccount"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owners"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Bytes, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("nonce"), - 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("account"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract CoinbaseSmartWallet",), - ), - },], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("getAddress"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getAddress"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owners"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Bytes, - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("nonce"), - 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("predicted"), - 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("implementation"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("implementation"), - 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("initCodeHash"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("initCodeHash"), - inputs: ::std::vec![], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("result"), - 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, - },], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([( - ::std::borrow::ToOwned::to_owned("OwnerRequired"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("OwnerRequired"), - inputs: ::std::vec![], - },], - )]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static COINBASESMARTWALLETFACTORY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R`@Qa\x05\xEB8\x03\x80a\x05\xEB\x839\x81\x01`@\x81\x90Ra\0\"\x91a\x003V[`\x01`\x01`\xA0\x1B\x03\x16`\x80Ra\0cV[`\0` \x82\x84\x03\x12\x15a\0EW`\0\x80\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\\W`\0\x80\xFD[\x93\x92PPPV[`\x80Qa\x05`a\0\x8B`\09`\0\x81\x81`\xA6\x01R\x81\x81a\x01<\x01Ra\x02;\x01Ra\x05``\0\xF3\xFE`\x80`@R`\x046\x10a\0?W`\x005`\xE0\x1C\x80c%\x0B\x1BA\x14a\0DW\x80c?\xFB\xA3o\x14a\0\x81W\x80c\\`\xDA\x1B\x14a\0\x94W\x80c\xDBLT^\x14a\0\xC8W[`\0\x80\xFD[4\x80\x15a\0PW`\0\x80\xFD[Pa\0da\0_6`\x04a\x03\xB7V[a\0\xEBV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0da\0\x8F6`\x04a\x03\xB7V[a\x01\x11V[4\x80\x15a\0\xA0W`\0\x80\xFD[Pa\0d\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\x81V[4\x80\x15a\0\xD4W`\0\x80\xFD[Pa\0\xDDa\x01\xE6V[`@Q\x90\x81R` \x01a\0xV[`\0a\x01\ta\0\xF8a\x01\xE6V[a\x01\x03\x86\x86\x86a\x02{V[0a\x02\xB1V[\x94\x93PPPPV[`\0\x82\x81\x03a\x013W`@Qc=`\0\xFD[PPPP[PP\x93\x92PPPV[`@\x80Q\x7F\xCC75\xA9 \xA3\xCAP]8+\xBCTZ\xF4=`\0\x80>`8W=`\0\xFD[=`\0\xF3``\x90\x81R\x7FQU\xF36==7==6=\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\x83Ra`\t` R\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`\x1ERh`==\x81`\"=9s`\nR`_`! \x91\x90\x92R`\0\x90\x91R\x90V[`\0\x83\x83\x83`@Q` \x01a\x02\x92\x93\x92\x91\x90a\x05\x06V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x93\x92PPPV[`\0`\xFF`\0SP`5\x92\x83R``\x1B`\x01R`\x15R`U`\0\x90\x81 \x91R\x90V[`\0\x80`@Q\x7F\xCC75\xA9 \xA3\xCAP]8+\xBCTZ\xF4=`\0\x80>`8W=`\0\xFD[=`\0\xF3``R\x7FQU\xF36==7==6=\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v`@Ra`\t` R\x84`\x1ERh`==\x81`\"=9s`\nR`_`! `5\x82\x01R0`X\x1B\x81R`\xFF\x81S\x83`\x15\x82\x01R`U\x81 \x91P\x81;a\x03\x7FW\x83`_`!\x88\xF5\x91P\x81a\x03zWc0\x11d%`\0R`\x04`\x1C\xFD[a\x03\xA5V[`\x01\x92P\x85\x15a\x03\xA5W`\08`\08\x89\x86Z\xF1a\x03\xA5Wc\xB1-\x13\xEB`\0R`\x04`\x1C\xFD[\x80`@RP`\0``R\x93P\x93\x91PPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x03\xCCW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03\xE4W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x03\xF8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\x07W`\0\x80\xFD[\x87` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x1CW`\0\x80\xFD[` \x92\x83\x01\x98\x90\x97P\x95\x90\x91\x015\x94\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\0\x83\x83\x85R` \x80\x86\x01\x95P` \x85`\x05\x1B\x83\x01\x01\x84`\0[\x87\x81\x10\x15a\x04\xE5W\x84\x83\x03`\x1F\x19\x01\x89R\x8156\x88\x90\x03`\x1E\x19\x01\x81\x12a\x04\x9BW`\0\x80\xFD[\x87\x01\x84\x81\x01\x905g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xB7W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x04\xC6W`\0\x80\xFD[a\x04\xD1\x85\x82\x84a\x042V[\x9A\x86\x01\x9A\x94PPP\x90\x83\x01\x90`\x01\x01a\x04uV[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x01\t` \x83\x01\x84\x86a\x04[V[`@\x81R`\0a\x05\x1A`@\x83\x01\x85\x87a\x04[V[\x90P\x82` \x83\x01R\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \x98\xBA\xE6Nb\x85\x9A\xC8\xD5\xED\x01\xC4\x92~_\xCE@oc+Q|\x86\xF08\xF0o\xEF\x83U\xDB\xA1dsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static COINBASESMARTWALLETFACTORY_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0?W`\x005`\xE0\x1C\x80c%\x0B\x1BA\x14a\0DW\x80c?\xFB\xA3o\x14a\0\x81W\x80c\\`\xDA\x1B\x14a\0\x94W\x80c\xDBLT^\x14a\0\xC8W[`\0\x80\xFD[4\x80\x15a\0PW`\0\x80\xFD[Pa\0da\0_6`\x04a\x03\xB7V[a\0\xEBV[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0da\0\x8F6`\x04a\x03\xB7V[a\x01\x11V[4\x80\x15a\0\xA0W`\0\x80\xFD[Pa\0d\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\x81V[4\x80\x15a\0\xD4W`\0\x80\xFD[Pa\0\xDDa\x01\xE6V[`@Q\x90\x81R` \x01a\0xV[`\0a\x01\ta\0\xF8a\x01\xE6V[a\x01\x03\x86\x86\x86a\x02{V[0a\x02\xB1V[\x94\x93PPPPV[`\0\x82\x81\x03a\x013W`@Qc=`\0\xFD[PPPP[PP\x93\x92PPPV[`@\x80Q\x7F\xCC75\xA9 \xA3\xCAP]8+\xBCTZ\xF4=`\0\x80>`8W=`\0\xFD[=`\0\xF3``\x90\x81R\x7FQU\xF36==7==6=\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\x83Ra`\t` R\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`\x1ERh`==\x81`\"=9s`\nR`_`! \x91\x90\x92R`\0\x90\x91R\x90V[`\0\x83\x83\x83`@Q` \x01a\x02\x92\x93\x92\x91\x90a\x05\x06V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x93\x92PPPV[`\0`\xFF`\0SP`5\x92\x83R``\x1B`\x01R`\x15R`U`\0\x90\x81 \x91R\x90V[`\0\x80`@Q\x7F\xCC75\xA9 \xA3\xCAP]8+\xBCTZ\xF4=`\0\x80>`8W=`\0\xFD[=`\0\xF3``R\x7FQU\xF36==7==6=\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v`@Ra`\t` R\x84`\x1ERh`==\x81`\"=9s`\nR`_`! `5\x82\x01R0`X\x1B\x81R`\xFF\x81S\x83`\x15\x82\x01R`U\x81 \x91P\x81;a\x03\x7FW\x83`_`!\x88\xF5\x91P\x81a\x03zWc0\x11d%`\0R`\x04`\x1C\xFD[a\x03\xA5V[`\x01\x92P\x85\x15a\x03\xA5W`\08`\08\x89\x86Z\xF1a\x03\xA5Wc\xB1-\x13\xEB`\0R`\x04`\x1C\xFD[\x80`@RP`\0``R\x93P\x93\x91PPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x03\xCCW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03\xE4W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x03\xF8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x04\x07W`\0\x80\xFD[\x87` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x04\x1CW`\0\x80\xFD[` \x92\x83\x01\x98\x90\x97P\x95\x90\x91\x015\x94\x93PPPPV[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\0\x83\x83\x85R` \x80\x86\x01\x95P` \x85`\x05\x1B\x83\x01\x01\x84`\0[\x87\x81\x10\x15a\x04\xE5W\x84\x83\x03`\x1F\x19\x01\x89R\x8156\x88\x90\x03`\x1E\x19\x01\x81\x12a\x04\x9BW`\0\x80\xFD[\x87\x01\x84\x81\x01\x905g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\xB7W`\0\x80\xFD[\x806\x03\x82\x13\x15a\x04\xC6W`\0\x80\xFD[a\x04\xD1\x85\x82\x84a\x042V[\x9A\x86\x01\x9A\x94PPP\x90\x83\x01\x90`\x01\x01a\x04uV[P\x90\x97\x96PPPPPPPV[` \x81R`\0a\x01\t` \x83\x01\x84\x86a\x04[V[`@\x81R`\0a\x05\x1A`@\x83\x01\x85\x87a\x04[V[\x90P\x82` \x83\x01R\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \x98\xBA\xE6Nb\x85\x9A\xC8\xD5\xED\x01\xC4\x92~_\xCE@oc+Q|\x86\xF08\xF0o\xEF\x83U\xDB\xA1dsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static COINBASESMARTWALLETFACTORY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct CoinbaseSmartWalletFactory(::ethers::contract::Contract); - impl ::core::clone::Clone for CoinbaseSmartWalletFactory { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for CoinbaseSmartWalletFactory { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for CoinbaseSmartWalletFactory { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for CoinbaseSmartWalletFactory { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(CoinbaseSmartWalletFactory)) - .field(&self.address()) - .finish() - } - } - impl CoinbaseSmartWalletFactory { - /// 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(), - COINBASESMARTWALLETFACTORY_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( - COINBASESMARTWALLETFACTORY_ABI.clone(), - COINBASESMARTWALLETFACTORY_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `createAccount` (0x3ffba36f) function - pub fn create_account( - &self, - owners: ::std::vec::Vec<::ethers::core::types::Bytes>, - nonce: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([63, 251, 163, 111], (owners, nonce)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getAddress` (0x250b1b41) function - pub fn get_address( - &self, - owners: ::std::vec::Vec<::ethers::core::types::Bytes>, - nonce: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([37, 11, 27, 65], (owners, nonce)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `implementation` (0x5c60da1b) function - pub fn implementation( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([92, 96, 218, 27], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `initCodeHash` (0xdb4c545e) function - pub fn init_code_hash(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([219, 76, 84, 94], ()) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for CoinbaseSmartWalletFactory - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `OwnerRequired` with signature `OwnerRequired()` and selector `0x3c776be1` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "OwnerRequired", abi = "OwnerRequired()")] - pub struct OwnerRequired; - ///Container type for all input parameters for the `createAccount` function with signature `createAccount(bytes[],uint256)` and selector `0x3ffba36f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "createAccount", abi = "createAccount(bytes[],uint256)")] - pub struct CreateAccountCall { - pub owners: ::std::vec::Vec<::ethers::core::types::Bytes>, - pub nonce: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getAddress` function with signature `getAddress(bytes[],uint256)` and selector `0x250b1b41` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "getAddress", abi = "getAddress(bytes[],uint256)")] - pub struct GetAddressCall { - pub owners: ::std::vec::Vec<::ethers::core::types::Bytes>, - pub nonce: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `implementation` function with signature `implementation()` and selector `0x5c60da1b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "implementation", abi = "implementation()")] - pub struct ImplementationCall; - ///Container type for all input parameters for the `initCodeHash` function with signature `initCodeHash()` and selector `0xdb4c545e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "initCodeHash", abi = "initCodeHash()")] - pub struct InitCodeHashCall; - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash, - )] - pub enum CoinbaseSmartWalletFactoryCalls { - CreateAccount(CreateAccountCall), - GetAddress(GetAddressCall), - Implementation(ImplementationCall), - InitCodeHash(InitCodeHashCall), - } - impl ::ethers::core::abi::AbiDecode for CoinbaseSmartWalletFactoryCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::CreateAccount(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::GetAddress(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Implementation(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::InitCodeHash(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for CoinbaseSmartWalletFactoryCalls { - fn encode(self) -> Vec { - match self { - Self::CreateAccount(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Implementation(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::InitCodeHash(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for CoinbaseSmartWalletFactoryCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::CreateAccount(element) => ::core::fmt::Display::fmt(element, f), - Self::GetAddress(element) => ::core::fmt::Display::fmt(element, f), - Self::Implementation(element) => ::core::fmt::Display::fmt(element, f), - Self::InitCodeHash(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for CoinbaseSmartWalletFactoryCalls { - fn from(value: CreateAccountCall) -> Self { - Self::CreateAccount(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletFactoryCalls { - fn from(value: GetAddressCall) -> Self { - Self::GetAddress(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletFactoryCalls { - fn from(value: ImplementationCall) -> Self { - Self::Implementation(value) - } - } - impl ::core::convert::From for CoinbaseSmartWalletFactoryCalls { - fn from(value: InitCodeHashCall) -> Self { - Self::InitCodeHash(value) - } - } - ///Container type for all return fields from the `createAccount` function with signature `createAccount(bytes[],uint256)` and selector `0x3ffba36f` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct CreateAccountReturn { - pub account: ::ethers::core::types::Address, - } - ///Container type for all return fields from the `getAddress` function with signature `getAddress(bytes[],uint256)` and selector `0x250b1b41` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GetAddressReturn { - pub predicted: ::ethers::core::types::Address, - } - ///Container type for all return fields from the `implementation` function with signature `implementation()` and selector `0x5c60da1b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ImplementationReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `initCodeHash` function with signature `initCodeHash()` and selector `0xdb4c545e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct InitCodeHashReturn { - pub result: [u8; 32], - } -} diff --git a/xmtp_id/src/bindings/dummy.rs b/xmtp_id/src/bindings/dummy.rs deleted file mode 100644 index 4d978770c..000000000 --- a/xmtp_id/src/bindings/dummy.rs +++ /dev/null @@ -1,576 +0,0 @@ -pub use dummy::*; -/// 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 dummy { - #[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("dummy"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("dummy"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("proxiableUUID"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), - 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("upgradeToAndCall"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newImplementation"), - 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("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::Payable, - },], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("Done"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Done"), - inputs: ::std::vec![], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("Upgraded"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Upgraded"), - inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("implementation"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - },], - anonymous: false, - },], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext",), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("UpgradeFailed"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("UpgradeFailed"), - inputs: ::std::vec![], - },], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static DUMMY_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R0`\x80R4\x80\x15a\0\x14W`\0\x80\xFD[P`\x80Qa\x02\xB6a\x006`\09`\0\x81\x81`\xB7\x01Ra\x01\x94\x01Ra\x02\xB6`\0\xF3\xFE`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c2\xE4:\x11\x14a\09W\x80cO\x1E\xF2\x86\x14a\0PW\x80cR\xD1\x90-\x14a\0cW[`\0\x80\xFD[4\x80\x15a\0EW`\0\x80\xFD[Pa\0Na\0\x8AV[\0[a\0Na\0^6`\x04a\x01\xEFV[a\0\xB5V[4\x80\x15a\0oW`\0\x80\xFD[Pa\0xa\x01\x90V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`@Q\x7F\x9F\x9F\xB44WGI\xB7DX\xE0\xDD\xC3\xCF_\xD5\xBD\xB1\xB0\t\xC8a^\x82V\x06\xB57$Wo5\x90`\0\x90\xA1V[\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\x000\x81\x03a\0\xEBWc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x01=WcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\x01\x8AW`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\x01\x88W=`\0\x82>=\x81\xFD[P[PPPPV[`\0\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\x000\x81\x14a\x01\xC8Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91PP\x90V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x02\x04W`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x1BW`\0\x80\xFD[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x028W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02LW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02[W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x02mW`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V\xFE\xA2dipfsX\"\x12 \xC0_GN:KSv\n\n\x1Fs\x98xg\xACN\xD4\x98\xFDh\x9E\x93\x88h?\x84r\xA9{i/dsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static DUMMY_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c2\xE4:\x11\x14a\09W\x80cO\x1E\xF2\x86\x14a\0PW\x80cR\xD1\x90-\x14a\0cW[`\0\x80\xFD[4\x80\x15a\0EW`\0\x80\xFD[Pa\0Na\0\x8AV[\0[a\0Na\0^6`\x04a\x01\xEFV[a\0\xB5V[4\x80\x15a\0oW`\0\x80\xFD[Pa\0xa\x01\x90V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[`@Q\x7F\x9F\x9F\xB44WGI\xB7DX\xE0\xDD\xC3\xCF_\xD5\xBD\xB1\xB0\t\xC8a^\x82V\x06\xB57$Wo5\x90`\0\x90\xA1V[\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\x000\x81\x03a\0\xEBWc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x01=WcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\x01\x8AW`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\x01\x88W=`\0\x82>=\x81\xFD[P[PPPPV[`\0\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\x000\x81\x14a\x01\xC8Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91PP\x90V[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x02\x04W`\0\x80\xFD[\x835`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x1BW`\0\x80\xFD[\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x028W`\0\x80\xFD[\x81\x86\x01\x91P\x86`\x1F\x83\x01\x12a\x02LW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02[W`\0\x80\xFD[\x87` \x82\x85\x01\x01\x11\x15a\x02mW`\0\x80\xFD[` \x83\x01\x94P\x80\x93PPPP\x92P\x92P\x92V\xFE\xA2dipfsX\"\x12 \xC0_GN:KSv\n\n\x1Fs\x98xg\xACN\xD4\x98\xFDh\x9E\x93\x88h?\x84r\xA9{i/dsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static DUMMY_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Dummy(::ethers::contract::Contract); - impl ::core::clone::Clone for Dummy { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for Dummy { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for Dummy { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for Dummy { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Dummy)) - .field(&self.address()) - .finish() - } - } - impl Dummy { - /// 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(), - DUMMY_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( - DUMMY_ABI.clone(), - DUMMY_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `dummy` (0x32e43a11) function - pub fn dummy(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([50, 228, 58, 17], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `proxiableUUID` (0x52d1902d) function - pub fn proxiable_uuid(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([82, 209, 144, 45], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function - pub fn upgrade_to_and_call( - &self, - new_implementation: ::ethers::core::types::Address, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([79, 30, 242, 134], (new_implementation, data)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Done` event - pub fn done_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DoneFilter> { - self.0.event() - } - ///Gets the contract's `Upgraded` event - pub fn upgraded_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradedFilter> { - 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, DummyEvents> { - self.0 - .event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> for Dummy { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `UnauthorizedCallContext` with signature `UnauthorizedCallContext()` and selector `0x9f03a026` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "UnauthorizedCallContext", abi = "UnauthorizedCallContext()")] - pub struct UnauthorizedCallContext; - ///Custom Error type `UpgradeFailed` with signature `UpgradeFailed()` and selector `0x55299b49` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "UpgradeFailed", abi = "UpgradeFailed()")] - pub struct UpgradeFailed; - ///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 DummyErrors { - UnauthorizedCallContext(UnauthorizedCallContext), - UpgradeFailed(UpgradeFailed), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for DummyErrors { - 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::UnauthorizedCallContext(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::UpgradeFailed(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DummyErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::UnauthorizedCallContext(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::UpgradeFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for DummyErrors { - 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 DummyErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::UnauthorizedCallContext(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradeFailed(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for DummyErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for DummyErrors { - fn from(value: UnauthorizedCallContext) -> Self { - Self::UnauthorizedCallContext(value) - } - } - impl ::core::convert::From for DummyErrors { - fn from(value: UpgradeFailed) -> Self { - Self::UpgradeFailed(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Done", abi = "Done()")] - pub struct DoneFilter; - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] - pub struct UpgradedFilter { - #[ethevent(indexed)] - pub implementation: ::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 DummyEvents { - DoneFilter(DoneFilter), - UpgradedFilter(UpgradedFilter), - } - impl ::ethers::contract::EthLogDecode for DummyEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = DoneFilter::decode_log(log) { - return Ok(DummyEvents::DoneFilter(decoded)); - } - if let Ok(decoded) = UpgradedFilter::decode_log(log) { - return Ok(DummyEvents::UpgradedFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for DummyEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DoneFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradedFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for DummyEvents { - fn from(value: DoneFilter) -> Self { - Self::DoneFilter(value) - } - } - impl ::core::convert::From for DummyEvents { - fn from(value: UpgradedFilter) -> Self { - Self::UpgradedFilter(value) - } - } - ///Container type for all input parameters for the `dummy` function with signature `dummy()` and selector `0x32e43a11` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "dummy", abi = "dummy()")] - pub struct DummyCall; - ///Container type for all input parameters for the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] - pub struct ProxiableUUIDCall; - ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] - pub struct UpgradeToAndCallCall { - pub new_implementation: ::ethers::core::types::Address, - 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 DummyCalls { - Dummy(DummyCall), - ProxiableUUID(ProxiableUUIDCall), - UpgradeToAndCall(UpgradeToAndCallCall), - } - impl ::ethers::core::abi::AbiDecode for DummyCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Dummy(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::ProxiableUUID(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::UpgradeToAndCall(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for DummyCalls { - fn encode(self) -> Vec { - match self { - Self::Dummy(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ProxiableUUID(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::UpgradeToAndCall(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for DummyCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Dummy(element) => ::core::fmt::Display::fmt(element, f), - Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for DummyCalls { - fn from(value: DummyCall) -> Self { - Self::Dummy(value) - } - } - impl ::core::convert::From for DummyCalls { - fn from(value: ProxiableUUIDCall) -> Self { - Self::ProxiableUUID(value) - } - } - impl ::core::convert::From for DummyCalls { - fn from(value: UpgradeToAndCallCall) -> Self { - Self::UpgradeToAndCall(value) - } - } - ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ProxiableUUIDReturn(pub [u8; 32]); -} diff --git a/xmtp_id/src/bindings/erc1271.rs b/xmtp_id/src/bindings/erc1271.rs deleted file mode 100644 index 1ef23f45c..000000000 --- a/xmtp_id/src/bindings/erc1271.rs +++ /dev/null @@ -1,463 +0,0 @@ -pub use erc1271::*; -/// 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 erc1271 { - #[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("domainSeparator"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("domainSeparator"), - 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("eip712Domain"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("eip712Domain"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("fields"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(1usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes1"), - ), - }, - ::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("version"), - 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("chainId"), - 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("verifyingContract"), - 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("salt"), - 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("extensions"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::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("isValidSignature"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isValidSignature"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("hash"), - 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("signature"), - 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("result"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - },], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("replaySafeHash"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("replaySafeHash"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("hash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - },], - 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, - },], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ERC1271_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct ERC1271(::ethers::contract::Contract); - impl ::core::clone::Clone for ERC1271 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ERC1271 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ERC1271 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ERC1271 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ERC1271)) - .field(&self.address()) - .finish() - } - } - impl ERC1271 { - /// 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(), - ERC1271_ABI.clone(), - client, - )) - } - ///Calls the contract's `domainSeparator` (0xf698da25) function - pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([246, 152, 218, 37], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `eip712Domain` (0x84b0196e) function - pub fn eip_712_domain( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ( - [u8; 1], - ::std::string::String, - ::std::string::String, - ::ethers::core::types::U256, - ::ethers::core::types::Address, - [u8; 32], - ::std::vec::Vec<::ethers::core::types::U256>, - ), - > { - self.0 - .method_hash([132, 176, 25, 110], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isValidSignature` (0x1626ba7e) function - pub fn is_valid_signature( - &self, - hash: [u8; 32], - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([22, 38, 186, 126], (hash, signature)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `replaySafeHash` (0xce1506be) function - pub fn replay_safe_hash( - &self, - hash: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([206, 21, 6, 190], hash) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> for ERC1271 { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "domainSeparator", abi = "domainSeparator()")] - pub struct DomainSeparatorCall; - ///Container type for all input parameters for the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "eip712Domain", abi = "eip712Domain()")] - pub struct Eip712DomainCall; - ///Container type for all input parameters for the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isValidSignature", abi = "isValidSignature(bytes32,bytes)")] - pub struct IsValidSignatureCall { - pub hash: [u8; 32], - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "replaySafeHash", abi = "replaySafeHash(bytes32)")] - pub struct ReplaySafeHashCall { - pub hash: [u8; 32], - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash, - )] - pub enum ERC1271Calls { - DomainSeparator(DomainSeparatorCall), - Eip712Domain(Eip712DomainCall), - IsValidSignature(IsValidSignatureCall), - ReplaySafeHash(ReplaySafeHashCall), - } - impl ::ethers::core::abi::AbiDecode for ERC1271Calls { - 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::Eip712Domain(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsValidSignature(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ReplaySafeHash(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ERC1271Calls { - fn encode(self) -> Vec { - match self { - Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Eip712Domain(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsValidSignature(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ReplaySafeHash(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for ERC1271Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), - Self::Eip712Domain(element) => ::core::fmt::Display::fmt(element, f), - Self::IsValidSignature(element) => ::core::fmt::Display::fmt(element, f), - Self::ReplaySafeHash(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for ERC1271Calls { - fn from(value: DomainSeparatorCall) -> Self { - Self::DomainSeparator(value) - } - } - impl ::core::convert::From for ERC1271Calls { - fn from(value: Eip712DomainCall) -> Self { - Self::Eip712Domain(value) - } - } - impl ::core::convert::From for ERC1271Calls { - fn from(value: IsValidSignatureCall) -> Self { - Self::IsValidSignature(value) - } - } - impl ::core::convert::From for ERC1271Calls { - fn from(value: ReplaySafeHashCall) -> Self { - Self::ReplaySafeHash(value) - } - } - ///Container type for all return fields from the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` - #[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 `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct Eip712DomainReturn { - pub fields: [u8; 1], - pub name: ::std::string::String, - pub version: ::std::string::String, - pub chain_id: ::ethers::core::types::U256, - pub verifying_contract: ::ethers::core::types::Address, - pub salt: [u8; 32], - pub extensions: ::std::vec::Vec<::ethers::core::types::U256>, - } - ///Container type for all return fields from the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsValidSignatureReturn { - pub result: [u8; 4], - } - ///Container type for all return fields from the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ReplaySafeHashReturn(pub [u8; 32]); -} diff --git a/xmtp_id/src/bindings/erc1271_input_generator.rs b/xmtp_id/src/bindings/erc1271_input_generator.rs deleted file mode 100644 index c592e1146..000000000 --- a/xmtp_id/src/bindings/erc1271_input_generator.rs +++ /dev/null @@ -1,316 +0,0 @@ -pub use erc1271_input_generator::*; -/// 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 erc1271_input_generator { - #[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("account"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("contract CoinbaseSmartWallet",), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("hash"), - 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("accountFactory"), - 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("factoryCalldata"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - }), - functions: ::std::collections::BTreeMap::new(), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("AccountDeploymentFailed"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("AccountDeploymentFailed",), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("ReturnedAddressDoesNotMatchAccount"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "ReturnedAddressDoesNotMatchAccount", - ), - 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("returned"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - },], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static ERC1271INPUTGENERATOR_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x03\xAB8\x03\x80a\x03\xAB\x839\x81\x01`@\x81\x90Ra\0/\x91a\x02tV[`\0a\0=\x85\x85\x85\x85a\0IV[\x90P\x80`\x80R` `\x80\xF3[`\0`\x01`\x01`\xA0\x1B\x03\x85\x16;\x15a\0\xCBW`@Qcg\n\x83_`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c\xCE\x15\x06\xBE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\0\xA0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\0\xC4\x91\x90a\x03QV[\x90Pa\x02\x1AV[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\0\xE6\x91\x90a\x03jV[`\0`@Q\x80\x83\x03\x81`\0\x86Z\xF1\x91PP=\x80`\0\x81\x14a\x01#W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01(V[``\x91P[P\x91P\x91P\x81a\x01JW`@Qb\x94UU`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0\x81\x80` \x01\x90Q\x81\x01\x90a\x01`\x91\x90a\x03\x86V[\x90P\x87`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x14a\x01\xABW`@Qc\xC8bC\x83`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x80\x8A\x16`\x04\x83\x01R\x82\x16`$\x82\x01R`D\x01`@Q\x80\x91\x03\x90\xFD[`@Qcg\n\x83_`\xE1\x1B\x81R`\x04\x81\x01\x88\x90R`\x01`\x01`\xA0\x1B\x03\x89\x16\x90c\xCE\x15\x06\xBE\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x01\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\x14\x91\x90a\x03QV[\x93PPPP[\x94\x93PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x027W`\0\x80\xFD[PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15a\x02kW\x81\x81\x01Q\x83\x82\x01R` \x01a\x02SV[PP`\0\x91\x01RV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x02\x8AW`\0\x80\xFD[\x84Qa\x02\x95\x81a\x02\"V[` \x86\x01Q`@\x87\x01Q\x91\x95P\x93Pa\x02\xAD\x81a\x02\"V[``\x86\x01Q\x90\x92P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a\x02\xCAW`\0\x80\xFD[\x81\x87\x01\x91P\x87`\x1F\x83\x01\x12a\x02\xDEW`\0\x80\xFD[\x81Q\x81\x81\x11\x15a\x02\xF0Wa\x02\xF0a\x02:V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x03\x18Wa\x03\x18a\x02:V[\x81`@R\x82\x81R\x8A` \x84\x87\x01\x01\x11\x15a\x031W`\0\x80\xFD[a\x03B\x83` \x83\x01` \x88\x01a\x02PV[\x97\x9A\x96\x99P\x94\x97PPPPPPV[`\0` \x82\x84\x03\x12\x15a\x03cW`\0\x80\xFD[PQ\x91\x90PV[`\0\x82Qa\x03|\x81\x84` \x87\x01a\x02PV[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x03\x98W`\0\x80\xFD[\x81Qa\x03\xA3\x81a\x02\"V[\x93\x92PPPV\xFE"; - /// The bytecode of the contract. - pub static ERC1271INPUTGENERATOR_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x86\x8Dv\xF4p\xB7z\x1B/?\x11U\xB1\xCF\x83\xC7\xDA\x8A\xA4\x93\xAF\x03\xF9\x84;\xE8\x86\xD5\xCC\xFAC\x10dsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static ERC1271INPUTGENERATOR_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct ERC1271InputGenerator(::ethers::contract::Contract); - impl ::core::clone::Clone for ERC1271InputGenerator { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for ERC1271InputGenerator { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for ERC1271InputGenerator { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for ERC1271InputGenerator { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(ERC1271InputGenerator)) - .field(&self.address()) - .finish() - } - } - impl ERC1271InputGenerator { - /// 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(), - ERC1271INPUTGENERATOR_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( - ERC1271INPUTGENERATOR_ABI.clone(), - ERC1271INPUTGENERATOR_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 ERC1271InputGenerator - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `AccountDeploymentFailed` with signature `AccountDeploymentFailed()` and selector `0x128aaaa0` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "AccountDeploymentFailed", abi = "AccountDeploymentFailed()")] - pub struct AccountDeploymentFailed; - ///Custom Error type `ReturnedAddressDoesNotMatchAccount` with signature `ReturnedAddressDoesNotMatchAccount(address,address)` and selector `0xc8624383` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "ReturnedAddressDoesNotMatchAccount", - abi = "ReturnedAddressDoesNotMatchAccount(address,address)" - )] - pub struct ReturnedAddressDoesNotMatchAccount { - pub account: ::ethers::core::types::Address, - pub returned: ::ethers::core::types::Address, - } - ///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 ERC1271InputGeneratorErrors { - AccountDeploymentFailed(AccountDeploymentFailed), - ReturnedAddressDoesNotMatchAccount(ReturnedAddressDoesNotMatchAccount), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for ERC1271InputGeneratorErrors { - 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::AccountDeploymentFailed(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ReturnedAddressDoesNotMatchAccount(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for ERC1271InputGeneratorErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::AccountDeploymentFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ReturnedAddressDoesNotMatchAccount(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for ERC1271InputGeneratorErrors { - 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 ERC1271InputGeneratorErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AccountDeploymentFailed(element) => ::core::fmt::Display::fmt(element, f), - Self::ReturnedAddressDoesNotMatchAccount(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for ERC1271InputGeneratorErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for ERC1271InputGeneratorErrors { - fn from(value: AccountDeploymentFailed) -> Self { - Self::AccountDeploymentFailed(value) - } - } - impl ::core::convert::From for ERC1271InputGeneratorErrors { - fn from(value: ReturnedAddressDoesNotMatchAccount) -> Self { - Self::ReturnedAddressDoesNotMatchAccount(value) - } - } -} diff --git a/xmtp_id/src/bindings/fcl_ecdsa.rs b/xmtp_id/src/bindings/fcl_ecdsa.rs deleted file mode 100644 index e999c8acc..000000000 --- a/xmtp_id/src/bindings/fcl_ecdsa.rs +++ /dev/null @@ -1,119 +0,0 @@ -pub use fcl_ecdsa::*; -/// 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 fcl_ecdsa { - #[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 FCL_ECDSA_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xA4E\x8B\xE3\0\xB4|\xB4\x0FK\x1F\xEF\xCB\xC7\x1AO\xB6\x13\"\t\xE7\x1954d\xB9\xF0\xFA\xE4_d&dsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static FCL_ECDSA_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xA4E\x8B\xE3\0\xB4|\xB4\x0FK\x1F\xEF\xCB\xC7\x1AO\xB6\x13\"\t\xE7\x1954d\xB9\xF0\xFA\xE4_d&dsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static FCL_ECDSA_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct FCL_ecdsa(::ethers::contract::Contract); - impl ::core::clone::Clone for FCL_ecdsa { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for FCL_ecdsa { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for FCL_ecdsa { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for FCL_ecdsa { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(FCL_ecdsa)) - .field(&self.address()) - .finish() - } - } - impl FCL_ecdsa { - /// 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(), - FCL_ECDSA_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( - FCL_ECDSA_ABI.clone(), - FCL_ECDSA_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 FCL_ecdsa { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/xmtp_id/src/bindings/fcl_elliptic_zz.rs b/xmtp_id/src/bindings/fcl_elliptic_zz.rs deleted file mode 100644 index 17bf6501d..000000000 --- a/xmtp_id/src/bindings/fcl_elliptic_zz.rs +++ /dev/null @@ -1,121 +0,0 @@ -pub use fcl_elliptic_zz::*; -/// 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 fcl_elliptic_zz { - #[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 FCL_ELLIPTIC_ZZ_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEF\x9E\x9EP\x8F\x1E\xE66\x0F\xCC\xC9\x19\x81\xA97u\xADD\xFCPbe\xDF#=\xC0|\xD7\x9A\x1D'VdsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static FCL_ELLIPTIC_ZZ_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xEF\x9E\x9EP\x8F\x1E\xE66\x0F\xCC\xC9\x19\x81\xA97u\xADD\xFCPbe\xDF#=\xC0|\xD7\x9A\x1D'VdsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static FCL_ELLIPTIC_ZZ_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct FCL_Elliptic_ZZ(::ethers::contract::Contract); - impl ::core::clone::Clone for FCL_Elliptic_ZZ { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for FCL_Elliptic_ZZ { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for FCL_Elliptic_ZZ { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for FCL_Elliptic_ZZ { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(FCL_Elliptic_ZZ)) - .field(&self.address()) - .finish() - } - } - impl FCL_Elliptic_ZZ { - /// 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(), - FCL_ELLIPTIC_ZZ_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( - FCL_ELLIPTIC_ZZ_ABI.clone(), - FCL_ELLIPTIC_ZZ_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 FCL_Elliptic_ZZ - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/xmtp_id/src/bindings/helpers.rs b/xmtp_id/src/bindings/helpers.rs deleted file mode 100644 index 9b1f08d06..000000000 --- a/xmtp_id/src/bindings/helpers.rs +++ /dev/null @@ -1,70 +0,0 @@ -pub use helpers::*; -/// 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 helpers { - #[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 HELPERS_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct Helpers(::ethers::contract::Contract); - impl ::core::clone::Clone for Helpers { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for Helpers { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for Helpers { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for Helpers { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Helpers)) - .field(&self.address()) - .finish() - } - } - impl Helpers { - /// 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(), - HELPERS_ABI.clone(), - client, - )) - } - } - impl From<::ethers::contract::Contract> for Helpers { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/xmtp_id/src/bindings/i_aggregator.rs b/xmtp_id/src/bindings/i_aggregator.rs deleted file mode 100644 index 14186a7fb..000000000 --- a/xmtp_id/src/bindings/i_aggregator.rs +++ /dev/null @@ -1,384 +0,0 @@ -pub use i_aggregator::*; -/// 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_aggregator { - 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("aggregateSignatures"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("aggregateSignatures",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOps"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ],), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation[]"), - ), - },], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("aggregatedSignature",), - 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("validateSignatures"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validateSignatures"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOps"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ],), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("signature"), - 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::View, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("validateUserOpSignature"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validateUserOpSignature",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOp"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ],), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation"), - ), - },], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("sigForUserOp"), - 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, - },], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IAGGREGATOR_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct IAggregator(::ethers::contract::Contract); - impl ::core::clone::Clone for IAggregator { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IAggregator { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IAggregator { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IAggregator { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IAggregator)) - .field(&self.address()) - .finish() - } - } - impl IAggregator { - /// 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(), - IAGGREGATOR_ABI.clone(), - client, - )) - } - ///Calls the contract's `aggregateSignatures` (0x275e2d79) function - pub fn aggregate_signatures( - &self, - user_ops: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([39, 94, 45, 121], user_ops) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `validateSignatures` (0xe3563a4f) function - pub fn validate_signatures( - &self, - user_ops: ::std::vec::Vec, - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([227, 86, 58, 79], (user_ops, signature)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `validateUserOpSignature` (0x64c530cd) function - pub fn validate_user_op_signature( - &self, - user_op: UserOperation, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([100, 197, 48, 205], (user_op,)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> for IAggregator { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `aggregateSignatures` function with signature `aggregateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])` and selector `0x275e2d79` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "aggregateSignatures", - abi = "aggregateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])" - )] - pub struct AggregateSignaturesCall { - pub user_ops: ::std::vec::Vec, - } - ///Container type for all input parameters for the `validateSignatures` function with signature `validateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes)` and selector `0xe3563a4f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "validateSignatures", - abi = "validateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes)" - )] - pub struct ValidateSignaturesCall { - pub user_ops: ::std::vec::Vec, - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `validateUserOpSignature` function with signature `validateUserOpSignature((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x64c530cd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "validateUserOpSignature", - abi = "validateUserOpSignature((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" - )] - pub struct ValidateUserOpSignatureCall { - pub user_op: UserOperation, - } - ///Container type for all of the contract's call - #[derive( - Clone, - ::ethers::contract::EthAbiType, - serde::Serialize, - serde::Deserialize, - Debug, - PartialEq, - Eq, - Hash, - )] - pub enum IAggregatorCalls { - AggregateSignatures(AggregateSignaturesCall), - ValidateSignatures(ValidateSignaturesCall), - ValidateUserOpSignature(ValidateUserOpSignatureCall), - } - impl ::ethers::core::abi::AbiDecode for IAggregatorCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::AggregateSignatures(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ValidateSignatures(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ValidateUserOpSignature(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IAggregatorCalls { - fn encode(self) -> Vec { - match self { - Self::AggregateSignatures(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ValidateSignatures(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ValidateUserOpSignature(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for IAggregatorCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AggregateSignatures(element) => ::core::fmt::Display::fmt(element, f), - Self::ValidateSignatures(element) => ::core::fmt::Display::fmt(element, f), - Self::ValidateUserOpSignature(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for IAggregatorCalls { - fn from(value: AggregateSignaturesCall) -> Self { - Self::AggregateSignatures(value) - } - } - impl ::core::convert::From for IAggregatorCalls { - fn from(value: ValidateSignaturesCall) -> Self { - Self::ValidateSignatures(value) - } - } - impl ::core::convert::From for IAggregatorCalls { - fn from(value: ValidateUserOpSignatureCall) -> Self { - Self::ValidateUserOpSignature(value) - } - } - ///Container type for all return fields from the `aggregateSignatures` function with signature `aggregateSignatures((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[])` and selector `0x275e2d79` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct AggregateSignaturesReturn { - pub aggregated_signature: ::ethers::core::types::Bytes, - } - ///Container type for all return fields from the `validateUserOpSignature` function with signature `validateUserOpSignature((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x64c530cd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ValidateUserOpSignatureReturn { - pub sig_for_user_op: ::ethers::core::types::Bytes, - } -} diff --git a/xmtp_id/src/bindings/i_entry_point.rs b/xmtp_id/src/bindings/i_entry_point.rs deleted file mode 100644 index 0d1866279..000000000 --- a/xmtp_id/src/bindings/i_entry_point.rs +++ /dev/null @@ -1,2546 +0,0 @@ -pub use i_entry_point::*; -/// 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_entry_point { - 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("addStake"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("addStake"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_unstakeDelaySec"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint32"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::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::borrow::ToOwned::to_owned("account"), - 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("depositTo"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("depositTo"), - 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"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getDepositInfo"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getDepositInfo"), - 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"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("info"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(112usize), - ::ethers::core::abi::ethabi::ParamType::Bool, - ::ethers::core::abi::ethabi::ParamType::Uint(112usize), - ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IStakeManager.DepositInfo", - ), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("getNonce"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getNonce"), - 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("key"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 192usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint192"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("nonce"), - 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("getSenderAddress"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getSenderAddress"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("initCode"), - 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("getUserOpHash"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getUserOpHash"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOp"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation"), - ), - }, - ], - 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("handleAggregatedOps"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned( - "handleAggregatedOps", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("opsPerAggregator"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IEntryPoint.UserOpsPerAggregator[]", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("beneficiary"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("handleOps"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("handleOps"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("ops"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation[]"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("beneficiary"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("incrementNonce"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("incrementNonce"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 192usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint192"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("simulateHandleOp"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("simulateHandleOp"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("op"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("target"), - 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("targetCallData"), - 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("simulateValidation"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("simulateValidation"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOp"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("unlockStake"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("unlockStake"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("withdrawStake"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdrawStake"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("withdrawAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("withdrawTo"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdrawTo"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("withdrawAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("withdrawAmount"), - 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("AccountDeployed"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("AccountDeployed"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("userOpHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("sender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("factory"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("paymaster"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("BeforeExecution"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("BeforeExecution"), - inputs: ::std::vec![], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Deposited"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Deposited"), - 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("totalDeposit"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("SignatureAggregatorChanged"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "SignatureAggregatorChanged", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("aggregator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("StakeLocked"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("StakeLocked"), - 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("totalStaked"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("unstakeDelaySec"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("StakeUnlocked"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("StakeUnlocked"), - 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("withdrawTime"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), - 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("withdrawAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::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("UserOperationEvent"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("UserOperationEvent"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("userOpHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("sender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("paymaster"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("success"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("actualGasCost"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("actualGasUsed"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("UserOperationRevertReason"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "UserOperationRevertReason", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("userOpHash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, - ), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("sender"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("nonce"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("revertReason"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("Withdrawn"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Withdrawn"), - 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("withdrawAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::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("ExecutionResult"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("ExecutionResult"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("preOpGas"), - 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("paid"), - 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("validAfter"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint48"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("validUntil"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint48"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("targetSuccess"), - 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("targetResult"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("FailedOp"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("FailedOp"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("opIndex"), - 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("reason"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("SenderAddressResult"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "SenderAddressResult", - ), - 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"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("SignatureValidationFailed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "SignatureValidationFailed", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("aggregator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ValidationResult"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("ValidationResult"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("returnInfo"), - 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::Bool, - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IEntryPoint.ReturnInfo", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("senderInfo"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IStakeManager.StakeInfo", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("factoryInfo"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IStakeManager.StakeInfo", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("paymasterInfo"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IStakeManager.StakeInfo", - ), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("ValidationResultWithAggregation"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "ValidationResultWithAggregation", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("returnInfo"), - 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::Bool, - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IEntryPoint.ReturnInfo", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("senderInfo"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IStakeManager.StakeInfo", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("factoryInfo"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IStakeManager.StakeInfo", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("paymasterInfo"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IStakeManager.StakeInfo", - ), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("aggregatorInfo"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ], - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IEntryPoint.AggregatorStakeInfo", - ), - ), - }, - ], - }, - ], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static IENTRYPOINT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct IEntryPoint(::ethers::contract::Contract); - impl ::core::clone::Clone for IEntryPoint { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IEntryPoint { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IEntryPoint { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IEntryPoint { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IEntryPoint)) - .field(&self.address()) - .finish() - } - } - impl IEntryPoint { - /// 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(), - IENTRYPOINT_ABI.clone(), - client, - )) - } - ///Calls the contract's `addStake` (0x0396cb60) function - pub fn add_stake( - &self, - unstake_delay_sec: u32, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([3, 150, 203, 96], unstake_delay_sec) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `depositTo` (0xb760faf9) function - pub fn deposit_to( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([183, 96, 250, 249], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getDepositInfo` (0x5287ce12) function - pub fn get_deposit_info( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([82, 135, 206, 18], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getNonce` (0x35567e1a) function - pub fn get_nonce( - &self, - sender: ::ethers::core::types::Address, - key: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([53, 86, 126, 26], (sender, key)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getSenderAddress` (0x9b249f69) function - pub fn get_sender_address( - &self, - init_code: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([155, 36, 159, 105], init_code) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getUserOpHash` (0xa6193531) function - pub fn get_user_op_hash( - &self, - user_op: UserOperation, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([166, 25, 53, 49], (user_op,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `handleAggregatedOps` (0x4b1d7cf5) function - pub fn handle_aggregated_ops( - &self, - ops_per_aggregator: ::std::vec::Vec, - beneficiary: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([75, 29, 124, 245], (ops_per_aggregator, beneficiary)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `handleOps` (0x1fad948c) function - pub fn handle_ops( - &self, - ops: ::std::vec::Vec, - beneficiary: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([31, 173, 148, 140], (ops, beneficiary)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `incrementNonce` (0x0bd28e3b) function - pub fn increment_nonce( - &self, - key: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([11, 210, 142, 59], key) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `simulateHandleOp` (0xd6383f94) function - pub fn simulate_handle_op( - &self, - op: UserOperation, - target: ::ethers::core::types::Address, - target_call_data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([214, 56, 63, 148], (op, target, target_call_data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `simulateValidation` (0xee219423) function - pub fn simulate_validation( - &self, - user_op: UserOperation, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([238, 33, 148, 35], (user_op,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `unlockStake` (0xbb9fe6bf) function - pub fn unlock_stake(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([187, 159, 230, 191], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `withdrawStake` (0xc23a5cea) function - pub fn withdraw_stake( - &self, - withdraw_address: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([194, 58, 92, 234], withdraw_address) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `withdrawTo` (0x205c2878) function - pub fn withdraw_to( - &self, - withdraw_address: ::ethers::core::types::Address, - withdraw_amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([32, 92, 40, 120], (withdraw_address, withdraw_amount)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `AccountDeployed` event - pub fn account_deployed_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AccountDeployedFilter> - { - self.0.event() - } - ///Gets the contract's `BeforeExecution` event - pub fn before_execution_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, BeforeExecutionFilter> - { - self.0.event() - } - ///Gets the contract's `Deposited` event - pub fn deposited_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DepositedFilter> { - self.0.event() - } - ///Gets the contract's `SignatureAggregatorChanged` event - pub fn signature_aggregator_changed_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - SignatureAggregatorChangedFilter, - > { - self.0.event() - } - ///Gets the contract's `StakeLocked` event - pub fn stake_locked_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeLockedFilter> - { - self.0.event() - } - ///Gets the contract's `StakeUnlocked` event - pub fn stake_unlocked_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeUnlockedFilter> - { - self.0.event() - } - ///Gets the contract's `StakeWithdrawn` event - pub fn stake_withdrawn_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeWithdrawnFilter> - { - self.0.event() - } - ///Gets the contract's `UserOperationEvent` event - pub fn user_operation_event_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UserOperationEventFilter> - { - self.0.event() - } - ///Gets the contract's `UserOperationRevertReason` event - pub fn user_operation_revert_reason_filter( - &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - UserOperationRevertReasonFilter, - > { - self.0.event() - } - ///Gets the contract's `Withdrawn` event - pub fn withdrawn_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, WithdrawnFilter> { - 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, IEntryPointEvents> - { - self.0 - .event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> for IEntryPoint { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `ExecutionResult` with signature `ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)` and selector `0x8b7ac980` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "ExecutionResult", - abi = "ExecutionResult(uint256,uint256,uint48,uint48,bool,bytes)" - )] - pub struct ExecutionResult { - pub pre_op_gas: ::ethers::core::types::U256, - pub paid: ::ethers::core::types::U256, - pub valid_after: u64, - pub valid_until: u64, - pub target_success: bool, - pub target_result: ::ethers::core::types::Bytes, - } - ///Custom Error type `FailedOp` with signature `FailedOp(uint256,string)` and selector `0x220266b6` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "FailedOp", abi = "FailedOp(uint256,string)")] - pub struct FailedOp { - pub op_index: ::ethers::core::types::U256, - pub reason: ::std::string::String, - } - ///Custom Error type `SenderAddressResult` with signature `SenderAddressResult(address)` and selector `0x6ca7b806` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "SenderAddressResult", abi = "SenderAddressResult(address)")] - pub struct SenderAddressResult { - pub sender: ::ethers::core::types::Address, - } - ///Custom Error type `SignatureValidationFailed` with signature `SignatureValidationFailed(address)` and selector `0x86a9f750` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "SignatureValidationFailed", - abi = "SignatureValidationFailed(address)" - )] - pub struct SignatureValidationFailed { - pub aggregator: ::ethers::core::types::Address, - } - ///Custom Error type `ValidationResult` with signature `ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))` and selector `0xe0cff05f` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "ValidationResult", - abi = "ValidationResult((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256))" - )] - pub struct ValidationResult { - pub return_info: ( - ::ethers::core::types::U256, - ::ethers::core::types::U256, - bool, - u64, - u64, - ::ethers::core::types::Bytes, - ), - pub sender_info: (::ethers::core::types::U256, ::ethers::core::types::U256), - pub factory_info: (::ethers::core::types::U256, ::ethers::core::types::U256), - pub paymaster_info: (::ethers::core::types::U256, ::ethers::core::types::U256), - } - ///Custom Error type `ValidationResultWithAggregation` with signature `ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))` and selector `0xfaecb4e4` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "ValidationResultWithAggregation", - abi = "ValidationResultWithAggregation((uint256,uint256,bool,uint48,uint48,bytes),(uint256,uint256),(uint256,uint256),(uint256,uint256),(address,(uint256,uint256)))" - )] - pub struct ValidationResultWithAggregation { - pub return_info: ( - ::ethers::core::types::U256, - ::ethers::core::types::U256, - bool, - u64, - u64, - ::ethers::core::types::Bytes, - ), - pub sender_info: (::ethers::core::types::U256, ::ethers::core::types::U256), - pub factory_info: (::ethers::core::types::U256, ::ethers::core::types::U256), - pub paymaster_info: (::ethers::core::types::U256, ::ethers::core::types::U256), - pub aggregator_info: ( - ::ethers::core::types::Address, - (::ethers::core::types::U256, ::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 IEntryPointErrors { - ExecutionResult(ExecutionResult), - FailedOp(FailedOp), - SenderAddressResult(SenderAddressResult), - SignatureValidationFailed(SignatureValidationFailed), - ValidationResult(ValidationResult), - ValidationResultWithAggregation(ValidationResultWithAggregation), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for IEntryPointErrors { - 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::ExecutionResult(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::FailedOp(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SenderAddressResult(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SignatureValidationFailed(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::ValidationResult(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ValidationResultWithAggregation(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IEntryPointErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::ExecutionResult(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::FailedOp(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SenderAddressResult(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SignatureValidationFailed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ValidationResult(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ValidationResultWithAggregation(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for IEntryPointErrors { - 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 IEntryPointErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ExecutionResult(element) => ::core::fmt::Display::fmt(element, f), - Self::FailedOp(element) => ::core::fmt::Display::fmt(element, f), - Self::SenderAddressResult(element) => ::core::fmt::Display::fmt(element, f), - Self::SignatureValidationFailed(element) => ::core::fmt::Display::fmt(element, f), - Self::ValidationResult(element) => ::core::fmt::Display::fmt(element, f), - Self::ValidationResultWithAggregation(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for IEntryPointErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for IEntryPointErrors { - fn from(value: ExecutionResult) -> Self { - Self::ExecutionResult(value) - } - } - impl ::core::convert::From for IEntryPointErrors { - fn from(value: FailedOp) -> Self { - Self::FailedOp(value) - } - } - impl ::core::convert::From for IEntryPointErrors { - fn from(value: SenderAddressResult) -> Self { - Self::SenderAddressResult(value) - } - } - impl ::core::convert::From for IEntryPointErrors { - fn from(value: SignatureValidationFailed) -> Self { - Self::SignatureValidationFailed(value) - } - } - impl ::core::convert::From for IEntryPointErrors { - fn from(value: ValidationResult) -> Self { - Self::ValidationResult(value) - } - } - impl ::core::convert::From for IEntryPointErrors { - fn from(value: ValidationResultWithAggregation) -> Self { - Self::ValidationResultWithAggregation(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent( - name = "AccountDeployed", - abi = "AccountDeployed(bytes32,address,address,address)" - )] - pub struct AccountDeployedFilter { - #[ethevent(indexed)] - pub user_op_hash: [u8; 32], - #[ethevent(indexed)] - pub sender: ::ethers::core::types::Address, - pub factory: ::ethers::core::types::Address, - pub paymaster: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "BeforeExecution", abi = "BeforeExecution()")] - pub struct BeforeExecutionFilter; - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Deposited", abi = "Deposited(address,uint256)")] - pub struct DepositedFilter { - #[ethevent(indexed)] - pub account: ::ethers::core::types::Address, - pub total_deposit: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent( - name = "SignatureAggregatorChanged", - abi = "SignatureAggregatorChanged(address)" - )] - pub struct SignatureAggregatorChangedFilter { - #[ethevent(indexed)] - pub aggregator: ::ethers::core::types::Address, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "StakeLocked", abi = "StakeLocked(address,uint256,uint256)")] - pub struct StakeLockedFilter { - #[ethevent(indexed)] - pub account: ::ethers::core::types::Address, - pub total_staked: ::ethers::core::types::U256, - pub unstake_delay_sec: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "StakeUnlocked", abi = "StakeUnlocked(address,uint256)")] - pub struct StakeUnlockedFilter { - #[ethevent(indexed)] - pub account: ::ethers::core::types::Address, - pub withdraw_time: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent( - name = "StakeWithdrawn", - abi = "StakeWithdrawn(address,address,uint256)" - )] - pub struct StakeWithdrawnFilter { - #[ethevent(indexed)] - pub account: ::ethers::core::types::Address, - pub withdraw_address: ::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 = "UserOperationEvent", - abi = "UserOperationEvent(bytes32,address,address,uint256,bool,uint256,uint256)" - )] - pub struct UserOperationEventFilter { - #[ethevent(indexed)] - pub user_op_hash: [u8; 32], - #[ethevent(indexed)] - pub sender: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub paymaster: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - pub success: bool, - pub actual_gas_cost: ::ethers::core::types::U256, - pub actual_gas_used: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent( - name = "UserOperationRevertReason", - abi = "UserOperationRevertReason(bytes32,address,uint256,bytes)" - )] - pub struct UserOperationRevertReasonFilter { - #[ethevent(indexed)] - pub user_op_hash: [u8; 32], - #[ethevent(indexed)] - pub sender: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - pub revert_reason: ::ethers::core::types::Bytes, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Withdrawn", abi = "Withdrawn(address,address,uint256)")] - pub struct WithdrawnFilter { - #[ethevent(indexed)] - pub account: ::ethers::core::types::Address, - pub withdraw_address: ::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 IEntryPointEvents { - AccountDeployedFilter(AccountDeployedFilter), - BeforeExecutionFilter(BeforeExecutionFilter), - DepositedFilter(DepositedFilter), - SignatureAggregatorChangedFilter(SignatureAggregatorChangedFilter), - StakeLockedFilter(StakeLockedFilter), - StakeUnlockedFilter(StakeUnlockedFilter), - StakeWithdrawnFilter(StakeWithdrawnFilter), - UserOperationEventFilter(UserOperationEventFilter), - UserOperationRevertReasonFilter(UserOperationRevertReasonFilter), - WithdrawnFilter(WithdrawnFilter), - } - impl ::ethers::contract::EthLogDecode for IEntryPointEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = AccountDeployedFilter::decode_log(log) { - return Ok(IEntryPointEvents::AccountDeployedFilter(decoded)); - } - if let Ok(decoded) = BeforeExecutionFilter::decode_log(log) { - return Ok(IEntryPointEvents::BeforeExecutionFilter(decoded)); - } - if let Ok(decoded) = DepositedFilter::decode_log(log) { - return Ok(IEntryPointEvents::DepositedFilter(decoded)); - } - if let Ok(decoded) = SignatureAggregatorChangedFilter::decode_log(log) { - return Ok(IEntryPointEvents::SignatureAggregatorChangedFilter(decoded)); - } - if let Ok(decoded) = StakeLockedFilter::decode_log(log) { - return Ok(IEntryPointEvents::StakeLockedFilter(decoded)); - } - if let Ok(decoded) = StakeUnlockedFilter::decode_log(log) { - return Ok(IEntryPointEvents::StakeUnlockedFilter(decoded)); - } - if let Ok(decoded) = StakeWithdrawnFilter::decode_log(log) { - return Ok(IEntryPointEvents::StakeWithdrawnFilter(decoded)); - } - if let Ok(decoded) = UserOperationEventFilter::decode_log(log) { - return Ok(IEntryPointEvents::UserOperationEventFilter(decoded)); - } - if let Ok(decoded) = UserOperationRevertReasonFilter::decode_log(log) { - return Ok(IEntryPointEvents::UserOperationRevertReasonFilter(decoded)); - } - if let Ok(decoded) = WithdrawnFilter::decode_log(log) { - return Ok(IEntryPointEvents::WithdrawnFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for IEntryPointEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AccountDeployedFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::BeforeExecutionFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::DepositedFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::SignatureAggregatorChangedFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::StakeLockedFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::StakeUnlockedFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::StakeWithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::UserOperationEventFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::UserOperationRevertReasonFilter(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::WithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for IEntryPointEvents { - fn from(value: AccountDeployedFilter) -> Self { - Self::AccountDeployedFilter(value) - } - } - impl ::core::convert::From for IEntryPointEvents { - fn from(value: BeforeExecutionFilter) -> Self { - Self::BeforeExecutionFilter(value) - } - } - impl ::core::convert::From for IEntryPointEvents { - fn from(value: DepositedFilter) -> Self { - Self::DepositedFilter(value) - } - } - impl ::core::convert::From for IEntryPointEvents { - fn from(value: SignatureAggregatorChangedFilter) -> Self { - Self::SignatureAggregatorChangedFilter(value) - } - } - impl ::core::convert::From for IEntryPointEvents { - fn from(value: StakeLockedFilter) -> Self { - Self::StakeLockedFilter(value) - } - } - impl ::core::convert::From for IEntryPointEvents { - fn from(value: StakeUnlockedFilter) -> Self { - Self::StakeUnlockedFilter(value) - } - } - impl ::core::convert::From for IEntryPointEvents { - fn from(value: StakeWithdrawnFilter) -> Self { - Self::StakeWithdrawnFilter(value) - } - } - impl ::core::convert::From for IEntryPointEvents { - fn from(value: UserOperationEventFilter) -> Self { - Self::UserOperationEventFilter(value) - } - } - impl ::core::convert::From for IEntryPointEvents { - fn from(value: UserOperationRevertReasonFilter) -> Self { - Self::UserOperationRevertReasonFilter(value) - } - } - impl ::core::convert::From for IEntryPointEvents { - fn from(value: WithdrawnFilter) -> Self { - Self::WithdrawnFilter(value) - } - } - ///Container type for all input parameters for the `addStake` function with signature `addStake(uint32)` and selector `0x0396cb60` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "addStake", abi = "addStake(uint32)")] - pub struct AddStakeCall { - pub unstake_delay_sec: u32, - } - ///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 account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `depositTo` function with signature `depositTo(address)` and selector `0xb760faf9` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "depositTo", abi = "depositTo(address)")] - pub struct DepositToCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "getDepositInfo", abi = "getDepositInfo(address)")] - pub struct GetDepositInfoCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getNonce` function with signature `getNonce(address,uint192)` and selector `0x35567e1a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "getNonce", abi = "getNonce(address,uint192)")] - pub struct GetNonceCall { - pub sender: ::ethers::core::types::Address, - pub key: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getSenderAddress` function with signature `getSenderAddress(bytes)` and selector `0x9b249f69` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "getSenderAddress", abi = "getSenderAddress(bytes)")] - pub struct GetSenderAddressCall { - pub init_code: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `getUserOpHash` function with signature `getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xa6193531` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "getUserOpHash", - abi = "getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" - )] - pub struct GetUserOpHashCall { - pub user_op: UserOperation, - } - ///Container type for all input parameters for the `handleAggregatedOps` function with signature `handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)` and selector `0x4b1d7cf5` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "handleAggregatedOps", - abi = "handleAggregatedOps(((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)[],address)" - )] - pub struct HandleAggregatedOpsCall { - pub ops_per_aggregator: ::std::vec::Vec, - pub beneficiary: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `handleOps` function with signature `handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)` and selector `0x1fad948c` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "handleOps", - abi = "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)" - )] - pub struct HandleOpsCall { - pub ops: ::std::vec::Vec, - pub beneficiary: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `incrementNonce` function with signature `incrementNonce(uint192)` and selector `0x0bd28e3b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "incrementNonce", abi = "incrementNonce(uint192)")] - pub struct IncrementNonceCall { - pub key: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `simulateHandleOp` function with signature `simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)` and selector `0xd6383f94` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "simulateHandleOp", - abi = "simulateHandleOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address,bytes)" - )] - pub struct SimulateHandleOpCall { - pub op: UserOperation, - pub target: ::ethers::core::types::Address, - pub target_call_data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `simulateValidation` function with signature `simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xee219423` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "simulateValidation", - abi = "simulateValidation((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" - )] - pub struct SimulateValidationCall { - pub user_op: UserOperation, - } - ///Container type for all input parameters for the `unlockStake` function with signature `unlockStake()` and selector `0xbb9fe6bf` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "unlockStake", abi = "unlockStake()")] - pub struct UnlockStakeCall; - ///Container type for all input parameters for the `withdrawStake` function with signature `withdrawStake(address)` and selector `0xc23a5cea` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "withdrawStake", abi = "withdrawStake(address)")] - pub struct WithdrawStakeCall { - pub withdraw_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `withdrawTo` function with signature `withdrawTo(address,uint256)` and selector `0x205c2878` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "withdrawTo", abi = "withdrawTo(address,uint256)")] - pub struct WithdrawToCall { - pub withdraw_address: ::ethers::core::types::Address, - pub withdraw_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 IEntryPointCalls { - AddStake(AddStakeCall), - BalanceOf(BalanceOfCall), - DepositTo(DepositToCall), - GetDepositInfo(GetDepositInfoCall), - GetNonce(GetNonceCall), - GetSenderAddress(GetSenderAddressCall), - GetUserOpHash(GetUserOpHashCall), - HandleAggregatedOps(HandleAggregatedOpsCall), - HandleOps(HandleOpsCall), - IncrementNonce(IncrementNonceCall), - SimulateHandleOp(SimulateHandleOpCall), - SimulateValidation(SimulateValidationCall), - UnlockStake(UnlockStakeCall), - WithdrawStake(WithdrawStakeCall), - WithdrawTo(WithdrawToCall), - } - impl ::ethers::core::abi::AbiDecode for IEntryPointCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode(data) { - return Ok(Self::AddStake(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::DepositTo(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::GetDepositInfo(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::GetNonce(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::GetSenderAddress(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::GetUserOpHash(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::HandleAggregatedOps(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::HandleOps(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IncrementNonce(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SimulateHandleOp(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SimulateValidation(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::UnlockStake(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::WithdrawStake(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::WithdrawTo(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IEntryPointCalls { - fn encode(self) -> Vec { - match self { - Self::AddStake(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::DepositTo(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetDepositInfo(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetNonce(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetSenderAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetUserOpHash(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::HandleAggregatedOps(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::HandleOps(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IncrementNonce(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SimulateHandleOp(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SimulateValidation(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::UnlockStake(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::WithdrawStake(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::WithdrawTo(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for IEntryPointCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AddStake(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::DepositTo(element) => ::core::fmt::Display::fmt(element, f), - Self::GetDepositInfo(element) => ::core::fmt::Display::fmt(element, f), - Self::GetNonce(element) => ::core::fmt::Display::fmt(element, f), - Self::GetSenderAddress(element) => ::core::fmt::Display::fmt(element, f), - Self::GetUserOpHash(element) => ::core::fmt::Display::fmt(element, f), - Self::HandleAggregatedOps(element) => ::core::fmt::Display::fmt(element, f), - Self::HandleOps(element) => ::core::fmt::Display::fmt(element, f), - Self::IncrementNonce(element) => ::core::fmt::Display::fmt(element, f), - Self::SimulateHandleOp(element) => ::core::fmt::Display::fmt(element, f), - Self::SimulateValidation(element) => ::core::fmt::Display::fmt(element, f), - Self::UnlockStake(element) => ::core::fmt::Display::fmt(element, f), - Self::WithdrawStake(element) => ::core::fmt::Display::fmt(element, f), - Self::WithdrawTo(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: AddStakeCall) -> Self { - Self::AddStake(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: DepositToCall) -> Self { - Self::DepositTo(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: GetDepositInfoCall) -> Self { - Self::GetDepositInfo(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: GetNonceCall) -> Self { - Self::GetNonce(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: GetSenderAddressCall) -> Self { - Self::GetSenderAddress(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: GetUserOpHashCall) -> Self { - Self::GetUserOpHash(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: HandleAggregatedOpsCall) -> Self { - Self::HandleAggregatedOps(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: HandleOpsCall) -> Self { - Self::HandleOps(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: IncrementNonceCall) -> Self { - Self::IncrementNonce(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: SimulateHandleOpCall) -> Self { - Self::SimulateHandleOp(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: SimulateValidationCall) -> Self { - Self::SimulateValidation(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: UnlockStakeCall) -> Self { - Self::UnlockStake(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: WithdrawStakeCall) -> Self { - Self::WithdrawStake(value) - } - } - impl ::core::convert::From for IEntryPointCalls { - fn from(value: WithdrawToCall) -> Self { - Self::WithdrawTo(value) - } - } - ///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 `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GetDepositInfoReturn { - pub info: DepositInfo, - } - ///Container type for all return fields from the `getNonce` function with signature `getNonce(address,uint192)` and selector `0x35567e1a` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GetNonceReturn { - pub nonce: ::ethers::core::types::U256, - } - ///Container type for all return fields from the `getUserOpHash` function with signature `getUserOpHash((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0xa6193531` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GetUserOpHashReturn(pub [u8; 32]); - ///`UserOpsPerAggregator((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address,bytes)` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct UserOpsPerAggregator { - pub user_ops: ::std::vec::Vec, - pub aggregator: ::ethers::core::types::Address, - pub signature: ::ethers::core::types::Bytes, - } -} diff --git a/xmtp_id/src/bindings/i_nonce_manager.rs b/xmtp_id/src/bindings/i_nonce_manager.rs deleted file mode 100644 index 03108d458..000000000 --- a/xmtp_id/src/bindings/i_nonce_manager.rs +++ /dev/null @@ -1,247 +0,0 @@ -pub use i_nonce_manager::*; -/// 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_nonce_manager { - #[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("getNonce"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getNonce"), - 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("key"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(192usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint192"), - ), - }, - ], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("nonce"), - 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("incrementNonce"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("incrementNonce"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("key"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(192usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint192"), - ), - },], - 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 INONCEMANAGER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct INonceManager(::ethers::contract::Contract); - impl ::core::clone::Clone for INonceManager { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for INonceManager { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for INonceManager { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for INonceManager { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(INonceManager)) - .field(&self.address()) - .finish() - } - } - impl INonceManager { - /// 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(), - INONCEMANAGER_ABI.clone(), - client, - )) - } - ///Calls the contract's `getNonce` (0x35567e1a) function - pub fn get_nonce( - &self, - sender: ::ethers::core::types::Address, - key: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([53, 86, 126, 26], (sender, key)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `incrementNonce` (0x0bd28e3b) function - pub fn increment_nonce( - &self, - key: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([11, 210, 142, 59], key) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for INonceManager - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `getNonce` function with signature `getNonce(address,uint192)` and selector `0x35567e1a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "getNonce", abi = "getNonce(address,uint192)")] - pub struct GetNonceCall { - pub sender: ::ethers::core::types::Address, - pub key: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `incrementNonce` function with signature `incrementNonce(uint192)` and selector `0x0bd28e3b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "incrementNonce", abi = "incrementNonce(uint192)")] - pub struct IncrementNonceCall { - pub key: ::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 INonceManagerCalls { - GetNonce(GetNonceCall), - IncrementNonce(IncrementNonceCall), - } - impl ::ethers::core::abi::AbiDecode for INonceManagerCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode(data) { - return Ok(Self::GetNonce(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IncrementNonce(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for INonceManagerCalls { - fn encode(self) -> Vec { - match self { - Self::GetNonce(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IncrementNonce(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for INonceManagerCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::GetNonce(element) => ::core::fmt::Display::fmt(element, f), - Self::IncrementNonce(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for INonceManagerCalls { - fn from(value: GetNonceCall) -> Self { - Self::GetNonce(value) - } - } - impl ::core::convert::From for INonceManagerCalls { - fn from(value: IncrementNonceCall) -> Self { - Self::IncrementNonce(value) - } - } - ///Container type for all return fields from the `getNonce` function with signature `getNonce(address,uint192)` and selector `0x35567e1a` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GetNonceReturn { - pub nonce: ::ethers::core::types::U256, - } -} diff --git a/xmtp_id/src/bindings/i_stake_manager.rs b/xmtp_id/src/bindings/i_stake_manager.rs deleted file mode 100644 index c9552c1eb..000000000 --- a/xmtp_id/src/bindings/i_stake_manager.rs +++ /dev/null @@ -1,855 +0,0 @@ -pub use i_stake_manager::*; -/// 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_stake_manager { - 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("addStake"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("addStake"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_unstakeDelaySec"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint32"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - },], - ), - ( - ::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::borrow::ToOwned::to_owned("account"), - 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("depositTo"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("depositTo"), - 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"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("getDepositInfo"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getDepositInfo"), - 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"), - ), - },], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("info"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(112usize), - ::ethers::core::abi::ethabi::ParamType::Bool, - ::ethers::core::abi::ethabi::ParamType::Uint(112usize), - ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - ::ethers::core::abi::ethabi::ParamType::Uint(48usize), - ],), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IStakeManager.DepositInfo", - ), - ), - },], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("unlockStake"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("unlockStake"), - inputs: ::std::vec![], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("withdrawStake"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdrawStake"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("withdrawAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("withdrawTo"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdrawTo"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("withdrawAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address payable"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("withdrawAmount"), - 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("Deposited"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Deposited"), - 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("totalDeposit"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: false, - }, - ], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("StakeLocked"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("StakeLocked"), - 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("totalStaked"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("unstakeDelaySec"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: false, - }, - ], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("StakeUnlocked"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("StakeUnlocked"), - 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("withdrawTime"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: false, - }, - ], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("StakeWithdrawn"), - 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("withdrawAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::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("Withdrawn"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Withdrawn"), - 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("withdrawAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ::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 ISTAKEMANAGER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct IStakeManager(::ethers::contract::Contract); - impl ::core::clone::Clone for IStakeManager { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IStakeManager { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IStakeManager { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IStakeManager { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IStakeManager)) - .field(&self.address()) - .finish() - } - } - impl IStakeManager { - /// 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(), - ISTAKEMANAGER_ABI.clone(), - client, - )) - } - ///Calls the contract's `addStake` (0x0396cb60) function - pub fn add_stake( - &self, - unstake_delay_sec: u32, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([3, 150, 203, 96], unstake_delay_sec) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `depositTo` (0xb760faf9) function - pub fn deposit_to( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([183, 96, 250, 249], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getDepositInfo` (0x5287ce12) function - pub fn get_deposit_info( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([82, 135, 206, 18], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `unlockStake` (0xbb9fe6bf) function - pub fn unlock_stake(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([187, 159, 230, 191], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `withdrawStake` (0xc23a5cea) function - pub fn withdraw_stake( - &self, - withdraw_address: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([194, 58, 92, 234], withdraw_address) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `withdrawTo` (0x205c2878) function - pub fn withdraw_to( - &self, - withdraw_address: ::ethers::core::types::Address, - withdraw_amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([32, 92, 40, 120], (withdraw_address, withdraw_amount)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Deposited` event - pub fn deposited_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, DepositedFilter> { - self.0.event() - } - ///Gets the contract's `StakeLocked` event - pub fn stake_locked_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeLockedFilter> - { - self.0.event() - } - ///Gets the contract's `StakeUnlocked` event - pub fn stake_unlocked_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeUnlockedFilter> - { - self.0.event() - } - ///Gets the contract's `StakeWithdrawn` event - pub fn stake_withdrawn_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakeWithdrawnFilter> - { - self.0.event() - } - ///Gets the contract's `Withdrawn` event - pub fn withdrawn_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, WithdrawnFilter> { - 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, IStakeManagerEvents> - { - self.0 - .event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for IStakeManager - { - 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 = "Deposited", abi = "Deposited(address,uint256)")] - pub struct DepositedFilter { - #[ethevent(indexed)] - pub account: ::ethers::core::types::Address, - pub total_deposit: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "StakeLocked", abi = "StakeLocked(address,uint256,uint256)")] - pub struct StakeLockedFilter { - #[ethevent(indexed)] - pub account: ::ethers::core::types::Address, - pub total_staked: ::ethers::core::types::U256, - pub unstake_delay_sec: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "StakeUnlocked", abi = "StakeUnlocked(address,uint256)")] - pub struct StakeUnlockedFilter { - #[ethevent(indexed)] - pub account: ::ethers::core::types::Address, - pub withdraw_time: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent( - name = "StakeWithdrawn", - abi = "StakeWithdrawn(address,address,uint256)" - )] - pub struct StakeWithdrawnFilter { - #[ethevent(indexed)] - pub account: ::ethers::core::types::Address, - pub withdraw_address: ::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 = "Withdrawn", abi = "Withdrawn(address,address,uint256)")] - pub struct WithdrawnFilter { - #[ethevent(indexed)] - pub account: ::ethers::core::types::Address, - pub withdraw_address: ::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 IStakeManagerEvents { - DepositedFilter(DepositedFilter), - StakeLockedFilter(StakeLockedFilter), - StakeUnlockedFilter(StakeUnlockedFilter), - StakeWithdrawnFilter(StakeWithdrawnFilter), - WithdrawnFilter(WithdrawnFilter), - } - impl ::ethers::contract::EthLogDecode for IStakeManagerEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = DepositedFilter::decode_log(log) { - return Ok(IStakeManagerEvents::DepositedFilter(decoded)); - } - if let Ok(decoded) = StakeLockedFilter::decode_log(log) { - return Ok(IStakeManagerEvents::StakeLockedFilter(decoded)); - } - if let Ok(decoded) = StakeUnlockedFilter::decode_log(log) { - return Ok(IStakeManagerEvents::StakeUnlockedFilter(decoded)); - } - if let Ok(decoded) = StakeWithdrawnFilter::decode_log(log) { - return Ok(IStakeManagerEvents::StakeWithdrawnFilter(decoded)); - } - if let Ok(decoded) = WithdrawnFilter::decode_log(log) { - return Ok(IStakeManagerEvents::WithdrawnFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for IStakeManagerEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DepositedFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::StakeLockedFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::StakeUnlockedFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::StakeWithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::WithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for IStakeManagerEvents { - fn from(value: DepositedFilter) -> Self { - Self::DepositedFilter(value) - } - } - impl ::core::convert::From for IStakeManagerEvents { - fn from(value: StakeLockedFilter) -> Self { - Self::StakeLockedFilter(value) - } - } - impl ::core::convert::From for IStakeManagerEvents { - fn from(value: StakeUnlockedFilter) -> Self { - Self::StakeUnlockedFilter(value) - } - } - impl ::core::convert::From for IStakeManagerEvents { - fn from(value: StakeWithdrawnFilter) -> Self { - Self::StakeWithdrawnFilter(value) - } - } - impl ::core::convert::From for IStakeManagerEvents { - fn from(value: WithdrawnFilter) -> Self { - Self::WithdrawnFilter(value) - } - } - ///Container type for all input parameters for the `addStake` function with signature `addStake(uint32)` and selector `0x0396cb60` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "addStake", abi = "addStake(uint32)")] - pub struct AddStakeCall { - pub unstake_delay_sec: u32, - } - ///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 account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `depositTo` function with signature `depositTo(address)` and selector `0xb760faf9` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "depositTo", abi = "depositTo(address)")] - pub struct DepositToCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "getDepositInfo", abi = "getDepositInfo(address)")] - pub struct GetDepositInfoCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `unlockStake` function with signature `unlockStake()` and selector `0xbb9fe6bf` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "unlockStake", abi = "unlockStake()")] - pub struct UnlockStakeCall; - ///Container type for all input parameters for the `withdrawStake` function with signature `withdrawStake(address)` and selector `0xc23a5cea` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "withdrawStake", abi = "withdrawStake(address)")] - pub struct WithdrawStakeCall { - pub withdraw_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `withdrawTo` function with signature `withdrawTo(address,uint256)` and selector `0x205c2878` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "withdrawTo", abi = "withdrawTo(address,uint256)")] - pub struct WithdrawToCall { - pub withdraw_address: ::ethers::core::types::Address, - pub withdraw_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 IStakeManagerCalls { - AddStake(AddStakeCall), - BalanceOf(BalanceOfCall), - DepositTo(DepositToCall), - GetDepositInfo(GetDepositInfoCall), - UnlockStake(UnlockStakeCall), - WithdrawStake(WithdrawStakeCall), - WithdrawTo(WithdrawToCall), - } - impl ::ethers::core::abi::AbiDecode for IStakeManagerCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode(data) { - return Ok(Self::AddStake(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::DepositTo(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::GetDepositInfo(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::UnlockStake(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::WithdrawStake(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::WithdrawTo(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for IStakeManagerCalls { - fn encode(self) -> Vec { - match self { - Self::AddStake(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::DepositTo(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetDepositInfo(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::UnlockStake(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::WithdrawStake(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::WithdrawTo(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for IStakeManagerCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AddStake(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::DepositTo(element) => ::core::fmt::Display::fmt(element, f), - Self::GetDepositInfo(element) => ::core::fmt::Display::fmt(element, f), - Self::UnlockStake(element) => ::core::fmt::Display::fmt(element, f), - Self::WithdrawStake(element) => ::core::fmt::Display::fmt(element, f), - Self::WithdrawTo(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for IStakeManagerCalls { - fn from(value: AddStakeCall) -> Self { - Self::AddStake(value) - } - } - impl ::core::convert::From for IStakeManagerCalls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) - } - } - impl ::core::convert::From for IStakeManagerCalls { - fn from(value: DepositToCall) -> Self { - Self::DepositTo(value) - } - } - impl ::core::convert::From for IStakeManagerCalls { - fn from(value: GetDepositInfoCall) -> Self { - Self::GetDepositInfo(value) - } - } - impl ::core::convert::From for IStakeManagerCalls { - fn from(value: UnlockStakeCall) -> Self { - Self::UnlockStake(value) - } - } - impl ::core::convert::From for IStakeManagerCalls { - fn from(value: WithdrawStakeCall) -> Self { - Self::WithdrawStake(value) - } - } - impl ::core::convert::From for IStakeManagerCalls { - fn from(value: WithdrawToCall) -> Self { - Self::WithdrawTo(value) - } - } - ///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 `getDepositInfo` function with signature `getDepositInfo(address)` and selector `0x5287ce12` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GetDepositInfoReturn { - pub info: DepositInfo, - } -} diff --git a/xmtp_id/src/bindings/ierc721_token_receiver.rs b/xmtp_id/src/bindings/ierc721_token_receiver.rs deleted file mode 100644 index 5be56a4b6..000000000 --- a/xmtp_id/src/bindings/ierc721_token_receiver.rs +++ /dev/null @@ -1,165 +0,0 @@ -pub use ierc721_token_receiver::*; -/// 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 ierc721_token_receiver { - #[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("onERC721Received"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("onERC721Received"), - 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"), - ), - }, - ::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"), - ), - }, - ], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - },], - 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 IERC721TOKENRECEIVER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct IERC721TokenReceiver(::ethers::contract::Contract); - impl ::core::clone::Clone for IERC721TokenReceiver { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for IERC721TokenReceiver { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for IERC721TokenReceiver { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for IERC721TokenReceiver { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(IERC721TokenReceiver)) - .field(&self.address()) - .finish() - } - } - impl IERC721TokenReceiver { - /// 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(), - IERC721TOKENRECEIVER_ABI.clone(), - client, - )) - } - ///Calls the contract's `onERC721Received` (0x150b7a02) function - pub fn on_erc721_received( - &self, - p0: ::ethers::core::types::Address, - p1: ::ethers::core::types::Address, - p2: ::ethers::core::types::U256, - p3: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([21, 11, 122, 2], (p0, p1, p2, p3)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for IERC721TokenReceiver - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `onERC721Received` function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "onERC721Received", - abi = "onERC721Received(address,address,uint256,bytes)" - )] - pub struct OnERC721ReceivedCall( - pub ::ethers::core::types::Address, - pub ::ethers::core::types::Address, - pub ::ethers::core::types::U256, - pub ::ethers::core::types::Bytes, - ); - ///Container type for all return fields from the `onERC721Received` function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OnERC721ReceivedReturn(pub [u8; 4]); -} diff --git a/xmtp_id/src/bindings/lib_clone.rs b/xmtp_id/src/bindings/lib_clone.rs deleted file mode 100644 index df0f5892b..000000000 --- a/xmtp_id/src/bindings/lib_clone.rs +++ /dev/null @@ -1,294 +0,0 @@ -pub use lib_clone::*; -/// 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_clone { - #[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("DeploymentFailed"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("DeploymentFailed"), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("ETHTransferFailed"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("ETHTransferFailed"), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("SaltDoesNotStartWith"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("SaltDoesNotStartWith",), - inputs: ::std::vec![], - },], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static LIBCLONE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 +\xDE\xA0\xC2\x9C\x15\xB7e\x0E\xEC\xDA\xEA1=\xE6\x98\x87\xD5\x10\xF2\xB5$\x03Q\xEB\xF7\t\xB7B0\xB5ldsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static LIBCLONE_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 +\xDE\xA0\xC2\x9C\x15\xB7e\x0E\xEC\xDA\xEA1=\xE6\x98\x87\xD5\x10\xF2\xB5$\x03Q\xEB\xF7\t\xB7B0\xB5ldsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static LIBCLONE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct LibClone(::ethers::contract::Contract); - impl ::core::clone::Clone for LibClone { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for LibClone { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for LibClone { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for LibClone { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(LibClone)) - .field(&self.address()) - .finish() - } - } - impl LibClone { - /// 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(), - LIBCLONE_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( - LIBCLONE_ABI.clone(), - LIBCLONE_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 LibClone { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `DeploymentFailed` with signature `DeploymentFailed()` and selector `0x30116425` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "DeploymentFailed", abi = "DeploymentFailed()")] - pub struct DeploymentFailed; - ///Custom Error type `ETHTransferFailed` with signature `ETHTransferFailed()` and selector `0xb12d13eb` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "ETHTransferFailed", abi = "ETHTransferFailed()")] - pub struct ETHTransferFailed; - ///Custom Error type `SaltDoesNotStartWith` with signature `SaltDoesNotStartWith()` and selector `0x0c4549ef` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "SaltDoesNotStartWith", abi = "SaltDoesNotStartWith()")] - pub struct SaltDoesNotStartWith; - ///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 LibCloneErrors { - DeploymentFailed(DeploymentFailed), - ETHTransferFailed(ETHTransferFailed), - SaltDoesNotStartWith(SaltDoesNotStartWith), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for LibCloneErrors { - 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::DeploymentFailed(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::ETHTransferFailed(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SaltDoesNotStartWith(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for LibCloneErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::DeploymentFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ETHTransferFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SaltDoesNotStartWith(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for LibCloneErrors { - 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 LibCloneErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::DeploymentFailed(element) => ::core::fmt::Display::fmt(element, f), - Self::ETHTransferFailed(element) => ::core::fmt::Display::fmt(element, f), - Self::SaltDoesNotStartWith(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for LibCloneErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for LibCloneErrors { - fn from(value: DeploymentFailed) -> Self { - Self::DeploymentFailed(value) - } - } - impl ::core::convert::From for LibCloneErrors { - fn from(value: ETHTransferFailed) -> Self { - Self::ETHTransferFailed(value) - } - } - impl ::core::convert::From for LibCloneErrors { - fn from(value: SaltDoesNotStartWith) -> Self { - Self::SaltDoesNotStartWith(value) - } - } -} diff --git a/xmtp_id/src/bindings/lib_string.rs b/xmtp_id/src/bindings/lib_string.rs deleted file mode 100644 index 75c86f646..000000000 --- a/xmtp_id/src/bindings/lib_string.rs +++ /dev/null @@ -1,260 +0,0 @@ -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: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("HexLengthInsufficient"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("HexLengthInsufficient",), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("TooBigForSmallString"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("TooBigForSmallString",), - inputs: ::std::vec![], - },], - ), - ]), - 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"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 T\xF2H\x14\x86f*0e6]?\x16&\xBE{o\x9F\x86a\x0E\x1C$_\x1Cx1a\xE2\xC3b\xE7dsolcC\0\x08\x17\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"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 T\xF2H\x14\x86f*0e6]?\x16&\xBE{o\x9F\x86a\x0E\x1C$_\x1Cx1a\xE2\xC3b\xE7dsolcC\0\x08\x17\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()) - } - } - ///Custom Error type `HexLengthInsufficient` with signature `HexLengthInsufficient()` and selector `0x2194895a` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "HexLengthInsufficient", abi = "HexLengthInsufficient()")] - pub struct HexLengthInsufficient; - ///Custom Error type `TooBigForSmallString` with signature `TooBigForSmallString()` and selector `0xec92f9a3` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "TooBigForSmallString", abi = "TooBigForSmallString()")] - pub struct TooBigForSmallString; - ///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 LibStringErrors { - HexLengthInsufficient(HexLengthInsufficient), - TooBigForSmallString(TooBigForSmallString), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for LibStringErrors { - 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::HexLengthInsufficient(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::TooBigForSmallString(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for LibStringErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::HexLengthInsufficient(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::TooBigForSmallString(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for LibStringErrors { - 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 LibStringErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::HexLengthInsufficient(element) => ::core::fmt::Display::fmt(element, f), - Self::TooBigForSmallString(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for LibStringErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for LibStringErrors { - fn from(value: HexLengthInsufficient) -> Self { - Self::HexLengthInsufficient(value) - } - } - impl ::core::convert::From for LibStringErrors { - fn from(value: TooBigForSmallString) -> Self { - Self::TooBigForSmallString(value) - } - } -} diff --git a/xmtp_id/src/bindings/mock_coinbase_smart_wallet.rs b/xmtp_id/src/bindings/mock_coinbase_smart_wallet.rs deleted file mode 100644 index e93d52b6c..000000000 --- a/xmtp_id/src/bindings/mock_coinbase_smart_wallet.rs +++ /dev/null @@ -1,2710 +0,0 @@ -pub use mock_coinbase_smart_wallet::*; -/// 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_coinbase_smart_wallet { - 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![], - }), - functions: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("REPLAYABLE_NONCE_KEY"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("REPLAYABLE_NONCE_KEY",), - 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("addOwnerAddress"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("addOwnerAddress"), - 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"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("x"), - 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("y"), - 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("canSkipChainIdValidation"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("canSkipChainIdValidation",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("functionSelector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - },], - 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::Pure, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("domainSeparator"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("domainSeparator"), - 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("eip712Domain"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("eip712Domain"), - inputs: ::std::vec![], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("fields"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(1usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes1"), - ), - }, - ::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("version"), - 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("chainId"), - 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("verifyingContract"), - 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("salt"), - 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("extensions"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::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("entryPoint"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("entryPoint"), - 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("execute"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("execute"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("target"), - 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("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::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("executeBatch"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("calls"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ],), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct CoinbaseSmartWallet.Call[]", - ), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeBatch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("filler"), - 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("calls"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize - ), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ], - ), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct CoinbaseSmartWallet.Call[]", - ), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("executeWithoutChainIdValidation"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("executeWithoutChainIdValidation",), - inputs: ::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"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("getUserOpHashWithoutChainId"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getUserOpHashWithoutChainId",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOp"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ],), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation"), - ), - },], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOpHash"), - 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("implementation"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("implementation"), - inputs: ::std::vec![], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("$"), - 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("owners"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::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::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("isOwnerAddress"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerAddress"), - 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"), - ), - },], - 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("isOwnerBytes"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerBytes"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("account"), - 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::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("isOwnerPublicKey"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerPublicKey"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("x"), - 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("y"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - 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("isValidSignature"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isValidSignature"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("hash"), - 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("signature"), - 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("result"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - },], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), - 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("ownerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("ownerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("proxiableUUID"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), - 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("removeOwnerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("removeOwnerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("replaySafeHash"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("replaySafeHash"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("hash"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - },], - 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("upgradeToAndCall"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newImplementation"), - 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("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::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("validateUserOp"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validateUserOp"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOp"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ],), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOpHash"), - 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("missingAccountFunds",), - 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("validationData"), - 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, - },], - ), - ]), - events: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("AddOwner"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("AddOwner"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("RemoveOwner"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("RemoveOwner"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("Upgraded"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Upgraded"), - inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("implementation"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - },], - anonymous: false, - },], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("AlreadyOwner"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("AlreadyOwner"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("Initialized"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("Initialized"), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidNonceKey"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidNonceKey"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("key"), - 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("InvalidOwnerBytesLength"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("SelectorNotAllowed"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("SelectorNotAllowed"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("Unauthorized"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("Unauthorized"), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext",), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("UpgradeFailed"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("UpgradeFailed"), - inputs: ::std::vec![], - },], - ), - ]), - receive: true, - fallback: true, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKCOINBASESMARTWALLET_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xA0`@R0`\x80R4\x80\x15b\0\0\x15W`\0\x80\xFD[P`@\x80Q`\x01\x80\x82R\x81\x83\x01\x90\x92R`\0\x91\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81b\0\0-W\x90PP`@\x80Q`\0` \x82\x01R\x91\x92P\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x81`\0\x81Q\x81\x10b\0\0wWb\0\0wb\0\x03\x8DV[` \x90\x81\x02\x91\x90\x91\x01\x01Rb\0\0\x8D\x81b\0\0\xA7V[P`\0`\0\x80Q` b\08\xEE\x839\x81Q\x91RUb\0\x05\xC3V[`\0[\x81Q\x81\x10\x15b\0\x029W\x81\x81\x81Q\x81\x10b\0\0\xC9Wb\0\0\xC9b\0\x03\x8DV[` \x02` \x01\x01QQ` \x14\x15\x80\x15b\0\x01\x01WP\x81\x81\x81Q\x81\x10b\0\0\xF3Wb\0\0\xF3b\0\x03\x8DV[` \x02` \x01\x01QQ`@\x14\x15[\x15b\0\x01IW\x81\x81\x81Q\x81\x10b\0\x01\x1CWb\0\x01\x1Cb\0\x03\x8DV[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01b\0\x01@\x91\x90b\0\x03\xC9V[`@Q\x80\x91\x03\x90\xFD[\x81\x81\x81Q\x81\x10b\0\x01^Wb\0\x01^b\0\x03\x8DV[` \x02` \x01\x01QQ` \x14\x80\x15b\0\x01\xA6WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10b\0\x01\x91Wb\0\x01\x91b\0\x03\x8DV[` \x02` \x01\x01Qb\0\x01\xA4\x90b\0\x03\xFEV[\x11[\x15b\0\x01\xE5W\x81\x81\x81Q\x81\x10b\0\x01\xC1Wb\0\x01\xC1b\0\x03\x8DV[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01b\0\x01@\x91\x90b\0\x03\xC9V[b\0\x020\x82\x82\x81Q\x81\x10b\0\x01\xFEWb\0\x01\xFEb\0\x03\x8DV[` \x02` \x01\x01Qb\0\x02\x16b\0\x02=` \x1B` \x1CV[\x80T\x90`\0b\0\x02&\x83b\0\x04&V[\x90\x91UPb\0\x02PV[`\x01\x01b\0\0\xAAV[PPV[`\0\x80Q` b\08\xEE\x839\x81Q\x91R\x90V[b\0\x02[\x82b\0\x039V[\x15b\0\x02~W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01b\0\x01@\x91\x90b\0\x03\xC9V[`\x01`\0\x80Q` b\08\xEE\x839\x81Q\x91R`\x02\x01\x83`@Qb\0\x02\xA3\x91\x90b\0\x04NV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81b\0\x02\xDB`\0\x80Q` b\08\xEE\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90b\0\x02\xFA\x90\x82b\0\x04\xF7V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qb\0\x03-\x91\x90b\0\x03\xC9V[`@Q\x80\x91\x03\x90\xA2PPV[`\0`\0\x80Q` b\08\xEE\x839\x81Q\x91R`\x02\x01\x82`@Qb\0\x03^\x91\x90b\0\x04NV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0[\x83\x81\x10\x15b\0\x03\xC0W\x81\x81\x01Q\x83\x82\x01R` \x01b\0\x03\xA6V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Rb\0\x03\xEA\x81`@\x85\x01` \x87\x01b\0\x03\xA3V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15b\0\x04 W`\0\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\0`\x01\x82\x01b\0\x04GWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[`\0\x82Qb\0\x04b\x81\x84` \x87\x01b\0\x03\xA3V[\x91\x90\x91\x01\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x04\x81W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x04 WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[`\x1F\x82\x11\x15b\0\x04\xF2W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x04\xCDWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x04\xEEW\x82\x81U`\x01\x01b\0\x04\xD9V[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x05\x13Wb\0\x05\x13b\0\x03wV[b\0\x05+\x81b\0\x05$\x84Tb\0\x04lV[\x84b\0\x04\xA2V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x05cW`\0\x84\x15b\0\x05JWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x04\xEEV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x05\x94W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x05sV[P\x85\x82\x10\x15b\0\x05\xB3W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x80Qa3\x08b\0\x05\xE6`\09`\0\x81\x81a\x08L\x01Ra\t\x83\x01Ra3\x08`\0\xF3\xFE`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co-\xE7\x0E\x11a\0\xD1W\x80c\xA2\xE1\xA8\xD8\x11a\0\x8AW\x80c\xBFk\xA1\xFC\x11a\0dW\x80c\xBFk\xA1\xFC\x14a\x04\\W\x80c\xCE\x15\x06\xBE\x14a\x04oW\x80c\xD9H\xFD.\x14a\x04\x8FW\x80c\xF6\x98\xDA%\x14a\x04\xB1Wa\x01qV[\x80c\xA2\xE1\xA8\xD8\x14a\x04\x02W\x80c\xB0\xD6\x91\xFE\x14a\x04\"W\x80c\xB6\x1D'\xF6\x14a\x04IWa\x01qV[\x80co-\xE7\x0E\x14a\x03DW\x80cr\xDE;Z\x14a\x03WW\x80c\x84\xB0\x19n\x14a\x03wW\x80c\x88\xCEL|\x14a\x03\x9FW\x80c\x8E\xA6\x90)\x14a\x03\xB5W\x80c\x9F\x9B\xCB4\x14a\x03\xE2Wa\x01qV[\x80c:\x87\x1C\xDD\x11a\x01#W\x80c:\x87\x1C\xDD\x14a\x02\x80W\x80cO\x1E\xF2\x86\x14a\x02\xA1W\x80cOn\x7F\"\x14a\x02\xB4W\x80cR\xD1\x90-\x14a\x02\xD4W\x80cW\x7F<\xBF\x14a\x02\xE9W\x80c\\`\xDA\x1B\x14a\x02\xFCWa\x01qV[\x80c\x06j\x1E\xB7\x14a\x01\x9FW\x80c\x0F\x0F?$\x14a\x01\xD4W\x80c\x16&\xBA~\x14a\x01\xF4W\x80c\x1C\xA59?\x14a\x02-W\x80c)V^;\x14a\x02MW\x80c4\xFC\xD5\xBE\x14a\x02mWa\x01qV[6a\x01qW\0[`\x005`\xE0\x1Cc\xBC\x19|\x81\x81\x14c\xF2:na\x82\x14\x17c\x15\x0Bz\x02\x82\x14\x17\x15a\x01\x9DW\x80` R` `<\xF3[\0[4\x80\x15a\x01\xABW`\0\x80\xFD[Pa\x01\xBFa\x01\xBA6`\x04a'\xCFV[a\x04\xC6V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xE0W`\0\x80\xFD[Pa\x01\x9Da\x01\xEF6`\x04a(\rV[a\x055V[4\x80\x15a\x02\0W`\0\x80\xFD[Pa\x02\x14a\x02\x0F6`\x04a(pV[a\x05mV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01\xCBV[4\x80\x15a\x029W`\0\x80\xFD[Pa\x01\xBFa\x02H6`\x04a)\xA6V[a\x05\xA7V[4\x80\x15a\x02YW`\0\x80\xFD[Pa\x01\x9Da\x02h6`\x04a'\xCFV[a\x05\xE2V[a\x01\x9Da\x02{6`\x04a*\x1EV[a\x06\x0BV[a\x02\x93a\x02\x8E6`\x04a*xV[a\x07\x0FV[`@Q\x90\x81R` \x01a\x01\xCBV[a\x01\x9Da\x02\xAF6`\x04a*\xC5V[a\x08JV[4\x80\x15a\x02\xC0W`\0\x80\xFD[Pa\x02\x93a\x02\xCF6`\x04a*\xFEV[a\t.V[4\x80\x15a\x02\xE0W`\0\x80\xFD[Pa\x02\x93a\t\x7FV[a\x01\x9Da\x02\xF76`\x04a+2V[a\t\xDFV[4\x80\x15a\x03\x08W`\0\x80\xFD[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xCBV[a\x01\x9Da\x03R6`\x04a*\x1EV[a\n\x17V[4\x80\x15a\x03cW`\0\x80\xFD[Pa\x01\x9Da\x03r6`\x04a+pV[a\nWV[4\x80\x15a\x03\x83W`\0\x80\xFD[Pa\x03\x8Ca\x0BDV[`@Qa\x01\xCB\x97\x96\x95\x94\x93\x92\x91\x90a+\xD9V[4\x80\x15a\x03\xABW`\0\x80\xFD[Pa\x02\x93a!\x05\x81V[4\x80\x15a\x03\xC1W`\0\x80\xFD[Pa\x03\xD5a\x03\xD06`\x04a+pV[a\x0BkV[`@Qa\x01\xCB\x91\x90a,rV[4\x80\x15a\x03\xEEW`\0\x80\xFD[Pa\x01\xBFa\x03\xFD6`\x04a,\x85V[a\x0C,V[4\x80\x15a\x04\x0EW`\0\x80\xFD[Pa\x01\xBFa\x04\x1D6`\x04a(\rV[a\x0C\xA8V[4\x80\x15a\x04.W`\0\x80\xFD[Ps_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89a\x03,V[a\x01\x9Da\x04W6`\x04a,\xAFV[a\x0C\xEEV[a\x01\x9Da\x04j6`\x04a-\x08V[a\rRV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x02\x93a\x04\x8A6`\x04a+pV[a\x0E\x13V[4\x80\x15a\x04\x9BW`\0\x80\xFD[P`\0\x80Q` a2\xB3\x839\x81Q\x91RTa\x02\x93V[4\x80\x15a\x04\xBDW`\0\x80\xFD[Pa\x02\x93a\x0E\x1EV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\x19\x91a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P[\x92\x91PPV[a\x05=a\x0E\xA4V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x05j\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0E\xD6V[PV[`\0a\x05\x82a\x05{\x85a\x0E\x13V[\x84\x84a\x0F\x01V[\x15a\x05\x95WPc\x0B\x13]?`\xE1\x1Ba\x05\xA0V[P`\x01`\x01`\xE0\x1B\x03\x19[\x93\x92PPPV[`\0`\0\x80Q` a2\xB3\x839\x81Q\x91R`\x02\x01\x82`@Qa\x05\xC9\x91\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x05\xEAa\x0E\xA4V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x06\x07\x90``\x01a\x05VV[PPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x06.Wa\x06.a\x0E\xA4V[`\0[\x81\x81\x10\x15a\x07\nWa\x07\x02\x83\x83\x83\x81\x81\x10a\x06NWa\x06Na-YV[\x90P` \x02\x81\x01\x90a\x06`\x91\x90a-oV[a\x06n\x90` \x81\x01\x90a(\rV[\x84\x84\x84\x81\x81\x10a\x06\x80Wa\x06\x80a-YV[\x90P` \x02\x81\x01\x90a\x06\x92\x91\x90a-oV[` \x015\x85\x85\x85\x81\x81\x10a\x06\xA8Wa\x06\xA8a-YV[\x90P` \x02\x81\x01\x90a\x06\xBA\x91\x90a-oV[a\x06\xC8\x90`@\x81\x01\x90a-\x85V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[`\x01\x01a\x061V[PPPV[`\x003s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x07DW`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81` \x85\x015`@\x1C`\x04a\x07\\``\x88\x01\x88a-\x85V[\x90P\x10\x15\x80\x15a\x07\xA0WPa\x07t``\x87\x01\x87a-\x85V[a\x07\x83\x91`\x04\x91`\0\x91a-\xCBV[a\x07\x8C\x91a-\xF5V[`\x01`\x01`\xE0\x1B\x03\x19\x16c\xBFk\xA1\xFC`\xE0\x1B\x14[\x15a\x07\xDFWa\x07\xAE\x86a\t.V[\x94Pa!\x05\x81\x14a\x07\xDAW`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x08\x04V[a!\x05\x81\x03a\x08\x04W`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x07\xD1V[a\x08\x1B\x85a\x08\x16a\x01@\x89\x01\x89a-\x85V[a\x0F\x01V[\x15a\x08*W`\0\x92PPa\x080V[`\x01\x92PP[\x80\x15a\x08BW`\08`\08\x843Z\xF1P[P\x93\x92PPPV[\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\x000\x81\x03a\x08\x80Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[a\x08\x89\x84a\x10\x86V[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x08\xDBWcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\t(W`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\t&W=`\0\x82>=\x81\xFD[P[PPPPV[`\0a\t9\x82a\x10\x8EV[`@\x80Q` \x81\x01\x92\x90\x92Rs_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x90\x82\x01R``\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\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\x000\x81\x14a\t\xB7Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91P[P\x90V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\n\x02Wa\n\x02a\x0E\xA4V[`@\x83\x06`@Q\x01`@Ra\x07\n\x82\x82a\x06\x0BV[`\0\x80Q` a2\xB3\x839\x81Q\x91RT\x15a\nEW`@Qc\x02\xEDT=`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x06\x07a\nR\x82\x84a.%V[a\x10\xA7V[a\n_a\x0E\xA4V[`\0a\nj\x82a\x0BkV[\x90P\x80Q`\0\x03a\n\x91W`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01a\x07\xD1V[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\n\xC1\x90\x83\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\n\xED`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x0B\x08\x91a'\x85V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x0B8\x91\x90a,rV[`@Q\x80\x91\x03\x90\xA2PPV[`\x0F`\xF8\x1B``\x80`\0\x80\x80\x83a\x0BYa\x11\xF9V[\x97\x98\x90\x97\x96PF\x95P0\x94P\x91\x92P\x90V[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x0B\xA7\x90a.\xAAV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0B\xD3\x90a.\xAAV[\x80\x15a\x0C W\x80`\x1F\x10a\x0B\xF5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0C V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0C\x03W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c)V^;`\xE0\x1B\x14\x80a\x0C]WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x03\xC3\xCF\xC9`\xE2\x1B\x14[\x80a\x0CxWP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c9o\x1D\xAD`\xE1\x1B\x14[\x80a\x0C\x93WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c'\x8FyC`\xE1\x1B\x14[\x15a\x0C\xA0WP`\x01\x91\x90PV[P`\0\x91\x90PV[`\0`\0\x80Q` a2\xB3\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\xC9\x91a-=V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x11Wa\r\x11a\x0E\xA4V[a\t(\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x85W`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\r\x94`\x04\x82\x84\x86a-\xCBV[a\r\x9D\x91a-\xF5V[\x90Pa\r\xA8\x81a\x0C,V[a\r\xD1W`@Qc\x1D\x83p\xA3`\xE1\x1B\x81R`\x01`\x01`\xE0\x1B\x03\x19\x82\x16`\x04\x82\x01R`$\x01a\x07\xD1V[a\x07\n0`\0\x85\x85\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[`\0a\x05/\x82a\x12@V[`\0\x80`\0a\x0E+a\x11\xF9V[\x81Q` \x80\x84\x01\x91\x90\x91 \x82Q\x82\x84\x01 `@\x80Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x94\x81\x01\x94\x90\x94R\x83\x01\x91\x90\x91R``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R\x91\x93P\x91P`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x92PPP\x90V[a\x0E\xAD3a\x0C\xA8V[\x80a\x0E\xB7WP30\x14[\x15a\x0E\xBEWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05j\x81`\0\x80Q` a2\xB3\x839\x81Q\x91R[\x80T\x90`\0a\x0E\xF8\x83a.\xF4V[\x91\x90PUa\x12vV[`\0\x80a\x0F\x10\x83\x85\x01\x85a/\rV[\x90P`\0a\x0F!\x82`\0\x01Qa\x0BkV[\x90P\x80Q` \x03a\x0F\x80W`\x01`\x01`\xA0\x1B\x03a\x0F=\x82a/\x99V[\x11\x15a\x0F^W\x80`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\0` \x82\x01Q\x90Pa\x0Fv\x81\x88\x85` \x01Qa\x13EV[\x93PPPPa\x05\xA0V[\x80Q`@\x03a\x0F\xFBW`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x0F\xA0\x91\x90a/\xBDV[\x91P\x91P`\0\x84` \x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xBE\x91\x90a0&V[\x90Pa\x0F\xEF\x89`@Q` \x01a\x0F\xD6\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\0\x83\x86\x86a\x14JV[\x95PPPPPPa\x05\xA0V[\x80`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x102\x91\x90a-=V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x10oW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10tV[``\x91P[P\x91P\x91P\x81a\t&W\x80Q` \x82\x01\xFD[a\x05ja\x0E\xA4V[`\0a\x10\x99\x82a\x17\xBAV[\x80Q\x90` \x01 \x90P\x91\x90PV[`\0[\x81Q\x81\x10\x15a\x06\x07W\x81\x81\x81Q\x81\x10a\x10\xC5Wa\x10\xC5a-YV[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x10\xF9WP\x81\x81\x81Q\x81\x10a\x10\xEBWa\x10\xEBa-YV[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x112W\x81\x81\x81Q\x81\x10a\x11\x10Wa\x11\x10a-YV[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[\x81\x81\x81Q\x81\x10a\x11DWa\x11Da-YV[` \x02` \x01\x01QQ` \x14\x80\x15a\x11\x86WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x11sWa\x11sa-YV[` \x02` \x01\x01Qa\x11\x84\x90a/\x99V[\x11[\x15a\x11\xBFW\x81\x81\x81Q\x81\x10a\x11\x9DWa\x11\x9Da-YV[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[a\x11\xF1\x82\x82\x81Q\x81\x10a\x11\xD4Wa\x11\xD4a-YV[` \x02` \x01\x01Qa\x0E\xEA`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\x01\x01a\x10\xAAV[`@\x80Q\x80\x82\x01\x82R`\x15\x81Rt\x10\xDB\xDA[\x98\x98\\\xD9H\x14\xDBX\\\x9D\x08\x15\xD8[\x1B\x19]`Z\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R`\x01\x83R`1`\xF8\x1B\x90\x83\x01R\x91V[`\0a\x12Ja\x0E\x1EV[a\x12S\x83a\x18\x8DV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x92\x90\x92R`B\x82\x01R`b\x01a\tbV[a\x12\x7F\x82a\x05\xA7V[\x15a\x12\x9FW\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\x01`\0\x80Q` a2\xB3\x839\x81Q\x91R`\x02\x01\x83`@Qa\x12\xC1\x91\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x12\xF7`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x13\x14\x90\x82a11V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x0B8\x91\x90a,rV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91`\0\x83\x15a\x05\xA0W`@Q\x83`\0R` \x83\x01Q`@R`@\x83Q\x03a\x13\xB5W`@\x83\x01Q`\x1B\x81`\xFF\x1C\x01` R\x80`\x01\x1B`\x01\x1C``RP` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\xB3WP`\0``R`@RP`\x01a\x05\xA0V[P[`A\x83Q\x03a\x13\xFBW``\x83\x01Q`\0\x1A` R`@\x83\x01Q``R` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\xF9WP`\0``R`@RP`\x01a\x05\xA0V[P[`\0``R\x80`@Rc\x16&\xBA~`\xE0\x1B\x80\x82R\x84`\x04\x83\x01R`$\x82\x01`@\x81R\x84Q` \x01\x80`D\x85\x01\x82\x88`\x04Z\xFAPP` \x81`D=\x01\x85\x8AZ\xFA\x90Q\x90\x91\x14\x16\x91PP\x93\x92PPPV[`\0\x7F\x7F\xFF\xFF\xFF\x80\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDEs}V\xD3\x8B\xCFBy\xDC\xE5a~1\x92\xA8\x84`\xA0\x01Q\x11\x15a\x14\x80WP`\0a\x17\xB1V[``\x84\x01Q`\0\x90a\x14\xA3\x90a\x14\x97\x81`\x15a1\xF0V[` \x88\x01Q\x91\x90a\x18\xC8V[\x90P\x7F\xFF\x1A*\x91v\xD6P\xE4\xA9\x9D\xED\xB5\x8F\x17\x93\095\x13\x05y\xFE\x17\xB5\xA3\xF6\x98\xAC[\0\xE64\x81\x80Q\x90` \x01 \x14a\x14\xDDW`\0\x91PPa\x17\xB1V[`\0a\x14\xEB\x88`\x01\x80a\x19.V[`@Q` \x01a\x14\xFB\x91\x90a2\x03V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x153\x87`@\x01Q\x83Q\x89`@\x01Qa\x15'\x91\x90a1\xF0V[` \x8A\x01Q\x91\x90a\x18\xC8V[\x90P\x81\x80Q\x90` \x01 \x81\x80Q\x90` \x01 \x14a\x15VW`\0\x93PPPPa\x17\xB1V[\x86Q\x80Q`\x01`\xF8\x1B\x91\x82\x91` \x90\x81\x10a\x15sWa\x15sa-YV[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14a\x15\x94W`\0\x93PPPPa\x17\xB1V[\x87\x80\x15a\x15\xCCWP\x86Q\x80Q`\x01`\xFA\x1B\x91\x82\x91` \x90\x81\x10a\x15\xB9Wa\x15\xB9a-YV[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14\x15[\x15a\x15\xDDW`\0\x93PPPPa\x17\xB1V[`\0`\x02\x88` \x01Q`@Qa\x15\xF3\x91\x90a-=V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16\x10W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x163\x91\x90a2DV[\x90P`\0`\x02\x89`\0\x01Q\x83`@Q` \x01a\x16P\x92\x91\x90a2]V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x16j\x91a-=V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16\x87W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xAA\x91\x90a2DV[`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`@\x80Q` \x81\x01\x87\x90R\x90\x81\x01\x93\x90\x93R``\x83\x01R\x91\x81\x01\x8B\x90R\x90\x81\x01\x89\x90R\x90\x91P`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80a\x01\0`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x17\x10\x91\x90a-=V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x17KW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x17PV[``\x91P[P\x80Q\x91\x93P\x91P\x15\x15\x82\x80\x15a\x17dWP\x80[\x15a\x17\x90W\x81\x80` \x01\x90Q\x81\x01\x90a\x17}\x91\x90a2DV[`\x01\x14\x99PPPPPPPPPPa\x17\xB1V[a\x17\xA5\x85\x8E`\x80\x01Q\x8F`\xA0\x01Q\x8F\x8Fa\x1A#V[\x99PPPPPPPPPP[\x95\x94PPPPPV[``\x815` \x83\x015`\0a\x17\xDAa\x17\xD5`@\x87\x01\x87a-\x85V[a\x1B\x06V[\x90P`\0a\x17\xEEa\x17\xD5``\x88\x01\x88a-\x85V[\x90P`\x80\x86\x015`\xA0\x87\x015`\xC0\x88\x015`\xE0\x89\x015a\x01\0\x8A\x015`\0a\x18\x1Da\x17\xD5a\x01 \x8E\x01\x8Ea-\x85V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x9C\x90\x9C\x16` \x8D\x01R\x8B\x81\x01\x9A\x90\x9AR``\x8B\x01\x98\x90\x98RP`\x80\x89\x01\x95\x90\x95R`\xA0\x88\x01\x93\x90\x93R`\xC0\x87\x01\x91\x90\x91R`\xE0\x86\x01Ra\x01\0\x85\x01Ra\x01 \x84\x01Ra\x01@\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81Ra\x01`\x90\x92\x01\x90R\x92\x91PPV[`@\x80Q\x7F\x9BI=\"!\x05\xFE\xE7\xDF\x16:\xB5\xD5\x7F\x0B\xF1\xFF\xD2\xDA\x04\xDD_\xAF\xBE\x10\xB5LA\xC1\xAD\xC6W` \x82\x01R\x90\x81\x01\x82\x90R`\0\x90``\x01a\tbV[``\x83Q\x82\x81\x11a\x18\xD7W\x80\x92P[\x83\x81\x11a\x18\xE2W\x80\x93P[P\x81\x83\x10\x15a\x05\xA0WP`@Q\x82\x82\x03\x80\x82R\x93\x83\x01\x93`\x1F\x19`\x1F\x82\x01\x81\x16[\x86\x81\x01Q\x84\x82\x01R\x81\x01\x80a\x19\x03WP`\0\x83\x83\x01` \x01R`?\x90\x91\x01\x16\x81\x01`@R\x93\x92PPPV[``\x83Q\x80\x15a\x08BW`\x03`\x02\x82\x01\x04`\x02\x1B`@Q\x92P\x7FABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`\x1FRa\x06p\x85\x15\x02\x7Fghijklmnopqrstuvwxyz0123456789-_\x18`?R` \x83\x01\x81\x81\x01\x83\x88` \x01\x01\x80Q`\0\x82R[`\x03\x8A\x01\x99P\x89Q`?\x81`\x12\x1C\x16Q`\0S`?\x81`\x0C\x1C\x16Q`\x01S`?\x81`\x06\x1C\x16Q`\x02S`?\x81\x16Q`\x03SP`\0Q\x84R`\x04\x84\x01\x93P\x82\x84\x10a\x19\xAAW\x90R` \x01`@Ra==`\xF0\x1B`\x03\x84\x06`\x02\x04\x80\x83\x03\x91\x90\x91R`\0\x86\x15\x15\x90\x91\x02\x91\x82\x90\x03R\x90\x03\x82RP\x93\x92PPPV[`\0\x84\x15\x80a\x1A@WP`\0\x80Q` a2\x93\x839\x81Q\x91R\x85\x10\x15[\x80a\x1AIWP\x83\x15[\x80a\x1AbWP`\0\x80Q` a2\x93\x839\x81Q\x91R\x84\x10\x15[\x15a\x1AoWP`\0a\x17\xB1V[a\x1Ay\x83\x83a\x1B\x19V[a\x1A\x85WP`\0a\x17\xB1V[`\0a\x1A\x90\x85a\x1C\x13V[\x90P`\0`\0\x80Q` a2\x93\x839\x81Q\x91R\x82\x89\t\x90P`\0`\0\x80Q` a2\x93\x839\x81Q\x91R\x83\x89\t\x90P`\0a\x1A\xCC\x87\x87\x85\x85a\x1C\x85V[\x90P`\0\x80Q` a2\x93\x839\x81Q\x91Ra\x1A\xF5\x8A`\0\x80Q` a2\x93\x839\x81Q\x91Ra2\x7FV[\x82\x08\x15\x9A\x99PPPPPPPPPPV[`\0`@Q\x82\x80\x85\x837\x90 \x93\x92PPPV[`\0\x82\x15\x80\x15a\x1B'WP\x81\x15[\x80a\x1B?WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x14[\x80a\x1BWWP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x14[\x15a\x1BdWP`\0a\x05/V[`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x90P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x7F\xFF\xFF\xFF\xFF\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x87\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\t\x08\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x7FZ\xC65\xD8\xAA:\x93\xE7\xB3\xEB\xBDUv\x98\x86\xBCe\x1D\x06\xB0\xCCS\xB0\xF6;\xCE<>'\xD2`K\x82\x08\x91\x90\x91\x14\x94\x93PPPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%O`\x80\x82\x01R`\0\x80Q` a2\x93\x839\x81Q\x91R`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C~W`\0\x80\xFD[Q\x92\x91PPV[`\0\x80\x80\x80`\xFF\x81\x80\x88\x15\x80\x15a\x1C\x9AWP\x87\x15[\x15a\x1C\xAEW`\0\x96PPPPPPPa#GV[a\x1C\xFA\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x8D\x8Da#OV[\x90\x92P\x90P\x81\x15\x80\x15a\x1D\x0BWP\x80\x15[\x15a\x1D9W`\0\x80Q` a2\x93\x839\x81Q\x91R\x88`\0\x80Q` a2\x93\x839\x81Q\x91R\x03\x8A\x08\x98P`\0\x97P[`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01[\x80a\x1DlW`\x01\x84\x03\x93P`\x01\x8A\x85\x1C\x16`\x01\x8A\x86\x1C\x16`\x01\x1B\x01\x90Pa\x1DJV[P`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01\x95P`\x01\x86\x03a\x1D\xCEW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x96P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x93P[`\x02\x86\x03a\x1D\xDDW\x8A\x96P\x89\x93P[`\x03\x86\x03a\x1D\xECW\x81\x96P\x80\x93P[`\x01\x83\x03\x92P`\x01\x95P`\x01\x94P[\x82`\0\x19\x11\x15a\"\xD0W`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x02\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8A\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x84\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x8D\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08\t`\x03\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x85\t\x98P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x84\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x08\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\x82\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x87\t\x08\x97P`\x01\x8D\x88\x1C\x16`\x01\x8D\x89\x1C\x16`\x01\x1B\x01\x90P\x80a\x1FxW\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x97PPPPPa\"\xC5V[`\x01\x81\x03a\x1F\xC7W\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x93P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x92P[`\x02\x81\x03a\x1F\xD6W\x8E\x93P\x8D\x92P[`\x03\x81\x03a\x1F\xE5W\x85\x93P\x84\x92P[\x89a\x1F\xFEWP\x91\x98P`\x01\x97P\x87\x96P\x94Pa\"\xC5\x90PV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x86\t\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x88\t\x08\x93P\x80a!\xB7W\x83a!\xB7W`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x86\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8D\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x86\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x8F\x08\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81`\x03\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x86\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x85\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x08\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8D`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x85\x08\x83\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8A\x87\t\x85\x08\x98PPPPPPa\"\xC5V[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x83\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8D\t\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8C\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8E\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87\x88\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83\x8D\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x86\x08\t\x08\x9APPPP\x80\x9APPPPP[`\x01\x83\x03\x92Pa\x1D\xFBV[`@Q\x86``\x82\x01R` \x81R` \x80\x82\x01R` `@\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa#*W`\0\x80\xFD[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81Q\x89\t\x97PPPPPPPP[\x94\x93PPPPV[`\0\x80\x80\x80\x86a#fW\x85\x85\x93P\x93PPPa#\xD4V[\x84a#xW\x87\x87\x93P\x93PPPa#\xD4V[\x85\x88\x14\x80\x15a#\x86WP\x84\x87\x14[\x15a#\xA7Wa#\x98\x88\x88`\x01\x80a#\xDDV[\x92\x9AP\x90\x98P\x92P\x90Pa#\xC1V[a#\xB6\x88\x88`\x01\x80\x8A\x8Aa%8V[\x92\x9AP\x90\x98P\x92P\x90P[a#\xCD\x88\x88\x84\x84a&\xBCV[\x93P\x93PPP[\x94P\x94\x92PPPV[`\0\x80`\0\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x02\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x83\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x8B\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8C\x08\t`\x03\t\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x89\t\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x83\x08\x87\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x84\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x88\x85\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x89\x08\x92P\x94P\x94P\x94P\x94\x90PV[`\0\x80`\0\x80\x88`\0\x03a%WWP\x84\x92P\x83\x91P`\x01\x90P\x80a&\xAFV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x98\x89\x03\x98\x89\x81\x89\x88\t\x08\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x89\t\x08\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x87\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x89\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x88\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8B\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84\x8B\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\t\x08\x92P[\x96P\x96P\x96P\x96\x92PPPV[`\0\x80`\0a&\xCA\x84a')V[\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x87\t\x91P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x87\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x93PPP\x94P\x94\x92PPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C~W`\0\x80\xFD[P\x80Ta'\x91\x90a.\xAAV[`\0\x82U\x80`\x1F\x10a'\xA1WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x05j\x91\x90[\x80\x82\x11\x15a\t\xDBW`\0\x81U`\x01\x01a'\xBBV[`\0\x80`@\x83\x85\x03\x12\x15a'\xE2W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a(\x08W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a(\x1FW`\0\x80\xFD[a\x05\xA0\x82a'\xF1V[`\0\x80\x83`\x1F\x84\x01\x12a(:W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(QW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a(iW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a(\x85W`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xA2W`\0\x80\xFD[a(\xAE\x86\x82\x87\x01a((V[\x94\x97\x90\x96P\x93\x94PPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a(\xF3Wa(\xF3a(\xBBV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)!Wa)!a(\xBBV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a)BWa)Ba(\xBBV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)aW`\0\x80\xFD[\x815a)ta)o\x82a))V[a(\xF9V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\x89W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a)\xB8W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xCEW`\0\x80\xFD[a#G\x84\x82\x85\x01a)PV[`\0\x80\x83`\x1F\x84\x01\x12a)\xECW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x03W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a(iW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a*1W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a*GW`\0\x80\xFD[a*S\x85\x82\x86\x01a)\xDAV[\x90\x96\x90\x95P\x93PPPPV[`\0a\x01`\x82\x84\x03\x12\x15a*rW`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a*\x8DW`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xA3W`\0\x80\xFD[a*\xAF\x86\x82\x87\x01a*_V[\x96` \x86\x015\x96P`@\x90\x95\x015\x94\x93PPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a*\xDAW`\0\x80\xFD[a*\xE3\x84a'\xF1V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xA2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a+\x10W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a+&W`\0\x80\xFD[a#G\x84\x82\x85\x01a*_V[`\0\x80`\0`@\x84\x86\x03\x12\x15a+GW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+dW`\0\x80\xFD[a(\xAE\x86\x82\x87\x01a)\xDAV[`\0` \x82\x84\x03\x12\x15a+\x82W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a+\xA4W\x81\x81\x01Q\x83\x82\x01R` \x01a+\x8CV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra+\xC5\x81` \x86\x01` \x86\x01a+\x89V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\xFF`\xF8\x1B\x88\x16\x81R`\0` `\xE0` \x84\x01Ra+\xFA`\xE0\x84\x01\x8Aa+\xADV[\x83\x81\x03`@\x85\x01Ra,\x0C\x81\x8Aa+\xADV[``\x85\x01\x89\x90R`\x01`\x01`\xA0\x1B\x03\x88\x16`\x80\x86\x01R`\xA0\x85\x01\x87\x90R\x84\x81\x03`\xC0\x86\x01R\x85Q\x80\x82R` \x80\x88\x01\x93P\x90\x91\x01\x90`\0[\x81\x81\x10\x15a,`W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a,DV[P\x90\x9C\x9BPPPPPPPPPPPPV[` \x81R`\0a\x05\xA0` \x83\x01\x84a+\xADV[`\0` \x82\x84\x03\x12\x15a,\x97W`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\xA0W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a,\xC5W`\0\x80\xFD[a,\xCE\x85a'\xF1V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xF0W`\0\x80\xFD[a,\xFC\x87\x82\x88\x01a((V[\x95\x98\x94\x97P\x95PPPPV[`\0\x80` \x83\x85\x03\x12\x15a-\x1BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-1W`\0\x80\xFD[a*S\x85\x82\x86\x01a((V[`\0\x82Qa-O\x81\x84` \x87\x01a+\x89V[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x825`^\x19\x836\x03\x01\x81\x12a-OW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a-\x9CW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a-\xB6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a(iW`\0\x80\xFD[`\0\x80\x85\x85\x11\x15a-\xDBW`\0\x80\xFD[\x83\x86\x11\x15a-\xE8W`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\x01`\x01`\xE0\x1B\x03\x19\x815\x81\x81\x16\x91`\x04\x85\x10\x15a.\x1DW\x80\x81\x86`\x04\x03`\x03\x1B\x1B\x83\x16\x16\x92P[PP\x92\x91PPV[`\0`\x01`\x01`@\x1B\x03\x80\x84\x11\x15a.?Wa.?a(\xBBV[\x83`\x05\x1B` a.Q` \x83\x01a(\xF9V[\x86\x81R\x91\x85\x01\x91` \x81\x01\x906\x84\x11\x15a.jW`\0\x80\xFD[\x86[\x84\x81\x10\x15a.\x9EW\x805\x86\x81\x11\x15a.\x84W`\0\x80\x81\xFD[a.\x906\x82\x8B\x01a)PV[\x84RP\x91\x83\x01\x91\x83\x01a.lV[P\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a.\xBEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a*rWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a/\x06Wa/\x06a.\xDEV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a/\x1FW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a/6W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a/JW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a/eWa/ea(\xBBV[`@R\x825\x81R` \x83\x015\x82\x81\x11\x15a/~W`\0\x80\xFD[a/\x8A\x87\x82\x86\x01a)PV[` \x83\x01RP\x95\x94PPPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a*rW`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a/\xD0W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0\x82`\x1F\x83\x01\x12a/\xF2W`\0\x80\xFD[\x81Qa0\0a)o\x82a))V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a0\x15W`\0\x80\xFD[a#G\x82` \x83\x01` \x87\x01a+\x89V[`\0` \x82\x84\x03\x12\x15a08W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0OW`\0\x80\xFD[\x90\x83\x01\x90`\xC0\x82\x86\x03\x12\x15a0cW`\0\x80\xFD[a0ka(\xD1V[\x82Q\x82\x81\x11\x15a0zW`\0\x80\xFD[a0\x86\x87\x82\x86\x01a/\xE1V[\x82RP` \x83\x01Q\x82\x81\x11\x15a0\x9BW`\0\x80\xFD[a0\xA7\x87\x82\x86\x01a/\xE1V[` \x83\x01RP`@\x83\x01Q`@\x82\x01R``\x83\x01Q``\x82\x01R`\x80\x83\x01Q`\x80\x82\x01R`\xA0\x83\x01Q`\xA0\x82\x01R\x80\x93PPPP\x92\x91PPV[`\x1F\x82\x11\x15a\x07\nW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a1\nWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a1)W\x82\x81U`\x01\x01a1\x16V[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a1JWa1Ja(\xBBV[a1^\x81a1X\x84Ta.\xAAV[\x84a0\xE1V[` \x80`\x1F\x83\x11`\x01\x81\x14a1\x93W`\0\x84\x15a1{WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua1)V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a1\xC2W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a1\xA3V[P\x85\x82\x10\x15a1\xE0W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[\x80\x82\x01\x80\x82\x11\x15a\x05/Wa\x05/a.\xDEV[l\x111\xB40\xB662\xB73\xB2\x91\x1D\x11`\x99\x1B\x81R\x81Q`\0\x90a2,\x81`\r\x85\x01` \x87\x01a+\x89V[`\x11`\xF9\x1B`\r\x93\x90\x91\x01\x92\x83\x01RP`\x0E\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15a2VW`\0\x80\xFD[PQ\x91\x90PV[`\0\x83Qa2o\x81\x84` \x88\x01a+\x89V[\x91\x90\x91\x01\x91\x82RP` \x01\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x05/Wa\x05/a.\xDEV\xFE\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%Q\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\0\xA2dipfsX\"\x12 v\xB8R\xC4N\x04\xB7(<\xDC\\\xE0:a\xAFh%I\x82*%\xC9\xCD\x17 \xCFHp\xE5B\xBD\xDDdsolcC\0\x08\x17\x003\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\0"; - /// The bytecode of the contract. - pub static MOCKCOINBASESMARTWALLET_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01jW`\x005`\xE0\x1C\x80co-\xE7\x0E\x11a\0\xD1W\x80c\xA2\xE1\xA8\xD8\x11a\0\x8AW\x80c\xBFk\xA1\xFC\x11a\0dW\x80c\xBFk\xA1\xFC\x14a\x04\\W\x80c\xCE\x15\x06\xBE\x14a\x04oW\x80c\xD9H\xFD.\x14a\x04\x8FW\x80c\xF6\x98\xDA%\x14a\x04\xB1Wa\x01qV[\x80c\xA2\xE1\xA8\xD8\x14a\x04\x02W\x80c\xB0\xD6\x91\xFE\x14a\x04\"W\x80c\xB6\x1D'\xF6\x14a\x04IWa\x01qV[\x80co-\xE7\x0E\x14a\x03DW\x80cr\xDE;Z\x14a\x03WW\x80c\x84\xB0\x19n\x14a\x03wW\x80c\x88\xCEL|\x14a\x03\x9FW\x80c\x8E\xA6\x90)\x14a\x03\xB5W\x80c\x9F\x9B\xCB4\x14a\x03\xE2Wa\x01qV[\x80c:\x87\x1C\xDD\x11a\x01#W\x80c:\x87\x1C\xDD\x14a\x02\x80W\x80cO\x1E\xF2\x86\x14a\x02\xA1W\x80cOn\x7F\"\x14a\x02\xB4W\x80cR\xD1\x90-\x14a\x02\xD4W\x80cW\x7F<\xBF\x14a\x02\xE9W\x80c\\`\xDA\x1B\x14a\x02\xFCWa\x01qV[\x80c\x06j\x1E\xB7\x14a\x01\x9FW\x80c\x0F\x0F?$\x14a\x01\xD4W\x80c\x16&\xBA~\x14a\x01\xF4W\x80c\x1C\xA59?\x14a\x02-W\x80c)V^;\x14a\x02MW\x80c4\xFC\xD5\xBE\x14a\x02mWa\x01qV[6a\x01qW\0[`\x005`\xE0\x1Cc\xBC\x19|\x81\x81\x14c\xF2:na\x82\x14\x17c\x15\x0Bz\x02\x82\x14\x17\x15a\x01\x9DW\x80` R` `<\xF3[\0[4\x80\x15a\x01\xABW`\0\x80\xFD[Pa\x01\xBFa\x01\xBA6`\x04a'\xCFV[a\x04\xC6V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xE0W`\0\x80\xFD[Pa\x01\x9Da\x01\xEF6`\x04a(\rV[a\x055V[4\x80\x15a\x02\0W`\0\x80\xFD[Pa\x02\x14a\x02\x0F6`\x04a(pV[a\x05mV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01\xCBV[4\x80\x15a\x029W`\0\x80\xFD[Pa\x01\xBFa\x02H6`\x04a)\xA6V[a\x05\xA7V[4\x80\x15a\x02YW`\0\x80\xFD[Pa\x01\x9Da\x02h6`\x04a'\xCFV[a\x05\xE2V[a\x01\x9Da\x02{6`\x04a*\x1EV[a\x06\x0BV[a\x02\x93a\x02\x8E6`\x04a*xV[a\x07\x0FV[`@Q\x90\x81R` \x01a\x01\xCBV[a\x01\x9Da\x02\xAF6`\x04a*\xC5V[a\x08JV[4\x80\x15a\x02\xC0W`\0\x80\xFD[Pa\x02\x93a\x02\xCF6`\x04a*\xFEV[a\t.V[4\x80\x15a\x02\xE0W`\0\x80\xFD[Pa\x02\x93a\t\x7FV[a\x01\x9Da\x02\xF76`\x04a+2V[a\t\xDFV[4\x80\x15a\x03\x08W`\0\x80\xFD[P\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCT[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xCBV[a\x01\x9Da\x03R6`\x04a*\x1EV[a\n\x17V[4\x80\x15a\x03cW`\0\x80\xFD[Pa\x01\x9Da\x03r6`\x04a+pV[a\nWV[4\x80\x15a\x03\x83W`\0\x80\xFD[Pa\x03\x8Ca\x0BDV[`@Qa\x01\xCB\x97\x96\x95\x94\x93\x92\x91\x90a+\xD9V[4\x80\x15a\x03\xABW`\0\x80\xFD[Pa\x02\x93a!\x05\x81V[4\x80\x15a\x03\xC1W`\0\x80\xFD[Pa\x03\xD5a\x03\xD06`\x04a+pV[a\x0BkV[`@Qa\x01\xCB\x91\x90a,rV[4\x80\x15a\x03\xEEW`\0\x80\xFD[Pa\x01\xBFa\x03\xFD6`\x04a,\x85V[a\x0C,V[4\x80\x15a\x04\x0EW`\0\x80\xFD[Pa\x01\xBFa\x04\x1D6`\x04a(\rV[a\x0C\xA8V[4\x80\x15a\x04.W`\0\x80\xFD[Ps_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89a\x03,V[a\x01\x9Da\x04W6`\x04a,\xAFV[a\x0C\xEEV[a\x01\x9Da\x04j6`\x04a-\x08V[a\rRV[4\x80\x15a\x04{W`\0\x80\xFD[Pa\x02\x93a\x04\x8A6`\x04a+pV[a\x0E\x13V[4\x80\x15a\x04\x9BW`\0\x80\xFD[P`\0\x80Q` a2\xB3\x839\x81Q\x91RTa\x02\x93V[4\x80\x15a\x04\xBDW`\0\x80\xFD[Pa\x02\x93a\x0E\x1EV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\x19\x91a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P[\x92\x91PPV[a\x05=a\x0E\xA4V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x05j\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x0E\xD6V[PV[`\0a\x05\x82a\x05{\x85a\x0E\x13V[\x84\x84a\x0F\x01V[\x15a\x05\x95WPc\x0B\x13]?`\xE1\x1Ba\x05\xA0V[P`\x01`\x01`\xE0\x1B\x03\x19[\x93\x92PPPV[`\0`\0\x80Q` a2\xB3\x839\x81Q\x91R`\x02\x01\x82`@Qa\x05\xC9\x91\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x05\xEAa\x0E\xA4V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x06\x07\x90``\x01a\x05VV[PPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x06.Wa\x06.a\x0E\xA4V[`\0[\x81\x81\x10\x15a\x07\nWa\x07\x02\x83\x83\x83\x81\x81\x10a\x06NWa\x06Na-YV[\x90P` \x02\x81\x01\x90a\x06`\x91\x90a-oV[a\x06n\x90` \x81\x01\x90a(\rV[\x84\x84\x84\x81\x81\x10a\x06\x80Wa\x06\x80a-YV[\x90P` \x02\x81\x01\x90a\x06\x92\x91\x90a-oV[` \x015\x85\x85\x85\x81\x81\x10a\x06\xA8Wa\x06\xA8a-YV[\x90P` \x02\x81\x01\x90a\x06\xBA\x91\x90a-oV[a\x06\xC8\x90`@\x81\x01\x90a-\x85V[\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[`\x01\x01a\x061V[PPPV[`\x003s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\x07DW`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x81` \x85\x015`@\x1C`\x04a\x07\\``\x88\x01\x88a-\x85V[\x90P\x10\x15\x80\x15a\x07\xA0WPa\x07t``\x87\x01\x87a-\x85V[a\x07\x83\x91`\x04\x91`\0\x91a-\xCBV[a\x07\x8C\x91a-\xF5V[`\x01`\x01`\xE0\x1B\x03\x19\x16c\xBFk\xA1\xFC`\xE0\x1B\x14[\x15a\x07\xDFWa\x07\xAE\x86a\t.V[\x94Pa!\x05\x81\x14a\x07\xDAW`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x08\x04V[a!\x05\x81\x03a\x08\x04W`@Qc.\xF3x\x13`\xE0\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x07\xD1V[a\x08\x1B\x85a\x08\x16a\x01@\x89\x01\x89a-\x85V[a\x0F\x01V[\x15a\x08*W`\0\x92PPa\x080V[`\x01\x92PP[\x80\x15a\x08BW`\08`\08\x843Z\xF1P[P\x93\x92PPPV[\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\x000\x81\x03a\x08\x80Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[a\x08\x89\x84a\x10\x86V[\x83``\x1B``\x1C\x93PcR\xD1\x90-`\x01R\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x80` `\x01`\x04`\x1D\x89Z\xFAQ\x14a\x08\xDBWcU)\x9BI`\x01R`\x04`\x1D\xFD[\x84\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;`\08\xA2\x84\x90U\x81\x15a\t(W`@Q\x82\x84\x827`\08\x84\x83\x88Z\xF4a\t&W=`\0\x82>=\x81\xFD[P[PPPPV[`\0a\t9\x82a\x10\x8EV[`@\x80Q` \x81\x01\x92\x90\x92Rs_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x90\x82\x01R``\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x91\x90PV[`\0\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\x000\x81\x14a\t\xB7Wc\x9F\x03\xA0&`\0R`\x04`\x1C\xFD[\x7F6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\x91P[P\x90V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\n\x02Wa\n\x02a\x0E\xA4V[`@\x83\x06`@Q\x01`@Ra\x07\n\x82\x82a\x06\x0BV[`\0\x80Q` a2\xB3\x839\x81Q\x91RT\x15a\nEW`@Qc\x02\xEDT=`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x06\x07a\nR\x82\x84a.%V[a\x10\xA7V[a\n_a\x0E\xA4V[`\0a\nj\x82a\x0BkV[\x90P\x80Q`\0\x03a\n\x91W`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01a\x07\xD1V[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\n\xC1\x90\x83\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\n\xED`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x0B\x08\x91a'\x85V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x0B8\x91\x90a,rV[`@Q\x80\x91\x03\x90\xA2PPV[`\x0F`\xF8\x1B``\x80`\0\x80\x80\x83a\x0BYa\x11\xF9V[\x97\x98\x90\x97\x96PF\x95P0\x94P\x91\x92P\x90V[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x0B\xA7\x90a.\xAAV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x0B\xD3\x90a.\xAAV[\x80\x15a\x0C W\x80`\x1F\x10a\x0B\xF5Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x0C V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x0C\x03W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c)V^;`\xE0\x1B\x14\x80a\x0C]WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x03\xC3\xCF\xC9`\xE2\x1B\x14[\x80a\x0CxWP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c9o\x1D\xAD`\xE1\x1B\x14[\x80a\x0C\x93WP`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c'\x8FyC`\xE1\x1B\x14[\x15a\x0C\xA0WP`\x01\x91\x90PV[P`\0\x91\x90PV[`\0`\0\x80Q` a2\xB3\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x05\xC9\x91a-=V[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x11Wa\r\x11a\x0E\xA4V[a\t(\x84\x84\x84\x84\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[3s_\xF17\xD4\xB0\xFD\xCDI\xDC\xA3\x0C|\xF5~W\x8A\x02m'\x89\x14a\r\x85W`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\0a\r\x94`\x04\x82\x84\x86a-\xCBV[a\r\x9D\x91a-\xF5V[\x90Pa\r\xA8\x81a\x0C,V[a\r\xD1W`@Qc\x1D\x83p\xA3`\xE1\x1B\x81R`\x01`\x01`\xE0\x1B\x03\x19\x82\x16`\x04\x82\x01R`$\x01a\x07\xD1V[a\x07\n0`\0\x85\x85\x80\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x93\x92\x91\x90\x81\x81R` \x01\x83\x83\x80\x82\x847`\0\x92\x01\x91\x90\x91RPa\x10\x16\x92PPPV[`\0a\x05/\x82a\x12@V[`\0\x80`\0a\x0E+a\x11\xF9V[\x81Q` \x80\x84\x01\x91\x90\x91 \x82Q\x82\x84\x01 `@\x80Q\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F\x94\x81\x01\x94\x90\x94R\x83\x01\x91\x90\x91R``\x82\x01RF`\x80\x82\x01R0`\xA0\x82\x01R\x91\x93P\x91P`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x92PPP\x90V[a\x0E\xAD3a\x0C\xA8V[\x80a\x0E\xB7WP30\x14[\x15a\x0E\xBEWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05j\x81`\0\x80Q` a2\xB3\x839\x81Q\x91R[\x80T\x90`\0a\x0E\xF8\x83a.\xF4V[\x91\x90PUa\x12vV[`\0\x80a\x0F\x10\x83\x85\x01\x85a/\rV[\x90P`\0a\x0F!\x82`\0\x01Qa\x0BkV[\x90P\x80Q` \x03a\x0F\x80W`\x01`\x01`\xA0\x1B\x03a\x0F=\x82a/\x99V[\x11\x15a\x0F^W\x80`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\0` \x82\x01Q\x90Pa\x0Fv\x81\x88\x85` \x01Qa\x13EV[\x93PPPPa\x05\xA0V[\x80Q`@\x03a\x0F\xFBW`\0\x80\x82\x80` \x01\x90Q\x81\x01\x90a\x0F\xA0\x91\x90a/\xBDV[\x91P\x91P`\0\x84` \x01Q\x80` \x01\x90Q\x81\x01\x90a\x0F\xBE\x91\x90a0&V[\x90Pa\x0F\xEF\x89`@Q` \x01a\x0F\xD6\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`\0\x83\x86\x86a\x14JV[\x95PPPPPPa\x05\xA0V[\x80`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\0\x80\x84`\x01`\x01`\xA0\x1B\x03\x16\x84\x84`@Qa\x102\x91\x90a-=V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x10oW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x10tV[``\x91P[P\x91P\x91P\x81a\t&W\x80Q` \x82\x01\xFD[a\x05ja\x0E\xA4V[`\0a\x10\x99\x82a\x17\xBAV[\x80Q\x90` \x01 \x90P\x91\x90PV[`\0[\x81Q\x81\x10\x15a\x06\x07W\x81\x81\x81Q\x81\x10a\x10\xC5Wa\x10\xC5a-YV[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x10\xF9WP\x81\x81\x81Q\x81\x10a\x10\xEBWa\x10\xEBa-YV[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x112W\x81\x81\x81Q\x81\x10a\x11\x10Wa\x11\x10a-YV[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[\x81\x81\x81Q\x81\x10a\x11DWa\x11Da-YV[` \x02` \x01\x01QQ` \x14\x80\x15a\x11\x86WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x11sWa\x11sa-YV[` \x02` \x01\x01Qa\x11\x84\x90a/\x99V[\x11[\x15a\x11\xBFW\x81\x81\x81Q\x81\x10a\x11\x9DWa\x11\x9Da-YV[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[a\x11\xF1\x82\x82\x81Q\x81\x10a\x11\xD4Wa\x11\xD4a-YV[` \x02` \x01\x01Qa\x0E\xEA`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\x01\x01a\x10\xAAV[`@\x80Q\x80\x82\x01\x82R`\x15\x81Rt\x10\xDB\xDA[\x98\x98\\\xD9H\x14\xDBX\\\x9D\x08\x15\xD8[\x1B\x19]`Z\x1B` \x80\x83\x01\x91\x90\x91R\x82Q\x80\x84\x01\x90\x93R`\x01\x83R`1`\xF8\x1B\x90\x83\x01R\x91V[`\0a\x12Ja\x0E\x1EV[a\x12S\x83a\x18\x8DV[`@Qa\x19\x01`\xF0\x1B` \x82\x01R`\"\x81\x01\x92\x90\x92R`B\x82\x01R`b\x01a\tbV[a\x12\x7F\x82a\x05\xA7V[\x15a\x12\x9FW\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x07\xD1\x91\x90a,rV[`\x01`\0\x80Q` a2\xB3\x839\x81Q\x91R`\x02\x01\x83`@Qa\x12\xC1\x91\x90a-=V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x12\xF7`\0\x80Q` a2\xB3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x13\x14\x90\x82a11V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x0B8\x91\x90a,rV[`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91`\0\x83\x15a\x05\xA0W`@Q\x83`\0R` \x83\x01Q`@R`@\x83Q\x03a\x13\xB5W`@\x83\x01Q`\x1B\x81`\xFF\x1C\x01` R\x80`\x01\x1B`\x01\x1C``RP` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\xB3WP`\0``R`@RP`\x01a\x05\xA0V[P[`A\x83Q\x03a\x13\xFBW``\x83\x01Q`\0\x1A` R`@\x83\x01Q``R` `\x01`\x80`\0`\x01Z\xFA\x80Q\x86\x18=\x15\x17a\x13\xF9WP`\0``R`@RP`\x01a\x05\xA0V[P[`\0``R\x80`@Rc\x16&\xBA~`\xE0\x1B\x80\x82R\x84`\x04\x83\x01R`$\x82\x01`@\x81R\x84Q` \x01\x80`D\x85\x01\x82\x88`\x04Z\xFAPP` \x81`D=\x01\x85\x8AZ\xFA\x90Q\x90\x91\x14\x16\x91PP\x93\x92PPPV[`\0\x7F\x7F\xFF\xFF\xFF\x80\0\0\0\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDEs}V\xD3\x8B\xCFBy\xDC\xE5a~1\x92\xA8\x84`\xA0\x01Q\x11\x15a\x14\x80WP`\0a\x17\xB1V[``\x84\x01Q`\0\x90a\x14\xA3\x90a\x14\x97\x81`\x15a1\xF0V[` \x88\x01Q\x91\x90a\x18\xC8V[\x90P\x7F\xFF\x1A*\x91v\xD6P\xE4\xA9\x9D\xED\xB5\x8F\x17\x93\095\x13\x05y\xFE\x17\xB5\xA3\xF6\x98\xAC[\0\xE64\x81\x80Q\x90` \x01 \x14a\x14\xDDW`\0\x91PPa\x17\xB1V[`\0a\x14\xEB\x88`\x01\x80a\x19.V[`@Q` \x01a\x14\xFB\x91\x90a2\x03V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0a\x153\x87`@\x01Q\x83Q\x89`@\x01Qa\x15'\x91\x90a1\xF0V[` \x8A\x01Q\x91\x90a\x18\xC8V[\x90P\x81\x80Q\x90` \x01 \x81\x80Q\x90` \x01 \x14a\x15VW`\0\x93PPPPa\x17\xB1V[\x86Q\x80Q`\x01`\xF8\x1B\x91\x82\x91` \x90\x81\x10a\x15sWa\x15sa-YV[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14a\x15\x94W`\0\x93PPPPa\x17\xB1V[\x87\x80\x15a\x15\xCCWP\x86Q\x80Q`\x01`\xFA\x1B\x91\x82\x91` \x90\x81\x10a\x15\xB9Wa\x15\xB9a-YV[\x01` \x01Q\x16`\x01`\x01`\xF8\x1B\x03\x19\x16\x14\x15[\x15a\x15\xDDW`\0\x93PPPPa\x17\xB1V[`\0`\x02\x88` \x01Q`@Qa\x15\xF3\x91\x90a-=V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16\x10W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x163\x91\x90a2DV[\x90P`\0`\x02\x89`\0\x01Q\x83`@Q` \x01a\x16P\x92\x91\x90a2]V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x16j\x91a-=V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x16\x87W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xAA\x91\x90a2DV[`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`@\x80Q` \x81\x01\x87\x90R\x90\x81\x01\x93\x90\x93R``\x83\x01R\x91\x81\x01\x8B\x90R\x90\x81\x01\x89\x90R\x90\x91P`\0\x90`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0\x80a\x01\0`\x01`\x01`\xA0\x1B\x03\x16\x83`@Qa\x17\x10\x91\x90a-=V[`\0`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80`\0\x81\x14a\x17KW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x17PV[``\x91P[P\x80Q\x91\x93P\x91P\x15\x15\x82\x80\x15a\x17dWP\x80[\x15a\x17\x90W\x81\x80` \x01\x90Q\x81\x01\x90a\x17}\x91\x90a2DV[`\x01\x14\x99PPPPPPPPPPa\x17\xB1V[a\x17\xA5\x85\x8E`\x80\x01Q\x8F`\xA0\x01Q\x8F\x8Fa\x1A#V[\x99PPPPPPPPPP[\x95\x94PPPPPV[``\x815` \x83\x015`\0a\x17\xDAa\x17\xD5`@\x87\x01\x87a-\x85V[a\x1B\x06V[\x90P`\0a\x17\xEEa\x17\xD5``\x88\x01\x88a-\x85V[\x90P`\x80\x86\x015`\xA0\x87\x015`\xC0\x88\x015`\xE0\x89\x015a\x01\0\x8A\x015`\0a\x18\x1Da\x17\xD5a\x01 \x8E\x01\x8Ea-\x85V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x9C\x90\x9C\x16` \x8D\x01R\x8B\x81\x01\x9A\x90\x9AR``\x8B\x01\x98\x90\x98RP`\x80\x89\x01\x95\x90\x95R`\xA0\x88\x01\x93\x90\x93R`\xC0\x87\x01\x91\x90\x91R`\xE0\x86\x01Ra\x01\0\x85\x01Ra\x01 \x84\x01Ra\x01@\x80\x84\x01\x91\x90\x91R\x81Q\x80\x84\x03\x90\x91\x01\x81Ra\x01`\x90\x92\x01\x90R\x92\x91PPV[`@\x80Q\x7F\x9BI=\"!\x05\xFE\xE7\xDF\x16:\xB5\xD5\x7F\x0B\xF1\xFF\xD2\xDA\x04\xDD_\xAF\xBE\x10\xB5LA\xC1\xAD\xC6W` \x82\x01R\x90\x81\x01\x82\x90R`\0\x90``\x01a\tbV[``\x83Q\x82\x81\x11a\x18\xD7W\x80\x92P[\x83\x81\x11a\x18\xE2W\x80\x93P[P\x81\x83\x10\x15a\x05\xA0WP`@Q\x82\x82\x03\x80\x82R\x93\x83\x01\x93`\x1F\x19`\x1F\x82\x01\x81\x16[\x86\x81\x01Q\x84\x82\x01R\x81\x01\x80a\x19\x03WP`\0\x83\x83\x01` \x01R`?\x90\x91\x01\x16\x81\x01`@R\x93\x92PPPV[``\x83Q\x80\x15a\x08BW`\x03`\x02\x82\x01\x04`\x02\x1B`@Q\x92P\x7FABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`\x1FRa\x06p\x85\x15\x02\x7Fghijklmnopqrstuvwxyz0123456789-_\x18`?R` \x83\x01\x81\x81\x01\x83\x88` \x01\x01\x80Q`\0\x82R[`\x03\x8A\x01\x99P\x89Q`?\x81`\x12\x1C\x16Q`\0S`?\x81`\x0C\x1C\x16Q`\x01S`?\x81`\x06\x1C\x16Q`\x02S`?\x81\x16Q`\x03SP`\0Q\x84R`\x04\x84\x01\x93P\x82\x84\x10a\x19\xAAW\x90R` \x01`@Ra==`\xF0\x1B`\x03\x84\x06`\x02\x04\x80\x83\x03\x91\x90\x91R`\0\x86\x15\x15\x90\x91\x02\x91\x82\x90\x03R\x90\x03\x82RP\x93\x92PPPV[`\0\x84\x15\x80a\x1A@WP`\0\x80Q` a2\x93\x839\x81Q\x91R\x85\x10\x15[\x80a\x1AIWP\x83\x15[\x80a\x1AbWP`\0\x80Q` a2\x93\x839\x81Q\x91R\x84\x10\x15[\x15a\x1AoWP`\0a\x17\xB1V[a\x1Ay\x83\x83a\x1B\x19V[a\x1A\x85WP`\0a\x17\xB1V[`\0a\x1A\x90\x85a\x1C\x13V[\x90P`\0`\0\x80Q` a2\x93\x839\x81Q\x91R\x82\x89\t\x90P`\0`\0\x80Q` a2\x93\x839\x81Q\x91R\x83\x89\t\x90P`\0a\x1A\xCC\x87\x87\x85\x85a\x1C\x85V[\x90P`\0\x80Q` a2\x93\x839\x81Q\x91Ra\x1A\xF5\x8A`\0\x80Q` a2\x93\x839\x81Q\x91Ra2\x7FV[\x82\x08\x15\x9A\x99PPPPPPPPPPV[`\0`@Q\x82\x80\x85\x837\x90 \x93\x92PPPV[`\0\x82\x15\x80\x15a\x1B'WP\x81\x15[\x80a\x1B?WP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x14[\x80a\x1BWWP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x14[\x15a\x1BdWP`\0a\x05/V[`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x90P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x7F\xFF\xFF\xFF\xFF\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFC\x87\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\t\x08\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x7FZ\xC65\xD8\xAA:\x93\xE7\xB3\xEB\xBDUv\x98\x86\xBCe\x1D\x06\xB0\xCCS\xB0\xF6;\xCE<>'\xD2`K\x82\x08\x91\x90\x91\x14\x94\x93PPPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R\x7F\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%O`\x80\x82\x01R`\0\x80Q` a2\x93\x839\x81Q\x91R`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C~W`\0\x80\xFD[Q\x92\x91PPV[`\0\x80\x80\x80`\xFF\x81\x80\x88\x15\x80\x15a\x1C\x9AWP\x87\x15[\x15a\x1C\xAEW`\0\x96PPPPPPPa#GV[a\x1C\xFA\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x8D\x8Da#OV[\x90\x92P\x90P\x81\x15\x80\x15a\x1D\x0BWP\x80\x15[\x15a\x1D9W`\0\x80Q` a2\x93\x839\x81Q\x91R\x88`\0\x80Q` a2\x93\x839\x81Q\x91R\x03\x8A\x08\x98P`\0\x97P[`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01[\x80a\x1DlW`\x01\x84\x03\x93P`\x01\x8A\x85\x1C\x16`\x01\x8A\x86\x1C\x16`\x01\x1B\x01\x90Pa\x1DJV[P`\x01\x89\x84\x1C\x16`\x01\x89\x85\x1C\x16`\x01\x1B\x01\x95P`\x01\x86\x03a\x1D\xCEW\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x96P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x93P[`\x02\x86\x03a\x1D\xDDW\x8A\x96P\x89\x93P[`\x03\x86\x03a\x1D\xECW\x81\x96P\x80\x93P[`\x01\x83\x03\x92P`\x01\x95P`\x01\x94P[\x82`\0\x19\x11\x15a\"\xD0W`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x02\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8A\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x84\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x8D\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08\t`\x03\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x85\t\x98P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x84\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x84\t\x08\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\x82\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x87\t\x08\x97P`\x01\x8D\x88\x1C\x16`\x01\x8D\x89\x1C\x16`\x01\x1B\x01\x90P\x80a\x1FxW\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x97PPPPPa\"\xC5V[`\x01\x81\x03a\x1F\xC7W\x7Fk\x17\xD1\xF2\xE1,BG\xF8\xBC\xE6\xE5c\xA4@\xF2w\x03}\x81-\xEB3\xA0\xF4\xA19E\xD8\x98\xC2\x96\x93P\x7FO\xE3B\xE2\xFE\x1A\x7F\x9B\x8E\xE7\xEBJ|\x0F\x9E\x16+\xCE3Wk1^\xCE\xCB\xB6@h7\xBFQ\xF5\x92P[`\x02\x81\x03a\x1F\xD6W\x8E\x93P\x8D\x92P[`\x03\x81\x03a\x1F\xE5W\x85\x93P\x84\x92P[\x89a\x1F\xFEWP\x91\x98P`\x01\x97P\x87\x96P\x94Pa\"\xC5\x90PV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x86\t\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x88\t\x08\x93P\x80a!\xB7W\x83a!\xB7W`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x86\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8D\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x86\t\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8C`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8E\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8D\x8F\x08\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81`\x03\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x86\t\x99P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8B\x85\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x08\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8D`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x85\x08\x83\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x8A\x87\t\x85\x08\x98PPPPPPa\"\xC5V[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x83\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8D\t\x9BP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x8C\t\x9AP`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x8E\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87\x88\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x83\x8D\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x86\x08\t\x08\x9APPPP\x80\x9APPPPP[`\x01\x83\x03\x92Pa\x1D\xFBV[`@Q\x86``\x82\x01R` \x81R` \x80\x82\x01R` `@\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa#*W`\0\x80\xFD[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81Q\x89\t\x97PPPPPPPP[\x94\x93PPPPV[`\0\x80\x80\x80\x86a#fW\x85\x85\x93P\x93PPPa#\xD4V[\x84a#xW\x87\x87\x93P\x93PPPa#\xD4V[\x85\x88\x14\x80\x15a#\x86WP\x84\x87\x14[\x15a#\xA7Wa#\x98\x88\x88`\x01\x80a#\xDDV[\x92\x9AP\x90\x98P\x92P\x90Pa#\xC1V[a#\xB6\x88\x88`\x01\x80\x8A\x8Aa%8V[\x92\x9AP\x90\x98P\x92P\x90P[a#\xCD\x88\x88\x84\x84a&\xBCV[\x93P\x93PPP[\x94P\x94\x92PPPV[`\0\x80`\0\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x02\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x85\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x83\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x8B\x08`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8C\x08\t`\x03\t\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x82`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88\x89\t\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x83\x08\x87\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85\x84\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x88\x85\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x89\x08\x92P\x94P\x94P\x94P\x94\x90PV[`\0\x80`\0\x80\x88`\0\x03a%WWP\x84\x92P\x83\x91P`\x01\x90P\x80a&\xAFV[`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x98\x89\x03\x98\x89\x81\x89\x88\t\x08\x94P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x8A\x89\t\x08\x95P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x87\t\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x86\x85\t\x92P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x89\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x83\x88\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x84\x8B\t\x97P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x89`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x85`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x89\x8A\t\x08\x08\x93P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x80\x84\x8B\t`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x87`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x88`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x03\x8D\x08\t\x08\x92P[\x96P\x96P\x96P\x96\x92PPPV[`\0\x80`\0a&\xCA\x84a')V[\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x87\t\x91P`\0`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x87\t\x90P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x81\x82\t\x91P`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19\x82\x89\t\x93PPP\x94P\x94\x92PPPV[`\0`@Q` \x81R` \x80\x82\x01R` `@\x82\x01R\x82``\x82\x01R`\x02`\x01``\x1B\x03c\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\x80\x82\x01R`\x01``\x1Bc\xFF\xFF\xFF\xFF`\xC0\x1B\x03\x19`\xA0\x82\x01R` \x81`\xC0\x83`\x05`\0\x19\xFAa\x1C~W`\0\x80\xFD[P\x80Ta'\x91\x90a.\xAAV[`\0\x82U\x80`\x1F\x10a'\xA1WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x05j\x91\x90[\x80\x82\x11\x15a\t\xDBW`\0\x81U`\x01\x01a'\xBBV[`\0\x80`@\x83\x85\x03\x12\x15a'\xE2W`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a(\x08W`\0\x80\xFD[\x91\x90PV[`\0` \x82\x84\x03\x12\x15a(\x1FW`\0\x80\xFD[a\x05\xA0\x82a'\xF1V[`\0\x80\x83`\x1F\x84\x01\x12a(:W`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(QW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a(iW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0`@\x84\x86\x03\x12\x15a(\x85W`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xA2W`\0\x80\xFD[a(\xAE\x86\x82\x87\x01a((V[\x94\x97\x90\x96P\x93\x94PPPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\xC0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a(\xF3Wa(\xF3a(\xBBV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)!Wa)!a(\xBBV[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a)BWa)Ba(\xBBV[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a)aW`\0\x80\xFD[\x815a)ta)o\x82a))V[a(\xF9V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a)\x89W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a)\xB8W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a)\xCEW`\0\x80\xFD[a#G\x84\x82\x85\x01a)PV[`\0\x80\x83`\x1F\x84\x01\x12a)\xECW`\0\x80\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x03W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a(iW`\0\x80\xFD[`\0\x80` \x83\x85\x03\x12\x15a*1W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a*GW`\0\x80\xFD[a*S\x85\x82\x86\x01a)\xDAV[\x90\x96\x90\x95P\x93PPPPV[`\0a\x01`\x82\x84\x03\x12\x15a*rW`\0\x80\xFD[P\x91\x90PV[`\0\x80`\0``\x84\x86\x03\x12\x15a*\x8DW`\0\x80\xFD[\x835`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xA3W`\0\x80\xFD[a*\xAF\x86\x82\x87\x01a*_V[\x96` \x86\x015\x96P`@\x90\x95\x015\x94\x93PPPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a*\xDAW`\0\x80\xFD[a*\xE3\x84a'\xF1V[\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xA2W`\0\x80\xFD[`\0` \x82\x84\x03\x12\x15a+\x10W`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a+&W`\0\x80\xFD[a#G\x84\x82\x85\x01a*_V[`\0\x80`\0`@\x84\x86\x03\x12\x15a+GW`\0\x80\xFD[\x835\x92P` \x84\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+dW`\0\x80\xFD[a(\xAE\x86\x82\x87\x01a)\xDAV[`\0` \x82\x84\x03\x12\x15a+\x82W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a+\xA4W\x81\x81\x01Q\x83\x82\x01R` \x01a+\x8CV[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra+\xC5\x81` \x86\x01` \x86\x01a+\x89V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[`\xFF`\xF8\x1B\x88\x16\x81R`\0` `\xE0` \x84\x01Ra+\xFA`\xE0\x84\x01\x8Aa+\xADV[\x83\x81\x03`@\x85\x01Ra,\x0C\x81\x8Aa+\xADV[``\x85\x01\x89\x90R`\x01`\x01`\xA0\x1B\x03\x88\x16`\x80\x86\x01R`\xA0\x85\x01\x87\x90R\x84\x81\x03`\xC0\x86\x01R\x85Q\x80\x82R` \x80\x88\x01\x93P\x90\x91\x01\x90`\0[\x81\x81\x10\x15a,`W\x83Q\x83R\x92\x84\x01\x92\x91\x84\x01\x91`\x01\x01a,DV[P\x90\x9C\x9BPPPPPPPPPPPPV[` \x81R`\0a\x05\xA0` \x83\x01\x84a+\xADV[`\0` \x82\x84\x03\x12\x15a,\x97W`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x05\xA0W`\0\x80\xFD[`\0\x80`\0\x80``\x85\x87\x03\x12\x15a,\xC5W`\0\x80\xFD[a,\xCE\x85a'\xF1V[\x93P` \x85\x015\x92P`@\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xF0W`\0\x80\xFD[a,\xFC\x87\x82\x88\x01a((V[\x95\x98\x94\x97P\x95PPPPV[`\0\x80` \x83\x85\x03\x12\x15a-\x1BW`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a-1W`\0\x80\xFD[a*S\x85\x82\x86\x01a((V[`\0\x82Qa-O\x81\x84` \x87\x01a+\x89V[\x91\x90\x91\x01\x92\x91PPV[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x825`^\x19\x836\x03\x01\x81\x12a-OW`\0\x80\xFD[`\0\x80\x835`\x1E\x19\x846\x03\x01\x81\x12a-\x9CW`\0\x80\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a-\xB6W`\0\x80\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a(iW`\0\x80\xFD[`\0\x80\x85\x85\x11\x15a-\xDBW`\0\x80\xFD[\x83\x86\x11\x15a-\xE8W`\0\x80\xFD[PP\x82\x01\x93\x91\x90\x92\x03\x91PV[`\x01`\x01`\xE0\x1B\x03\x19\x815\x81\x81\x16\x91`\x04\x85\x10\x15a.\x1DW\x80\x81\x86`\x04\x03`\x03\x1B\x1B\x83\x16\x16\x92P[PP\x92\x91PPV[`\0`\x01`\x01`@\x1B\x03\x80\x84\x11\x15a.?Wa.?a(\xBBV[\x83`\x05\x1B` a.Q` \x83\x01a(\xF9V[\x86\x81R\x91\x85\x01\x91` \x81\x01\x906\x84\x11\x15a.jW`\0\x80\xFD[\x86[\x84\x81\x10\x15a.\x9EW\x805\x86\x81\x11\x15a.\x84W`\0\x80\x81\xFD[a.\x906\x82\x8B\x01a)PV[\x84RP\x91\x83\x01\x91\x83\x01a.lV[P\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a.\xBEW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a*rWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a/\x06Wa/\x06a.\xDEV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a/\x1FW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a/6W`\0\x80\xFD[\x90\x83\x01\x90`@\x82\x86\x03\x12\x15a/JW`\0\x80\xFD[`@Q`@\x81\x01\x81\x81\x10\x83\x82\x11\x17\x15a/eWa/ea(\xBBV[`@R\x825\x81R` \x83\x015\x82\x81\x11\x15a/~W`\0\x80\xFD[a/\x8A\x87\x82\x86\x01a)PV[` \x83\x01RP\x95\x94PPPPPV[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a*rW`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a/\xD0W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0\x82`\x1F\x83\x01\x12a/\xF2W`\0\x80\xFD[\x81Qa0\0a)o\x82a))V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a0\x15W`\0\x80\xFD[a#G\x82` \x83\x01` \x87\x01a+\x89V[`\0` \x82\x84\x03\x12\x15a08W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15a0OW`\0\x80\xFD[\x90\x83\x01\x90`\xC0\x82\x86\x03\x12\x15a0cW`\0\x80\xFD[a0ka(\xD1V[\x82Q\x82\x81\x11\x15a0zW`\0\x80\xFD[a0\x86\x87\x82\x86\x01a/\xE1V[\x82RP` \x83\x01Q\x82\x81\x11\x15a0\x9BW`\0\x80\xFD[a0\xA7\x87\x82\x86\x01a/\xE1V[` \x83\x01RP`@\x83\x01Q`@\x82\x01R``\x83\x01Q``\x82\x01R`\x80\x83\x01Q`\x80\x82\x01R`\xA0\x83\x01Q`\xA0\x82\x01R\x80\x93PPPP\x92\x91PPV[`\x1F\x82\x11\x15a\x07\nW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a1\nWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a1)W\x82\x81U`\x01\x01a1\x16V[PPPPPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a1JWa1Ja(\xBBV[a1^\x81a1X\x84Ta.\xAAV[\x84a0\xE1V[` \x80`\x1F\x83\x11`\x01\x81\x14a1\x93W`\0\x84\x15a1{WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua1)V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a1\xC2W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a1\xA3V[P\x85\x82\x10\x15a1\xE0W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[\x80\x82\x01\x80\x82\x11\x15a\x05/Wa\x05/a.\xDEV[l\x111\xB40\xB662\xB73\xB2\x91\x1D\x11`\x99\x1B\x81R\x81Q`\0\x90a2,\x81`\r\x85\x01` \x87\x01a+\x89V[`\x11`\xF9\x1B`\r\x93\x90\x91\x01\x92\x83\x01RP`\x0E\x01\x91\x90PV[`\0` \x82\x84\x03\x12\x15a2VW`\0\x80\xFD[PQ\x91\x90PV[`\0\x83Qa2o\x81\x84` \x88\x01a+\x89V[\x91\x90\x91\x01\x91\x82RP` \x01\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x05/Wa\x05/a.\xDEV\xFE\xFF\xFF\xFF\xFF\0\0\0\0\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xBC\xE6\xFA\xAD\xA7\x17\x9E\x84\xF3\xB9\xCA\xC2\xFCc%Q\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\0\xA2dipfsX\"\x12 v\xB8R\xC4N\x04\xB7(<\xDC\\\xE0:a\xAFh%I\x82*%\xC9\xCD\x17 \xCFHp\xE5B\xBD\xDDdsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static MOCKCOINBASESMARTWALLET_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct MockCoinbaseSmartWallet(::ethers::contract::Contract); - impl ::core::clone::Clone for MockCoinbaseSmartWallet { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockCoinbaseSmartWallet { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockCoinbaseSmartWallet { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockCoinbaseSmartWallet { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockCoinbaseSmartWallet)) - .field(&self.address()) - .finish() - } - } - impl MockCoinbaseSmartWallet { - /// 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(), - MOCKCOINBASESMARTWALLET_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( - MOCKCOINBASESMARTWALLET_ABI.clone(), - MOCKCOINBASESMARTWALLET_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `REPLAYABLE_NONCE_KEY` (0x88ce4c7c) function - pub fn replayable_nonce_key( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([136, 206, 76, 124], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `addOwnerAddress` (0x0f0f3f24) function - pub fn add_owner_address( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([15, 15, 63, 36], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `addOwnerPublicKey` (0x29565e3b) function - pub fn add_owner_public_key( - &self, - x: [u8; 32], - y: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([41, 86, 94, 59], (x, y)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `canSkipChainIdValidation` (0x9f9bcb34) function - pub fn can_skip_chain_id_validation( - &self, - function_selector: [u8; 4], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([159, 155, 203, 52], function_selector) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `domainSeparator` (0xf698da25) function - pub fn domain_separator(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([246, 152, 218, 37], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `eip712Domain` (0x84b0196e) function - pub fn eip_712_domain( - &self, - ) -> ::ethers::contract::builders::ContractCall< - M, - ( - [u8; 1], - ::std::string::String, - ::std::string::String, - ::ethers::core::types::U256, - ::ethers::core::types::Address, - [u8; 32], - ::std::vec::Vec<::ethers::core::types::U256>, - ), - > { - self.0 - .method_hash([132, 176, 25, 110], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `entryPoint` (0xb0d691fe) function - pub fn entry_point( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([176, 214, 145, 254], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `execute` (0xb61d27f6) function - pub fn execute( - &self, - target: ::ethers::core::types::Address, - value: ::ethers::core::types::U256, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([182, 29, 39, 246], (target, value, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x34fcd5be) function - pub fn execute_batch( - &self, - calls: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([52, 252, 213, 190], calls) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeBatch` (0x577f3cbf) function - pub fn execute_batch_with_filler( - &self, - filler: ::ethers::core::types::U256, - calls: ::std::vec::Vec, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([87, 127, 60, 191], (filler, calls)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `executeWithoutChainIdValidation` (0xbf6ba1fc) function - pub fn execute_without_chain_id_validation( - &self, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([191, 107, 161, 252], data) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getUserOpHashWithoutChainId` (0x4f6e7f22) function - pub fn get_user_op_hash_without_chain_id( - &self, - user_op: UserOperation, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([79, 110, 127, 34], (user_op,)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `implementation` (0x5c60da1b) function - pub fn implementation( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([92, 96, 218, 27], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `initialize` (0x6f2de70e) function - pub fn initialize( - &self, - owners: ::std::vec::Vec<::ethers::core::types::Bytes>, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([111, 45, 231, 14], owners) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerAddress` (0xa2e1a8d8) function - pub fn is_owner_address( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([162, 225, 168, 216], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerBytes` (0x1ca5393f) function - pub fn is_owner_bytes( - &self, - account: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([28, 165, 57, 63], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerPublicKey` (0x066a1eb7) function - pub fn is_owner_public_key( - &self, - x: [u8; 32], - y: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([6, 106, 30, 183], (x, y)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isValidSignature` (0x1626ba7e) function - pub fn is_valid_signature( - &self, - hash: [u8; 32], - signature: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([22, 38, 186, 126], (hash, signature)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `nextOwnerIndex` (0xd948fd2e) function - pub fn next_owner_index( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([217, 72, 253, 46], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `ownerAtIndex` (0x8ea69029) function - pub fn owner_at_index( - &self, - index: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([142, 166, 144, 41], index) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `proxiableUUID` (0x52d1902d) function - pub fn proxiable_uuid(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([82, 209, 144, 45], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `removeOwnerAtIndex` (0x72de3b5a) function - pub fn remove_owner_at_index( - &self, - index: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([114, 222, 59, 90], index) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `replaySafeHash` (0xce1506be) function - pub fn replay_safe_hash( - &self, - hash: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([206, 21, 6, 190], hash) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function - pub fn upgrade_to_and_call( - &self, - new_implementation: ::ethers::core::types::Address, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([79, 30, 242, 134], (new_implementation, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `validateUserOp` (0x3a871cdd) function - pub fn validate_user_op( - &self, - user_op: UserOperation, - user_op_hash: [u8; 32], - missing_account_funds: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [58, 135, 28, 221], - (user_op, user_op_hash, missing_account_funds), - ) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `AddOwner` event - pub fn add_owner_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AddOwnerFilter> { - self.0.event() - } - ///Gets the contract's `RemoveOwner` event - pub fn remove_owner_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, RemoveOwnerFilter> - { - self.0.event() - } - ///Gets the contract's `Upgraded` event - pub fn upgraded_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradedFilter> { - 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, - MockCoinbaseSmartWalletEvents, - > { - self.0 - .event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockCoinbaseSmartWallet - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `AlreadyOwner` with signature `AlreadyOwner(bytes)` and selector `0x8d16255a` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "AlreadyOwner", abi = "AlreadyOwner(bytes)")] - pub struct AlreadyOwner { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `Initialized` with signature `Initialized()` and selector `0x5daa87a0` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "Initialized", abi = "Initialized()")] - pub struct Initialized; - ///Custom Error type `InvalidEthereumAddressOwner` with signature `InvalidEthereumAddressOwner(bytes)` and selector `0xbff1ac65` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "InvalidEthereumAddressOwner", - abi = "InvalidEthereumAddressOwner(bytes)" - )] - pub struct InvalidEthereumAddressOwner { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `InvalidNonceKey` with signature `InvalidNonceKey(uint256)` and selector `0x2ef37813` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "InvalidNonceKey", abi = "InvalidNonceKey(uint256)")] - pub struct InvalidNonceKey { - pub key: ::ethers::core::types::U256, - } - ///Custom Error type `InvalidOwnerBytesLength` with signature `InvalidOwnerBytesLength(bytes)` and selector `0x4eeab722` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "InvalidOwnerBytesLength", - abi = "InvalidOwnerBytesLength(bytes)" - )] - pub struct InvalidOwnerBytesLength { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `NoOwnerAtIndex` with signature `NoOwnerAtIndex(uint256)` and selector `0x68188e7a` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "NoOwnerAtIndex", abi = "NoOwnerAtIndex(uint256)")] - pub struct NoOwnerAtIndex { - pub index: ::ethers::core::types::U256, - } - ///Custom Error type `SelectorNotAllowed` with signature `SelectorNotAllowed(bytes4)` and selector `0x3b06e146` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "SelectorNotAllowed", abi = "SelectorNotAllowed(bytes4)")] - pub struct SelectorNotAllowed { - pub selector: [u8; 4], - } - ///Custom Error type `Unauthorized` with signature `Unauthorized()` and selector `0x82b42900` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "Unauthorized", abi = "Unauthorized()")] - pub struct Unauthorized; - ///Custom Error type `UnauthorizedCallContext` with signature `UnauthorizedCallContext()` and selector `0x9f03a026` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "UnauthorizedCallContext", abi = "UnauthorizedCallContext()")] - pub struct UnauthorizedCallContext; - ///Custom Error type `UpgradeFailed` with signature `UpgradeFailed()` and selector `0x55299b49` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "UpgradeFailed", abi = "UpgradeFailed()")] - pub struct UpgradeFailed; - ///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 MockCoinbaseSmartWalletErrors { - AlreadyOwner(AlreadyOwner), - Initialized(Initialized), - InvalidEthereumAddressOwner(InvalidEthereumAddressOwner), - InvalidNonceKey(InvalidNonceKey), - InvalidOwnerBytesLength(InvalidOwnerBytesLength), - NoOwnerAtIndex(NoOwnerAtIndex), - SelectorNotAllowed(SelectorNotAllowed), - Unauthorized(Unauthorized), - UnauthorizedCallContext(UnauthorizedCallContext), - UpgradeFailed(UpgradeFailed), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for MockCoinbaseSmartWalletErrors { - 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::AlreadyOwner(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Initialized(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::InvalidEthereumAddressOwner(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::InvalidNonceKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::InvalidOwnerBytesLength(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::NoOwnerAtIndex(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SelectorNotAllowed(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Unauthorized(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::UnauthorizedCallContext(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::UpgradeFailed(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockCoinbaseSmartWalletErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::AlreadyOwner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Initialized(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::InvalidEthereumAddressOwner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidNonceKey(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::InvalidOwnerBytesLength(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NoOwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SelectorNotAllowed(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Unauthorized(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::UnauthorizedCallContext(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::UpgradeFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for MockCoinbaseSmartWalletErrors { - 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 - } - _ => false, - } - } - } - impl ::core::fmt::Display for MockCoinbaseSmartWalletErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AlreadyOwner(element) => ::core::fmt::Display::fmt(element, f), - Self::Initialized(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidEthereumAddressOwner(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidNonceKey(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidOwnerBytesLength(element) => ::core::fmt::Display::fmt(element, f), - Self::NoOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::SelectorNotAllowed(element) => ::core::fmt::Display::fmt(element, f), - Self::Unauthorized(element) => ::core::fmt::Display::fmt(element, f), - Self::UnauthorizedCallContext(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradeFailed(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for MockCoinbaseSmartWalletErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletErrors { - fn from(value: AlreadyOwner) -> Self { - Self::AlreadyOwner(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletErrors { - fn from(value: Initialized) -> Self { - Self::Initialized(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletErrors { - fn from(value: InvalidEthereumAddressOwner) -> Self { - Self::InvalidEthereumAddressOwner(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletErrors { - fn from(value: InvalidNonceKey) -> Self { - Self::InvalidNonceKey(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletErrors { - fn from(value: InvalidOwnerBytesLength) -> Self { - Self::InvalidOwnerBytesLength(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletErrors { - fn from(value: NoOwnerAtIndex) -> Self { - Self::NoOwnerAtIndex(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletErrors { - fn from(value: SelectorNotAllowed) -> Self { - Self::SelectorNotAllowed(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletErrors { - fn from(value: Unauthorized) -> Self { - Self::Unauthorized(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletErrors { - fn from(value: UnauthorizedCallContext) -> Self { - Self::UnauthorizedCallContext(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletErrors { - fn from(value: UpgradeFailed) -> Self { - Self::UpgradeFailed(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "AddOwner", abi = "AddOwner(uint256,bytes)")] - pub struct AddOwnerFilter { - #[ethevent(indexed)] - pub index: ::ethers::core::types::U256, - pub owner: ::ethers::core::types::Bytes, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "RemoveOwner", abi = "RemoveOwner(uint256,bytes)")] - pub struct RemoveOwnerFilter { - #[ethevent(indexed)] - pub index: ::ethers::core::types::U256, - pub owner: ::ethers::core::types::Bytes, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] - pub struct UpgradedFilter { - #[ethevent(indexed)] - pub implementation: ::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 MockCoinbaseSmartWalletEvents { - AddOwnerFilter(AddOwnerFilter), - RemoveOwnerFilter(RemoveOwnerFilter), - UpgradedFilter(UpgradedFilter), - } - impl ::ethers::contract::EthLogDecode for MockCoinbaseSmartWalletEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = AddOwnerFilter::decode_log(log) { - return Ok(MockCoinbaseSmartWalletEvents::AddOwnerFilter(decoded)); - } - if let Ok(decoded) = RemoveOwnerFilter::decode_log(log) { - return Ok(MockCoinbaseSmartWalletEvents::RemoveOwnerFilter(decoded)); - } - if let Ok(decoded) = UpgradedFilter::decode_log(log) { - return Ok(MockCoinbaseSmartWalletEvents::UpgradedFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for MockCoinbaseSmartWalletEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AddOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::RemoveOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradedFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletEvents { - fn from(value: AddOwnerFilter) -> Self { - Self::AddOwnerFilter(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletEvents { - fn from(value: RemoveOwnerFilter) -> Self { - Self::RemoveOwnerFilter(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletEvents { - fn from(value: UpgradedFilter) -> Self { - Self::UpgradedFilter(value) - } - } - ///Container type for all input parameters for the `REPLAYABLE_NONCE_KEY` function with signature `REPLAYABLE_NONCE_KEY()` and selector `0x88ce4c7c` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "REPLAYABLE_NONCE_KEY", abi = "REPLAYABLE_NONCE_KEY()")] - pub struct ReplayableNonceKeyCall; - ///Container type for all input parameters for the `addOwnerAddress` function with signature `addOwnerAddress(address)` and selector `0x0f0f3f24` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "addOwnerAddress", abi = "addOwnerAddress(address)")] - pub struct AddOwnerAddressCall { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `addOwnerPublicKey` function with signature `addOwnerPublicKey(bytes32,bytes32)` and selector `0x29565e3b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "addOwnerPublicKey", abi = "addOwnerPublicKey(bytes32,bytes32)")] - pub struct AddOwnerPublicKeyCall { - pub x: [u8; 32], - pub y: [u8; 32], - } - ///Container type for all input parameters for the `canSkipChainIdValidation` function with signature `canSkipChainIdValidation(bytes4)` and selector `0x9f9bcb34` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "canSkipChainIdValidation", - abi = "canSkipChainIdValidation(bytes4)" - )] - pub struct CanSkipChainIdValidationCall { - pub function_selector: [u8; 4], - } - ///Container type for all input parameters for the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "domainSeparator", abi = "domainSeparator()")] - pub struct DomainSeparatorCall; - ///Container type for all input parameters for the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "eip712Domain", abi = "eip712Domain()")] - pub struct Eip712DomainCall; - ///Container type for all input parameters for the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "entryPoint", abi = "entryPoint()")] - pub struct EntryPointCall; - ///Container type for all input parameters for the `execute` function with signature `execute(address,uint256,bytes)` and selector `0xb61d27f6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "execute", abi = "execute(address,uint256,bytes)")] - pub struct ExecuteCall { - pub target: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch((address,uint256,bytes)[])` and selector `0x34fcd5be` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "executeBatch", abi = "executeBatch((address,uint256,bytes)[])")] - pub struct ExecuteBatchCall { - pub calls: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeBatch` function with signature `executeBatch(uint256,(address,uint256,bytes)[])` and selector `0x577f3cbf` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "executeBatch", - abi = "executeBatch(uint256,(address,uint256,bytes)[])" - )] - pub struct ExecuteBatchWithFillerCall { - pub filler: ::ethers::core::types::U256, - pub calls: ::std::vec::Vec, - } - ///Container type for all input parameters for the `executeWithoutChainIdValidation` function with signature `executeWithoutChainIdValidation(bytes)` and selector `0xbf6ba1fc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "executeWithoutChainIdValidation", - abi = "executeWithoutChainIdValidation(bytes)" - )] - pub struct ExecuteWithoutChainIdValidationCall { - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `getUserOpHashWithoutChainId` function with signature `getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x4f6e7f22` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "getUserOpHashWithoutChainId", - abi = "getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))" - )] - pub struct GetUserOpHashWithoutChainIdCall { - pub user_op: UserOperation, - } - ///Container type for all input parameters for the `implementation` function with signature `implementation()` and selector `0x5c60da1b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "implementation", abi = "implementation()")] - pub struct ImplementationCall; - ///Container type for all input parameters for the `initialize` function with signature `initialize(bytes[])` and selector `0x6f2de70e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "initialize", abi = "initialize(bytes[])")] - pub struct InitializeCall { - pub owners: ::std::vec::Vec<::ethers::core::types::Bytes>, - } - ///Container type for all input parameters for the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerAddress", abi = "isOwnerAddress(address)")] - pub struct IsOwnerAddressCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerBytes", abi = "isOwnerBytes(bytes)")] - pub struct IsOwnerBytesCall { - pub account: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerPublicKey", abi = "isOwnerPublicKey(bytes32,bytes32)")] - pub struct IsOwnerPublicKeyCall { - pub x: [u8; 32], - pub y: [u8; 32], - } - ///Container type for all input parameters for the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isValidSignature", abi = "isValidSignature(bytes32,bytes)")] - pub struct IsValidSignatureCall { - pub hash: [u8; 32], - pub signature: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "nextOwnerIndex", abi = "nextOwnerIndex()")] - pub struct NextOwnerIndexCall; - ///Container type for all input parameters for the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "ownerAtIndex", abi = "ownerAtIndex(uint256)")] - pub struct OwnerAtIndexCall { - pub index: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] - pub struct ProxiableUUIDCall; - ///Container type for all input parameters for the `removeOwnerAtIndex` function with signature `removeOwnerAtIndex(uint256)` and selector `0x72de3b5a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "removeOwnerAtIndex", abi = "removeOwnerAtIndex(uint256)")] - pub struct RemoveOwnerAtIndexCall { - pub index: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "replaySafeHash", abi = "replaySafeHash(bytes32)")] - pub struct ReplaySafeHashCall { - pub hash: [u8; 32], - } - ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] - pub struct UpgradeToAndCallCall { - pub new_implementation: ::ethers::core::types::Address, - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `validateUserOp` function with signature `validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0x3a871cdd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "validateUserOp", - abi = "validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)" - )] - pub struct ValidateUserOpCall { - pub user_op: UserOperation, - pub user_op_hash: [u8; 32], - pub missing_account_funds: ::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 MockCoinbaseSmartWalletCalls { - ReplayableNonceKey(ReplayableNonceKeyCall), - AddOwnerAddress(AddOwnerAddressCall), - AddOwnerPublicKey(AddOwnerPublicKeyCall), - CanSkipChainIdValidation(CanSkipChainIdValidationCall), - DomainSeparator(DomainSeparatorCall), - Eip712Domain(Eip712DomainCall), - EntryPoint(EntryPointCall), - Execute(ExecuteCall), - ExecuteBatch(ExecuteBatchCall), - ExecuteBatchWithFiller(ExecuteBatchWithFillerCall), - ExecuteWithoutChainIdValidation(ExecuteWithoutChainIdValidationCall), - GetUserOpHashWithoutChainId(GetUserOpHashWithoutChainIdCall), - Implementation(ImplementationCall), - Initialize(InitializeCall), - IsOwnerAddress(IsOwnerAddressCall), - IsOwnerBytes(IsOwnerBytesCall), - IsOwnerPublicKey(IsOwnerPublicKeyCall), - IsValidSignature(IsValidSignatureCall), - NextOwnerIndex(NextOwnerIndexCall), - OwnerAtIndex(OwnerAtIndexCall), - ProxiableUUID(ProxiableUUIDCall), - RemoveOwnerAtIndex(RemoveOwnerAtIndexCall), - ReplaySafeHash(ReplaySafeHashCall), - UpgradeToAndCall(UpgradeToAndCallCall), - ValidateUserOp(ValidateUserOpCall), - } - impl ::ethers::core::abi::AbiDecode for MockCoinbaseSmartWalletCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ReplayableNonceKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::AddOwnerAddress(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::AddOwnerPublicKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::CanSkipChainIdValidation(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::DomainSeparator(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::Eip712Domain(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::EntryPoint(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Execute(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::ExecuteBatch(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ExecuteBatchWithFiller(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::ExecuteWithoutChainIdValidation(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::GetUserOpHashWithoutChainId(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::Implementation(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Initialize(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsOwnerAddress(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::IsOwnerBytes(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsOwnerPublicKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsValidSignature(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::NextOwnerIndex(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::OwnerAtIndex(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::ProxiableUUID(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::RemoveOwnerAtIndex(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ReplaySafeHash(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::UpgradeToAndCall(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ValidateUserOp(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockCoinbaseSmartWalletCalls { - fn encode(self) -> Vec { - match self { - Self::ReplayableNonceKey(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::AddOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::AddOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::CanSkipChainIdValidation(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::DomainSeparator(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Eip712Domain(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::EntryPoint(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Execute(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatch(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ExecuteBatchWithFiller(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ExecuteWithoutChainIdValidation(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::GetUserOpHashWithoutChainId(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Implementation(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Initialize(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerBytes(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsValidSignature(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::NextOwnerIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::OwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ProxiableUUID(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RemoveOwnerAtIndex(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::ReplaySafeHash(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::UpgradeToAndCall(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ValidateUserOp(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for MockCoinbaseSmartWalletCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ReplayableNonceKey(element) => ::core::fmt::Display::fmt(element, f), - Self::AddOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), - Self::AddOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), - Self::CanSkipChainIdValidation(element) => ::core::fmt::Display::fmt(element, f), - Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f), - Self::Eip712Domain(element) => ::core::fmt::Display::fmt(element, f), - Self::EntryPoint(element) => ::core::fmt::Display::fmt(element, f), - Self::Execute(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatch(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteBatchWithFiller(element) => ::core::fmt::Display::fmt(element, f), - Self::ExecuteWithoutChainIdValidation(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::GetUserOpHashWithoutChainId(element) => ::core::fmt::Display::fmt(element, f), - Self::Implementation(element) => ::core::fmt::Display::fmt(element, f), - Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerBytes(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), - Self::IsValidSignature(element) => ::core::fmt::Display::fmt(element, f), - Self::NextOwnerIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), - Self::RemoveOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::ReplaySafeHash(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), - Self::ValidateUserOp(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: ReplayableNonceKeyCall) -> Self { - Self::ReplayableNonceKey(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: AddOwnerAddressCall) -> Self { - Self::AddOwnerAddress(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: AddOwnerPublicKeyCall) -> Self { - Self::AddOwnerPublicKey(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: CanSkipChainIdValidationCall) -> Self { - Self::CanSkipChainIdValidation(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: DomainSeparatorCall) -> Self { - Self::DomainSeparator(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: Eip712DomainCall) -> Self { - Self::Eip712Domain(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: EntryPointCall) -> Self { - Self::EntryPoint(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: ExecuteCall) -> Self { - Self::Execute(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: ExecuteBatchCall) -> Self { - Self::ExecuteBatch(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: ExecuteBatchWithFillerCall) -> Self { - Self::ExecuteBatchWithFiller(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: ExecuteWithoutChainIdValidationCall) -> Self { - Self::ExecuteWithoutChainIdValidation(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: GetUserOpHashWithoutChainIdCall) -> Self { - Self::GetUserOpHashWithoutChainId(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: ImplementationCall) -> Self { - Self::Implementation(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: InitializeCall) -> Self { - Self::Initialize(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: IsOwnerAddressCall) -> Self { - Self::IsOwnerAddress(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: IsOwnerBytesCall) -> Self { - Self::IsOwnerBytes(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: IsOwnerPublicKeyCall) -> Self { - Self::IsOwnerPublicKey(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: IsValidSignatureCall) -> Self { - Self::IsValidSignature(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: NextOwnerIndexCall) -> Self { - Self::NextOwnerIndex(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: OwnerAtIndexCall) -> Self { - Self::OwnerAtIndex(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: ProxiableUUIDCall) -> Self { - Self::ProxiableUUID(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: RemoveOwnerAtIndexCall) -> Self { - Self::RemoveOwnerAtIndex(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: ReplaySafeHashCall) -> Self { - Self::ReplaySafeHash(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: UpgradeToAndCallCall) -> Self { - Self::UpgradeToAndCall(value) - } - } - impl ::core::convert::From for MockCoinbaseSmartWalletCalls { - fn from(value: ValidateUserOpCall) -> Self { - Self::ValidateUserOp(value) - } - } - ///Container type for all return fields from the `REPLAYABLE_NONCE_KEY` function with signature `REPLAYABLE_NONCE_KEY()` and selector `0x88ce4c7c` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ReplayableNonceKeyReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `canSkipChainIdValidation` function with signature `canSkipChainIdValidation(bytes4)` and selector `0x9f9bcb34` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct CanSkipChainIdValidationReturn(pub bool); - ///Container type for all return fields from the `domainSeparator` function with signature `domainSeparator()` and selector `0xf698da25` - #[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 `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct Eip712DomainReturn { - pub fields: [u8; 1], - pub name: ::std::string::String, - pub version: ::std::string::String, - pub chain_id: ::ethers::core::types::U256, - pub verifying_contract: ::ethers::core::types::Address, - pub salt: [u8; 32], - pub extensions: ::std::vec::Vec<::ethers::core::types::U256>, - } - ///Container type for all return fields from the `entryPoint` function with signature `entryPoint()` and selector `0xb0d691fe` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct EntryPointReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `getUserOpHashWithoutChainId` function with signature `getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))` and selector `0x4f6e7f22` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GetUserOpHashWithoutChainIdReturn { - pub user_op_hash: [u8; 32], - } - ///Container type for all return fields from the `implementation` function with signature `implementation()` and selector `0x5c60da1b` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ImplementationReturn { - pub address: ::ethers::core::types::Address, - } - ///Container type for all return fields from the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerAddressReturn(pub bool); - ///Container type for all return fields from the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerBytesReturn(pub bool); - ///Container type for all return fields from the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerPublicKeyReturn(pub bool); - ///Container type for all return fields from the `isValidSignature` function with signature `isValidSignature(bytes32,bytes)` and selector `0x1626ba7e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsValidSignatureReturn { - pub result: [u8; 4], - } - ///Container type for all return fields from the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct NextOwnerIndexReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerAtIndexReturn(pub ::ethers::core::types::Bytes); - ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ProxiableUUIDReturn(pub [u8; 32]); - ///Container type for all return fields from the `replaySafeHash` function with signature `replaySafeHash(bytes32)` and selector `0xce1506be` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ReplaySafeHashReturn(pub [u8; 32]); - ///Container type for all return fields from the `validateUserOp` function with signature `validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0x3a871cdd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ValidateUserOpReturn { - pub validation_data: ::ethers::core::types::U256, - } -} diff --git a/xmtp_id/src/bindings/mock_entry_point.rs b/xmtp_id/src/bindings/mock_entry_point.rs deleted file mode 100644 index c5d5cbd42..000000000 --- a/xmtp_id/src/bindings/mock_entry_point.rs +++ /dev/null @@ -1,468 +0,0 @@ -pub use mock_entry_point::*; -/// 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_entry_point { - 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("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("depositTo"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("depositTo"), - 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"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("validateUserOp"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validateUserOp"), - 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("userOp"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple(::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::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::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Bytes, - ],), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct UserOperation"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("userOpHash"), - 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("missingAccountFunds",), - 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("validationData"), - 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("withdrawTo"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdrawTo"), - 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::Payable, - },], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: true, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKENTRYPOINT_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x06O\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0CW`\x005`\xE0\x1C\x80c \\(x\x14a\0XW\x80cp\xA0\x821\x14a\0kW\x80c\xA1\x9D\x19\xD5\x14a\0\xAAW\x80c\xB7`\xFA\xF9\x14a\0\xBDW`\0\x80\xFD[6a\0SWa\0Q3a\0\xCBV[\0[`\0\x80\xFD[a\0Qa\0f6`\x04a\x02\x1DV[a\0\xFBV[4\x80\x15a\0wW`\0\x80\xFD[Pa\0\x98a\0\x866`\x04a\x02GV[`\0` \x81\x90R\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x98a\0\xB86`\x04a\x036V[a\x01\x82V[a\0Qa\0\xCB6`\x04a\x02GV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T4\x92\x90a\0\xF3\x90\x84\x90a\x04\x9CV[\x90\x91UPPPV[3`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90a\x01\x1A\x90\x84\x90a\x04\xB5V[\x90\x91UPP`@Q`\0\x90`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x83\x90\x83\x81\x81\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x01jW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01oV[``\x91P[PP\x90P\x80a\x01}W`\0\x80\xFD[PPPV[`@Qc:\x87\x1C\xDD`\xE0\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c:\x87\x1C\xDD\x90a\x01\xB5\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x05\x0EV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xF8\x91\x90a\x06\0V[\x95\x94PPPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x18W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x020W`\0\x80\xFD[a\x029\x83a\x02\x01V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x02YW`\0\x80\xFD[a\x02b\x82a\x02\x01V[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Qa\x01`\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\xA3Wa\x02\xA3a\x02iV[`@R\x90V[`\0\x82`\x1F\x83\x01\x12a\x02\xBAW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\xD5Wa\x02\xD5a\x02iV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x02\xFDWa\x02\xFDa\x02iV[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\x03\x16W`\0\x80\xFD[\x83` \x87\x01` \x83\x017`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x03LW`\0\x80\xFD[a\x03U\x85a\x02\x01V[\x93P` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03rW`\0\x80\xFD[\x90\x86\x01\x90a\x01`\x82\x89\x03\x12\x15a\x03\x87W`\0\x80\xFD[a\x03\x8Fa\x02\x7FV[a\x03\x98\x83a\x02\x01V[\x81R` \x83\x015` \x82\x01R`@\x83\x015\x82\x81\x11\x15a\x03\xB6W`\0\x80\xFD[a\x03\xC2\x8A\x82\x86\x01a\x02\xA9V[`@\x83\x01RP``\x83\x015\x82\x81\x11\x15a\x03\xDAW`\0\x80\xFD[a\x03\xE6\x8A\x82\x86\x01a\x02\xA9V[``\x83\x01RP`\x80\x83\x015`\x80\x82\x01R`\xA0\x83\x015`\xA0\x82\x01R`\xC0\x83\x015`\xC0\x82\x01R`\xE0\x83\x015`\xE0\x82\x01Ra\x01\0\x80\x84\x015\x81\x83\x01RPa\x01 \x80\x84\x015\x83\x81\x11\x15a\x044W`\0\x80\xFD[a\x04@\x8B\x82\x87\x01a\x02\xA9V[\x82\x84\x01RPPa\x01@\x80\x84\x015\x83\x81\x11\x15a\x04ZW`\0\x80\xFD[a\x04f\x8B\x82\x87\x01a\x02\xA9V[\x91\x83\x01\x91\x90\x91RP\x95\x98\x95\x97PPPP`@\x84\x015\x93``\x015\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xAFWa\x04\xAFa\x04\x86V[\x92\x91PPV[\x81\x81\x03\x81\x81\x11\x15a\x04\xAFWa\x04\xAFa\x04\x86V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x04\xEEW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x04\xD2V[P`\0` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[``\x81Ra\x05(``\x82\x01\x85Q`\x01`\x01`\xA0\x1B\x03\x16\x90RV[` \x84\x01Q`\x80\x82\x01R`\0`@\x85\x01Qa\x01`\x80`\xA0\x85\x01Ra\x05Pa\x01\xC0\x85\x01\x83a\x04\xC8V[\x91P``\x87\x01Q`_\x19\x80\x86\x85\x03\x01`\xC0\x87\x01Ra\x05n\x84\x83a\x04\xC8V[\x93P`\x80\x89\x01Q`\xE0\x87\x01R`\xA0\x89\x01Q\x91Pa\x01\0\x82\x81\x88\x01R`\xC0\x8A\x01Q\x92Pa\x01 \x83\x81\x89\x01R`\xE0\x8B\x01Q\x93Pa\x01@\x84\x81\x8A\x01R\x82\x8C\x01Q\x86\x8A\x01R\x81\x8C\x01Q\x95P\x83\x89\x88\x03\x01a\x01\x80\x8A\x01Ra\x05\xCA\x87\x87a\x04\xC8V[\x96P\x80\x8C\x01Q\x95PPPP\x80\x86\x85\x03\x01a\x01\xA0\x87\x01RPPa\x05\xEC\x82\x82a\x04\xC8V[` \x85\x01\x96\x90\x96RPPP`@\x01R\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\x12W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xF4:J\xCD\xE6\xE3\xF3\xAF\xC1\xCC\xFA\xE5\xEF~?\x1B$9n\x8FV\x92b\x02\xC8\xBC\xF9\xD3\xD8|\xAA\xBCdsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static MOCKENTRYPOINT_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0CW`\x005`\xE0\x1C\x80c \\(x\x14a\0XW\x80cp\xA0\x821\x14a\0kW\x80c\xA1\x9D\x19\xD5\x14a\0\xAAW\x80c\xB7`\xFA\xF9\x14a\0\xBDW`\0\x80\xFD[6a\0SWa\0Q3a\0\xCBV[\0[`\0\x80\xFD[a\0Qa\0f6`\x04a\x02\x1DV[a\0\xFBV[4\x80\x15a\0wW`\0\x80\xFD[Pa\0\x98a\0\x866`\x04a\x02GV[`\0` \x81\x90R\x90\x81R`@\x90 T\x81V[`@Q\x90\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x98a\0\xB86`\x04a\x036V[a\x01\x82V[a\0Qa\0\xCB6`\x04a\x02GV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R` \x81\x90R`@\x81 \x80T4\x92\x90a\0\xF3\x90\x84\x90a\x04\x9CV[\x90\x91UPPPV[3`\0\x90\x81R` \x81\x90R`@\x81 \x80T\x83\x92\x90a\x01\x1A\x90\x84\x90a\x04\xB5V[\x90\x91UPP`@Q`\0\x90`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x83\x90\x83\x81\x81\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\x01jW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\x01oV[``\x91P[PP\x90P\x80a\x01}W`\0\x80\xFD[PPPV[`@Qc:\x87\x1C\xDD`\xE0\x1B\x81R`\0\x90`\x01`\x01`\xA0\x1B\x03\x86\x16\x90c:\x87\x1C\xDD\x90a\x01\xB5\x90\x87\x90\x87\x90\x87\x90`\x04\x01a\x05\x0EV[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\x01\xD4W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xF8\x91\x90a\x06\0V[\x95\x94PPPPPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x18W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\x020W`\0\x80\xFD[a\x029\x83a\x02\x01V[\x94` \x93\x90\x93\x015\x93PPPV[`\0` \x82\x84\x03\x12\x15a\x02YW`\0\x80\xFD[a\x02b\x82a\x02\x01V[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Qa\x01`\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x02\xA3Wa\x02\xA3a\x02iV[`@R\x90V[`\0\x82`\x1F\x83\x01\x12a\x02\xBAW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\xD5Wa\x02\xD5a\x02iV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x02\xFDWa\x02\xFDa\x02iV[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\x03\x16W`\0\x80\xFD[\x83` \x87\x01` \x83\x017`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x03LW`\0\x80\xFD[a\x03U\x85a\x02\x01V[\x93P` \x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03rW`\0\x80\xFD[\x90\x86\x01\x90a\x01`\x82\x89\x03\x12\x15a\x03\x87W`\0\x80\xFD[a\x03\x8Fa\x02\x7FV[a\x03\x98\x83a\x02\x01V[\x81R` \x83\x015` \x82\x01R`@\x83\x015\x82\x81\x11\x15a\x03\xB6W`\0\x80\xFD[a\x03\xC2\x8A\x82\x86\x01a\x02\xA9V[`@\x83\x01RP``\x83\x015\x82\x81\x11\x15a\x03\xDAW`\0\x80\xFD[a\x03\xE6\x8A\x82\x86\x01a\x02\xA9V[``\x83\x01RP`\x80\x83\x015`\x80\x82\x01R`\xA0\x83\x015`\xA0\x82\x01R`\xC0\x83\x015`\xC0\x82\x01R`\xE0\x83\x015`\xE0\x82\x01Ra\x01\0\x80\x84\x015\x81\x83\x01RPa\x01 \x80\x84\x015\x83\x81\x11\x15a\x044W`\0\x80\xFD[a\x04@\x8B\x82\x87\x01a\x02\xA9V[\x82\x84\x01RPPa\x01@\x80\x84\x015\x83\x81\x11\x15a\x04ZW`\0\x80\xFD[a\x04f\x8B\x82\x87\x01a\x02\xA9V[\x91\x83\x01\x91\x90\x91RP\x95\x98\x95\x97PPPP`@\x84\x015\x93``\x015\x92\x91PPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xAFWa\x04\xAFa\x04\x86V[\x92\x91PPV[\x81\x81\x03\x81\x81\x11\x15a\x04\xAFWa\x04\xAFa\x04\x86V[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\x04\xEEW` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\x04\xD2V[P`\0` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[``\x81Ra\x05(``\x82\x01\x85Q`\x01`\x01`\xA0\x1B\x03\x16\x90RV[` \x84\x01Q`\x80\x82\x01R`\0`@\x85\x01Qa\x01`\x80`\xA0\x85\x01Ra\x05Pa\x01\xC0\x85\x01\x83a\x04\xC8V[\x91P``\x87\x01Q`_\x19\x80\x86\x85\x03\x01`\xC0\x87\x01Ra\x05n\x84\x83a\x04\xC8V[\x93P`\x80\x89\x01Q`\xE0\x87\x01R`\xA0\x89\x01Q\x91Pa\x01\0\x82\x81\x88\x01R`\xC0\x8A\x01Q\x92Pa\x01 \x83\x81\x89\x01R`\xE0\x8B\x01Q\x93Pa\x01@\x84\x81\x8A\x01R\x82\x8C\x01Q\x86\x8A\x01R\x81\x8C\x01Q\x95P\x83\x89\x88\x03\x01a\x01\x80\x8A\x01Ra\x05\xCA\x87\x87a\x04\xC8V[\x96P\x80\x8C\x01Q\x95PPPP\x80\x86\x85\x03\x01a\x01\xA0\x87\x01RPPa\x05\xEC\x82\x82a\x04\xC8V[` \x85\x01\x96\x90\x96RPPP`@\x01R\x91\x90PV[`\0` \x82\x84\x03\x12\x15a\x06\x12W`\0\x80\xFD[PQ\x91\x90PV\xFE\xA2dipfsX\"\x12 \xF4:J\xCD\xE6\xE3\xF3\xAF\xC1\xCC\xFA\xE5\xEF~?\x1B$9n\x8FV\x92b\x02\xC8\xBC\xF9\xD3\xD8|\xAA\xBCdsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static MOCKENTRYPOINT_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct MockEntryPoint(::ethers::contract::Contract); - impl ::core::clone::Clone for MockEntryPoint { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockEntryPoint { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockEntryPoint { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockEntryPoint { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockEntryPoint)) - .field(&self.address()) - .finish() - } - } - impl MockEntryPoint { - /// 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(), - MOCKENTRYPOINT_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( - MOCKENTRYPOINT_ABI.clone(), - MOCKENTRYPOINT_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///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 `depositTo` (0xb760faf9) function - pub fn deposit_to( - &self, - to: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([183, 96, 250, 249], to) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `validateUserOp` (0xa19d19d5) function - pub fn validate_user_op( - &self, - account: ::ethers::core::types::Address, - user_op: UserOperation, - user_op_hash: [u8; 32], - missing_account_funds: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash( - [161, 157, 25, 213], - (account, user_op, user_op_hash, missing_account_funds), - ) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `withdrawTo` (0x205c2878) function - pub fn withdraw_to( - &self, - to: ::ethers::core::types::Address, - amount: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([32, 92, 40, 120], (to, amount)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for MockEntryPoint - { - 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 input parameters for the `depositTo` function with signature `depositTo(address)` and selector `0xb760faf9` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "depositTo", abi = "depositTo(address)")] - pub struct DepositToCall { - pub to: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `validateUserOp` function with signature `validateUserOp(address,(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0xa19d19d5` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "validateUserOp", - abi = "validateUserOp(address,(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)" - )] - pub struct ValidateUserOpCall { - pub account: ::ethers::core::types::Address, - pub user_op: UserOperation, - pub user_op_hash: [u8; 32], - pub missing_account_funds: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `withdrawTo` function with signature `withdrawTo(address,uint256)` and selector `0x205c2878` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "withdrawTo", abi = "withdrawTo(address,uint256)")] - pub struct WithdrawToCall { - 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 MockEntryPointCalls { - BalanceOf(BalanceOfCall), - DepositTo(DepositToCall), - ValidateUserOp(ValidateUserOpCall), - WithdrawTo(WithdrawToCall), - } - impl ::ethers::core::abi::AbiDecode for MockEntryPointCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode(data) { - return Ok(Self::BalanceOf(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::DepositTo(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ValidateUserOp(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::WithdrawTo(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockEntryPointCalls { - fn encode(self) -> Vec { - match self { - Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::DepositTo(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::ValidateUserOp(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::WithdrawTo(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for MockEntryPointCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::DepositTo(element) => ::core::fmt::Display::fmt(element, f), - Self::ValidateUserOp(element) => ::core::fmt::Display::fmt(element, f), - Self::WithdrawTo(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockEntryPointCalls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) - } - } - impl ::core::convert::From for MockEntryPointCalls { - fn from(value: DepositToCall) -> Self { - Self::DepositTo(value) - } - } - impl ::core::convert::From for MockEntryPointCalls { - fn from(value: ValidateUserOpCall) -> Self { - Self::ValidateUserOp(value) - } - } - impl ::core::convert::From for MockEntryPointCalls { - fn from(value: WithdrawToCall) -> Self { - Self::WithdrawTo(value) - } - } - ///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 `validateUserOp` function with signature `validateUserOp(address,(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)` and selector `0xa19d19d5` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ValidateUserOpReturn { - pub validation_data: ::ethers::core::types::U256, - } -} diff --git a/xmtp_id/src/bindings/mock_erc20.rs b/xmtp_id/src/bindings/mock_erc20.rs deleted file mode 100644 index 6bc053d3a..000000000 --- a/xmtp_id/src/bindings/mock_erc20.rs +++ /dev/null @@ -1,1299 +0,0 @@ -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::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("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"), - ), - }, - ::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"), - ), - }, - ], - 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"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x0Ej\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c6D\xE5\x15\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xBBW\x80c\xA9\x05\x9C\xBB\x14a\x01\xC3W\x80c\xD5\x05\xAC\xCF\x14a\x01\xD6W\x80c\xDDb\xED>\x14a\x01\xE9W`\0\x80\xFD[\x80c6D\xE5\x15\x14a\x01sW\x80cp\xA0\x821\x14a\x01{W\x80c~\xCE\xBE\0\x14a\x01\x9BW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x16$\xF6\xC6\x14a\x01\x15W\x80c\x18\x16\r\xDD\x14a\x01*W\x80c#\xB8r\xDD\x14a\x01AW\x80c1<\xE5g\x14a\x01TW[`\0\x80\xFD[a\0\xDCa\x02\x14V[`@Qa\0\xE9\x91\x90a\tmV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\t\xD8V[a\x02\xA2V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[a\x01(a\x01#6`\x04a\n\xB6V[a\x03\x0FV[\0[a\x013`\x03T\x81V[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x01O6`\x04a\x0B*V[a\x03\xAEV[`\x02Ta\x01a\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\0\xE9V[a\x013a\x04\xC3V[a\x013a\x01\x896`\x04a\x0BfV[`\x04` R`\0\x90\x81R`@\x90 T\x81V[a\x013a\x01\xA96`\x04a\x0BfV[`\x08` R`\0\x90\x81R`@\x90 T\x81V[a\0\xDCa\x04\xE9V[a\x01\x05a\x01\xD16`\x04a\t\xD8V[a\x04\xF6V[a\x01(a\x01\xE46`\x04a\x0B\x81V[a\x05\x8DV[a\x013a\x01\xF76`\x04a\x0B\xEBV[`\x05` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`\0\x80Ta\x02!\x90a\x0C\x1EV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02M\x90a\x0C\x1EV[\x80\x15a\x02\x9AW\x80`\x1F\x10a\x02oWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\x9AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02}W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x02\xFD\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[`\tT`\xFF\x16\x15a\x03]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10S\x14\x91PQ\x16W\xD2S\x92U\x12PS\x12V\x91Q`j\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x03i\x84\x82a\x0C\xA9V[P`\x01a\x03v\x83\x82a\x0C\xA9V[P`\x02\x80T`\xFF\x19\x16`\xFF\x83\x16\x17\x90Ua\x03\x8Ea\x07\xEBV[`\x06Ua\x03\x99a\x08\x04V[`\x07UPP`\t\x80T`\xFF\x19\x16`\x01\x17\x90UPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T`\0\x19\x81\x14a\x04\nWa\x03\xE5\x81\x84a\x08\xA7V[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x04` R`@\x90 Ta\x04-\x90\x84a\x08\xA7V[`\x01`\x01`\xA0\x1B\x03\x80\x87\x16`\0\x90\x81R`\x04` R`@\x80\x82 \x93\x90\x93U\x90\x86\x16\x81R Ta\x04\\\x90\x84a\t\nV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\0\x81\x81R`\x04` R`@\x90\x81\x90 \x93\x90\x93U\x91Q\x90\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x04\xB0\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[`\0`\x06Ta\x04\xD0a\x07\xEBV[\x14a\x04\xE2Wa\x04\xDDa\x08\x04V[\x90P\x90V[P`\x07T\x90V[`\x01\x80Ta\x02!\x90a\x0C\x1EV[3`\0\x90\x81R`\x04` R`@\x81 Ta\x05\x10\x90\x83a\x08\xA7V[3`\0\x90\x81R`\x04` R`@\x80\x82 \x92\x90\x92U`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R Ta\x05<\x90\x83a\t\nV[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x81\x81R`\x04` R`@\x90\x81\x90 \x92\x90\x92U\x90Q3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x02\xFD\x90\x86\x81R` \x01\x90V[B\x84\x10\x15a\x05\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03TV[`\0`\x01a\x05\xE9a\x04\xC3V[`\x01`\x01`\xA0\x1B\x03\x8A\x16`\0\x90\x81R`\x08` R`@\x81 \x80T\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x92\x8D\x92\x8D\x92\x8D\x92\x90\x91\x90a\x067\x83a\r\x7FV[\x90\x91UP`@\x80Q` \x81\x01\x96\x90\x96R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x90\x86\x01R\x92\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x81\x01\x88\x90R`\xE0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `@Q` \x01a\x06\xB0\x92\x91\x90a\x19\x01`\xF0\x1B\x81R`\x02\x81\x01\x92\x90\x92R`\"\x82\x01R`B\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x87\x16\x90\x82\x01R``\x81\x01\x85\x90R`\x80\x81\x01\x84\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x07\x0EW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16\x15\x80\x15\x90a\x07DWP\x87`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x14[a\x07\x81W`@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\x01a\x03TV[`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x8B\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x8A\x90UQ\x89\x81R\x91\x92\x8B\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPPV[`\0a\ti\x80a\x07\xFDc\xFF\xFF\xFF\xFF\x82\x16V[\x92PPP\x90V[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\x086\x91\x90a\r\x98V[`@Q\x80\x91\x03\x90 \x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6a\x08ga\x07\xEBV[`@\x80Q` \x81\x01\x95\x90\x95R\x84\x01\x92\x90\x92R``\x83\x01R`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[`\0\x81\x83\x10\x15a\x08\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FERC20: subtraction underflow\0\0\0\0`D\x82\x01R`d\x01a\x03TV[a\t\x03\x82\x84a\x0E\x0EV[\x93\x92PPPV[`\0\x80a\t\x17\x83\x85a\x0E!V[\x90P\x83\x81\x10\x15a\t\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FERC20: addition overflow\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03TV[F\x90V[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\t\x9BW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\t\x7FV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xD3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xEBW`\0\x80\xFD[a\t\xF4\x83a\t\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a\n)W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\nDWa\nDa\n\x02V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\nlWa\nla\n\x02V[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\n\x85W`\0\x80\xFD[\x83` \x87\x01` \x83\x017`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[\x805`\xFF\x81\x16\x81\x14a\t\xD3W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\xCBW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\n\xE3W`\0\x80\xFD[a\n\xEF\x87\x83\x88\x01a\n\x18V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x0B\x05W`\0\x80\xFD[Pa\x0B\x12\x86\x82\x87\x01a\n\x18V[\x92PPa\x0B!`@\x85\x01a\n\xA5V[\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B?W`\0\x80\xFD[a\x0BH\x84a\t\xBCV[\x92Pa\x0BV` \x85\x01a\t\xBCV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0BxW`\0\x80\xFD[a\t\x03\x82a\t\xBCV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\x0B\x9CW`\0\x80\xFD[a\x0B\xA5\x88a\t\xBCV[\x96Pa\x0B\xB3` \x89\x01a\t\xBCV[\x95P`@\x88\x015\x94P``\x88\x015\x93Pa\x0B\xCF`\x80\x89\x01a\n\xA5V[\x92P`\xA0\x88\x015\x91P`\xC0\x88\x015\x90P\x92\x95\x98\x91\x94\x97P\x92\x95PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xFEW`\0\x80\xFD[a\x0C\x07\x83a\t\xBCV[\x91Pa\x0C\x15` \x84\x01a\t\xBCV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C2W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0CRWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x0C\xA4W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x0C\x81WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x0C\xA0W\x82\x81U`\x01\x01a\x0C\x8DV[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\xC3Wa\x0C\xC3a\n\x02V[a\x0C\xD7\x81a\x0C\xD1\x84Ta\x0C\x1EV[\x84a\x0CXV[` \x80`\x1F\x83\x11`\x01\x81\x14a\r\x0CW`\0\x84\x15a\x0C\xF4WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x0C\xA0V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\r;W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\r\x1CV[P\x85\x82\x10\x15a\rYW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\r\x91Wa\r\x91a\riV[P`\x01\x01\x90V[`\0\x80\x83Ta\r\xA6\x81a\x0C\x1EV[`\x01\x82\x81\x16\x80\x15a\r\xBEW`\x01\x81\x14a\r\xD3Wa\x0E\x02V[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pa\x0E\x02V[\x87`\0R` \x80`\0 `\0[\x85\x81\x10\x15a\r\xF9W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a\r\xE0V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[\x81\x81\x03\x81\x81\x11\x15a\x03\tWa\x03\ta\riV[\x80\x82\x01\x80\x82\x11\x15a\x03\tWa\x03\ta\riV\xFE\xA2dipfsX\"\x12 ~\xCC:\x08\xB5\x03l\xB5d\x08\xBEJ\x0B\0\x92\\\x99D\xA8\xD8\x92\x19}?D\xDF5-\x9D\xCE\xCF\x80dsolcC\0\x08\x17\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`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xCFW`\x005`\xE0\x1C\x80c6D\xE5\x15\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x01\xBBW\x80c\xA9\x05\x9C\xBB\x14a\x01\xC3W\x80c\xD5\x05\xAC\xCF\x14a\x01\xD6W\x80c\xDDb\xED>\x14a\x01\xE9W`\0\x80\xFD[\x80c6D\xE5\x15\x14a\x01sW\x80cp\xA0\x821\x14a\x01{W\x80c~\xCE\xBE\0\x14a\x01\x9BW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xD4W\x80c\t^\xA7\xB3\x14a\0\xF2W\x80c\x16$\xF6\xC6\x14a\x01\x15W\x80c\x18\x16\r\xDD\x14a\x01*W\x80c#\xB8r\xDD\x14a\x01AW\x80c1<\xE5g\x14a\x01TW[`\0\x80\xFD[a\0\xDCa\x02\x14V[`@Qa\0\xE9\x91\x90a\tmV[`@Q\x80\x91\x03\x90\xF3[a\x01\x05a\x01\x006`\x04a\t\xD8V[a\x02\xA2V[`@Q\x90\x15\x15\x81R` \x01a\0\xE9V[a\x01(a\x01#6`\x04a\n\xB6V[a\x03\x0FV[\0[a\x013`\x03T\x81V[`@Q\x90\x81R` \x01a\0\xE9V[a\x01\x05a\x01O6`\x04a\x0B*V[a\x03\xAEV[`\x02Ta\x01a\x90`\xFF\x16\x81V[`@Q`\xFF\x90\x91\x16\x81R` \x01a\0\xE9V[a\x013a\x04\xC3V[a\x013a\x01\x896`\x04a\x0BfV[`\x04` R`\0\x90\x81R`@\x90 T\x81V[a\x013a\x01\xA96`\x04a\x0BfV[`\x08` R`\0\x90\x81R`@\x90 T\x81V[a\0\xDCa\x04\xE9V[a\x01\x05a\x01\xD16`\x04a\t\xD8V[a\x04\xF6V[a\x01(a\x01\xE46`\x04a\x0B\x81V[a\x05\x8DV[a\x013a\x01\xF76`\x04a\x0B\xEBV[`\x05` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`\0\x80Ta\x02!\x90a\x0C\x1EV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02M\x90a\x0C\x1EV[\x80\x15a\x02\x9AW\x80`\x1F\x10a\x02oWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02\x9AV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02}W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x85\x90UQ\x91\x92\x90\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x90a\x02\xFD\x90\x86\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01[\x92\x91PPV[`\tT`\xFF\x16\x15a\x03]W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10S\x14\x91PQ\x16W\xD2S\x92U\x12PS\x12V\x91Q`j\x1B`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\0a\x03i\x84\x82a\x0C\xA9V[P`\x01a\x03v\x83\x82a\x0C\xA9V[P`\x02\x80T`\xFF\x19\x16`\xFF\x83\x16\x17\x90Ua\x03\x8Ea\x07\xEBV[`\x06Ua\x03\x99a\x08\x04V[`\x07UPP`\t\x80T`\xFF\x19\x16`\x01\x17\x90UPV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x81 T`\0\x19\x81\x14a\x04\nWa\x03\xE5\x81\x84a\x08\xA7V[`\x01`\x01`\xA0\x1B\x03\x86\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 3\x84R\x90\x91R\x90 U[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x04` R`@\x90 Ta\x04-\x90\x84a\x08\xA7V[`\x01`\x01`\xA0\x1B\x03\x80\x87\x16`\0\x90\x81R`\x04` R`@\x80\x82 \x93\x90\x93U\x90\x86\x16\x81R Ta\x04\\\x90\x84a\t\nV[`\x01`\x01`\xA0\x1B\x03\x80\x86\x16`\0\x81\x81R`\x04` R`@\x90\x81\x90 \x93\x90\x93U\x91Q\x90\x87\x16\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x04\xB0\x90\x87\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3P`\x01\x94\x93PPPPV[`\0`\x06Ta\x04\xD0a\x07\xEBV[\x14a\x04\xE2Wa\x04\xDDa\x08\x04V[\x90P\x90V[P`\x07T\x90V[`\x01\x80Ta\x02!\x90a\x0C\x1EV[3`\0\x90\x81R`\x04` R`@\x81 Ta\x05\x10\x90\x83a\x08\xA7V[3`\0\x90\x81R`\x04` R`@\x80\x82 \x92\x90\x92U`\x01`\x01`\xA0\x1B\x03\x85\x16\x81R Ta\x05<\x90\x83a\t\nV[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x81\x81R`\x04` R`@\x90\x81\x90 \x92\x90\x92U\x90Q3\x90\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x90a\x02\xFD\x90\x86\x81R` \x01\x90V[B\x84\x10\x15a\x05\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x17`$\x82\x01R\x7FPERMIT_DEADLINE_EXPIRED\0\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03TV[`\0`\x01a\x05\xE9a\x04\xC3V[`\x01`\x01`\xA0\x1B\x03\x8A\x16`\0\x90\x81R`\x08` R`@\x81 \x80T\x7Fnq\xED\xAE\x12\xB1\xB9\x7FM\x1F`7\x0F\xEF\x10\x10_\xA2\xFA\xAE\x01&\x11J\x16\x9Cd\x84]a&\xC9\x92\x8D\x92\x8D\x92\x8D\x92\x90\x91\x90a\x067\x83a\r\x7FV[\x90\x91UP`@\x80Q` \x81\x01\x96\x90\x96R`\x01`\x01`\xA0\x1B\x03\x94\x85\x16\x90\x86\x01R\x92\x90\x91\x16``\x84\x01R`\x80\x83\x01R`\xA0\x82\x01R`\xC0\x81\x01\x88\x90R`\xE0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 `@Q` \x01a\x06\xB0\x92\x91\x90a\x19\x01`\xF0\x1B\x81R`\x02\x81\x01\x92\x90\x92R`\"\x82\x01R`B\x01\x90V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\0\x84R\x90\x83\x01\x80\x83RR`\xFF\x87\x16\x90\x82\x01R``\x81\x01\x85\x90R`\x80\x81\x01\x84\x90R`\xA0\x01` `@Q` \x81\x03\x90\x80\x84\x03\x90\x85Z\xFA\x15\x80\x15a\x07\x0EW=`\0\x80>=`\0\xFD[PP`@Q`\x1F\x19\x01Q\x91PP`\x01`\x01`\xA0\x1B\x03\x81\x16\x15\x80\x15\x90a\x07DWP\x87`\x01`\x01`\xA0\x1B\x03\x16\x81`\x01`\x01`\xA0\x1B\x03\x16\x14[a\x07\x81W`@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\x01a\x03TV[`\x01`\x01`\xA0\x1B\x03\x81\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x8B\x85\x16\x80\x85R\x90\x83R\x92\x81\x90 \x8A\x90UQ\x89\x81R\x91\x92\x8B\x16\x91\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x91\x01`@Q\x80\x91\x03\x90\xA3PPPPPPPPV[`\0a\ti\x80a\x07\xFDc\xFF\xFF\xFF\xFF\x82\x16V[\x92PPP\x90V[`\0\x7F\x8Bs\xC3\xC6\x9B\xB8\xFE=Q.\xCCL\xF7Y\xCCy#\x9F{\x17\x9B\x0F\xFA\xCA\xA9\xA7]R+9@\x0F`\0`@Qa\x086\x91\x90a\r\x98V[`@Q\x80\x91\x03\x90 \x7F\xC8\x9E\xFD\xAAT\xC0\xF2\x0Cz\xDFa(\x82\xDF\tP\xF5\xA9Qc~\x03\x07\xCD\xCBLg/)\x8B\x8B\xC6a\x08ga\x07\xEBV[`@\x80Q` \x81\x01\x95\x90\x95R\x84\x01\x92\x90\x92R``\x83\x01R`\x80\x82\x01R0`\xA0\x82\x01R`\xC0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x90V[`\0\x81\x83\x10\x15a\x08\xF9W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1C`$\x82\x01R\x7FERC20: subtraction underflow\0\0\0\0`D\x82\x01R`d\x01a\x03TV[a\t\x03\x82\x84a\x0E\x0EV[\x93\x92PPPV[`\0\x80a\t\x17\x83\x85a\x0E!V[\x90P\x83\x81\x10\x15a\t\x03W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x18`$\x82\x01R\x7FERC20: addition overflow\0\0\0\0\0\0\0\0`D\x82\x01R`d\x01a\x03TV[F\x90V[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\t\x9BW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\t\x7FV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xD3W`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\t\xEBW`\0\x80\xFD[a\t\xF4\x83a\t\xBCV[\x94` \x93\x90\x93\x015\x93PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12a\n)W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\nDWa\nDa\n\x02V[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\nlWa\nla\n\x02V[\x81`@R\x83\x81R\x86` \x85\x88\x01\x01\x11\x15a\n\x85W`\0\x80\xFD[\x83` \x87\x01` \x83\x017`\0` \x85\x83\x01\x01R\x80\x94PPPPP\x92\x91PPV[\x805`\xFF\x81\x16\x81\x14a\t\xD3W`\0\x80\xFD[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\xCBW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\n\xE3W`\0\x80\xFD[a\n\xEF\x87\x83\x88\x01a\n\x18V[\x94P` \x86\x015\x91P\x80\x82\x11\x15a\x0B\x05W`\0\x80\xFD[Pa\x0B\x12\x86\x82\x87\x01a\n\x18V[\x92PPa\x0B!`@\x85\x01a\n\xA5V[\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a\x0B?W`\0\x80\xFD[a\x0BH\x84a\t\xBCV[\x92Pa\x0BV` \x85\x01a\t\xBCV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0` \x82\x84\x03\x12\x15a\x0BxW`\0\x80\xFD[a\t\x03\x82a\t\xBCV[`\0\x80`\0\x80`\0\x80`\0`\xE0\x88\x8A\x03\x12\x15a\x0B\x9CW`\0\x80\xFD[a\x0B\xA5\x88a\t\xBCV[\x96Pa\x0B\xB3` \x89\x01a\t\xBCV[\x95P`@\x88\x015\x94P``\x88\x015\x93Pa\x0B\xCF`\x80\x89\x01a\n\xA5V[\x92P`\xA0\x88\x015\x91P`\xC0\x88\x015\x90P\x92\x95\x98\x91\x94\x97P\x92\x95PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xFEW`\0\x80\xFD[a\x0C\x07\x83a\t\xBCV[\x91Pa\x0C\x15` \x84\x01a\t\xBCV[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C2W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0CRWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x0C\xA4W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x0C\x81WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x0C\xA0W\x82\x81U`\x01\x01a\x0C\x8DV[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\xC3Wa\x0C\xC3a\n\x02V[a\x0C\xD7\x81a\x0C\xD1\x84Ta\x0C\x1EV[\x84a\x0CXV[` \x80`\x1F\x83\x11`\x01\x81\x14a\r\x0CW`\0\x84\x15a\x0C\xF4WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x0C\xA0V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\r;W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\r\x1CV[P\x85\x82\x10\x15a\rYW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0`\x01\x82\x01a\r\x91Wa\r\x91a\riV[P`\x01\x01\x90V[`\0\x80\x83Ta\r\xA6\x81a\x0C\x1EV[`\x01\x82\x81\x16\x80\x15a\r\xBEW`\x01\x81\x14a\r\xD3Wa\x0E\x02V[`\xFF\x19\x84\x16\x87R\x82\x15\x15\x83\x02\x87\x01\x94Pa\x0E\x02V[\x87`\0R` \x80`\0 `\0[\x85\x81\x10\x15a\r\xF9W\x81T\x8A\x82\x01R\x90\x84\x01\x90\x82\x01a\r\xE0V[PPP\x82\x87\x01\x94P[P\x92\x96\x95PPPPPPV[\x81\x81\x03\x81\x81\x11\x15a\x03\tWa\x03\ta\riV[\x80\x82\x01\x80\x82\x11\x15a\x03\tWa\x03\ta\riV\xFE\xA2dipfsX\"\x12 ~\xCC:\x08\xB5\x03l\xB5d\x08\xBEJ\x0B\0\x92\\\x99D\xA8\xD8\x92\x19}?D\xDF5-\x9D\xCE\xCF\x80dsolcC\0\x08\x17\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 `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 `initialize` (0x1624f6c6) function - pub fn initialize( - &self, - name: ::std::string::String, - symbol: ::std::string::String, - decimals: u8, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([22, 36, 246, 198], (name, symbol, decimals)) - .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 `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 `initialize` function with signature `initialize(string,string,uint8)` and selector `0x1624f6c6` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "initialize", abi = "initialize(string,string,uint8)")] - pub struct InitializeCall { - pub name: ::std::string::String, - pub symbol: ::std::string::String, - pub decimals: u8, - } - ///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), - Decimals(DecimalsCall), - Initialize(InitializeCall), - 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::Decimals(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Initialize(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::Decimals(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Initialize(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::Decimals(element) => ::core::fmt::Display::fmt(element, f), - Self::Initialize(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: DecimalsCall) -> Self { - Self::Decimals(value) - } - } - impl ::core::convert::From for MockERC20Calls { - fn from(value: InitializeCall) -> Self { - Self::Initialize(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/xmtp_id/src/bindings/mock_erc721.rs b/xmtp_id/src/bindings/mock_erc721.rs deleted file mode 100644 index 1a754d17d..000000000 --- a/xmtp_id/src/bindings/mock_erc721.rs +++ /dev/null @@ -1,1389 +0,0 @@ -pub use mock_erc721::*; -/// 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_erc721 { - #[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("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("id"), - 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("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::borrow::ToOwned::to_owned("owner"), - 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("getApproved"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getApproved"), - 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::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("isApprovedForAll"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isApprovedForAll"), - 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::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("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("ownerOf"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("ownerOf"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("id"), - 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("owner"), - 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("safeTransferFrom"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - 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("id"), - 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, - }, - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), - 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("id"), - 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("setApprovalForAll"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setApprovalForAll"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("operator"), - 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("approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - }, - ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("supportsInterface"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("supportsInterface"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("interfaceId"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), - },], - 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::Pure, - },], - ), - ( - ::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("tokenURI"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("tokenURI"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("id"), - 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::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("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("id"), - 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("id"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: true, - }, - ], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("ApprovalForAll"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), - 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("operator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - 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("id"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: true, - }, - ], - anonymous: false, - },], - ), - ]), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKERC721_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x0E\xF3\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80ccR!\x1E\x11a\0\x8CW\x80c\xA2,\xB4e\x11a\0fW\x80c\xA2,\xB4e\x14a\x01\xF7W\x80c\xB8\x8DO\xDE\x14a\x02\nW\x80c\xC8{V\xDD\x14a\x02\x1DW\x80c\xE9\x85\xE9\xC5\x14a\x021W`\0\x80\xFD[\x80ccR!\x1E\x14a\x01\xBBW\x80cp\xA0\x821\x14a\x01\xCEW\x80c\x95\xD8\x9BA\x14a\x01\xEFW`\0\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xC8W\x80c\t^\xA7\xB3\x14a\x01mW\x80c#\xB8r\xDD\x14a\x01\x82W\x80cB\x84.\x0E\x14a\x01\x95W\x80cL\xD8\x8Bv\x14a\x01\xA8W`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xEFW\x80c\x06\xFD\xDE\x03\x14a\x01\x17W\x80c\x08\x18\x12\xFC\x14a\x01,W[`\0\x80\xFD[a\x01\x02a\0\xFD6`\x04a\t\xAAV[a\x02_V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x1Fa\x02\xB1V[`@Qa\x01\x0E\x91\x90a\n\x14V[a\x01Ua\x01:6`\x04a\n'V[`\x04` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x0EV[a\x01\x80a\x01{6`\x04a\nWV[a\x03?V[\0[a\x01\x80a\x01\x906`\x04a\n\x81V[a\x04&V[a\x01\x80a\x01\xA36`\x04a\n\x81V[a\x06\x1FV[a\x01\x80a\x01\xB66`\x04a\x0BiV[a\x07\x0EV[a\x01Ua\x01\xC96`\x04a\n'V[a\x07\x82V[a\x01\xE1a\x01\xDC6`\x04a\x0B\xCDV[a\x07\xD9V[`@Q\x90\x81R` \x01a\x01\x0EV[a\x01\x1Fa\x08=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xBE\x91\x90a\rSV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\x07\tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x03\xC1V[PPPV[`\x06T`\xFF\x16\x15a\x07WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10S\x14\x91PQ\x16W\xD2S\x92U\x12PS\x12V\x91Q`j\x1B`D\x82\x01R`d\x01a\x03\xC1V[`\0a\x07c\x83\x82a\r\xC0V[P`\x01a\x07p\x82\x82a\r\xC0V[PP`\x06\x80T`\xFF\x19\x16`\x01\x17\x90UPV[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x07\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri\x13\x93\xD5\x17\xD3RS\x95\x11Q`\xB2\x1B`D\x82\x01R`d\x01a\x03\xC1V[\x91\x90PV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkZERO_ADDRESS`\xA0\x1B`D\x82\x01R`d\x01a\x03\xC1V[P`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[`\x01\x80Ta\x02\xBE\x90a\x0C\xD3V[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T`\xFF\x19\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x08\xC0\x84\x84\x84a\x04&V[\x82;\x15\x80a\tLWP`@Qc\n\x85\xBD\x01`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x15\x0Bz\x02\x90a\x08\xFD\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x0E\x80V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t@\x91\x90a\rSV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\t\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x03\xC1V[PPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\t\xA7W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\t\xBCW`\0\x80\xFD[\x815a\t\xC7\x81a\t\x91V[\x93\x92PPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\t\xF4W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\t\xD8V[P`\0` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R`\0a\t\xC7` \x83\x01\x84a\t\xCEV[`\0` \x82\x84\x03\x12\x15a\n9W`\0\x80\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xD4W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\njW`\0\x80\xFD[a\ns\x83a\n@V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\x96W`\0\x80\xFD[a\n\x9F\x84a\n@V[\x92Pa\n\xAD` \x85\x01a\n@V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\n\xEEWa\n\xEEa\n\xBDV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0B\x16Wa\x0B\x16a\n\xBDV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x0B/W`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x0BZW`\0\x80\xFD[a\t\xC7\x83\x835` \x85\x01a\n\xD3V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B|W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0B\x94W`\0\x80\xFD[a\x0B\xA0\x86\x83\x87\x01a\x0BIV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x0B\xB6W`\0\x80\xFD[Pa\x0B\xC3\x85\x82\x86\x01a\x0BIV[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0B\xDFW`\0\x80\xFD[a\t\xC7\x82a\n@V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xFBW`\0\x80\xFD[a\x0C\x04\x83a\n@V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x0C\x19W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x0C:W`\0\x80\xFD[a\x0CC\x85a\n@V[\x93Pa\x0CQ` \x86\x01a\n@V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0CtW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x0C\x85W`\0\x80\xFD[a\x0C\x94\x87\x825` \x84\x01a\n\xD3V[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xB3W`\0\x80\xFD[a\x0C\xBC\x83a\n@V[\x91Pa\x0C\xCA` \x84\x01a\n@V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C\xE7W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\x07WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x81a\r2Wa\r2a\r\rV[P`\0\x19\x01\x90V[`\0`\x01\x82\x01a\rLWa\rLa\r\rV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\reW`\0\x80\xFD[\x81Qa\t\xC7\x81a\t\x91V[`\x1F\x82\x11\x15a\x07\tW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\r\x99WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\r\xB8W\x82\x81U`\x01\x01a\r\xA5V[PPPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDAWa\r\xDAa\n\xBDV[a\r\xEE\x81a\r\xE8\x84Ta\x0C\xD3V[\x84a\rpV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x0E#W`\0\x84\x15a\x0E\x0BWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\r\xB8V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x0ERW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x0E3V[P\x85\x82\x10\x15a\x0EpW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x82R\x84\x16` \x82\x01R`@\x81\x01\x83\x90R`\x80``\x82\x01\x81\x90R`\0\x90a\x0E\xB3\x90\x83\x01\x84a\t\xCEV[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 \x88\xC4\xB3~?\t\x01\x0E\x84B\x8E\xD5\x8B\xCA\x98\x02\xC6\xF9\xC1&\x18\xE7\xEF\x82\xB9E0\xACj}h\x1AdsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static MOCKERC721_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80ccR!\x1E\x11a\0\x8CW\x80c\xA2,\xB4e\x11a\0fW\x80c\xA2,\xB4e\x14a\x01\xF7W\x80c\xB8\x8DO\xDE\x14a\x02\nW\x80c\xC8{V\xDD\x14a\x02\x1DW\x80c\xE9\x85\xE9\xC5\x14a\x021W`\0\x80\xFD[\x80ccR!\x1E\x14a\x01\xBBW\x80cp\xA0\x821\x14a\x01\xCEW\x80c\x95\xD8\x9BA\x14a\x01\xEFW`\0\x80\xFD[\x80c\t^\xA7\xB3\x11a\0\xC8W\x80c\t^\xA7\xB3\x14a\x01mW\x80c#\xB8r\xDD\x14a\x01\x82W\x80cB\x84.\x0E\x14a\x01\x95W\x80cL\xD8\x8Bv\x14a\x01\xA8W`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\0\xEFW\x80c\x06\xFD\xDE\x03\x14a\x01\x17W\x80c\x08\x18\x12\xFC\x14a\x01,W[`\0\x80\xFD[a\x01\x02a\0\xFD6`\x04a\t\xAAV[a\x02_V[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x1Fa\x02\xB1V[`@Qa\x01\x0E\x91\x90a\n\x14V[a\x01Ua\x01:6`\x04a\n'V[`\x04` R`\0\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x0EV[a\x01\x80a\x01{6`\x04a\nWV[a\x03?V[\0[a\x01\x80a\x01\x906`\x04a\n\x81V[a\x04&V[a\x01\x80a\x01\xA36`\x04a\n\x81V[a\x06\x1FV[a\x01\x80a\x01\xB66`\x04a\x0BiV[a\x07\x0EV[a\x01Ua\x01\xC96`\x04a\n'V[a\x07\x82V[a\x01\xE1a\x01\xDC6`\x04a\x0B\xCDV[a\x07\xD9V[`@Q\x90\x81R` \x01a\x01\x0EV[a\x01\x1Fa\x08=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xBE\x91\x90a\rSV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\x07\tW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x03\xC1V[PPPV[`\x06T`\xFF\x16\x15a\x07WW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x13`$\x82\x01Rr\x10S\x14\x91PQ\x16W\xD2S\x92U\x12PS\x12V\x91Q`j\x1B`D\x82\x01R`d\x01a\x03\xC1V[`\0a\x07c\x83\x82a\r\xC0V[P`\x01a\x07p\x82\x82a\r\xC0V[PP`\x06\x80T`\xFF\x19\x16`\x01\x17\x90UPV[`\0\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x80a\x07\xD4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\n`$\x82\x01Ri\x13\x93\xD5\x17\xD3RS\x95\x11Q`\xB2\x1B`D\x82\x01R`d\x01a\x03\xC1V[\x91\x90PV[`\0`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08 W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x0C`$\x82\x01RkZERO_ADDRESS`\xA0\x1B`D\x82\x01R`d\x01a\x03\xC1V[P`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x03` R`@\x90 T\x90V[`\x01\x80Ta\x02\xBE\x90a\x0C\xD3V[3`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x90\x83R\x92\x81\x90 \x80T`\xFF\x19\x16\x86\x15\x15\x90\x81\x17\x90\x91U\x90Q\x90\x81R\x91\x92\x91\x7F\x170~\xAB9\xABa\x07\xE8\x89\x98E\xAD=Y\xBD\x96S\xF2\0\xF2 \x92\x04\x89\xCA+Y7il1\x91\x01`@Q\x80\x91\x03\x90\xA3PPV[a\x08\xC0\x84\x84\x84a\x04&V[\x82;\x15\x80a\tLWP`@Qc\n\x85\xBD\x01`\xE1\x1B\x80\x82R\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90c\x15\x0Bz\x02\x90a\x08\xFD\x903\x90\x89\x90\x88\x90\x88\x90`\x04\x01a\x0E\x80V[` `@Q\x80\x83\x03\x81`\0\x87Z\xF1\x15\x80\x15a\t\x1CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t@\x91\x90a\rSV[`\x01`\x01`\xE0\x1B\x03\x19\x16\x14[a\t\x8BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Ro\x15S\x94\xD0Q\x91W\xD4\x91P\xD2T\x12QS\x95`\x82\x1B`D\x82\x01R`d\x01a\x03\xC1V[PPPPV[`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\t\xA7W`\0\x80\xFD[PV[`\0` \x82\x84\x03\x12\x15a\t\xBCW`\0\x80\xFD[\x815a\t\xC7\x81a\t\x91V[\x93\x92PPPV[`\0\x81Q\x80\x84R`\0[\x81\x81\x10\x15a\t\xF4W` \x81\x85\x01\x81\x01Q\x86\x83\x01\x82\x01R\x01a\t\xD8V[P`\0` \x82\x86\x01\x01R` `\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x91PP\x92\x91PPV[` \x81R`\0a\t\xC7` \x83\x01\x84a\t\xCEV[`\0` \x82\x84\x03\x12\x15a\n9W`\0\x80\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\xD4W`\0\x80\xFD[`\0\x80`@\x83\x85\x03\x12\x15a\njW`\0\x80\xFD[a\ns\x83a\n@V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\n\x96W`\0\x80\xFD[a\n\x9F\x84a\n@V[\x92Pa\n\xAD` \x85\x01a\n@V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\n\xEEWa\n\xEEa\n\xBDV[`@Q`\x1F\x85\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15a\x0B\x16Wa\x0B\x16a\n\xBDV[\x81`@R\x80\x93P\x85\x81R\x86\x86\x86\x01\x11\x15a\x0B/W`\0\x80\xFD[\x85\x85` \x83\x017`\0` \x87\x83\x01\x01RPPP\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a\x0BZW`\0\x80\xFD[a\t\xC7\x83\x835` \x85\x01a\n\xD3V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B|W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0B\x94W`\0\x80\xFD[a\x0B\xA0\x86\x83\x87\x01a\x0BIV[\x93P` \x85\x015\x91P\x80\x82\x11\x15a\x0B\xB6W`\0\x80\xFD[Pa\x0B\xC3\x85\x82\x86\x01a\x0BIV[\x91PP\x92P\x92\x90PV[`\0` \x82\x84\x03\x12\x15a\x0B\xDFW`\0\x80\xFD[a\t\xC7\x82a\n@V[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xFBW`\0\x80\xFD[a\x0C\x04\x83a\n@V[\x91P` \x83\x015\x80\x15\x15\x81\x14a\x0C\x19W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15a\x0C:W`\0\x80\xFD[a\x0CC\x85a\n@V[\x93Pa\x0CQ` \x86\x01a\n@V[\x92P`@\x85\x015\x91P``\x85\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0CtW`\0\x80\xFD[\x85\x01`\x1F\x81\x01\x87\x13a\x0C\x85W`\0\x80\xFD[a\x0C\x94\x87\x825` \x84\x01a\n\xD3V[\x91PP\x92\x95\x91\x94P\x92PV[`\0\x80`@\x83\x85\x03\x12\x15a\x0C\xB3W`\0\x80\xFD[a\x0C\xBC\x83a\n@V[\x91Pa\x0C\xCA` \x84\x01a\n@V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C\xE7W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\r\x07WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[`\0\x81a\r2Wa\r2a\r\rV[P`\0\x19\x01\x90V[`\0`\x01\x82\x01a\rLWa\rLa\r\rV[P`\x01\x01\x90V[`\0` \x82\x84\x03\x12\x15a\reW`\0\x80\xFD[\x81Qa\t\xC7\x81a\t\x91V[`\x1F\x82\x11\x15a\x07\tW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\r\x99WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\r\xB8W\x82\x81U`\x01\x01a\r\xA5V[PPPPPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\r\xDAWa\r\xDAa\n\xBDV[a\r\xEE\x81a\r\xE8\x84Ta\x0C\xD3V[\x84a\rpV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x0E#W`\0\x84\x15a\x0E\x0BWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\r\xB8V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x0ERW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x0E3V[P\x85\x82\x10\x15a\x0EpW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[`\x01`\x01`\xA0\x1B\x03\x85\x81\x16\x82R\x84\x16` \x82\x01R`@\x81\x01\x83\x90R`\x80``\x82\x01\x81\x90R`\0\x90a\x0E\xB3\x90\x83\x01\x84a\t\xCEV[\x96\x95PPPPPPV\xFE\xA2dipfsX\"\x12 \x88\xC4\xB3~?\t\x01\x0E\x84B\x8E\xD5\x8B\xCA\x98\x02\xC6\xF9\xC1&\x18\xE7\xEF\x82\xB9E0\xACj}h\x1AdsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static MOCKERC721_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct MockERC721(::ethers::contract::Contract); - impl ::core::clone::Clone for MockERC721 { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockERC721 { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockERC721 { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockERC721 { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockERC721)) - .field(&self.address()) - .finish() - } - } - impl MockERC721 { - /// 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(), - MOCKERC721_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( - MOCKERC721_ABI.clone(), - MOCKERC721_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `approve` (0x095ea7b3) function - pub fn approve( - &self, - spender: ::ethers::core::types::Address, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([9, 94, 167, 179], (spender, id)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `balanceOf` (0x70a08231) function - pub fn balance_of( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([112, 160, 130, 49], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `getApproved` (0x081812fc) function - pub fn get_approved( - &self, - p0: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([8, 24, 18, 252], p0) - .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 `isApprovedForAll` (0xe985e9c5) function - pub fn is_approved_for_all( - &self, - p0: ::ethers::core::types::Address, - p1: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([233, 133, 233, 197], (p0, p1)) - .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 `ownerOf` (0x6352211e) function - pub fn owner_of( - &self, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([99, 82, 33, 30], id) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `safeTransferFrom` (0x42842e0e) function - pub fn safe_transfer_from( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([66, 132, 46, 14], (from, to, id)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `safeTransferFrom` (0xb88d4fde) function - pub fn safe_transfer_from_with_from_and_to_and_data( - &self, - from: ::ethers::core::types::Address, - to: ::ethers::core::types::Address, - id: ::ethers::core::types::U256, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([184, 141, 79, 222], (from, to, id, data)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setApprovalForAll` (0xa22cb465) function - pub fn set_approval_for_all( - &self, - operator: ::ethers::core::types::Address, - approved: bool, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([162, 44, 180, 101], (operator, approved)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `supportsInterface` (0x01ffc9a7) function - pub fn supports_interface( - &self, - interface_id: [u8; 4], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([1, 255, 201, 167], interface_id) - .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 `tokenURI` (0xc87b56dd) function - pub fn token_uri( - &self, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([200, 123, 86, 221], id) - .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, - id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 184, 114, 221], (from, to, id)) - .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 `ApprovalForAll` event - pub fn approval_for_all_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, ApprovalForAllFilter> - { - 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, MockERC721Events> { - self.0 - .event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> for MockERC721 { - 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, - #[ethevent(indexed)] - pub id: ::ethers::core::types::U256, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] - pub struct ApprovalForAllFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub operator: ::ethers::core::types::Address, - pub approved: bool, - } - #[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, - #[ethevent(indexed)] - pub id: ::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 MockERC721Events { - ApprovalFilter(ApprovalFilter), - ApprovalForAllFilter(ApprovalForAllFilter), - TransferFilter(TransferFilter), - } - impl ::ethers::contract::EthLogDecode for MockERC721Events { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = ApprovalFilter::decode_log(log) { - return Ok(MockERC721Events::ApprovalFilter(decoded)); - } - if let Ok(decoded) = ApprovalForAllFilter::decode_log(log) { - return Ok(MockERC721Events::ApprovalForAllFilter(decoded)); - } - if let Ok(decoded) = TransferFilter::decode_log(log) { - return Ok(MockERC721Events::TransferFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for MockERC721Events { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::ApprovalForAllFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockERC721Events { - fn from(value: ApprovalFilter) -> Self { - Self::ApprovalFilter(value) - } - } - impl ::core::convert::From for MockERC721Events { - fn from(value: ApprovalForAllFilter) -> Self { - Self::ApprovalForAllFilter(value) - } - } - impl ::core::convert::From for MockERC721Events { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) - } - } - ///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 id: ::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 owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] - pub struct GetApprovedCall(pub ::ethers::core::types::U256); - ///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 `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] - pub struct IsApprovedForAllCall( - pub ::ethers::core::types::Address, - pub ::ethers::core::types::Address, - ); - ///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 `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] - pub struct OwnerOfCall { - pub id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256)" - )] - pub struct SafeTransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256,bytes)" - )] - pub struct SafeTransferFromWithFromAndToAndDataCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub id: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] - pub struct SetApprovalForAllCall { - pub operator: ::ethers::core::types::Address, - pub approved: bool, - } - ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] - pub struct SupportsInterfaceCall { - pub interface_id: [u8; 4], - } - ///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 `tokenURI` function with signature `tokenURI(uint256)` and selector `0xc87b56dd` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "tokenURI", abi = "tokenURI(uint256)")] - pub struct TokenURICall { - pub id: ::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 id: ::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 MockERC721Calls { - Approve(ApproveCall), - BalanceOf(BalanceOfCall), - GetApproved(GetApprovedCall), - Initialize(InitializeCall), - IsApprovedForAll(IsApprovedForAllCall), - Name(NameCall), - OwnerOf(OwnerOfCall), - SafeTransferFrom(SafeTransferFromCall), - SafeTransferFromWithFromAndToAndData(SafeTransferFromWithFromAndToAndDataCall), - SetApprovalForAll(SetApprovalForAllCall), - SupportsInterface(SupportsInterfaceCall), - Symbol(SymbolCall), - TokenURI(TokenURICall), - TransferFrom(TransferFromCall), - } - impl ::ethers::core::abi::AbiDecode for MockERC721Calls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - 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::GetApproved(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Initialize(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsApprovedForAll(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Name(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::OwnerOf(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SafeTransferFrom(decoded)); - } - if let Ok(decoded) = - ::decode( - data, - ) - { - return Ok(Self::SafeTransferFromWithFromAndToAndData(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SetApprovalForAll(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::SupportsInterface(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Symbol(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::TokenURI(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 MockERC721Calls { - fn encode(self) -> Vec { - match self { - Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::BalanceOf(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::GetApproved(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Initialize(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsApprovedForAll(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Name(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::OwnerOf(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SafeTransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SafeTransferFromWithFromAndToAndData(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetApprovalForAll(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::SupportsInterface(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Symbol(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TokenURI(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::TransferFrom(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for MockERC721Calls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::Approve(element) => ::core::fmt::Display::fmt(element, f), - Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), - Self::GetApproved(element) => ::core::fmt::Display::fmt(element, f), - Self::Initialize(element) => ::core::fmt::Display::fmt(element, f), - Self::IsApprovedForAll(element) => ::core::fmt::Display::fmt(element, f), - Self::Name(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnerOf(element) => ::core::fmt::Display::fmt(element, f), - Self::SafeTransferFrom(element) => ::core::fmt::Display::fmt(element, f), - Self::SafeTransferFromWithFromAndToAndData(element) => { - ::core::fmt::Display::fmt(element, f) - } - Self::SetApprovalForAll(element) => ::core::fmt::Display::fmt(element, f), - Self::SupportsInterface(element) => ::core::fmt::Display::fmt(element, f), - Self::Symbol(element) => ::core::fmt::Display::fmt(element, f), - Self::TokenURI(element) => ::core::fmt::Display::fmt(element, f), - Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: ApproveCall) -> Self { - Self::Approve(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: BalanceOfCall) -> Self { - Self::BalanceOf(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: GetApprovedCall) -> Self { - Self::GetApproved(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: InitializeCall) -> Self { - Self::Initialize(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: IsApprovedForAllCall) -> Self { - Self::IsApprovedForAll(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: NameCall) -> Self { - Self::Name(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: OwnerOfCall) -> Self { - Self::OwnerOf(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: SafeTransferFromCall) -> Self { - Self::SafeTransferFrom(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: SafeTransferFromWithFromAndToAndDataCall) -> Self { - Self::SafeTransferFromWithFromAndToAndData(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: SetApprovalForAllCall) -> Self { - Self::SetApprovalForAll(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: SupportsInterfaceCall) -> Self { - Self::SupportsInterface(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: SymbolCall) -> Self { - Self::Symbol(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: TokenURICall) -> Self { - Self::TokenURI(value) - } - } - impl ::core::convert::From for MockERC721Calls { - fn from(value: TransferFromCall) -> Self { - Self::TransferFrom(value) - } - } - ///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 `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GetApprovedReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsApprovedForAllReturn(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 `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerOfReturn { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all return fields from the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct SupportsInterfaceReturn(pub bool); - ///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 `tokenURI` function with signature `tokenURI(uint256)` and selector `0xc87b56dd` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct TokenURIReturn(pub ::std::string::String); -} diff --git a/xmtp_id/src/bindings/mock_multi_ownable.rs b/xmtp_id/src/bindings/mock_multi_ownable.rs deleted file mode 100644 index 2e8c40f6a..000000000 --- a/xmtp_id/src/bindings/mock_multi_ownable.rs +++ /dev/null @@ -1,1191 +0,0 @@ -pub use mock_multi_ownable::*; -/// 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_multi_ownable { - #[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("addOwnerAddress"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("addOwnerAddress"), - 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"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("x"), - 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("y"), - 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("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("owners"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::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("isOwnerAddress"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerAddress"), - 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"), - ), - },], - 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("isOwnerBytes"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerBytes"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("account"), - 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::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("isOwnerPublicKey"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerPublicKey"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("x"), - 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("y"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - 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("nextOwnerIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), - 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("ownerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("ownerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("removeOwnerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("removeOwnerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("AddOwner"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("AddOwner"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("RemoveOwner"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("RemoveOwner"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - },], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("AlreadyOwner"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("AlreadyOwner"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("Unauthorized"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("Unauthorized"), - inputs: ::std::vec![], - },], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKMULTIOWNABLE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x0C\"\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x93W`\x005`\xE0\x1C\x80cE\x9F\xB2\xAD\x11a\0fW\x80cE\x9F\xB2\xAD\x14a\0\xFBW\x80cr\xDE;Z\x14a\x01\x0EW\x80c\x8E\xA6\x90)\x14a\x01!W\x80c\xA2\xE1\xA8\xD8\x14a\x01AW\x80c\xD9H\xFD.\x14a\x01TW`\0\x80\xFD[\x80c\x06j\x1E\xB7\x14a\0\x98W\x80c\x0F\x0F?$\x14a\0\xC0W\x80c\x1C\xA59?\x14a\0\xD5W\x80c)V^;\x14a\0\xE8W[`\0\x80\xFD[a\0\xABa\0\xA66`\x04a\x07SV[a\x01rV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD3a\0\xCE6`\x04a\x07uV[a\x01\xE0V[\0[a\0\xABa\0\xE36`\x04a\x08\\V[a\x02\x18V[a\0\xD3a\0\xF66`\x04a\x07SV[a\x02SV[a\0\xD3a\x01\t6`\x04a\x08\x99V[a\x02|V[a\0\xD3a\x01\x1C6`\x04a\t\x0EV[a\x02\x8EV[a\x014a\x01/6`\x04a\t\x0EV[a\x03\x80V[`@Qa\0\xB7\x91\x90a\tKV[a\0\xABa\x01O6`\x04a\x07uV[a\x04AV[`\0\x80Q` a\x0B\xCD\x839\x81Q\x91RT`@Q\x90\x81R` \x01a\0\xB7V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\xC5\x91a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P\x92\x91PPV[a\x01\xE8a\x04\x87V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x02\x15\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x04\xB9V[PV[`\0`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`\x02\x01\x82`@Qa\x02:\x91\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x02[a\x04\x87V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x02x\x90``\x01a\x02\x01V[PPV[a\x02xa\x02\x89\x82\x84a\t\x9AV[a\x04\xE4V[a\x02\x96a\x04\x87V[`\0a\x02\xA1\x82a\x03\x80V[\x90P\x80Q`\0\x03a\x02\xCDW`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\x02\xFD\x90\x83\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\x03)`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x03D\x91a\x07\x05V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x03t\x91\x90a\tKV[`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x03\xBC\x90a\n V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\xE8\x90a\n V[\x80\x15a\x045W\x80`\x1F\x10a\x04\nWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x045V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04\x18W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x02:\x91a\t~V[a\x04\x903a\x04AV[\x80a\x04\x9AWP30\x14[\x15a\x04\xA1WV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x02\x15\x81`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R[\x80T\x90`\0a\x04\xDB\x83a\nZV[\x91\x90PUa\x066V[`\0[\x81Q\x81\x10\x15a\x02xW\x81\x81\x81Q\x81\x10a\x05\x02Wa\x05\x02a\n\x81V[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x056WP\x81\x81\x81Q\x81\x10a\x05(Wa\x05(a\n\x81V[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x05oW\x81\x81\x81Q\x81\x10a\x05MWa\x05Ma\n\x81V[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[\x81\x81\x81Q\x81\x10a\x05\x81Wa\x05\x81a\n\x81V[` \x02` \x01\x01QQ` \x14\x80\x15a\x05\xC3WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x05\xB0Wa\x05\xB0a\n\x81V[` \x02` \x01\x01Qa\x05\xC1\x90a\n\x97V[\x11[\x15a\x05\xFCW\x81\x81\x81Q\x81\x10a\x05\xDAWa\x05\xDAa\n\x81V[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[a\x06.\x82\x82\x81Q\x81\x10a\x06\x11Wa\x06\x11a\n\x81V[` \x02` \x01\x01Qa\x04\xCD`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\x01\x01a\x04\xE7V[a\x06?\x82a\x02\x18V[\x15a\x06_W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[`\x01`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`\x02\x01\x83`@Qa\x06\x81\x91\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x06\xB7`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x06\xD4\x90\x82a\x0B\x0CV[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x03t\x91\x90a\tKV[P\x80Ta\x07\x11\x90a\n V[`\0\x82U\x80`\x1F\x10a\x07!WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x02\x15\x91\x90[\x80\x82\x11\x15a\x07OW`\0\x81U`\x01\x01a\x07;V[P\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x07fW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x07\x87W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x9EW`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x07\xE4Wa\x07\xE4a\x07\xA5V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x07\xFDW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08\x17Wa\x08\x17a\x07\xA5V[a\x08*`\x1F\x82\x01`\x1F\x19\x16` \x01a\x07\xBBV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x08?W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x08nW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08\x85W`\0\x80\xFD[a\x08\x91\x84\x82\x85\x01a\x07\xECV[\x94\x93PPPPV[`\0\x80` \x83\x85\x03\x12\x15a\x08\xACW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xC4W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xD8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x08\xE7W`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x08\xFCW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\t W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a\tBW\x81\x81\x01Q\x83\x82\x01R` \x01a\t*V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Ra\tj\x81`@\x85\x01` \x87\x01a\t'V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x82Qa\t\x90\x81\x84` \x87\x01a\t'V[\x91\x90\x91\x01\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\t\xB5Wa\t\xB5a\x07\xA5V[\x83`\x05\x1B` a\t\xC7` \x83\x01a\x07\xBBV[\x86\x81R\x91\x85\x01\x91` \x81\x01\x906\x84\x11\x15a\t\xE0W`\0\x80\xFD[\x86[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\t\xFAW`\0\x80\x81\xFD[a\n\x066\x82\x8B\x01a\x07\xECV[\x84RP\x91\x83\x01\x91\x83\x01a\t\xE2V[P\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\n4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\nTWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0`\x01\x82\x01a\nzWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\nTW`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\x1F\x82\x11\x15a\x0B\x07W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\n\xE4WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x0B\x03W\x82\x81U`\x01\x01a\n\xF0V[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B&Wa\x0B&a\x07\xA5V[a\x0B:\x81a\x0B4\x84Ta\n V[\x84a\n\xBBV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x0BoW`\0\x84\x15a\x0BWWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x0B\x03V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x0B\x9EW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x0B\x7FV[P\x85\x82\x10\x15a\x0B\xBCW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV\xFE\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\0\xA2dipfsX\"\x12 \x8E\xA9\x13\xCA\x12^o\xAD\xA8s\xC1\xD3Y\xFF!\xEA\x04\xB3\x89\x18'\xEC\xCF\x1F\xBA\xEC\xFCL\xA7Gl?dsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static MOCKMULTIOWNABLE_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x93W`\x005`\xE0\x1C\x80cE\x9F\xB2\xAD\x11a\0fW\x80cE\x9F\xB2\xAD\x14a\0\xFBW\x80cr\xDE;Z\x14a\x01\x0EW\x80c\x8E\xA6\x90)\x14a\x01!W\x80c\xA2\xE1\xA8\xD8\x14a\x01AW\x80c\xD9H\xFD.\x14a\x01TW`\0\x80\xFD[\x80c\x06j\x1E\xB7\x14a\0\x98W\x80c\x0F\x0F?$\x14a\0\xC0W\x80c\x1C\xA59?\x14a\0\xD5W\x80c)V^;\x14a\0\xE8W[`\0\x80\xFD[a\0\xABa\0\xA66`\x04a\x07SV[a\x01rV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xD3a\0\xCE6`\x04a\x07uV[a\x01\xE0V[\0[a\0\xABa\0\xE36`\x04a\x08\\V[a\x02\x18V[a\0\xD3a\0\xF66`\x04a\x07SV[a\x02SV[a\0\xD3a\x01\t6`\x04a\x08\x99V[a\x02|V[a\0\xD3a\x01\x1C6`\x04a\t\x0EV[a\x02\x8EV[a\x014a\x01/6`\x04a\t\x0EV[a\x03\x80V[`@Qa\0\xB7\x91\x90a\tKV[a\0\xABa\x01O6`\x04a\x07uV[a\x04AV[`\0\x80Q` a\x0B\xCD\x839\x81Q\x91RT`@Q\x90\x81R` \x01a\0\xB7V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\xC5\x91a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P\x92\x91PPV[a\x01\xE8a\x04\x87V[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x02\x15\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x04\xB9V[PV[`\0`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`\x02\x01\x82`@Qa\x02:\x91\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x02[a\x04\x87V[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x02x\x90``\x01a\x02\x01V[PPV[a\x02xa\x02\x89\x82\x84a\t\x9AV[a\x04\xE4V[a\x02\x96a\x04\x87V[`\0a\x02\xA1\x82a\x03\x80V[\x90P\x80Q`\0\x03a\x02\xCDW`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\x02\xFD\x90\x83\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\x03)`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x03D\x91a\x07\x05V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x03t\x91\x90a\tKV[`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x03\xBC\x90a\n V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\xE8\x90a\n V[\x80\x15a\x045W\x80`\x1F\x10a\x04\nWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x045V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x04\x18W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x02:\x91a\t~V[a\x04\x903a\x04AV[\x80a\x04\x9AWP30\x14[\x15a\x04\xA1WV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x02\x15\x81`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R[\x80T\x90`\0a\x04\xDB\x83a\nZV[\x91\x90PUa\x066V[`\0[\x81Q\x81\x10\x15a\x02xW\x81\x81\x81Q\x81\x10a\x05\x02Wa\x05\x02a\n\x81V[` \x02` \x01\x01QQ` \x14\x15\x80\x15a\x056WP\x81\x81\x81Q\x81\x10a\x05(Wa\x05(a\n\x81V[` \x02` \x01\x01QQ`@\x14\x15[\x15a\x05oW\x81\x81\x81Q\x81\x10a\x05MWa\x05Ma\n\x81V[` \x02` \x01\x01Q`@Qc'u[\x91`\xE1\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[\x81\x81\x81Q\x81\x10a\x05\x81Wa\x05\x81a\n\x81V[` \x02` \x01\x01QQ` \x14\x80\x15a\x05\xC3WP`\x01`\x01`\xA0\x1B\x03\x80\x16\x82\x82\x81Q\x81\x10a\x05\xB0Wa\x05\xB0a\n\x81V[` \x02` \x01\x01Qa\x05\xC1\x90a\n\x97V[\x11[\x15a\x05\xFCW\x81\x81\x81Q\x81\x10a\x05\xDAWa\x05\xDAa\n\x81V[` \x02` \x01\x01Q`@Qc\xBF\xF1\xACe`\xE0\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[a\x06.\x82\x82\x81Q\x81\x10a\x06\x11Wa\x06\x11a\n\x81V[` \x02` \x01\x01Qa\x04\xCD`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\x01\x01a\x04\xE7V[a\x06?\x82a\x02\x18V[\x15a\x06_W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x02\xC4\x91\x90a\tKV[`\x01`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R`\x02\x01\x83`@Qa\x06\x81\x91\x90a\t~V[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x06\xB7`\0\x80Q` a\x0B\xCD\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x06\xD4\x90\x82a\x0B\x0CV[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x03t\x91\x90a\tKV[P\x80Ta\x07\x11\x90a\n V[`\0\x82U\x80`\x1F\x10a\x07!WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x02\x15\x91\x90[\x80\x82\x11\x15a\x07OW`\0\x81U`\x01\x01a\x07;V[P\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x07fW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x07\x87W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x07\x9EW`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x07\xE4Wa\x07\xE4a\x07\xA5V[`@R\x91\x90PV[`\0\x82`\x1F\x83\x01\x12a\x07\xFDW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08\x17Wa\x08\x17a\x07\xA5V[a\x08*`\x1F\x82\x01`\x1F\x19\x16` \x01a\x07\xBBV[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x08?W`\0\x80\xFD[\x81` \x85\x01` \x83\x017`\0\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x08nW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08\x85W`\0\x80\xFD[a\x08\x91\x84\x82\x85\x01a\x07\xECV[\x94\x93PPPPV[`\0\x80` \x83\x85\x03\x12\x15a\x08\xACW`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x08\xC4W`\0\x80\xFD[\x81\x85\x01\x91P\x85`\x1F\x83\x01\x12a\x08\xD8W`\0\x80\xFD[\x815\x81\x81\x11\x15a\x08\xE7W`\0\x80\xFD[\x86` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x08\xFCW`\0\x80\xFD[` \x92\x90\x92\x01\x96\x91\x95P\x90\x93PPPPV[`\0` \x82\x84\x03\x12\x15a\t W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a\tBW\x81\x81\x01Q\x83\x82\x01R` \x01a\t*V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Ra\tj\x81`@\x85\x01` \x87\x01a\t'V[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x82Qa\t\x90\x81\x84` \x87\x01a\t'V[\x91\x90\x91\x01\x92\x91PPV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x84\x11\x15a\t\xB5Wa\t\xB5a\x07\xA5V[\x83`\x05\x1B` a\t\xC7` \x83\x01a\x07\xBBV[\x86\x81R\x91\x85\x01\x91` \x81\x01\x906\x84\x11\x15a\t\xE0W`\0\x80\xFD[\x86[\x84\x81\x10\x15a\n\x14W\x805\x86\x81\x11\x15a\t\xFAW`\0\x80\x81\xFD[a\n\x066\x82\x8B\x01a\x07\xECV[\x84RP\x91\x83\x01\x91\x83\x01a\t\xE2V[P\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\n4W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\nTWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0`\x01\x82\x01a\nzWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a\nTW`\0\x19` \x91\x90\x91\x03`\x03\x1B\x1B\x16\x91\x90PV[`\x1F\x82\x11\x15a\x0B\x07W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\n\xE4WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x0B\x03W\x82\x81U`\x01\x01a\n\xF0V[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B&Wa\x0B&a\x07\xA5V[a\x0B:\x81a\x0B4\x84Ta\n V[\x84a\n\xBBV[` \x80`\x1F\x83\x11`\x01\x81\x14a\x0BoW`\0\x84\x15a\x0BWWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x0B\x03V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x0B\x9EW\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x0B\x7FV[P\x85\x82\x10\x15a\x0B\xBCW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV\xFE\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\0\xA2dipfsX\"\x12 \x8E\xA9\x13\xCA\x12^o\xAD\xA8s\xC1\xD3Y\xFF!\xEA\x04\xB3\x89\x18'\xEC\xCF\x1F\xBA\xEC\xFCL\xA7Gl?dsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static MOCKMULTIOWNABLE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct MockMultiOwnable(::ethers::contract::Contract); - impl ::core::clone::Clone for MockMultiOwnable { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockMultiOwnable { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockMultiOwnable { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockMultiOwnable { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockMultiOwnable)) - .field(&self.address()) - .finish() - } - } - impl MockMultiOwnable { - /// 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(), - MOCKMULTIOWNABLE_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( - MOCKMULTIOWNABLE_ABI.clone(), - MOCKMULTIOWNABLE_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `addOwnerAddress` (0x0f0f3f24) function - pub fn add_owner_address( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([15, 15, 63, 36], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `addOwnerPublicKey` (0x29565e3b) function - pub fn add_owner_public_key( - &self, - x: [u8; 32], - y: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([41, 86, 94, 59], (x, y)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `init` (0x459fb2ad) function - pub fn init( - &self, - owners: ::std::vec::Vec<::ethers::core::types::Bytes>, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([69, 159, 178, 173], owners) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerAddress` (0xa2e1a8d8) function - pub fn is_owner_address( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([162, 225, 168, 216], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerBytes` (0x1ca5393f) function - pub fn is_owner_bytes( - &self, - account: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([28, 165, 57, 63], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerPublicKey` (0x066a1eb7) function - pub fn is_owner_public_key( - &self, - x: [u8; 32], - y: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([6, 106, 30, 183], (x, y)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `nextOwnerIndex` (0xd948fd2e) function - pub fn next_owner_index( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([217, 72, 253, 46], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `ownerAtIndex` (0x8ea69029) function - pub fn owner_at_index( - &self, - index: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([142, 166, 144, 41], index) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `removeOwnerAtIndex` (0x72de3b5a) function - pub fn remove_owner_at_index( - &self, - index: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([114, 222, 59, 90], index) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `AddOwner` event - pub fn add_owner_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AddOwnerFilter> { - self.0.event() - } - ///Gets the contract's `RemoveOwner` event - pub fn remove_owner_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, RemoveOwnerFilter> - { - 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, MockMultiOwnableEvents> - { - self.0 - .event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for MockMultiOwnable - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `AlreadyOwner` with signature `AlreadyOwner(bytes)` and selector `0x8d16255a` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "AlreadyOwner", abi = "AlreadyOwner(bytes)")] - pub struct AlreadyOwner { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `InvalidEthereumAddressOwner` with signature `InvalidEthereumAddressOwner(bytes)` and selector `0xbff1ac65` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "InvalidEthereumAddressOwner", - abi = "InvalidEthereumAddressOwner(bytes)" - )] - pub struct InvalidEthereumAddressOwner { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `InvalidOwnerBytesLength` with signature `InvalidOwnerBytesLength(bytes)` and selector `0x4eeab722` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "InvalidOwnerBytesLength", - abi = "InvalidOwnerBytesLength(bytes)" - )] - pub struct InvalidOwnerBytesLength { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `NoOwnerAtIndex` with signature `NoOwnerAtIndex(uint256)` and selector `0x68188e7a` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "NoOwnerAtIndex", abi = "NoOwnerAtIndex(uint256)")] - pub struct NoOwnerAtIndex { - pub index: ::ethers::core::types::U256, - } - ///Custom Error type `Unauthorized` with signature `Unauthorized()` and selector `0x82b42900` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "Unauthorized", abi = "Unauthorized()")] - pub struct Unauthorized; - ///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 MockMultiOwnableErrors { - AlreadyOwner(AlreadyOwner), - InvalidEthereumAddressOwner(InvalidEthereumAddressOwner), - InvalidOwnerBytesLength(InvalidOwnerBytesLength), - NoOwnerAtIndex(NoOwnerAtIndex), - Unauthorized(Unauthorized), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for MockMultiOwnableErrors { - 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::AlreadyOwner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::InvalidEthereumAddressOwner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::InvalidOwnerBytesLength(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::NoOwnerAtIndex(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Unauthorized(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockMultiOwnableErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::AlreadyOwner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::InvalidEthereumAddressOwner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidOwnerBytesLength(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NoOwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Unauthorized(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for MockMultiOwnableErrors { - 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 MockMultiOwnableErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AlreadyOwner(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidEthereumAddressOwner(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidOwnerBytesLength(element) => ::core::fmt::Display::fmt(element, f), - Self::NoOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::Unauthorized(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for MockMultiOwnableErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for MockMultiOwnableErrors { - fn from(value: AlreadyOwner) -> Self { - Self::AlreadyOwner(value) - } - } - impl ::core::convert::From for MockMultiOwnableErrors { - fn from(value: InvalidEthereumAddressOwner) -> Self { - Self::InvalidEthereumAddressOwner(value) - } - } - impl ::core::convert::From for MockMultiOwnableErrors { - fn from(value: InvalidOwnerBytesLength) -> Self { - Self::InvalidOwnerBytesLength(value) - } - } - impl ::core::convert::From for MockMultiOwnableErrors { - fn from(value: NoOwnerAtIndex) -> Self { - Self::NoOwnerAtIndex(value) - } - } - impl ::core::convert::From for MockMultiOwnableErrors { - fn from(value: Unauthorized) -> Self { - Self::Unauthorized(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "AddOwner", abi = "AddOwner(uint256,bytes)")] - pub struct AddOwnerFilter { - #[ethevent(indexed)] - pub index: ::ethers::core::types::U256, - pub owner: ::ethers::core::types::Bytes, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "RemoveOwner", abi = "RemoveOwner(uint256,bytes)")] - pub struct RemoveOwnerFilter { - #[ethevent(indexed)] - pub index: ::ethers::core::types::U256, - pub owner: ::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 MockMultiOwnableEvents { - AddOwnerFilter(AddOwnerFilter), - RemoveOwnerFilter(RemoveOwnerFilter), - } - impl ::ethers::contract::EthLogDecode for MockMultiOwnableEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = AddOwnerFilter::decode_log(log) { - return Ok(MockMultiOwnableEvents::AddOwnerFilter(decoded)); - } - if let Ok(decoded) = RemoveOwnerFilter::decode_log(log) { - return Ok(MockMultiOwnableEvents::RemoveOwnerFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for MockMultiOwnableEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AddOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::RemoveOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockMultiOwnableEvents { - fn from(value: AddOwnerFilter) -> Self { - Self::AddOwnerFilter(value) - } - } - impl ::core::convert::From for MockMultiOwnableEvents { - fn from(value: RemoveOwnerFilter) -> Self { - Self::RemoveOwnerFilter(value) - } - } - ///Container type for all input parameters for the `addOwnerAddress` function with signature `addOwnerAddress(address)` and selector `0x0f0f3f24` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "addOwnerAddress", abi = "addOwnerAddress(address)")] - pub struct AddOwnerAddressCall { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `addOwnerPublicKey` function with signature `addOwnerPublicKey(bytes32,bytes32)` and selector `0x29565e3b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "addOwnerPublicKey", abi = "addOwnerPublicKey(bytes32,bytes32)")] - pub struct AddOwnerPublicKeyCall { - pub x: [u8; 32], - pub y: [u8; 32], - } - ///Container type for all input parameters for the `init` function with signature `init(bytes[])` and selector `0x459fb2ad` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "init", abi = "init(bytes[])")] - pub struct InitCall { - pub owners: ::std::vec::Vec<::ethers::core::types::Bytes>, - } - ///Container type for all input parameters for the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerAddress", abi = "isOwnerAddress(address)")] - pub struct IsOwnerAddressCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerBytes", abi = "isOwnerBytes(bytes)")] - pub struct IsOwnerBytesCall { - pub account: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerPublicKey", abi = "isOwnerPublicKey(bytes32,bytes32)")] - pub struct IsOwnerPublicKeyCall { - pub x: [u8; 32], - pub y: [u8; 32], - } - ///Container type for all input parameters for the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "nextOwnerIndex", abi = "nextOwnerIndex()")] - pub struct NextOwnerIndexCall; - ///Container type for all input parameters for the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "ownerAtIndex", abi = "ownerAtIndex(uint256)")] - pub struct OwnerAtIndexCall { - pub index: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `removeOwnerAtIndex` function with signature `removeOwnerAtIndex(uint256)` and selector `0x72de3b5a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "removeOwnerAtIndex", abi = "removeOwnerAtIndex(uint256)")] - pub struct RemoveOwnerAtIndexCall { - pub index: ::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 MockMultiOwnableCalls { - AddOwnerAddress(AddOwnerAddressCall), - AddOwnerPublicKey(AddOwnerPublicKeyCall), - Init(InitCall), - IsOwnerAddress(IsOwnerAddressCall), - IsOwnerBytes(IsOwnerBytesCall), - IsOwnerPublicKey(IsOwnerPublicKeyCall), - NextOwnerIndex(NextOwnerIndexCall), - OwnerAtIndex(OwnerAtIndexCall), - RemoveOwnerAtIndex(RemoveOwnerAtIndexCall), - } - impl ::ethers::core::abi::AbiDecode for MockMultiOwnableCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::AddOwnerAddress(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::AddOwnerPublicKey(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Init(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsOwnerAddress(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::IsOwnerBytes(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsOwnerPublicKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::NextOwnerIndex(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::OwnerAtIndex(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::RemoveOwnerAtIndex(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockMultiOwnableCalls { - fn encode(self) -> Vec { - match self { - Self::AddOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::AddOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Init(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerBytes(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::NextOwnerIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::OwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RemoveOwnerAtIndex(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MockMultiOwnableCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AddOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), - Self::AddOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), - Self::Init(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerBytes(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), - Self::NextOwnerIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::RemoveOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockMultiOwnableCalls { - fn from(value: AddOwnerAddressCall) -> Self { - Self::AddOwnerAddress(value) - } - } - impl ::core::convert::From for MockMultiOwnableCalls { - fn from(value: AddOwnerPublicKeyCall) -> Self { - Self::AddOwnerPublicKey(value) - } - } - impl ::core::convert::From for MockMultiOwnableCalls { - fn from(value: InitCall) -> Self { - Self::Init(value) - } - } - impl ::core::convert::From for MockMultiOwnableCalls { - fn from(value: IsOwnerAddressCall) -> Self { - Self::IsOwnerAddress(value) - } - } - impl ::core::convert::From for MockMultiOwnableCalls { - fn from(value: IsOwnerBytesCall) -> Self { - Self::IsOwnerBytes(value) - } - } - impl ::core::convert::From for MockMultiOwnableCalls { - fn from(value: IsOwnerPublicKeyCall) -> Self { - Self::IsOwnerPublicKey(value) - } - } - impl ::core::convert::From for MockMultiOwnableCalls { - fn from(value: NextOwnerIndexCall) -> Self { - Self::NextOwnerIndex(value) - } - } - impl ::core::convert::From for MockMultiOwnableCalls { - fn from(value: OwnerAtIndexCall) -> Self { - Self::OwnerAtIndex(value) - } - } - impl ::core::convert::From for MockMultiOwnableCalls { - fn from(value: RemoveOwnerAtIndexCall) -> Self { - Self::RemoveOwnerAtIndex(value) - } - } - ///Container type for all return fields from the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerAddressReturn(pub bool); - ///Container type for all return fields from the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerBytesReturn(pub bool); - ///Container type for all return fields from the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerPublicKeyReturn(pub bool); - ///Container type for all return fields from the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct NextOwnerIndexReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerAtIndexReturn(pub ::ethers::core::types::Bytes); -} diff --git a/xmtp_id/src/bindings/mock_target.rs b/xmtp_id/src/bindings/mock_target.rs deleted file mode 100644 index cc7b07652..000000000 --- a/xmtp_id/src/bindings/mock_target.rs +++ /dev/null @@ -1,495 +0,0 @@ -pub use mock_target::*; -/// 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_target { - #[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("changeOwnerSlotValue"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("changeOwnerSlotValue",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("change"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("data"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("data"), - inputs: ::std::vec![], - 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("datahash"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("datahash"), - 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("revertWithTargetError"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("revertWithTargetError",), - inputs: ::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"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Payable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("setData"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setData"), - inputs: ::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"), - ), - },], - 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::Payable, - },], - ), - ]), - events: ::std::collections::BTreeMap::new(), - errors: ::core::convert::From::from([( - ::std::borrow::ToOwned::to_owned("TargetError"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("TargetError"), - inputs: ::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"), - ), - },], - },], - )]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MOCKTARGET_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\x04y\x80a\0 `\09`\0\xF3\xFE`\x80`@R`\x046\x10a\0JW`\x005`\xE0\x1C\x80c\x0CO`Y\x14a\0OW\x80c'k\x86\xA9\x14a\0dW\x80ca\xA3\x0B.\x14a\0\x8DW\x80cs\xD4\xA1:\x14a\0\xA0W\x80c\xABb\xF0\xE1\x14a\0\xC2W[`\0\x80\xFD[a\0ba\0]6`\x04a\x01\xCFV[a\0\xD5V[\0[4\x80\x15a\0pW`\0\x80\xFD[Pa\0z`\0T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ba\0\x9B6`\x04a\x02\x80V[a\0\xF9V[4\x80\x15a\0\xACW`\0\x80\xFD[Pa\0\xB5a\x01\x0EV[`@Qa\0\x84\x91\x90a\x02\xA9V[a\0\xB5a\0\xD06`\x04a\x01\xCFV[a\x01\x9CV[\x80`@Qc4>\xB9q`\xE1\x1B\x81R`\x04\x01a\0\xF0\x91\x90a\x02\xA9V[`@Q\x80\x91\x03\x90\xFD[\x80\x15a\x01\x0BWb\x11\"3c\x8Bx\xC6\xD8\x19U[PV[`\x01\x80Ta\x01\x1B\x90a\x02\xF8V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01G\x90a\x02\xF8V[\x80\x15a\x01\x94W\x80`\x1F\x10a\x01iWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x01\x94V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01wW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[```\x01a\x01\xAA\x83\x82a\x03\x83V[PP\x80Q` \x82\x01 `\0U\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x01\xE1W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xF9W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x02\rW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\x1FWa\x02\x1Fa\x01\xB9V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02GWa\x02Ga\x01\xB9V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x02`W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x02\x92W`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x02\xA2W`\0\x80\xFD[\x93\x92PPPV[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\x02\xD7W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x02\xBBV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x03\x0CW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x03,WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x03~W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x03[WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x03zW\x82\x81U`\x01\x01a\x03gV[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x9DWa\x03\x9Da\x01\xB9V[a\x03\xB1\x81a\x03\xAB\x84Ta\x02\xF8V[\x84a\x032V[` \x80`\x1F\x83\x11`\x01\x81\x14a\x03\xE6W`\0\x84\x15a\x03\xCEWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x03zV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x04\x15W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x03\xF6V[P\x85\x82\x10\x15a\x043W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV\xFE\xA2dipfsX\"\x12 G\x92L\xC3U\x8F^\xDF\x01\xB8\x0B\x8Ee\x08\xB6\x8B\xBB\xE6\x12p\xFE\x0F6~\x864\xAC\xEB\xF7\"e\xBEdsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static MOCKTARGET_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0JW`\x005`\xE0\x1C\x80c\x0CO`Y\x14a\0OW\x80c'k\x86\xA9\x14a\0dW\x80ca\xA3\x0B.\x14a\0\x8DW\x80cs\xD4\xA1:\x14a\0\xA0W\x80c\xABb\xF0\xE1\x14a\0\xC2W[`\0\x80\xFD[a\0ba\0]6`\x04a\x01\xCFV[a\0\xD5V[\0[4\x80\x15a\0pW`\0\x80\xFD[Pa\0z`\0T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0ba\0\x9B6`\x04a\x02\x80V[a\0\xF9V[4\x80\x15a\0\xACW`\0\x80\xFD[Pa\0\xB5a\x01\x0EV[`@Qa\0\x84\x91\x90a\x02\xA9V[a\0\xB5a\0\xD06`\x04a\x01\xCFV[a\x01\x9CV[\x80`@Qc4>\xB9q`\xE1\x1B\x81R`\x04\x01a\0\xF0\x91\x90a\x02\xA9V[`@Q\x80\x91\x03\x90\xFD[\x80\x15a\x01\x0BWb\x11\"3c\x8Bx\xC6\xD8\x19U[PV[`\x01\x80Ta\x01\x1B\x90a\x02\xF8V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01G\x90a\x02\xF8V[\x80\x15a\x01\x94W\x80`\x1F\x10a\x01iWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x01\x94V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x01wW\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[```\x01a\x01\xAA\x83\x82a\x03\x83V[PP\x80Q` \x82\x01 `\0U\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x01\xE1W`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x01\xF9W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x02\rW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x02\x1FWa\x02\x1Fa\x01\xB9V[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x02GWa\x02Ga\x01\xB9V[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x02`W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x02\x92W`\0\x80\xFD[\x815\x80\x15\x15\x81\x14a\x02\xA2W`\0\x80\xFD[\x93\x92PPPV[`\0` \x80\x83R\x83Q\x80` \x85\x01R`\0[\x81\x81\x10\x15a\x02\xD7W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x02\xBBV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x03\x0CW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x03,WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15a\x03~W`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x03[WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x03zW\x82\x81U`\x01\x01a\x03gV[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\x9DWa\x03\x9Da\x01\xB9V[a\x03\xB1\x81a\x03\xAB\x84Ta\x02\xF8V[\x84a\x032V[` \x80`\x1F\x83\x11`\x01\x81\x14a\x03\xE6W`\0\x84\x15a\x03\xCEWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ua\x03zV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15a\x04\x15W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01a\x03\xF6V[P\x85\x82\x10\x15a\x043W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV\xFE\xA2dipfsX\"\x12 G\x92L\xC3U\x8F^\xDF\x01\xB8\x0B\x8Ee\x08\xB6\x8B\xBB\xE6\x12p\xFE\x0F6~\x864\xAC\xEB\xF7\"e\xBEdsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static MOCKTARGET_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct MockTarget(::ethers::contract::Contract); - impl ::core::clone::Clone for MockTarget { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MockTarget { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MockTarget { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MockTarget { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MockTarget)) - .field(&self.address()) - .finish() - } - } - impl MockTarget { - /// 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(), - MOCKTARGET_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( - MOCKTARGET_ABI.clone(), - MOCKTARGET_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `changeOwnerSlotValue` (0x61a30b2e) function - pub fn change_owner_slot_value( - &self, - change: bool, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([97, 163, 11, 46], change) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `data` (0x73d4a13a) function - pub fn data( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([115, 212, 161, 58], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `datahash` (0x276b86a9) function - pub fn datahash(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([39, 107, 134, 169], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `revertWithTargetError` (0x0c4f6059) function - pub fn revert_with_target_error( - &self, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([12, 79, 96, 89], data) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `setData` (0xab62f0e1) function - pub fn set_data( - &self, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([171, 98, 240, 225], data) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> for MockTarget { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `TargetError` with signature `TargetError(bytes)` and selector `0x687d72e2` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "TargetError", abi = "TargetError(bytes)")] - pub struct TargetError { - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `changeOwnerSlotValue` function with signature `changeOwnerSlotValue(bool)` and selector `0x61a30b2e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "changeOwnerSlotValue", abi = "changeOwnerSlotValue(bool)")] - pub struct ChangeOwnerSlotValueCall { - pub change: bool, - } - ///Container type for all input parameters for the `data` function with signature `data()` and selector `0x73d4a13a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "data", abi = "data()")] - pub struct DataCall; - ///Container type for all input parameters for the `datahash` function with signature `datahash()` and selector `0x276b86a9` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "datahash", abi = "datahash()")] - pub struct DatahashCall; - ///Container type for all input parameters for the `revertWithTargetError` function with signature `revertWithTargetError(bytes)` and selector `0x0c4f6059` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "revertWithTargetError", abi = "revertWithTargetError(bytes)")] - pub struct RevertWithTargetErrorCall { - pub data: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `setData` function with signature `setData(bytes)` and selector `0xab62f0e1` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "setData", abi = "setData(bytes)")] - pub struct SetDataCall { - 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 MockTargetCalls { - ChangeOwnerSlotValue(ChangeOwnerSlotValueCall), - Data(DataCall), - Datahash(DatahashCall), - RevertWithTargetError(RevertWithTargetErrorCall), - SetData(SetDataCall), - } - impl ::ethers::core::abi::AbiDecode for MockTargetCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::ChangeOwnerSlotValue(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Data(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Datahash(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::RevertWithTargetError(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::SetData(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MockTargetCalls { - fn encode(self) -> Vec { - match self { - Self::ChangeOwnerSlotValue(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::Data(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Datahash(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RevertWithTargetError(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::SetData(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for MockTargetCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ChangeOwnerSlotValue(element) => ::core::fmt::Display::fmt(element, f), - Self::Data(element) => ::core::fmt::Display::fmt(element, f), - Self::Datahash(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertWithTargetError(element) => ::core::fmt::Display::fmt(element, f), - Self::SetData(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MockTargetCalls { - fn from(value: ChangeOwnerSlotValueCall) -> Self { - Self::ChangeOwnerSlotValue(value) - } - } - impl ::core::convert::From for MockTargetCalls { - fn from(value: DataCall) -> Self { - Self::Data(value) - } - } - impl ::core::convert::From for MockTargetCalls { - fn from(value: DatahashCall) -> Self { - Self::Datahash(value) - } - } - impl ::core::convert::From for MockTargetCalls { - fn from(value: RevertWithTargetErrorCall) -> Self { - Self::RevertWithTargetError(value) - } - } - impl ::core::convert::From for MockTargetCalls { - fn from(value: SetDataCall) -> Self { - Self::SetData(value) - } - } - ///Container type for all return fields from the `data` function with signature `data()` and selector `0x73d4a13a` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct DataReturn(pub ::ethers::core::types::Bytes); - ///Container type for all return fields from the `datahash` function with signature `datahash()` and selector `0x276b86a9` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct DatahashReturn(pub [u8; 32]); - ///Container type for all return fields from the `setData` function with signature `setData(bytes)` and selector `0xab62f0e1` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct SetDataReturn(pub ::ethers::core::types::Bytes); -} diff --git a/xmtp_id/src/bindings/mod.rs b/xmtp_id/src/bindings/mod.rs deleted file mode 100644 index 6dd640266..000000000 --- a/xmtp_id/src/bindings/mod.rs +++ /dev/null @@ -1,37 +0,0 @@ -#![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 base_64; -pub mod base_64_url; -pub mod coinbase_smart_wallet; -pub mod coinbase_smart_wallet_factory; -pub mod dummy; -pub mod erc1271; -pub mod erc1271_input_generator; -pub mod fcl_ecdsa; -pub mod fcl_elliptic_zz; -pub mod helpers; -pub mod i_aggregator; -pub mod i_entry_point; -pub mod i_nonce_manager; -pub mod i_stake_manager; -pub mod ierc721_token_receiver; -pub mod lib_clone; -pub mod lib_string; -pub mod mock_coinbase_smart_wallet; -pub mod mock_entry_point; -pub mod mock_erc20; -pub mod mock_erc721; -pub mod mock_multi_ownable; -pub mod mock_target; -pub mod multi_ownable; -pub mod receiver; -pub mod shared_types; -pub mod signature_checker_lib; -pub mod static_; -pub mod user_operation_lib; -pub mod utils; -pub mod uups_upgradeable; -pub mod web_authn; diff --git a/xmtp_id/src/bindings/multi_ownable.rs b/xmtp_id/src/bindings/multi_ownable.rs deleted file mode 100644 index a13fb3cf3..000000000 --- a/xmtp_id/src/bindings/multi_ownable.rs +++ /dev/null @@ -1,1132 +0,0 @@ -pub use multi_ownable::*; -/// 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 multi_ownable { - #[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("addOwnerAddress"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("addOwnerAddress"), - 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"), - ), - },], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("addOwnerPublicKey"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("x"), - 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("y"), - 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("isOwnerAddress"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerAddress"), - 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"), - ), - },], - 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("isOwnerBytes"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerBytes"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("account"), - 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::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("isOwnerPublicKey"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("isOwnerPublicKey"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("x"), - 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("y"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - }, - ], - 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("nextOwnerIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("nextOwnerIndex"), - 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("ownerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("ownerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("removeOwnerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("removeOwnerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("AddOwner"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("AddOwner"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - },], - ), - ( - ::std::borrow::ToOwned::to_owned("RemoveOwner"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("RemoveOwner"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize,), - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - indexed: false, - }, - ], - anonymous: false, - },], - ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("AlreadyOwner"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("AlreadyOwner"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidEthereumAddressOwner",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidOwnerBytesLength",), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - },], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NoOwnerAtIndex"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - 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("Unauthorized"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("Unauthorized"), - inputs: ::std::vec![], - },], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static MULTIOWNABLE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[Pa\t8\x80a\0 `\09`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80cr\xDE;Z\x11a\0[W\x80cr\xDE;Z\x14a\0\xF0W\x80c\x8E\xA6\x90)\x14a\x01\x03W\x80c\xA2\xE1\xA8\xD8\x14a\x01#W\x80c\xD9H\xFD.\x14a\x016W`\0\x80\xFD[\x80c\x06j\x1E\xB7\x14a\0\x8DW\x80c\x0F\x0F?$\x14a\0\xB5W\x80c\x1C\xA59?\x14a\0\xCAW\x80c)V^;\x14a\0\xDDW[`\0\x80\xFD[a\0\xA0a\0\x9B6`\x04a\x05\xCBV[a\x01TV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC8a\0\xC36`\x04a\x05\xEDV[a\x01\xC2V[\0[a\0\xA0a\0\xD86`\x04a\x063V[a\x01\xFAV[a\0\xC8a\0\xEB6`\x04a\x05\xCBV[a\x025V[a\0\xC8a\0\xFE6`\x04a\x06\xE4V[a\x02^V[a\x01\x16a\x01\x116`\x04a\x06\xE4V[a\x03PV[`@Qa\0\xAC\x91\x90a\x07!V[a\0\xA0a\x0116`\x04a\x05\xEDV[a\x04\x11V[`\0\x80Q` a\x08\xE3\x839\x81Q\x91RT`@Q\x90\x81R` \x01a\0\xACV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\xA7\x91a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P\x92\x91PPV[a\x01\xCAa\x04WV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x01\xF7\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x04\x89V[PV[`\0`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`\x02\x01\x82`@Qa\x02\x1C\x91\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x02=a\x04WV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x02Z\x90``\x01a\x01\xE3V[PPV[a\x02fa\x04WV[`\0a\x02q\x82a\x03PV[\x90P\x80Q`\0\x03a\x02\x9DW`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\x02\xCD\x90\x83\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\x02\xF9`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x03\x14\x91a\x05}V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x03D\x91\x90a\x07!V[`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x03\x8C\x90a\x07pV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\xB8\x90a\x07pV[\x80\x15a\x04\x05W\x80`\x1F\x10a\x03\xDAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04\x05V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xE8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x02\x1C\x91a\x07TV[a\x04`3a\x04\x11V[\x80a\x04jWP30\x14[\x15a\x04qWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x01\xF7\x81`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x80T\x90`\0a\x04\xAA\x83a\x07\xAAV[\x91\x90PUa\x04\xB7\x82a\x01\xFAV[\x15a\x04\xD7W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x02\x94\x91\x90a\x07!V[`\x01`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`\x02\x01\x83`@Qa\x04\xF9\x91\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x05/`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x05L\x90\x82a\x08\"V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x03D\x91\x90a\x07!V[P\x80Ta\x05\x89\x90a\x07pV[`\0\x82U\x80`\x1F\x10a\x05\x99WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x01\xF7\x91\x90[\x80\x82\x11\x15a\x05\xC7W`\0\x81U`\x01\x01a\x05\xB3V[P\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x05\xDEW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x05\xFFW`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x16W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x06EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06]W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x06qW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x06\x83Wa\x06\x83a\x06\x1DV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x06\xABWa\x06\xABa\x06\x1DV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x06\xC4W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x06\xF6W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a\x07\x18W\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\0V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x07@\x81`@\x85\x01` \x87\x01a\x06\xFDV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x82Qa\x07f\x81\x84` \x87\x01a\x06\xFDV[\x91\x90\x91\x01\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x07\x84W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x07\xA4WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0`\x01\x82\x01a\x07\xCAWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[`\x1F\x82\x11\x15a\x08\x1DW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x07\xFAWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x08\x19W\x82\x81U`\x01\x01a\x08\x06V[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08I[gTmvF\xF0J\xDE\x10\xDD@\x17\xA7*\x8B2\xD7dsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static MULTIOWNABLE_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\x88W`\x005`\xE0\x1C\x80cr\xDE;Z\x11a\0[W\x80cr\xDE;Z\x14a\0\xF0W\x80c\x8E\xA6\x90)\x14a\x01\x03W\x80c\xA2\xE1\xA8\xD8\x14a\x01#W\x80c\xD9H\xFD.\x14a\x016W`\0\x80\xFD[\x80c\x06j\x1E\xB7\x14a\0\x8DW\x80c\x0F\x0F?$\x14a\0\xB5W\x80c\x1C\xA59?\x14a\0\xCAW\x80c)V^;\x14a\0\xDDW[`\0\x80\xFD[a\0\xA0a\0\x9B6`\x04a\x05\xCBV[a\x01TV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xC8a\0\xC36`\x04a\x05\xEDV[a\x01\xC2V[\0[a\0\xA0a\0\xD86`\x04a\x063V[a\x01\xFAV[a\0\xC8a\0\xEB6`\x04a\x05\xCBV[a\x025V[a\0\xC8a\0\xFE6`\x04a\x06\xE4V[a\x02^V[a\x01\x16a\x01\x116`\x04a\x06\xE4V[a\x03PV[`@Qa\0\xAC\x91\x90a\x07!V[a\0\xA0a\x0116`\x04a\x05\xEDV[a\x04\x11V[`\0\x80Q` a\x08\xE3\x839\x81Q\x91RT`@Q\x90\x81R` \x01a\0\xACV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90R`\0\x90\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90``\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01\xA7\x91a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x90P\x92\x91PPV[a\x01\xCAa\x04WV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01Ra\x01\xF7\x91\x01[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x04\x89V[PV[`\0`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`\x02\x01\x82`@Qa\x02\x1C\x91\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 T`\xFF\x16\x92\x91PPV[a\x02=a\x04WV[`@\x80Q` \x81\x01\x84\x90R\x90\x81\x01\x82\x90Ra\x02Z\x90``\x01a\x01\xE3V[PPV[a\x02fa\x04WV[`\0a\x02q\x82a\x03PV[\x90P\x80Q`\0\x03a\x02\x9DW`@Qc4\x0CG=`\xE1\x1B\x81R`\x04\x81\x01\x83\x90R`$\x01[`@Q\x80\x91\x03\x90\xFD[`@Q\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x02\x90a\x02\xCD\x90\x83\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T`\xFF\x19\x16\x90Ua\x02\xF9`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x81 a\x03\x14\x91a\x05}V[\x81\x7F\xCF\x95\xBB\xFEo\x87\x0F\x8C\xC4\x04\x82\xDC=\xCC\xDA\xFD&\x8F\x0E\x9C\xE0\xA4\xF2N\xA1\xBE\xA9\xBEd\xE5\x05\xFF\x82`@Qa\x03D\x91\x90a\x07!V[`@Q\x80\x91\x03\x90\xA2PPV[`\0\x81\x81R\x7F\x97\xE2\xC6\xAA\xD4\xCE]V.\xBF\xAA\0\xDBk\x9E\x0F\xB6n\xA5\xD8\x16.\xD5\xB2C\xF5\x1A.\x03\x08o\x01` R`@\x90 \x80T``\x91\x90a\x03\x8C\x90a\x07pV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x03\xB8\x90a\x07pV[\x80\x15a\x04\x05W\x80`\x1F\x10a\x03\xDAWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x04\x05V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\xE8W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x91\x90PV[`\0`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`@\x80Q`\x01`\x01`\xA0\x1B\x03\x85\x16` \x82\x01R`\x02\x92\x90\x92\x01\x91\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x02\x1C\x91a\x07TV[a\x04`3a\x04\x11V[\x80a\x04jWP30\x14[\x15a\x04qWV[`@Qb\x82\xB4)`\xE8\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x01\xF7\x81`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x80T\x90`\0a\x04\xAA\x83a\x07\xAAV[\x91\x90PUa\x04\xB7\x82a\x01\xFAV[\x15a\x04\xD7W\x81`@QcF\x8B\x12\xAD`\xE1\x1B\x81R`\x04\x01a\x02\x94\x91\x90a\x07!V[`\x01`\0\x80Q` a\x08\xE3\x839\x81Q\x91R`\x02\x01\x83`@Qa\x04\xF9\x91\x90a\x07TV[\x90\x81R`@Q\x90\x81\x90\x03` \x01\x90 \x80T\x91\x15\x15`\xFF\x19\x90\x92\x16\x91\x90\x91\x17\x90U\x81a\x05/`\0\x80Q` a\x08\xE3\x839\x81Q\x91R\x90V[`\0\x83\x81R`\x01\x91\x90\x91\x01` R`@\x90 \x90a\x05L\x90\x82a\x08\"V[P\x80\x7F8\x10\x9E\xDC&\xE1f\xB5W\x93R\xCEV\xA5\x08\x13\x17~\xB2R\x08\xFD\x90\xD6\x1F/7\x83\x86\"\x02 \x83`@Qa\x03D\x91\x90a\x07!V[P\x80Ta\x05\x89\x90a\x07pV[`\0\x82U\x80`\x1F\x10a\x05\x99WPPV[`\x1F\x01` \x90\x04\x90`\0R` `\0 \x90\x81\x01\x90a\x01\xF7\x91\x90[\x80\x82\x11\x15a\x05\xC7W`\0\x81U`\x01\x01a\x05\xB3V[P\x90V[`\0\x80`@\x83\x85\x03\x12\x15a\x05\xDEW`\0\x80\xFD[PP\x805\x92` \x90\x91\x015\x91PV[`\0` \x82\x84\x03\x12\x15a\x05\xFFW`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x06\x16W`\0\x80\xFD[\x93\x92PPPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0` \x82\x84\x03\x12\x15a\x06EW`\0\x80\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x06]W`\0\x80\xFD[\x81\x84\x01\x91P\x84`\x1F\x83\x01\x12a\x06qW`\0\x80\xFD[\x815\x81\x81\x11\x15a\x06\x83Wa\x06\x83a\x06\x1DV[`@Q`\x1F\x82\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x83\x82\x11\x81\x83\x10\x17\x15a\x06\xABWa\x06\xABa\x06\x1DV[\x81`@R\x82\x81R\x87` \x84\x87\x01\x01\x11\x15a\x06\xC4W`\0\x80\xFD[\x82` \x86\x01` \x83\x017`\0\x92\x81\x01` \x01\x92\x90\x92RP\x95\x94PPPPPV[`\0` \x82\x84\x03\x12\x15a\x06\xF6W`\0\x80\xFD[P5\x91\x90PV[`\0[\x83\x81\x10\x15a\x07\x18W\x81\x81\x01Q\x83\x82\x01R` \x01a\x07\0V[PP`\0\x91\x01RV[` \x81R`\0\x82Q\x80` \x84\x01Ra\x07@\x81`@\x85\x01` \x87\x01a\x06\xFDV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV[`\0\x82Qa\x07f\x81\x84` \x87\x01a\x06\xFDV[\x91\x90\x91\x01\x92\x91PPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x07\x84W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x07\xA4WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0`\x01\x82\x01a\x07\xCAWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[P`\x01\x01\x90V[`\x1F\x82\x11\x15a\x08\x1DW`\0\x81`\0R` `\0 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15a\x07\xFAWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15a\x08\x19W\x82\x81U`\x01\x01a\x08\x06V[PPP[PPPV[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x08I[gTmvF\xF0J\xDE\x10\xDD@\x17\xA7*\x8B2\xD7dsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static MULTIOWNABLE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct MultiOwnable(::ethers::contract::Contract); - impl ::core::clone::Clone for MultiOwnable { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for MultiOwnable { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for MultiOwnable { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for MultiOwnable { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(MultiOwnable)) - .field(&self.address()) - .finish() - } - } - impl MultiOwnable { - /// 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(), - MULTIOWNABLE_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( - MULTIOWNABLE_ABI.clone(), - MULTIOWNABLE_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `addOwnerAddress` (0x0f0f3f24) function - pub fn add_owner_address( - &self, - owner: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([15, 15, 63, 36], owner) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `addOwnerPublicKey` (0x29565e3b) function - pub fn add_owner_public_key( - &self, - x: [u8; 32], - y: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([41, 86, 94, 59], (x, y)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerAddress` (0xa2e1a8d8) function - pub fn is_owner_address( - &self, - account: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([162, 225, 168, 216], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerBytes` (0x1ca5393f) function - pub fn is_owner_bytes( - &self, - account: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([28, 165, 57, 63], account) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `isOwnerPublicKey` (0x066a1eb7) function - pub fn is_owner_public_key( - &self, - x: [u8; 32], - y: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([6, 106, 30, 183], (x, y)) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `nextOwnerIndex` (0xd948fd2e) function - pub fn next_owner_index( - &self, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([217, 72, 253, 46], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `ownerAtIndex` (0x8ea69029) function - pub fn owner_at_index( - &self, - index: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([142, 166, 144, 41], index) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `removeOwnerAtIndex` (0x72de3b5a) function - pub fn remove_owner_at_index( - &self, - index: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([114, 222, 59, 90], index) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `AddOwner` event - pub fn add_owner_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, AddOwnerFilter> { - self.0.event() - } - ///Gets the contract's `RemoveOwner` event - pub fn remove_owner_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, RemoveOwnerFilter> - { - 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, MultiOwnableEvents> - { - self.0 - .event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> for MultiOwnable { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `AlreadyOwner` with signature `AlreadyOwner(bytes)` and selector `0x8d16255a` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "AlreadyOwner", abi = "AlreadyOwner(bytes)")] - pub struct AlreadyOwner { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `InvalidEthereumAddressOwner` with signature `InvalidEthereumAddressOwner(bytes)` and selector `0xbff1ac65` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "InvalidEthereumAddressOwner", - abi = "InvalidEthereumAddressOwner(bytes)" - )] - pub struct InvalidEthereumAddressOwner { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `InvalidOwnerBytesLength` with signature `InvalidOwnerBytesLength(bytes)` and selector `0x4eeab722` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror( - name = "InvalidOwnerBytesLength", - abi = "InvalidOwnerBytesLength(bytes)" - )] - pub struct InvalidOwnerBytesLength { - pub owner: ::ethers::core::types::Bytes, - } - ///Custom Error type `NoOwnerAtIndex` with signature `NoOwnerAtIndex(uint256)` and selector `0x68188e7a` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "NoOwnerAtIndex", abi = "NoOwnerAtIndex(uint256)")] - pub struct NoOwnerAtIndex { - pub index: ::ethers::core::types::U256, - } - ///Custom Error type `Unauthorized` with signature `Unauthorized()` and selector `0x82b42900` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "Unauthorized", abi = "Unauthorized()")] - pub struct Unauthorized; - ///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 MultiOwnableErrors { - AlreadyOwner(AlreadyOwner), - InvalidEthereumAddressOwner(InvalidEthereumAddressOwner), - InvalidOwnerBytesLength(InvalidOwnerBytesLength), - NoOwnerAtIndex(NoOwnerAtIndex), - Unauthorized(Unauthorized), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for MultiOwnableErrors { - 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::AlreadyOwner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::InvalidEthereumAddressOwner(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::InvalidOwnerBytesLength(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::NoOwnerAtIndex(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::Unauthorized(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MultiOwnableErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::AlreadyOwner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::InvalidEthereumAddressOwner(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::InvalidOwnerBytesLength(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::NoOwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::Unauthorized(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for MultiOwnableErrors { - 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 MultiOwnableErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AlreadyOwner(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidEthereumAddressOwner(element) => ::core::fmt::Display::fmt(element, f), - Self::InvalidOwnerBytesLength(element) => ::core::fmt::Display::fmt(element, f), - Self::NoOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::Unauthorized(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for MultiOwnableErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for MultiOwnableErrors { - fn from(value: AlreadyOwner) -> Self { - Self::AlreadyOwner(value) - } - } - impl ::core::convert::From for MultiOwnableErrors { - fn from(value: InvalidEthereumAddressOwner) -> Self { - Self::InvalidEthereumAddressOwner(value) - } - } - impl ::core::convert::From for MultiOwnableErrors { - fn from(value: InvalidOwnerBytesLength) -> Self { - Self::InvalidOwnerBytesLength(value) - } - } - impl ::core::convert::From for MultiOwnableErrors { - fn from(value: NoOwnerAtIndex) -> Self { - Self::NoOwnerAtIndex(value) - } - } - impl ::core::convert::From for MultiOwnableErrors { - fn from(value: Unauthorized) -> Self { - Self::Unauthorized(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "AddOwner", abi = "AddOwner(uint256,bytes)")] - pub struct AddOwnerFilter { - #[ethevent(indexed)] - pub index: ::ethers::core::types::U256, - pub owner: ::ethers::core::types::Bytes, - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "RemoveOwner", abi = "RemoveOwner(uint256,bytes)")] - pub struct RemoveOwnerFilter { - #[ethevent(indexed)] - pub index: ::ethers::core::types::U256, - pub owner: ::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 MultiOwnableEvents { - AddOwnerFilter(AddOwnerFilter), - RemoveOwnerFilter(RemoveOwnerFilter), - } - impl ::ethers::contract::EthLogDecode for MultiOwnableEvents { - fn decode_log( - log: &::ethers::core::abi::RawLog, - ) -> ::core::result::Result { - if let Ok(decoded) = AddOwnerFilter::decode_log(log) { - return Ok(MultiOwnableEvents::AddOwnerFilter(decoded)); - } - if let Ok(decoded) = RemoveOwnerFilter::decode_log(log) { - return Ok(MultiOwnableEvents::RemoveOwnerFilter(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData) - } - } - impl ::core::fmt::Display for MultiOwnableEvents { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AddOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::RemoveOwnerFilter(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MultiOwnableEvents { - fn from(value: AddOwnerFilter) -> Self { - Self::AddOwnerFilter(value) - } - } - impl ::core::convert::From for MultiOwnableEvents { - fn from(value: RemoveOwnerFilter) -> Self { - Self::RemoveOwnerFilter(value) - } - } - ///Container type for all input parameters for the `addOwnerAddress` function with signature `addOwnerAddress(address)` and selector `0x0f0f3f24` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "addOwnerAddress", abi = "addOwnerAddress(address)")] - pub struct AddOwnerAddressCall { - pub owner: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `addOwnerPublicKey` function with signature `addOwnerPublicKey(bytes32,bytes32)` and selector `0x29565e3b` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "addOwnerPublicKey", abi = "addOwnerPublicKey(bytes32,bytes32)")] - pub struct AddOwnerPublicKeyCall { - pub x: [u8; 32], - pub y: [u8; 32], - } - ///Container type for all input parameters for the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerAddress", abi = "isOwnerAddress(address)")] - pub struct IsOwnerAddressCall { - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerBytes", abi = "isOwnerBytes(bytes)")] - pub struct IsOwnerBytesCall { - pub account: ::ethers::core::types::Bytes, - } - ///Container type for all input parameters for the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "isOwnerPublicKey", abi = "isOwnerPublicKey(bytes32,bytes32)")] - pub struct IsOwnerPublicKeyCall { - pub x: [u8; 32], - pub y: [u8; 32], - } - ///Container type for all input parameters for the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "nextOwnerIndex", abi = "nextOwnerIndex()")] - pub struct NextOwnerIndexCall; - ///Container type for all input parameters for the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "ownerAtIndex", abi = "ownerAtIndex(uint256)")] - pub struct OwnerAtIndexCall { - pub index: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `removeOwnerAtIndex` function with signature `removeOwnerAtIndex(uint256)` and selector `0x72de3b5a` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "removeOwnerAtIndex", abi = "removeOwnerAtIndex(uint256)")] - pub struct RemoveOwnerAtIndexCall { - pub index: ::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 MultiOwnableCalls { - AddOwnerAddress(AddOwnerAddressCall), - AddOwnerPublicKey(AddOwnerPublicKeyCall), - IsOwnerAddress(IsOwnerAddressCall), - IsOwnerBytes(IsOwnerBytesCall), - IsOwnerPublicKey(IsOwnerPublicKeyCall), - NextOwnerIndex(NextOwnerIndexCall), - OwnerAtIndex(OwnerAtIndexCall), - RemoveOwnerAtIndex(RemoveOwnerAtIndexCall), - } - impl ::ethers::core::abi::AbiDecode for MultiOwnableCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::AddOwnerAddress(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::AddOwnerPublicKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsOwnerAddress(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::IsOwnerBytes(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::IsOwnerPublicKey(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::NextOwnerIndex(decoded)); - } - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::OwnerAtIndex(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::RemoveOwnerAtIndex(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for MultiOwnableCalls { - fn encode(self) -> Vec { - match self { - Self::AddOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::AddOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerAddress(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerBytes(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::IsOwnerPublicKey(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::NextOwnerIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::OwnerAtIndex(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RemoveOwnerAtIndex(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - } - } - } - impl ::core::fmt::Display for MultiOwnableCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::AddOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), - Self::AddOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerAddress(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerBytes(element) => ::core::fmt::Display::fmt(element, f), - Self::IsOwnerPublicKey(element) => ::core::fmt::Display::fmt(element, f), - Self::NextOwnerIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - Self::RemoveOwnerAtIndex(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for MultiOwnableCalls { - fn from(value: AddOwnerAddressCall) -> Self { - Self::AddOwnerAddress(value) - } - } - impl ::core::convert::From for MultiOwnableCalls { - fn from(value: AddOwnerPublicKeyCall) -> Self { - Self::AddOwnerPublicKey(value) - } - } - impl ::core::convert::From for MultiOwnableCalls { - fn from(value: IsOwnerAddressCall) -> Self { - Self::IsOwnerAddress(value) - } - } - impl ::core::convert::From for MultiOwnableCalls { - fn from(value: IsOwnerBytesCall) -> Self { - Self::IsOwnerBytes(value) - } - } - impl ::core::convert::From for MultiOwnableCalls { - fn from(value: IsOwnerPublicKeyCall) -> Self { - Self::IsOwnerPublicKey(value) - } - } - impl ::core::convert::From for MultiOwnableCalls { - fn from(value: NextOwnerIndexCall) -> Self { - Self::NextOwnerIndex(value) - } - } - impl ::core::convert::From for MultiOwnableCalls { - fn from(value: OwnerAtIndexCall) -> Self { - Self::OwnerAtIndex(value) - } - } - impl ::core::convert::From for MultiOwnableCalls { - fn from(value: RemoveOwnerAtIndexCall) -> Self { - Self::RemoveOwnerAtIndex(value) - } - } - ///Container type for all return fields from the `isOwnerAddress` function with signature `isOwnerAddress(address)` and selector `0xa2e1a8d8` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerAddressReturn(pub bool); - ///Container type for all return fields from the `isOwnerBytes` function with signature `isOwnerBytes(bytes)` and selector `0x1ca5393f` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerBytesReturn(pub bool); - ///Container type for all return fields from the `isOwnerPublicKey` function with signature `isOwnerPublicKey(bytes32,bytes32)` and selector `0x066a1eb7` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct IsOwnerPublicKeyReturn(pub bool); - ///Container type for all return fields from the `nextOwnerIndex` function with signature `nextOwnerIndex()` and selector `0xd948fd2e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct NextOwnerIndexReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `ownerAtIndex` function with signature `ownerAtIndex(uint256)` and selector `0x8ea69029` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct OwnerAtIndexReturn(pub ::ethers::core::types::Bytes); -} diff --git a/xmtp_id/src/bindings/receiver.rs b/xmtp_id/src/bindings/receiver.rs deleted file mode 100644 index 965439608..000000000 --- a/xmtp_id/src/bindings/receiver.rs +++ /dev/null @@ -1,70 +0,0 @@ -pub use receiver::*; -/// 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 receiver { - #[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: true, - fallback: true, - } - } - ///The parsed JSON ABI of the contract. - pub static RECEIVER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct Receiver(::ethers::contract::Contract); - impl ::core::clone::Clone for Receiver { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for Receiver { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for Receiver { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for Receiver { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Receiver)) - .field(&self.address()) - .finish() - } - } - impl Receiver { - /// 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(), - RECEIVER_ABI.clone(), - client, - )) - } - } - impl From<::ethers::contract::Contract> for Receiver { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/xmtp_id/src/bindings/shared_types.rs b/xmtp_id/src/bindings/shared_types.rs deleted file mode 100644 index 82d3f4866..000000000 --- a/xmtp_id/src/bindings/shared_types.rs +++ /dev/null @@ -1,64 +0,0 @@ -///`Call(address,uint256,bytes)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, -)] -pub struct Call { - pub target: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, -} -///`DepositInfo(uint112,bool,uint112,uint32,uint48)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, -)] -pub struct DepositInfo { - pub deposit: u128, - pub staked: bool, - pub stake: u128, - pub unstake_delay_sec: u32, - pub withdraw_time: u64, -} -///`UserOperation(address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)` -#[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, -)] -pub struct UserOperation { - pub sender: ::ethers::core::types::Address, - pub nonce: ::ethers::core::types::U256, - pub init_code: ::ethers::core::types::Bytes, - pub call_data: ::ethers::core::types::Bytes, - pub call_gas_limit: ::ethers::core::types::U256, - pub verification_gas_limit: ::ethers::core::types::U256, - pub pre_verification_gas: ::ethers::core::types::U256, - pub max_fee_per_gas: ::ethers::core::types::U256, - pub max_priority_fee_per_gas: ::ethers::core::types::U256, - pub paymaster_and_data: ::ethers::core::types::Bytes, - pub signature: ::ethers::core::types::Bytes, -} diff --git a/xmtp_id/src/bindings/signature_checker_lib.rs b/xmtp_id/src/bindings/signature_checker_lib.rs deleted file mode 100644 index a99f842df..000000000 --- a/xmtp_id/src/bindings/signature_checker_lib.rs +++ /dev/null @@ -1,121 +0,0 @@ -pub use signature_checker_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 signature_checker_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 SIGNATURECHECKERLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9C\xB1\x93U\x9D\x86\x0CS\xAA\xE6_\xDFzh$\xF7\xE5\xCE\x03\x08\x1D-\xD6\x1Cg%\x1A\x87i\x12\x88\xE4dsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static SIGNATURECHECKERLIB_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \x9C\xB1\x93U\x9D\x86\x0CS\xAA\xE6_\xDFzh$\xF7\xE5\xCE\x03\x08\x1D-\xD6\x1Cg%\x1A\x87i\x12\x88\xE4dsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static SIGNATURECHECKERLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct SignatureCheckerLib(::ethers::contract::Contract); - impl ::core::clone::Clone for SignatureCheckerLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for SignatureCheckerLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for SignatureCheckerLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for SignatureCheckerLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(SignatureCheckerLib)) - .field(&self.address()) - .finish() - } - } - impl SignatureCheckerLib { - /// 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(), - SIGNATURECHECKERLIB_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( - SIGNATURECHECKERLIB_ABI.clone(), - SIGNATURECHECKERLIB_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 SignatureCheckerLib - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/xmtp_id/src/bindings/static_.rs b/xmtp_id/src/bindings/static_.rs deleted file mode 100644 index a8fa29ede..000000000 --- a/xmtp_id/src/bindings/static_.rs +++ /dev/null @@ -1,119 +0,0 @@ -pub use static_::*; -/// 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 static_ { - #[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 STATIC_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xCA\xE6\xF2\xC3w\xFD\xE2Am\xB9\x15\xF8\x19M\xF1\x1AK |\xD1n\xCE\x1ET\ryU(+\x8D\xFF\x8FdsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static STATIC_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xCA\xE6\xF2\xC3w\xFD\xE2Am\xB9\x15\xF8\x19M\xF1\x1AK |\xD1n\xCE\x1ET\ryU(+\x8D\xFF\x8FdsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static STATIC_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Static(::ethers::contract::Contract); - impl ::core::clone::Clone for Static { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for Static { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for Static { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for Static { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Static)) - .field(&self.address()) - .finish() - } - } - impl Static { - /// 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(), - STATIC_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( - STATIC_ABI.clone(), - STATIC_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 Static { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/xmtp_id/src/bindings/user_operation_lib.rs b/xmtp_id/src/bindings/user_operation_lib.rs deleted file mode 100644 index e73e4dbf3..000000000 --- a/xmtp_id/src/bindings/user_operation_lib.rs +++ /dev/null @@ -1,121 +0,0 @@ -pub use user_operation_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 user_operation_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 USEROPERATIONLIB_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xDB\xA9\xE6\xF7\x03\xF2\xD6\xEE\xB19\xF4p\x88\xA6\xA1RLBP\xA7\x18\xDE'\xAE\xD3'Digzb\x8EdsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static USEROPERATIONLIB_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xDB\xA9\xE6\xF7\x03\xF2\xD6\xEE\xB19\xF4p\x88\xA6\xA1RLBP\xA7\x18\xDE'\xAE\xD3'Digzb\x8EdsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static USEROPERATIONLIB_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct UserOperationLib(::ethers::contract::Contract); - impl ::core::clone::Clone for UserOperationLib { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for UserOperationLib { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for UserOperationLib { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for UserOperationLib { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(UserOperationLib)) - .field(&self.address()) - .finish() - } - } - impl UserOperationLib { - /// 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(), - USEROPERATIONLIB_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( - USEROPERATIONLIB_ABI.clone(), - USEROPERATIONLIB_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 UserOperationLib - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/xmtp_id/src/bindings/utils.rs b/xmtp_id/src/bindings/utils.rs deleted file mode 100644 index aee39dba1..000000000 --- a/xmtp_id/src/bindings/utils.rs +++ /dev/null @@ -1,202 +0,0 @@ -pub use utils::*; -/// 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 utils { - #[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("getWebAuthnStruct"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("getWebAuthnStruct"), - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("challenge"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize,), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes32"), - ), - },], - 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::Bytes, - ::ethers::core::abi::ethabi::ParamType::String, - ::ethers::core::abi::ethabi::ParamType::FixedBytes(32usize), - ],), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("struct WebAuthnInfo"), - ), - },], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, - },], - )]), - events: ::std::collections::BTreeMap::new(), - errors: ::std::collections::BTreeMap::new(), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static UTILS_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"a\x05\xEDa\0:`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14a\0-WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\x046\x10a\x005W`\x005`\xE0\x1C\x80c\x8F\x7FYn\x14a\0:W[`\0\x80\xFD[a\0Ma\0H6`\x04a\x03%V[a\0cV[`@Qa\0Z\x91\x90a\x03\x8EV[`@Q\x80\x91\x03\x90\xF3[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R`\0a\0\xAB\x83`@Q` \x01a\0\x97\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x01\xD4V[\x90P`\0\x81`@Q` \x01a\0\xC0\x91\x90a\x03\xDEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`%\x80\x83R\x90\x92P`\0\x91\x90a\x05S` \x83\x019\x90P`\0`\x02\x83`@Qa\0\xFC\x91\x90a\x04}V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x01\x19W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01<\x91\x90a\x04\x99V[\x90P`\0`\x02\x83\x83`@Q` \x01a\x01U\x92\x91\x90a\x04\xB2V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01o\x91a\x04}V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x01\x8CW=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xAF\x91\x90a\x04\x99V[`@\x80Q``\x81\x01\x82R\x94\x85R` \x85\x01\x95\x90\x95R\x93\x83\x01\x93\x90\x93RP\x94\x93PPPPV[``\x81Q`\0\x03a\x01\xF3WPP`@\x80Q` \x81\x01\x90\x91R`\0\x81R\x90V[`\0`@Q\x80``\x01`@R\x80`@\x81R` \x01a\x05x`@\x919\x90P`\0`\x03\x84Q`\x02a\x02\"\x91\x90a\x04\xEAV[a\x02,\x91\x90a\x05\x03V[a\x027\x90`\x04a\x05%V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02OWa\x02Oa\x05V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0\x82Q``` \x84\x01Ra\x03\xAA`\x80\x84\x01\x82a\x03bV[\x90P` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x03\xC7\x82\x82a\x03bV[\x91PP`@\x84\x01Q``\x84\x01R\x80\x91PP\x92\x91PPV[\x7F{\"type\":\"webauthn.get\",\"challeng\x81Rc2\x91\x1D\x11`\xE1\x1B` \x82\x01R`\0\x82Qa\x04#\x81`$\x85\x01` \x87\x01a\x03>V[\x7F\",\"origin\":\"https://sign.coinbas`$\x93\x90\x91\x01\x92\x83\x01RP\x7Fe.com\",\"crossOrigin\":false}\0\0\0\0\0`D\x82\x01R`_\x01\x91\x90PV[`\0\x82Qa\x04\x8F\x81\x84` \x87\x01a\x03>V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x04\xABW`\0\x80\xFD[PQ\x91\x90PV[`\0\x83Qa\x04\xC4\x81\x84` \x88\x01a\x03>V[\x91\x90\x91\x01\x91\x82RP` \x01\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xFDWa\x04\xFDa\x04\xD4V[\x92\x91PPV[`\0\x82a\x05 WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\xFDWa\x04\xFDa\x04\xD4V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFEI\x96\r\xE5\x88\x0E\x8Cht4\x17\x0Fdv`[\x8F\xE4\xAE\xB9\xA2\x862\xC7\x99\\\xF3\xBA\x83\x1D\x97c\x05\0\0\0\0ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\xA2dipfsX\"\x12 \xD2\xAD\xD6\x1E\x12\xD8p\"ML\x0E\xE2\xB8-\xCCP\xFD\xCA\x0E\xC1\x13\xCCL\xF22 L\xC0\x92\x91\xB4\x10dsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static UTILS_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\x046\x10a\x005W`\x005`\xE0\x1C\x80c\x8F\x7FYn\x14a\0:W[`\0\x80\xFD[a\0Ma\0H6`\x04a\x03%V[a\0cV[`@Qa\0Z\x91\x90a\x03\x8EV[`@Q\x80\x91\x03\x90\xF3[`@\x80Q``\x80\x82\x01\x83R\x80\x82R` \x82\x01R`\0\x91\x81\x01\x91\x90\x91R`\0a\0\xAB\x83`@Q` \x01a\0\x97\x91\x81R` \x01\x90V[`@Q` \x81\x83\x03\x03\x81R\x90`@Ra\x01\xD4V[\x90P`\0\x81`@Q` \x01a\0\xC0\x91\x90a\x03\xDEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R``\x83\x01\x90\x91R`%\x80\x83R\x90\x92P`\0\x91\x90a\x05S` \x83\x019\x90P`\0`\x02\x83`@Qa\0\xFC\x91\x90a\x04}V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x01\x19W=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01<\x91\x90a\x04\x99V[\x90P`\0`\x02\x83\x83`@Q` \x01a\x01U\x92\x91\x90a\x04\xB2V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\x01o\x91a\x04}V[` `@Q\x80\x83\x03\x81\x85Z\xFA\x15\x80\x15a\x01\x8CW=`\0\x80>=`\0\xFD[PPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x01\xAF\x91\x90a\x04\x99V[`@\x80Q``\x81\x01\x82R\x94\x85R` \x85\x01\x95\x90\x95R\x93\x83\x01\x93\x90\x93RP\x94\x93PPPPV[``\x81Q`\0\x03a\x01\xF3WPP`@\x80Q` \x81\x01\x90\x91R`\0\x81R\x90V[`\0`@Q\x80``\x01`@R\x80`@\x81R` \x01a\x05x`@\x919\x90P`\0`\x03\x84Q`\x02a\x02\"\x91\x90a\x04\xEAV[a\x02,\x91\x90a\x05\x03V[a\x027\x90`\x04a\x05%V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02OWa\x02Oa\x05V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[` \x81R`\0\x82Q``` \x84\x01Ra\x03\xAA`\x80\x84\x01\x82a\x03bV[\x90P` \x84\x01Q`\x1F\x19\x84\x83\x03\x01`@\x85\x01Ra\x03\xC7\x82\x82a\x03bV[\x91PP`@\x84\x01Q``\x84\x01R\x80\x91PP\x92\x91PPV[\x7F{\"type\":\"webauthn.get\",\"challeng\x81Rc2\x91\x1D\x11`\xE1\x1B` \x82\x01R`\0\x82Qa\x04#\x81`$\x85\x01` \x87\x01a\x03>V[\x7F\",\"origin\":\"https://sign.coinbas`$\x93\x90\x91\x01\x92\x83\x01RP\x7Fe.com\",\"crossOrigin\":false}\0\0\0\0\0`D\x82\x01R`_\x01\x91\x90PV[`\0\x82Qa\x04\x8F\x81\x84` \x87\x01a\x03>V[\x91\x90\x91\x01\x92\x91PPV[`\0` \x82\x84\x03\x12\x15a\x04\xABW`\0\x80\xFD[PQ\x91\x90PV[`\0\x83Qa\x04\xC4\x81\x84` \x88\x01a\x03>V[\x91\x90\x91\x01\x91\x82RP` \x01\x91\x90PV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x04\xFDWa\x04\xFDa\x04\xD4V[\x92\x91PPV[`\0\x82a\x05 WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\xFDWa\x04\xFDa\x04\xD4V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD\xFEI\x96\r\xE5\x88\x0E\x8Cht4\x17\x0Fdv`[\x8F\xE4\xAE\xB9\xA2\x862\xC7\x99\\\xF3\xBA\x83\x1D\x97c\x05\0\0\0\0ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\xA2dipfsX\"\x12 \xD2\xAD\xD6\x1E\x12\xD8p\"ML\x0E\xE2\xB8-\xCCP\xFD\xCA\x0E\xC1\x13\xCCL\xF22 L\xC0\x92\x91\xB4\x10dsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static UTILS_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct Utils(::ethers::contract::Contract); - impl ::core::clone::Clone for Utils { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for Utils { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for Utils { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for Utils { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Utils)) - .field(&self.address()) - .finish() - } - } - impl Utils { - /// 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(), - UTILS_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( - UTILS_ABI.clone(), - UTILS_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `getWebAuthnStruct` (0x8f7f596e) function - pub fn get_web_authn_struct( - &self, - challenge: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([143, 127, 89, 110], challenge) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> for Utils { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `getWebAuthnStruct` function with signature `getWebAuthnStruct(bytes32)` and selector `0x8f7f596e` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "getWebAuthnStruct", abi = "getWebAuthnStruct(bytes32)")] - pub struct GetWebAuthnStructCall { - pub challenge: [u8; 32], - } - ///Container type for all return fields from the `getWebAuthnStruct` function with signature `getWebAuthnStruct(bytes32)` and selector `0x8f7f596e` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct GetWebAuthnStructReturn(pub WebAuthnInfo); - ///`WebAuthnInfo(bytes,string,bytes32)` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct WebAuthnInfo { - pub authenticator_data: ::ethers::core::types::Bytes, - pub client_data_json: ::std::string::String, - pub message_hash: [u8; 32], - } -} diff --git a/xmtp_id/src/bindings/uups_upgradeable.rs b/xmtp_id/src/bindings/uups_upgradeable.rs deleted file mode 100644 index 13d6fa87f..000000000 --- a/xmtp_id/src/bindings/uups_upgradeable.rs +++ /dev/null @@ -1,411 +0,0 @@ -pub use uups_upgradeable::*; -/// 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 uups_upgradeable { - #[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("proxiableUUID"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("proxiableUUID"), - 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("upgradeToAndCall"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("upgradeToAndCall"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newImplementation"), - 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("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::Payable, - },], - ), - ]), - events: ::core::convert::From::from([( - ::std::borrow::ToOwned::to_owned("Upgraded"), - ::std::vec![::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Upgraded"), - inputs: ::std::vec![::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("implementation"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - },], - anonymous: false, - },], - )]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("UnauthorizedCallContext",), - inputs: ::std::vec![], - },], - ), - ( - ::std::borrow::ToOwned::to_owned("UpgradeFailed"), - ::std::vec![::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("UpgradeFailed"), - inputs: ::std::vec![], - },], - ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static UUPSUPGRADEABLE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - pub struct UUPSUpgradeable(::ethers::contract::Contract); - impl ::core::clone::Clone for UUPSUpgradeable { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for UUPSUpgradeable { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for UUPSUpgradeable { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for UUPSUpgradeable { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(UUPSUpgradeable)) - .field(&self.address()) - .finish() - } - } - impl UUPSUpgradeable { - /// 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(), - UUPSUPGRADEABLE_ABI.clone(), - client, - )) - } - ///Calls the contract's `proxiableUUID` (0x52d1902d) function - pub fn proxiable_uuid(&self) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([82, 209, 144, 45], ()) - .expect("method not found (this should never happen)") - } - ///Calls the contract's `upgradeToAndCall` (0x4f1ef286) function - pub fn upgrade_to_and_call( - &self, - new_implementation: ::ethers::core::types::Address, - data: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([79, 30, 242, 134], (new_implementation, data)) - .expect("method not found (this should never happen)") - } - ///Gets the contract's `Upgraded` event - pub fn upgraded_filter( - &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, UpgradedFilter> { - 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, UpgradedFilter> { - self.0 - .event_with_filter(::core::default::Default::default()) - } - } - impl From<::ethers::contract::Contract> - for UUPSUpgradeable - { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Custom Error type `UnauthorizedCallContext` with signature `UnauthorizedCallContext()` and selector `0x9f03a026` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "UnauthorizedCallContext", abi = "UnauthorizedCallContext()")] - pub struct UnauthorizedCallContext; - ///Custom Error type `UpgradeFailed` with signature `UpgradeFailed()` and selector `0x55299b49` - #[derive( - Clone, - ::ethers::contract::EthError, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[etherror(name = "UpgradeFailed", abi = "UpgradeFailed()")] - pub struct UpgradeFailed; - ///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 UUPSUpgradeableErrors { - UnauthorizedCallContext(UnauthorizedCallContext), - UpgradeFailed(UpgradeFailed), - /// The standard solidity revert string, with selector - /// Error(string) -- 0x08c379a0 - RevertString(::std::string::String), - } - impl ::ethers::core::abi::AbiDecode for UUPSUpgradeableErrors { - 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::UnauthorizedCallContext(decoded)); - } - if let Ok(decoded) = ::decode(data) { - return Ok(Self::UpgradeFailed(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for UUPSUpgradeableErrors { - fn encode(self) -> ::std::vec::Vec { - match self { - Self::UnauthorizedCallContext(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } - Self::UpgradeFailed(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), - } - } - } - impl ::ethers::contract::ContractRevert for UUPSUpgradeableErrors { - 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 UUPSUpgradeableErrors { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::UnauthorizedCallContext(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradeFailed(element) => ::core::fmt::Display::fmt(element, f), - Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), - } - } - } - impl ::core::convert::From<::std::string::String> for UUPSUpgradeableErrors { - fn from(value: String) -> Self { - Self::RevertString(value) - } - } - impl ::core::convert::From for UUPSUpgradeableErrors { - fn from(value: UnauthorizedCallContext) -> Self { - Self::UnauthorizedCallContext(value) - } - } - impl ::core::convert::From for UUPSUpgradeableErrors { - fn from(value: UpgradeFailed) -> Self { - Self::UpgradeFailed(value) - } - } - #[derive( - Clone, - ::ethers::contract::EthEvent, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethevent(name = "Upgraded", abi = "Upgraded(address)")] - pub struct UpgradedFilter { - #[ethevent(indexed)] - pub implementation: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "proxiableUUID", abi = "proxiableUUID()")] - pub struct ProxiableUUIDCall; - ///Container type for all input parameters for the `upgradeToAndCall` function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - #[ethcall(name = "upgradeToAndCall", abi = "upgradeToAndCall(address,bytes)")] - pub struct UpgradeToAndCallCall { - pub new_implementation: ::ethers::core::types::Address, - 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 UUPSUpgradeableCalls { - ProxiableUUID(ProxiableUUIDCall), - UpgradeToAndCall(UpgradeToAndCallCall), - } - impl ::ethers::core::abi::AbiDecode for UUPSUpgradeableCalls { - fn decode( - data: impl AsRef<[u8]>, - ) -> ::core::result::Result { - let data = data.as_ref(); - if let Ok(decoded) = ::decode(data) - { - return Ok(Self::ProxiableUUID(decoded)); - } - if let Ok(decoded) = - ::decode(data) - { - return Ok(Self::UpgradeToAndCall(decoded)); - } - Err(::ethers::core::abi::Error::InvalidData.into()) - } - } - impl ::ethers::core::abi::AbiEncode for UUPSUpgradeableCalls { - fn encode(self) -> Vec { - match self { - Self::ProxiableUUID(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::UpgradeToAndCall(element) => ::ethers::core::abi::AbiEncode::encode(element), - } - } - } - impl ::core::fmt::Display for UUPSUpgradeableCalls { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - match self { - Self::ProxiableUUID(element) => ::core::fmt::Display::fmt(element, f), - Self::UpgradeToAndCall(element) => ::core::fmt::Display::fmt(element, f), - } - } - } - impl ::core::convert::From for UUPSUpgradeableCalls { - fn from(value: ProxiableUUIDCall) -> Self { - Self::ProxiableUUID(value) - } - } - impl ::core::convert::From for UUPSUpgradeableCalls { - fn from(value: UpgradeToAndCallCall) -> Self { - Self::UpgradeToAndCall(value) - } - } - ///Container type for all return fields from the `proxiableUUID` function with signature `proxiableUUID()` and selector `0x52d1902d` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - serde::Serialize, - serde::Deserialize, - Default, - Debug, - PartialEq, - Eq, - Hash, - )] - pub struct ProxiableUUIDReturn(pub [u8; 32]); -} diff --git a/xmtp_id/src/bindings/web_authn.rs b/xmtp_id/src/bindings/web_authn.rs deleted file mode 100644 index ce6082ec7..000000000 --- a/xmtp_id/src/bindings/web_authn.rs +++ /dev/null @@ -1,119 +0,0 @@ -pub use web_authn::*; -/// 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 web_authn { - #[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 WEBAUTHN_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = - ::ethers::contract::Lazy::new(__abi); - #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`V`7`\x0B\x82\x82\x829\x80Q`\0\x1A`s\x14`*WcNH{q`\xE0\x1B`\0R`\0`\x04R`$`\0\xFD[0`\0R`s\x81S\x82\x81\xF3\xFEs\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xC8\x13\xB5\t\xB9\xBAVn \x03\xA7e\x86\xD4\xE4\xC2\xB2/\xD5\xE4=%yV\x01\xC1\xF3\xBE\x94\xDB\x08\xA8dsolcC\0\x08\x17\x003"; - /// The bytecode of the contract. - pub static WEBAUTHN_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__BYTECODE); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x000\x14`\x80`@R`\0\x80\xFD\xFE\xA2dipfsX\"\x12 \xC8\x13\xB5\t\xB9\xBAVn \x03\xA7e\x86\xD4\xE4\xC2\xB2/\xD5\xE4=%yV\x01\xC1\xF3\xBE\x94\xDB\x08\xA8dsolcC\0\x08\x17\x003"; - /// The deployed bytecode of the contract. - pub static WEBAUTHN_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = - ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); - pub struct WebAuthn(::ethers::contract::Contract); - impl ::core::clone::Clone for WebAuthn { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for WebAuthn { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for WebAuthn { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for WebAuthn { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(WebAuthn)) - .field(&self.address()) - .finish() - } - } - impl WebAuthn { - /// 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(), - WEBAUTHN_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( - WEBAUTHN_ABI.clone(), - WEBAUTHN_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 WebAuthn { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } -} diff --git a/xmtp_id/src/erc1271_verifier.rs b/xmtp_id/src/erc1271_verifier.rs new file mode 100644 index 000000000..b7c950f75 --- /dev/null +++ b/xmtp_id/src/erc1271_verifier.rs @@ -0,0 +1,45 @@ +use ethers::types::{Address, BlockNumber, Bytes}; +use ethers::providers::{Http, Middleware, Provider}; +use std::convert::TryFrom; +use std::sync::Arc; +use anyhow::Error; +use ethers::contract::abigen; + +const EIP1271_MAGIC_VALUE: [u8; 4] = [0x16, 0x26, 0xba, 0x7e]; + +abigen!( + ERC1271, + "./abi/ERC1271.json", + derives(serde::Serialize, serde::Deserialize) +); + +pub struct ERC1271Verifier { + pub provider: Arc>, +} + +impl ERC1271Verifier { + pub fn new(url: &str) -> Self { + let provider = Arc::new(Provider::::try_from(url).unwrap()); + Self { provider } + } + + /// Verifies an ERC-1271(https://eips.ethereum.org/EIPS/eip-1271) signature. + /// + /// # Arguments + /// + /// * `wallet_address` - Address of the ERC1271 wallet. + /// * `block_number` - Block number to verify the signature at. + /// * `hash`, `signature` - Inputs to ERC-1271, used for signer verification. + pub async fn is_valid_signature(&self, wallet_address: Address, block_number: BlockNumber, hash: [u8; 32], signature: Bytes) -> Result { + let erc1271 = ERC1271::new(wallet_address, self.provider.clone()); + + let res: [u8; 4] = erc1271 + .is_valid_signature(hash, signature) + .block(block_number) + .call() + .await? + .into(); + + Ok(res == EIP1271_MAGIC_VALUE) + } +} \ No newline at end of file diff --git a/xmtp_id/src/lib.rs b/xmtp_id/src/lib.rs index 5eee16f19..7577629ee 100644 --- a/xmtp_id/src/lib.rs +++ b/xmtp_id/src/lib.rs @@ -1,5 +1,5 @@ pub mod credential_verifier; -pub mod verified_key_package; +pub mod erc1271_verifier; use std::sync::RwLock; diff --git a/xmtp_id/src/verifier.rs b/xmtp_id/src/verifier.rs deleted file mode 100644 index dee72f0f3..000000000 --- a/xmtp_id/src/verifier.rs +++ /dev/null @@ -1,47 +0,0 @@ -use ethers::types::{Address, BlockId, Signature}; -use ethers::providers::{Http, Middleware, Provider}; -use std::convert::TryFrom; -use std::sync::Arc; -use crate::bindings::coinbase_smart_wallet::CoinbaseSmartWallet; -use anyhow::Error; - -const BASE_SEPOLIA_RPC_URL: &str = "https://sepolia.base.org"; -const EIP1271_MAGIC_VALUE: [u8; 4] = [0x16, 0x26, 0xba, 0x7e]; - -pub struct ERC1271Verifier { - pub provider: Arc>, -} - -impl ERC1271Verifier { - pub fn new() -> Self { - let provider = Arc::new(Provider::::try_from(BASE_SEPOLIA_RPC_URL).unwrap()); - Self { provider } - } - - /// Verifies an ERC-1271(https://eips.ethereum.org/EIPS/eip-1271) signature. - /// - /// # Arguments - /// - /// * `hash` - Hash of the message. - /// * `signature` - generated by signing **Replay safe hash**. - /// * `wallet_address` - Address of the ERC1271 wallet. - /// * `block_id` - Block identifier. - pub async fn verify_erc1271_signature(&self, hash: [u8; 32], owner_index: u64, signature: Signature, wallet_address: Address, block_id: BlockId) -> Result { - let wallet = CoinbaseSmartWallet::new(wallet_address, self.provider.clone()); - - // Used during signature validation, tie a signature with its signer. - let signature_wrapper = ethers::abi::encode(&[ethers::abi::Token::Tuple(vec![ - ethers::abi::Token::Uint(ethers::types::U256::from(owner_index)), - ethers::abi::Token::Bytes(signature.to_vec()), - ])]); - - let res: [u8; 4] = wallet - .is_valid_signature(hash, ethers::types::Bytes::from(signature_wrapper)) - .block(block_id) - .call() - .await? - .into(); - - Ok(res == EIP1271_MAGIC_VALUE) - } -} \ No newline at end of file From 1772ae1a0d06094079ed33cfa1c4c774ae312251 Mon Sep 17 00:00:00 2001 From: yoduyodu Date: Fri, 5 Apr 2024 11:32:43 -0700 Subject: [PATCH 04/10] interface --- Cargo.lock | 1376 +++++++++- Cargo.toml | 2 + xmtp_id/Cargo.toml | 13 + xmtp_id/abi/ERC1271.json | 26 - xmtp_id/artifact/CoinbaseSmartWallet.json | 2278 +++++++++++++++++ .../artifact/CoinbaseSmartWalletFactory.json | 2278 +++++++++++++++++ xmtp_id/src/erc1271_verifier.rs | 26 +- 7 files changed, 5834 insertions(+), 165 deletions(-) delete mode 100644 xmtp_id/abi/ERC1271.json create mode 100644 xmtp_id/artifact/CoinbaseSmartWallet.json create mode 100644 xmtp_id/artifact/CoinbaseSmartWalletFactory.json diff --git a/Cargo.lock b/Cargo.lock index 1708d2575..6a6017d7b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,6 +27,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aead" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +dependencies = [ + "generic-array", +] + [[package]] name = "aead" version = "0.5.2" @@ -37,6 +46,17 @@ dependencies = [ "generic-array", ] +[[package]] +name = "aes" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" +dependencies = [ + "aes-soft", + "aesni", + "cipher 0.2.5", +] + [[package]] name = "aes" version = "0.8.4" @@ -44,24 +64,58 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", - "cipher", + "cipher 0.4.4", "cpufeatures", ] +[[package]] +name = "aes-gcm" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" +dependencies = [ + "aead 0.3.2", + "aes 0.6.0", + "cipher 0.2.5", + "ctr 0.6.0", + "ghash 0.3.1", + "subtle", +] + [[package]] name = "aes-gcm" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ - "aead", - "aes", - "cipher", - "ctr", - "ghash", + "aead 0.5.2", + "aes 0.8.4", + "cipher 0.4.4", + "ctr 0.9.2", + "ghash 0.5.1", "subtle", ] +[[package]] +name = "aes-soft" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" +dependencies = [ + "cipher 0.2.5", + "opaque-debug", +] + +[[package]] +name = "aesni" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" +dependencies = [ + "cipher 0.2.5", + "opaque-debug", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -161,6 +215,144 @@ dependencies = [ "term", ] +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" +dependencies = [ + "concurrent-queue", + "event-listener 5.2.0", + "event-listener-strategy 0.5.1", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10b3e585719c2358d2660232671ca8ca4ddb4be4ce8a1842d6c2dc8685303316" +dependencies = [ + "async-lock 3.3.0", + "async-task", + "concurrent-queue", + "fastrand 2.0.2", + "futures-lite 2.3.0", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.2.0", + "async-executor", + "async-io 2.3.2", + "async-lock 3.3.0", + "blocking", + "futures-lite 2.3.0", + "once_cell", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.27", + "slab", + "socket2 0.4.10", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +dependencies = [ + "async-lock 3.3.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.3.0", + "parking", + "polling 3.6.0", + "rustix 0.38.32", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +dependencies = [ + "async-channel 1.9.0", + "async-global-executor", + "async-io 1.13.0", + "async-lock 2.8.0", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite 1.13.0", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + [[package]] name = "async-stream" version = "0.3.5" @@ -183,6 +375,12 @@ dependencies = [ "syn 2.0.55", ] +[[package]] +name = "async-task" +version = "4.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" + [[package]] name = "async-trait" version = "0.1.79" @@ -202,9 +400,15 @@ checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" dependencies = [ "futures", "pharos", - "rustc_version", + "rustc_version 0.4.0", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "auto_impl" version = "1.2.0" @@ -231,7 +435,7 @@ dependencies = [ "async-trait", "axum-core", "bitflags 1.3.2", - "bytes", + "bytes 1.6.0", "futures-util", "http", "http-body", @@ -257,7 +461,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ "async-trait", - "bytes", + "bytes 1.6.0", "futures-util", "http", "http-body", @@ -282,6 +486,12 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + [[package]] name = "base16ct" version = "0.1.1" @@ -318,6 +528,15 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +[[package]] +name = "beef" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" +dependencies = [ + "serde", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -375,6 +594,22 @@ dependencies = [ "generic-array", ] +[[package]] +name = "blocking" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +dependencies = [ + "async-channel 2.2.0", + "async-lock 3.3.0", + "async-task", + "fastrand 2.0.2", + "futures-io", + "futures-lite 2.3.0", + "piper", + "tracing", +] + [[package]] name = "bs58" version = "0.5.1" @@ -403,6 +638,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "bytes" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" + [[package]] name = "bytes" version = "1.6.0" @@ -459,7 +700,7 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver", + "semver 1.0.22", "serde", "serde_json", "thiserror", @@ -488,7 +729,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" dependencies = [ "cfg-if", - "cipher", + "cipher 0.4.4", "cpufeatures", ] @@ -498,9 +739,9 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10cd79432192d1c0f4e1a0fef9527696cc039165d729fb41b3f4f4f354c2dc35" dependencies = [ - "aead", + "aead 0.5.2", "chacha20", - "cipher", + "cipher 0.4.4", "poly1305", "zeroize", ] @@ -519,6 +760,15 @@ dependencies = [ "windows-targets 0.52.4", ] +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array", +] + [[package]] name = "cipher" version = "0.4.4" @@ -597,7 +847,7 @@ dependencies = [ "hmac 0.12.1", "once_cell", "pbkdf2 0.12.2", - "rand", + "rand 0.8.5", "sha2 0.10.8", "thiserror", ] @@ -628,6 +878,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +[[package]] +name = "concurrent-queue" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -657,12 +916,35 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_fn" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" + [[package]] name = "constant_time_eq" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +[[package]] +name = "cookie" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a5d7b21829bc7b4bf4754a978a241ae54ea55a40f92bb20216e54096f4b951" +dependencies = [ + "aes-gcm 0.8.0", + "base64 0.13.1", + "hkdf 0.10.0", + "hmac 0.10.1", + "percent-encoding", + "rand 0.8.5", + "sha2 0.9.9", + "time 0.2.27", + "version_check", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -688,6 +970,12 @@ dependencies = [ "libc", ] +[[package]] +name = "cpuid-bool" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" + [[package]] name = "crc32fast" version = "1.4.0" @@ -735,7 +1023,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -747,7 +1035,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -759,7 +1047,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "typenum", ] @@ -773,6 +1061,16 @@ dependencies = [ "subtle", ] +[[package]] +name = "crypto-mac" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" +dependencies = [ + "generic-array", + "subtle", +] + [[package]] name = "ctor" version = "0.2.7" @@ -783,13 +1081,53 @@ dependencies = [ "syn 2.0.55", ] +[[package]] +name = "ctr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" +dependencies = [ + "cipher 0.2.5", +] + [[package]] name = "ctr" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "cipher", + "cipher 0.4.4", +] + +[[package]] +name = "curl" +version = "0.4.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e2161dd6eba090ff1594084e95fd67aeccf04382ffea77999ea94ed42ec67b6" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2 0.5.6", + "windows-sys 0.52.0", +] + +[[package]] +name = "curl-sys" +version = "0.4.72+curl-8.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29cbdc8314c447d11e8fd156dcdd031d9e02a7a976163e396b548c03153bc9ea" +dependencies = [ + "cc", + "libc", + "libnghttp2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "windows-sys 0.52.0", ] [[package]] @@ -804,7 +1142,7 @@ dependencies = [ "digest 0.10.7", "fiat-crypto", "platforms", - "rustc_version", + "rustc_version 0.4.0", "subtle", "zeroize", ] @@ -876,7 +1214,7 @@ dependencies = [ "diesel_derives", "libsqlite3-sys", "r2d2", - "time", + "time 0.3.34", ] [[package]] @@ -980,6 +1318,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + [[package]] name = "downcast" version = "0.11.0" @@ -1036,7 +1380,7 @@ checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" dependencies = [ "curve25519-dalek", "ed25519", - "rand_core", + "rand_core 0.6.4", "serde", "sha2 0.10.8", "subtle", @@ -1062,9 +1406,9 @@ dependencies = [ "ff 0.12.1", "generic-array", "group 0.12.1", - "hkdf", + "hkdf 0.12.4", "pkcs8 0.9.0", - "rand_core", + "rand_core 0.6.4", "sec1 0.3.0", "subtle", "zeroize", @@ -1082,10 +1426,10 @@ dependencies = [ "ff 0.13.0", "generic-array", "group 0.13.0", - "hkdf", + "hkdf 0.12.4", "pem-rfc7468", "pkcs8 0.10.2", - "rand_core", + "rand_core 0.6.4", "sec1 0.7.3", "subtle", "zeroize", @@ -1116,11 +1460,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" dependencies = [ "base64 0.21.7", - "bytes", + "bytes 1.6.0", "hex", "k256 0.13.3", "log", - "rand", + "rand 0.8.5", "rlp", "serde", "sha3", @@ -1171,13 +1515,13 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ - "aes", - "ctr", + "aes 0.8.4", + "ctr 0.9.2", "digest 0.10.7", "hex", "hmac 0.12.1", "pbkdf2 0.11.0", - "rand", + "rand 0.8.5", "scrypt", "serde", "serde_json", @@ -1329,7 +1673,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" dependencies = [ "arrayvec", - "bytes", + "bytes 1.6.0", "cargo_metadata", "chrono", "const-hex", @@ -1340,7 +1684,7 @@ dependencies = [ "num_enum", "once_cell", "open-fastrlp", - "rand", + "rand 0.8.5", "rlp", "serde", "serde_json", @@ -1361,7 +1705,7 @@ dependencies = [ "chrono", "ethers-core", "reqwest", - "semver", + "semver 1.0.22", "serde", "serde_json", "thiserror", @@ -1404,7 +1748,7 @@ dependencies = [ "async-trait", "auto_impl", "base64 0.21.7", - "bytes", + "bytes 1.6.0", "const-hex", "enr", "ethers-core", @@ -1446,7 +1790,7 @@ dependencies = [ "elliptic-curve 0.13.8", "eth-keystore", "ethers-core", - "rand", + "rand 0.8.5", "sha2 0.10.8", "thiserror", "tracing", @@ -1471,7 +1815,7 @@ dependencies = [ "path-slash", "rayon", "regex", - "semver", + "semver 1.0.22", "serde", "serde_json", "solang-parser", @@ -1484,6 +1828,54 @@ dependencies = [ "yansi", ] +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" +dependencies = [ + "event-listener 5.2.0", + "pin-project-lite", +] + [[package]] name = "eyre" version = "0.6.12" @@ -1494,6 +1886,15 @@ dependencies = [ "once_cell", ] +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + [[package]] name = "fastrand" version = "2.0.2" @@ -1522,7 +1923,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1532,7 +1933,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1549,7 +1950,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] @@ -1579,6 +1980,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "flume" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bebadab126f8120d410b677ed95eee4ba6eb7c6dd8e34a5ec88a08050e26132" +dependencies = [ + "futures-core", + "futures-sink", + "spinning_top", +] + [[package]] name = "flume" version = "0.11.0" @@ -1676,6 +2088,34 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand 2.0.2", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-locks" version = "0.7.1" @@ -1757,6 +2197,17 @@ dependencies = [ "zeroize", ] +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + [[package]] name = "getrandom" version = "0.2.12" @@ -1766,10 +2217,20 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] +[[package]] +name = "ghash" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" +dependencies = [ + "opaque-debug", + "polyval 0.4.5", +] + [[package]] name = "ghash" version = "0.5.1" @@ -1777,7 +2238,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" dependencies = [ "opaque-debug", - "polyval", + "polyval 0.6.2", ] [[package]] @@ -1811,7 +2272,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ "ff 0.12.1", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1822,7 +2283,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff 0.13.0", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1832,7 +2293,7 @@ version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" dependencies = [ - "bytes", + "bytes 1.6.0", "fnv", "futures-core", "futures-sink", @@ -1873,12 +2334,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ "base64 0.21.7", - "bytes", + "bytes 1.6.0", "headers-core", "http", "httpdate", "mime", - "sha1", + "sha1 0.10.6", ] [[package]] @@ -1914,6 +2375,16 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hkdf" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" +dependencies = [ + "digest 0.9.0", + "hmac 0.10.1", +] + [[package]] name = "hkdf" version = "0.12.4" @@ -1929,7 +2400,17 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" dependencies = [ - "crypto-mac", + "crypto-mac 0.8.0", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac 0.10.0", "digest 0.9.0", ] @@ -1981,7 +2462,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c3f1ae0a26c18d6469a70db1217136056261c4a244b09a755bc60bd4e055b67" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -1990,14 +2471,14 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a08d4500baf0aced746723d3515d08212bdb9d941df6d1aca3d46d1619b2a1cf" dependencies = [ - "aes-gcm", + "aes-gcm 0.10.3", "chacha20poly1305", - "hkdf", + "hkdf 0.12.4", "hpke-rs-crypto", "p256", "p384", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "sha2 0.10.8", "x25519-dalek", ] @@ -2008,7 +2489,7 @@ version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ - "bytes", + "bytes 1.6.0", "fnv", "itoa", ] @@ -2019,11 +2500,47 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ - "bytes", + "bytes 1.6.0", "http", "pin-project-lite", ] +[[package]] +name = "http-client" +version = "6.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1947510dc91e2bf586ea5ffb412caad7673264e14bb39fb9078da114a94ce1a5" +dependencies = [ + "async-std", + "async-trait", + "cfg-if", + "http-types", + "isahc", + "log", +] + +[[package]] +name = "http-types" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" +dependencies = [ + "anyhow", + "async-channel 1.9.0", + "async-std", + "base64 0.13.1", + "cookie", + "futures-lite 1.13.0", + "infer", + "pin-project-lite", + "rand 0.7.3", + "serde", + "serde_json", + "serde_qs", + "serde_urlencoded", + "url", +] + [[package]] name = "httparse" version = "1.8.0" @@ -2048,7 +2565,7 @@ version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ - "bytes", + "bytes 1.6.0", "futures-channel", "futures-core", "futures-util", @@ -2059,7 +2576,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.6", "tokio", "tower-service", "tracing", @@ -2189,6 +2706,12 @@ dependencies = [ "hashbrown 0.14.3", ] +[[package]] +name = "infer" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" + [[package]] name = "inout" version = "0.1.3" @@ -2207,6 +2730,17 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "ipnet" version = "2.9.0" @@ -2224,6 +2758,29 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "isahc" +version = "0.9.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2948a0ce43e2c2ef11d7edf6816508998d99e13badd1150be0914205df9388a" +dependencies = [ + "bytes 0.5.6", + "crossbeam-utils", + "curl", + "curl-sys", + "flume 0.9.2", + "futures-lite 1.13.0", + "http", + "log", + "once_cell", + "slab", + "sluice", + "tracing", + "tracing-futures", + "url", + "waker-fn", +] + [[package]] name = "isolang" version = "2.4.0" @@ -2275,6 +2832,131 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "jsonrpsee" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cdbb7cb6f3ba28f5b212dd250ab4483105efc3e381f5c8bb90340f14f0a2cc3" +dependencies = [ + "jsonrpsee-core", + "jsonrpsee-proc-macros", + "jsonrpsee-server", + "jsonrpsee-types", + "jsonrpsee-ws-client", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ab2e14e727d2faf388c99d9ca5210566ed3b044f07d92c29c3611718d178380" +dependencies = [ + "futures-util", + "http", + "jsonrpsee-core", + "pin-project", + "rustls-native-certs", + "rustls-pki-types", + "soketto", + "thiserror", + "tokio", + "tokio-rustls 0.25.0", + "tokio-util", + "tracing", + "url", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71962a1c49af43adf81d337e4ebc93f3c915faf6eccaa14d74e255107dfd7723" +dependencies = [ + "anyhow", + "async-lock 3.3.0", + "async-trait", + "beef", + "futures-timer", + "futures-util", + "hyper", + "jsonrpsee-types", + "parking_lot", + "pin-project", + "rand 0.8.5", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7c2416c400c94b2e864603c51a5bbd5b103386da1f5e58cbf01e7bb3ef0833" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.55", +] + +[[package]] +name = "jsonrpsee-server" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4882e640e70c2553e3d9487e6f4dddd5fd11918f25e40fa45218f9fe29ed2152" +dependencies = [ + "futures-util", + "http", + "hyper", + "jsonrpsee-core", + "jsonrpsee-types", + "pin-project", + "route-recognizer", + "serde", + "serde_json", + "soketto", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tracing", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e53c72de6cd2ad6ac1aa6e848206ef8b736f92ed02354959130373dfa5b3cbd" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "jsonrpsee-ws-client" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8a07ab8da9a283b906f6735ddd17d3680158bb72259e853441d1dd0167079ec" +dependencies = [ + "http", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", + "url", +] + [[package]] name = "jsonwebtoken" version = "8.3.0" @@ -2383,6 +3065,16 @@ version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +[[package]] +name = "libnghttp2-sys" +version = "0.1.9+1.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b57e858af2798e167e709b9d969325b6d8e9d50232fcbc494d7d54f976854a64" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "libredox" version = "0.0.1" @@ -2407,7 +3099,7 @@ dependencies = [ "libsecp256k1-core", "libsecp256k1-gen-ecmult", "libsecp256k1-gen-genmult", - "rand", + "rand 0.8.5", "serde", "sha2 0.9.9", "typenum", @@ -2454,6 +3146,24 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "libz-sys" +version = "1.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + [[package]] name = "linux-raw-sys" version = "0.4.13" @@ -2564,7 +3274,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.48.0", ] @@ -2582,7 +3292,7 @@ dependencies = [ "openmls_rust_crypto", "openmls_traits", "prost 0.12.3", - "rand", + "rand 0.8.5", "serde", "tokio", "tonic", @@ -2624,7 +3334,7 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01acbdc23469fd8fe07ab135923371d5f5a422fbf9c522158677c8eb15bc51c2" dependencies = [ - "bytes", + "bytes 1.6.0", "encoding_rs", "futures-util", "http", @@ -2648,7 +3358,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" dependencies = [ - "getrandom", + "getrandom 0.2.12", ] [[package]] @@ -2769,7 +3479,7 @@ checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" dependencies = [ "arrayvec", "auto_impl", - "bytes", + "bytes 1.6.0", "ethereum-types", "open-fastrlp-derive", ] @@ -2780,7 +3490,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" dependencies = [ - "bytes", + "bytes 1.6.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2797,7 +3507,7 @@ dependencies = [ "openmls_basic_credential", "openmls_rust_crypto", "openmls_traits", - "rand", + "rand 0.8.5", "rayon", "rstest", "rstest_reuse", @@ -2816,7 +3526,7 @@ dependencies = [ "ed25519-dalek", "openmls_traits", "p256", - "rand", + "rand 0.8.5", "serde", "tls_codec 0.4.2-pre.1", ] @@ -2836,10 +3546,10 @@ name = "openmls_rust_crypto" version = "0.2.0" source = "git+https://github.com/xmtp/openmls?rev=4eee1fc#4eee1fc51acd70d267e7d208ed69f47dd32db115" dependencies = [ - "aes-gcm", + "aes-gcm 0.10.3", "chacha20poly1305", "ed25519-dalek", - "hkdf", + "hkdf 0.12.4", "hmac 0.12.1", "hpke-rs", "hpke-rs-crypto", @@ -2847,8 +3557,8 @@ dependencies = [ "openmls_memory_keystore", "openmls_traits", "p256", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "serde", "sha2 0.10.8", "thiserror", @@ -2952,6 +3662,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "parking_lot" version = "0.12.1" @@ -2982,7 +3698,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -3042,7 +3758,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a88c8d87f99a4ac14325e7a4c24af190fca261956e3b82dd7ed67e77e6c7043" dependencies = [ - "bytes", + "bytes 1.6.0", "chrono", "pbjson 0.5.1", "pbjson-build 0.5.1", @@ -3057,7 +3773,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12" dependencies = [ - "bytes", + "bytes 1.6.0", "chrono", "pbjson 0.6.0", "pbjson-build 0.6.2", @@ -3129,7 +3845,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" dependencies = [ "futures", - "rustc_version", + "rustc_version 0.4.0", ] [[package]] @@ -3149,7 +3865,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ "phf_shared 0.11.2", - "rand", + "rand 0.8.5", ] [[package]] @@ -3215,6 +3931,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.2", + "futures-io", +] + [[package]] name = "pkcs8" version = "0.9.0" @@ -3247,6 +3974,37 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c" +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 0.38.32", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "poly1305" version = "0.8.0" @@ -3255,7 +4013,18 @@ checksum = "8159bd90725d2df49889a078b54f4f79e87f1f8a8444194cdca81d38f5393abf" dependencies = [ "cpufeatures", "opaque-debug", - "universal-hash", + "universal-hash 0.5.1", +] + +[[package]] +name = "polyval" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" +dependencies = [ + "cpuid-bool", + "opaque-debug", + "universal-hash 0.4.0", ] [[package]] @@ -3267,7 +4036,7 @@ dependencies = [ "cfg-if", "cpufeatures", "opaque-debug", - "universal-hash", + "universal-hash 0.5.1", ] [[package]] @@ -3389,6 +4158,12 @@ dependencies = [ "toml_edit 0.21.1", ] +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + [[package]] name = "proc-macro2" version = "1.0.79" @@ -3407,8 +4182,8 @@ dependencies = [ "bitflags 2.5.0", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax 0.8.3", "unarray", @@ -3420,7 +4195,7 @@ version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" dependencies = [ - "bytes", + "bytes 1.6.0", "prost-derive 0.11.9", ] @@ -3430,7 +4205,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" dependencies = [ - "bytes", + "bytes 1.6.0", "prost-derive 0.12.3", ] @@ -3440,7 +4215,7 @@ version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ - "bytes", + "bytes 1.6.0", "heck 0.4.1", "itertools 0.10.5", "lazy_static", @@ -3462,7 +4237,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2" dependencies = [ - "bytes", + "bytes 1.6.0", "heck 0.4.1", "itertools 0.11.0", "log", @@ -3548,6 +4323,19 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + [[package]] name = "rand" version = "0.8.5" @@ -3555,8 +4343,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", ] [[package]] @@ -3566,7 +4364,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", ] [[package]] @@ -3575,7 +4382,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.12", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", ] [[package]] @@ -3584,7 +4400,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -3622,7 +4438,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ - "getrandom", + "getrandom 0.2.12", "libredox", "thiserror", ] @@ -3678,7 +4494,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64 0.21.7", - "bytes", + "bytes 1.6.0", "encoding_rs", "futures-core", "futures-util", @@ -3756,7 +4572,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.12", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -3778,7 +4594,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ - "bytes", + "bytes 1.6.0", "rlp-derive", "rustc-hex", ] @@ -3794,6 +4610,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + [[package]] name = "rstest" version = "0.16.0" @@ -3803,7 +4625,7 @@ dependencies = [ "futures", "futures-timer", "rstest_macros", - "rustc_version", + "rustc_version 0.4.0", ] [[package]] @@ -3815,7 +4637,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "rustc_version", + "rustc_version 0.4.0", "syn 1.0.109", "unicode-ident", ] @@ -3827,7 +4649,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9b5aed35457441e7e0db509695ba3932d4c47e046777141c167efe584d0ec17" dependencies = [ "quote", - "rustc_version", + "rustc_version 0.4.0", "syn 1.0.109", ] @@ -3837,19 +4659,48 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[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.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + [[package]] name = "rustc_version" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver", + "semver 1.0.22", +] + +[[package]] +name = "rustix" +version = "0.37.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", ] [[package]] @@ -3861,7 +4712,7 @@ dependencies = [ "bitflags 2.5.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.13", "windows-sys 0.52.0", ] @@ -3978,7 +4829,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" dependencies = [ - "cipher", + "cipher 0.4.4", ] [[package]] @@ -4117,6 +4968,15 @@ dependencies = [ "libc", ] +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + [[package]] name = "semver" version = "1.0.22" @@ -4126,6 +4986,12 @@ dependencies = [ "serde", ] +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + [[package]] name = "send_wrapper" version = "0.4.0" @@ -4178,6 +5044,17 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_qs" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" +dependencies = [ + "percent-encoding", + "serde", + "thiserror", +] + [[package]] name = "serde_spanned" version = "0.6.5" @@ -4199,6 +5076,28 @@ dependencies = [ "serde", ] +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + [[package]] name = "sha1" version = "0.10.6" @@ -4210,6 +5109,12 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + [[package]] name = "sha2" version = "0.9.9" @@ -4269,7 +5174,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fe458c98333f9c8152221191a77e2a44e8325d0193484af2e9421a53019e57d" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -4281,7 +5186,7 @@ dependencies = [ "num-bigint", "num-traits", "thiserror", - "time", + "time 0.3.34", ] [[package]] @@ -4299,6 +5204,17 @@ dependencies = [ "autocfg", ] +[[package]] +name = "sluice" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7400c0eff44aa2fcb5e31a5f24ba9716ed90138769e4977a2ba6014ae63eb5" +dependencies = [ + "async-channel 1.9.0", + "futures-core", + "futures-io", +] + [[package]] name = "smallvec" version = "1.13.2" @@ -4316,6 +5232,16 @@ dependencies = [ "syn 2.0.55", ] +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "socket2" version = "0.5.6" @@ -4326,6 +5252,22 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "soketto" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" +dependencies = [ + "base64 0.13.1", + "bytes 1.6.0", + "futures", + "http", + "httparse", + "log", + "rand 0.8.5", + "sha-1", +] + [[package]] name = "solang-parser" version = "0.3.3" @@ -4355,6 +5297,15 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spinning_top" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b9eb1a2f4c41445a3a0ff9abc5221c5fcd28e1f13cd7c0397706f9ac938ddb0" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" version = "0.6.0" @@ -4375,12 +5326,70 @@ dependencies = [ "der 0.7.8", ] +[[package]] +name = "standback" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check", +] + [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version 0.2.3", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1 0.6.1", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + [[package]] name = "string_cache" version = "0.8.7" @@ -4428,6 +5437,29 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +[[package]] +name = "surf" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718b1ae6b50351982dedff021db0def601677f2120938b070eadb10ba4038dd7" +dependencies = [ + "async-std", + "async-trait", + "cfg-if", + "encoding_rs", + "futures-util", + "getrandom 0.2.12", + "http-client", + "http-types", + "log", + "mime_guess", + "once_cell", + "pin-project-lite", + "serde", + "serde_json", + "web-sys", +] + [[package]] name = "sval" version = "2.11.1" @@ -4517,7 +5549,7 @@ dependencies = [ "hex", "once_cell", "reqwest", - "semver", + "semver 1.0.22", "serde", "serde_json", "sha2 0.10.8", @@ -4588,8 +5620,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand", - "rustix", + "fastrand 2.0.2", + "rustix 0.38.32", "windows-sys 0.52.0", ] @@ -4649,6 +5681,21 @@ dependencies = [ "once_cell", ] +[[package]] +name = "time" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +dependencies = [ + "const_fn", + "libc", + "standback", + "stdweb", + "time-macros 0.1.1", + "version_check", + "winapi", +] + [[package]] name = "time" version = "0.3.34" @@ -4661,7 +5708,7 @@ dependencies = [ "powerfmt", "serde", "time-core", - "time-macros", + "time-macros 0.2.17", ] [[package]] @@ -4670,6 +5717,16 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + [[package]] name = "time-macros" version = "0.2.17" @@ -4680,6 +5737,19 @@ dependencies = [ "time-core", ] +[[package]] +name = "time-macros-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn 1.0.109", +] + [[package]] name = "timeago" version = "0.4.2" @@ -4763,14 +5833,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", - "bytes", + "bytes 1.6.0", "libc", "mio", "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.6", "tokio-macros", "windows-sys 0.48.0", ] @@ -4826,6 +5896,20 @@ dependencies = [ "futures-core", "pin-project-lite", "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-test" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7" +dependencies = [ + "async-stream", + "bytes 1.6.0", + "futures-core", + "tokio", + "tokio-stream", ] [[package]] @@ -4849,8 +5933,9 @@ version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ - "bytes", + "bytes 1.6.0", "futures-core", + "futures-io", "futures-sink", "pin-project-lite", "tokio", @@ -4948,7 +6033,7 @@ dependencies = [ "async-trait", "axum", "base64 0.21.7", - "bytes", + "bytes 1.6.0", "h2", "http", "http-body", @@ -4981,7 +6066,7 @@ dependencies = [ "indexmap 1.9.3", "pin-project", "pin-project-lite", - "rand", + "rand 0.8.5", "slab", "tokio", "tokio-util", @@ -5087,14 +6172,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" dependencies = [ "byteorder", - "bytes", + "bytes 1.6.0", "data-encoding", "http", "httparse", "log", - "rand", + "rand 0.8.5", "rustls 0.21.10", - "sha1", + "sha1 0.10.6", "thiserror", "url", "utf-8", @@ -5160,6 +6245,16 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "universal-hash" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b2c654932e3e4f9196e69d08fdf7cfd718e1dc6f66b347e6024a0c961402" +dependencies = [ + "generic-array", + "subtle", +] + [[package]] name = "universal-hash" version = "0.5.1" @@ -5191,6 +6286,7 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -5211,7 +6307,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.12", "serde", ] @@ -5221,7 +6317,7 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ - "getrandom", + "getrandom 0.2.12", ] [[package]] @@ -5278,6 +6374,12 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "waker-fn" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" + [[package]] name = "walkdir" version = "2.5.0" @@ -5303,7 +6405,7 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1e92e22e03ff1230c03a1a8ee37d2f89cd489e2e541b7550d6afad96faed169" dependencies = [ - "bytes", + "bytes 1.6.0", "futures-channel", "futures-util", "headers", @@ -5328,6 +6430,12 @@ dependencies = [ "tracing", ] +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -5470,7 +6578,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix", + "rustix 0.38.32", ] [[package]] @@ -5684,7 +6792,7 @@ dependencies = [ "js-sys", "log", "pharos", - "rustc_version", + "rustc_version 0.4.0", "send_wrapper 0.6.0", "thiserror", "wasm-bindgen", @@ -5708,7 +6816,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ "curve25519-dalek", - "rand_core", + "rand_core 0.6.4", "serde", "zeroize", ] @@ -5773,8 +6881,8 @@ dependencies = [ "hex", "k256 0.12.0", "log", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "serde", "sha2 0.10.8", "sha3", @@ -5789,17 +6897,25 @@ dependencies = [ "anyhow", "async-trait", "chrono", + "ctor", "ethers", "futures", + "jsonrpsee", "log", "openmls", "openmls_basic_credential", "openmls_rust_crypto", "openmls_traits", "prost 0.12.3", + "regex", "serde", + "serde_json", + "surf", "thiserror", + "tokio", + "tokio-test", "tracing", + "tracing-subscriber", "xmtp_cryptography", "xmtp_mls", "xmtp_proto", @@ -5816,7 +6932,7 @@ dependencies = [ "diesel_migrations", "ethers", "ethers-core", - "flume", + "flume 0.11.0", "futures", "hex", "libsqlite3-sys", @@ -5827,7 +6943,7 @@ dependencies = [ "openmls_rust_crypto", "openmls_traits", "prost 0.12.3", - "rand", + "rand 0.8.5", "serde", "serde_json", "smart-default", @@ -5866,7 +6982,7 @@ dependencies = [ "libsecp256k1", "once_cell", "prost 0.12.3", - "rand", + "rand 0.8.5", "xmtp_proto", "xmtp_v2", ] @@ -5875,15 +6991,15 @@ dependencies = [ name = "xmtp_v2" version = "0.1.0" dependencies = [ - "aes-gcm", + "aes-gcm 0.10.3", "ecdsa 0.15.1", "generic-array", - "getrandom", + "getrandom 0.2.12", "hex", - "hkdf", + "hkdf 0.12.4", "k256 0.12.0", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "sha2 0.10.8", "sha3", ] @@ -5920,7 +7036,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ - "aes", + "aes 0.8.4", "byteorder", "bzip2", "constant_time_eq", @@ -5929,8 +7045,8 @@ dependencies = [ "flate2", "hmac 0.12.1", "pbkdf2 0.11.0", - "sha1", - "time", + "sha1 0.10.6", + "time 0.3.34", "zstd", ] diff --git a/Cargo.toml b/Cargo.toml index fa91d97ba..9524bf950 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,6 +46,8 @@ tokio = { version = "1.35.1", features = ["macros"] } tonic = "^0.11" tracing = "0.1" anyhow = "1.0" +jsonrpsee = { version = "0.22", features = ["macros", "server", "client-core"] } +tracing-subscriber = { version = "0.3.18", features = ["fmt", "env-filter"] } # Internal Crate Dependencies xmtp_cryptography = { path = "xmtp_cryptography" } diff --git a/xmtp_id/Cargo.toml b/xmtp_id/Cargo.toml index f4cedb0d4..130219536 100644 --- a/xmtp_id/Cargo.toml +++ b/xmtp_id/Cargo.toml @@ -23,3 +23,16 @@ async-trait.workspace = true futures.workspace = true ethers.workspace = true anyhow.workspace = true + +[dev-dependencies] +tracing-subscriber.workspace = true +serde_json.workspace = true +anyhow.workspace = true +tokio = { workspace = true, features = ["time"] } +jsonrpsee = { workspace = true, features = ["macros", "ws-client"] } +ethers = { workspace = true, features = ["ws"] } +tokio-test = "0.4" +futures = "0.3" +ctor = "0.2.5" +surf = "2.3" +regex = "1.10" \ No newline at end of file diff --git a/xmtp_id/abi/ERC1271.json b/xmtp_id/abi/ERC1271.json deleted file mode 100644 index 9427c5e08..000000000 --- a/xmtp_id/abi/ERC1271.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_hash", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "_signature", - "type": "bytes" - } - ], - "name": "isValidSignature", - "outputs": [ - { - "internalType": "bytes4", - "name": "magicValue", - "type": "bytes4" - } - ], - "stateMutability": "view", - "type": "function" - } -] \ No newline at end of file diff --git a/xmtp_id/artifact/CoinbaseSmartWallet.json b/xmtp_id/artifact/CoinbaseSmartWallet.json new file mode 100644 index 000000000..ea2806a34 --- /dev/null +++ b/xmtp_id/artifact/CoinbaseSmartWallet.json @@ -0,0 +1,2278 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "name": "erc4337", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "createAccount", + "inputs": [ + { + "name": "owners", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "account", + "type": "address", + "internalType": "contract CoinbaseSmartWallet" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "getAddress", + "inputs": [ + { + "name": "owners", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "predicted", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "implementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initCodeHash", + "inputs": [], + "outputs": [ + { + "name": "result", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "error", + "name": "OwnerRequired", + "inputs": [] + } + ], + "bytecode": { + "object": "0x60a06040526040516105eb3803806105eb83398101604081905261002291610033565b6001600160a01b0316608052610063565b60006020828403121561004557600080fd5b81516001600160a01b038116811461005c57600080fd5b9392505050565b60805161056061008b6000396000818160a60152818161013c015261023b01526105606000f3fe60806040526004361061003f5760003560e01c8063250b1b41146100445780633ffba36f146100815780635c60da1b14610094578063db4c545e146100c8575b600080fd5b34801561005057600080fd5b5061006461005f3660046103b7565b6100eb565b6040516001600160a01b0390911681526020015b60405180910390f35b61006461008f3660046103b7565b610111565b3480156100a057600080fd5b506100647f000000000000000000000000000000000000000000000000000000000000000081565b3480156100d457600080fd5b506100dd6101e6565b604051908152602001610078565b60006101096100f86101e6565b61010386868661027b565b306102b1565b949350505050565b600082810361013357604051633c776be160e01b815260040160405180910390fd5b60008061016b347f000000000000000000000000000000000000000000000000000000000000000061016689898961027b565b6102d3565b935091508290508115156000036101dd57604051633796f38760e11b81526001600160a01b03841690636f2de70e906101aa90899089906004016104f2565b600060405180830381600087803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b505050505b50509392505050565b604080517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f360609081527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207683526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212091909252600090915290565b600083838360405160200161029293929190610506565b6040516020818303038152906040528051906020012090509392505050565b600060ff60005350603592835260601b60015260155260556000908120915290565b6000806040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207660405261600960205284601e5268603d3d8160223d3973600a52605f60212060358201523060581b815260ff8153836015820152605581209150813b61037f5783605f602188f591508161037a5763301164256000526004601cfd5b6103a5565b6001925085156103a55760003860003889865af16103a55763b12d13eb6000526004601cfd5b80604052506000606052935093915050565b6000806000604084860312156103cc57600080fd5b833567ffffffffffffffff808211156103e457600080fd5b818601915086601f8301126103f857600080fd5b81358181111561040757600080fd5b8760208260051b850101111561041c57600080fd5b6020928301989097509590910135949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b878110156104e557848303601f19018952813536889003601e1901811261049b57600080fd5b8701848101903567ffffffffffffffff8111156104b757600080fd5b8036038213156104c657600080fd5b6104d1858284610432565b9a86019a9450505090830190600101610475565b5090979650505050505050565b60208152600061010960208301848661045b565b60408152600061051a60408301858761045b565b905082602083015294935050505056fea264697066735822122098bae64e62859ac8d5ed01c4927e5fce406f632b517c86f038f06fef8355dba164736f6c63430008170033", + "sourceMap": "461:3187:41:-:0;;;1029:78;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1076:24:41;;;461:3187;;14:290:69;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:69;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:69:o;:::-;461:3187:41;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x60806040526004361061003f5760003560e01c8063250b1b41146100445780633ffba36f146100815780635c60da1b14610094578063db4c545e146100c8575b600080fd5b34801561005057600080fd5b5061006461005f3660046103b7565b6100eb565b6040516001600160a01b0390911681526020015b60405180910390f35b61006461008f3660046103b7565b610111565b3480156100a057600080fd5b506100647f000000000000000000000000000000000000000000000000000000000000000081565b3480156100d457600080fd5b506100dd6101e6565b604051908152602001610078565b60006101096100f86101e6565b61010386868661027b565b306102b1565b949350505050565b600082810361013357604051633c776be160e01b815260040160405180910390fd5b60008061016b347f000000000000000000000000000000000000000000000000000000000000000061016689898961027b565b6102d3565b935091508290508115156000036101dd57604051633796f38760e11b81526001600160a01b03841690636f2de70e906101aa90899089906004016104f2565b600060405180830381600087803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b505050505b50509392505050565b604080517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f360609081527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207683526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212091909252600090915290565b600083838360405160200161029293929190610506565b6040516020818303038152906040528051906020012090509392505050565b600060ff60005350603592835260601b60015260155260556000908120915290565b6000806040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207660405261600960205284601e5268603d3d8160223d3973600a52605f60212060358201523060581b815260ff8153836015820152605581209150813b61037f5783605f602188f591508161037a5763301164256000526004601cfd5b6103a5565b6001925085156103a55760003860003889865af16103a55763b12d13eb6000526004601cfd5b80604052506000606052935093915050565b6000806000604084860312156103cc57600080fd5b833567ffffffffffffffff808211156103e457600080fd5b818601915086601f8301126103f857600080fd5b81358181111561040757600080fd5b8760208260051b850101111561041c57600080fd5b6020928301989097509590910135949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b878110156104e557848303601f19018952813536889003601e1901811261049b57600080fd5b8701848101903567ffffffffffffffff8111156104b757600080fd5b8036038213156104c657600080fd5b6104d1858284610432565b9a86019a9450505090830190600101610475565b5090979650505050505050565b60208152600061010960208301848661045b565b60408152600061051a60408301858761045b565b905082602083015294935050505056fea264697066735822122098bae64e62859ac8d5ed01c4927e5fce406f632b517c86f038f06fef8355dba164736f6c63430008170033", + "sourceMap": "461:3187:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2672:223;;;;;;;;;;-1:-1:-1;2672:223:41;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;883:32:69;;;865:51;;853:2;838:18;2672:223:41;;;;;;;;1782:562;;;;;;:::i;:::-;;:::i;599:39::-;;;;;;;;;;;;;;;3057:139;;;;;;;;;;;;;:::i;:::-;;;1318:25:69;;;1306:2;1291:18;3057:139:41;1172:177:69;2672:223:41;2755:17;2796:92;2833:14;:12;:14::i;:::-;2849:23;2858:6;;2866:5;2849:8;:23::i;:::-;2882:4;2796:36;:92::i;:::-;2784:104;2672:223;-1:-1:-1;;;;2672:223:41:o;1782:562::-;1909:27;1956:18;;;1952:71;;1997:15;;-1:-1:-1;;;1997:15:41;;;;;;;;;;;1952:71;2034:20;2056:22;2094:87;2130:9;2141:14;2157:23;2166:6;;2174:5;2157:8;:23::i;:::-;2094:35;:87::i;:::-;2033:148;-1:-1:-1;2033:148:41;-1:-1:-1;2033:148:41;;-1:-1:-1;2261:24:41;;;2280:5;2261:24;2257:81;;2301:26;;-1:-1:-1;;;2301:26:41;;-1:-1:-1;;;;;2301:18:41;;;;;:26;;2320:6;;;;2301:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2257:81;1942:402;;1782:562;;;;;:::o;3057:139::-;54044:4:33;54038:11;;54109:66;54103:4;54096:80;;;54202:66;54189:80;;54295:6;-1:-1:-1;54282:20:33;3174:14:41;54322:4:33;54315:28;54369:20;54363:4;54356:34;54427:4;54421;54411:21;54445:15;;;;-1:-1:-1;54509:15:33;;;54411:21;3057:139:41:o;3491:155::-;3572:12;3624:6;;3632:5;3613:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3603:36;;;;;;3596:43;;3491:155;;;;;:::o;71932:578:33:-;72062:17;72227:4;72221;72213:19;-1:-1:-1;72273:4:33;72266:18;;;72314:2;72310:17;72304:4;72297:31;72348:4;72341:18;72401:4;72395;72385:21;;;72419:15;;72385:21;71932:578::o;51105:1725::-;51228:20;51250:16;51363:4;51357:11;51428:66;51422:4;51415:80;51521:66;51515:4;51508:80;51614:6;51608:4;51601:20;51647:14;51641:4;51634:28;51688:20;51682:4;51675:34;51811:4;51805;51795:21;51788:4;51785:1;51781:12;51774:43;51848:9;51844:2;51840:18;51837:1;51830:29;51883:4;51880:1;51872:16;51943:4;51936;51933:1;51929:12;51922:26;51986:4;51983:1;51973:18;51961:30;;52056:8;52044:21;52034:324;;52128:4;52122;52116;52109:5;52101:32;52089:44;;52164:8;52154:160;;52213:10;52207:4;52200:24;52287:4;52281;52274:18;52154:160;52335:5;;52034:324;52394:1;52375:20;;52422:5;52412:26;52431:5;52412:26;52524:4;52512:10;52506:4;52494:10;52487:5;52477:8;52470:5;52465:64;52455:205;;52566:10;52560:4;52553:24;52637:4;52631;52624:18;52455:205;52722:1;52716:4;52709:15;;52786:1;52780:4;52773:15;51105:1725;;;;;;:::o;14:700:69:-;120:6;128;136;189:2;177:9;168:7;164:23;160:32;157:52;;;205:1;202;195:12;157:52;245:9;232:23;274:18;315:2;307:6;304:14;301:34;;;331:1;328;321:12;301:34;369:6;358:9;354:22;344:32;;414:7;407:4;403:2;399:13;395:27;385:55;;436:1;433;426:12;385:55;476:2;463:16;502:2;494:6;491:14;488:34;;;518:1;515;508:12;488:34;573:7;566:4;556:6;553:1;549:14;545:2;541:23;537:34;534:47;531:67;;;594:1;591;584:12;531:67;625:4;617:13;;;;649:6;;-1:-1:-1;687:20:69;;;;674:34;;14:700;-1:-1:-1;;;;14:700:69:o;1354:266::-;1442:6;1437:3;1430:19;1494:6;1487:5;1480:4;1475:3;1471:14;1458:43;-1:-1:-1;1546:1:69;1521:16;;;1539:4;1517:27;;;1510:38;;;;1602:2;1581:15;;;-1:-1:-1;;1577:29:69;1568:39;;;1564:50;;1354:266::o;1625:1047::-;1702:3;1733;1757:6;1752:3;1745:19;1783:4;1812;1807:3;1803:14;1796:21;;1870:4;1860:6;1857:1;1853:14;1846:5;1842:26;1838:37;1898:5;1921:1;1931:715;1945:6;1942:1;1939:13;1931:715;;;2010:16;;;-1:-1:-1;;2006:30:69;1994:43;;2076:20;;2151:14;2147:26;;;-1:-1:-1;;2143:40:69;2119:65;;2109:93;;2198:1;2195;2188:12;2109:93;2230:30;;2338:16;;;;2289:21;2383:18;2370:32;;2367:52;;;2415:1;2412;2405:12;2367:52;2468:8;2452:14;2448:29;2439:7;2435:43;2432:63;;;2491:1;2488;2481:12;2432:63;2516:50;2561:4;2551:8;2542:7;2516:50;:::i;:::-;2624:12;;;;2508:58;-1:-1:-1;;;2589:15:69;;;;1967:1;1960:9;1931:715;;;-1:-1:-1;2662:4:69;;1625:1047;-1:-1:-1;;;;;;;1625:1047:69:o;2677:315::-;2886:2;2875:9;2868:21;2849:4;2906:80;2982:2;2971:9;2967:18;2959:6;2951;2906:80;:::i;2997:386::-;3234:2;3223:9;3216:21;3197:4;3254:80;3330:2;3319:9;3315:18;3307:6;3299;3254:80;:::i;:::-;3246:88;;3370:6;3365:2;3354:9;3350:18;3343:34;2997:386;;;;;;:::o", + "linkReferences": {}, + "immutableReferences": { + "50492": [ + { + "start": 166, + "length": 32 + }, + { + "start": 316, + "length": 32 + }, + { + "start": 571, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "createAccount(bytes[],uint256)": "3ffba36f", + "getAddress(bytes[],uint256)": "250b1b41", + "implementation()": "5c60da1b", + "initCodeHash()": "db4c545e" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc4337\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"OwnerRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"contract CoinbaseSmartWallet\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"predicted\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Coinbase (https://github.com/coinbase/smart-wallet)Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"erc4337\":\"The address of the ERC-4337 implementation used to deploy new cloned accounts.\"}},\"createAccount(bytes[],uint256)\":{\"details\":\"The account is deployed behind a minimal ERC1967 proxy whose implementation points to the registered ERC-4337 `implementation`.The `owners` parameter is a set of addresses and/or public keys depending on the signature scheme used (respectively ERC-1271 or Webauthn authentication).\",\"params\":{\"nonce\":\"The nonce of the account, allowing multiple accounts with the same set of initial owners to exist.\",\"owners\":\"The initial set of owners that should be able to control the account.\"}},\"getAddress(bytes[],uint256)\":{\"params\":{\"nonce\":\"The nonce provided to `createAccount()`.\",\"owners\":\"The initial set of owners provided to `createAccount()`.\"},\"returns\":{\"predicted\":\"The predicted account deployment address.\"}},\"initCodeHash()\":{\"returns\":{\"result\":\"The initialization code hash.\"}}},\"title\":\"Coinbase Smart Wallet Factory\",\"version\":1},\"userdoc\":{\"errors\":{\"OwnerRequired()\":[{\"notice\":\"Thrown when trying to create a new `CoinbaseSmartWallet` account without any owner.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Factory constructor used to initialize the implementation address to use for future ERC-4337 account deployments.\"},\"createAccount(bytes[],uint256)\":{\"notice\":\"Deploys an ERC-4337 account and returns its deterministic address.\"},\"getAddress(bytes[],uint256)\":{\"notice\":\"Returns the deterministic address of the account created via `createAccount()`.\"},\"implementation()\":{\"notice\":\"Address of the ERC-4337 implementation used as implementation for new accounts.\"},\"initCodeHash()\":{\"notice\":\"Returns the initialization code hash of the account (a minimal ERC1967 proxy).\"}},\"notice\":\"CoinbaseSmartWallet factory, based on Solady's ERC4337Factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/CoinbaseSmartWalletFactory.sol\":\"CoinbaseSmartWalletFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/p256-verifier/lib/openzeppelin-contracts/contracts/\",\":FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/p256-verifier/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/p256-verifier/lib/openzeppelin-contracts/\",\":p256-verifier/=lib/p256-verifier/\",\":solady/=lib/solady/src/\",\":webauthn-sol/=lib/webauthn-sol/src/\"]},\"sources\":{\"lib/FreshCryptoLib/solidity/src/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"lib/FreshCryptoLib/solidity/src/FCL_elliptic.sol\":{\"keccak256\":\"0x097f137d52dc9bd97d6fee7426b2d6d809ad3684767df288d58ffd76f7924e5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30ffae5b57f2e0fcabcc1642eb7c60e1b4369151d58a78034bb372187fdffa8e\",\"dweb:/ipfs/Qma8RXPxaV52ZMuR5HaoFWqMGSAo7g2u3qG6poguDbFsL4\"]},\"lib/account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/solady/src/accounts/Receiver.sol\":{\"keccak256\":\"0x9bf48dca73f428c20a0878a5a97d2d66626f835b077c012fd5b1ba6389feb2d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15cb4c81e6c5b2f609e5c6ba13d3241b5c017f9997cab5cebc0572c2dd7f34da\",\"dweb:/ipfs/QmQr7sWaqW27XhyCVGx4wED1rMmFKGhSHPjSGVLz45dbeD\"]},\"lib/solady/src/utils/Base64.sol\":{\"keccak256\":\"0x07dcf983a86bc961e4cc0b57a2cfc3e46b20a50fed9b2092c7497e5fe3715a93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65c6c0a8a29cfc5b757abe84635c83e62a177a48c2ad0be24de6b0fba1a60ea2\",\"dweb:/ipfs/QmYuYwxHiBoUt6vaLTLbs2bZamRzqrTfA4BsNZ1TApTfrm\"]},\"lib/solady/src/utils/LibClone.sol\":{\"keccak256\":\"0x6ba469171b7d79d0e2bb3999210353e89dced6c85ac2c06bb58e2ef09ac48f26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://778a87e2973196e0f2f7b716cd28646a901290998f73c053c984fac052ca1620\",\"dweb:/ipfs/QmcYg5fQyCHw7sZHmdHZtGwKEguthWjNd87oU9DWHtCLsN\"]},\"lib/solady/src/utils/LibString.sol\":{\"keccak256\":\"0x4fc555fe1ceb29162b143ce1564ac936099071c853065efc289f6c30c712f125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9d3fdb7c03ed63323ae27e0176e080f27ca453f91bacb73f8d59b09da94cf7\",\"dweb:/ipfs/Qmcix9BzxupvYYLX3t8wf4Wsf1yp1b2q65CJb5agaFPtQ9\"]},\"lib/solady/src/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x7a7acc59723ed291f24d9a2ed019109c8be69f32701f35f8a61dc7fff6652379\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bab15a03dfca0567d7472933ee4e776fc21f9dfb6c4dbc06934fa75eceeff5e\",\"dweb:/ipfs/QmPUuKsRwpZXz15DpsoJMMPN9DtZiRvMfwjqJScxkppNsP\"]},\"lib/solady/src/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x0f4da34fe99caf063e6d3a09d0a4ce783fdcd955b475d46ba00be48f7fda348f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f8e8e92e7b781a8b0d3fdb720915964f46354395a806e87aa7d0a355a024a83\",\"dweb:/ipfs/QmdDmVgUstEYpVQn97jDdaACoqoqiEvcXjxtEhC8b6vmFC\"]},\"lib/webauthn-sol/src/WebAuthn.sol\":{\"keccak256\":\"0x2441d1c9cd3ed38f53ad8920db4ccf1dfc4e081f91138432fd1a91f9a94d46c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6613c0ab26c03824b4db51d5d00a7fd665599ec1c4a20cc559c8fa19e885294\",\"dweb:/ipfs/QmaWPGM1ogH4nrxFYReaBoB7kA7AWy176kmLXFAZVEDTQp\"]},\"src/CoinbaseSmartWallet.sol\":{\"keccak256\":\"0x708d7985699d68185e35ca3359b8d973419725d9127d162b78e1131c000e92ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://95b890219a1067a9e43df42b5f5bb6e0d1748ade87d9714d204c4720b6febcd2\",\"dweb:/ipfs/QmPFAuxYAGhxdZqfCNbpa3Vc587fMBhFLQA1BtmCppVhYf\"]},\"src/CoinbaseSmartWalletFactory.sol\":{\"keccak256\":\"0xacedcda501e79257e7c73808e92c582be98f5648e7aa077da1c87c0dce3ca075\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://900f4c4fe156d307d1f6676d82779b7b821f96bd5600115e5d533c77f443dfee\",\"dweb:/ipfs/QmUM9GCLESCcZkJbLvFuDTrcedWMfZvgLSmpspgbqVErtw\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x670872019ca67ef9156017aaf0ec80c6be75258f3bcd6a21df270c45f8af3871\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fad973b58b631f72cf53f54caf736f8100942d51c632f1c5c486d5b7228d4593\",\"dweb:/ipfs/QmaxTVxCvEwe1cBoxw3TNtssBaFejnjcACdymZrYhgEeSj\"]},\"src/MultiOwnable.sol\":{\"keccak256\":\"0x9c0a57f9fd802e3ff10383257b10bea2637a01bda9986fc18a06246155fdbe6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0efe6691756a2bb0357caa1bdbd0dcc08407cd30ded5efee3fdffa4f99885c8a\",\"dweb:/ipfs/QmVz9YQaUsH4NLv47JDcVQCmUWstrgzwTTEGv7cNQTjXyg\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.23+commit.f704f362" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "erc4337", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [], + "type": "error", + "name": "OwnerRequired" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "createAccount", + "outputs": [ + { + "internalType": "contract CoinbaseSmartWallet", + "name": "account", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getAddress", + "outputs": [ + { + "internalType": "address", + "name": "predicted", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "initCodeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "result", + "type": "bytes32" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "constructor": { + "params": { + "erc4337": "The address of the ERC-4337 implementation used to deploy new cloned accounts." + } + }, + "createAccount(bytes[],uint256)": { + "details": "The account is deployed behind a minimal ERC1967 proxy whose implementation points to the registered ERC-4337 `implementation`.The `owners` parameter is a set of addresses and/or public keys depending on the signature scheme used (respectively ERC-1271 or Webauthn authentication).", + "params": { + "nonce": "The nonce of the account, allowing multiple accounts with the same set of initial owners to exist.", + "owners": "The initial set of owners that should be able to control the account." + } + }, + "getAddress(bytes[],uint256)": { + "params": { + "nonce": "The nonce provided to `createAccount()`.", + "owners": "The initial set of owners provided to `createAccount()`." + }, + "returns": { + "predicted": "The predicted account deployment address." + } + }, + "initCodeHash()": { + "returns": { + "result": "The initialization code hash." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "constructor": { + "notice": "Factory constructor used to initialize the implementation address to use for future ERC-4337 account deployments." + }, + "createAccount(bytes[],uint256)": { + "notice": "Deploys an ERC-4337 account and returns its deterministic address." + }, + "getAddress(bytes[],uint256)": { + "notice": "Returns the deterministic address of the account created via `createAccount()`." + }, + "implementation()": { + "notice": "Address of the ERC-4337 implementation used as implementation for new accounts." + }, + "initCodeHash()": { + "notice": "Returns the initialization code hash of the account (a minimal ERC1967 proxy)." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@openzeppelin/contracts/=lib/p256-verifier/lib/openzeppelin-contracts/contracts/", + "FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/", + "account-abstraction/=lib/account-abstraction/contracts/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/p256-verifier/lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/p256-verifier/lib/openzeppelin-contracts/", + "p256-verifier/=lib/p256-verifier/", + "solady/=lib/solady/src/", + "webauthn-sol/=lib/webauthn-sol/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/CoinbaseSmartWalletFactory.sol": "CoinbaseSmartWalletFactory" + }, + "evmVersion": "paris", + "libraries": {} + }, + "sources": { + "lib/FreshCryptoLib/solidity/src/FCL_ecdsa.sol": { + "keccak256": "0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2", + "urls": [ + "bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d", + "dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe" + ], + "license": "MIT" + }, + "lib/FreshCryptoLib/solidity/src/FCL_elliptic.sol": { + "keccak256": "0x097f137d52dc9bd97d6fee7426b2d6d809ad3684767df288d58ffd76f7924e5b", + "urls": [ + "bzz-raw://30ffae5b57f2e0fcabcc1642eb7c60e1b4369151d58a78034bb372187fdffa8e", + "dweb:/ipfs/Qma8RXPxaV52ZMuR5HaoFWqMGSAo7g2u3qG6poguDbFsL4" + ], + "license": "MIT" + }, + "lib/account-abstraction/contracts/core/Helpers.sol": { + "keccak256": "0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a", + "urls": [ + "bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746", + "dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU" + ], + "license": "GPL-3.0" + }, + "lib/account-abstraction/contracts/interfaces/UserOperation.sol": { + "keccak256": "0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c", + "urls": [ + "bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c", + "dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN" + ], + "license": "GPL-3.0" + }, + "lib/solady/src/accounts/Receiver.sol": { + "keccak256": "0x9bf48dca73f428c20a0878a5a97d2d66626f835b077c012fd5b1ba6389feb2d0", + "urls": [ + "bzz-raw://15cb4c81e6c5b2f609e5c6ba13d3241b5c017f9997cab5cebc0572c2dd7f34da", + "dweb:/ipfs/QmQr7sWaqW27XhyCVGx4wED1rMmFKGhSHPjSGVLz45dbeD" + ], + "license": "MIT" + }, + "lib/solady/src/utils/Base64.sol": { + "keccak256": "0x07dcf983a86bc961e4cc0b57a2cfc3e46b20a50fed9b2092c7497e5fe3715a93", + "urls": [ + "bzz-raw://65c6c0a8a29cfc5b757abe84635c83e62a177a48c2ad0be24de6b0fba1a60ea2", + "dweb:/ipfs/QmYuYwxHiBoUt6vaLTLbs2bZamRzqrTfA4BsNZ1TApTfrm" + ], + "license": "MIT" + }, + "lib/solady/src/utils/LibClone.sol": { + "keccak256": "0x6ba469171b7d79d0e2bb3999210353e89dced6c85ac2c06bb58e2ef09ac48f26", + "urls": [ + "bzz-raw://778a87e2973196e0f2f7b716cd28646a901290998f73c053c984fac052ca1620", + "dweb:/ipfs/QmcYg5fQyCHw7sZHmdHZtGwKEguthWjNd87oU9DWHtCLsN" + ], + "license": "MIT" + }, + "lib/solady/src/utils/LibString.sol": { + "keccak256": "0x4fc555fe1ceb29162b143ce1564ac936099071c853065efc289f6c30c712f125", + "urls": [ + "bzz-raw://8f9d3fdb7c03ed63323ae27e0176e080f27ca453f91bacb73f8d59b09da94cf7", + "dweb:/ipfs/Qmcix9BzxupvYYLX3t8wf4Wsf1yp1b2q65CJb5agaFPtQ9" + ], + "license": "MIT" + }, + "lib/solady/src/utils/SignatureCheckerLib.sol": { + "keccak256": "0x7a7acc59723ed291f24d9a2ed019109c8be69f32701f35f8a61dc7fff6652379", + "urls": [ + "bzz-raw://7bab15a03dfca0567d7472933ee4e776fc21f9dfb6c4dbc06934fa75eceeff5e", + "dweb:/ipfs/QmPUuKsRwpZXz15DpsoJMMPN9DtZiRvMfwjqJScxkppNsP" + ], + "license": "MIT" + }, + "lib/solady/src/utils/UUPSUpgradeable.sol": { + "keccak256": "0x0f4da34fe99caf063e6d3a09d0a4ce783fdcd955b475d46ba00be48f7fda348f", + "urls": [ + "bzz-raw://5f8e8e92e7b781a8b0d3fdb720915964f46354395a806e87aa7d0a355a024a83", + "dweb:/ipfs/QmdDmVgUstEYpVQn97jDdaACoqoqiEvcXjxtEhC8b6vmFC" + ], + "license": "MIT" + }, + "lib/webauthn-sol/src/WebAuthn.sol": { + "keccak256": "0x2441d1c9cd3ed38f53ad8920db4ccf1dfc4e081f91138432fd1a91f9a94d46c7", + "urls": [ + "bzz-raw://f6613c0ab26c03824b4db51d5d00a7fd665599ec1c4a20cc559c8fa19e885294", + "dweb:/ipfs/QmaWPGM1ogH4nrxFYReaBoB7kA7AWy176kmLXFAZVEDTQp" + ], + "license": "MIT" + }, + "src/CoinbaseSmartWallet.sol": { + "keccak256": "0x708d7985699d68185e35ca3359b8d973419725d9127d162b78e1131c000e92ec", + "urls": [ + "bzz-raw://95b890219a1067a9e43df42b5f5bb6e0d1748ade87d9714d204c4720b6febcd2", + "dweb:/ipfs/QmPFAuxYAGhxdZqfCNbpa3Vc587fMBhFLQA1BtmCppVhYf" + ], + "license": "MIT" + }, + "src/CoinbaseSmartWalletFactory.sol": { + "keccak256": "0xacedcda501e79257e7c73808e92c582be98f5648e7aa077da1c87c0dce3ca075", + "urls": [ + "bzz-raw://900f4c4fe156d307d1f6676d82779b7b821f96bd5600115e5d533c77f443dfee", + "dweb:/ipfs/QmUM9GCLESCcZkJbLvFuDTrcedWMfZvgLSmpspgbqVErtw" + ], + "license": "MIT" + }, + "src/ERC1271.sol": { + "keccak256": "0x670872019ca67ef9156017aaf0ec80c6be75258f3bcd6a21df270c45f8af3871", + "urls": [ + "bzz-raw://fad973b58b631f72cf53f54caf736f8100942d51c632f1c5c486d5b7228d4593", + "dweb:/ipfs/QmaxTVxCvEwe1cBoxw3TNtssBaFejnjcACdymZrYhgEeSj" + ], + "license": "MIT" + }, + "src/MultiOwnable.sol": { + "keccak256": "0x9c0a57f9fd802e3ff10383257b10bea2637a01bda9986fc18a06246155fdbe6e", + "urls": [ + "bzz-raw://0efe6691756a2bb0357caa1bdbd0dcc08407cd30ded5efee3fdffa4f99885c8a", + "dweb:/ipfs/QmVz9YQaUsH4NLv47JDcVQCmUWstrgzwTTEGv7cNQTjXyg" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/CoinbaseSmartWalletFactory.sol", + "id": 50629, + "exportedSymbols": { + "CoinbaseSmartWallet": [ + 50482 + ], + "CoinbaseSmartWalletFactory": [ + 50628 + ], + "LibClone": [ + 48580 + ] + }, + "nodeType": "SourceUnit", + "src": "32:3617:41", + "nodes": [ + { + "id": 50484, + "nodeType": "PragmaDirective", + "src": "32:23:41", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ] + }, + { + "id": 50486, + "nodeType": "ImportDirective", + "src": "57:51:41", + "nodes": [], + "absolutePath": "lib/solady/src/utils/LibClone.sol", + "file": "solady/utils/LibClone.sol", + "nameLocation": "-1:-1:-1", + "scope": 50629, + "sourceUnit": 48581, + "symbolAliases": [ + { + "foreign": { + "id": 50485, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48580, + "src": "65:8:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 50488, + "nodeType": "ImportDirective", + "src": "109:62:41", + "nodes": [], + "absolutePath": "src/CoinbaseSmartWallet.sol", + "file": "./CoinbaseSmartWallet.sol", + "nameLocation": "-1:-1:-1", + "scope": 50629, + "sourceUnit": 50483, + "symbolAliases": [ + { + "foreign": { + "id": 50487, + "name": "CoinbaseSmartWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50482, + "src": "117:19:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 50628, + "nodeType": "ContractDefinition", + "src": "461:3187:41", + "nodes": [ + { + "id": 50492, + "nodeType": "VariableDeclaration", + "src": "599:39:41", + "nodes": [], + "constant": false, + "documentation": { + "id": 50490, + "nodeType": "StructuredDocumentation", + "src": "503:91:41", + "text": "@notice Address of the ERC-4337 implementation used as implementation for new accounts." + }, + "functionSelector": "5c60da1b", + "mutability": "immutable", + "name": "implementation", + "nameLocation": "624:14:41", + "scope": 50628, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "id": 50495, + "nodeType": "ErrorDefinition", + "src": "745:22:41", + "nodes": [], + "documentation": { + "id": 50493, + "nodeType": "StructuredDocumentation", + "src": "645:95:41", + "text": "@notice Thrown when trying to create a new `CoinbaseSmartWallet` account without any owner." + }, + "errorSelector": "3c776be1", + "name": "OwnerRequired", + "nameLocation": "751:13:41", + "parameters": { + "id": 50494, + "nodeType": "ParameterList", + "parameters": [], + "src": "764:2:41" + } + }, + { + "id": 50506, + "nodeType": "FunctionDefinition", + "src": "1029:78:41", + "nodes": [], + "body": { + "id": 50505, + "nodeType": "Block", + "src": "1066:41:41", + "nodes": [], + "statements": [ + { + "expression": { + "id": 50503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50501, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50492, + "src": "1076:14:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 50502, + "name": "erc4337", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50498, + "src": "1093:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1076:24:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 50504, + "nodeType": "ExpressionStatement", + "src": "1076:24:41" + } + ] + }, + "documentation": { + "id": 50496, + "nodeType": "StructuredDocumentation", + "src": "773:251:41", + "text": "@notice Factory constructor used to initialize the implementation address to use for future\n ERC-4337 account deployments.\n @param erc4337 The address of the ERC-4337 implementation used to deploy new cloned accounts." + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 50499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50498, + "mutability": "mutable", + "name": "erc4337", + "nameLocation": "1049:7:41", + "nodeType": "VariableDeclaration", + "scope": 50506, + "src": "1041:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1041:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1040:17:41" + }, + "returnParameters": { + "id": 50500, + "nodeType": "ParameterList", + "parameters": [], + "src": "1066:0:41" + }, + "scope": 50628, + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "id": 50563, + "nodeType": "FunctionDefinition", + "src": "1782:562:41", + "nodes": [], + "body": { + "id": 50562, + "nodeType": "Block", + "src": "1942:402:41", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 50521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 50518, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50510, + "src": "1956:6:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 50519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1963:6:41", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1956:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 50520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1973:1:41", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1956:18:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50526, + "nodeType": "IfStatement", + "src": "1952:71:41", + "trueBody": { + "id": 50525, + "nodeType": "Block", + "src": "1976:47:41", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 50522, + "name": "OwnerRequired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50495, + "src": "1997:13:41", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 50523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1997:15:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50524, + "nodeType": "RevertStatement", + "src": "1990:22:41" + } + ] + } + }, + { + "assignments": [ + 50528, + 50530 + ], + "declarations": [ + { + "constant": false, + "id": 50528, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "2039:15:41", + "nodeType": "VariableDeclaration", + "scope": 50562, + "src": "2034:20:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 50527, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2034:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50530, + "mutability": "mutable", + "name": "accountAddress", + "nameLocation": "2064:14:41", + "nodeType": "VariableDeclaration", + "scope": 50562, + "src": "2056:22:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50529, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2056:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 50541, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 50533, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2130:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 50534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2134:5:41", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "2130:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 50535, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50492, + "src": "2141:14:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 50537, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50510, + "src": "2166:6:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 50538, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50512, + "src": "2174:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 50536, + "name": "_getSalt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50627, + "src": "2157:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata[] calldata,uint256) pure returns (bytes32)" + } + }, + "id": 50539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2157:23:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 50531, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48580, + "src": "2094:8:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$48580_$", + "typeString": "type(library LibClone)" + } + }, + "id": 50532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2103:26:41", + "memberName": "createDeterministicERC1967", + "nodeType": "MemberAccess", + "referencedDeclaration": 48365, + "src": "2094:35:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 50540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2094:87:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2033:148:41" + }, + { + "expression": { + "id": 50549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50542, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50516, + "src": "2192:7:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 50546, + "name": "accountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50530, + "src": "2230:14:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 50545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2222:8:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 50544, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2222:8:41", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 50547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2222:23:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 50543, + "name": "CoinbaseSmartWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50482, + "src": "2202:19:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_CoinbaseSmartWallet_$50482_$", + "typeString": "type(contract CoinbaseSmartWallet)" + } + }, + "id": 50548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2202:44:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + }, + "src": "2192:54:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + }, + "id": 50550, + "nodeType": "ExpressionStatement", + "src": "2192:54:41" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 50553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 50551, + "name": "alreadyDeployed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50528, + "src": "2261:15:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "66616c7365", + "id": 50552, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2280:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2261:24:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50561, + "nodeType": "IfStatement", + "src": "2257:81:41", + "trueBody": { + "id": 50560, + "nodeType": "Block", + "src": "2287:51:41", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 50557, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50510, + "src": "2320:6:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "id": 50554, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50516, + "src": "2301:7:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + }, + "id": 50556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2309:10:41", + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 50059, + "src": "2301:18:41", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory) payable external" + } + }, + "id": 50558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2301:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50559, + "nodeType": "ExpressionStatement", + "src": "2301:26:41" + } + ] + } + } + ] + }, + "documentation": { + "id": 50507, + "nodeType": "StructuredDocumentation", + "src": "1113:664:41", + "text": "@notice Deploys an ERC-4337 account and returns its deterministic address.\n @dev The account is deployed behind a minimal ERC1967 proxy whose implementation points to\n the registered ERC-4337 `implementation`.\n @dev The `owners` parameter is a set of addresses and/or public keys depending on the signature\n scheme used (respectively ERC-1271 or Webauthn authentication).\n @param owners The initial set of owners that should be able to control the account.\n @param nonce The nonce of the account, allowing multiple accounts with the same set of initial\n owners to exist." + }, + "functionSelector": "3ffba36f", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createAccount", + "nameLocation": "1791:13:41", + "parameters": { + "id": 50513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50510, + "mutability": "mutable", + "name": "owners", + "nameLocation": "1822:6:41", + "nodeType": "VariableDeclaration", + "scope": 50563, + "src": "1805:23:41", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 50508, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1805:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 50509, + "nodeType": "ArrayTypeName", + "src": "1805:7:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50512, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "1838:5:41", + "nodeType": "VariableDeclaration", + "scope": 50563, + "src": "1830:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1830:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1804:40:41" + }, + "returnParameters": { + "id": 50517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50516, + "mutability": "mutable", + "name": "account", + "nameLocation": "1929:7:41", + "nodeType": "VariableDeclaration", + "scope": 50563, + "src": "1909:27:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + }, + "typeName": { + "id": 50515, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 50514, + "name": "CoinbaseSmartWallet", + "nameLocations": [ + "1909:19:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 50482, + "src": "1909:19:41" + }, + "referencedDeclaration": 50482, + "src": "1909:19:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + }, + "visibility": "internal" + } + ], + "src": "1908:29:41" + }, + "scope": 50628, + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "id": 50591, + "nodeType": "FunctionDefinition", + "src": "2672:223:41", + "nodes": [], + "body": { + "id": 50590, + "nodeType": "Block", + "src": "2774:121:41", + "nodes": [], + "statements": [ + { + "expression": { + "id": 50588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50574, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50572, + "src": "2784:9:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 50577, + "name": "initCodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50605, + "src": "2833:12:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 50578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2833:14:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 50580, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50567, + "src": "2858:6:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 50581, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50569, + "src": "2866:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 50579, + "name": "_getSalt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50627, + "src": "2849:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata[] calldata,uint256) pure returns (bytes32)" + } + }, + "id": 50582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2849:23:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 50585, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2882:4:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWalletFactory_$50628", + "typeString": "contract CoinbaseSmartWalletFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CoinbaseSmartWalletFactory_$50628", + "typeString": "contract CoinbaseSmartWalletFactory" + } + ], + "id": 50584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2874:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 50583, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2874:7:41", + "typeDescriptions": {} + } + }, + "id": 50586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2874:13:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 50575, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48580, + "src": "2796:8:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$48580_$", + "typeString": "type(library LibClone)" + } + }, + "id": 50576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2805:27:41", + "memberName": "predictDeterministicAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 48569, + "src": "2796:36:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 50587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2796:92:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2784:104:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 50589, + "nodeType": "ExpressionStatement", + "src": "2784:104:41" + } + ] + }, + "documentation": { + "id": 50564, + "nodeType": "StructuredDocumentation", + "src": "2350:317:41", + "text": "@notice Returns the deterministic address of the account created via `createAccount()`.\n @param owners The initial set of owners provided to `createAccount()`.\n @param nonce The nonce provided to `createAccount()`.\n @return predicted The predicted account deployment address." + }, + "functionSelector": "250b1b41", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddress", + "nameLocation": "2681:10:41", + "parameters": { + "id": 50570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50567, + "mutability": "mutable", + "name": "owners", + "nameLocation": "2709:6:41", + "nodeType": "VariableDeclaration", + "scope": 50591, + "src": "2692:23:41", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 50565, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2692:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 50566, + "nodeType": "ArrayTypeName", + "src": "2692:7:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50569, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "2725:5:41", + "nodeType": "VariableDeclaration", + "scope": 50591, + "src": "2717:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50568, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2717:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2691:40:41" + }, + "returnParameters": { + "id": 50573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50572, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "2763:9:41", + "nodeType": "VariableDeclaration", + "scope": 50591, + "src": "2755:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2755:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2754:19:41" + }, + "scope": 50628, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 50605, + "nodeType": "FunctionDefinition", + "src": "3057:139:41", + "nodes": [], + "body": { + "id": 50604, + "nodeType": "Block", + "src": "3126:70:41", + "nodes": [], + "statements": [ + { + "expression": { + "id": 50602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50597, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50595, + "src": "3136:6:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 50600, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50492, + "src": "3174:14:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 50598, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48580, + "src": "3145:8:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$48580_$", + "typeString": "type(library LibClone)" + } + }, + "id": 50599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3154:19:41", + "memberName": "initCodeHashERC1967", + "nodeType": "MemberAccess", + "referencedDeclaration": 48385, + "src": "3145:28:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 50601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3145:44:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3136:53:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 50603, + "nodeType": "ExpressionStatement", + "src": "3136:53:41" + } + ] + }, + "documentation": { + "id": 50592, + "nodeType": "StructuredDocumentation", + "src": "2901:151:41", + "text": "@notice Returns the initialization code hash of the account (a minimal ERC1967 proxy).\n @return result The initialization code hash." + }, + "functionSelector": "db4c545e", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash", + "nameLocation": "3066:12:41", + "parameters": { + "id": 50593, + "nodeType": "ParameterList", + "parameters": [], + "src": "3078:2:41" + }, + "returnParameters": { + "id": 50596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50595, + "mutability": "mutable", + "name": "result", + "nameLocation": "3118:6:41", + "nodeType": "VariableDeclaration", + "scope": 50605, + "src": "3110:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 50594, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3110:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3109:16:41" + }, + "scope": 50628, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 50627, + "nodeType": "FunctionDefinition", + "src": "3491:155:41", + "nodes": [], + "body": { + "id": 50626, + "nodeType": "Block", + "src": "3586:60:41", + "nodes": [], + "statements": [ + { + "expression": { + "id": 50624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50616, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50614, + "src": "3596:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 50620, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50609, + "src": "3624:6:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 50621, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50611, + "src": "3632:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 50618, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3613:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 50619, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3617:6:41", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "3613:10:41", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 50622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3613:25:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 50617, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3603:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 50623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3603:36:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3596:43:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 50625, + "nodeType": "ExpressionStatement", + "src": "3596:43:41" + } + ] + }, + "documentation": { + "id": 50606, + "nodeType": "StructuredDocumentation", + "src": "3202:284:41", + "text": "@notice Returns the deterministic salt for a specific set of `owners` and `nonce`.\n @param owners The initial set of owners provided to `createAccount()`.\n @param nonce The nonce provided to `createAccount()`.\n @return salt The computed salt." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getSalt", + "nameLocation": "3500:8:41", + "parameters": { + "id": 50612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50609, + "mutability": "mutable", + "name": "owners", + "nameLocation": "3526:6:41", + "nodeType": "VariableDeclaration", + "scope": 50627, + "src": "3509:23:41", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 50607, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3509:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 50608, + "nodeType": "ArrayTypeName", + "src": "3509:7:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50611, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "3542:5:41", + "nodeType": "VariableDeclaration", + "scope": 50627, + "src": "3534:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50610, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3534:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3508:40:41" + }, + "returnParameters": { + "id": 50615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50614, + "mutability": "mutable", + "name": "salt", + "nameLocation": "3580:4:41", + "nodeType": "VariableDeclaration", + "scope": 50627, + "src": "3572:12:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 50613, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3572:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3571:14:41" + }, + "scope": 50628, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [], + "canonicalName": "CoinbaseSmartWalletFactory", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 50489, + "nodeType": "StructuredDocumentation", + "src": "173:288:41", + "text": "@title Coinbase Smart Wallet Factory\n @notice CoinbaseSmartWallet factory, based on Solady's ERC4337Factory.\n @author Coinbase (https://github.com/coinbase/smart-wallet)\n @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 50628 + ], + "name": "CoinbaseSmartWalletFactory", + "nameLocation": "470:26:41", + "scope": 50629, + "usedErrors": [ + 50495 + ], + "usedEvents": [] + } + ], + "license": "MIT" + }, + "id": 41 +} \ No newline at end of file diff --git a/xmtp_id/artifact/CoinbaseSmartWalletFactory.json b/xmtp_id/artifact/CoinbaseSmartWalletFactory.json new file mode 100644 index 000000000..ea2806a34 --- /dev/null +++ b/xmtp_id/artifact/CoinbaseSmartWalletFactory.json @@ -0,0 +1,2278 @@ +{ + "abi": [ + { + "type": "constructor", + "inputs": [ + { + "name": "erc4337", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "createAccount", + "inputs": [ + { + "name": "owners", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "account", + "type": "address", + "internalType": "contract CoinbaseSmartWallet" + } + ], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "getAddress", + "inputs": [ + { + "name": "owners", + "type": "bytes[]", + "internalType": "bytes[]" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "predicted", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "implementation", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initCodeHash", + "inputs": [], + "outputs": [ + { + "name": "result", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "error", + "name": "OwnerRequired", + "inputs": [] + } + ], + "bytecode": { + "object": "0x60a06040526040516105eb3803806105eb83398101604081905261002291610033565b6001600160a01b0316608052610063565b60006020828403121561004557600080fd5b81516001600160a01b038116811461005c57600080fd5b9392505050565b60805161056061008b6000396000818160a60152818161013c015261023b01526105606000f3fe60806040526004361061003f5760003560e01c8063250b1b41146100445780633ffba36f146100815780635c60da1b14610094578063db4c545e146100c8575b600080fd5b34801561005057600080fd5b5061006461005f3660046103b7565b6100eb565b6040516001600160a01b0390911681526020015b60405180910390f35b61006461008f3660046103b7565b610111565b3480156100a057600080fd5b506100647f000000000000000000000000000000000000000000000000000000000000000081565b3480156100d457600080fd5b506100dd6101e6565b604051908152602001610078565b60006101096100f86101e6565b61010386868661027b565b306102b1565b949350505050565b600082810361013357604051633c776be160e01b815260040160405180910390fd5b60008061016b347f000000000000000000000000000000000000000000000000000000000000000061016689898961027b565b6102d3565b935091508290508115156000036101dd57604051633796f38760e11b81526001600160a01b03841690636f2de70e906101aa90899089906004016104f2565b600060405180830381600087803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b505050505b50509392505050565b604080517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f360609081527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207683526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212091909252600090915290565b600083838360405160200161029293929190610506565b6040516020818303038152906040528051906020012090509392505050565b600060ff60005350603592835260601b60015260155260556000908120915290565b6000806040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207660405261600960205284601e5268603d3d8160223d3973600a52605f60212060358201523060581b815260ff8153836015820152605581209150813b61037f5783605f602188f591508161037a5763301164256000526004601cfd5b6103a5565b6001925085156103a55760003860003889865af16103a55763b12d13eb6000526004601cfd5b80604052506000606052935093915050565b6000806000604084860312156103cc57600080fd5b833567ffffffffffffffff808211156103e457600080fd5b818601915086601f8301126103f857600080fd5b81358181111561040757600080fd5b8760208260051b850101111561041c57600080fd5b6020928301989097509590910135949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b878110156104e557848303601f19018952813536889003601e1901811261049b57600080fd5b8701848101903567ffffffffffffffff8111156104b757600080fd5b8036038213156104c657600080fd5b6104d1858284610432565b9a86019a9450505090830190600101610475565b5090979650505050505050565b60208152600061010960208301848661045b565b60408152600061051a60408301858761045b565b905082602083015294935050505056fea264697066735822122098bae64e62859ac8d5ed01c4927e5fce406f632b517c86f038f06fef8355dba164736f6c63430008170033", + "sourceMap": "461:3187:41:-:0;;;1029:78;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1076:24:41;;;461:3187;;14:290:69;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:69;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:69:o;:::-;461:3187:41;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x60806040526004361061003f5760003560e01c8063250b1b41146100445780633ffba36f146100815780635c60da1b14610094578063db4c545e146100c8575b600080fd5b34801561005057600080fd5b5061006461005f3660046103b7565b6100eb565b6040516001600160a01b0390911681526020015b60405180910390f35b61006461008f3660046103b7565b610111565b3480156100a057600080fd5b506100647f000000000000000000000000000000000000000000000000000000000000000081565b3480156100d457600080fd5b506100dd6101e6565b604051908152602001610078565b60006101096100f86101e6565b61010386868661027b565b306102b1565b949350505050565b600082810361013357604051633c776be160e01b815260040160405180910390fd5b60008061016b347f000000000000000000000000000000000000000000000000000000000000000061016689898961027b565b6102d3565b935091508290508115156000036101dd57604051633796f38760e11b81526001600160a01b03841690636f2de70e906101aa90899089906004016104f2565b600060405180830381600087803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b505050505b50509392505050565b604080517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f360609081527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207683526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212091909252600090915290565b600083838360405160200161029293929190610506565b6040516020818303038152906040528051906020012090509392505050565b600060ff60005350603592835260601b60015260155260556000908120915290565b6000806040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207660405261600960205284601e5268603d3d8160223d3973600a52605f60212060358201523060581b815260ff8153836015820152605581209150813b61037f5783605f602188f591508161037a5763301164256000526004601cfd5b6103a5565b6001925085156103a55760003860003889865af16103a55763b12d13eb6000526004601cfd5b80604052506000606052935093915050565b6000806000604084860312156103cc57600080fd5b833567ffffffffffffffff808211156103e457600080fd5b818601915086601f8301126103f857600080fd5b81358181111561040757600080fd5b8760208260051b850101111561041c57600080fd5b6020928301989097509590910135949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b878110156104e557848303601f19018952813536889003601e1901811261049b57600080fd5b8701848101903567ffffffffffffffff8111156104b757600080fd5b8036038213156104c657600080fd5b6104d1858284610432565b9a86019a9450505090830190600101610475565b5090979650505050505050565b60208152600061010960208301848661045b565b60408152600061051a60408301858761045b565b905082602083015294935050505056fea264697066735822122098bae64e62859ac8d5ed01c4927e5fce406f632b517c86f038f06fef8355dba164736f6c63430008170033", + "sourceMap": "461:3187:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2672:223;;;;;;;;;;-1:-1:-1;2672:223:41;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;883:32:69;;;865:51;;853:2;838:18;2672:223:41;;;;;;;;1782:562;;;;;;:::i;:::-;;:::i;599:39::-;;;;;;;;;;;;;;;3057:139;;;;;;;;;;;;;:::i;:::-;;;1318:25:69;;;1306:2;1291:18;3057:139:41;1172:177:69;2672:223:41;2755:17;2796:92;2833:14;:12;:14::i;:::-;2849:23;2858:6;;2866:5;2849:8;:23::i;:::-;2882:4;2796:36;:92::i;:::-;2784:104;2672:223;-1:-1:-1;;;;2672:223:41:o;1782:562::-;1909:27;1956:18;;;1952:71;;1997:15;;-1:-1:-1;;;1997:15:41;;;;;;;;;;;1952:71;2034:20;2056:22;2094:87;2130:9;2141:14;2157:23;2166:6;;2174:5;2157:8;:23::i;:::-;2094:35;:87::i;:::-;2033:148;-1:-1:-1;2033:148:41;-1:-1:-1;2033:148:41;;-1:-1:-1;2261:24:41;;;2280:5;2261:24;2257:81;;2301:26;;-1:-1:-1;;;2301:26:41;;-1:-1:-1;;;;;2301:18:41;;;;;:26;;2320:6;;;;2301:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2257:81;1942:402;;1782:562;;;;;:::o;3057:139::-;54044:4:33;54038:11;;54109:66;54103:4;54096:80;;;54202:66;54189:80;;54295:6;-1:-1:-1;54282:20:33;3174:14:41;54322:4:33;54315:28;54369:20;54363:4;54356:34;54427:4;54421;54411:21;54445:15;;;;-1:-1:-1;54509:15:33;;;54411:21;3057:139:41:o;3491:155::-;3572:12;3624:6;;3632:5;3613:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3603:36;;;;;;3596:43;;3491:155;;;;;:::o;71932:578:33:-;72062:17;72227:4;72221;72213:19;-1:-1:-1;72273:4:33;72266:18;;;72314:2;72310:17;72304:4;72297:31;72348:4;72341:18;72401:4;72395;72385:21;;;72419:15;;72385:21;71932:578::o;51105:1725::-;51228:20;51250:16;51363:4;51357:11;51428:66;51422:4;51415:80;51521:66;51515:4;51508:80;51614:6;51608:4;51601:20;51647:14;51641:4;51634:28;51688:20;51682:4;51675:34;51811:4;51805;51795:21;51788:4;51785:1;51781:12;51774:43;51848:9;51844:2;51840:18;51837:1;51830:29;51883:4;51880:1;51872:16;51943:4;51936;51933:1;51929:12;51922:26;51986:4;51983:1;51973:18;51961:30;;52056:8;52044:21;52034:324;;52128:4;52122;52116;52109:5;52101:32;52089:44;;52164:8;52154:160;;52213:10;52207:4;52200:24;52287:4;52281;52274:18;52154:160;52335:5;;52034:324;52394:1;52375:20;;52422:5;52412:26;52431:5;52412:26;52524:4;52512:10;52506:4;52494:10;52487:5;52477:8;52470:5;52465:64;52455:205;;52566:10;52560:4;52553:24;52637:4;52631;52624:18;52455:205;52722:1;52716:4;52709:15;;52786:1;52780:4;52773:15;51105:1725;;;;;;:::o;14:700:69:-;120:6;128;136;189:2;177:9;168:7;164:23;160:32;157:52;;;205:1;202;195:12;157:52;245:9;232:23;274:18;315:2;307:6;304:14;301:34;;;331:1;328;321:12;301:34;369:6;358:9;354:22;344:32;;414:7;407:4;403:2;399:13;395:27;385:55;;436:1;433;426:12;385:55;476:2;463:16;502:2;494:6;491:14;488:34;;;518:1;515;508:12;488:34;573:7;566:4;556:6;553:1;549:14;545:2;541:23;537:34;534:47;531:67;;;594:1;591;584:12;531:67;625:4;617:13;;;;649:6;;-1:-1:-1;687:20:69;;;;674:34;;14:700;-1:-1:-1;;;;14:700:69:o;1354:266::-;1442:6;1437:3;1430:19;1494:6;1487:5;1480:4;1475:3;1471:14;1458:43;-1:-1:-1;1546:1:69;1521:16;;;1539:4;1517:27;;;1510:38;;;;1602:2;1581:15;;;-1:-1:-1;;1577:29:69;1568:39;;;1564:50;;1354:266::o;1625:1047::-;1702:3;1733;1757:6;1752:3;1745:19;1783:4;1812;1807:3;1803:14;1796:21;;1870:4;1860:6;1857:1;1853:14;1846:5;1842:26;1838:37;1898:5;1921:1;1931:715;1945:6;1942:1;1939:13;1931:715;;;2010:16;;;-1:-1:-1;;2006:30:69;1994:43;;2076:20;;2151:14;2147:26;;;-1:-1:-1;;2143:40:69;2119:65;;2109:93;;2198:1;2195;2188:12;2109:93;2230:30;;2338:16;;;;2289:21;2383:18;2370:32;;2367:52;;;2415:1;2412;2405:12;2367:52;2468:8;2452:14;2448:29;2439:7;2435:43;2432:63;;;2491:1;2488;2481:12;2432:63;2516:50;2561:4;2551:8;2542:7;2516:50;:::i;:::-;2624:12;;;;2508:58;-1:-1:-1;;;2589:15:69;;;;1967:1;1960:9;1931:715;;;-1:-1:-1;2662:4:69;;1625:1047;-1:-1:-1;;;;;;;1625:1047:69:o;2677:315::-;2886:2;2875:9;2868:21;2849:4;2906:80;2982:2;2971:9;2967:18;2959:6;2951;2906:80;:::i;2997:386::-;3234:2;3223:9;3216:21;3197:4;3254:80;3330:2;3319:9;3315:18;3307:6;3299;3254:80;:::i;:::-;3246:88;;3370:6;3365:2;3354:9;3350:18;3343:34;2997:386;;;;;;:::o", + "linkReferences": {}, + "immutableReferences": { + "50492": [ + { + "start": 166, + "length": 32 + }, + { + "start": 316, + "length": 32 + }, + { + "start": 571, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "createAccount(bytes[],uint256)": "3ffba36f", + "getAddress(bytes[],uint256)": "250b1b41", + "implementation()": "5c60da1b", + "initCodeHash()": "db4c545e" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc4337\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"OwnerRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"contract CoinbaseSmartWallet\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"predicted\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Coinbase (https://github.com/coinbase/smart-wallet)Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"erc4337\":\"The address of the ERC-4337 implementation used to deploy new cloned accounts.\"}},\"createAccount(bytes[],uint256)\":{\"details\":\"The account is deployed behind a minimal ERC1967 proxy whose implementation points to the registered ERC-4337 `implementation`.The `owners` parameter is a set of addresses and/or public keys depending on the signature scheme used (respectively ERC-1271 or Webauthn authentication).\",\"params\":{\"nonce\":\"The nonce of the account, allowing multiple accounts with the same set of initial owners to exist.\",\"owners\":\"The initial set of owners that should be able to control the account.\"}},\"getAddress(bytes[],uint256)\":{\"params\":{\"nonce\":\"The nonce provided to `createAccount()`.\",\"owners\":\"The initial set of owners provided to `createAccount()`.\"},\"returns\":{\"predicted\":\"The predicted account deployment address.\"}},\"initCodeHash()\":{\"returns\":{\"result\":\"The initialization code hash.\"}}},\"title\":\"Coinbase Smart Wallet Factory\",\"version\":1},\"userdoc\":{\"errors\":{\"OwnerRequired()\":[{\"notice\":\"Thrown when trying to create a new `CoinbaseSmartWallet` account without any owner.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Factory constructor used to initialize the implementation address to use for future ERC-4337 account deployments.\"},\"createAccount(bytes[],uint256)\":{\"notice\":\"Deploys an ERC-4337 account and returns its deterministic address.\"},\"getAddress(bytes[],uint256)\":{\"notice\":\"Returns the deterministic address of the account created via `createAccount()`.\"},\"implementation()\":{\"notice\":\"Address of the ERC-4337 implementation used as implementation for new accounts.\"},\"initCodeHash()\":{\"notice\":\"Returns the initialization code hash of the account (a minimal ERC1967 proxy).\"}},\"notice\":\"CoinbaseSmartWallet factory, based on Solady's ERC4337Factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/CoinbaseSmartWalletFactory.sol\":\"CoinbaseSmartWalletFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/p256-verifier/lib/openzeppelin-contracts/contracts/\",\":FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/p256-verifier/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/p256-verifier/lib/openzeppelin-contracts/\",\":p256-verifier/=lib/p256-verifier/\",\":solady/=lib/solady/src/\",\":webauthn-sol/=lib/webauthn-sol/src/\"]},\"sources\":{\"lib/FreshCryptoLib/solidity/src/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"lib/FreshCryptoLib/solidity/src/FCL_elliptic.sol\":{\"keccak256\":\"0x097f137d52dc9bd97d6fee7426b2d6d809ad3684767df288d58ffd76f7924e5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30ffae5b57f2e0fcabcc1642eb7c60e1b4369151d58a78034bb372187fdffa8e\",\"dweb:/ipfs/Qma8RXPxaV52ZMuR5HaoFWqMGSAo7g2u3qG6poguDbFsL4\"]},\"lib/account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/solady/src/accounts/Receiver.sol\":{\"keccak256\":\"0x9bf48dca73f428c20a0878a5a97d2d66626f835b077c012fd5b1ba6389feb2d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15cb4c81e6c5b2f609e5c6ba13d3241b5c017f9997cab5cebc0572c2dd7f34da\",\"dweb:/ipfs/QmQr7sWaqW27XhyCVGx4wED1rMmFKGhSHPjSGVLz45dbeD\"]},\"lib/solady/src/utils/Base64.sol\":{\"keccak256\":\"0x07dcf983a86bc961e4cc0b57a2cfc3e46b20a50fed9b2092c7497e5fe3715a93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65c6c0a8a29cfc5b757abe84635c83e62a177a48c2ad0be24de6b0fba1a60ea2\",\"dweb:/ipfs/QmYuYwxHiBoUt6vaLTLbs2bZamRzqrTfA4BsNZ1TApTfrm\"]},\"lib/solady/src/utils/LibClone.sol\":{\"keccak256\":\"0x6ba469171b7d79d0e2bb3999210353e89dced6c85ac2c06bb58e2ef09ac48f26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://778a87e2973196e0f2f7b716cd28646a901290998f73c053c984fac052ca1620\",\"dweb:/ipfs/QmcYg5fQyCHw7sZHmdHZtGwKEguthWjNd87oU9DWHtCLsN\"]},\"lib/solady/src/utils/LibString.sol\":{\"keccak256\":\"0x4fc555fe1ceb29162b143ce1564ac936099071c853065efc289f6c30c712f125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9d3fdb7c03ed63323ae27e0176e080f27ca453f91bacb73f8d59b09da94cf7\",\"dweb:/ipfs/Qmcix9BzxupvYYLX3t8wf4Wsf1yp1b2q65CJb5agaFPtQ9\"]},\"lib/solady/src/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x7a7acc59723ed291f24d9a2ed019109c8be69f32701f35f8a61dc7fff6652379\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bab15a03dfca0567d7472933ee4e776fc21f9dfb6c4dbc06934fa75eceeff5e\",\"dweb:/ipfs/QmPUuKsRwpZXz15DpsoJMMPN9DtZiRvMfwjqJScxkppNsP\"]},\"lib/solady/src/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x0f4da34fe99caf063e6d3a09d0a4ce783fdcd955b475d46ba00be48f7fda348f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f8e8e92e7b781a8b0d3fdb720915964f46354395a806e87aa7d0a355a024a83\",\"dweb:/ipfs/QmdDmVgUstEYpVQn97jDdaACoqoqiEvcXjxtEhC8b6vmFC\"]},\"lib/webauthn-sol/src/WebAuthn.sol\":{\"keccak256\":\"0x2441d1c9cd3ed38f53ad8920db4ccf1dfc4e081f91138432fd1a91f9a94d46c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6613c0ab26c03824b4db51d5d00a7fd665599ec1c4a20cc559c8fa19e885294\",\"dweb:/ipfs/QmaWPGM1ogH4nrxFYReaBoB7kA7AWy176kmLXFAZVEDTQp\"]},\"src/CoinbaseSmartWallet.sol\":{\"keccak256\":\"0x708d7985699d68185e35ca3359b8d973419725d9127d162b78e1131c000e92ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://95b890219a1067a9e43df42b5f5bb6e0d1748ade87d9714d204c4720b6febcd2\",\"dweb:/ipfs/QmPFAuxYAGhxdZqfCNbpa3Vc587fMBhFLQA1BtmCppVhYf\"]},\"src/CoinbaseSmartWalletFactory.sol\":{\"keccak256\":\"0xacedcda501e79257e7c73808e92c582be98f5648e7aa077da1c87c0dce3ca075\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://900f4c4fe156d307d1f6676d82779b7b821f96bd5600115e5d533c77f443dfee\",\"dweb:/ipfs/QmUM9GCLESCcZkJbLvFuDTrcedWMfZvgLSmpspgbqVErtw\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x670872019ca67ef9156017aaf0ec80c6be75258f3bcd6a21df270c45f8af3871\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fad973b58b631f72cf53f54caf736f8100942d51c632f1c5c486d5b7228d4593\",\"dweb:/ipfs/QmaxTVxCvEwe1cBoxw3TNtssBaFejnjcACdymZrYhgEeSj\"]},\"src/MultiOwnable.sol\":{\"keccak256\":\"0x9c0a57f9fd802e3ff10383257b10bea2637a01bda9986fc18a06246155fdbe6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0efe6691756a2bb0357caa1bdbd0dcc08407cd30ded5efee3fdffa4f99885c8a\",\"dweb:/ipfs/QmVz9YQaUsH4NLv47JDcVQCmUWstrgzwTTEGv7cNQTjXyg\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.23+commit.f704f362" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "erc4337", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [], + "type": "error", + "name": "OwnerRequired" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "createAccount", + "outputs": [ + { + "internalType": "contract CoinbaseSmartWallet", + "name": "account", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "getAddress", + "outputs": [ + { + "internalType": "address", + "name": "predicted", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "initCodeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "result", + "type": "bytes32" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "constructor": { + "params": { + "erc4337": "The address of the ERC-4337 implementation used to deploy new cloned accounts." + } + }, + "createAccount(bytes[],uint256)": { + "details": "The account is deployed behind a minimal ERC1967 proxy whose implementation points to the registered ERC-4337 `implementation`.The `owners` parameter is a set of addresses and/or public keys depending on the signature scheme used (respectively ERC-1271 or Webauthn authentication).", + "params": { + "nonce": "The nonce of the account, allowing multiple accounts with the same set of initial owners to exist.", + "owners": "The initial set of owners that should be able to control the account." + } + }, + "getAddress(bytes[],uint256)": { + "params": { + "nonce": "The nonce provided to `createAccount()`.", + "owners": "The initial set of owners provided to `createAccount()`." + }, + "returns": { + "predicted": "The predicted account deployment address." + } + }, + "initCodeHash()": { + "returns": { + "result": "The initialization code hash." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "constructor": { + "notice": "Factory constructor used to initialize the implementation address to use for future ERC-4337 account deployments." + }, + "createAccount(bytes[],uint256)": { + "notice": "Deploys an ERC-4337 account and returns its deterministic address." + }, + "getAddress(bytes[],uint256)": { + "notice": "Returns the deterministic address of the account created via `createAccount()`." + }, + "implementation()": { + "notice": "Address of the ERC-4337 implementation used as implementation for new accounts." + }, + "initCodeHash()": { + "notice": "Returns the initialization code hash of the account (a minimal ERC1967 proxy)." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@openzeppelin/contracts/=lib/p256-verifier/lib/openzeppelin-contracts/contracts/", + "FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/", + "account-abstraction/=lib/account-abstraction/contracts/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/p256-verifier/lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/p256-verifier/lib/openzeppelin-contracts/", + "p256-verifier/=lib/p256-verifier/", + "solady/=lib/solady/src/", + "webauthn-sol/=lib/webauthn-sol/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/CoinbaseSmartWalletFactory.sol": "CoinbaseSmartWalletFactory" + }, + "evmVersion": "paris", + "libraries": {} + }, + "sources": { + "lib/FreshCryptoLib/solidity/src/FCL_ecdsa.sol": { + "keccak256": "0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2", + "urls": [ + "bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d", + "dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe" + ], + "license": "MIT" + }, + "lib/FreshCryptoLib/solidity/src/FCL_elliptic.sol": { + "keccak256": "0x097f137d52dc9bd97d6fee7426b2d6d809ad3684767df288d58ffd76f7924e5b", + "urls": [ + "bzz-raw://30ffae5b57f2e0fcabcc1642eb7c60e1b4369151d58a78034bb372187fdffa8e", + "dweb:/ipfs/Qma8RXPxaV52ZMuR5HaoFWqMGSAo7g2u3qG6poguDbFsL4" + ], + "license": "MIT" + }, + "lib/account-abstraction/contracts/core/Helpers.sol": { + "keccak256": "0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a", + "urls": [ + "bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746", + "dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU" + ], + "license": "GPL-3.0" + }, + "lib/account-abstraction/contracts/interfaces/UserOperation.sol": { + "keccak256": "0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c", + "urls": [ + "bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c", + "dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN" + ], + "license": "GPL-3.0" + }, + "lib/solady/src/accounts/Receiver.sol": { + "keccak256": "0x9bf48dca73f428c20a0878a5a97d2d66626f835b077c012fd5b1ba6389feb2d0", + "urls": [ + "bzz-raw://15cb4c81e6c5b2f609e5c6ba13d3241b5c017f9997cab5cebc0572c2dd7f34da", + "dweb:/ipfs/QmQr7sWaqW27XhyCVGx4wED1rMmFKGhSHPjSGVLz45dbeD" + ], + "license": "MIT" + }, + "lib/solady/src/utils/Base64.sol": { + "keccak256": "0x07dcf983a86bc961e4cc0b57a2cfc3e46b20a50fed9b2092c7497e5fe3715a93", + "urls": [ + "bzz-raw://65c6c0a8a29cfc5b757abe84635c83e62a177a48c2ad0be24de6b0fba1a60ea2", + "dweb:/ipfs/QmYuYwxHiBoUt6vaLTLbs2bZamRzqrTfA4BsNZ1TApTfrm" + ], + "license": "MIT" + }, + "lib/solady/src/utils/LibClone.sol": { + "keccak256": "0x6ba469171b7d79d0e2bb3999210353e89dced6c85ac2c06bb58e2ef09ac48f26", + "urls": [ + "bzz-raw://778a87e2973196e0f2f7b716cd28646a901290998f73c053c984fac052ca1620", + "dweb:/ipfs/QmcYg5fQyCHw7sZHmdHZtGwKEguthWjNd87oU9DWHtCLsN" + ], + "license": "MIT" + }, + "lib/solady/src/utils/LibString.sol": { + "keccak256": "0x4fc555fe1ceb29162b143ce1564ac936099071c853065efc289f6c30c712f125", + "urls": [ + "bzz-raw://8f9d3fdb7c03ed63323ae27e0176e080f27ca453f91bacb73f8d59b09da94cf7", + "dweb:/ipfs/Qmcix9BzxupvYYLX3t8wf4Wsf1yp1b2q65CJb5agaFPtQ9" + ], + "license": "MIT" + }, + "lib/solady/src/utils/SignatureCheckerLib.sol": { + "keccak256": "0x7a7acc59723ed291f24d9a2ed019109c8be69f32701f35f8a61dc7fff6652379", + "urls": [ + "bzz-raw://7bab15a03dfca0567d7472933ee4e776fc21f9dfb6c4dbc06934fa75eceeff5e", + "dweb:/ipfs/QmPUuKsRwpZXz15DpsoJMMPN9DtZiRvMfwjqJScxkppNsP" + ], + "license": "MIT" + }, + "lib/solady/src/utils/UUPSUpgradeable.sol": { + "keccak256": "0x0f4da34fe99caf063e6d3a09d0a4ce783fdcd955b475d46ba00be48f7fda348f", + "urls": [ + "bzz-raw://5f8e8e92e7b781a8b0d3fdb720915964f46354395a806e87aa7d0a355a024a83", + "dweb:/ipfs/QmdDmVgUstEYpVQn97jDdaACoqoqiEvcXjxtEhC8b6vmFC" + ], + "license": "MIT" + }, + "lib/webauthn-sol/src/WebAuthn.sol": { + "keccak256": "0x2441d1c9cd3ed38f53ad8920db4ccf1dfc4e081f91138432fd1a91f9a94d46c7", + "urls": [ + "bzz-raw://f6613c0ab26c03824b4db51d5d00a7fd665599ec1c4a20cc559c8fa19e885294", + "dweb:/ipfs/QmaWPGM1ogH4nrxFYReaBoB7kA7AWy176kmLXFAZVEDTQp" + ], + "license": "MIT" + }, + "src/CoinbaseSmartWallet.sol": { + "keccak256": "0x708d7985699d68185e35ca3359b8d973419725d9127d162b78e1131c000e92ec", + "urls": [ + "bzz-raw://95b890219a1067a9e43df42b5f5bb6e0d1748ade87d9714d204c4720b6febcd2", + "dweb:/ipfs/QmPFAuxYAGhxdZqfCNbpa3Vc587fMBhFLQA1BtmCppVhYf" + ], + "license": "MIT" + }, + "src/CoinbaseSmartWalletFactory.sol": { + "keccak256": "0xacedcda501e79257e7c73808e92c582be98f5648e7aa077da1c87c0dce3ca075", + "urls": [ + "bzz-raw://900f4c4fe156d307d1f6676d82779b7b821f96bd5600115e5d533c77f443dfee", + "dweb:/ipfs/QmUM9GCLESCcZkJbLvFuDTrcedWMfZvgLSmpspgbqVErtw" + ], + "license": "MIT" + }, + "src/ERC1271.sol": { + "keccak256": "0x670872019ca67ef9156017aaf0ec80c6be75258f3bcd6a21df270c45f8af3871", + "urls": [ + "bzz-raw://fad973b58b631f72cf53f54caf736f8100942d51c632f1c5c486d5b7228d4593", + "dweb:/ipfs/QmaxTVxCvEwe1cBoxw3TNtssBaFejnjcACdymZrYhgEeSj" + ], + "license": "MIT" + }, + "src/MultiOwnable.sol": { + "keccak256": "0x9c0a57f9fd802e3ff10383257b10bea2637a01bda9986fc18a06246155fdbe6e", + "urls": [ + "bzz-raw://0efe6691756a2bb0357caa1bdbd0dcc08407cd30ded5efee3fdffa4f99885c8a", + "dweb:/ipfs/QmVz9YQaUsH4NLv47JDcVQCmUWstrgzwTTEGv7cNQTjXyg" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/CoinbaseSmartWalletFactory.sol", + "id": 50629, + "exportedSymbols": { + "CoinbaseSmartWallet": [ + 50482 + ], + "CoinbaseSmartWalletFactory": [ + 50628 + ], + "LibClone": [ + 48580 + ] + }, + "nodeType": "SourceUnit", + "src": "32:3617:41", + "nodes": [ + { + "id": 50484, + "nodeType": "PragmaDirective", + "src": "32:23:41", + "nodes": [], + "literals": [ + "solidity", + "^", + "0.8", + ".4" + ] + }, + { + "id": 50486, + "nodeType": "ImportDirective", + "src": "57:51:41", + "nodes": [], + "absolutePath": "lib/solady/src/utils/LibClone.sol", + "file": "solady/utils/LibClone.sol", + "nameLocation": "-1:-1:-1", + "scope": 50629, + "sourceUnit": 48581, + "symbolAliases": [ + { + "foreign": { + "id": 50485, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48580, + "src": "65:8:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 50488, + "nodeType": "ImportDirective", + "src": "109:62:41", + "nodes": [], + "absolutePath": "src/CoinbaseSmartWallet.sol", + "file": "./CoinbaseSmartWallet.sol", + "nameLocation": "-1:-1:-1", + "scope": 50629, + "sourceUnit": 50483, + "symbolAliases": [ + { + "foreign": { + "id": 50487, + "name": "CoinbaseSmartWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50482, + "src": "117:19:41", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 50628, + "nodeType": "ContractDefinition", + "src": "461:3187:41", + "nodes": [ + { + "id": 50492, + "nodeType": "VariableDeclaration", + "src": "599:39:41", + "nodes": [], + "constant": false, + "documentation": { + "id": 50490, + "nodeType": "StructuredDocumentation", + "src": "503:91:41", + "text": "@notice Address of the ERC-4337 implementation used as implementation for new accounts." + }, + "functionSelector": "5c60da1b", + "mutability": "immutable", + "name": "implementation", + "nameLocation": "624:14:41", + "scope": 50628, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "599:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "id": 50495, + "nodeType": "ErrorDefinition", + "src": "745:22:41", + "nodes": [], + "documentation": { + "id": 50493, + "nodeType": "StructuredDocumentation", + "src": "645:95:41", + "text": "@notice Thrown when trying to create a new `CoinbaseSmartWallet` account without any owner." + }, + "errorSelector": "3c776be1", + "name": "OwnerRequired", + "nameLocation": "751:13:41", + "parameters": { + "id": 50494, + "nodeType": "ParameterList", + "parameters": [], + "src": "764:2:41" + } + }, + { + "id": 50506, + "nodeType": "FunctionDefinition", + "src": "1029:78:41", + "nodes": [], + "body": { + "id": 50505, + "nodeType": "Block", + "src": "1066:41:41", + "nodes": [], + "statements": [ + { + "expression": { + "id": 50503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50501, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50492, + "src": "1076:14:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 50502, + "name": "erc4337", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50498, + "src": "1093:7:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1076:24:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 50504, + "nodeType": "ExpressionStatement", + "src": "1076:24:41" + } + ] + }, + "documentation": { + "id": 50496, + "nodeType": "StructuredDocumentation", + "src": "773:251:41", + "text": "@notice Factory constructor used to initialize the implementation address to use for future\n ERC-4337 account deployments.\n @param erc4337 The address of the ERC-4337 implementation used to deploy new cloned accounts." + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 50499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50498, + "mutability": "mutable", + "name": "erc4337", + "nameLocation": "1049:7:41", + "nodeType": "VariableDeclaration", + "scope": 50506, + "src": "1041:15:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1041:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1040:17:41" + }, + "returnParameters": { + "id": 50500, + "nodeType": "ParameterList", + "parameters": [], + "src": "1066:0:41" + }, + "scope": 50628, + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "id": 50563, + "nodeType": "FunctionDefinition", + "src": "1782:562:41", + "nodes": [], + "body": { + "id": 50562, + "nodeType": "Block", + "src": "1942:402:41", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 50521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 50518, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50510, + "src": "1956:6:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + "id": 50519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1963:6:41", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1956:13:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 50520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1973:1:41", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1956:18:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50526, + "nodeType": "IfStatement", + "src": "1952:71:41", + "trueBody": { + "id": 50525, + "nodeType": "Block", + "src": "1976:47:41", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 50522, + "name": "OwnerRequired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50495, + "src": "1997:13:41", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 50523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1997:15:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50524, + "nodeType": "RevertStatement", + "src": "1990:22:41" + } + ] + } + }, + { + "assignments": [ + 50528, + 50530 + ], + "declarations": [ + { + "constant": false, + "id": 50528, + "mutability": "mutable", + "name": "alreadyDeployed", + "nameLocation": "2039:15:41", + "nodeType": "VariableDeclaration", + "scope": 50562, + "src": "2034:20:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 50527, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2034:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50530, + "mutability": "mutable", + "name": "accountAddress", + "nameLocation": "2064:14:41", + "nodeType": "VariableDeclaration", + "scope": 50562, + "src": "2056:22:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50529, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2056:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 50541, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 50533, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2130:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 50534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2134:5:41", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "2130:9:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 50535, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50492, + "src": "2141:14:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 50537, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50510, + "src": "2166:6:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 50538, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50512, + "src": "2174:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 50536, + "name": "_getSalt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50627, + "src": "2157:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata[] calldata,uint256) pure returns (bytes32)" + } + }, + "id": 50539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2157:23:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 50531, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48580, + "src": "2094:8:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$48580_$", + "typeString": "type(library LibClone)" + } + }, + "id": 50532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2103:26:41", + "memberName": "createDeterministicERC1967", + "nodeType": "MemberAccess", + "referencedDeclaration": 48365, + "src": "2094:35:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", + "typeString": "function (uint256,address,bytes32) returns (bool,address)" + } + }, + "id": 50540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2094:87:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", + "typeString": "tuple(bool,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2033:148:41" + }, + { + "expression": { + "id": 50549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50542, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50516, + "src": "2192:7:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 50546, + "name": "accountAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50530, + "src": "2230:14:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 50545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2222:8:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 50544, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2222:8:41", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 50547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2222:23:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 50543, + "name": "CoinbaseSmartWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50482, + "src": "2202:19:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_CoinbaseSmartWallet_$50482_$", + "typeString": "type(contract CoinbaseSmartWallet)" + } + }, + "id": 50548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2202:44:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + }, + "src": "2192:54:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + }, + "id": 50550, + "nodeType": "ExpressionStatement", + "src": "2192:54:41" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 50553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 50551, + "name": "alreadyDeployed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50528, + "src": "2261:15:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "66616c7365", + "id": 50552, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2280:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2261:24:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50561, + "nodeType": "IfStatement", + "src": "2257:81:41", + "trueBody": { + "id": 50560, + "nodeType": "Block", + "src": "2287:51:41", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 50557, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50510, + "src": "2320:6:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "expression": { + "id": 50554, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50516, + "src": "2301:7:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + }, + "id": 50556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2309:10:41", + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 50059, + "src": "2301:18:41", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory) payable external" + } + }, + "id": 50558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2301:26:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50559, + "nodeType": "ExpressionStatement", + "src": "2301:26:41" + } + ] + } + } + ] + }, + "documentation": { + "id": 50507, + "nodeType": "StructuredDocumentation", + "src": "1113:664:41", + "text": "@notice Deploys an ERC-4337 account and returns its deterministic address.\n @dev The account is deployed behind a minimal ERC1967 proxy whose implementation points to\n the registered ERC-4337 `implementation`.\n @dev The `owners` parameter is a set of addresses and/or public keys depending on the signature\n scheme used (respectively ERC-1271 or Webauthn authentication).\n @param owners The initial set of owners that should be able to control the account.\n @param nonce The nonce of the account, allowing multiple accounts with the same set of initial\n owners to exist." + }, + "functionSelector": "3ffba36f", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createAccount", + "nameLocation": "1791:13:41", + "parameters": { + "id": 50513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50510, + "mutability": "mutable", + "name": "owners", + "nameLocation": "1822:6:41", + "nodeType": "VariableDeclaration", + "scope": 50563, + "src": "1805:23:41", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 50508, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1805:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 50509, + "nodeType": "ArrayTypeName", + "src": "1805:7:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50512, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "1838:5:41", + "nodeType": "VariableDeclaration", + "scope": 50563, + "src": "1830:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50511, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1830:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1804:40:41" + }, + "returnParameters": { + "id": 50517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50516, + "mutability": "mutable", + "name": "account", + "nameLocation": "1929:7:41", + "nodeType": "VariableDeclaration", + "scope": 50563, + "src": "1909:27:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + }, + "typeName": { + "id": 50515, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 50514, + "name": "CoinbaseSmartWallet", + "nameLocations": [ + "1909:19:41" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 50482, + "src": "1909:19:41" + }, + "referencedDeclaration": 50482, + "src": "1909:19:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + }, + "visibility": "internal" + } + ], + "src": "1908:29:41" + }, + "scope": 50628, + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "id": 50591, + "nodeType": "FunctionDefinition", + "src": "2672:223:41", + "nodes": [], + "body": { + "id": 50590, + "nodeType": "Block", + "src": "2774:121:41", + "nodes": [], + "statements": [ + { + "expression": { + "id": 50588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50574, + "name": "predicted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50572, + "src": "2784:9:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 50577, + "name": "initCodeHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50605, + "src": "2833:12:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 50578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2833:14:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 50580, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50567, + "src": "2858:6:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 50581, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50569, + "src": "2866:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 50579, + "name": "_getSalt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50627, + "src": "2849:8:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (bytes calldata[] calldata,uint256) pure returns (bytes32)" + } + }, + "id": 50582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2849:23:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 50585, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2882:4:41", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWalletFactory_$50628", + "typeString": "contract CoinbaseSmartWalletFactory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CoinbaseSmartWalletFactory_$50628", + "typeString": "contract CoinbaseSmartWalletFactory" + } + ], + "id": 50584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2874:7:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 50583, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2874:7:41", + "typeDescriptions": {} + } + }, + "id": 50586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2874:13:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 50575, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48580, + "src": "2796:8:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$48580_$", + "typeString": "type(library LibClone)" + } + }, + "id": 50576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2805:27:41", + "memberName": "predictDeterministicAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 48569, + "src": "2796:36:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", + "typeString": "function (bytes32,bytes32,address) pure returns (address)" + } + }, + "id": 50587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2796:92:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2784:104:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 50589, + "nodeType": "ExpressionStatement", + "src": "2784:104:41" + } + ] + }, + "documentation": { + "id": 50564, + "nodeType": "StructuredDocumentation", + "src": "2350:317:41", + "text": "@notice Returns the deterministic address of the account created via `createAccount()`.\n @param owners The initial set of owners provided to `createAccount()`.\n @param nonce The nonce provided to `createAccount()`.\n @return predicted The predicted account deployment address." + }, + "functionSelector": "250b1b41", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddress", + "nameLocation": "2681:10:41", + "parameters": { + "id": 50570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50567, + "mutability": "mutable", + "name": "owners", + "nameLocation": "2709:6:41", + "nodeType": "VariableDeclaration", + "scope": 50591, + "src": "2692:23:41", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 50565, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2692:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 50566, + "nodeType": "ArrayTypeName", + "src": "2692:7:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50569, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "2725:5:41", + "nodeType": "VariableDeclaration", + "scope": 50591, + "src": "2717:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50568, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2717:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2691:40:41" + }, + "returnParameters": { + "id": 50573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50572, + "mutability": "mutable", + "name": "predicted", + "nameLocation": "2763:9:41", + "nodeType": "VariableDeclaration", + "scope": 50591, + "src": "2755:17:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2755:7:41", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2754:19:41" + }, + "scope": 50628, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 50605, + "nodeType": "FunctionDefinition", + "src": "3057:139:41", + "nodes": [], + "body": { + "id": 50604, + "nodeType": "Block", + "src": "3126:70:41", + "nodes": [], + "statements": [ + { + "expression": { + "id": 50602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50597, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50595, + "src": "3136:6:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 50600, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50492, + "src": "3174:14:41", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 50598, + "name": "LibClone", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48580, + "src": "3145:8:41", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_LibClone_$48580_$", + "typeString": "type(library LibClone)" + } + }, + "id": 50599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3154:19:41", + "memberName": "initCodeHashERC1967", + "nodeType": "MemberAccess", + "referencedDeclaration": 48385, + "src": "3145:28:41", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) pure returns (bytes32)" + } + }, + "id": 50601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3145:44:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3136:53:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 50603, + "nodeType": "ExpressionStatement", + "src": "3136:53:41" + } + ] + }, + "documentation": { + "id": 50592, + "nodeType": "StructuredDocumentation", + "src": "2901:151:41", + "text": "@notice Returns the initialization code hash of the account (a minimal ERC1967 proxy).\n @return result The initialization code hash." + }, + "functionSelector": "db4c545e", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initCodeHash", + "nameLocation": "3066:12:41", + "parameters": { + "id": 50593, + "nodeType": "ParameterList", + "parameters": [], + "src": "3078:2:41" + }, + "returnParameters": { + "id": 50596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50595, + "mutability": "mutable", + "name": "result", + "nameLocation": "3118:6:41", + "nodeType": "VariableDeclaration", + "scope": 50605, + "src": "3110:14:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 50594, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3110:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3109:16:41" + }, + "scope": 50628, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "id": 50627, + "nodeType": "FunctionDefinition", + "src": "3491:155:41", + "nodes": [], + "body": { + "id": 50626, + "nodeType": "Block", + "src": "3586:60:41", + "nodes": [], + "statements": [ + { + "expression": { + "id": 50624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50616, + "name": "salt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50614, + "src": "3596:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 50620, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50609, + "src": "3624:6:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + }, + { + "id": 50621, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50611, + "src": "3632:5:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 50618, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3613:3:41", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 50619, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3617:6:41", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "3613:10:41", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 50622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3613:25:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 50617, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3603:9:41", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 50623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3603:36:41", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3596:43:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 50625, + "nodeType": "ExpressionStatement", + "src": "3596:43:41" + } + ] + }, + "documentation": { + "id": 50606, + "nodeType": "StructuredDocumentation", + "src": "3202:284:41", + "text": "@notice Returns the deterministic salt for a specific set of `owners` and `nonce`.\n @param owners The initial set of owners provided to `createAccount()`.\n @param nonce The nonce provided to `createAccount()`.\n @return salt The computed salt." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getSalt", + "nameLocation": "3500:8:41", + "parameters": { + "id": 50612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50609, + "mutability": "mutable", + "name": "owners", + "nameLocation": "3526:6:41", + "nodeType": "VariableDeclaration", + "scope": 50627, + "src": "3509:23:41", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 50607, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3509:5:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 50608, + "nodeType": "ArrayTypeName", + "src": "3509:7:41", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50611, + "mutability": "mutable", + "name": "nonce", + "nameLocation": "3542:5:41", + "nodeType": "VariableDeclaration", + "scope": 50627, + "src": "3534:13:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50610, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3534:7:41", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3508:40:41" + }, + "returnParameters": { + "id": 50615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50614, + "mutability": "mutable", + "name": "salt", + "nameLocation": "3580:4:41", + "nodeType": "VariableDeclaration", + "scope": 50627, + "src": "3572:12:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 50613, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3572:7:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3571:14:41" + }, + "scope": 50628, + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [], + "canonicalName": "CoinbaseSmartWalletFactory", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 50489, + "nodeType": "StructuredDocumentation", + "src": "173:288:41", + "text": "@title Coinbase Smart Wallet Factory\n @notice CoinbaseSmartWallet factory, based on Solady's ERC4337Factory.\n @author Coinbase (https://github.com/coinbase/smart-wallet)\n @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 50628 + ], + "name": "CoinbaseSmartWalletFactory", + "nameLocation": "470:26:41", + "scope": 50629, + "usedErrors": [ + 50495 + ], + "usedEvents": [] + } + ], + "license": "MIT" + }, + "id": 41 +} \ No newline at end of file diff --git a/xmtp_id/src/erc1271_verifier.rs b/xmtp_id/src/erc1271_verifier.rs index b7c950f75..4ee224d9a 100644 --- a/xmtp_id/src/erc1271_verifier.rs +++ b/xmtp_id/src/erc1271_verifier.rs @@ -1,28 +1,30 @@ -use ethers::types::{Address, BlockNumber, Bytes}; +use anyhow::Error; +use ethers::contract::abigen; use ethers::providers::{Http, Middleware, Provider}; +use ethers::types::{Address, BlockNumber, Bytes}; use std::convert::TryFrom; use std::sync::Arc; -use anyhow::Error; -use ethers::contract::abigen; const EIP1271_MAGIC_VALUE: [u8; 4] = [0x16, 0x26, 0xba, 0x7e]; abigen!( ERC1271, - "./abi/ERC1271.json", + r#"[ + function isValidSignature(bytes32 hash, bytes calldata signature) public view virtual returns (bytes4 result) + ]"#, derives(serde::Serialize, serde::Deserialize) ); pub struct ERC1271Verifier { pub provider: Arc>, -} +} impl ERC1271Verifier { pub fn new(url: &str) -> Self { - let provider = Arc::new(Provider::::try_from(url).unwrap()); + let provider = Arc::new(Provider::::try_from(url).unwrap()); Self { provider } } - + /// Verifies an ERC-1271(https://eips.ethereum.org/EIPS/eip-1271) signature. /// /// # Arguments @@ -30,7 +32,13 @@ impl ERC1271Verifier { /// * `wallet_address` - Address of the ERC1271 wallet. /// * `block_number` - Block number to verify the signature at. /// * `hash`, `signature` - Inputs to ERC-1271, used for signer verification. - pub async fn is_valid_signature(&self, wallet_address: Address, block_number: BlockNumber, hash: [u8; 32], signature: Bytes) -> Result { + pub async fn is_valid_signature( + &self, + wallet_address: Address, + block_number: BlockNumber, + hash: [u8; 32], + signature: Bytes, + ) -> Result { let erc1271 = ERC1271::new(wallet_address, self.provider.clone()); let res: [u8; 4] = erc1271 @@ -42,4 +50,4 @@ impl ERC1271Verifier { Ok(res == EIP1271_MAGIC_VALUE) } -} \ No newline at end of file +} From 5fb27e049dac3e30f8b4fe6a7ef47e7360f42a15 Mon Sep 17 00:00:00 2001 From: yoduyodu Date: Fri, 5 Apr 2024 14:39:27 -0700 Subject: [PATCH 05/10] =?UTF-8?q?=E2=9C=85=20before=20verifier?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xmtp_id/artifact/CoinbaseSmartWallet.json | 10485 ++++++++++++++++---- xmtp_id/src/erc1271_verifier.rs | 160 +- 2 files changed, 8903 insertions(+), 1742 deletions(-) diff --git a/xmtp_id/artifact/CoinbaseSmartWallet.json b/xmtp_id/artifact/CoinbaseSmartWallet.json index ea2806a34..8ab7f4d6c 100644 --- a/xmtp_id/artifact/CoinbaseSmartWallet.json +++ b/xmtp_id/artifact/CoinbaseSmartWallet.json @@ -2,1019 +2,7384 @@ "abi": [ { "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "fallback", + "stateMutability": "payable" + }, + { + "type": "receive", + "stateMutability": "payable" + }, + { + "type": "function", + "name": "REPLAYABLE_NONCE_KEY", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "addOwnerAddress", "inputs": [ { - "name": "erc4337", + "name": "owner", "type": "address", "internalType": "address" } ], - "stateMutability": "payable" + "outputs": [], + "stateMutability": "nonpayable" }, { "type": "function", - "name": "createAccount", + "name": "addOwnerPublicKey", "inputs": [ { - "name": "owners", - "type": "bytes[]", - "internalType": "bytes[]" + "name": "x", + "type": "bytes32", + "internalType": "bytes32" }, { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "account", - "type": "address", - "internalType": "contract CoinbaseSmartWallet" + "name": "y", + "type": "bytes32", + "internalType": "bytes32" } ], - "stateMutability": "payable" + "outputs": [], + "stateMutability": "nonpayable" }, { "type": "function", - "name": "getAddress", + "name": "canSkipChainIdValidation", "inputs": [ { - "name": "owners", - "type": "bytes[]", - "internalType": "bytes[]" - }, + "name": "functionSelector", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "outputs": [ { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" + "name": "", + "type": "bool", + "internalType": "bool" } ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "domainSeparator", + "inputs": [], "outputs": [ { - "name": "predicted", - "type": "address", - "internalType": "address" + "name": "", + "type": "bytes32", + "internalType": "bytes32" } ], "stateMutability": "view" }, { "type": "function", - "name": "implementation", + "name": "eip712Domain", "inputs": [], "outputs": [ { - "name": "", + "name": "fields", + "type": "bytes1", + "internalType": "bytes1" + }, + { + "name": "name", + "type": "string", + "internalType": "string" + }, + { + "name": "version", + "type": "string", + "internalType": "string" + }, + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "verifyingContract", "type": "address", "internalType": "address" + }, + { + "name": "salt", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "extensions", + "type": "uint256[]", + "internalType": "uint256[]" } ], "stateMutability": "view" }, { "type": "function", - "name": "initCodeHash", + "name": "entryPoint", "inputs": [], "outputs": [ { - "name": "result", - "type": "bytes32", - "internalType": "bytes32" + "name": "", + "type": "address", + "internalType": "address" } ], "stateMutability": "view" }, { - "type": "error", - "name": "OwnerRequired", - "inputs": [] - } - ], - "bytecode": { - "object": "0x60a06040526040516105eb3803806105eb83398101604081905261002291610033565b6001600160a01b0316608052610063565b60006020828403121561004557600080fd5b81516001600160a01b038116811461005c57600080fd5b9392505050565b60805161056061008b6000396000818160a60152818161013c015261023b01526105606000f3fe60806040526004361061003f5760003560e01c8063250b1b41146100445780633ffba36f146100815780635c60da1b14610094578063db4c545e146100c8575b600080fd5b34801561005057600080fd5b5061006461005f3660046103b7565b6100eb565b6040516001600160a01b0390911681526020015b60405180910390f35b61006461008f3660046103b7565b610111565b3480156100a057600080fd5b506100647f000000000000000000000000000000000000000000000000000000000000000081565b3480156100d457600080fd5b506100dd6101e6565b604051908152602001610078565b60006101096100f86101e6565b61010386868661027b565b306102b1565b949350505050565b600082810361013357604051633c776be160e01b815260040160405180910390fd5b60008061016b347f000000000000000000000000000000000000000000000000000000000000000061016689898961027b565b6102d3565b935091508290508115156000036101dd57604051633796f38760e11b81526001600160a01b03841690636f2de70e906101aa90899089906004016104f2565b600060405180830381600087803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b505050505b50509392505050565b604080517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f360609081527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207683526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212091909252600090915290565b600083838360405160200161029293929190610506565b6040516020818303038152906040528051906020012090509392505050565b600060ff60005350603592835260601b60015260155260556000908120915290565b6000806040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207660405261600960205284601e5268603d3d8160223d3973600a52605f60212060358201523060581b815260ff8153836015820152605581209150813b61037f5783605f602188f591508161037a5763301164256000526004601cfd5b6103a5565b6001925085156103a55760003860003889865af16103a55763b12d13eb6000526004601cfd5b80604052506000606052935093915050565b6000806000604084860312156103cc57600080fd5b833567ffffffffffffffff808211156103e457600080fd5b818601915086601f8301126103f857600080fd5b81358181111561040757600080fd5b8760208260051b850101111561041c57600080fd5b6020928301989097509590910135949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b878110156104e557848303601f19018952813536889003601e1901811261049b57600080fd5b8701848101903567ffffffffffffffff8111156104b757600080fd5b8036038213156104c657600080fd5b6104d1858284610432565b9a86019a9450505090830190600101610475565b5090979650505050505050565b60208152600061010960208301848661045b565b60408152600061051a60408301858761045b565b905082602083015294935050505056fea264697066735822122098bae64e62859ac8d5ed01c4927e5fce406f632b517c86f038f06fef8355dba164736f6c63430008170033", - "sourceMap": "461:3187:41:-:0;;;1029:78;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1076:24:41;;;461:3187;;14:290:69;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:69;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:69:o;:::-;461:3187:41;;;;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x60806040526004361061003f5760003560e01c8063250b1b41146100445780633ffba36f146100815780635c60da1b14610094578063db4c545e146100c8575b600080fd5b34801561005057600080fd5b5061006461005f3660046103b7565b6100eb565b6040516001600160a01b0390911681526020015b60405180910390f35b61006461008f3660046103b7565b610111565b3480156100a057600080fd5b506100647f000000000000000000000000000000000000000000000000000000000000000081565b3480156100d457600080fd5b506100dd6101e6565b604051908152602001610078565b60006101096100f86101e6565b61010386868661027b565b306102b1565b949350505050565b600082810361013357604051633c776be160e01b815260040160405180910390fd5b60008061016b347f000000000000000000000000000000000000000000000000000000000000000061016689898961027b565b6102d3565b935091508290508115156000036101dd57604051633796f38760e11b81526001600160a01b03841690636f2de70e906101aa90899089906004016104f2565b600060405180830381600087803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b505050505b50509392505050565b604080517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f360609081527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207683526160096020527f0000000000000000000000000000000000000000000000000000000000000000601e5268603d3d8160223d3973600a52605f60212091909252600090915290565b600083838360405160200161029293929190610506565b6040516020818303038152906040528051906020012090509392505050565b600060ff60005350603592835260601b60015260155260556000908120915290565b6000806040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207660405261600960205284601e5268603d3d8160223d3973600a52605f60212060358201523060581b815260ff8153836015820152605581209150813b61037f5783605f602188f591508161037a5763301164256000526004601cfd5b6103a5565b6001925085156103a55760003860003889865af16103a55763b12d13eb6000526004601cfd5b80604052506000606052935093915050565b6000806000604084860312156103cc57600080fd5b833567ffffffffffffffff808211156103e457600080fd5b818601915086601f8301126103f857600080fd5b81358181111561040757600080fd5b8760208260051b850101111561041c57600080fd5b6020928301989097509590910135949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b878110156104e557848303601f19018952813536889003601e1901811261049b57600080fd5b8701848101903567ffffffffffffffff8111156104b757600080fd5b8036038213156104c657600080fd5b6104d1858284610432565b9a86019a9450505090830190600101610475565b5090979650505050505050565b60208152600061010960208301848661045b565b60408152600061051a60408301858761045b565b905082602083015294935050505056fea264697066735822122098bae64e62859ac8d5ed01c4927e5fce406f632b517c86f038f06fef8355dba164736f6c63430008170033", - "sourceMap": "461:3187:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2672:223;;;;;;;;;;-1:-1:-1;2672:223:41;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;883:32:69;;;865:51;;853:2;838:18;2672:223:41;;;;;;;;1782:562;;;;;;:::i;:::-;;:::i;599:39::-;;;;;;;;;;;;;;;3057:139;;;;;;;;;;;;;:::i;:::-;;;1318:25:69;;;1306:2;1291:18;3057:139:41;1172:177:69;2672:223:41;2755:17;2796:92;2833:14;:12;:14::i;:::-;2849:23;2858:6;;2866:5;2849:8;:23::i;:::-;2882:4;2796:36;:92::i;:::-;2784:104;2672:223;-1:-1:-1;;;;2672:223:41:o;1782:562::-;1909:27;1956:18;;;1952:71;;1997:15;;-1:-1:-1;;;1997:15:41;;;;;;;;;;;1952:71;2034:20;2056:22;2094:87;2130:9;2141:14;2157:23;2166:6;;2174:5;2157:8;:23::i;:::-;2094:35;:87::i;:::-;2033:148;-1:-1:-1;2033:148:41;-1:-1:-1;2033:148:41;;-1:-1:-1;2261:24:41;;;2280:5;2261:24;2257:81;;2301:26;;-1:-1:-1;;;2301:26:41;;-1:-1:-1;;;;;2301:18:41;;;;;:26;;2320:6;;;;2301:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2257:81;1942:402;;1782:562;;;;;:::o;3057:139::-;54044:4:33;54038:11;;54109:66;54103:4;54096:80;;;54202:66;54189:80;;54295:6;-1:-1:-1;54282:20:33;3174:14:41;54322:4:33;54315:28;54369:20;54363:4;54356:34;54427:4;54421;54411:21;54445:15;;;;-1:-1:-1;54509:15:33;;;54411:21;3057:139:41:o;3491:155::-;3572:12;3624:6;;3632:5;3613:25;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3603:36;;;;;;3596:43;;3491:155;;;;;:::o;71932:578:33:-;72062:17;72227:4;72221;72213:19;-1:-1:-1;72273:4:33;72266:18;;;72314:2;72310:17;72304:4;72297:31;72348:4;72341:18;72401:4;72395;72385:21;;;72419:15;;72385:21;71932:578::o;51105:1725::-;51228:20;51250:16;51363:4;51357:11;51428:66;51422:4;51415:80;51521:66;51515:4;51508:80;51614:6;51608:4;51601:20;51647:14;51641:4;51634:28;51688:20;51682:4;51675:34;51811:4;51805;51795:21;51788:4;51785:1;51781:12;51774:43;51848:9;51844:2;51840:18;51837:1;51830:29;51883:4;51880:1;51872:16;51943:4;51936;51933:1;51929:12;51922:26;51986:4;51983:1;51973:18;51961:30;;52056:8;52044:21;52034:324;;52128:4;52122;52116;52109:5;52101:32;52089:44;;52164:8;52154:160;;52213:10;52207:4;52200:24;52287:4;52281;52274:18;52154:160;52335:5;;52034:324;52394:1;52375:20;;52422:5;52412:26;52431:5;52412:26;52524:4;52512:10;52506:4;52494:10;52487:5;52477:8;52470:5;52465:64;52455:205;;52566:10;52560:4;52553:24;52637:4;52631;52624:18;52455:205;52722:1;52716:4;52709:15;;52786:1;52780:4;52773:15;51105:1725;;;;;;:::o;14:700:69:-;120:6;128;136;189:2;177:9;168:7;164:23;160:32;157:52;;;205:1;202;195:12;157:52;245:9;232:23;274:18;315:2;307:6;304:14;301:34;;;331:1;328;321:12;301:34;369:6;358:9;354:22;344:32;;414:7;407:4;403:2;399:13;395:27;385:55;;436:1;433;426:12;385:55;476:2;463:16;502:2;494:6;491:14;488:34;;;518:1;515;508:12;488:34;573:7;566:4;556:6;553:1;549:14;545:2;541:23;537:34;534:47;531:67;;;594:1;591;584:12;531:67;625:4;617:13;;;;649:6;;-1:-1:-1;687:20:69;;;;674:34;;14:700;-1:-1:-1;;;;14:700:69:o;1354:266::-;1442:6;1437:3;1430:19;1494:6;1487:5;1480:4;1475:3;1471:14;1458:43;-1:-1:-1;1546:1:69;1521:16;;;1539:4;1517:27;;;1510:38;;;;1602:2;1581:15;;;-1:-1:-1;;1577:29:69;1568:39;;;1564:50;;1354:266::o;1625:1047::-;1702:3;1733;1757:6;1752:3;1745:19;1783:4;1812;1807:3;1803:14;1796:21;;1870:4;1860:6;1857:1;1853:14;1846:5;1842:26;1838:37;1898:5;1921:1;1931:715;1945:6;1942:1;1939:13;1931:715;;;2010:16;;;-1:-1:-1;;2006:30:69;1994:43;;2076:20;;2151:14;2147:26;;;-1:-1:-1;;2143:40:69;2119:65;;2109:93;;2198:1;2195;2188:12;2109:93;2230:30;;2338:16;;;;2289:21;2383:18;2370:32;;2367:52;;;2415:1;2412;2405:12;2367:52;2468:8;2452:14;2448:29;2439:7;2435:43;2432:63;;;2491:1;2488;2481:12;2432:63;2516:50;2561:4;2551:8;2542:7;2516:50;:::i;:::-;2624:12;;;;2508:58;-1:-1:-1;;;2589:15:69;;;;1967:1;1960:9;1931:715;;;-1:-1:-1;2662:4:69;;1625:1047;-1:-1:-1;;;;;;;1625:1047:69:o;2677:315::-;2886:2;2875:9;2868:21;2849:4;2906:80;2982:2;2971:9;2967:18;2959:6;2951;2906:80;:::i;2997:386::-;3234:2;3223:9;3216:21;3197:4;3254:80;3330:2;3319:9;3315:18;3307:6;3299;3254:80;:::i;:::-;3246:88;;3370:6;3365:2;3354:9;3350:18;3343:34;2997:386;;;;;;:::o", - "linkReferences": {}, - "immutableReferences": { - "50492": [ + "type": "function", + "name": "execute", + "inputs": [ { - "start": 166, - "length": 32 + "name": "target", + "type": "address", + "internalType": "address" }, { - "start": 316, - "length": 32 + "name": "value", + "type": "uint256", + "internalType": "uint256" }, { - "start": 571, - "length": 32 + "name": "data", + "type": "bytes", + "internalType": "bytes" } - ] - } - }, - "methodIdentifiers": { - "createAccount(bytes[],uint256)": "3ffba36f", - "getAddress(bytes[],uint256)": "250b1b41", - "implementation()": "5c60da1b", - "initCodeHash()": "db4c545e" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc4337\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"OwnerRequired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"createAccount\",\"outputs\":[{\"internalType\":\"contract CoinbaseSmartWallet\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"getAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"predicted\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Coinbase (https://github.com/coinbase/smart-wallet)Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"erc4337\":\"The address of the ERC-4337 implementation used to deploy new cloned accounts.\"}},\"createAccount(bytes[],uint256)\":{\"details\":\"The account is deployed behind a minimal ERC1967 proxy whose implementation points to the registered ERC-4337 `implementation`.The `owners` parameter is a set of addresses and/or public keys depending on the signature scheme used (respectively ERC-1271 or Webauthn authentication).\",\"params\":{\"nonce\":\"The nonce of the account, allowing multiple accounts with the same set of initial owners to exist.\",\"owners\":\"The initial set of owners that should be able to control the account.\"}},\"getAddress(bytes[],uint256)\":{\"params\":{\"nonce\":\"The nonce provided to `createAccount()`.\",\"owners\":\"The initial set of owners provided to `createAccount()`.\"},\"returns\":{\"predicted\":\"The predicted account deployment address.\"}},\"initCodeHash()\":{\"returns\":{\"result\":\"The initialization code hash.\"}}},\"title\":\"Coinbase Smart Wallet Factory\",\"version\":1},\"userdoc\":{\"errors\":{\"OwnerRequired()\":[{\"notice\":\"Thrown when trying to create a new `CoinbaseSmartWallet` account without any owner.\"}]},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Factory constructor used to initialize the implementation address to use for future ERC-4337 account deployments.\"},\"createAccount(bytes[],uint256)\":{\"notice\":\"Deploys an ERC-4337 account and returns its deterministic address.\"},\"getAddress(bytes[],uint256)\":{\"notice\":\"Returns the deterministic address of the account created via `createAccount()`.\"},\"implementation()\":{\"notice\":\"Address of the ERC-4337 implementation used as implementation for new accounts.\"},\"initCodeHash()\":{\"notice\":\"Returns the initialization code hash of the account (a minimal ERC1967 proxy).\"}},\"notice\":\"CoinbaseSmartWallet factory, based on Solady's ERC4337Factory.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/CoinbaseSmartWalletFactory.sol\":\"CoinbaseSmartWalletFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/p256-verifier/lib/openzeppelin-contracts/contracts/\",\":FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/p256-verifier/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/p256-verifier/lib/openzeppelin-contracts/\",\":p256-verifier/=lib/p256-verifier/\",\":solady/=lib/solady/src/\",\":webauthn-sol/=lib/webauthn-sol/src/\"]},\"sources\":{\"lib/FreshCryptoLib/solidity/src/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"lib/FreshCryptoLib/solidity/src/FCL_elliptic.sol\":{\"keccak256\":\"0x097f137d52dc9bd97d6fee7426b2d6d809ad3684767df288d58ffd76f7924e5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30ffae5b57f2e0fcabcc1642eb7c60e1b4369151d58a78034bb372187fdffa8e\",\"dweb:/ipfs/Qma8RXPxaV52ZMuR5HaoFWqMGSAo7g2u3qG6poguDbFsL4\"]},\"lib/account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/solady/src/accounts/Receiver.sol\":{\"keccak256\":\"0x9bf48dca73f428c20a0878a5a97d2d66626f835b077c012fd5b1ba6389feb2d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15cb4c81e6c5b2f609e5c6ba13d3241b5c017f9997cab5cebc0572c2dd7f34da\",\"dweb:/ipfs/QmQr7sWaqW27XhyCVGx4wED1rMmFKGhSHPjSGVLz45dbeD\"]},\"lib/solady/src/utils/Base64.sol\":{\"keccak256\":\"0x07dcf983a86bc961e4cc0b57a2cfc3e46b20a50fed9b2092c7497e5fe3715a93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65c6c0a8a29cfc5b757abe84635c83e62a177a48c2ad0be24de6b0fba1a60ea2\",\"dweb:/ipfs/QmYuYwxHiBoUt6vaLTLbs2bZamRzqrTfA4BsNZ1TApTfrm\"]},\"lib/solady/src/utils/LibClone.sol\":{\"keccak256\":\"0x6ba469171b7d79d0e2bb3999210353e89dced6c85ac2c06bb58e2ef09ac48f26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://778a87e2973196e0f2f7b716cd28646a901290998f73c053c984fac052ca1620\",\"dweb:/ipfs/QmcYg5fQyCHw7sZHmdHZtGwKEguthWjNd87oU9DWHtCLsN\"]},\"lib/solady/src/utils/LibString.sol\":{\"keccak256\":\"0x4fc555fe1ceb29162b143ce1564ac936099071c853065efc289f6c30c712f125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9d3fdb7c03ed63323ae27e0176e080f27ca453f91bacb73f8d59b09da94cf7\",\"dweb:/ipfs/Qmcix9BzxupvYYLX3t8wf4Wsf1yp1b2q65CJb5agaFPtQ9\"]},\"lib/solady/src/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x7a7acc59723ed291f24d9a2ed019109c8be69f32701f35f8a61dc7fff6652379\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bab15a03dfca0567d7472933ee4e776fc21f9dfb6c4dbc06934fa75eceeff5e\",\"dweb:/ipfs/QmPUuKsRwpZXz15DpsoJMMPN9DtZiRvMfwjqJScxkppNsP\"]},\"lib/solady/src/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x0f4da34fe99caf063e6d3a09d0a4ce783fdcd955b475d46ba00be48f7fda348f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f8e8e92e7b781a8b0d3fdb720915964f46354395a806e87aa7d0a355a024a83\",\"dweb:/ipfs/QmdDmVgUstEYpVQn97jDdaACoqoqiEvcXjxtEhC8b6vmFC\"]},\"lib/webauthn-sol/src/WebAuthn.sol\":{\"keccak256\":\"0x2441d1c9cd3ed38f53ad8920db4ccf1dfc4e081f91138432fd1a91f9a94d46c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6613c0ab26c03824b4db51d5d00a7fd665599ec1c4a20cc559c8fa19e885294\",\"dweb:/ipfs/QmaWPGM1ogH4nrxFYReaBoB7kA7AWy176kmLXFAZVEDTQp\"]},\"src/CoinbaseSmartWallet.sol\":{\"keccak256\":\"0x708d7985699d68185e35ca3359b8d973419725d9127d162b78e1131c000e92ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://95b890219a1067a9e43df42b5f5bb6e0d1748ade87d9714d204c4720b6febcd2\",\"dweb:/ipfs/QmPFAuxYAGhxdZqfCNbpa3Vc587fMBhFLQA1BtmCppVhYf\"]},\"src/CoinbaseSmartWalletFactory.sol\":{\"keccak256\":\"0xacedcda501e79257e7c73808e92c582be98f5648e7aa077da1c87c0dce3ca075\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://900f4c4fe156d307d1f6676d82779b7b821f96bd5600115e5d533c77f443dfee\",\"dweb:/ipfs/QmUM9GCLESCcZkJbLvFuDTrcedWMfZvgLSmpspgbqVErtw\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x670872019ca67ef9156017aaf0ec80c6be75258f3bcd6a21df270c45f8af3871\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fad973b58b631f72cf53f54caf736f8100942d51c632f1c5c486d5b7228d4593\",\"dweb:/ipfs/QmaxTVxCvEwe1cBoxw3TNtssBaFejnjcACdymZrYhgEeSj\"]},\"src/MultiOwnable.sol\":{\"keccak256\":\"0x9c0a57f9fd802e3ff10383257b10bea2637a01bda9986fc18a06246155fdbe6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0efe6691756a2bb0357caa1bdbd0dcc08407cd30ded5efee3fdffa4f99885c8a\",\"dweb:/ipfs/QmVz9YQaUsH4NLv47JDcVQCmUWstrgzwTTEGv7cNQTjXyg\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.23+commit.f704f362" + ], + "outputs": [], + "stateMutability": "payable" }, - "language": "Solidity", - "output": { - "abi": [ + { + "type": "function", + "name": "executeBatch", + "inputs": [ { - "inputs": [ + "name": "calls", + "type": "tuple[]", + "internalType": "struct CoinbaseSmartWallet.Call[]", + "components": [ { - "internalType": "address", - "name": "erc4337", - "type": "address" + "name": "target", + "type": "address", + "internalType": "address" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" } - ], - "stateMutability": "payable", - "type": "constructor" - }, + ] + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "executeWithoutChainIdValidation", + "inputs": [ { - "inputs": [], - "type": "error", - "name": "OwnerRequired" - }, + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "getUserOpHashWithoutChainId", + "inputs": [ { - "inputs": [ + "name": "userOp", + "type": "tuple", + "internalType": "struct UserOperation", + "components": [ { - "internalType": "bytes[]", - "name": "owners", - "type": "bytes[]" + "name": "sender", + "type": "address", + "internalType": "address" }, { - "internalType": "uint256", "name": "nonce", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function", - "name": "createAccount", - "outputs": [ + "type": "uint256", + "internalType": "uint256" + }, { - "internalType": "contract CoinbaseSmartWallet", - "name": "account", - "type": "address" - } - ] - }, - { - "inputs": [ + "name": "initCode", + "type": "bytes", + "internalType": "bytes" + }, { - "internalType": "bytes[]", - "name": "owners", - "type": "bytes[]" + "name": "callData", + "type": "bytes", + "internalType": "bytes" }, { - "internalType": "uint256", - "name": "nonce", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function", - "name": "getAddress", - "outputs": [ + "name": "callGasLimit", + "type": "uint256", + "internalType": "uint256" + }, { - "internalType": "address", - "name": "predicted", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "implementation", - "outputs": [ + "name": "verificationGasLimit", + "type": "uint256", + "internalType": "uint256" + }, { - "internalType": "address", - "name": "", - "type": "address" - } - ] - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "initCodeHash", - "outputs": [ + "name": "preVerificationGas", + "type": "uint256", + "internalType": "uint256" + }, { - "internalType": "bytes32", - "name": "result", - "type": "bytes32" + "name": "maxFeePerGas", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxPriorityFeePerGas", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "paymasterAndData", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" } ] } ], - "devdoc": { - "kind": "dev", - "methods": { - "constructor": { - "params": { - "erc4337": "The address of the ERC-4337 implementation used to deploy new cloned accounts." - } - }, - "createAccount(bytes[],uint256)": { - "details": "The account is deployed behind a minimal ERC1967 proxy whose implementation points to the registered ERC-4337 `implementation`.The `owners` parameter is a set of addresses and/or public keys depending on the signature scheme used (respectively ERC-1271 or Webauthn authentication).", - "params": { - "nonce": "The nonce of the account, allowing multiple accounts with the same set of initial owners to exist.", - "owners": "The initial set of owners that should be able to control the account." - } - }, - "getAddress(bytes[],uint256)": { - "params": { - "nonce": "The nonce provided to `createAccount()`.", - "owners": "The initial set of owners provided to `createAccount()`." - }, - "returns": { - "predicted": "The predicted account deployment address." - } - }, - "initCodeHash()": { - "returns": { - "result": "The initialization code hash." - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "constructor": { - "notice": "Factory constructor used to initialize the implementation address to use for future ERC-4337 account deployments." - }, - "createAccount(bytes[],uint256)": { - "notice": "Deploys an ERC-4337 account and returns its deterministic address." - }, - "getAddress(bytes[],uint256)": { - "notice": "Returns the deterministic address of the account created via `createAccount()`." - }, - "implementation()": { - "notice": "Address of the ERC-4337 implementation used as implementation for new accounts." - }, - "initCodeHash()": { - "notice": "Returns the initialization code hash of the account (a minimal ERC1967 proxy)." - } - }, - "version": 1 - } + "outputs": [ + { + "name": "userOpHash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" }, - "settings": { - "remappings": [ - "@openzeppelin/contracts/=lib/p256-verifier/lib/openzeppelin-contracts/contracts/", - "FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/", - "account-abstraction/=lib/account-abstraction/contracts/", - "ds-test/=lib/forge-std/lib/ds-test/src/", - "erc4626-tests/=lib/p256-verifier/lib/openzeppelin-contracts/lib/erc4626-tests/", - "forge-std/=lib/forge-std/src/", - "openzeppelin-contracts/=lib/p256-verifier/lib/openzeppelin-contracts/", - "p256-verifier/=lib/p256-verifier/", - "solady/=lib/solady/src/", - "webauthn-sol/=lib/webauthn-sol/src/" + { + "type": "function", + "name": "implementation", + "inputs": [], + "outputs": [ + { + "name": "addr", + "type": "address", + "internalType": "address" + } ], - "optimizer": { - "enabled": true, - "runs": 200 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/CoinbaseSmartWalletFactory.sol": "CoinbaseSmartWalletFactory" - }, - "evmVersion": "paris", - "libraries": {} + "stateMutability": "view" }, - "sources": { - "lib/FreshCryptoLib/solidity/src/FCL_ecdsa.sol": { - "keccak256": "0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2", - "urls": [ - "bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d", - "dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe" - ], - "license": "MIT" - }, - "lib/FreshCryptoLib/solidity/src/FCL_elliptic.sol": { - "keccak256": "0x097f137d52dc9bd97d6fee7426b2d6d809ad3684767df288d58ffd76f7924e5b", - "urls": [ - "bzz-raw://30ffae5b57f2e0fcabcc1642eb7c60e1b4369151d58a78034bb372187fdffa8e", - "dweb:/ipfs/Qma8RXPxaV52ZMuR5HaoFWqMGSAo7g2u3qG6poguDbFsL4" - ], - "license": "MIT" - }, - "lib/account-abstraction/contracts/core/Helpers.sol": { - "keccak256": "0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a", - "urls": [ - "bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746", - "dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU" - ], - "license": "GPL-3.0" - }, - "lib/account-abstraction/contracts/interfaces/UserOperation.sol": { - "keccak256": "0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c", - "urls": [ - "bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c", - "dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN" - ], - "license": "GPL-3.0" - }, - "lib/solady/src/accounts/Receiver.sol": { - "keccak256": "0x9bf48dca73f428c20a0878a5a97d2d66626f835b077c012fd5b1ba6389feb2d0", - "urls": [ - "bzz-raw://15cb4c81e6c5b2f609e5c6ba13d3241b5c017f9997cab5cebc0572c2dd7f34da", - "dweb:/ipfs/QmQr7sWaqW27XhyCVGx4wED1rMmFKGhSHPjSGVLz45dbeD" - ], - "license": "MIT" - }, - "lib/solady/src/utils/Base64.sol": { - "keccak256": "0x07dcf983a86bc961e4cc0b57a2cfc3e46b20a50fed9b2092c7497e5fe3715a93", - "urls": [ - "bzz-raw://65c6c0a8a29cfc5b757abe84635c83e62a177a48c2ad0be24de6b0fba1a60ea2", - "dweb:/ipfs/QmYuYwxHiBoUt6vaLTLbs2bZamRzqrTfA4BsNZ1TApTfrm" - ], - "license": "MIT" - }, - "lib/solady/src/utils/LibClone.sol": { - "keccak256": "0x6ba469171b7d79d0e2bb3999210353e89dced6c85ac2c06bb58e2ef09ac48f26", - "urls": [ - "bzz-raw://778a87e2973196e0f2f7b716cd28646a901290998f73c053c984fac052ca1620", - "dweb:/ipfs/QmcYg5fQyCHw7sZHmdHZtGwKEguthWjNd87oU9DWHtCLsN" - ], - "license": "MIT" - }, - "lib/solady/src/utils/LibString.sol": { - "keccak256": "0x4fc555fe1ceb29162b143ce1564ac936099071c853065efc289f6c30c712f125", - "urls": [ - "bzz-raw://8f9d3fdb7c03ed63323ae27e0176e080f27ca453f91bacb73f8d59b09da94cf7", - "dweb:/ipfs/Qmcix9BzxupvYYLX3t8wf4Wsf1yp1b2q65CJb5agaFPtQ9" - ], - "license": "MIT" - }, - "lib/solady/src/utils/SignatureCheckerLib.sol": { - "keccak256": "0x7a7acc59723ed291f24d9a2ed019109c8be69f32701f35f8a61dc7fff6652379", - "urls": [ - "bzz-raw://7bab15a03dfca0567d7472933ee4e776fc21f9dfb6c4dbc06934fa75eceeff5e", - "dweb:/ipfs/QmPUuKsRwpZXz15DpsoJMMPN9DtZiRvMfwjqJScxkppNsP" - ], - "license": "MIT" - }, - "lib/solady/src/utils/UUPSUpgradeable.sol": { - "keccak256": "0x0f4da34fe99caf063e6d3a09d0a4ce783fdcd955b475d46ba00be48f7fda348f", - "urls": [ - "bzz-raw://5f8e8e92e7b781a8b0d3fdb720915964f46354395a806e87aa7d0a355a024a83", - "dweb:/ipfs/QmdDmVgUstEYpVQn97jDdaACoqoqiEvcXjxtEhC8b6vmFC" - ], - "license": "MIT" - }, - "lib/webauthn-sol/src/WebAuthn.sol": { - "keccak256": "0x2441d1c9cd3ed38f53ad8920db4ccf1dfc4e081f91138432fd1a91f9a94d46c7", - "urls": [ - "bzz-raw://f6613c0ab26c03824b4db51d5d00a7fd665599ec1c4a20cc559c8fa19e885294", - "dweb:/ipfs/QmaWPGM1ogH4nrxFYReaBoB7kA7AWy176kmLXFAZVEDTQp" - ], - "license": "MIT" - }, - "src/CoinbaseSmartWallet.sol": { - "keccak256": "0x708d7985699d68185e35ca3359b8d973419725d9127d162b78e1131c000e92ec", - "urls": [ - "bzz-raw://95b890219a1067a9e43df42b5f5bb6e0d1748ade87d9714d204c4720b6febcd2", - "dweb:/ipfs/QmPFAuxYAGhxdZqfCNbpa3Vc587fMBhFLQA1BtmCppVhYf" - ], - "license": "MIT" - }, - "src/CoinbaseSmartWalletFactory.sol": { - "keccak256": "0xacedcda501e79257e7c73808e92c582be98f5648e7aa077da1c87c0dce3ca075", - "urls": [ - "bzz-raw://900f4c4fe156d307d1f6676d82779b7b821f96bd5600115e5d533c77f443dfee", - "dweb:/ipfs/QmUM9GCLESCcZkJbLvFuDTrcedWMfZvgLSmpspgbqVErtw" - ], - "license": "MIT" - }, - "src/ERC1271.sol": { - "keccak256": "0x670872019ca67ef9156017aaf0ec80c6be75258f3bcd6a21df270c45f8af3871", - "urls": [ - "bzz-raw://fad973b58b631f72cf53f54caf736f8100942d51c632f1c5c486d5b7228d4593", - "dweb:/ipfs/QmaxTVxCvEwe1cBoxw3TNtssBaFejnjcACdymZrYhgEeSj" - ], - "license": "MIT" - }, - "src/MultiOwnable.sol": { - "keccak256": "0x9c0a57f9fd802e3ff10383257b10bea2637a01bda9986fc18a06246155fdbe6e", - "urls": [ - "bzz-raw://0efe6691756a2bb0357caa1bdbd0dcc08407cd30ded5efee3fdffa4f99885c8a", - "dweb:/ipfs/QmVz9YQaUsH4NLv47JDcVQCmUWstrgzwTTEGv7cNQTjXyg" - ], - "license": "MIT" - } + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "owners", + "type": "bytes[]", + "internalType": "bytes[]" + } + ], + "outputs": [], + "stateMutability": "payable" }, - "version": 1 - }, - "ast": { - "absolutePath": "src/CoinbaseSmartWalletFactory.sol", - "id": 50629, - "exportedSymbols": { - "CoinbaseSmartWallet": [ - 50482 + { + "type": "function", + "name": "isOwnerAddress", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } ], - "CoinbaseSmartWalletFactory": [ - 50628 + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } ], - "LibClone": [ - 48580 - ] + "stateMutability": "view" }, - "nodeType": "SourceUnit", - "src": "32:3617:41", - "nodes": [ - { - "id": 50484, - "nodeType": "PragmaDirective", - "src": "32:23:41", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".4" - ] - }, - { - "id": 50486, - "nodeType": "ImportDirective", - "src": "57:51:41", - "nodes": [], - "absolutePath": "lib/solady/src/utils/LibClone.sol", - "file": "solady/utils/LibClone.sol", - "nameLocation": "-1:-1:-1", - "scope": 50629, - "sourceUnit": 48581, - "symbolAliases": [ - { - "foreign": { - "id": 50485, - "name": "LibClone", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48580, - "src": "65:8:41", - "typeDescriptions": {} + { + "type": "function", + "name": "isOwnerBytes", + "inputs": [ + { + "name": "account", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isOwnerPublicKey", + "inputs": [ + { + "name": "x", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "y", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isValidSignature", + "inputs": [ + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "result", + "type": "bytes4", + "internalType": "bytes4" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nextOwnerIndex", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "ownerAtIndex", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeOwnerAtIndex", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "replaySafeHash", + "inputs": [ + { + "name": "hash", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "validateUserOp", + "inputs": [ + { + "name": "userOp", + "type": "tuple", + "internalType": "struct UserOperation", + "components": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "initCode", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "callData", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "callGasLimit", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "verificationGasLimit", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "preVerificationGas", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxFeePerGas", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "maxPriorityFeePerGas", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "paymasterAndData", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "signature", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "name": "userOpHash", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "missingAccountFunds", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "validationData", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "payable" + }, + { + "type": "event", + "name": "AddOwner", + "inputs": [ + { + "name": "index", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "owner", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RemoveOwner", + "inputs": [ + { + "name": "index", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "owner", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AlreadyOwner", + "inputs": [ + { + "name": "owner", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "type": "error", + "name": "Initialized", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidEthereumAddressOwner", + "inputs": [ + { + "name": "owner", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "type": "error", + "name": "InvalidNonceKey", + "inputs": [ + { + "name": "key", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InvalidOwnerBytesLength", + "inputs": [ + { + "name": "owner", + "type": "bytes", + "internalType": "bytes" + } + ] + }, + { + "type": "error", + "name": "NoOwnerAtIndex", + "inputs": [ + { + "name": "index", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "SelectorNotAllowed", + "inputs": [ + { + "name": "selector", + "type": "bytes4", + "internalType": "bytes4" + } + ] + }, + { + "type": "error", + "name": "Unauthorized", + "inputs": [] + }, + { + "type": "error", + "name": "UnauthorizedCallContext", + "inputs": [] + }, + { + "type": "error", + "name": "UpgradeFailed", + "inputs": [] + } + ], + "bytecode": { + "object": "0x60a0604052306080523480156200001557600080fd5b50604080516001808252818301909252600091816020015b60608152602001906001900390816200002d57905050604080516000602082015291925001604051602081830303815290604052816000815181106200007757620000776200037a565b60209081029190910101526200008d8162000094565b50620005b0565b60005b81518110156200022657818181518110620000b657620000b66200037a565b602002602001015151602014158015620000ee5750818181518110620000e057620000e06200037a565b602002602001015151604014155b1562000136578181815181106200010957620001096200037a565b60200260200101516040516327755b9160e11b81526004016200012d9190620003b6565b60405180910390fd5b8181815181106200014b576200014b6200037a565b60200260200101515160201480156200019357506001600160a01b0380168282815181106200017e576200017e6200037a565b60200260200101516200019190620003eb565b115b15620001d257818181518110620001ae57620001ae6200037a565b602002602001015160405163bff1ac6560e01b81526004016200012d9190620003b6565b6200021d828281518110620001eb57620001eb6200037a565b6020026020010151620002036200022a60201b60201c565b8054906000620002138362000413565b909155506200023d565b60010162000097565b5050565b6000805160206200383783398151915290565b620002488262000326565b156200026b578160405163468b12ad60e11b81526004016200012d9190620003b6565b600160008051602062003837833981519152600201836040516200029091906200043b565b908152604051908190036020019020805491151560ff1990921691909117905581620002c86000805160206200383783398151915290565b60008381526001919091016020526040902090620002e79082620004e4565b50807f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f378386220220836040516200031a9190620003b6565b60405180910390a25050565b600060008051602062003837833981519152600201826040516200034b91906200043b565b9081526040519081900360200190205460ff1692915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60005b83811015620003ad57818101518382015260200162000393565b50506000910152565b6020815260008251806020840152620003d781604085016020870162000390565b601f01601f19169190910160400192915050565b805160208083015191908110156200040d576000198160200360031b1b821691505b50919050565b6000600182016200043457634e487b7160e01b600052601160045260246000fd5b5060010190565b600082516200044f81846020870162000390565b9190910192915050565b600181811c908216806200046e57607f821691505b6020821081036200040d57634e487b7160e01b600052602260045260246000fd5b601f821115620004df576000816000526020600020601f850160051c81016020861015620004ba5750805b601f850160051c820191505b81811015620004db57828155600101620004c6565b5050505b505050565b81516001600160401b0381111562000500576200050062000364565b620005188162000511845462000459565b846200048f565b602080601f831160018114620005505760008415620005375750858301515b600019600386901b1c1916600185901b178555620004db565b600085815260208120601f198616915b82811015620005815788860151825594840194600190910190840162000560565b5085821015620005a05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051613264620005d36000396000818161081e015261095501526132646000f3fe60806040526004361061014f5760003560e01c806372de3b5a116100b6578063b0d691fe1161006f578063b0d691fe146103f4578063b61d27f61461041b578063bf6ba1fc1461042e578063ce1506be14610441578063d948fd2e14610461578063f698da251461048357610156565b806372de3b5a1461032957806384b0196e1461034957806388ce4c7c146103715780638ea69029146103875780639f9bcb34146103b4578063a2e1a8d8146103d457610156565b80633a871cdd116101085780633a871cdd146102655780634f1ef286146102865780634f6e7f221461029957806352d1902d146102b95780635c60da1b146102ce5780636f2de70e1461031657610156565b8063066a1eb7146101845780630f0f3f24146101b95780631626ba7e146101d95780631ca5393f1461021257806329565e3b1461023257806334fcd5be1461025257610156565b3661015657005b60003560e01c63bc197c81811463f23a6e6182141763150b7a028214171561018257806020526020603cf35b005b34801561019057600080fd5b506101a461019f366004612769565b610498565b60405190151581526020015b60405180910390f35b3480156101c557600080fd5b506101826101d43660046127a7565b610507565b3480156101e557600080fd5b506101f96101f436600461280a565b61053f565b6040516001600160e01b031990911681526020016101b0565b34801561021e57600080fd5b506101a461022d366004612940565b610579565b34801561023e57600080fd5b5061018261024d366004612769565b6105b4565b6101826102603660046129b8565b6105dd565b610278610273366004612a12565b6106e1565b6040519081526020016101b0565b610182610294366004612a5f565b61081c565b3480156102a557600080fd5b506102786102b4366004612a98565b610900565b3480156102c557600080fd5b50610278610951565b3480156102da57600080fd5b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545b6040516001600160a01b0390911681526020016101b0565b6101826103243660046129b8565b6109b1565b34801561033557600080fd5b50610182610344366004612acc565b6109f1565b34801561035557600080fd5b5061035e610ade565b6040516101b09796959493929190612b35565b34801561037d57600080fd5b5061027861210581565b34801561039357600080fd5b506103a76103a2366004612acc565b610b05565b6040516101b09190612bce565b3480156103c057600080fd5b506101a46103cf366004612be1565b610bc6565b3480156103e057600080fd5b506101a46103ef3660046127a7565b610c42565b34801561040057600080fd5b50735ff137d4b0fdcd49dca30c7cf57e578a026d27896102fe565b610182610429366004612c0b565b610c88565b61018261043c366004612c64565b610cec565b34801561044d57600080fd5b5061027861045c366004612acc565b610dad565b34801561046d57600080fd5b5060008051602061320f83398151915254610278565b34801561048f57600080fd5b50610278610db8565b60408051602081018490529081018290526000907f97e2c6aad4ce5d562ebfaa00db6b9e0fb66ea5d8162ed5b243f51a2e03086f029060600160408051601f19818403018152908290526104eb91612c99565b9081526040519081900360200190205460ff1690505b92915050565b61050f610e3e565b604080516001600160a01b038316602082015261053c91015b604051602081830303815290604052610e70565b50565b600061055461054d85610dad565b8484610e9b565b156105675750630b135d3f60e11b610572565b506001600160e01b03195b9392505050565b600060008051602061320f8339815191526002018260405161059b9190612c99565b9081526040519081900360200190205460ff1692915050565b6105bc610e3e565b60408051602081018490529081018290526105d990606001610528565b5050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d27891461060057610600610e3e565b60005b818110156106dc576106d483838381811061062057610620612cb5565b90506020028101906106329190612ccb565b6106409060208101906127a7565b84848481811061065257610652612cb5565b90506020028101906106649190612ccb565b6020013585858581811061067a5761067a612cb5565b905060200281019061068c9190612ccb565b61069a906040810190612ce1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fb092505050565b600101610603565b505050565b600033735ff137d4b0fdcd49dca30c7cf57e578a026d278914610716576040516282b42960e81b815260040160405180910390fd5b81602085013560401c600461072e6060880188612ce1565b90501015801561077257506107466060870187612ce1565b61075591600491600091612d27565b61075e91612d51565b6001600160e01b03191663bf6ba1fc60e01b145b156107b15761078086610900565b945061210581146107ac57604051632ef3781360e01b8152600481018290526024015b60405180910390fd5b6107d6565b61210581036107d657604051632ef3781360e01b8152600481018290526024016107a3565b6107ed856107e8610140890189612ce1565b610e9b565b156107fc576000925050610802565b60019250505b80156108145760003860003884335af1505b509392505050565b7f000000000000000000000000000000000000000000000000000000000000000030810361085257639f03a0266000526004601cfd5b61085b84611020565b8360601b60601c93506352d1902d6001527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80602060016004601d895afa51146108ad576355299b496001526004601dfd5b847fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600038a284905581156108fa57604051828482376000388483885af46108f8573d6000823e3d81fd5b505b50505050565b600061090b82611028565b604080516020810192909252735ff137d4b0fdcd49dca30c7cf57e578a026d2789908201526060015b604051602081830303815290604052805190602001209050919050565b60007f000000000000000000000000000000000000000000000000000000000000000030811461098957639f03a0266000526004601cfd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91505b5090565b60008051602061320f83398151915254156109df576040516302ed543d60e51b815260040160405180910390fd5b6105d96109ec8284612d81565b611041565b6109f9610e3e565b6000610a0482610b05565b90508051600003610a2b5760405163340c473d60e11b8152600481018390526024016107a3565b6040517f97e2c6aad4ce5d562ebfaa00db6b9e0fb66ea5d8162ed5b243f51a2e03086f0290610a5b908390612c99565b908152604051908190036020019020805460ff19169055610a8760008051602061320f83398151915290565b600083815260019190910160205260408120610aa29161271f565b817fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff82604051610ad29190612bce565b60405180910390a25050565b600f60f81b6060806000808083610af3611193565b97989097965046955030945091925090565b60008181527f97e2c6aad4ce5d562ebfaa00db6b9e0fb66ea5d8162ed5b243f51a2e03086f0160205260409020805460609190610b4190612e06565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6d90612e06565b8015610bba5780601f10610b8f57610100808354040283529160200191610bba565b820191906000526020600020905b815481529060010190602001808311610b9d57829003601f168201915b50505050509050919050565b60006001600160e01b031982166329565e3b60e01b1480610bf757506001600160e01b031982166303c3cfc960e21b145b80610c1257506001600160e01b0319821663396f1dad60e11b145b80610c2d57506001600160e01b0319821663278f794360e11b145b15610c3a57506001919050565b506000919050565b600060008051602061320f833981519152604080516001600160a01b0385166020820152600292909201910160408051601f198184030181529082905261059b91612c99565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610cab57610cab610e3e565b6108fa848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fb092505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610d1f576040516282b42960e81b815260040160405180910390fd5b6000610d2e6004828486612d27565b610d3791612d51565b9050610d4281610bc6565b610d6b57604051631d8370a360e11b81526001600160e01b0319821660048201526024016107a3565b6106dc30600085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fb092505050565b6000610501826111da565b6000806000610dc5611193565b8151602080840191909120825182840120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9481019490945283019190915260608201524660808201523060a0820152919350915060c001604051602081830303815290604052805190602001209250505090565b610e4733610c42565b80610e5157503330145b15610e5857565b6040516282b42960e81b815260040160405180910390fd5b61053c8160008051602061320f8339815191525b8054906000610e9283612e50565b91905055611210565b600080610eaa83850185612e69565b90506000610ebb8260000151610b05565b90508051602003610f1a576001600160a01b03610ed782612ef5565b1115610ef8578060405163bff1ac6560e01b81526004016107a39190612bce565b600060208201519050610f10818885602001516112df565b9350505050610572565b8051604003610f955760008082806020019051810190610f3a9190612f19565b9150915060008460200151806020019051810190610f589190612f82565b9050610f8989604051602001610f7091815260200190565b60405160208183030381529060405260008386866113e4565b95505050505050610572565b806040516327755b9160e11b81526004016107a39190612bce565b600080846001600160a01b03168484604051610fcc9190612c99565b60006040518083038185875af1925050503d8060008114611009576040519150601f19603f3d011682016040523d82523d6000602084013e61100e565b606091505b5091509150816108f857805160208201fd5b61053c610e3e565b600061103382611754565b805190602001209050919050565b60005b81518110156105d95781818151811061105f5761105f612cb5565b602002602001015151602014158015611093575081818151811061108557611085612cb5565b602002602001015151604014155b156110cc578181815181106110aa576110aa612cb5565b60200260200101516040516327755b9160e11b81526004016107a39190612bce565b8181815181106110de576110de612cb5565b602002602001015151602014801561112057506001600160a01b03801682828151811061110d5761110d612cb5565b602002602001015161111e90612ef5565b115b156111595781818151811061113757611137612cb5565b602002602001015160405163bff1ac6560e01b81526004016107a39190612bce565b61118b82828151811061116e5761116e612cb5565b6020026020010151610e8460008051602061320f83398151915290565b600101611044565b604080518082018252601581527410dbda5b98985cd94814db585c9d0815d85b1b195d605a1b602080830191909152825180840190935260018352603160f81b9083015291565b60006111e4610db8565b6111ed83611827565b60405161190160f01b602082015260228101929092526042820152606201610934565b61121982610579565b15611239578160405163468b12ad60e11b81526004016107a39190612bce565b600160008051602061320f8339815191526002018360405161125b9190612c99565b908152604051908190036020019020805491151560ff199092169190911790558161129160008051602061320f83398151915290565b600083815260019190910160205260409020906112ae908261308d565b50807f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022083604051610ad29190612bce565b6001600160a01b03909216916000831561057257604051836000526020830151604052604083510361134f576040830151601b8160ff1c016020528060011b60011c60605250602060016080600060015afa805186183d151761134d57506000606052604052506001610572565b505b604183510361139557606083015160001a6020526040830151606052602060016080600060015afa805186183d151761139357506000606052604052506001610572565b505b600060605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b60007f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a88460a00151111561141a5750600061174b565b606084015160009061143d9061143181601561314c565b60208801519190611862565b90507fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63481805190602001201461147757600091505061174b565b6000611485886001806118c8565b604051602001611495919061315f565b604051602081830303815290604052905060006114cd8760400151835189604001516114c1919061314c565b60208a01519190611862565b905081805190602001208180519060200120146114f0576000935050505061174b565b86518051600160f81b918291602090811061150d5761150d612cb5565b0160200151166001600160f81b0319161461152e576000935050505061174b565b878015611566575086518051600160fa1b918291602090811061155357611553612cb5565b0160200151166001600160f81b03191614155b15611577576000935050505061174b565b60006002886020015160405161158d9190612c99565b602060405180830381855afa1580156115aa573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906115cd91906131a0565b9050600060028960000151836040516020016115ea9291906131b9565b60408051601f198184030181529082905261160491612c99565b602060405180830381855afa158015611621573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061164491906131a0565b6080808b015160a0808d015160408051602081018790529081019390935260608301529181018b905290810189905290915060009060c00160405160208183030381529060405290506000806101006001600160a01b0316836040516116aa9190612c99565b600060405180830381855afa9150503d80600081146116e5576040519150601f19603f3d011682016040523d82523d6000602084013e6116ea565b606091505b508051919350915015158280156116fe5750805b1561172a578180602001905181019061171791906131a0565b600114995050505050505050505061174b565b61173f858e608001518f60a001518f8f6119bd565b99505050505050505050505b95945050505050565b606081356020830135600061177461176f6040870187612ce1565b611aa0565b9050600061178861176f6060880188612ce1565b9050608086013560a087013560c088013560e08901356101008a013560006117b761176f6101208e018e612ce1565b604080516001600160a01b039c909c1660208d01528b81019a909a5260608b019890985250608089019590955260a088019390935260c087019190915260e08601526101008501526101208401526101408084019190915281518084039091018152610160909201905292915050565b604080517f9b493d222105fee7df163ab5d57f0bf1ffd2da04dd5fafbe10b54c41c1adc6576020820152908101829052600090606001610934565b60608351828111611871578092505b83811161187c578093505b5081831015610572575060405182820380825293830193601f19601f820181165b868101518482015281018061189d5750600083830160200152603f9091011681016040529392505050565b606083518015610814576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f52602083018181018388602001018051600082525b60038a0199508951603f8160121c1651600053603f81600c1c1651600153603f8160061c1651600253603f811651600353506000518452600484019350828410611944579052602001604052613d3d60f01b60038406600204808303919091526000861515909102918290035290038252509392505050565b60008415806119da57506000805160206131ef8339815191528510155b806119e3575083155b806119fc57506000805160206131ef8339815191528410155b15611a095750600061174b565b611a138383611ab3565b611a1f5750600061174b565b6000611a2a85611bad565b905060006000805160206131ef833981519152828909905060006000805160206131ef83398151915283890990506000611a6687878585611c1f565b90506000805160206131ef833981519152611a8f8a6000805160206131ef8339815191526131db565b8208159a9950505050505050505050565b6000604051828085833790209392505050565b600082158015611ac1575081155b80611ad95750600160601b63ffffffff60c01b031983145b80611af15750600160601b63ffffffff60c01b031982145b15611afe57506000610501565b6000600160601b63ffffffff60c01b031983840990506000600160601b63ffffffff60c01b0319807fffffffff00000001000000000000000000000000fffffffffffffffffffffffc8709600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b0319898a0909089050600160601b63ffffffff60c01b03197f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b820891909114949350505050565b600060405160208152602080820152602060408201528260608201527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f60808201526000805160206131ef83398151915260a082015260208160c0836005600019fa611c1857600080fd5b5192915050565b600080808060ff818088158015611c34575087155b15611c4857600096505050505050506122e1565b611c947f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f58d8d6122e9565b909250905081158015611ca5575080155b15611cd3576000805160206131ef833981519152886000805160206131ef833981519152038a089850600097505b600189841c16600189851c1660011b015b80611d065760018403935060018a851c1660018a861c1660011b019050611ce4565b50600189841c16600189851c1660011b01955060018603611d68577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29696507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f593505b60028603611d77578a96508993505b60038603611d86578196508093505b60018303925060019550600194505b82600019111561226a57600160601b63ffffffff60c01b031984600209600160601b63ffffffff60c01b0319818209600160601b63ffffffff60c01b0319818a09600160601b63ffffffff60c01b03198284099250600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b03198b8d08600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b0319038e0809600309600160601b63ffffffff60c01b03198985099850600160601b63ffffffff60c01b03198a84099950600160601b63ffffffff60c01b031980836002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319838409089a50600160601b63ffffffff60c01b03198083600160601b63ffffffff60c01b0319038d0882099250600160601b63ffffffff60c01b031983600160601b63ffffffff60c01b03198a870908975060018d881c1660018d891c1660011b01905080611f125787600160601b63ffffffff60c01b03190397505050505061225f565b60018103611f61577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29693507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f592505b60028103611f70578e93508d92505b60038103611f7f578593508492505b89611f98575091985060019750879650945061225f9050565b600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b03198b860908600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198d880908935080612151578361215157600160601b63ffffffff60c01b0319896002600160601b0363ffffffff60c01b0319099450600160601b63ffffffff60c01b03198586099350600160601b63ffffffff60c01b0319848d099250600160601b63ffffffff60c01b03198486099450600160601b63ffffffff60c01b0319808c600160601b63ffffffff60c01b0319038e08600160601b63ffffffff60c01b03198d8f08099050600160601b63ffffffff60c01b0319816003099150600160601b63ffffffff60c01b03198a86099950600160601b63ffffffff60c01b03198b85099a50600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848509089b50600160601b63ffffffff60c01b0319808d600160601b63ffffffff60c01b031903850883099350600160601b63ffffffff60c01b0319808a870985089850505050505061225f565b600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b0319848309600160601b63ffffffff60c01b0319838d099b50600160601b63ffffffff60c01b0319818c099a50600160601b63ffffffff60c01b0319838e09600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031984600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b031987880908089350600160601b63ffffffff60c01b031980838d09600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b031903860809089a50505050809a50505050505b600183039250611d95565b60405186606082015260208152602080820152602060408201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa6122c457600080fd5b600160601b63ffffffff60c01b0319815189099750505050505050505b949350505050565b60008080808661230057858593509350505061236e565b8461231257878793509350505061236e565b858814801561232057508487145b15612341576123328888600180612377565b929a509098509250905061235b565b61235088886001808a8a6124d2565b929a50909850925090505b61236788888484612656565b9350935050505b94509492505050565b600080600080600160601b63ffffffff60c01b0319876002099350600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b03198289099050600160601b63ffffffff60c01b03198285099250600160601b63ffffffff60c01b03198683099150600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b0319888b08600160601b63ffffffff60c01b031989600160601b63ffffffff60c01b0319038c08096003099550600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319888909089350600160601b63ffffffff60c01b03198085600160601b63ffffffff60c01b031903830887099750600160601b63ffffffff60c01b03198584099050600160601b63ffffffff60c01b031980888509600160601b63ffffffff60c01b03190389089250945094509450949050565b600080600080886000036124f157508492508391506001905080612649565b600160601b63ffffffff60c01b0319988903988981898809089450600160601b63ffffffff60c01b03198a600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198a8909089550600160601b63ffffffff60c01b03198687099350600160601b63ffffffff60c01b03198685099250600160601b63ffffffff60c01b03198489099150600160601b63ffffffff60c01b03198388099050600160601b63ffffffff60c01b0319848b099750600160601b63ffffffff60c01b031980896002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b0319898a0908089350600160601b63ffffffff60c01b031980848b09600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b0319038d08090892505b9650965096509692505050565b6000806000612664846126c3565b9050600160601b63ffffffff60c01b031981870991506000600160601b63ffffffff60c01b03198287099050600160601b63ffffffff60c01b03198182099150600160601b63ffffffff60c01b03198289099350505094509492505050565b600060405160208152602080820152602060408201528260608201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa611c1857600080fd5b50805461272b90612e06565b6000825580601f1061273b575050565b601f01602090049060005260206000209081019061053c91905b808211156109ad5760008155600101612755565b6000806040838503121561277c57600080fd5b50508035926020909101359150565b80356001600160a01b03811681146127a257600080fd5b919050565b6000602082840312156127b957600080fd5b6105728261278b565b60008083601f8401126127d457600080fd5b5081356001600160401b038111156127eb57600080fd5b60208301915083602082850101111561280357600080fd5b9250929050565b60008060006040848603121561281f57600080fd5b8335925060208401356001600160401b0381111561283c57600080fd5b612848868287016127c2565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561288d5761288d612855565b60405290565b604051601f8201601f191681016001600160401b03811182821017156128bb576128bb612855565b604052919050565b60006001600160401b038211156128dc576128dc612855565b50601f01601f191660200190565b600082601f8301126128fb57600080fd5b813561290e612909826128c3565b612893565b81815284602083860101111561292357600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561295257600080fd5b81356001600160401b0381111561296857600080fd5b6122e1848285016128ea565b60008083601f84011261298657600080fd5b5081356001600160401b0381111561299d57600080fd5b6020830191508360208260051b850101111561280357600080fd5b600080602083850312156129cb57600080fd5b82356001600160401b038111156129e157600080fd5b6129ed85828601612974565b90969095509350505050565b60006101608284031215612a0c57600080fd5b50919050565b600080600060608486031215612a2757600080fd5b83356001600160401b03811115612a3d57600080fd5b612a49868287016129f9565b9660208601359650604090950135949350505050565b600080600060408486031215612a7457600080fd5b612a7d8461278b565b925060208401356001600160401b0381111561283c57600080fd5b600060208284031215612aaa57600080fd5b81356001600160401b03811115612ac057600080fd5b6122e1848285016129f9565b600060208284031215612ade57600080fd5b5035919050565b60005b83811015612b00578181015183820152602001612ae8565b50506000910152565b60008151808452612b21816020860160208601612ae5565b601f01601f19169290920160200192915050565b60ff60f81b881681526000602060e06020840152612b5660e084018a612b09565b8381036040850152612b68818a612b09565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015612bbc57835183529284019291840191600101612ba0565b50909c9b505050505050505050505050565b6020815260006105726020830184612b09565b600060208284031215612bf357600080fd5b81356001600160e01b03198116811461057257600080fd5b60008060008060608587031215612c2157600080fd5b612c2a8561278b565b93506020850135925060408501356001600160401b03811115612c4c57600080fd5b612c58878288016127c2565b95989497509550505050565b60008060208385031215612c7757600080fd5b82356001600160401b03811115612c8d57600080fd5b6129ed858286016127c2565b60008251612cab818460208701612ae5565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b60008235605e19833603018112612cab57600080fd5b6000808335601e19843603018112612cf857600080fd5b8301803591506001600160401b03821115612d1257600080fd5b60200191503681900382131561280357600080fd5b60008085851115612d3757600080fd5b83861115612d4457600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015612d795780818660040360031b1b83161692505b505092915050565b60006001600160401b0380841115612d9b57612d9b612855565b8360051b6020612dad60208301612893565b86815291850191602081019036841115612dc657600080fd5b865b84811015612dfa57803586811115612de05760008081fd5b612dec36828b016128ea565b845250918301918301612dc8565b50979650505050505050565b600181811c90821680612e1a57607f821691505b602082108103612a0c57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612e6257612e62612e3a565b5060010190565b600060208284031215612e7b57600080fd5b81356001600160401b0380821115612e9257600080fd5b9083019060408286031215612ea657600080fd5b604051604081018181108382111715612ec157612ec1612855565b60405282358152602083013582811115612eda57600080fd5b612ee6878286016128ea565b60208301525095945050505050565b80516020808301519190811015612a0c5760001960209190910360031b1b16919050565b60008060408385031215612f2c57600080fd5b505080516020909101519092909150565b600082601f830112612f4e57600080fd5b8151612f5c612909826128c3565b818152846020838601011115612f7157600080fd5b6122e1826020830160208701612ae5565b600060208284031215612f9457600080fd5b81516001600160401b0380821115612fab57600080fd5b9083019060c08286031215612fbf57600080fd5b612fc761286b565b825182811115612fd657600080fd5b612fe287828601612f3d565b825250602083015182811115612ff757600080fd5b61300387828601612f3d565b60208301525060408301516040820152606083015160608201526080830151608082015260a083015160a082015280935050505092915050565b601f8211156106dc576000816000526020600020601f850160051c810160208610156130665750805b601f850160051c820191505b8181101561308557828155600101613072565b505050505050565b81516001600160401b038111156130a6576130a6612855565b6130ba816130b48454612e06565b8461303d565b602080601f8311600181146130ef57600084156130d75750858301515b600019600386901b1c1916600185901b178555613085565b600085815260208120601f198616915b8281101561311e578886015182559484019460019091019084016130ff565b508582101561313c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561050157610501612e3a565b6c1131b430b63632b733b2911d1160991b8152815160009061318881600d850160208701612ae5565b601160f91b600d939091019283015250600e01919050565b6000602082840312156131b257600080fd5b5051919050565b600083516131cb818460208801612ae5565b9190910191825250602001919050565b8181038181111561050157610501612e3a56feffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63255197e2c6aad4ce5d562ebfaa00db6b9e0fb66ea5d8162ed5b243f51a2e03086f00a26469706673582212206267bdd6ae13c948b83275fcdafdc1366dd287cbf41ef689e1d49904a10ea33e64736f6c6343000817003397e2c6aad4ce5d562ebfaa00db6b9e0fb66ea5d8162ed5b243f51a2e03086f00", + "sourceMap": "874:13344:40:-:0;;;1520:4:36;1461:66;;4176:257:40;;;;;;;;;-1:-1:-1;4333:14:40;;;4345:1;4333:14;;;;;;;;;4309:21;;4333:14;;;;;;;;;;;;;;;;;;;-1:-1:-1;4369:22:40;;;4388:1;4369:22;;;292:51:62;4309:38:40;;-1:-1:-1;265:18:62;4369:22:40;;;;;;;;;;;;4357:6;4364:1;4357:9;;;;;;;;:::i;:::-;;;;;;;;;;:34;4401:25;4419:6;4401:17;:25::i;:::-;4190:243;874:13344;;6627:532:43;6709:9;6704:449;6724:6;:13;6720:1;:17;6704:449;;;6762:6;6769:1;6762:9;;;;;;;;:::i;:::-;;;;;;;:16;6782:2;6762:22;;:48;;;;;6788:6;6795:1;6788:9;;;;;;;;:::i;:::-;;;;;;;:16;6808:2;6788:22;;6762:48;6758:128;;;6861:6;6868:1;6861:9;;;;;;;;:::i;:::-;;;;;;;6837:34;;-1:-1:-1;;;6837:34:43;;;;;;;;:::i;:::-;;;;;;;;6758:128;6904:6;6911:1;6904:9;;;;;;;;:::i;:::-;;;;;;;:16;6924:2;6904:22;:73;;;;;-1:-1:-1;;;;;6930:47:43;;6946:6;6953:1;6946:9;;;;;;;;:::i;:::-;;;;;;;6938:18;;;:::i;:::-;6930:47;6904:73;6900:157;;;7032:6;7039:1;7032:9;;;;;;;;:::i;:::-;;;;;;;7004:38;;-1:-1:-1;;;7004:38:43;;;;;;;;:::i;6900:157::-;7071:71;7088:6;7095:1;7088:9;;;;;;;;:::i;:::-;;;;;;;7099:25;:23;;;:25;;:::i;:::-;:42;;;:40;:42;;;:::i;:::-;;;;-1:-1:-1;7071:16:43;:71::i;:::-;6739:3;;6704:449;;;;6627:532;:::o;8529:194::-;-1:-1:-1;;;;;;;;;;;8677:30:43;8529:194::o;7672:305::-;7764:19;7777:5;7764:12;:19::i;:::-;7760:51;;;7805:5;7792:19;;-1:-1:-1;;;7792:19:43;;;;;;;;:::i;7760:51::-;7865:4;-1:-1:-1;;;;;;;;;;;7822:33:43;;7856:5;7822:40;;;;;;:::i;:::-;;;;;;;;;;;;;;:47;;;;;-1:-1:-1;;7822:47:43;;;;;;;;;7927:5;7879:25;-1:-1:-1;;;;;;;;;;;8677:30:43;8529:194;7879:25;:45;;;;:38;;;;;:45;;;;;;:53;;:45;:53;:::i;:::-;;7957:5;7948:22;7964:5;7948:22;;;;;;:::i;:::-;;;;;;;;7672:305;;:::o;5518:145::-;5591:4;-1:-1:-1;;;;;;;;;;;5614:33:43;;5648:7;5614:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5518:145;-1:-1:-1;;5518:145:43:o;14:127:62:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;354:127;415:10;410:3;406:20;403:1;396:31;446:4;443:1;436:15;470:4;467:1;460:15;486:250;571:1;581:113;595:6;592:1;589:13;581:113;;;671:11;;;665:18;652:11;;;645:39;617:2;610:10;581:113;;;-1:-1:-1;;728:1:62;710:16;;703:27;486:250::o;741:394::-;888:2;877:9;870:21;851:4;920:6;914:13;963:6;958:2;947:9;943:18;936:34;979:79;1051:6;1046:2;1035:9;1031:18;1026:2;1018:6;1014:15;979:79;:::i;:::-;1119:2;1098:15;-1:-1:-1;;1094:29:62;1079:45;;;;1126:2;1075:54;;741:394;-1:-1:-1;;741:394:62:o;1140:297::-;1258:12;;1305:4;1294:16;;;1288:23;;1258:12;1323:16;;1320:111;;;1417:1;1413:6;1403;1397:4;1393:17;1390:1;1386:25;1382:38;1375:5;1371:50;1362:59;;1320:111;;1140:297;;;:::o;1442:232::-;1481:3;1502:17;;;1499:140;;1561:10;1556:3;1552:20;1549:1;1542:31;1596:4;1593:1;1586:15;1624:4;1621:1;1614:15;1499:140;-1:-1:-1;1666:1:62;1655:13;;1442:232::o;1679:287::-;1808:3;1846:6;1840:13;1862:66;1921:6;1916:3;1909:4;1901:6;1897:17;1862:66;:::i;:::-;1944:16;;;;;1679:287;-1:-1:-1;;1679:287:62:o;1971:380::-;2050:1;2046:12;;;;2093;;;2114:61;;2168:4;2160:6;2156:17;2146:27;;2114:61;2221:2;2213:6;2210:14;2190:18;2187:38;2184:161;;2267:10;2262:3;2258:20;2255:1;2248:31;2302:4;2299:1;2292:15;2330:4;2327:1;2320:15;2481:542;2582:2;2577:3;2574:11;2571:446;;;2618:1;2642:5;2639:1;2632:16;2686:4;2683:1;2673:18;2756:2;2744:10;2740:19;2737:1;2733:27;2727:4;2723:38;2792:4;2780:10;2777:20;2774:47;;;-1:-1:-1;2815:4:62;2774:47;2870:2;2865:3;2861:12;2858:1;2854:20;2848:4;2844:31;2834:41;;2925:82;2943:2;2936:5;2933:13;2925:82;;;2988:17;;;2969:1;2958:13;2925:82;;;2929:3;;;2571:446;2481:542;;;:::o;3199:1341::-;3317:10;;-1:-1:-1;;;;;3339:30:62;;3336:56;;;3372:18;;:::i;:::-;3401:96;3490:6;3450:38;3482:4;3476:11;3450:38;:::i;:::-;3444:4;3401:96;:::i;:::-;3552:4;;3609:2;3598:14;;3626:1;3621:662;;;;4327:1;4344:6;4341:89;;;-1:-1:-1;4396:19:62;;;4390:26;4341:89;-1:-1:-1;;3156:1:62;3152:11;;;3148:24;3144:29;3134:40;3180:1;3176:11;;;3131:57;4443:81;;3591:943;;3621:662;2428:1;2421:14;;;2465:4;2452:18;;-1:-1:-1;;3657:20:62;;;3774:236;3788:7;3785:1;3782:14;3774:236;;;3877:19;;;3871:26;3856:42;;3969:27;;;;3937:1;3925:14;;;;3804:19;;3774:236;;;3778:3;4038:6;4029:7;4026:19;4023:201;;;4099:19;;;4093:26;-1:-1:-1;;4182:1:62;4178:14;;;4194:3;4174:24;4170:37;4166:42;4151:58;4136:74;;4023:201;-1:-1:-1;;;;;4270:1:62;4254:14;;;4250:22;4237:36;;-1:-1:-1;3199:1341:62:o;:::-;874:13344:40;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x60806040526004361061014f5760003560e01c806372de3b5a116100b6578063b0d691fe1161006f578063b0d691fe146103f4578063b61d27f61461041b578063bf6ba1fc1461042e578063ce1506be14610441578063d948fd2e14610461578063f698da251461048357610156565b806372de3b5a1461032957806384b0196e1461034957806388ce4c7c146103715780638ea69029146103875780639f9bcb34146103b4578063a2e1a8d8146103d457610156565b80633a871cdd116101085780633a871cdd146102655780634f1ef286146102865780634f6e7f221461029957806352d1902d146102b95780635c60da1b146102ce5780636f2de70e1461031657610156565b8063066a1eb7146101845780630f0f3f24146101b95780631626ba7e146101d95780631ca5393f1461021257806329565e3b1461023257806334fcd5be1461025257610156565b3661015657005b60003560e01c63bc197c81811463f23a6e6182141763150b7a028214171561018257806020526020603cf35b005b34801561019057600080fd5b506101a461019f366004612769565b610498565b60405190151581526020015b60405180910390f35b3480156101c557600080fd5b506101826101d43660046127a7565b610507565b3480156101e557600080fd5b506101f96101f436600461280a565b61053f565b6040516001600160e01b031990911681526020016101b0565b34801561021e57600080fd5b506101a461022d366004612940565b610579565b34801561023e57600080fd5b5061018261024d366004612769565b6105b4565b6101826102603660046129b8565b6105dd565b610278610273366004612a12565b6106e1565b6040519081526020016101b0565b610182610294366004612a5f565b61081c565b3480156102a557600080fd5b506102786102b4366004612a98565b610900565b3480156102c557600080fd5b50610278610951565b3480156102da57600080fd5b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545b6040516001600160a01b0390911681526020016101b0565b6101826103243660046129b8565b6109b1565b34801561033557600080fd5b50610182610344366004612acc565b6109f1565b34801561035557600080fd5b5061035e610ade565b6040516101b09796959493929190612b35565b34801561037d57600080fd5b5061027861210581565b34801561039357600080fd5b506103a76103a2366004612acc565b610b05565b6040516101b09190612bce565b3480156103c057600080fd5b506101a46103cf366004612be1565b610bc6565b3480156103e057600080fd5b506101a46103ef3660046127a7565b610c42565b34801561040057600080fd5b50735ff137d4b0fdcd49dca30c7cf57e578a026d27896102fe565b610182610429366004612c0b565b610c88565b61018261043c366004612c64565b610cec565b34801561044d57600080fd5b5061027861045c366004612acc565b610dad565b34801561046d57600080fd5b5060008051602061320f83398151915254610278565b34801561048f57600080fd5b50610278610db8565b60408051602081018490529081018290526000907f97e2c6aad4ce5d562ebfaa00db6b9e0fb66ea5d8162ed5b243f51a2e03086f029060600160408051601f19818403018152908290526104eb91612c99565b9081526040519081900360200190205460ff1690505b92915050565b61050f610e3e565b604080516001600160a01b038316602082015261053c91015b604051602081830303815290604052610e70565b50565b600061055461054d85610dad565b8484610e9b565b156105675750630b135d3f60e11b610572565b506001600160e01b03195b9392505050565b600060008051602061320f8339815191526002018260405161059b9190612c99565b9081526040519081900360200190205460ff1692915050565b6105bc610e3e565b60408051602081018490529081018290526105d990606001610528565b5050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d27891461060057610600610e3e565b60005b818110156106dc576106d483838381811061062057610620612cb5565b90506020028101906106329190612ccb565b6106409060208101906127a7565b84848481811061065257610652612cb5565b90506020028101906106649190612ccb565b6020013585858581811061067a5761067a612cb5565b905060200281019061068c9190612ccb565b61069a906040810190612ce1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fb092505050565b600101610603565b505050565b600033735ff137d4b0fdcd49dca30c7cf57e578a026d278914610716576040516282b42960e81b815260040160405180910390fd5b81602085013560401c600461072e6060880188612ce1565b90501015801561077257506107466060870187612ce1565b61075591600491600091612d27565b61075e91612d51565b6001600160e01b03191663bf6ba1fc60e01b145b156107b15761078086610900565b945061210581146107ac57604051632ef3781360e01b8152600481018290526024015b60405180910390fd5b6107d6565b61210581036107d657604051632ef3781360e01b8152600481018290526024016107a3565b6107ed856107e8610140890189612ce1565b610e9b565b156107fc576000925050610802565b60019250505b80156108145760003860003884335af1505b509392505050565b7f000000000000000000000000000000000000000000000000000000000000000030810361085257639f03a0266000526004601cfd5b61085b84611020565b8360601b60601c93506352d1902d6001527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80602060016004601d895afa51146108ad576355299b496001526004601dfd5b847fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600038a284905581156108fa57604051828482376000388483885af46108f8573d6000823e3d81fd5b505b50505050565b600061090b82611028565b604080516020810192909252735ff137d4b0fdcd49dca30c7cf57e578a026d2789908201526060015b604051602081830303815290604052805190602001209050919050565b60007f000000000000000000000000000000000000000000000000000000000000000030811461098957639f03a0266000526004601cfd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91505b5090565b60008051602061320f83398151915254156109df576040516302ed543d60e51b815260040160405180910390fd5b6105d96109ec8284612d81565b611041565b6109f9610e3e565b6000610a0482610b05565b90508051600003610a2b5760405163340c473d60e11b8152600481018390526024016107a3565b6040517f97e2c6aad4ce5d562ebfaa00db6b9e0fb66ea5d8162ed5b243f51a2e03086f0290610a5b908390612c99565b908152604051908190036020019020805460ff19169055610a8760008051602061320f83398151915290565b600083815260019190910160205260408120610aa29161271f565b817fcf95bbfe6f870f8cc40482dc3dccdafd268f0e9ce0a4f24ea1bea9be64e505ff82604051610ad29190612bce565b60405180910390a25050565b600f60f81b6060806000808083610af3611193565b97989097965046955030945091925090565b60008181527f97e2c6aad4ce5d562ebfaa00db6b9e0fb66ea5d8162ed5b243f51a2e03086f0160205260409020805460609190610b4190612e06565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6d90612e06565b8015610bba5780601f10610b8f57610100808354040283529160200191610bba565b820191906000526020600020905b815481529060010190602001808311610b9d57829003601f168201915b50505050509050919050565b60006001600160e01b031982166329565e3b60e01b1480610bf757506001600160e01b031982166303c3cfc960e21b145b80610c1257506001600160e01b0319821663396f1dad60e11b145b80610c2d57506001600160e01b0319821663278f794360e11b145b15610c3a57506001919050565b506000919050565b600060008051602061320f833981519152604080516001600160a01b0385166020820152600292909201910160408051601f198184030181529082905261059b91612c99565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610cab57610cab610e3e565b6108fa848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fb092505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610d1f576040516282b42960e81b815260040160405180910390fd5b6000610d2e6004828486612d27565b610d3791612d51565b9050610d4281610bc6565b610d6b57604051631d8370a360e11b81526001600160e01b0319821660048201526024016107a3565b6106dc30600085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fb092505050565b6000610501826111da565b6000806000610dc5611193565b8151602080840191909120825182840120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9481019490945283019190915260608201524660808201523060a0820152919350915060c001604051602081830303815290604052805190602001209250505090565b610e4733610c42565b80610e5157503330145b15610e5857565b6040516282b42960e81b815260040160405180910390fd5b61053c8160008051602061320f8339815191525b8054906000610e9283612e50565b91905055611210565b600080610eaa83850185612e69565b90506000610ebb8260000151610b05565b90508051602003610f1a576001600160a01b03610ed782612ef5565b1115610ef8578060405163bff1ac6560e01b81526004016107a39190612bce565b600060208201519050610f10818885602001516112df565b9350505050610572565b8051604003610f955760008082806020019051810190610f3a9190612f19565b9150915060008460200151806020019051810190610f589190612f82565b9050610f8989604051602001610f7091815260200190565b60405160208183030381529060405260008386866113e4565b95505050505050610572565b806040516327755b9160e11b81526004016107a39190612bce565b600080846001600160a01b03168484604051610fcc9190612c99565b60006040518083038185875af1925050503d8060008114611009576040519150601f19603f3d011682016040523d82523d6000602084013e61100e565b606091505b5091509150816108f857805160208201fd5b61053c610e3e565b600061103382611754565b805190602001209050919050565b60005b81518110156105d95781818151811061105f5761105f612cb5565b602002602001015151602014158015611093575081818151811061108557611085612cb5565b602002602001015151604014155b156110cc578181815181106110aa576110aa612cb5565b60200260200101516040516327755b9160e11b81526004016107a39190612bce565b8181815181106110de576110de612cb5565b602002602001015151602014801561112057506001600160a01b03801682828151811061110d5761110d612cb5565b602002602001015161111e90612ef5565b115b156111595781818151811061113757611137612cb5565b602002602001015160405163bff1ac6560e01b81526004016107a39190612bce565b61118b82828151811061116e5761116e612cb5565b6020026020010151610e8460008051602061320f83398151915290565b600101611044565b604080518082018252601581527410dbda5b98985cd94814db585c9d0815d85b1b195d605a1b602080830191909152825180840190935260018352603160f81b9083015291565b60006111e4610db8565b6111ed83611827565b60405161190160f01b602082015260228101929092526042820152606201610934565b61121982610579565b15611239578160405163468b12ad60e11b81526004016107a39190612bce565b600160008051602061320f8339815191526002018360405161125b9190612c99565b908152604051908190036020019020805491151560ff199092169190911790558161129160008051602061320f83398151915290565b600083815260019190910160205260409020906112ae908261308d565b50807f38109edc26e166b5579352ce56a50813177eb25208fd90d61f2f37838622022083604051610ad29190612bce565b6001600160a01b03909216916000831561057257604051836000526020830151604052604083510361134f576040830151601b8160ff1c016020528060011b60011c60605250602060016080600060015afa805186183d151761134d57506000606052604052506001610572565b505b604183510361139557606083015160001a6020526040830151606052602060016080600060015afa805186183d151761139357506000606052604052506001610572565b505b600060605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b60007f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a88460a00151111561141a5750600061174b565b606084015160009061143d9061143181601561314c565b60208801519190611862565b90507fff1a2a9176d650e4a99dedb58f1793003935130579fe17b5a3f698ac5b00e63481805190602001201461147757600091505061174b565b6000611485886001806118c8565b604051602001611495919061315f565b604051602081830303815290604052905060006114cd8760400151835189604001516114c1919061314c565b60208a01519190611862565b905081805190602001208180519060200120146114f0576000935050505061174b565b86518051600160f81b918291602090811061150d5761150d612cb5565b0160200151166001600160f81b0319161461152e576000935050505061174b565b878015611566575086518051600160fa1b918291602090811061155357611553612cb5565b0160200151166001600160f81b03191614155b15611577576000935050505061174b565b60006002886020015160405161158d9190612c99565b602060405180830381855afa1580156115aa573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906115cd91906131a0565b9050600060028960000151836040516020016115ea9291906131b9565b60408051601f198184030181529082905261160491612c99565b602060405180830381855afa158015611621573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061164491906131a0565b6080808b015160a0808d015160408051602081018790529081019390935260608301529181018b905290810189905290915060009060c00160405160208183030381529060405290506000806101006001600160a01b0316836040516116aa9190612c99565b600060405180830381855afa9150503d80600081146116e5576040519150601f19603f3d011682016040523d82523d6000602084013e6116ea565b606091505b508051919350915015158280156116fe5750805b1561172a578180602001905181019061171791906131a0565b600114995050505050505050505061174b565b61173f858e608001518f60a001518f8f6119bd565b99505050505050505050505b95945050505050565b606081356020830135600061177461176f6040870187612ce1565b611aa0565b9050600061178861176f6060880188612ce1565b9050608086013560a087013560c088013560e08901356101008a013560006117b761176f6101208e018e612ce1565b604080516001600160a01b039c909c1660208d01528b81019a909a5260608b019890985250608089019590955260a088019390935260c087019190915260e08601526101008501526101208401526101408084019190915281518084039091018152610160909201905292915050565b604080517f9b493d222105fee7df163ab5d57f0bf1ffd2da04dd5fafbe10b54c41c1adc6576020820152908101829052600090606001610934565b60608351828111611871578092505b83811161187c578093505b5081831015610572575060405182820380825293830193601f19601f820181165b868101518482015281018061189d5750600083830160200152603f9091011681016040529392505050565b606083518015610814576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f52602083018181018388602001018051600082525b60038a0199508951603f8160121c1651600053603f81600c1c1651600153603f8160061c1651600253603f811651600353506000518452600484019350828410611944579052602001604052613d3d60f01b60038406600204808303919091526000861515909102918290035290038252509392505050565b60008415806119da57506000805160206131ef8339815191528510155b806119e3575083155b806119fc57506000805160206131ef8339815191528410155b15611a095750600061174b565b611a138383611ab3565b611a1f5750600061174b565b6000611a2a85611bad565b905060006000805160206131ef833981519152828909905060006000805160206131ef83398151915283890990506000611a6687878585611c1f565b90506000805160206131ef833981519152611a8f8a6000805160206131ef8339815191526131db565b8208159a9950505050505050505050565b6000604051828085833790209392505050565b600082158015611ac1575081155b80611ad95750600160601b63ffffffff60c01b031983145b80611af15750600160601b63ffffffff60c01b031982145b15611afe57506000610501565b6000600160601b63ffffffff60c01b031983840990506000600160601b63ffffffff60c01b0319807fffffffff00000001000000000000000000000000fffffffffffffffffffffffc8709600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b0319898a0909089050600160601b63ffffffff60c01b03197f5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b820891909114949350505050565b600060405160208152602080820152602060408201528260608201527fffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f60808201526000805160206131ef83398151915260a082015260208160c0836005600019fa611c1857600080fd5b5192915050565b600080808060ff818088158015611c34575087155b15611c4857600096505050505050506122e1565b611c947f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c2967f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f58d8d6122e9565b909250905081158015611ca5575080155b15611cd3576000805160206131ef833981519152886000805160206131ef833981519152038a089850600097505b600189841c16600189851c1660011b015b80611d065760018403935060018a851c1660018a861c1660011b019050611ce4565b50600189841c16600189851c1660011b01955060018603611d68577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29696507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f593505b60028603611d77578a96508993505b60038603611d86578196508093505b60018303925060019550600194505b82600019111561226a57600160601b63ffffffff60c01b031984600209600160601b63ffffffff60c01b0319818209600160601b63ffffffff60c01b0319818a09600160601b63ffffffff60c01b03198284099250600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b03198b8d08600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b0319038e0809600309600160601b63ffffffff60c01b03198985099850600160601b63ffffffff60c01b03198a84099950600160601b63ffffffff60c01b031980836002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319838409089a50600160601b63ffffffff60c01b03198083600160601b63ffffffff60c01b0319038d0882099250600160601b63ffffffff60c01b031983600160601b63ffffffff60c01b03198a870908975060018d881c1660018d891c1660011b01905080611f125787600160601b63ffffffff60c01b03190397505050505061225f565b60018103611f61577f6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c29693507f4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f592505b60028103611f70578e93508d92505b60038103611f7f578593508492505b89611f98575091985060019750879650945061225f9050565b600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b03198b860908600160601b63ffffffff60c01b03198c600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198d880908935080612151578361215157600160601b63ffffffff60c01b0319896002600160601b0363ffffffff60c01b0319099450600160601b63ffffffff60c01b03198586099350600160601b63ffffffff60c01b0319848d099250600160601b63ffffffff60c01b03198486099450600160601b63ffffffff60c01b0319808c600160601b63ffffffff60c01b0319038e08600160601b63ffffffff60c01b03198d8f08099050600160601b63ffffffff60c01b0319816003099150600160601b63ffffffff60c01b03198a86099950600160601b63ffffffff60c01b03198b85099a50600160601b63ffffffff60c01b031980846002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319848509089b50600160601b63ffffffff60c01b0319808d600160601b63ffffffff60c01b031903850883099350600160601b63ffffffff60c01b0319808a870985089850505050505061225f565b600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b0319848309600160601b63ffffffff60c01b0319838d099b50600160601b63ffffffff60c01b0319818c099a50600160601b63ffffffff60c01b0319838e09600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031984600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b031987880908089350600160601b63ffffffff60c01b031980838d09600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b031903860809089a50505050809a50505050505b600183039250611d95565b60405186606082015260208152602080820152602060408201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa6122c457600080fd5b600160601b63ffffffff60c01b0319815189099750505050505050505b949350505050565b60008080808661230057858593509350505061236e565b8461231257878793509350505061236e565b858814801561232057508487145b15612341576123328888600180612377565b929a509098509250905061235b565b61235088886001808a8a6124d2565b929a50909850925090505b61236788888484612656565b9350935050505b94509492505050565b600080600080600160601b63ffffffff60c01b0319876002099350600160601b63ffffffff60c01b03198485099150600160601b63ffffffff60c01b03198289099050600160601b63ffffffff60c01b03198285099250600160601b63ffffffff60c01b03198683099150600160601b63ffffffff60c01b031980600160601b63ffffffff60c01b0319888b08600160601b63ffffffff60c01b031989600160601b63ffffffff60c01b0319038c08096003099550600160601b63ffffffff60c01b031980826002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b0319888909089350600160601b63ffffffff60c01b03198085600160601b63ffffffff60c01b031903830887099750600160601b63ffffffff60c01b03198584099050600160601b63ffffffff60c01b031980888509600160601b63ffffffff60c01b03190389089250945094509450949050565b600080600080886000036124f157508492508391506001905080612649565b600160601b63ffffffff60c01b0319988903988981898809089450600160601b63ffffffff60c01b03198a600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b03198a8909089550600160601b63ffffffff60c01b03198687099350600160601b63ffffffff60c01b03198685099250600160601b63ffffffff60c01b03198489099150600160601b63ffffffff60c01b03198388099050600160601b63ffffffff60c01b0319848b099750600160601b63ffffffff60c01b031980896002600160601b0363ffffffff60c01b031909600160601b63ffffffff60c01b031985600160601b63ffffffff60c01b031903600160601b63ffffffff60c01b0319898a0908089350600160601b63ffffffff60c01b031980848b09600160601b63ffffffff60c01b031987600160601b63ffffffff60c01b031988600160601b63ffffffff60c01b0319038d08090892505b9650965096509692505050565b6000806000612664846126c3565b9050600160601b63ffffffff60c01b031981870991506000600160601b63ffffffff60c01b03198287099050600160601b63ffffffff60c01b03198182099150600160601b63ffffffff60c01b03198289099350505094509492505050565b600060405160208152602080820152602060408201528260608201526002600160601b0363ffffffff60c01b03196080820152600160601b63ffffffff60c01b031960a082015260208160c0836005600019fa611c1857600080fd5b50805461272b90612e06565b6000825580601f1061273b575050565b601f01602090049060005260206000209081019061053c91905b808211156109ad5760008155600101612755565b6000806040838503121561277c57600080fd5b50508035926020909101359150565b80356001600160a01b03811681146127a257600080fd5b919050565b6000602082840312156127b957600080fd5b6105728261278b565b60008083601f8401126127d457600080fd5b5081356001600160401b038111156127eb57600080fd5b60208301915083602082850101111561280357600080fd5b9250929050565b60008060006040848603121561281f57600080fd5b8335925060208401356001600160401b0381111561283c57600080fd5b612848868287016127c2565b9497909650939450505050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561288d5761288d612855565b60405290565b604051601f8201601f191681016001600160401b03811182821017156128bb576128bb612855565b604052919050565b60006001600160401b038211156128dc576128dc612855565b50601f01601f191660200190565b600082601f8301126128fb57600080fd5b813561290e612909826128c3565b612893565b81815284602083860101111561292357600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561295257600080fd5b81356001600160401b0381111561296857600080fd5b6122e1848285016128ea565b60008083601f84011261298657600080fd5b5081356001600160401b0381111561299d57600080fd5b6020830191508360208260051b850101111561280357600080fd5b600080602083850312156129cb57600080fd5b82356001600160401b038111156129e157600080fd5b6129ed85828601612974565b90969095509350505050565b60006101608284031215612a0c57600080fd5b50919050565b600080600060608486031215612a2757600080fd5b83356001600160401b03811115612a3d57600080fd5b612a49868287016129f9565b9660208601359650604090950135949350505050565b600080600060408486031215612a7457600080fd5b612a7d8461278b565b925060208401356001600160401b0381111561283c57600080fd5b600060208284031215612aaa57600080fd5b81356001600160401b03811115612ac057600080fd5b6122e1848285016129f9565b600060208284031215612ade57600080fd5b5035919050565b60005b83811015612b00578181015183820152602001612ae8565b50506000910152565b60008151808452612b21816020860160208601612ae5565b601f01601f19169290920160200192915050565b60ff60f81b881681526000602060e06020840152612b5660e084018a612b09565b8381036040850152612b68818a612b09565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015612bbc57835183529284019291840191600101612ba0565b50909c9b505050505050505050505050565b6020815260006105726020830184612b09565b600060208284031215612bf357600080fd5b81356001600160e01b03198116811461057257600080fd5b60008060008060608587031215612c2157600080fd5b612c2a8561278b565b93506020850135925060408501356001600160401b03811115612c4c57600080fd5b612c58878288016127c2565b95989497509550505050565b60008060208385031215612c7757600080fd5b82356001600160401b03811115612c8d57600080fd5b6129ed858286016127c2565b60008251612cab818460208701612ae5565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b60008235605e19833603018112612cab57600080fd5b6000808335601e19843603018112612cf857600080fd5b8301803591506001600160401b03821115612d1257600080fd5b60200191503681900382131561280357600080fd5b60008085851115612d3757600080fd5b83861115612d4457600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015612d795780818660040360031b1b83161692505b505092915050565b60006001600160401b0380841115612d9b57612d9b612855565b8360051b6020612dad60208301612893565b86815291850191602081019036841115612dc657600080fd5b865b84811015612dfa57803586811115612de05760008081fd5b612dec36828b016128ea565b845250918301918301612dc8565b50979650505050505050565b600181811c90821680612e1a57607f821691505b602082108103612a0c57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612e6257612e62612e3a565b5060010190565b600060208284031215612e7b57600080fd5b81356001600160401b0380821115612e9257600080fd5b9083019060408286031215612ea657600080fd5b604051604081018181108382111715612ec157612ec1612855565b60405282358152602083013582811115612eda57600080fd5b612ee6878286016128ea565b60208301525095945050505050565b80516020808301519190811015612a0c5760001960209190910360031b1b16919050565b60008060408385031215612f2c57600080fd5b505080516020909101519092909150565b600082601f830112612f4e57600080fd5b8151612f5c612909826128c3565b818152846020838601011115612f7157600080fd5b6122e1826020830160208701612ae5565b600060208284031215612f9457600080fd5b81516001600160401b0380821115612fab57600080fd5b9083019060c08286031215612fbf57600080fd5b612fc761286b565b825182811115612fd657600080fd5b612fe287828601612f3d565b825250602083015182811115612ff757600080fd5b61300387828601612f3d565b60208301525060408301516040820152606083015160608201526080830151608082015260a083015160a082015280935050505092915050565b601f8211156106dc576000816000526020600020601f850160051c810160208610156130665750805b601f850160051c820191505b8181101561308557828155600101613072565b505050505050565b81516001600160401b038111156130a6576130a6612855565b6130ba816130b48454612e06565b8461303d565b602080601f8311600181146130ef57600084156130d75750858301515b600019600386901b1c1916600185901b178555613085565b600085815260208120601f198616915b8281101561311e578886015182559484019460019091019084016130ff565b508582101561313c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561050157610501612e3a565b6c1131b430b63632b733b2911d1160991b8152815160009061318881600d850160208701612ae5565b601160f91b600d939091019283015250600e01919050565b6000602082840312156131b257600080fd5b5051919050565b600083516131cb818460208801612ae5565b9190910191825250602001919050565b8181038181111561050157610501612e3a56feffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63255197e2c6aad4ce5d562ebfaa00db6b9e0fb66ea5d8162ed5b243f51a2e03086f00a26469706673582212206267bdd6ae13c948b83275fcdafdc1366dd287cbf41ef689e1d49904a10ea33e64736f6c63430008170033", + "sourceMap": "874:13344:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;887:1:31;874:15;869:3;865:25;1217:10;1214:1;1211:17;1198:10;1195:1;1192:17;1189:40;1176:10;1173:1;1170:17;1167:63;1164:190;;;1262:1;1256:4;1249:15;1256:4;1308;1301:18;1164:190;;5111:158:43;;;;;;;;;;-1:-1:-1;5111:158:43;;;;;:::i;:::-;;:::i;:::-;;;432:14:62;;425:22;407:41;;395:2;380:18;5111:158:43;;;;;;;;3531:110;;;;;;;;;;-1:-1:-1;3531:110:43;;;;;:::i;:::-;;:::i;3355:343:42:-;;;;;;;;;;-1:-1:-1;3355:343:42;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;1824:33:62;;;1806:52;;1794:2;1779:18;3355:343:42;1662:202:62;5518:145:43;;;;;;;;;;-1:-1:-1;5518:145:43;;;;;:::i;:::-;;:::i;3824:118::-;;;;;;;;;;-1:-1:-1;3824:118:43;;;;;:::i;:::-;;:::i;8796:278:40:-;;;;;;:::i;:::-;;:::i;5921:1184::-;;;;;;:::i;:::-;;:::i;:::-;;;5209:25:62;;;5197:2;5182:18;5921:1184:40;5063:177:62;4012:1575:36;;;;;;:::i;:::-;;:::i;9723:243:40:-;;;;;;;;;;-1:-1:-1;9723:243:40;;;;;:::i;:::-;;:::i;3579:227:36:-;;;;;;;;;;;;;:::i;10106:153:40:-;;;;;;;;;;-1:-1:-1;10214:28:40;10208:35;10106:153;;;-1:-1:-1;;;;;6452:32:62;;;6434:51;;6422:2;6407:18;10106:153:40;6288:203:62;4671:192:40;;;;;;:::i;:::-;;:::i;4132:347:43:-;;;;;;;;;;-1:-1:-1;4132:347:43;;;;;:::i;:::-;;:::i;2125:597:42:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;1850:51:40:-;;;;;;;;;;;;1897:4;1850:51;;5872:149:43;;;;;;;;;;-1:-1:-1;5872:149:43;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10557:485:40:-;;;;;;;;;;-1:-1:-1;10557:485:40;;;;;:::i;:::-;;:::i;4697:154:43:-;;;;;;;;;;-1:-1:-1;4697:154:43;;;;;:::i;:::-;;:::i;9199:126:40:-;;;;;;;;;;-1:-1:-1;9276:42:40;9199:126;;8399:157;;;;;;:::i;:::-;;:::i;7785:302::-;;;;;;:::i;:::-;;:::i;4177:117:42:-;;;;;;;;;;-1:-1:-1;4177:117:42;;;;;:::i;:::-;;:::i;6181:128:43:-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;6262:40:43;6181:128;;4612:475:42;;;;;;;;;;;;;:::i;5111:158:43:-;5245:16;;;;;;10785:25:62;;;10826:18;;;10819:34;;;5188:4:43;;5211:33;;10758:18:62;;5245:16:43;;;-1:-1:-1;;5245:16:43;;;;;;;;;;5211:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;5111:158:43;;;;;:::o;3531:110::-;3381:13;:11;:13::i;:::-;3616:17:::1;::::0;;-1:-1:-1;;;;;6452:32:62;;3616:17:43::1;::::0;::::1;6434:51:62::0;3606:28:43::1;::::0;6407:18:62;3616:17:43::1;;;;;;;;;;;;;3606:9;:28::i;:::-;3531:110:::0;:::o;3355:343:42:-;3450:13;3479:73;3508:20;3523:4;3508:14;:20::i;:::-;3541:9;;3479:18;:73::i;:::-;3475:189;;;-1:-1:-1;;;;3636:17:42;;3475:189;-1:-1:-1;;;;;;;3355:343:42;;;;;;:::o;5518:145:43:-;5591:4;-1:-1:-1;;;;;;;;;;;5614:33:43;;5648:7;5614:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;5518:145;-1:-1:-1;;5518:145:43:o;3824:118::-;3381:13;:11;:13::i;:::-;3918:16:::1;::::0;;::::1;::::0;::::1;10785:25:62::0;;;10826:18;;;10819:34;;;3908:27:43::1;::::0;10758:18:62;;3918:16:43::1;10611:248:62::0;3908:27:43::1;3824:118:::0;;:::o;8796:278:40:-;3122:10;9276:42;3122:26;3118:70;;3164:13;:11;:13::i;:::-;8901:9:::1;8896:172;8912:16:::0;;::::1;8896:172;;;8945:53;8951:5;;8957:1;8951:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:15;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;8968:5;;8974:1;8968:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:14;;;8984:5;;8990:1;8984:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:13;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;8945:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;8945:5:40::1;::::0;-1:-1:-1;;;8945:53:40:i:1;:::-;9040:3;;8896:172;;;;8796:278:::0;;:::o;5921:1184::-;6152:22;2869:10;9276:42;2869:26;2865:78;;2918:14;;-1:-1:-1;;;2918:14:40;;;;;;;;;;;2865:78;6114:19;6204:12:::2;::::0;::::2;;6220:2;6204:18;6347:1;6321:15;;::::0;::::2;6204:6:::0;6321:15:::2;:::i;:::-;:22;;:27;;:73;;;;-1:-1:-1::0;6359:15:40::2;;::::0;::::2;:6:::0;:15:::2;:::i;:::-;:20;::::0;6377:1:::2;::::0;6375::::2;::::0;6359:20:::2;:::i;:::-;6352:28;::::0;::::2;:::i;:::-;-1:-1:-1::0;;;;;6352:42:40::2;;6384:10;6352:42;;;6321:73;6317:381;;;6423:35;6451:6;6423:27;:35::i;:::-;6410:48;;1897:4;6476:3;:27;6472:93;;6530:20;::::0;-1:-1:-1;;;6530:20:40;;::::2;::::0;::::2;5209:25:62::0;;;5182:18;;6530:20:40::2;;;;;;;;6472:93;6317:381;;;1897:4;6599:3;:27:::0;6595:93:::2;;6653:20;::::0;-1:-1:-1;;;6653:20:40;;::::2;::::0;::::2;5209:25:62::0;;;5182:18;;6653:20:40::2;5063:177:62::0;6595:93:40::2;6776:48;6795:10:::0;6807:16:::2;;::::0;::::2;:6:::0;:16:::2;:::i;:::-;6776:18;:48::i;:::-;6772:87;;;6847:1;6840:8;;;;;6772:87;7097:1;7090:8;;;3877:1;3931:19:::1;3928:226;;;4134:4;4122:10;4116:4;4104:10;4083:19;4073:8;4066:5;4061:78;4057:83;3928:226;2953:1;5921:1184:::0;;;;;:::o;4012:1575:36:-;5707:6;6068:9;6062:16;;6059:143;;6110:10;6104:4;6097:24;6183:4;6177;6170:18;6059:143;4165:36:::1;4183:17;4165;:36::i;:::-;4314:17;4310:2;4306:26;4302:2;4298:35;4277:56;;4384:10;4378:4;4371:24;4439:28;4644:1;4636:4;4630;4624;4618;4599:17;4592:5;4581:60;4575:67;4572:74;4562:199;;4679:10;4673:4;4666:24;4742:4;4736;4729:18;4562:199;4866:17;4839:25;4833:4;4821:10;4816:68;4897:28:::0;;;5055:516;::::1;;;5183:4;5177:11;5234;5221;5218:1;5205:41;5340:4;5328:10;5315:11;5312:1;5293:17;5286:5;5273:72;5263:294;;5474:16;5468:4;5465:1;5450:41;5522:16;5519:1;5512:27;5263:294;;5055:516;5685:544:::0;4012:1575;;;:::o;9723:243:40:-;9852:18;9914:29;9936:6;9914:21;:29::i;:::-;9903:55;;;;;;12979:25:62;;;;9276:42:40;13020:18:62;;;13013:60;12952:18;;9903:55:40;;;;;;;;;;;;;9893:66;;;;;;9886:73;;9723:243;;;:::o;3579:227:36:-;3646:7;6402:6;6500:9;6494:16;;6484:151;;6543:10;6537:4;6530:24;6616:4;6610;6603:18;6484:151;2614:66:::1;::::0;-1:-1:-1;6654:1:36::1;6380:282:::0;3579:227;:::o;4671:192:40:-;-1:-1:-1;;;;;;;;;;;6262:40:43;4753:21:40;4749:72;;4797:13;;-1:-1:-1;;;4797:13:40;;;;;;;;;;;4749:72;4831:25;;4849:6;;4831:25;:::i;:::-;:17;:25::i;4132:347:43:-;3381:13;:11;:13::i;:::-;4210:18:::1;4231:19;4244:5;4231:12;:19::i;:::-;4210:40;;4264:5;:12;4280:1;4264:17:::0;4260:51:::1;;4290:21;::::0;-1:-1:-1;;;4290:21:43;;::::1;::::0;::::1;5209:25:62::0;;;5182:18;;4290:21:43::1;5063:177:62::0;4260:51:43::1;4329:40;::::0;:33;;:40:::1;::::0;4363:5;;4329:40:::1;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;4322:47;;-1:-1:-1;;4322:47:43::1;::::0;;4386:25:::1;-1:-1:-1::0;;;;;;;;;;;8677:30:43;8529:194;4386:25:::1;:45;::::0;;;:38:::1;::::0;;;::::1;:45;::::0;;;;4379:52:::1;::::0;::::1;:::i;:::-;4459:5;4447:25;4466:5;4447:25;;;;;;:::i;:::-;;;;;;;;4200:279;4132:347:::0;:::o;2125:597:42:-;-1:-1:-1;;;2252:18:42;;2225:13;;;2252:18;2522:23;:21;:23::i;:::-;2125:597;;2504:41;;;-1:-1:-1;2565:13:42;;-1:-1:-1;2616:4:42;;-1:-1:-1;2125:597:42;;-1:-1:-1;2125:597:42;:::o;5872:149:43:-;5969:45;;;;:38;:45;;;;;5962:52;;5938:12;;5969:45;5962:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5872:149;;;:::o;10557:485:40:-;10637:4;-1:-1:-1;;;;;;10670:59:40;;-1:-1:-1;;;10670:59:40;;:136;;-1:-1:-1;;;;;;;10749:57:40;;-1:-1:-1;;;10749:57:40;10670:136;:216;;;-1:-1:-1;;;;;;;10826:60:40;;-1:-1:-1;;;10826:60:40;10670:216;:297;;;-1:-1:-1;;;;;;;10906:61:40;;-1:-1:-1;;;10906:61:40;10670:297;10653:361;;;-1:-1:-1;10999:4:40;;10557:485;-1:-1:-1;10557:485:40:o;10653:361::-;-1:-1:-1;11030:5:40;;10557:485;-1:-1:-1;10557:485:40:o;4697:154:43:-;4767:4;-1:-1:-1;;;;;;;;;;;4824:19:43;;;-1:-1:-1;;;;;6452:32:62;;4824:19:43;;;6434:51:62;4790:33:43;;;;;;6407:18:62;4824:19:43;;;-1:-1:-1;;4824:19:43;;;;;;;;;;4790:54;;;:::i;8399:157:40:-;3122:10;9276:42;3122:26;3118:70;;3164:13;:11;:13::i;:::-;8523:26:::1;8529:6;8537:5;8544:4;;8523:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;8523:5:40::1;::::0;-1:-1:-1;;;8523:26:40:i:1;7785:302::-:0;2869:10;9276:42;2869:26;2865:78;;2918:14;;-1:-1:-1;;;2918:14:40;;;;;;;;;;;2865:78;7895:15:::1;7920:9;7927:1;7895:15:::0;7920:4;;:9:::1;:::i;:::-;7913:17;::::0;::::1;:::i;:::-;7895:35;;7945:34;7970:8;7945:24;:34::i;:::-;7940:101;;8002:28;::::0;-1:-1:-1;;;8002:28:40;;-1:-1:-1;;;;;;1824:33:62;;8002:28:40::1;::::0;::::1;1806:52:62::0;1779:18;;8002:28:40::1;1662:202:62::0;7940:101:40::1;8051:29;8065:4;8072:1;8075:4;;8051:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;8051:5:40::1;::::0;-1:-1:-1;;;8051:29:40:i:1;4177:117:42:-:0;4244:7;4270:17;4282:4;4270:11;:17::i;4612:475::-;4660:7;4680:18;4700:21;4725:23;:21;:23::i;:::-;4929:22;;;;;;;;;;4969:25;;;;;;4788:282;;;4816:95;4788:282;;;14671:25:62;;;;14712:18;;14705:34;;;;14755:18;;;14748:34;5012:13:42;14798:18:62;;;14791:34;5051:4:42;14841:19:62;;;14834:61;4679:69:42;;-1:-1:-1;4679:69:42;-1:-1:-1;14643:19:62;;4788:282:42;;;;;;;;;;;;4765:315;;;;;;4758:322;;;;4612:475;:::o;8155:189:43:-;8214:26;8229:10;8214:14;:26::i;:::-;:59;;;-1:-1:-1;8245:10:43;8267:4;8245:27;8214:59;8210:96;;;8155:189::o;8210:96::-;8323:14;;-1:-1:-1;;;8323:14:43;;;;;;;;;;;7293:140;7359:67;7376:5;-1:-1:-1;;;;;;;;;;;7383:25:43;:42;;;:40;:42;;;:::i;:::-;;;;;7359:16;:67::i;12316:1469:40:-;12467:4;;12524:41;;;;12535:9;12524:41;:::i;:::-;12487:78;;12575:23;12601:35;12614:10;:21;;;12601:12;:35::i;:::-;12575:61;;12651:10;:17;12672:2;12651:23;12647:607;;-1:-1:-1;;;;;12702:19:40;12710:10;12702:19;:::i;:::-;12694:48;12690:318;;;12982:10;12954:39;;-1:-1:-1;;;12954:39:40;;;;;;;;:::i;12690:318::-;13022:13;13123:2;13111:10;13107:19;13101:26;13092:35;;13162:81;13202:5;13209:7;13218:10;:24;;;13162:39;:81::i;:::-;13155:88;;;;;;;12647:607;13268:10;:17;13289:2;13268:23;13264:462;;13308:9;13319;13343:10;13332:42;;;;;;;;;;;;:::i;:::-;13307:67;;;;13389:33;13436:10;:24;;;13425:61;;;;;;;;;;;;:::i;:::-;13389:97;;13508:207;13564:7;13553:19;;;;;;5209:25:62;;5197:2;5182:18;;5063:177;13553:19:40;;;;;;;;;;;;;13615:5;13652:4;13677:1;13699;13508:15;:207::i;:::-;13501:214;;;;;;;;;13264:462;13767:10;13743:35;;-1:-1:-1;;;13743:35:40;;;;;;;;:::i;11413:302::-;11498:12;11512:19;11535:6;-1:-1:-1;;;;;11535:11:40;11554:5;11561:4;11535:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11497:69;;;;11581:7;11576:133;;11677:6;11671:13;11666:2;11658:6;11654:15;11647:38;13928:96;3381:13:43;:11;:13::i;3509:124:8:-;3577:7;3613:12;3618:6;3613:4;:12::i;:::-;3603:23;;;;;;3596:30;;3509:124;;;:::o;6627:532:43:-;6709:9;6704:449;6724:6;:13;6720:1;:17;6704:449;;;6762:6;6769:1;6762:9;;;;;;;;:::i;:::-;;;;;;;:16;6782:2;6762:22;;:48;;;;;6788:6;6795:1;6788:9;;;;;;;;:::i;:::-;;;;;;;:16;6808:2;6788:22;;6762:48;6758:128;;;6861:6;6868:1;6861:9;;;;;;;;:::i;:::-;;;;;;;6837:34;;-1:-1:-1;;;6837:34:43;;;;;;;;:::i;6758:128::-;6904:6;6911:1;6904:9;;;;;;;;:::i;:::-;;;;;;;:16;6924:2;6904:22;:73;;;;;-1:-1:-1;;;;;6930:47:43;;6946:6;6953:1;6946:9;;;;;;;;:::i;:::-;;;;;;;6938:18;;;:::i;:::-;6930:47;6904:73;6900:157;;;7032:6;7039:1;7032:9;;;;;;;;:::i;:::-;;;;;;;7004:38;;-1:-1:-1;;;7004:38:43;;;;;;;;:::i;6900:157::-;7071:71;7088:6;7095:1;7088:9;;;;;;;;:::i;:::-;;;;;;;7099:25;-1:-1:-1;;;;;;;;;;;8677:30:43;8529:194;7071:71;6739:3;;6704:449;;14058:158:40;14172:37;;;;;;;;;;;-1:-1:-1;;;14172:37:40;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14172:37:40;;;;;14058:158::o;5554:176:42:-;5620:7;5685:17;:15;:17::i;:::-;5704;5716:4;5704:11;:17::i;:::-;5656:66;;-1:-1:-1;;;5656:66:42;;;18277:27:62;18320:11;;;18313:27;;;;18356:12;;;18349:28;18393:12;;5656:66:42;18019:392:62;7672:305:43;7764:19;7777:5;7764:12;:19::i;:::-;7760:51;;;7805:5;7792:19;;-1:-1:-1;;;7792:19:43;;;;;;;;:::i;7760:51::-;7865:4;-1:-1:-1;;;;;;;;;;;7822:33:43;;7856:5;7822:40;;;;;;:::i;:::-;;;;;;;;;;;;;;:47;;;;;-1:-1:-1;;7822:47:43;;;;;;;;;7927:5;7879:25;-1:-1:-1;;;;;;;;;;;8677:30:43;8529:194;7879:25;:45;;;;:38;;;;;:45;;;;;;:53;;:45;:53;:::i;:::-;;7957:5;7948:22;7964:5;7948:22;;;;;;:::i;1980:4154:35:-;-1:-1:-1;;;;;2295:24:35;;;;2110:12;2322:6;2279:3839;;;2365:4;2359:11;2400:4;2394;2387:18;2456:4;2445:9;2441:20;2435:27;2429:4;2422:41;2512:2;2500:9;2494:16;2491:24;2488:1077;;2569:4;2558:9;2554:20;2548:27;2627:2;2622;2617:3;2613:12;2609:21;2603:4;2596:35;2687:2;2684:1;2680:10;2677:1;2673:18;2667:4;2660:32;;3089:4;3035;2983;2930;2872:1;2794:5;2754:384;3309:1;3303:8;3295:6;3291:21;3272:16;3265:24;3262:51;3252:295;;-1:-1:-1;3391:1:35;3385:4;3378:15;3451:4;3444:15;-1:-1:-1;3352:1:35;3520:5;;3252:295;;2488:1077;3606:2;3594:9;3588:16;3585:24;3582:1043;;3674:4;3663:9;3659:20;3653:27;3650:1;3645:36;3639:4;3632:50;3745:4;3734:9;3730:20;3724:27;3718:4;3711:41;4149:4;4095;4043;3990;3932:1;3854:5;3814:384;4369:1;4363:8;4355:6;4351:21;4332:16;4325:24;4322:51;4312:295;;-1:-1:-1;4451:1:35;4445:4;4438:15;4511:4;4504:15;-1:-1:-1;4412:1:35;4580:5;;4312:295;;3582:1043;4655:1;4649:4;4642:15;4713:1;4707:4;4700:15;4787:10;4782:3;4778:20;4825:1;4822;4815:12;4924:4;4917;4914:1;4910:12;4903:26;4962:4;4959:1;4955:12;4994:4;4991:1;4984:15;5137:9;5131:16;5125:4;5121:27;5218:1;5211:4;5208:1;5204:12;5201:1;5190:9;5187:1;5180:5;5169:51;5165:56;;6004:4;5952:1;5888:4;5870:16;5866:27;5806:1;5749:6;5700:5;5664:400;5418:8;;5415:15;;;5296:786;;-1:-1:-1;;1980:4154:35;;;;;:::o;5726:2978:38:-;5921:4;1643:77;5941:12;:14;;;:29;5937:124;;;-1:-1:-1;6045:5:38;6038:12;;5937:124;6254:22;;;;6198:19;;6220:86;;6278:27;6254:22;6303:2;6278:27;:::i;:::-;6220;;;;;:86;:33;:86::i;:::-;6198:108;;1812:34;6336:5;6320:23;;;;;;:45;6316:88;;6388:5;6381:12;;;;;6316:88;6518:30;6600:36;6614:9;6625:4;6631;6600:13;:36::i;:::-;6569:73;;;;;;;;:::i;:::-;;;;;;;;;;;;;6518:125;;6653:29;6685:140;6732:12;:27;;;6791:17;:24;6761:12;:27;;;:54;;;;:::i;:::-;6685:27;;;;;:140;:33;:140::i;:::-;6653:172;;6886:17;6876:28;;;;;;6855:15;6839:33;;;;;;:65;6835:108;;6927:5;6920:12;;;;;;;6835:108;7059:30;;:34;;-1:-1:-1;;;7118:18:38;;;7090:2;;7059:34;;;;;;:::i;:::-;;;;;:55;-1:-1:-1;;;;;;7059:55:38;:77;7055:120;;7159:5;7152:12;;;;;;;7055:120;7324:23;:106;;;;-1:-1:-1;7352:30:38;;:34;;-1:-1:-1;;;7412:18:38;;;7383:2;;7352:34;;;;;;:::i;:::-;;;;;:55;-1:-1:-1;;;;;;7352:55:38;7351:79;;7324:106;7320:157;;;7461:5;7454:12;;;;;;;7320:157;7596:26;7625:42;7638:12;:27;;;7625:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7596:71;;7809:19;7831:76;7855:12;:30;;;7887:18;7838:68;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7838:68:38;;;;;;;;;;7831:76;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7961:14;;;;;7977;;;;;7937:61;;;;;;22187:25:62;;;22228:18;;;22221:34;;;;-1:-1:-1;22271:18:62;;22264:34;22314:18;;;22307:34;;;22357:19;;;22350:35;;;7809:98:38;;-1:-1:-1;7917:17:38;;22159:19:62;;7937:61:38;;;;;;;;;;;;7917:81;;8056:12;8070:16;1762:5;-1:-1:-1;;;;;8090:19:38;8110:4;8090:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8522:10:38;;8055:60;;-1:-1:-1;8055:60:38;-1:-1:-1;8522:14:38;;8055:60;8550:16;;;;;8561:5;8550:16;8546:60;;;8586:3;8575:26;;;;;;;;;;;;:::i;:::-;8605:1;8575:31;8568:38;;;;;;;;;;;;;8546:60;8624:73;8647:11;8660:12;:14;;;8676:12;:14;;;8692:1;8695;8624:22;:73::i;:::-;8617:80;;;;;;;;;;;5726:2978;;;;;;;;:::o;2561:942:8:-;2629:16;1877:20;;2717:12;;;;2657:14;2762:31;2777:15;;;;1877:20;2777:15;:::i;:::-;2762:14;:31::i;:::-;2739:54;-1:-1:-1;2803:20:8;2826:31;2841:15;;;;:6;:15;:::i;2826:31::-;2803:54;-1:-1:-1;2890:19:8;;;;2950:27;;;;3016:25;;;;3074:19;;;;3134:27;;;;2867:20;3202:39;3217:23;;;;2890:6;3217:23;:::i;3202:39::-;3259:237;;;-1:-1:-1;;;;;23002:32:62;;;;3259:237:8;;;22984:51:62;23051:18;;;23044:34;;;;23094:18;;;23087:34;;;;-1:-1:-1;23137:18:62;;;23130:34;;;;23180:19;;;23173:35;;;;23224:19;;;23217:35;;;;23268:19;;;23261:35;23312:19;;;23305:35;23356:19;;;23349:35;23400:19;;;;23393:35;;;;3259:237:8;;;;;;;;;;22956:19:62;;;;3259:237:8;;;2561:942;-1:-1:-1;;2561:942:8:o;6163:145:42:-;6265:35;;;1360:53;6265:35;;;10785:25:62;10826:18;;;10819:34;;;6229:7:42;;10758:18:62;;6265:35:42;10611:248:62;30663:1307:34;30776:20;30905:7;30899:14;30954:3;30939:13;30936:22;30926:58;;30969:13;30962:20;;30926:58;31025:5;31010:13;31007:24;30997:62;;31044:13;31035:22;;30997:62;;31085:3;31078:5;31075:14;31072:882;;;-1:-1:-1;31124:4:34;31118:11;31166:15;;;31198:28;;;31254:19;;;;-1:-1:-1;;31303:4:34;31413:23;;31409:31;;31394:237;31499:15;;;31493:22;31477:14;;;31470:46;31542:9;;31591:22;31394:237;31591:22;-1:-1:-1;31747:1:34;31709:36;;;31725:4;31709:36;31702:47;31929:4;31911:23;;;31907:31;31895:44;;31889:4;31882:58;30663:1307;;;;;:::o;722:2892:32:-;835:20;961:4;955:11;983:10;980:2618;;;1183:1;1179;1167:10;1163:18;1159:26;1156:1;1152:34;1294:4;1288:11;1278:21;;1664:34;1658:4;1651:48;1791:6;1780:8;1773:16;1769:29;1733:34;1729:70;1723:4;1716:84;1906:4;1898:6;1894:17;1948:13;1943:3;1939:23;2016:10;2009:4;2003;1999:15;1995:32;2070:7;2064:14;2153:4;2144:7;2137:21;2285:623;2337:1;2331:4;2327:12;2319:20;;2399:4;2393:11;2539:4;2531:5;2527:2;2523:14;2519:25;2513:32;2510:1;2502:44;2604:4;2596:5;2592:2;2588:14;2584:25;2578:32;2575:1;2567:44;2668:4;2660:5;2657:1;2653:13;2649:24;2643:31;2640:1;2632:43;2724:4;2717:5;2713:16;2707:23;2704:1;2696:35;;2770:4;2764:11;2759:3;2752:24;2814:1;2809:3;2805:11;2798:18;;2875:3;2870;2867:12;2285:623;2857:33;2925:29;;3035:4;3026:14;3020:4;3013:28;-1:-1:-1;;;3180:1:32;3164:18;;3161:1;3157:26;3291:11;;;3284:37;;;;3469:1;3410:17;;3403:25;3399:33;;;3456:11;;;;3449:22;3541:21;;3526:37;;980:2618;722:2892;;;;;:::o;1562:703:0:-;1671:4;1691:6;;;:32;;;-1:-1:-1;;;;;;;;;;;1701:1:0;:22;;1691:32;:42;;;-1:-1:-1;1727:6:0;;1691:42;:68;;;;-1:-1:-1;;;;;;;;;;;1737:1:0;:22;;1691:68;1687:111;;;-1:-1:-1;1782:5:0;1775:12;;1687:111;1821:39;1853:2;1857;1821:31;:39::i;:::-;1816:83;;-1:-1:-1;1883:5:0;1876:12;;1816:83;1909:12;1924:30;1952:1;1924:27;:30::i;:::-;1909:45;-1:-1:-1;1965:16:0;-1:-1:-1;;;;;;;;;;;2009:4:0;1999:7;1984:49;1965:68;-1:-1:-1;2043:16:0;-1:-1:-1;;;;;;;;;;;2072:4:0;2069:1;2062:34;2043:53;;2106:10;2132:64;2169:2;2173;2177:8;2187;2132:36;:64::i;:::-;2127:69;-1:-1:-1;;;;;;;;;;;;2222:3:0;2224:1;-1:-1:-1;;;;;;;;;;;2222:3:0;:::i;:::-;2218:2;2211:18;2251:7;;1562:703;-1:-1:-1;;;;;;;;;;1562:703:0:o;3357:265:3:-;3416:11;3479:4;3473:11;3508;3563:3;3550:11;3545:3;3532:35;3587:19;;;3357:265;-1:-1:-1;;;3357:265:3:o;12684:440:1:-;12754:4;12777:6;;12776:19;;;;-1:-1:-1;12788:6:1;;12776:19;12775:31;;;;-1:-1:-1;;;;;;;;12800:1:1;:6;12775:31;:43;;;;-1:-1:-1;;;;;;;;12812:1:1;:6;12775:43;12770:87;;;-1:-1:-1;12841:5:1;12834:12;;12770:87;12890:11;-1:-1:-1;;;;;;;;12914:1:1;12911;12904:15;12890:29;-1:-1:-1;12940:11:1;-1:-1:-1;;;;;;;;1531:66:1;1666;12999:1;12992:15;-1:-1:-1;;;;;;;;12985:1:1;-1:-1:-1;;;;;;;;12978:1:1;12975;12968:15;12961:29;12954:57;12940:71;-1:-1:-1;;;;;;;;;1802:66:1;13048:3;13041:17;13097:10;;;;;12684:440;-1:-1:-1;;;;12684:440:1:o;3154:734::-;3209:14;3279:4;3273:11;3390:4;3381:7;3374:21;3435:4;3428;3419:7;3415:18;3408:32;3480:4;3473;3464:7;3460:18;3453:32;3584:1;3577:4;3568:7;3564:18;3557:29;3626:11;3619:4;3610:7;3606:18;3599:39;-1:-1:-1;;;;;;;;;;;3671:4:1;3662:7;3658:18;3651:29;3812:4;3803:7;3797:4;3788:7;3782:4;3778:1;3774:6;3763:54;3753:82;;3831:1;3828;3821:12;3753:82;3858:14;;3154:734;-1:-1:-1;;3154:734:1:o;13897:6526::-;14079:9;;;;14176:3;14079:9;;14258:13;;:30;;;;-1:-1:-1;14275:13:1;;14258:30;14254:44;;;14297:1;14290:8;;;;;;;;;;14254:44;14324:25;1938:66;2032;14342:2;14346;14324:9;:25::i;:::-;14313:36;;-1:-1:-1;14313:36:1;-1:-1:-1;14368:5:1;;14367:16;;;;-1:-1:-1;14377:5:1;;14367:16;14364:150;;;-1:-1:-1;;;;;;;;;;;14458:8:1;-1:-1:-1;;;;;;;;;;;14456:10:1;14446:8;14439:31;14430:40;;14497:1;14488:10;;14364:150;14638:1;14627:8;14620:5;14616:20;14612:28;14607:1;14596:8;14589:5;14585:20;14581:28;14578:1;14574:36;14570:71;14554:263;14647:2;14554:263;;14696:1;14689:5;14685:13;14676:22;;14793:1;14782:8;14775:5;14771:20;14767:28;14762:1;14751:8;14744:5;14740:20;14736:28;14733:1;14729:36;14725:71;14719:77;;14554:263;;;14558:85;14908:1;14897:8;14890:5;14886:20;14882:28;14877:1;14866:8;14859:5;14855:20;14851:28;14848:1;14844:36;14840:71;14834:77;;14939:1;14935:2;14932:9;14929:88;;14969:2;14964:7;;14997:2;14992:7;;14929:88;15044:1;15040:2;15037:9;15034:88;;15074:2;15069:7;;15102:2;15097:7;;15034:88;15149:1;15145:2;15142:9;15139:88;;15179:2;15174:7;;15207:2;15202:7;;15139:88;15265:1;15258:5;15254:13;15245:22;;15290:1;15284:7;;15315:1;15308:8;;15334:4025;15353:5;-1:-1:-1;;15341:18:1;15334:4025;;;-1:-1:-1;;;;;;;;15469:1:1;15466;15459:15;-1:-1:-1;;;;;;;;15535:2:1;15531;15524:17;-1:-1:-1;;;;;;;;15591:2:1;15588:1;15581:16;-1:-1:-1;;;;;;;;15647:2:1;15643;15636:17;15630:23;;-1:-1:-1;;;;;;;;15753:1:1;-1:-1:-1;;;;;;;;15745:2:1;15742:1;15735:16;-1:-1:-1;;;;;;;;15726:2:1;-1:-1:-1;;;;;;;;15719:10:1;15716:1;15709:24;15702:53;15699:1;15692:67;-1:-1:-1;;;;;;;;15822:3:1;15818:2;15811:18;15804:25;;-1:-1:-1;;;;;;;;15881:2:1;15877;15870:17;15864:23;;-1:-1:-1;;;;;;;;15980:1:1;15976:2;-1:-1:-1;;;;;;;;;;15960:22:1;-1:-1:-1;;;;;;;;15952:2:1;15948;15941:17;15934:52;15929:57;;-1:-1:-1;;;;;;;;16058:1:1;16053:2;-1:-1:-1;;;;;;;;16046:10:1;16043:1;16036:24;16032:2;16025:39;16019:45;;-1:-1:-1;;;;;;;;16134:2:1;-1:-1:-1;;;;;;;;16127:1:1;16123:2;16116:16;16109:31;16104:36;;16367:1;16356:8;16349:5;16345:20;16341:28;16336:1;16325:8;16318:5;16314:20;16310:28;16307:1;16303:36;16299:71;16293:77;;16406:2;16396:148;;16452:1;-1:-1:-1;;;;;;;;16445:9:1;16440:14;;16510:8;;;;;;16396:148;16592:1;16588:2;16585:9;16582:114;;16631:2;16625:8;;16668:2;16662:8;;16582:114;16731:1;16727:2;16724:9;16721:114;;16770:2;16764:8;;16807:2;16801:8;;16721:114;16870:1;16866:2;16863:9;16860:114;;16909:2;16903:8;;16946:2;16940:8;;16860:114;17009:2;16999:223;;-1:-1:-1;17048:2:1;;-1:-1:-1;17121:1:1;;-1:-1:-1;17121:1:1;;-1:-1:-1;17084:2:1;-1:-1:-1;17188:8:1;;-1:-1:-1;17188:8:1;16999:223;-1:-1:-1;;;;;;;;17402:1:1;-1:-1:-1;;;;;;;;17393:3:1;17389:2;17382:18;17375:32;-1:-1:-1;;;;;;;;17475:1:1;-1:-1:-1;;;;;;;;17468:9:1;-1:-1:-1;;;;;;;;17460:2:1;17456;17449:17;17442:39;17436:45;;17706:2;17696:1043;;17750:2;17740:973;;-1:-1:-1;;;;;;;;17810:1:1;-1:-1:-1;;;;;;;;;;17794:21:1;17788:27;;-1:-1:-1;;;;;;;;17884:2:1;17880;17873:17;17867:23;;-1:-1:-1;;;;;;;;17948:2:1;17945:1;17938:16;17932:22;;-1:-1:-1;;;;;;;;18017:2:1;18013;18006:17;18000:23;;-1:-1:-1;;;;;;;;18117:1:1;18112:2;-1:-1:-1;;;;;;;;18105:10:1;18102:1;18095:24;-1:-1:-1;;;;;;;;18087:2:1;18084:1;18077:16;18070:53;18064:59;;-1:-1:-1;;;;;;;;18187:2:1;18184:1;18177:16;18171:22;;-1:-1:-1;;;;;;;;18264:3:1;18260:2;18253:18;18246:25;;-1:-1:-1;;;;;;;;18335:2:1;18331;18324:17;18318:23;;-1:-1:-1;;;;;;;;18446:1:1;18442:2;-1:-1:-1;;;;;;;;;;18426:22:1;-1:-1:-1;;;;;;;;18418:2:1;18414;18407:17;18400:52;18395:57;;-1:-1:-1;;;;;;;;18536:1:1;18532;-1:-1:-1;;;;;;;;18525:9:1;18521:2;18514:24;18510:2;18503:39;18497:45;;-1:-1:-1;;;;;;;;18616:1:1;18613;18609:2;18602:16;18598:2;18591:31;18586:36;;18675:8;;;;;;;17740:973;-1:-1:-1;;;;;;;;18782:2:1;18778;18771:17;18765:23;;-1:-1:-1;;;;;;;;18840:2:1;18836;18829:17;-1:-1:-1;;;;;;;;18956:2:1;18952;18945:17;18939:23;;-1:-1:-1;;;;;;;;19006:3:1;19001;18994:19;18987:26;;-1:-1:-1;;;;;;;;19071:2:1;19068:1;19061:16;-1:-1:-1;;;;;;;;19179:1:1;19174:3;-1:-1:-1;;;;;;;;;;19158:23:1;-1:-1:-1;;;;;;;;19148:3:1;-1:-1:-1;;;;;;;;19141:11:1;-1:-1:-1;;;;;;;;19133:2:1;19129;19122:17;19115:41;19108:77;19102:83;;-1:-1:-1;;;;;;;;19280:1:1;19275:3;19272:1;19265:17;-1:-1:-1;;;;;;;;19257:2:1;-1:-1:-1;;;;;;;;19248:2:1;-1:-1:-1;;;;;;;;19241:10:1;19236:3;19229:26;19222:41;19215:71;19210:76;;;;;19317:2;19312:7;;16226:3115;;;;15334:4025;15382:1;15375:5;15371:13;15362:22;;15334:4025;;;19402:4;19396:11;19445:2;19438:4;19435:1;19431:12;19424:24;19710:4;19707:1;19700:15;19753:4;19746;19743:1;19739:12;19732:26;19796:4;19789;19786:1;19782:12;19775:26;-1:-1:-1;;;;;;;;;;19943:4:1;19940:1;19936:12;19929:29;-1:-1:-1;;;;;;;;19989:4:1;19986:1;19982:12;19975:23;20126:4;20123:1;20117:4;20114:1;20108:4;20104:1;20100:6;20089:42;20079:70;;20145:1;20142;20135:12;20079:70;-1:-1:-1;;;;;;;;20330:1:1;20324:8;20321:1;20314:22;20309:27;;;20408:8;;;;;;13897:6526;;;;;;;:::o;13226:499::-;13316:7;;;;12535:6;13388:41;;13422:2;13426;13414:15;;;;;;;;13388:41;12535:6;13439:41;;13473:2;13477;13465:15;;;;;;;;13439:41;13498:2;13494;:6;13493:18;;;;;13508:2;13504;:6;13493:18;13490:181;;;13549:20;13558:2;13562;13565:1;13567;13549:8;:20::i;:::-;13527:42;;-1:-1:-1;13527:42:1;;-1:-1:-1;13527:42:1;-1:-1:-1;13527:42:1;-1:-1:-1;13490:181:1;;;13629:31;13639:2;13643;13647:1;13650;13653:2;13657;13629:9;:31::i;:::-;13607:53;;-1:-1:-1;13607:53:1;;-1:-1:-1;13607:53:1;-1:-1:-1;13607:53:1;-1:-1:-1;13490:181:1;13688:30;13700:2;13704;13708:3;13713:4;13688:11;:30::i;:::-;13681:37;;;;;;13226:499;;;;;;;;:::o;9414:928::-;9526:10;9538;9550;9562;-1:-1:-1;;;;;;;;9655:1:1;9652;9645:15;9639:21;;-1:-1:-1;;;;;;;;9705:2:1;9701;9694:17;9688:23;;-1:-1:-1;;;;;;;;9753:2:1;9750:1;9743:16;9737:22;;-1:-1:-1;;;;;;;;9805:2:1;9801;9794:17;9788:23;;-1:-1:-1;;;;;;;;9853:2:1;9849;9842:17;9836:23;;-1:-1:-1;;;;;;;;9955:1:1;-1:-1:-1;;;;;;;;9947:2:1;9944:1;9937:16;-1:-1:-1;;;;;;;;9928:2:1;-1:-1:-1;;;;;;;;9921:10:1;9918:1;9911:24;9904:53;9901:1;9894:67;9888:73;;-1:-1:-1;;;;;;;;10054:1:1;10050:2;-1:-1:-1;;;;;;;;;;10034:22:1;-1:-1:-1;;;;;;;;10026:2:1;10022;10015:17;10008:52;10002:58;;-1:-1:-1;;;;;;;;10128:1:1;10123:2;-1:-1:-1;;;;;;;;10116:10:1;10112:2;10105:25;10101:2;10094:40;10089:45;;-1:-1:-1;;;;;;;;10178:3:1;10174:2;10167:18;10161:24;;-1:-1:-1;;;;;;;;10253:1:1;10250;10246:2;10239:16;-1:-1:-1;;;;;;;;10232:24:1;10229:1;10222:38;10216:44;;9414:928;;;;;;;;;:::o;10559:1073::-;10700:10;10712;10724;10736;10790:2;10796:1;10790:7;10786:67;;-1:-1:-1;10825:2:1;;-1:-1:-1;10829:2:1;;-1:-1:-1;10833:1:1;;-1:-1:-1;10833:1:1;10817:21;;10786:67;-1:-1:-1;;;;;;;;10900:10:1;;;;;10904:1;10951:4;10947:2;10940:19;10933:34;10927:40;;-1:-1:-1;;;;;;;;11024:2:1;-1:-1:-1;;;;;;;;11017:10:1;-1:-1:-1;;;;;;;;11008:3:1;11004:2;10997:18;10990:41;10984:47;;-1:-1:-1;;;;;;;;11065:2:1;11061;11054:17;11048:23;;-1:-1:-1;;;;;;;;11116:2:1;11112;11105:17;11099:23;;-1:-1:-1;;;;;;;;11170:2:1;11165:3;11158:18;11152:24;;-1:-1:-1;;;;;;;;11229:2:1;11223:4;11216:19;11210:25;;-1:-1:-1;;;;;;;;11290:2:1;11286;11279:17;11272:24;;-1:-1:-1;;;;;;;;11401:1:1;11396:3;-1:-1:-1;;;;;;;;;;11380:23:1;-1:-1:-1;;;;;;;;11371:2:1;-1:-1:-1;;;;;;;;11364:10:1;-1:-1:-1;;;;;;;;11356:2:1;11352;11345:17;11338:40;11331:76;11325:82;;-1:-1:-1;;;;;;;;11509:1:1;11505:2;11501;11494:17;-1:-1:-1;;;;;;;;11486:2:1;-1:-1:-1;;;;;;;;11477:2:1;-1:-1:-1;;;;;;;;11470:10:1;11465:3;11458:26;11451:41;11444:71;11438:77;;10559:1073;;;;;;;;;;;;:::o;8954:351::-;9045:10;9057;9079:14;9096:16;9108:3;9096:11;:16::i;:::-;9079:33;-1:-1:-1;;;;;;;;;9145:6:1;9142:1;9135:20;9130:25;-1:-1:-1;9173:10:1;-1:-1:-1;;;;;;;;9197:6:1;9193:2;9186:21;9173:34;-1:-1:-1;;;;;;;;;9243:2:1;9239;9232:17;9223:26;-1:-1:-1;;;;;;;;;9281:6:1;9278:1;9271:20;9266:25;;9069:236;;8954:351;;;;;;;:::o;4000:730::-;4055:14;4125:4;4119:11;4236:4;4227:7;4220:21;4281:4;4274;4265:7;4261:18;4254:32;4326:4;4319;4310:7;4306:18;4299:32;4430:1;4423:4;4414:7;4410:18;4403:29;-1:-1:-1;;;;;;;;;;4465:4:1;4456:7;4452:18;4445:35;-1:-1:-1;;;;;;;;4513:4:1;4504:7;4500:18;4493:29;4654:4;4645:7;4639:4;4630:7;4624:4;4620:1;4616:6;4605:54;4595:82;;4673:1;4670;4663:12;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:248:62;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:62;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:62:o;459:173::-;527:20;;-1:-1:-1;;;;;576:31:62;;566:42;;556:70;;622:1;619;612:12;556:70;459:173;;;:::o;637:186::-;696:6;749:2;737:9;728:7;724:23;720:32;717:52;;;765:1;762;755:12;717:52;788:29;807:9;788:29;:::i;828:347::-;879:8;889:6;943:3;936:4;928:6;924:17;920:27;910:55;;961:1;958;951:12;910:55;-1:-1:-1;984:20:62;;-1:-1:-1;;;;;1016:30:62;;1013:50;;;1059:1;1056;1049:12;1013:50;1096:4;1088:6;1084:17;1072:29;;1148:3;1141:4;1132:6;1124;1120:19;1116:30;1113:39;1110:59;;;1165:1;1162;1155:12;1110:59;828:347;;;;;:::o;1180:477::-;1259:6;1267;1275;1328:2;1316:9;1307:7;1303:23;1299:32;1296:52;;;1344:1;1341;1334:12;1296:52;1380:9;1367:23;1357:33;;1441:2;1430:9;1426:18;1413:32;-1:-1:-1;;;;;1460:6:62;1457:30;1454:50;;;1500:1;1497;1490:12;1454:50;1539:58;1589:7;1580:6;1569:9;1565:22;1539:58;:::i;:::-;1180:477;;1616:8;;-1:-1:-1;1513:84:62;;-1:-1:-1;;;;1180:477:62:o;1869:127::-;1930:10;1925:3;1921:20;1918:1;1911:31;1961:4;1958:1;1951:15;1985:4;1982:1;1975:15;2001:253;2073:2;2067:9;2115:4;2103:17;;-1:-1:-1;;;;;2135:34:62;;2171:22;;;2132:62;2129:88;;;2197:18;;:::i;:::-;2233:2;2226:22;2001:253;:::o;2259:275::-;2330:2;2324:9;2395:2;2376:13;;-1:-1:-1;;2372:27:62;2360:40;;-1:-1:-1;;;;;2415:34:62;;2451:22;;;2412:62;2409:88;;;2477:18;;:::i;:::-;2513:2;2506:22;2259:275;;-1:-1:-1;2259:275:62:o;2539:186::-;2587:4;-1:-1:-1;;;;;2612:6:62;2609:30;2606:56;;;2642:18;;:::i;:::-;-1:-1:-1;2708:2:62;2687:15;-1:-1:-1;;2683:29:62;2714:4;2679:40;;2539:186::o;2730:462::-;2772:5;2825:3;2818:4;2810:6;2806:17;2802:27;2792:55;;2843:1;2840;2833:12;2792:55;2879:6;2866:20;2910:48;2926:31;2954:2;2926:31;:::i;:::-;2910:48;:::i;:::-;2983:2;2974:7;2967:19;3029:3;3022:4;3017:2;3009:6;3005:15;3001:26;2998:35;2995:55;;;3046:1;3043;3036:12;2995:55;3111:2;3104:4;3096:6;3092:17;3085:4;3076:7;3072:18;3059:55;3159:1;3134:16;;;3152:4;3130:27;3123:38;;;;3138:7;2730:462;-1:-1:-1;;;2730:462:62:o;3197:320::-;3265:6;3318:2;3306:9;3297:7;3293:23;3289:32;3286:52;;;3334:1;3331;3324:12;3286:52;3374:9;3361:23;-1:-1:-1;;;;;3399:6:62;3396:30;3393:50;;;3439:1;3436;3429:12;3393:50;3462:49;3503:7;3494:6;3483:9;3479:22;3462:49;:::i;3522:380::-;3598:8;3608:6;3662:3;3655:4;3647:6;3643:17;3639:27;3629:55;;3680:1;3677;3670:12;3629:55;-1:-1:-1;3703:20:62;;-1:-1:-1;;;;;3735:30:62;;3732:50;;;3778:1;3775;3768:12;3732:50;3815:4;3807:6;3803:17;3791:29;;3875:3;3868:4;3858:6;3855:1;3851:14;3843:6;3839:27;3835:38;3832:47;3829:67;;;3892:1;3889;3882:12;3907:475;4018:6;4026;4079:2;4067:9;4058:7;4054:23;4050:32;4047:52;;;4095:1;4092;4085:12;4047:52;4135:9;4122:23;-1:-1:-1;;;;;4160:6:62;4157:30;4154:50;;;4200:1;4197;4190:12;4154:50;4239:83;4314:7;4305:6;4294:9;4290:22;4239:83;:::i;:::-;4341:8;;4213:109;;-1:-1:-1;3907:475:62;-1:-1:-1;;;;3907:475:62:o;4387:162::-;4453:5;4498:3;4489:6;4484:3;4480:16;4476:26;4473:46;;;4515:1;4512;4505:12;4473:46;-1:-1:-1;4537:6:62;4387:162;-1:-1:-1;4387:162:62:o;4554:504::-;4664:6;4672;4680;4733:2;4721:9;4712:7;4708:23;4704:32;4701:52;;;4749:1;4746;4739:12;4701:52;4789:9;4776:23;-1:-1:-1;;;;;4814:6:62;4811:30;4808:50;;;4854:1;4851;4844:12;4808:50;4877:73;4942:7;4933:6;4922:9;4918:22;4877:73;:::i;:::-;4867:83;4997:2;4982:18;;4969:32;;-1:-1:-1;5048:2:62;5033:18;;;5020:32;;4554:504;-1:-1:-1;;;;4554:504:62:o;5245:483::-;5324:6;5332;5340;5393:2;5381:9;5372:7;5368:23;5364:32;5361:52;;;5409:1;5406;5399:12;5361:52;5432:29;5451:9;5432:29;:::i;:::-;5422:39;;5512:2;5501:9;5497:18;5484:32;-1:-1:-1;;;;;5531:6:62;5528:30;5525:50;;;5571:1;5568;5561:12;5733:368;5825:6;5878:2;5866:9;5857:7;5853:23;5849:32;5846:52;;;5894:1;5891;5884:12;5846:52;5934:9;5921:23;-1:-1:-1;;;;;5959:6:62;5956:30;5953:50;;;5999:1;5996;5989:12;5953:50;6022:73;6087:7;6078:6;6067:9;6063:22;6022:73;:::i;6962:180::-;7021:6;7074:2;7062:9;7053:7;7049:23;7045:32;7042:52;;;7090:1;7087;7080:12;7042:52;-1:-1:-1;7113:23:62;;6962:180;-1:-1:-1;6962:180:62:o;7147:250::-;7232:1;7242:113;7256:6;7253:1;7250:13;7242:113;;;7332:11;;;7326:18;7313:11;;;7306:39;7278:2;7271:10;7242:113;;;-1:-1:-1;;7389:1:62;7371:16;;7364:27;7147:250::o;7402:271::-;7444:3;7482:5;7476:12;7509:6;7504:3;7497:19;7525:76;7594:6;7587:4;7582:3;7578:14;7571:4;7564:5;7560:16;7525:76;:::i;:::-;7655:2;7634:15;-1:-1:-1;;7630:29:62;7621:39;;;;7662:4;7617:50;;7402:271;-1:-1:-1;;7402:271:62:o;7678:1259::-;8084:3;8079;8075:13;8067:6;8063:26;8052:9;8045:45;8026:4;8109:2;8147:3;8142:2;8131:9;8127:18;8120:31;8174:46;8215:3;8204:9;8200:19;8192:6;8174:46;:::i;:::-;8268:9;8260:6;8256:22;8251:2;8240:9;8236:18;8229:50;8302:33;8328:6;8320;8302:33;:::i;:::-;8366:2;8351:18;;8344:34;;;-1:-1:-1;;;;;8415:32:62;;8409:3;8394:19;;8387:61;8435:3;8464:19;;8457:35;;;8529:22;;;8523:3;8508:19;;8501:51;8601:13;;8623:22;;;8673:2;8699:15;;;;-1:-1:-1;8661:15:62;;;;-1:-1:-1;8742:169:62;8756:6;8753:1;8750:13;8742:169;;;8817:13;;8805:26;;8886:15;;;;8851:12;;;;8778:1;8771:9;8742:169;;;-1:-1:-1;8928:3:62;;7678:1259;-1:-1:-1;;;;;;;;;;;;7678:1259:62:o;8942:218::-;9089:2;9078:9;9071:21;9052:4;9109:45;9150:2;9139:9;9135:18;9127:6;9109:45;:::i;9165:286::-;9223:6;9276:2;9264:9;9255:7;9251:23;9247:32;9244:52;;;9292:1;9289;9282:12;9244:52;9318:23;;-1:-1:-1;;;;;;9370:32:62;;9360:43;;9350:71;;9417:1;9414;9407:12;9456:551;9544:6;9552;9560;9568;9621:2;9609:9;9600:7;9596:23;9592:32;9589:52;;;9637:1;9634;9627:12;9589:52;9660:29;9679:9;9660:29;:::i;:::-;9650:39;;9736:2;9725:9;9721:18;9708:32;9698:42;;9791:2;9780:9;9776:18;9763:32;-1:-1:-1;;;;;9810:6:62;9807:30;9804:50;;;9850:1;9847;9840:12;9804:50;9889:58;9939:7;9930:6;9919:9;9915:22;9889:58;:::i;:::-;9456:551;;;;-1:-1:-1;9966:8:62;-1:-1:-1;;;;9456:551:62:o;10012:409::-;10082:6;10090;10143:2;10131:9;10122:7;10118:23;10114:32;10111:52;;;10159:1;10156;10149:12;10111:52;10199:9;10186:23;-1:-1:-1;;;;;10224:6:62;10221:30;10218:50;;;10264:1;10261;10254:12;10218:50;10303:58;10353:7;10344:6;10333:9;10329:22;10303:58;:::i;10864:287::-;10993:3;11031:6;11025:13;11047:66;11106:6;11101:3;11094:4;11086:6;11082:17;11047:66;:::i;:::-;11129:16;;;;;10864:287;-1:-1:-1;;10864:287:62:o;11156:127::-;11217:10;11212:3;11208:20;11205:1;11198:31;11248:4;11245:1;11238:15;11272:4;11269:1;11262:15;11288:322;11379:4;11437:11;11424:25;11531:2;11527:7;11516:8;11500:14;11496:29;11492:43;11472:18;11468:68;11458:96;;11550:1;11547;11540:12;11615:521;11692:4;11698:6;11758:11;11745:25;11852:2;11848:7;11837:8;11821:14;11817:29;11813:43;11793:18;11789:68;11779:96;;11871:1;11868;11861:12;11779:96;11898:33;;11950:20;;;-1:-1:-1;;;;;;11982:30:62;;11979:50;;;12025:1;12022;12015:12;11979:50;12058:4;12046:17;;-1:-1:-1;12089:14:62;12085:27;;;12075:38;;12072:58;;;12126:1;12123;12116:12;12141:331;12246:9;12257;12299:8;12287:10;12284:24;12281:44;;;12321:1;12318;12311:12;12281:44;12350:6;12340:8;12337:20;12334:40;;;12370:1;12367;12360:12;12334:40;-1:-1:-1;;12396:23:62;;;12441:25;;;;;-1:-1:-1;12141:331:62:o;12477:323::-;-1:-1:-1;;;;;;12597:19:62;;12673:11;;;;12704:1;12696:10;;12693:101;;;12781:2;12775;12768:3;12765:1;12761:11;12758:1;12754:19;12750:28;12746:2;12742:37;12738:46;12729:55;;12693:101;;;12477:323;;;;:::o;13084:938::-;13220:9;-1:-1:-1;;;;;13295:2:62;13287:6;13284:14;13281:40;;;13301:18;;:::i;:::-;13347:6;13344:1;13340:14;13373:4;13397:30;13421:4;13417:2;13413:13;13397:30;:::i;:::-;13461:19;;;13533:14;;;;13505:4;13496:14;;;13570;13559:26;;13556:46;;;13598:1;13595;13588:12;13556:46;13622:5;13636:353;13652:6;13647:3;13644:15;13636:353;;;13738:3;13725:17;13774:2;13761:11;13758:19;13755:109;;;13818:1;13847:2;13843;13836:14;13755:109;13889:57;13931:14;13917:11;13910:5;13906:23;13889:57;:::i;:::-;13877:70;;-1:-1:-1;13967:12:62;;;;13669;;13636:353;;;-1:-1:-1;14011:5:62;13084:938;-1:-1:-1;;;;;;;13084:938:62:o;14027:380::-;14106:1;14102:12;;;;14149;;;14170:61;;14224:4;14216:6;14212:17;14202:27;;14170:61;14277:2;14269:6;14266:14;14246:18;14243:38;14240:161;;14323:10;14318:3;14314:20;14311:1;14304:31;14358:4;14355:1;14348:15;14386:4;14383:1;14376:15;14906:127;14967:10;14962:3;14958:20;14955:1;14948:31;14998:4;14995:1;14988:15;15022:4;15019:1;15012:15;15038:135;15077:3;15098:17;;;15095:43;;15118:18;;:::i;:::-;-1:-1:-1;15165:1:62;15154:13;;15038:135::o;15178:827::-;15272:6;15325:2;15313:9;15304:7;15300:23;15296:32;15293:52;;;15341:1;15338;15331:12;15293:52;15381:9;15368:23;-1:-1:-1;;;;;15451:2:62;15443:6;15440:14;15437:34;;;15467:1;15464;15457:12;15437:34;15490:22;;;;15546:4;15528:16;;;15524:27;15521:47;;;15564:1;15561;15554:12;15521:47;15597:4;15591:11;15641:4;15633:6;15629:17;15696:6;15684:10;15681:22;15676:2;15664:10;15661:18;15658:46;15655:72;;;15707:18;;:::i;:::-;15743:4;15736:24;15784:16;;15769:32;;15847:2;15839:11;;15826:25;15863:16;;;15860:36;;;15892:1;15889;15882:12;15860:36;15929:44;15965:7;15954:8;15950:2;15946:17;15929:44;:::i;:::-;15924:2;15912:15;;15905:69;-1:-1:-1;15916:6:62;15178:827;-1:-1:-1;;;;;15178:827:62:o;16010:297::-;16128:12;;16175:4;16164:16;;;16158:23;;16128:12;16193:16;;16190:111;;;-1:-1:-1;;16267:4:62;16263:17;;;;16260:1;16256:25;16252:38;16241:50;;16010:297;-1:-1:-1;16010:297:62:o;16312:245::-;16391:6;16399;16452:2;16440:9;16431:7;16427:23;16423:32;16420:52;;;16468:1;16465;16458:12;16420:52;-1:-1:-1;;16491:16:62;;16547:2;16532:18;;;16526:25;16491:16;;16526:25;;-1:-1:-1;16312:245:62:o;16562:441::-;16615:5;16668:3;16661:4;16653:6;16649:17;16645:27;16635:55;;16686:1;16683;16676:12;16635:55;16715:6;16709:13;16746:48;16762:31;16790:2;16762:31;:::i;16746:48::-;16819:2;16810:7;16803:19;16865:3;16858:4;16853:2;16845:6;16841:15;16837:26;16834:35;16831:55;;;16882:1;16879;16872:12;16831:55;16895:77;16969:2;16962:4;16953:7;16949:18;16942:4;16934:6;16930:17;16895:77;:::i;17008:1006::-;17109:6;17162:2;17150:9;17141:7;17137:23;17133:32;17130:52;;;17178:1;17175;17168:12;17130:52;17211:9;17205:16;-1:-1:-1;;;;;17281:2:62;17273:6;17270:14;17267:34;;;17297:1;17294;17287:12;17267:34;17320:22;;;;17376:4;17358:16;;;17354:27;17351:47;;;17394:1;17391;17384:12;17351:47;17420:22;;:::i;:::-;17473:2;17467:9;17501:2;17491:8;17488:16;17485:36;;;17517:1;17514;17507:12;17485:36;17544:55;17591:7;17580:8;17576:2;17572:17;17544:55;:::i;:::-;17537:5;17530:70;;17639:2;17635;17631:11;17625:18;17668:2;17658:8;17655:16;17652:36;;;17684:1;17681;17674:12;17652:36;17720:55;17767:7;17756:8;17752:2;17748:17;17720:55;:::i;:::-;17715:2;17708:5;17704:14;17697:79;;17822:2;17818;17814:11;17808:18;17803:2;17796:5;17792:14;17785:42;17873:2;17869;17865:11;17859:18;17854:2;17847:5;17843:14;17836:42;17925:3;17921:2;17917:12;17911:19;17905:3;17898:5;17894:15;17887:44;17978:3;17974:2;17970:12;17964:19;17958:3;17951:5;17947:15;17940:44;18003:5;17993:15;;;;;17008:1006;;;;:::o;18541:542::-;18642:2;18637:3;18634:11;18631:446;;;18678:1;18702:5;18699:1;18692:16;18746:4;18743:1;18733:18;18816:2;18804:10;18800:19;18797:1;18793:27;18787:4;18783:38;18852:4;18840:10;18837:20;18834:47;;;-1:-1:-1;18875:4:62;18834:47;18930:2;18925:3;18921:12;18918:1;18914:20;18908:4;18904:31;18894:41;;18985:82;19003:2;18996:5;18993:13;18985:82;;;19048:17;;;19029:1;19018:13;18985:82;;;18989:3;;;18541:542;;;:::o;19259:1341::-;19383:3;19377:10;-1:-1:-1;;;;;19402:6:62;19399:30;19396:56;;;19432:18;;:::i;:::-;19461:96;19550:6;19510:38;19542:4;19536:11;19510:38;:::i;:::-;19504:4;19461:96;:::i;:::-;19612:4;;19669:2;19658:14;;19686:1;19681:662;;;;20387:1;20404:6;20401:89;;;-1:-1:-1;20456:19:62;;;20450:26;20401:89;-1:-1:-1;;19216:1:62;19212:11;;;19208:24;19204:29;19194:40;19240:1;19236:11;;;19191:57;20503:81;;19651:943;;19681:662;18488:1;18481:14;;;18525:4;18512:18;;-1:-1:-1;;19717:20:62;;;19834:236;19848:7;19845:1;19842:14;19834:236;;;19937:19;;;19931:26;19916:42;;20029:27;;;;19997:1;19985:14;;;;19864:19;;19834:236;;;19838:3;20098:6;20089:7;20086:19;20083:201;;;20159:19;;;20153:26;-1:-1:-1;;20242:1:62;20238:14;;;20254:3;20234:24;20230:37;20226:42;20211:58;20196:74;;20083:201;-1:-1:-1;;;;;20330:1:62;20314:14;;;20310:22;20297:36;;-1:-1:-1;19259:1341:62:o;20605:125::-;20670:9;;;20691:10;;;20688:36;;;20704:18;;:::i;20735:611::-;-1:-1:-1;;;21065:51:62;;21139:13;;21047:3;;21161:75;21139:13;21224:2;21215:12;;21208:4;21196:17;;21161:75;:::i;:::-;-1:-1:-1;;;21295:2:62;21255:16;;;;21287:11;;;21280:33;-1:-1:-1;21337:2:62;21329:11;;20735:611;-1:-1:-1;20735:611:62:o;21351:184::-;21421:6;21474:2;21462:9;21453:7;21449:23;21445:32;21442:52;;;21490:1;21487;21480:12;21442:52;-1:-1:-1;21513:16:62;;21351:184;-1:-1:-1;21351:184:62:o;21540:383::-;21697:3;21735:6;21729:13;21751:66;21810:6;21805:3;21798:4;21790:6;21786:17;21751:66;:::i;:::-;21839:16;;;;21864:21;;;-1:-1:-1;21912:4:62;21901:16;;21540:383;-1:-1:-1;21540:383:62:o;23571:128::-;23638:9;;;23659:11;;;23656:37;;;23673:18;;:::i", + "linkReferences": {}, + "immutableReferences": { + "49415": [ + { + "start": 2078, + "length": 32 + }, + { + "start": 2389, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "REPLAYABLE_NONCE_KEY()": "88ce4c7c", + "addOwnerAddress(address)": "0f0f3f24", + "addOwnerPublicKey(bytes32,bytes32)": "29565e3b", + "canSkipChainIdValidation(bytes4)": "9f9bcb34", + "domainSeparator()": "f698da25", + "eip712Domain()": "84b0196e", + "entryPoint()": "b0d691fe", + "execute(address,uint256,bytes)": "b61d27f6", + "executeBatch((address,uint256,bytes)[])": "34fcd5be", + "executeWithoutChainIdValidation(bytes)": "bf6ba1fc", + "getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": "4f6e7f22", + "implementation()": "5c60da1b", + "initialize(bytes[])": "6f2de70e", + "isOwnerAddress(address)": "a2e1a8d8", + "isOwnerBytes(bytes)": "1ca5393f", + "isOwnerPublicKey(bytes32,bytes32)": "066a1eb7", + "isValidSignature(bytes32,bytes)": "1626ba7e", + "nextOwnerIndex()": "d948fd2e", + "ownerAtIndex(uint256)": "8ea69029", + "proxiableUUID()": "52d1902d", + "removeOwnerAtIndex(uint256)": "72de3b5a", + "replaySafeHash(bytes32)": "ce1506be", + "upgradeToAndCall(address,bytes)": "4f1ef286", + "validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": "3a871cdd" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"AlreadyOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Initialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"InvalidEthereumAddressOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"name\":\"InvalidNonceKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"InvalidOwnerBytesLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"NoOwnerAtIndex\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"SelectorNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpgradeFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"AddOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"owner\",\"type\":\"bytes\"}],\"name\":\"RemoveOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"REPLAYABLE_NONCE_KEY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"addOwnerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"addOwnerPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"functionSelector\",\"type\":\"bytes4\"}],\"name\":\"canSkipChainIdValidation\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"domainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"entryPoint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct CoinbaseSmartWallet.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"executeWithoutChainIdValidation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"}],\"name\":\"getUserOpHashWithoutChainId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"owners\",\"type\":\"bytes[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isOwnerAddress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"account\",\"type\":\"bytes\"}],\"name\":\"isOwnerBytes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"x\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"isOwnerPublicKey\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"result\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextOwnerIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ownerAtIndex\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"removeOwnerAtIndex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"replaySafeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"callGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"verificationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxPriorityFeePerGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct UserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Coinbase (https://github.com/coinbase/smart-wallet)Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337.sol)\",\"errors\":{\"AlreadyOwner(bytes)\":[{\"params\":{\"owner\":\"The raw abi encoded owner bytes.\"}}],\"InvalidEthereumAddressOwner(bytes)\":[{\"params\":{\"owner\":\"The invalid raw abi encoded owner bytes.\"}}],\"InvalidNonceKey(uint256)\":[{\"details\":\"The `UserOperation` key validation is based on the `UserOperation` call selector.\",\"params\":{\"key\":\"The invalid `UserOperation` key.\"}}],\"InvalidOwnerBytesLength(bytes)\":[{\"params\":{\"owner\":\"The invalid raw abi encoded owner bytes.\"}}],\"NoOwnerAtIndex(uint256)\":[{\"params\":{\"index\":\"The targeted index for removal.\"}}],\"SelectorNotAllowed(bytes4)\":[{\"details\":\"Whitelisting of `UserOperation`s that are allowed to skip the chain ID validation is based on their call selectors (see `canSkipChainIdValidation()`).\",\"params\":{\"selector\":\"The user operation call selector that raised the error.\"}}],\"UnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized call context.\"}],\"UpgradeFailed()\":[{\"details\":\"The upgrade failed.\"}]},\"events\":{\"AddOwner(uint256,bytes)\":{\"params\":{\"index\":\"The owner index.\",\"owner\":\"The raw abi encoded owner bytes.\"}},\"RemoveOwner(uint256,bytes)\":{\"params\":{\"index\":\"The owner index.\",\"owner\":\"The raw abi encoded owner bytes.\"}},\"Upgraded(address)\":{\"details\":\"Emitted when the proxy's implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addOwnerAddress(address)\":{\"params\":{\"owner\":\"The owner address.\"}},\"addOwnerPublicKey(bytes32,bytes32)\":{\"params\":{\"x\":\"The owner public key x coordinate.\",\"y\":\"The owner public key y coordinate.\"}},\"canSkipChainIdValidation(bytes4)\":{\"returns\":{\"_0\":\"`true` is the function selector is whitelisted to skip the chain ID validation, else `false`.\"}},\"domainSeparator()\":{\"details\":\"Implements domainSeparator = hashStruct(eip712Domain). See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.\",\"returns\":{\"_0\":\"The 32 bytes domain separator result.\"}},\"eip712Domain()\":{\"details\":\"Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).\",\"returns\":{\"chainId\":\"The value of the `EIP712Domain.chainId` field.\",\"extensions\":\"The list of EIP numbers, that extends EIP-712 with new domain fields.\",\"fields\":\"The bitmap of used fields.\",\"name\":\"The value of the `EIP712Domain.name` field.\",\"salt\":\"The value of the `EIP712Domain.salt` field.\",\"verifyingContract\":\"The value of the `EIP712Domain.verifyingContract` field.\",\"version\":\"The value of the `EIP712Domain.version` field.\"}},\"entryPoint()\":{\"returns\":{\"_0\":\"The address of the EntryPoint v0.6\"}},\"execute(address,uint256,bytes)\":{\"details\":\"Can only be called by the Entrypoint or an owner of this account (including itself).\",\"params\":{\"data\":\"The raw call data.\",\"target\":\"The target call address.\",\"value\":\"The call value to user.\"}},\"executeBatch((address,uint256,bytes)[])\":{\"details\":\"Can only be called by the Entrypoint or an owner of this account (including itself).\",\"params\":{\"calls\":\"The list of `Call`s to execute.\"}},\"executeWithoutChainIdValidation(bytes)\":{\"details\":\"Can only be called by the Entrypoint.Reverts if the given call is not authorized to skip the chain ID validtion.`validateUserOp()` will recompute the `userOpHash` without the chain ID before validating it if the `UserOperation` aims at executing this function. This allows certain operations to be replayed for all accounts sharing the same address across chains. E.g. This may be useful for syncing owner changes.\",\"params\":{\"data\":\"The `UserOperation` raw call data of the execute.\"}},\"getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"details\":\"This allows accounts to sign a hash that can be used on many chains.\",\"params\":{\"userOp\":\"The `UserOperation` to compute the hash for.\"},\"returns\":{\"userOpHash\":\"The `UserOperation` hash, not including the chain ID.\"}},\"implementation()\":{\"returns\":{\"addr\":\"The address of implementation contract.\"}},\"initialize(bytes[])\":{\"details\":\"Reverts if the account has already been initialized.\",\"params\":{\"owners\":\"The initial array of owners to initialize this account with.\"}},\"isOwnerAddress(address)\":{\"params\":{\"account\":\"The account address to check.\"},\"returns\":{\"_0\":\"`true` if the account is an owner, else `false`.\"}},\"isOwnerBytes(bytes)\":{\"params\":{\"account\":\"The account to check identified by its address or passkey.\"},\"returns\":{\"_0\":\"`true` if the account is an owner, else `false`.\"}},\"isOwnerPublicKey(bytes32,bytes32)\":{\"params\":{\"x\":\"The public key x coordinate.\",\"y\":\"The public key y coordinate.\"},\"returns\":{\"_0\":\"`true` if the account is an owner, else `false`.\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe hash version).\",\"params\":{\"hash\":\"The original hash.\",\"signature\":\"The signature of the replay-safe hash to validate.\"},\"returns\":{\"result\":\"`0x1626ba7e` if validation succeeded, else `0xffffffff`.\"}},\"nextOwnerIndex()\":{\"returns\":{\"_0\":\"The next index that will be used to add a new owner.\"}},\"ownerAtIndex(uint256)\":{\"params\":{\"index\":\"The index to lookup.\"},\"returns\":{\"_0\":\"The owner bytes (empty if no owner is registered at this `index`).\"}},\"proxiableUUID()\":{\"details\":\"Returns the storage slot used by the implementation, as specified in [ERC1822](https://eips.ethereum.org/EIPS/eip-1822). Note: The `notDelegated` modifier prevents accidental upgrades to an implementation that is a proxy contract.\"},\"removeOwnerAtIndex(uint256)\":{\"details\":\"Reverts if the owner is not registered at `index`.\",\"params\":{\"index\":\"The index to remove from.\"}},\"replaySafeHash(bytes32)\":{\"details\":\"The returned EIP-712 compliant replay-safe hash is the result of: keccak256( \\\\x19\\\\x01 || this.domainSeparator || hashStruct(CoinbaseSmartWalletMessage({ hash: `hash`})) )\",\"params\":{\"hash\":\"The original hash.\"},\"returns\":{\"_0\":\"The corresponding replay-safe hash.\"}},\"upgradeToAndCall(address,bytes)\":{\"details\":\"Upgrades the proxy's implementation to `newImplementation`. Emits a {Upgraded} event. Note: Passing in empty `data` skips the delegatecall to `newImplementation`.\"},\"validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\":{\"details\":\"Signature failure should be reported by returning 1 (see: `_validateSignature()`). This allows making a \\\"simulation call\\\" without a valid signature. Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.Reverts if the `UserOperation` key is invalid.Reverts if the signature verification fails (except for the case mentionned earlier).\",\"params\":{\"missingAccountFunds\":\"The missing account funds that must be deposited on the Entrypoint.\",\"userOp\":\"The `UserOperation` to validate.\",\"userOpHash\":\"The `UserOperation` hash (including the chain ID).\"},\"returns\":{\"validationData\":\"The encoded `ValidationData` structure.\"}}},\"stateVariables\":{\"REPLAYABLE_NONCE_KEY\":{\"details\":\"Helps enforce sequential sequencing of replayable transactions.\"}},\"title\":\"Coinbase Smart Wallet\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyOwner(bytes)\":[{\"notice\":\"Thrown when trying to add an already registered owner.\"}],\"Initialized()\":[{\"notice\":\"Thrown when trying to re-initialize an account.\"}],\"InvalidEthereumAddressOwner(bytes)\":[{\"notice\":\"Thrown when trying to intialize the contracts owners if a provided owner is 32 bytes long but does not fit in an `address` type (`uint160`).\"}],\"InvalidNonceKey(uint256)\":[{\"notice\":\"Thrown during a `UserOperation` validation when its key is invalid.\"}],\"InvalidOwnerBytesLength(bytes)\":[{\"notice\":\"Thrown when trying to intialize the contracts owners if a provided owner is neither 64 bytes long (for passkey) nor a valid address.\"}],\"NoOwnerAtIndex(uint256)\":[{\"notice\":\"Thrown when trying to remove an owner from an index that is empty.\"}],\"SelectorNotAllowed(bytes4)\":[{\"notice\":\"Thrown when executing a `UserOperation` that requires the chain ID to be validated but this validation has been omitted.\"}],\"Unauthorized()\":[{\"notice\":\"Thrown when the sender is not an owner and is trying to call a privileged function.\"}]},\"events\":{\"AddOwner(uint256,bytes)\":{\"notice\":\"Emitted when a new owner is registered.\"},\"RemoveOwner(uint256,bytes)\":{\"notice\":\"Emitted when an owner is removed.\"}},\"kind\":\"user\",\"methods\":{\"REPLAYABLE_NONCE_KEY()\":{\"notice\":\"Reserved nonce key (upper 192 bits of `UserOperation.nonce`) for cross-chain replayable transactions.\"},\"addOwnerAddress(address)\":{\"notice\":\"Convenience function to add a new owner address.\"},\"addOwnerPublicKey(bytes32,bytes32)\":{\"notice\":\"Convenience function to add a new owner passkey.\"},\"domainSeparator()\":{\"notice\":\"Returns the `domainSeparator` used to create EIP-712 compliant hashes.\"},\"eip712Domain()\":{\"notice\":\"Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes.\"},\"entryPoint()\":{\"notice\":\"Returns the address of the EntryPoint v0.6.\"},\"execute(address,uint256,bytes)\":{\"notice\":\"Execute the given call from this account.\"},\"executeBatch((address,uint256,bytes)[])\":{\"notice\":\"Execute the given list of calls from this account.\"},\"executeWithoutChainIdValidation(bytes)\":{\"notice\":\"Execute the given call from this account to this account (i.e., self call).\"},\"getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))\":{\"notice\":\"Computes the hash of the `UserOperation` in the same way as EntryPoint v0.6, but leaves out the chain ID.\"},\"implementation()\":{\"notice\":\"Returns the implementation of the ERC1967 proxy.\"},\"initialize(bytes[])\":{\"notice\":\"Initializes the account with the the given owners.\"},\"isOwnerAddress(address)\":{\"notice\":\"Checks if the given `account` address is registered as owner.\"},\"isOwnerBytes(bytes)\":{\"notice\":\"Checks if the given `account` raw bytes is registered as owner.\"},\"isOwnerPublicKey(bytes32,bytes32)\":{\"notice\":\"Checks if the given `account` public key is registered as owner.\"},\"isValidSignature(bytes32,bytes)\":{\"notice\":\"Validates the `signature` against the given `hash`.\"},\"nextOwnerIndex()\":{\"notice\":\"Returns the next index that will be used to add a new owner.\"},\"ownerAtIndex(uint256)\":{\"notice\":\"Returns the owner bytes at the given `index`.\"},\"removeOwnerAtIndex(uint256)\":{\"notice\":\"Removes an owner from the given `index`.\"},\"replaySafeHash(bytes32)\":{\"notice\":\"Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`.\"},\"validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)\":{\"notice\":\"Custom implemenentation of the ERC-4337 `validateUserOp` method. The EntryPoint will make the call to the recipient only if this validation call returns successfully. See `IAccount.validateUserOp()`.\"}},\"notice\":\"ERC4337-compatible smart contract wallet, based on Solady ERC4337 account implementation with inspiration from Alchemy's LightAccount and Daimo's DaimoAccount.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/CoinbaseSmartWallet.sol\":\"CoinbaseSmartWallet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/p256-verifier/lib/openzeppelin-contracts/contracts/\",\":FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/p256-verifier/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/p256-verifier/lib/openzeppelin-contracts/\",\":p256-verifier/=lib/p256-verifier/\",\":solady/=lib/solady/src/\",\":webauthn-sol/=lib/webauthn-sol/src/\"]},\"sources\":{\"lib/FreshCryptoLib/solidity/src/FCL_ecdsa.sol\":{\"keccak256\":\"0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d\",\"dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe\"]},\"lib/FreshCryptoLib/solidity/src/FCL_elliptic.sol\":{\"keccak256\":\"0x097f137d52dc9bd97d6fee7426b2d6d809ad3684767df288d58ffd76f7924e5b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30ffae5b57f2e0fcabcc1642eb7c60e1b4369151d58a78034bb372187fdffa8e\",\"dweb:/ipfs/Qma8RXPxaV52ZMuR5HaoFWqMGSAo7g2u3qG6poguDbFsL4\"]},\"lib/account-abstraction/contracts/core/Helpers.sol\":{\"keccak256\":\"0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746\",\"dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU\"]},\"lib/account-abstraction/contracts/interfaces/UserOperation.sol\":{\"keccak256\":\"0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c\",\"dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN\"]},\"lib/solady/src/accounts/Receiver.sol\":{\"keccak256\":\"0x9bf48dca73f428c20a0878a5a97d2d66626f835b077c012fd5b1ba6389feb2d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15cb4c81e6c5b2f609e5c6ba13d3241b5c017f9997cab5cebc0572c2dd7f34da\",\"dweb:/ipfs/QmQr7sWaqW27XhyCVGx4wED1rMmFKGhSHPjSGVLz45dbeD\"]},\"lib/solady/src/utils/Base64.sol\":{\"keccak256\":\"0x07dcf983a86bc961e4cc0b57a2cfc3e46b20a50fed9b2092c7497e5fe3715a93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65c6c0a8a29cfc5b757abe84635c83e62a177a48c2ad0be24de6b0fba1a60ea2\",\"dweb:/ipfs/QmYuYwxHiBoUt6vaLTLbs2bZamRzqrTfA4BsNZ1TApTfrm\"]},\"lib/solady/src/utils/LibString.sol\":{\"keccak256\":\"0x4fc555fe1ceb29162b143ce1564ac936099071c853065efc289f6c30c712f125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f9d3fdb7c03ed63323ae27e0176e080f27ca453f91bacb73f8d59b09da94cf7\",\"dweb:/ipfs/Qmcix9BzxupvYYLX3t8wf4Wsf1yp1b2q65CJb5agaFPtQ9\"]},\"lib/solady/src/utils/SignatureCheckerLib.sol\":{\"keccak256\":\"0x7a7acc59723ed291f24d9a2ed019109c8be69f32701f35f8a61dc7fff6652379\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7bab15a03dfca0567d7472933ee4e776fc21f9dfb6c4dbc06934fa75eceeff5e\",\"dweb:/ipfs/QmPUuKsRwpZXz15DpsoJMMPN9DtZiRvMfwjqJScxkppNsP\"]},\"lib/solady/src/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x0f4da34fe99caf063e6d3a09d0a4ce783fdcd955b475d46ba00be48f7fda348f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f8e8e92e7b781a8b0d3fdb720915964f46354395a806e87aa7d0a355a024a83\",\"dweb:/ipfs/QmdDmVgUstEYpVQn97jDdaACoqoqiEvcXjxtEhC8b6vmFC\"]},\"lib/webauthn-sol/src/WebAuthn.sol\":{\"keccak256\":\"0x2441d1c9cd3ed38f53ad8920db4ccf1dfc4e081f91138432fd1a91f9a94d46c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6613c0ab26c03824b4db51d5d00a7fd665599ec1c4a20cc559c8fa19e885294\",\"dweb:/ipfs/QmaWPGM1ogH4nrxFYReaBoB7kA7AWy176kmLXFAZVEDTQp\"]},\"src/CoinbaseSmartWallet.sol\":{\"keccak256\":\"0xf19cd33c8dca8017513a391d007e9a16d3218b1e456c8aad5f8ca6417d1e53eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09de4c78680e6f8818e6dba4eb8cc6cbfcb5893dfeb2a2f3c76b31bd07c382a\",\"dweb:/ipfs/QmWNGeNEpgSnfJLp9ZXYETctQzAHiSa2iX9pEpUdPNXTND\"]},\"src/ERC1271.sol\":{\"keccak256\":\"0x670872019ca67ef9156017aaf0ec80c6be75258f3bcd6a21df270c45f8af3871\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fad973b58b631f72cf53f54caf736f8100942d51c632f1c5c486d5b7228d4593\",\"dweb:/ipfs/QmaxTVxCvEwe1cBoxw3TNtssBaFejnjcACdymZrYhgEeSj\"]},\"src/MultiOwnable.sol\":{\"keccak256\":\"0x9c0a57f9fd802e3ff10383257b10bea2637a01bda9986fc18a06246155fdbe6e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0efe6691756a2bb0357caa1bdbd0dcc08407cd30ded5efee3fdffa4f99885c8a\",\"dweb:/ipfs/QmVz9YQaUsH4NLv47JDcVQCmUWstrgzwTTEGv7cNQTjXyg\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.23+commit.f704f362" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "type": "error", + "name": "AlreadyOwner" + }, + { + "inputs": [], + "type": "error", + "name": "Initialized" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "type": "error", + "name": "InvalidEthereumAddressOwner" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "key", + "type": "uint256" + } + ], + "type": "error", + "name": "InvalidNonceKey" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "owner", + "type": "bytes" + } + ], + "type": "error", + "name": "InvalidOwnerBytesLength" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "type": "error", + "name": "NoOwnerAtIndex" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + } + ], + "type": "error", + "name": "SelectorNotAllowed" + }, + { + "inputs": [], + "type": "error", + "name": "Unauthorized" + }, + { + "inputs": [], + "type": "error", + "name": "UnauthorizedCallContext" + }, + { + "inputs": [], + "type": "error", + "name": "UpgradeFailed" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256", + "indexed": true + }, + { + "internalType": "bytes", + "name": "owner", + "type": "bytes", + "indexed": false + } + ], + "type": "event", + "name": "AddOwner", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256", + "indexed": true + }, + { + "internalType": "bytes", + "name": "owner", + "type": "bytes", + "indexed": false + } + ], + "type": "event", + "name": "RemoveOwner", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address", + "indexed": true + } + ], + "type": "event", + "name": "Upgraded", + "anonymous": false + }, + { + "inputs": [], + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "REPLAYABLE_NONCE_KEY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "addOwnerAddress" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "addOwnerPublicKey" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "functionSelector", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "canSkipChainIdValidation", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "entryPoint", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "execute" + }, + { + "inputs": [ + { + "internalType": "struct CoinbaseSmartWallet.Call[]", + "name": "calls", + "type": "tuple[]", + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + } + ], + "stateMutability": "payable", + "type": "function", + "name": "executeBatch" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "executeWithoutChainIdValidation" + }, + { + "inputs": [ + { + "internalType": "struct UserOperation", + "name": "userOp", + "type": "tuple", + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "callGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "verificationGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFeePerGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPriorityFeePerGas", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "getUserOpHashWithoutChainId", + "outputs": [ + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "owners", + "type": "bytes[]" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "initialize" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isOwnerAddress", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "account", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isOwnerBytes", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "x", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "y", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isOwnerPublicKey", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "result", + "type": "bytes4" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "nextOwnerIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function", + "name": "ownerAtIndex", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "removeOwnerAtIndex" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function", + "name": "replaySafeHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "upgradeToAndCall" + }, + { + "inputs": [ + { + "internalType": "struct UserOperation", + "name": "userOp", + "type": "tuple", + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "callGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "verificationGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFeePerGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPriorityFeePerGas", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ] + }, + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "missingAccountFunds", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function", + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "payable", + "type": "receive" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "addOwnerAddress(address)": { + "params": { + "owner": "The owner address." + } + }, + "addOwnerPublicKey(bytes32,bytes32)": { + "params": { + "x": "The owner public key x coordinate.", + "y": "The owner public key y coordinate." + } + }, + "canSkipChainIdValidation(bytes4)": { + "returns": { + "_0": "`true` is the function selector is whitelisted to skip the chain ID validation, else `false`." + } + }, + "domainSeparator()": { + "details": "Implements domainSeparator = hashStruct(eip712Domain). See https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator.", + "returns": { + "_0": "The 32 bytes domain separator result." + } + }, + "eip712Domain()": { + "details": "Follows ERC-5267 (see https://eips.ethereum.org/EIPS/eip-5267).", + "returns": { + "chainId": "The value of the `EIP712Domain.chainId` field.", + "extensions": "The list of EIP numbers, that extends EIP-712 with new domain fields.", + "fields": "The bitmap of used fields.", + "name": "The value of the `EIP712Domain.name` field.", + "salt": "The value of the `EIP712Domain.salt` field.", + "verifyingContract": "The value of the `EIP712Domain.verifyingContract` field.", + "version": "The value of the `EIP712Domain.version` field." + } + }, + "entryPoint()": { + "returns": { + "_0": "The address of the EntryPoint v0.6" + } + }, + "execute(address,uint256,bytes)": { + "details": "Can only be called by the Entrypoint or an owner of this account (including itself).", + "params": { + "data": "The raw call data.", + "target": "The target call address.", + "value": "The call value to user." + } + }, + "executeBatch((address,uint256,bytes)[])": { + "details": "Can only be called by the Entrypoint or an owner of this account (including itself).", + "params": { + "calls": "The list of `Call`s to execute." + } + }, + "executeWithoutChainIdValidation(bytes)": { + "details": "Can only be called by the Entrypoint.Reverts if the given call is not authorized to skip the chain ID validtion.`validateUserOp()` will recompute the `userOpHash` without the chain ID before validating it if the `UserOperation` aims at executing this function. This allows certain operations to be replayed for all accounts sharing the same address across chains. E.g. This may be useful for syncing owner changes.", + "params": { + "data": "The `UserOperation` raw call data of the execute." + } + }, + "getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": { + "details": "This allows accounts to sign a hash that can be used on many chains.", + "params": { + "userOp": "The `UserOperation` to compute the hash for." + }, + "returns": { + "userOpHash": "The `UserOperation` hash, not including the chain ID." + } + }, + "implementation()": { + "returns": { + "addr": "The address of implementation contract." + } + }, + "initialize(bytes[])": { + "details": "Reverts if the account has already been initialized.", + "params": { + "owners": "The initial array of owners to initialize this account with." + } + }, + "isOwnerAddress(address)": { + "params": { + "account": "The account address to check." + }, + "returns": { + "_0": "`true` if the account is an owner, else `false`." + } + }, + "isOwnerBytes(bytes)": { + "params": { + "account": "The account to check identified by its address or passkey." + }, + "returns": { + "_0": "`true` if the account is an owner, else `false`." + } + }, + "isOwnerPublicKey(bytes32,bytes32)": { + "params": { + "x": "The public key x coordinate.", + "y": "The public key y coordinate." + }, + "returns": { + "_0": "`true` if the account is an owner, else `false`." + } + }, + "isValidSignature(bytes32,bytes)": { + "details": "This implementation follows ERC-1271. See https://eips.ethereum.org/EIPS/eip-1271.IMPORTANT: Signature verification is performed on the hash produced AFTER applying the anti cross-account-replay layer on the given `hash` (i.e., verification is run on the replay-safe hash version).", + "params": { + "hash": "The original hash.", + "signature": "The signature of the replay-safe hash to validate." + }, + "returns": { + "result": "`0x1626ba7e` if validation succeeded, else `0xffffffff`." + } + }, + "nextOwnerIndex()": { + "returns": { + "_0": "The next index that will be used to add a new owner." + } + }, + "ownerAtIndex(uint256)": { + "params": { + "index": "The index to lookup." + }, + "returns": { + "_0": "The owner bytes (empty if no owner is registered at this `index`)." + } + }, + "proxiableUUID()": { + "details": "Returns the storage slot used by the implementation, as specified in [ERC1822](https://eips.ethereum.org/EIPS/eip-1822). Note: The `notDelegated` modifier prevents accidental upgrades to an implementation that is a proxy contract." + }, + "removeOwnerAtIndex(uint256)": { + "details": "Reverts if the owner is not registered at `index`.", + "params": { + "index": "The index to remove from." + } + }, + "replaySafeHash(bytes32)": { + "details": "The returned EIP-712 compliant replay-safe hash is the result of: keccak256( \\x19\\x01 || this.domainSeparator || hashStruct(CoinbaseSmartWalletMessage({ hash: `hash`})) )", + "params": { + "hash": "The original hash." + }, + "returns": { + "_0": "The corresponding replay-safe hash." + } + }, + "upgradeToAndCall(address,bytes)": { + "details": "Upgrades the proxy's implementation to `newImplementation`. Emits a {Upgraded} event. Note: Passing in empty `data` skips the delegatecall to `newImplementation`." + }, + "validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": { + "details": "Signature failure should be reported by returning 1 (see: `_validateSignature()`). This allows making a \"simulation call\" without a valid signature. Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.Reverts if the `UserOperation` key is invalid.Reverts if the signature verification fails (except for the case mentionned earlier).", + "params": { + "missingAccountFunds": "The missing account funds that must be deposited on the Entrypoint.", + "userOp": "The `UserOperation` to validate.", + "userOpHash": "The `UserOperation` hash (including the chain ID)." + }, + "returns": { + "validationData": "The encoded `ValidationData` structure." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "REPLAYABLE_NONCE_KEY()": { + "notice": "Reserved nonce key (upper 192 bits of `UserOperation.nonce`) for cross-chain replayable transactions." + }, + "addOwnerAddress(address)": { + "notice": "Convenience function to add a new owner address." + }, + "addOwnerPublicKey(bytes32,bytes32)": { + "notice": "Convenience function to add a new owner passkey." + }, + "domainSeparator()": { + "notice": "Returns the `domainSeparator` used to create EIP-712 compliant hashes." + }, + "eip712Domain()": { + "notice": "Returns information about the `EIP712Domain` used to create EIP-712 compliant hashes." + }, + "entryPoint()": { + "notice": "Returns the address of the EntryPoint v0.6." + }, + "execute(address,uint256,bytes)": { + "notice": "Execute the given call from this account." + }, + "executeBatch((address,uint256,bytes)[])": { + "notice": "Execute the given list of calls from this account." + }, + "executeWithoutChainIdValidation(bytes)": { + "notice": "Execute the given call from this account to this account (i.e., self call)." + }, + "getUserOpHashWithoutChainId((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes))": { + "notice": "Computes the hash of the `UserOperation` in the same way as EntryPoint v0.6, but leaves out the chain ID." + }, + "implementation()": { + "notice": "Returns the implementation of the ERC1967 proxy." + }, + "initialize(bytes[])": { + "notice": "Initializes the account with the the given owners." + }, + "isOwnerAddress(address)": { + "notice": "Checks if the given `account` address is registered as owner." + }, + "isOwnerBytes(bytes)": { + "notice": "Checks if the given `account` raw bytes is registered as owner." + }, + "isOwnerPublicKey(bytes32,bytes32)": { + "notice": "Checks if the given `account` public key is registered as owner." + }, + "isValidSignature(bytes32,bytes)": { + "notice": "Validates the `signature` against the given `hash`." + }, + "nextOwnerIndex()": { + "notice": "Returns the next index that will be used to add a new owner." + }, + "ownerAtIndex(uint256)": { + "notice": "Returns the owner bytes at the given `index`." + }, + "removeOwnerAtIndex(uint256)": { + "notice": "Removes an owner from the given `index`." + }, + "replaySafeHash(bytes32)": { + "notice": "Wrapper around `_eip712Hash()` to produce a replay-safe hash fron the given `hash`." + }, + "validateUserOp((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes),bytes32,uint256)": { + "notice": "Custom implemenentation of the ERC-4337 `validateUserOp` method. The EntryPoint will make the call to the recipient only if this validation call returns successfully. See `IAccount.validateUserOp()`." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@openzeppelin/contracts/=lib/p256-verifier/lib/openzeppelin-contracts/contracts/", + "FreshCryptoLib/=lib/FreshCryptoLib/solidity/src/", + "account-abstraction/=lib/account-abstraction/contracts/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/p256-verifier/lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "openzeppelin-contracts/=lib/p256-verifier/lib/openzeppelin-contracts/", + "p256-verifier/=lib/p256-verifier/", + "solady/=lib/solady/src/", + "webauthn-sol/=lib/webauthn-sol/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/CoinbaseSmartWallet.sol": "CoinbaseSmartWallet" + }, + "evmVersion": "paris", + "libraries": {} + }, + "sources": { + "lib/FreshCryptoLib/solidity/src/FCL_ecdsa.sol": { + "keccak256": "0x679d2e9a655cd7e156a0cfc24de0aca88d4e0b34a8e0dfe6a599f23af092f5a2", + "urls": [ + "bzz-raw://db31eb84c6f854f076d2501e3d8b5a606fb4924168bdfc6fc3de84e67ed8a80d", + "dweb:/ipfs/QmWGAmc7B4aT6Ki52uF9QmPQKWipaptit7r3JknBHjUGfe" + ], + "license": "MIT" + }, + "lib/FreshCryptoLib/solidity/src/FCL_elliptic.sol": { + "keccak256": "0x097f137d52dc9bd97d6fee7426b2d6d809ad3684767df288d58ffd76f7924e5b", + "urls": [ + "bzz-raw://30ffae5b57f2e0fcabcc1642eb7c60e1b4369151d58a78034bb372187fdffa8e", + "dweb:/ipfs/Qma8RXPxaV52ZMuR5HaoFWqMGSAo7g2u3qG6poguDbFsL4" + ], + "license": "MIT" + }, + "lib/account-abstraction/contracts/core/Helpers.sol": { + "keccak256": "0x591c87519f7155d1909210276b77925ab2722a99b7b5d5649aecc36ebbdb045a", + "urls": [ + "bzz-raw://69643e83f68e6a13d5075c7565bfce326673b0bd98c432033c4603ea84835746", + "dweb:/ipfs/QmSwSzjYyV7qudi5vvsmzHMG2Z4YJZxX51RRXXVCLaNcEU" + ], + "license": "GPL-3.0" + }, + "lib/account-abstraction/contracts/interfaces/UserOperation.sol": { + "keccak256": "0x61374003361059087fdcf17967a7bba052badeaf5c7f0ae689166f8aafd3a45c", + "urls": [ + "bzz-raw://6ff83c59432e733bf6304dda27cd4b0f34401917dd535e2669cc842d2d26568c", + "dweb:/ipfs/QmPJbHU5TAjHqUTZzAcicEeG2nknmwCN43L4EW9LHbknTN" + ], + "license": "GPL-3.0" + }, + "lib/solady/src/accounts/Receiver.sol": { + "keccak256": "0x9bf48dca73f428c20a0878a5a97d2d66626f835b077c012fd5b1ba6389feb2d0", + "urls": [ + "bzz-raw://15cb4c81e6c5b2f609e5c6ba13d3241b5c017f9997cab5cebc0572c2dd7f34da", + "dweb:/ipfs/QmQr7sWaqW27XhyCVGx4wED1rMmFKGhSHPjSGVLz45dbeD" + ], + "license": "MIT" + }, + "lib/solady/src/utils/Base64.sol": { + "keccak256": "0x07dcf983a86bc961e4cc0b57a2cfc3e46b20a50fed9b2092c7497e5fe3715a93", + "urls": [ + "bzz-raw://65c6c0a8a29cfc5b757abe84635c83e62a177a48c2ad0be24de6b0fba1a60ea2", + "dweb:/ipfs/QmYuYwxHiBoUt6vaLTLbs2bZamRzqrTfA4BsNZ1TApTfrm" + ], + "license": "MIT" + }, + "lib/solady/src/utils/LibString.sol": { + "keccak256": "0x4fc555fe1ceb29162b143ce1564ac936099071c853065efc289f6c30c712f125", + "urls": [ + "bzz-raw://8f9d3fdb7c03ed63323ae27e0176e080f27ca453f91bacb73f8d59b09da94cf7", + "dweb:/ipfs/Qmcix9BzxupvYYLX3t8wf4Wsf1yp1b2q65CJb5agaFPtQ9" + ], + "license": "MIT" + }, + "lib/solady/src/utils/SignatureCheckerLib.sol": { + "keccak256": "0x7a7acc59723ed291f24d9a2ed019109c8be69f32701f35f8a61dc7fff6652379", + "urls": [ + "bzz-raw://7bab15a03dfca0567d7472933ee4e776fc21f9dfb6c4dbc06934fa75eceeff5e", + "dweb:/ipfs/QmPUuKsRwpZXz15DpsoJMMPN9DtZiRvMfwjqJScxkppNsP" + ], + "license": "MIT" + }, + "lib/solady/src/utils/UUPSUpgradeable.sol": { + "keccak256": "0x0f4da34fe99caf063e6d3a09d0a4ce783fdcd955b475d46ba00be48f7fda348f", + "urls": [ + "bzz-raw://5f8e8e92e7b781a8b0d3fdb720915964f46354395a806e87aa7d0a355a024a83", + "dweb:/ipfs/QmdDmVgUstEYpVQn97jDdaACoqoqiEvcXjxtEhC8b6vmFC" + ], + "license": "MIT" + }, + "lib/webauthn-sol/src/WebAuthn.sol": { + "keccak256": "0x2441d1c9cd3ed38f53ad8920db4ccf1dfc4e081f91138432fd1a91f9a94d46c7", + "urls": [ + "bzz-raw://f6613c0ab26c03824b4db51d5d00a7fd665599ec1c4a20cc559c8fa19e885294", + "dweb:/ipfs/QmaWPGM1ogH4nrxFYReaBoB7kA7AWy176kmLXFAZVEDTQp" + ], + "license": "MIT" + }, + "src/CoinbaseSmartWallet.sol": { + "keccak256": "0xf19cd33c8dca8017513a391d007e9a16d3218b1e456c8aad5f8ca6417d1e53eb", + "urls": [ + "bzz-raw://c09de4c78680e6f8818e6dba4eb8cc6cbfcb5893dfeb2a2f3c76b31bd07c382a", + "dweb:/ipfs/QmWNGeNEpgSnfJLp9ZXYETctQzAHiSa2iX9pEpUdPNXTND" + ], + "license": "MIT" + }, + "src/ERC1271.sol": { + "keccak256": "0x670872019ca67ef9156017aaf0ec80c6be75258f3bcd6a21df270c45f8af3871", + "urls": [ + "bzz-raw://fad973b58b631f72cf53f54caf736f8100942d51c632f1c5c486d5b7228d4593", + "dweb:/ipfs/QmaxTVxCvEwe1cBoxw3TNtssBaFejnjcACdymZrYhgEeSj" + ], + "license": "MIT" + }, + "src/MultiOwnable.sol": { + "keccak256": "0x9c0a57f9fd802e3ff10383257b10bea2637a01bda9986fc18a06246155fdbe6e", + "urls": [ + "bzz-raw://0efe6691756a2bb0357caa1bdbd0dcc08407cd30ded5efee3fdffa4f99885c8a", + "dweb:/ipfs/QmVz9YQaUsH4NLv47JDcVQCmUWstrgzwTTEGv7cNQTjXyg" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/CoinbaseSmartWallet.sol", + "id": 50483, + "exportedSymbols": { + "CoinbaseSmartWallet": [ + 50482 + ], + "ERC1271": [ + 50822 + ], + "MultiOwnable": [ + 51215 + ], + "Receiver": [ + 47844 + ], + "SignatureCheckerLib": [ + 49393 + ], + "UUPSUpgradeable": [ + 49482 + ], + "UserOperation": [ + 2402 + ], + "UserOperationLib": [ + 2572 + ], + "WebAuthn": [ + 49808 + ] + }, + "nodeType": "SourceUnit", + "src": "32:14187:40", + "nodes": [ + { + "id": 49909, + "nodeType": "PragmaDirective", + "src": "32:23:40", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".23" + ] + }, + { + "id": 49911, + "nodeType": "ImportDirective", + "src": "57:54:40", + "nodes": [], + "absolutePath": "lib/solady/src/accounts/Receiver.sol", + "file": "solady/accounts/Receiver.sol", + "nameLocation": "-1:-1:-1", + "scope": 50483, + "sourceUnit": 47845, + "symbolAliases": [ + { + "foreign": { + "id": 49910, + "name": "Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47844, + "src": "65:8:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 49913, + "nodeType": "ImportDirective", + "src": "112:65:40", + "nodes": [], + "absolutePath": "lib/solady/src/utils/UUPSUpgradeable.sol", + "file": "solady/utils/UUPSUpgradeable.sol", + "nameLocation": "-1:-1:-1", + "scope": 50483, + "sourceUnit": 49483, + "symbolAliases": [ + { + "foreign": { + "id": 49912, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49482, + "src": "120:15:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 49915, + "nodeType": "ImportDirective", + "src": "178:73:40", + "nodes": [], + "absolutePath": "lib/solady/src/utils/SignatureCheckerLib.sol", + "file": "solady/utils/SignatureCheckerLib.sol", + "nameLocation": "-1:-1:-1", + "scope": 50483, + "sourceUnit": 49394, + "symbolAliases": [ + { + "foreign": { + "id": 49914, + "name": "SignatureCheckerLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49393, + "src": "186:19:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 49918, + "nodeType": "ImportDirective", + "src": "252:97:40", + "nodes": [], + "absolutePath": "lib/account-abstraction/contracts/interfaces/UserOperation.sol", + "file": "account-abstraction/interfaces/UserOperation.sol", + "nameLocation": "-1:-1:-1", + "scope": 50483, + "sourceUnit": 2573, + "symbolAliases": [ + { + "foreign": { + "id": 49916, + "name": "UserOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2402, + "src": "260:13:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 49917, + "name": "UserOperationLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2572, + "src": "275:16:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 49920, + "nodeType": "ImportDirective", + "src": "350:51:40", + "nodes": [], + "absolutePath": "lib/webauthn-sol/src/WebAuthn.sol", + "file": "webauthn-sol/WebAuthn.sol", + "nameLocation": "-1:-1:-1", + "scope": 50483, + "sourceUnit": 49809, + "symbolAliases": [ + { + "foreign": { + "id": 49919, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49808, + "src": "358:8:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 49922, + "nodeType": "ImportDirective", + "src": "403:38:40", + "nodes": [], + "absolutePath": "src/ERC1271.sol", + "file": "./ERC1271.sol", + "nameLocation": "-1:-1:-1", + "scope": 50483, + "sourceUnit": 50823, + "symbolAliases": [ + { + "foreign": { + "id": 49921, + "name": "ERC1271", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50822, + "src": "411:7:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 49924, + "nodeType": "ImportDirective", + "src": "442:48:40", + "nodes": [], + "absolutePath": "src/MultiOwnable.sol", + "file": "./MultiOwnable.sol", + "nameLocation": "-1:-1:-1", + "scope": 50483, + "sourceUnit": 51216, + "symbolAliases": [ + { + "foreign": { + "id": 49923, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51215, + "src": "450:12:40", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 50482, + "nodeType": "ContractDefinition", + "src": "874:13344:40", + "nodes": [ + { + "id": 49941, + "nodeType": "StructDefinition", + "src": "1060:247:40", + "nodes": [], + "canonicalName": "CoinbaseSmartWallet.SignatureWrapper", + "documentation": { + "id": 49934, + "nodeType": "StructuredDocumentation", + "src": "961:94:40", + "text": "@notice Wrapper struct, used during signature validation, tie a signature with its signer." + }, + "members": [ + { + "constant": false, + "id": 49937, + "mutability": "mutable", + "name": "ownerIndex", + "nameLocation": "1179:10:40", + "nodeType": "VariableDeclaration", + "scope": 49941, + "src": "1171:18:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49936, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1171:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 49940, + "mutability": "mutable", + "name": "signatureData", + "nameLocation": "1287:13:40", + "nodeType": "VariableDeclaration", + "scope": 49941, + "src": "1281:19:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 49939, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1281:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "SignatureWrapper", + "nameLocation": "1067:16:40", + "scope": 50482, + "visibility": "public" + }, + { + "id": 49952, + "nodeType": "StructDefinition", + "src": "1403:222:40", + "nodes": [], + "canonicalName": "CoinbaseSmartWallet.Call", + "documentation": { + "id": 49942, + "nodeType": "StructuredDocumentation", + "src": "1313:85:40", + "text": "@notice Wrapper struct, used in `executeBatch`, describing a raw call to execute." + }, + "members": [ + { + "constant": false, + "id": 49945, + "mutability": "mutable", + "name": "target", + "nameLocation": "1478:6:40", + "nodeType": "VariableDeclaration", + "scope": 49952, + "src": "1470:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 49944, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1470:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 49948, + "mutability": "mutable", + "name": "value", + "nameLocation": "1557:5:40", + "nodeType": "VariableDeclaration", + "scope": 49952, + "src": "1549:13:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49947, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1549:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 49951, + "mutability": "mutable", + "name": "data", + "nameLocation": "1614:4:40", + "nodeType": "VariableDeclaration", + "scope": 49952, + "src": "1608:10:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 49950, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1608:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "Call", + "nameLocation": "1410:4:40", + "scope": 50482, + "visibility": "public" + }, + { + "id": 49956, + "nodeType": "VariableDeclaration", + "src": "1850:51:40", + "nodes": [], + "constant": true, + "documentation": { + "id": 49953, + "nodeType": "StructuredDocumentation", + "src": "1631:214:40", + "text": "@notice Reserved nonce key (upper 192 bits of `UserOperation.nonce`) for cross-chain replayable\n transactions.\n @dev Helps enforce sequential sequencing of replayable transactions." + }, + "functionSelector": "88ce4c7c", + "mutability": "constant", + "name": "REPLAYABLE_NONCE_KEY", + "nameLocation": "1874:20:40", + "scope": 50482, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49954, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1850:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "38343533", + "id": 49955, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1897:4:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_8453_by_1", + "typeString": "int_const 8453" + }, + "value": "8453" + }, + "visibility": "public" + }, + { + "id": 49959, + "nodeType": "ErrorDefinition", + "src": "1972:20:40", + "nodes": [], + "documentation": { + "id": 49957, + "nodeType": "StructuredDocumentation", + "src": "1908:59:40", + "text": "@notice Thrown when trying to re-initialize an account." + }, + "errorSelector": "5daa87a0", + "name": "Initialized", + "nameLocation": "1978:11:40", + "parameters": { + "id": 49958, + "nodeType": "ParameterList", + "parameters": [], + "src": "1989:2:40" + } + }, + { + "id": 49964, + "nodeType": "ErrorDefinition", + "src": "2424:42:40", + "nodes": [], + "documentation": { + "id": 49960, + "nodeType": "StructuredDocumentation", + "src": "1998:421:40", + "text": "@notice Thrown when executing a `UserOperation` that requires the chain ID to be validated\n but this validation has been omitted.\n @dev Whitelisting of `UserOperation`s that are allowed to skip the chain ID validation is\n based on their call selectors (see `canSkipChainIdValidation()`).\n @param selector The user operation call selector that raised the error." + }, + "errorSelector": "3b06e146", + "name": "SelectorNotAllowed", + "nameLocation": "2430:18:40", + "parameters": { + "id": 49963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49962, + "mutability": "mutable", + "name": "selector", + "nameLocation": "2456:8:40", + "nodeType": "VariableDeclaration", + "scope": 49964, + "src": "2449:15:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 49961, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2449:6:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "2448:17:40" + } + }, + { + "id": 49969, + "nodeType": "ErrorDefinition", + "src": "2719:35:40", + "nodes": [], + "documentation": { + "id": 49965, + "nodeType": "StructuredDocumentation", + "src": "2472:242:40", + "text": "@notice Thrown during a `UserOperation` validation when its key is invalid.\n @dev The `UserOperation` key validation is based on the `UserOperation` call selector.\n @param key The invalid `UserOperation` key." + }, + "errorSelector": "2ef37813", + "name": "InvalidNonceKey", + "nameLocation": "2725:15:40", + "parameters": { + "id": 49968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49967, + "mutability": "mutable", + "name": "key", + "nameLocation": "2749:3:40", + "nodeType": "VariableDeclaration", + "scope": 49969, + "src": "2741:11:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 49966, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2741:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2740:13:40" + } + }, + { + "id": 49984, + "nodeType": "ModifierDefinition", + "src": "2821:140:40", + "nodes": [], + "body": { + "id": 49983, + "nodeType": "Block", + "src": "2855:106:40", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 49976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 49972, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2869:3:40", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 49973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2873:6:40", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2869:10:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 49974, + "name": "entryPoint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50244, + "src": "2883:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 49975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2883:12:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2869:26:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 49981, + "nodeType": "IfStatement", + "src": "2865:78:40", + "trueBody": { + "id": 49980, + "nodeType": "Block", + "src": "2897:46:40", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 49977, + "name": "Unauthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50847, + "src": "2918:12:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 49978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2918:14:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 49979, + "nodeType": "RevertStatement", + "src": "2911:21:40" + } + ] + } + }, + { + "id": 49982, + "nodeType": "PlaceholderStatement", + "src": "2953:1:40" + } + ] + }, + "documentation": { + "id": 49970, + "nodeType": "StructuredDocumentation", + "src": "2760:56:40", + "text": "@notice Reverts if the caller is not the EntryPoint." + }, + "name": "onlyEntryPoint", + "nameLocation": "2830:14:40", + "parameters": { + "id": 49971, + "nodeType": "ParameterList", + "parameters": [], + "src": "2844:2:40" + }, + "virtual": true, + "visibility": "internal" + }, + { + "id": 49999, + "nodeType": "ModifierDefinition", + "src": "3067:139:40", + "nodes": [], + "body": { + "id": 49998, + "nodeType": "Block", + "src": "3108:98:40", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 49991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 49987, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3122:3:40", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 49988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3126:6:40", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3122:10:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 49989, + "name": "entryPoint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50244, + "src": "3136:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 49990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3136:12:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3122:26:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 49996, + "nodeType": "IfStatement", + "src": "3118:70:40", + "trueBody": { + "id": 49995, + "nodeType": "Block", + "src": "3150:38:40", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 49992, + "name": "_checkOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51205, + "src": "3164:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 49993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3164:13:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 49994, + "nodeType": "ExpressionStatement", + "src": "3164:13:40" + } + ] + } + }, + { + "id": 49997, + "nodeType": "PlaceholderStatement", + "src": "3198:1:40" + } + ] + }, + "documentation": { + "id": 49985, + "nodeType": "StructuredDocumentation", + "src": "2967:95:40", + "text": "@notice Reverts if the caller is neither the EntryPoint, the owner, nor the account itself." + }, + "name": "onlyEntryPointOrOwner", + "nameLocation": "3076:21:40", + "parameters": { + "id": 49986, + "nodeType": "ParameterList", + "parameters": [], + "src": "3097:2:40" + }, + "virtual": true, + "visibility": "internal" + }, + { + "id": 50007, + "nodeType": "ModifierDefinition", + "src": "3810:360:40", + "nodes": [], + "body": { + "id": 50006, + "nodeType": "Block", + "src": "3867:303:40", + "nodes": [], + "statements": [ + { + "id": 50004, + "nodeType": "PlaceholderStatement", + "src": "3877:1:40" + }, + { + "AST": { + "nativeSrc": "3914:250:40", + "nodeType": "YulBlock", + "src": "3914:250:40", + "statements": [ + { + "body": { + "nativeSrc": "3951:203:40", + "nodeType": "YulBlock", + "src": "3951:203:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "4066:3:40", + "nodeType": "YulIdentifier", + "src": "4066:3:40" + }, + "nativeSrc": "4066:5:40", + "nodeType": "YulFunctionCall", + "src": "4066:5:40" + }, + { + "arguments": [], + "functionName": { + "name": "caller", + "nativeSrc": "4073:6:40", + "nodeType": "YulIdentifier", + "src": "4073:6:40" + }, + "nativeSrc": "4073:8:40", + "nodeType": "YulFunctionCall", + "src": "4073:8:40" + }, + { + "name": "missingAccountFunds", + "nativeSrc": "4083:19:40", + "nodeType": "YulIdentifier", + "src": "4083:19:40" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "4104:8:40", + "nodeType": "YulIdentifier", + "src": "4104:8:40" + }, + "nativeSrc": "4104:10:40", + "nodeType": "YulFunctionCall", + "src": "4104:10:40" + }, + { + "kind": "number", + "nativeSrc": "4116:4:40", + "nodeType": "YulLiteral", + "src": "4116:4:40", + "type": "", + "value": "0x00" + }, + { + "arguments": [], + "functionName": { + "name": "codesize", + "nativeSrc": "4122:8:40", + "nodeType": "YulIdentifier", + "src": "4122:8:40" + }, + "nativeSrc": "4122:10:40", + "nodeType": "YulFunctionCall", + "src": "4122:10:40" + }, + { + "kind": "number", + "nativeSrc": "4134:4:40", + "nodeType": "YulLiteral", + "src": "4134:4:40", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "4061:4:40", + "nodeType": "YulIdentifier", + "src": "4061:4:40" + }, + "nativeSrc": "4061:78:40", + "nodeType": "YulFunctionCall", + "src": "4061:78:40" + } + ], + "functionName": { + "name": "pop", + "nativeSrc": "4057:3:40", + "nodeType": "YulIdentifier", + "src": "4057:3:40" + }, + "nativeSrc": "4057:83:40", + "nodeType": "YulFunctionCall", + "src": "4057:83:40" + }, + "nativeSrc": "4057:83:40", + "nodeType": "YulExpressionStatement", + "src": "4057:83:40" + } + ] + }, + "condition": { + "name": "missingAccountFunds", + "nativeSrc": "3931:19:40", + "nodeType": "YulIdentifier", + "src": "3931:19:40" + }, + "nativeSrc": "3928:226:40", + "nodeType": "YulIf", + "src": "3928:226:40" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 50002, + "isOffset": false, + "isSlot": false, + "src": "3931:19:40", + "valueSize": 1 + }, + { + "declaration": 50002, + "isOffset": false, + "isSlot": false, + "src": "4083:19:40", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 50005, + "nodeType": "InlineAssembly", + "src": "3889:275:40" + } + ] + }, + "documentation": { + "id": 50000, + "nodeType": "StructuredDocumentation", + "src": "3212:593:40", + "text": "@notice Sends to the EntryPoint (i.e. `msg.sender`) the missing funds for this transaction.\n @dev Subclass MAY override this modifier for better funds management (e.g. send to the\n EntryPoint more than the minimum required, so that in future transactions it will not\n be required to send again).\n @param missingAccountFunds The minimum value this modifier should send the EntryPoint which\n MAY be zero, in case there is enough deposit, or the userOp has a\n paymaster." + }, + "name": "payPrefund", + "nameLocation": "3819:10:40", + "parameters": { + "id": 50003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50002, + "mutability": "mutable", + "name": "missingAccountFunds", + "nameLocation": "3838:19:40", + "nodeType": "VariableDeclaration", + "scope": 50007, + "src": "3830:27:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3830:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3829:29:40" + }, + "virtual": true, + "visibility": "internal" + }, + { + "id": 50038, + "nodeType": "FunctionDefinition", + "src": "4176:257:40", + "nodes": [], + "body": { + "id": 50037, + "nodeType": "Block", + "src": "4190:243:40", + "nodes": [], + "statements": [ + { + "assignments": [ + 50014 + ], + "declarations": [ + { + "constant": false, + "id": 50014, + "mutability": "mutable", + "name": "owners", + "nameLocation": "4324:6:40", + "nodeType": "VariableDeclaration", + "scope": 50037, + "src": "4309:21:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 50012, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4309:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 50013, + "nodeType": "ArrayTypeName", + "src": "4309:7:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 50020, + "initialValue": { + "arguments": [ + { + "hexValue": "31", + "id": 50018, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4345:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 50017, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4333:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 50015, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4337:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 50016, + "nodeType": "ArrayTypeName", + "src": "4337:7:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + } + }, + "id": 50019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4333:14:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4309:38:40" + }, + { + "expression": { + "id": 50031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 50021, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50014, + "src": "4357:6:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 50023, + "indexExpression": { + "hexValue": "30", + "id": 50022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4364:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4357:9:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 50028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4388:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 50027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4380:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 50026, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4380:7:40", + "typeDescriptions": {} + } + }, + "id": 50029, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4380:10:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 50024, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4369:3:40", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 50025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4373:6:40", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4369:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 50030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4369:22:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "4357:34:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 50032, + "nodeType": "ExpressionStatement", + "src": "4357:34:40" + }, + { + "expression": { + "arguments": [ + { + "id": 50034, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50014, + "src": "4419:6:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + ], + "id": 50033, + "name": "_initializeOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51128, + "src": "4401:17:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory)" + } + }, + "id": 50035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4401:25:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50036, + "nodeType": "ExpressionStatement", + "src": "4401:25:40" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 50008, + "nodeType": "ParameterList", + "parameters": [], + "src": "4187:2:40" + }, + "returnParameters": { + "id": 50009, + "nodeType": "ParameterList", + "parameters": [], + "src": "4190:0:40" + }, + "scope": 50482, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 50059, + "nodeType": "FunctionDefinition", + "src": "4671:192:40", + "nodes": [], + "body": { + "id": 50058, + "nodeType": "Block", + "src": "4739:124:40", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 50048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 50045, + "name": "nextOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51047, + "src": "4753:14:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 50046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4753:16:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 50047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4773:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4753:21:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50053, + "nodeType": "IfStatement", + "src": "4749:72:40", + "trueBody": { + "id": 50052, + "nodeType": "Block", + "src": "4776:45:40", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 50049, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49959, + "src": "4797:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 50050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4797:13:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50051, + "nodeType": "RevertStatement", + "src": "4790:20:40" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 50055, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50042, + "src": "4849:6:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes calldata[] calldata" + } + ], + "id": 50054, + "name": "_initializeOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51128, + "src": "4831:17:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes memory[] memory)" + } + }, + "id": 50056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4831:25:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50057, + "nodeType": "ExpressionStatement", + "src": "4831:25:40" + } + ] + }, + "documentation": { + "id": 50039, + "nodeType": "StructuredDocumentation", + "src": "4439:227:40", + "text": "@notice Initializes the account with the the given owners.\n @dev Reverts if the account has already been initialized.\n @param owners The initial array of owners to initialize this account with." + }, + "functionSelector": "6f2de70e", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "4680:10:40", + "parameters": { + "id": 50043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50042, + "mutability": "mutable", + "name": "owners", + "nameLocation": "4708:6:40", + "nodeType": "VariableDeclaration", + "scope": 50059, + "src": "4691:23:40", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 50040, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4691:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 50041, + "nodeType": "ArrayTypeName", + "src": "4691:7:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "4690:25:40" + }, + "returnParameters": { + "id": 50044, + "nodeType": "ParameterList", + "parameters": [], + "src": "4739:0:40" + }, + "scope": 50482, + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "id": 50139, + "nodeType": "FunctionDefinition", + "src": "5921:1184:40", + "nodes": [], + "body": { + "id": 50138, + "nodeType": "Block", + "src": "6180:925:40", + "nodes": [], + "statements": [ + { + "assignments": [ + 50078 + ], + "declarations": [ + { + "constant": false, + "id": 50078, + "mutability": "mutable", + "name": "key", + "nameLocation": "6198:3:40", + "nodeType": "VariableDeclaration", + "scope": 50138, + "src": "6190:11:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50077, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6190:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 50083, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 50082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 50079, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50063, + "src": "6204:6:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$2402_calldata_ptr", + "typeString": "struct UserOperation calldata" + } + }, + "id": 50080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6211:5:40", + "memberName": "nonce", + "nodeType": "MemberAccess", + "referencedDeclaration": 2383, + "src": "6204:12:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "3634", + "id": 50081, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6220:2:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "6204:18:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6190:32:40" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 50099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 50088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 50084, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50063, + "src": "6321:6:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$2402_calldata_ptr", + "typeString": "struct UserOperation calldata" + } + }, + "id": 50085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6328:8:40", + "memberName": "callData", + "nodeType": "MemberAccess", + "referencedDeclaration": 2387, + "src": "6321:15:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 50086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6337:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6321:22:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "hexValue": "34", + "id": 50087, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6347:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "6321:27:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 50098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "baseExpression": { + "expression": { + "id": 50091, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50063, + "src": "6359:6:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$2402_calldata_ptr", + "typeString": "struct UserOperation calldata" + } + }, + "id": 50092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6366:8:40", + "memberName": "callData", + "nodeType": "MemberAccess", + "referencedDeclaration": 2387, + "src": "6359:15:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "hexValue": "34", + "id": 50094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6377:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "id": 50095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "6359:20:40", + "startExpression": { + "hexValue": "30", + "id": 50093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6375:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 50090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6352:6:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 50089, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "6352:6:40", + "typeDescriptions": {} + } + }, + "id": 50096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6352:28:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30786266366261316663", + "id": 50097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6384:10:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_3211502076_by_1", + "typeString": "int_const 3211502076" + }, + "value": "0xbf6ba1fc" + }, + "src": "6352:42:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6321:73:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 50125, + "nodeType": "Block", + "src": "6581:117:40", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 50118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 50116, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50078, + "src": "6599:3:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 50117, + "name": "REPLAYABLE_NONCE_KEY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49956, + "src": "6606:20:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6599:27:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50124, + "nodeType": "IfStatement", + "src": "6595:93:40", + "trueBody": { + "id": 50123, + "nodeType": "Block", + "src": "6628:60:40", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 50120, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50078, + "src": "6669:3:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 50119, + "name": "InvalidNonceKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49969, + "src": "6653:15:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 50121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6653:20:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50122, + "nodeType": "RevertStatement", + "src": "6646:27:40" + } + ] + } + } + ] + }, + "id": 50126, + "nodeType": "IfStatement", + "src": "6317:381:40", + "trueBody": { + "id": 50115, + "nodeType": "Block", + "src": "6396:179:40", + "statements": [ + { + "expression": { + "id": 50104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 50100, + "name": "userOpHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50065, + "src": "6410:10:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 50102, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50063, + "src": "6451:6:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$2402_calldata_ptr", + "typeString": "struct UserOperation calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserOperation_$2402_calldata_ptr", + "typeString": "struct UserOperation calldata" + } + ], + "id": 50101, + "name": "getUserOpHashWithoutChainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50266, + "src": "6423:27:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UserOperation_$2402_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct UserOperation calldata) view returns (bytes32)" + } + }, + "id": 50103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6423:35:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6410:48:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 50105, + "nodeType": "ExpressionStatement", + "src": "6410:48:40" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 50108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 50106, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50078, + "src": "6476:3:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 50107, + "name": "REPLAYABLE_NONCE_KEY", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49956, + "src": "6483:20:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6476:27:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50114, + "nodeType": "IfStatement", + "src": "6472:93:40", + "trueBody": { + "id": 50113, + "nodeType": "Block", + "src": "6505:60:40", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 50110, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50078, + "src": "6546:3:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 50109, + "name": "InvalidNonceKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49969, + "src": "6530:15:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 50111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6530:20:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50112, + "nodeType": "RevertStatement", + "src": "6523:27:40" + } + ] + } + } + ] + } + }, + { + "condition": { + "arguments": [ + { + "id": 50128, + "name": "userOpHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50065, + "src": "6795:10:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 50129, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50063, + "src": "6807:6:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$2402_calldata_ptr", + "typeString": "struct UserOperation calldata" + } + }, + "id": 50130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6814:9:40", + "memberName": "signature", + "nodeType": "MemberAccess", + "referencedDeclaration": 2401, + "src": "6807:16:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 50127, + "name": "_validateSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 50455 + ], + "referencedDeclaration": 50455, + "src": "6776:18:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes calldata) view returns (bool)" + } + }, + "id": 50131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6776:48:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50135, + "nodeType": "IfStatement", + "src": "6772:87:40", + "trueBody": { + "id": 50134, + "nodeType": "Block", + "src": "6826:33:40", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 50132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6847:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 50076, + "id": 50133, + "nodeType": "Return", + "src": "6840:8:40" + } + ] + } + }, + { + "expression": { + "hexValue": "31", + "id": 50136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7097:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 50076, + "id": 50137, + "nodeType": "Return", + "src": "7090:8:40" + } + ] + }, + "documentation": { + "id": 50060, + "nodeType": "StructuredDocumentation", + "src": "4869:1047:40", + "text": "@notice Custom implemenentation of the ERC-4337 `validateUserOp` method. The EntryPoint will\n make the call to the recipient only if this validation call returns successfully.\n See `IAccount.validateUserOp()`.\n @dev Signature failure should be reported by returning 1 (see: `_validateSignature()`). This\n allows making a \"simulation call\" without a valid signature. Other failures (e.g. nonce\n mismatch, or invalid signature format) should still revert to signal failure.\n @dev Reverts if the `UserOperation` key is invalid.\n @dev Reverts if the signature verification fails (except for the case mentionned earlier).\n @param userOp The `UserOperation` to validate.\n @param userOpHash The `UserOperation` hash (including the chain ID).\n @param missingAccountFunds The missing account funds that must be deposited on the Entrypoint.\n @return validationData The encoded `ValidationData` structure." + }, + "functionSelector": "3a871cdd", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 50070, + "kind": "modifierInvocation", + "modifierName": { + "id": 50069, + "name": "onlyEntryPoint", + "nameLocations": [ + "6080:14:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49984, + "src": "6080:14:40" + }, + "nodeType": "ModifierInvocation", + "src": "6080:14:40" + }, + { + "arguments": [ + { + "id": 50072, + "name": "missingAccountFunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50067, + "src": "6114:19:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 50073, + "kind": "modifierInvocation", + "modifierName": { + "id": 50071, + "name": "payPrefund", + "nameLocations": [ + "6103:10:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 50007, + "src": "6103:10:40" + }, + "nodeType": "ModifierInvocation", + "src": "6103:31:40" + } + ], + "name": "validateUserOp", + "nameLocation": "5930:14:40", + "parameters": { + "id": 50068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50063, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "5968:6:40", + "nodeType": "VariableDeclaration", + "scope": 50139, + "src": "5945:29:40", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$2402_calldata_ptr", + "typeString": "struct UserOperation" + }, + "typeName": { + "id": 50062, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 50061, + "name": "UserOperation", + "nameLocations": [ + "5945:13:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2402, + "src": "5945:13:40" + }, + "referencedDeclaration": 2402, + "src": "5945:13:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$2402_storage_ptr", + "typeString": "struct UserOperation" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50065, + "mutability": "mutable", + "name": "userOpHash", + "nameLocation": "5984:10:40", + "nodeType": "VariableDeclaration", + "scope": 50139, + "src": "5976:18:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 50064, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5976:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50067, + "mutability": "mutable", + "name": "missingAccountFunds", + "nameLocation": "6004:19:40", + "nodeType": "VariableDeclaration", + "scope": 50139, + "src": "5996:27:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5996:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5944:80:40" + }, + "returnParameters": { + "id": 50076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50075, + "mutability": "mutable", + "name": "validationData", + "nameLocation": "6160:14:40", + "nodeType": "VariableDeclaration", + "scope": 50139, + "src": "6152:22:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50074, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6152:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6151:24:40" + }, + "scope": 50482, + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "id": 50177, + "nodeType": "FunctionDefinition", + "src": "7785:302:40", + "nodes": [], + "body": { + "id": 50176, + "nodeType": "Block", + "src": "7885:202:40", + "nodes": [], + "statements": [ + { + "assignments": [ + 50148 + ], + "declarations": [ + { + "constant": false, + "id": 50148, + "mutability": "mutable", + "name": "selector", + "nameLocation": "7902:8:40", + "nodeType": "VariableDeclaration", + "scope": 50176, + "src": "7895:15:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 50147, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "7895:6:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "id": 50156, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 50151, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50142, + "src": "7920:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "endExpression": { + "hexValue": "34", + "id": 50153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7927:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "id": 50154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexRangeAccess", + "src": "7920:9:40", + "startExpression": { + "hexValue": "30", + "id": 50152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7925:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr_slice", + "typeString": "bytes calldata slice" + } + ], + "id": 50150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7913:6:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 50149, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "7913:6:40", + "typeDescriptions": {} + } + }, + "id": 50155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7913:17:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7895:35:40" + }, + { + "condition": { + "id": 50160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7944:35:40", + "subExpression": { + "arguments": [ + { + "id": 50158, + "name": "selector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50148, + "src": "7970:8:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 50157, + "name": "canSkipChainIdValidation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50312, + "src": "7945:24:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) pure returns (bool)" + } + }, + "id": 50159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7945:34:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50166, + "nodeType": "IfStatement", + "src": "7940:101:40", + "trueBody": { + "id": 50165, + "nodeType": "Block", + "src": "7981:60:40", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 50162, + "name": "selector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50148, + "src": "8021:8:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 50161, + "name": "SelectorNotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49964, + "src": "8002:18:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes4_$returns$__$", + "typeString": "function (bytes4) pure" + } + }, + "id": 50163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8002:28:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50164, + "nodeType": "RevertStatement", + "src": "7995:35:40" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 50170, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "8065:4:40", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", + "typeString": "contract CoinbaseSmartWallet" + } + ], + "id": 50169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8057:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 50168, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8057:7:40", + "typeDescriptions": {} + } + }, + "id": 50171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8057:13:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 50172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8072:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "id": 50173, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50142, + "src": "8075:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 50167, + "name": "_call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50339, + "src": "8051:5:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 50174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8051:29:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50175, + "nodeType": "ExpressionStatement", + "src": "8051:29:40" + } + ] + }, + "documentation": { + "id": 50140, + "nodeType": "StructuredDocumentation", + "src": "7111:669:40", + "text": "@notice Execute the given call from this account to this account (i.e., self call).\n @dev Can only be called by the Entrypoint.\n @dev Reverts if the given call is not authorized to skip the chain ID validtion.\n @dev `validateUserOp()` will recompute the `userOpHash` without the chain ID before validating\n it if the `UserOperation` aims at executing this function. This allows certain operations\n to be replayed for all accounts sharing the same address across chains. E.g. This may be\n useful for syncing owner changes.\n @param data The `UserOperation` raw call data of the execute." + }, + "functionSelector": "bf6ba1fc", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 50145, + "kind": "modifierInvocation", + "modifierName": { + "id": 50144, + "name": "onlyEntryPoint", + "nameLocations": [ + "7870:14:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49984, + "src": "7870:14:40" + }, + "nodeType": "ModifierInvocation", + "src": "7870:14:40" + } + ], + "name": "executeWithoutChainIdValidation", + "nameLocation": "7794:31:40", + "parameters": { + "id": 50143, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50142, + "mutability": "mutable", + "name": "data", + "nameLocation": "7841:4:40", + "nodeType": "VariableDeclaration", + "scope": 50177, + "src": "7826:19:40", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 50141, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7826:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7825:21:40" + }, + "returnParameters": { + "id": 50146, + "nodeType": "ParameterList", + "parameters": [], + "src": "7885:0:40" + }, + "scope": 50482, + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "id": 50196, + "nodeType": "FunctionDefinition", + "src": "8399:157:40", + "nodes": [], + "body": { + "id": 50195, + "nodeType": "Block", + "src": "8513:43:40", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 50190, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50180, + "src": "8529:6:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 50191, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50182, + "src": "8537:5:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 50192, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50184, + "src": "8544:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 50189, + "name": "_call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50339, + "src": "8523:5:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 50193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8523:26:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50194, + "nodeType": "ExpressionStatement", + "src": "8523:26:40" + } + ] + }, + "documentation": { + "id": 50178, + "nodeType": "StructuredDocumentation", + "src": "8093:301:40", + "text": "@notice Execute the given call from this account.\n @dev Can only be called by the Entrypoint or an owner of this account (including itself).\n @param target The target call address.\n @param value The call value to user.\n @param data The raw call data." + }, + "functionSelector": "b61d27f6", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 50187, + "kind": "modifierInvocation", + "modifierName": { + "id": 50186, + "name": "onlyEntryPointOrOwner", + "nameLocations": [ + "8491:21:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49999, + "src": "8491:21:40" + }, + "nodeType": "ModifierInvocation", + "src": "8491:21:40" + } + ], + "name": "execute", + "nameLocation": "8408:7:40", + "parameters": { + "id": 50185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50180, + "mutability": "mutable", + "name": "target", + "nameLocation": "8424:6:40", + "nodeType": "VariableDeclaration", + "scope": 50196, + "src": "8416:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50179, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8416:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50182, + "mutability": "mutable", + "name": "value", + "nameLocation": "8440:5:40", + "nodeType": "VariableDeclaration", + "scope": 50196, + "src": "8432:13:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8432:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50184, + "mutability": "mutable", + "name": "data", + "nameLocation": "8462:4:40", + "nodeType": "VariableDeclaration", + "scope": 50196, + "src": "8447:19:40", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 50183, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8447:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8415:52:40" + }, + "returnParameters": { + "id": 50188, + "nodeType": "ParameterList", + "parameters": [], + "src": "8513:0:40" + }, + "scope": 50482, + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "id": 50235, + "nodeType": "FunctionDefinition", + "src": "8796:278:40", + "nodes": [], + "body": { + "id": 50234, + "nodeType": "Block", + "src": "8886:188:40", + "nodes": [], + "statements": [ + { + "body": { + "id": 50232, + "nodeType": "Block", + "src": "8931:137:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "baseExpression": { + "id": 50214, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50201, + "src": "8951:5:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$49952_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct CoinbaseSmartWallet.Call calldata[] calldata" + } + }, + "id": 50216, + "indexExpression": { + "id": 50215, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50207, + "src": "8957:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8951:8:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$49952_calldata_ptr", + "typeString": "struct CoinbaseSmartWallet.Call calldata" + } + }, + "id": 50217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8960:6:40", + "memberName": "target", + "nodeType": "MemberAccess", + "referencedDeclaration": 49945, + "src": "8951:15:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "baseExpression": { + "id": 50218, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50201, + "src": "8968:5:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$49952_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct CoinbaseSmartWallet.Call calldata[] calldata" + } + }, + "id": 50220, + "indexExpression": { + "id": 50219, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50207, + "src": "8974:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8968:8:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$49952_calldata_ptr", + "typeString": "struct CoinbaseSmartWallet.Call calldata" + } + }, + "id": 50221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8977:5:40", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 49948, + "src": "8968:14:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "baseExpression": { + "id": 50222, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50201, + "src": "8984:5:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$49952_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct CoinbaseSmartWallet.Call calldata[] calldata" + } + }, + "id": 50224, + "indexExpression": { + "id": 50223, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50207, + "src": "8990:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8984:8:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$49952_calldata_ptr", + "typeString": "struct CoinbaseSmartWallet.Call calldata" + } + }, + "id": 50225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8993:4:40", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 49951, + "src": "8984:13:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 50213, + "name": "_call", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50339, + "src": "8945:5:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 50226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8945:53:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50227, + "nodeType": "ExpressionStatement", + "src": "8945:53:40" + }, + { + "id": 50231, + "nodeType": "UncheckedBlock", + "src": "9012:46:40", + "statements": [ + { + "expression": { + "id": 50229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "9040:3:40", + "subExpression": { + "id": 50228, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50207, + "src": "9042:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 50230, + "nodeType": "ExpressionStatement", + "src": "9040:3:40" + } + ] + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 50212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 50209, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50207, + "src": "8912:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 50210, + "name": "calls", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50201, + "src": "8916:5:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$49952_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct CoinbaseSmartWallet.Call calldata[] calldata" + } + }, + "id": 50211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8922:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8916:12:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8912:16:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50233, + "initializationExpression": { + "assignments": [ + 50207 + ], + "declarations": [ + { + "constant": false, + "id": 50207, + "mutability": "mutable", + "name": "i", + "nameLocation": "8909:1:40", + "nodeType": "VariableDeclaration", + "scope": 50233, + "src": "8901:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50206, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8901:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 50208, + "nodeType": "VariableDeclarationStatement", + "src": "8901:9:40" + }, + "isSimpleCounterLoop": false, + "nodeType": "ForStatement", + "src": "8896:172:40" + } + ] + }, + "documentation": { + "id": 50197, + "nodeType": "StructuredDocumentation", + "src": "8562:229:40", + "text": "@notice Execute the given list of calls from this account.\n @dev Can only be called by the Entrypoint or an owner of this account (including itself).\n @param calls The list of `Call`s to execute." + }, + "functionSelector": "34fcd5be", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 50204, + "kind": "modifierInvocation", + "modifierName": { + "id": 50203, + "name": "onlyEntryPointOrOwner", + "nameLocations": [ + "8864:21:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49999, + "src": "8864:21:40" + }, + "nodeType": "ModifierInvocation", + "src": "8864:21:40" + } + ], + "name": "executeBatch", + "nameLocation": "8805:12:40", + "parameters": { + "id": 50202, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50201, + "mutability": "mutable", + "name": "calls", + "nameLocation": "8834:5:40", + "nodeType": "VariableDeclaration", + "scope": 50235, + "src": "8818:21:40", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$49952_calldata_ptr_$dyn_calldata_ptr", + "typeString": "struct CoinbaseSmartWallet.Call[]" + }, + "typeName": { + "baseType": { + "id": 50199, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 50198, + "name": "Call", + "nameLocations": [ + "8818:4:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49952, + "src": "8818:4:40" + }, + "referencedDeclaration": 49952, + "src": "8818:4:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Call_$49952_storage_ptr", + "typeString": "struct CoinbaseSmartWallet.Call" + } + }, + "id": 50200, + "nodeType": "ArrayTypeName", + "src": "8818:6:40", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Call_$49952_storage_$dyn_storage_ptr", + "typeString": "struct CoinbaseSmartWallet.Call[]" + } + }, + "visibility": "internal" + } + ], + "src": "8817:23:40" }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 50488, - "nodeType": "ImportDirective", - "src": "109:62:41", - "nodes": [], - "absolutePath": "src/CoinbaseSmartWallet.sol", - "file": "./CoinbaseSmartWallet.sol", - "nameLocation": "-1:-1:-1", - "scope": 50629, - "sourceUnit": 50483, - "symbolAliases": [ + "returnParameters": { + "id": 50205, + "nodeType": "ParameterList", + "parameters": [], + "src": "8886:0:40" + }, + "scope": 50482, + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, { - "foreign": { - "id": 50487, - "name": "CoinbaseSmartWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50482, - "src": "117:19:41", - "typeDescriptions": {} + "id": 50244, + "nodeType": "FunctionDefinition", + "src": "9199:126:40", + "nodes": [], + "body": { + "id": 50243, + "nodeType": "Block", + "src": "9259:66:40", + "nodes": [], + "statements": [ + { + "expression": { + "hexValue": "307835464631333744346230464443443439446341333063374346353745353738613032366432373839", + "id": 50241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9276:42:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "value": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789" + }, + "functionReturnParameters": 50240, + "id": 50242, + "nodeType": "Return", + "src": "9269:49:40" + } + ] }, - "nameLocation": "-1:-1:-1" - } - ], - "unitAlias": "" - }, - { - "id": 50628, - "nodeType": "ContractDefinition", - "src": "461:3187:41", - "nodes": [ + "documentation": { + "id": 50236, + "nodeType": "StructuredDocumentation", + "src": "9080:114:40", + "text": "@notice Returns the address of the EntryPoint v0.6.\n @return The address of the EntryPoint v0.6" + }, + "functionSelector": "b0d691fe", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "entryPoint", + "nameLocation": "9208:10:40", + "parameters": { + "id": 50237, + "nodeType": "ParameterList", + "parameters": [], + "src": "9218:2:40" + }, + "returnParameters": { + "id": 50240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50239, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 50244, + "src": "9250:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50238, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9250:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9249:9:40" + }, + "scope": 50482, + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, { - "id": 50492, - "nodeType": "VariableDeclaration", - "src": "599:39:41", + "id": 50266, + "nodeType": "FunctionDefinition", + "src": "9723:243:40", "nodes": [], - "constant": false, + "body": { + "id": 50265, + "nodeType": "Block", + "src": "9876:90:40", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 50258, + "name": "userOp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50248, + "src": "9936:6:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$2402_calldata_ptr", + "typeString": "struct UserOperation calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_UserOperation_$2402_calldata_ptr", + "typeString": "struct UserOperation calldata" + } + ], + "expression": { + "id": 50256, + "name": "UserOperationLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2572, + "src": "9914:16:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UserOperationLib_$2572_$", + "typeString": "type(library UserOperationLib)" + } + }, + "id": 50257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9931:4:40", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 2554, + "src": "9914:21:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_UserOperation_$2402_calldata_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct UserOperation calldata) pure returns (bytes32)" + } + }, + "id": 50259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9914:29:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 50260, + "name": "entryPoint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50244, + "src": "9945:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 50261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9945:12:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 50254, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "9903:3:40", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 50255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9907:6:40", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "9903:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 50262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9903:55:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 50253, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "9893:9:40", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 50263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9893:66:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 50252, + "id": 50264, + "nodeType": "Return", + "src": "9886:73:40" + } + ] + }, "documentation": { - "id": 50490, + "id": 50245, "nodeType": "StructuredDocumentation", - "src": "503:91:41", - "text": "@notice Address of the ERC-4337 implementation used as implementation for new accounts." + "src": "9331:387:40", + "text": "@notice Computes the hash of the `UserOperation` in the same way as EntryPoint v0.6, but\n leaves out the chain ID.\n @dev This allows accounts to sign a hash that can be used on many chains.\n @param userOp The `UserOperation` to compute the hash for.\n @return userOpHash The `UserOperation` hash, not including the chain ID." }, - "functionSelector": "5c60da1b", - "mutability": "immutable", - "name": "implementation", - "nameLocation": "624:14:41", - "scope": 50628, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "functionSelector": "4f6e7f22", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUserOpHashWithoutChainId", + "nameLocation": "9732:27:40", + "parameters": { + "id": 50249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50248, + "mutability": "mutable", + "name": "userOp", + "nameLocation": "9783:6:40", + "nodeType": "VariableDeclaration", + "scope": 50266, + "src": "9760:29:40", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$2402_calldata_ptr", + "typeString": "struct UserOperation" + }, + "typeName": { + "id": 50247, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 50246, + "name": "UserOperation", + "nameLocations": [ + "9760:13:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2402, + "src": "9760:13:40" + }, + "referencedDeclaration": 2402, + "src": "9760:13:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UserOperation_$2402_storage_ptr", + "typeString": "struct UserOperation" + } + }, + "visibility": "internal" + } + ], + "src": "9759:31:40" }, - "typeName": { - "id": 50491, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "599:7:41", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "returnParameters": { + "id": 50252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50251, + "mutability": "mutable", + "name": "userOpHash", + "nameLocation": "9860:10:40", + "nodeType": "VariableDeclaration", + "scope": 50266, + "src": "9852:18:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 50250, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9852:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "9851:20:40" }, + "scope": 50482, + "stateMutability": "view", + "virtual": true, "visibility": "public" }, { - "id": 50495, - "nodeType": "ErrorDefinition", - "src": "745:22:41", + "id": 50274, + "nodeType": "FunctionDefinition", + "src": "10106:153:40", "nodes": [], + "body": { + "id": 50273, + "nodeType": "Block", + "src": "10167:92:40", + "nodes": [], + "statements": [ + { + "AST": { + "nativeSrc": "10186:67:40", + "nodeType": "YulBlock", + "src": "10186:67:40", + "statements": [ + { + "nativeSrc": "10200:43:40", + "nodeType": "YulAssignment", + "src": "10200:43:40", + "value": { + "arguments": [ + { + "name": "_ERC1967_IMPLEMENTATION_SLOT", + "nativeSrc": "10214:28:40", + "nodeType": "YulIdentifier", + "src": "10214:28:40" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "10208:5:40", + "nodeType": "YulIdentifier", + "src": "10208:5:40" + }, + "nativeSrc": "10208:35:40", + "nodeType": "YulFunctionCall", + "src": "10208:35:40" + }, + "variableNames": [ + { + "name": "addr", + "nativeSrc": "10200:4:40", + "nodeType": "YulIdentifier", + "src": "10200:4:40" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 49428, + "isOffset": false, + "isSlot": false, + "src": "10214:28:40", + "valueSize": 1 + }, + { + "declaration": 50270, + "isOffset": false, + "isSlot": false, + "src": "10200:4:40", + "valueSize": 1 + } + ], + "id": 50272, + "nodeType": "InlineAssembly", + "src": "10177:76:40" + } + ] + }, "documentation": { - "id": 50493, + "id": 50267, "nodeType": "StructuredDocumentation", - "src": "645:95:41", - "text": "@notice Thrown when trying to create a new `CoinbaseSmartWallet` account without any owner." + "src": "9972:129:40", + "text": "@notice Returns the implementation of the ERC1967 proxy.\n @return addr The address of implementation contract." }, - "errorSelector": "3c776be1", - "name": "OwnerRequired", - "nameLocation": "751:13:41", + "functionSelector": "5c60da1b", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "implementation", + "nameLocation": "10115:14:40", "parameters": { - "id": 50494, + "id": 50268, "nodeType": "ParameterList", "parameters": [], - "src": "764:2:41" - } + "src": "10129:2:40" + }, + "returnParameters": { + "id": 50271, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50270, + "mutability": "mutable", + "name": "addr", + "nameLocation": "10161:4:40", + "nodeType": "VariableDeclaration", + "scope": 50274, + "src": "10153:12:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10153:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10152:14:40" + }, + "scope": 50482, + "stateMutability": "view", + "virtual": false, + "visibility": "public" }, { - "id": 50506, + "id": 50312, "nodeType": "FunctionDefinition", - "src": "1029:78:41", + "src": "10557:485:40", "nodes": [], "body": { - "id": 50505, + "id": 50311, "nodeType": "Block", - "src": "1066:41:41", + "src": "10643:399:40", "nodes": [], "statements": [ { - "expression": { - "id": 50503, + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 50304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { - "id": 50501, - "name": "implementation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50492, - "src": "1076:14:41", + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 50298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 50292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 50286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 50282, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50277, + "src": "10670:16:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 50283, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51215, + "src": "10690:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$51215_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 50284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10703:17:40", + "memberName": "addOwnerPublicKey", + "nodeType": "MemberAccess", + "referencedDeclaration": 50924, + "src": "10690:30:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32)" + } + }, + "id": 50285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10721:8:40", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "10690:39:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "10670:59:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 50291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 50287, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50277, + "src": "10749:16:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 50288, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51215, + "src": "10769:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$51215_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 50289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10782:15:40", + "memberName": "addOwnerAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 50905, + "src": "10769:28:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 50290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10798:8:40", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "10769:37:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "10749:57:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10670:136:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 50297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 50293, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50277, + "src": "10826:16:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 50294, + "name": "MultiOwnable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51215, + "src": "10846:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MultiOwnable_$51215_$", + "typeString": "type(contract MultiOwnable)" + } + }, + "id": 50295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10859:18:40", + "memberName": "removeOwnerAtIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 50967, + "src": "10846:31:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 50296, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10878:8:40", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "10846:40:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "10826:60:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10670:216:40", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 50502, - "name": "erc4337", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50498, - "src": "1093:7:41", + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 50303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 50299, + "name": "functionSelector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50277, + "src": "10906:16:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 50300, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49482, + "src": "10926:15:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_UUPSUpgradeable_$49482_$", + "typeString": "type(contract UUPSUpgradeable)" + } + }, + "id": 50301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10942:16:40", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 49461, + "src": "10926:32:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$returns$__$", + "typeString": "function (address,bytes calldata)" + } + }, + "id": 50302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10959:8:40", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "10926:41:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "10906:61:40", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10670:297:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 50308, + "nodeType": "IfStatement", + "src": "10653:361:40", + "trueBody": { + "id": 50307, + "nodeType": "Block", + "src": "10978:36:40", + "statements": [ + { + "expression": { + "hexValue": "74727565", + "id": 50305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10999:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 50281, + "id": 50306, + "nodeType": "Return", + "src": "10992:11:40" } + ] + } + }, + { + "expression": { + "hexValue": "66616c7365", + "id": 50309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11030:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - "src": "1076:24:41", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } + "value": "false" }, - "id": 50504, - "nodeType": "ExpressionStatement", - "src": "1076:24:41" + "functionReturnParameters": 50281, + "id": 50310, + "nodeType": "Return", + "src": "11023:12:40" } ] }, "documentation": { - "id": 50496, + "id": 50275, "nodeType": "StructuredDocumentation", - "src": "773:251:41", - "text": "@notice Factory constructor used to initialize the implementation address to use for future\n ERC-4337 account deployments.\n @param erc4337 The address of the ERC-4337 implementation used to deploy new cloned accounts." + "src": "10447:105:40", + "text": "@return `true` is the function selector is whitelisted to skip the chain ID validation, else `false`." }, + "functionSelector": "9f9bcb34", "implemented": true, - "kind": "constructor", + "kind": "function", "modifiers": [], - "name": "", - "nameLocation": "-1:-1:-1", + "name": "canSkipChainIdValidation", + "nameLocation": "10566:24:40", "parameters": { - "id": 50499, + "id": 50278, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 50498, + "id": 50277, "mutability": "mutable", - "name": "erc4337", - "nameLocation": "1049:7:41", + "name": "functionSelector", + "nameLocation": "10598:16:40", "nodeType": "VariableDeclaration", - "scope": 50506, - "src": "1041:15:41", + "scope": 50312, + "src": "10591:23:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" }, "typeName": { - "id": 50497, - "name": "address", + "id": 50276, + "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "1041:7:41", - "stateMutability": "nonpayable", + "src": "10591:6:40", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" } }, "visibility": "internal" } ], - "src": "1040:17:41" + "src": "10590:25:40" }, "returnParameters": { - "id": 50500, + "id": 50281, "nodeType": "ParameterList", - "parameters": [], - "src": "1066:0:41" + "parameters": [ + { + "constant": false, + "id": 50280, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 50312, + "src": "10637:4:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 50279, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10637:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10636:6:40" }, - "scope": 50628, - "stateMutability": "payable", + "scope": 50482, + "stateMutability": "pure", "virtual": false, "visibility": "public" }, { - "id": 50563, + "id": 50339, "nodeType": "FunctionDefinition", - "src": "1782:562:41", + "src": "11413:302:40", "nodes": [], "body": { - "id": 50562, + "id": 50338, "nodeType": "Block", - "src": "1942:402:41", + "src": "11487:228:40", "nodes": [], "statements": [ { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "assignments": [ + 50323, + 50325 + ], + "declarations": [ + { + "constant": false, + "id": 50323, + "mutability": "mutable", + "name": "success", + "nameLocation": "11503:7:40", + "nodeType": "VariableDeclaration", + "scope": 50338, + "src": "11498:12:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 50322, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11498:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" }, - "id": 50521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 50518, - "name": "owners", + { + "constant": false, + "id": 50325, + "mutability": "mutable", + "name": "result", + "nameLocation": "11525:6:40", + "nodeType": "VariableDeclaration", + "scope": 50338, + "src": "11512:19:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 50324, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11512:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 50332, + "initialValue": { + "arguments": [ + { + "id": 50330, + "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50510, - "src": "1956:6:41", + "referencedDeclaration": 50319, + "src": "11561:4:40", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 50326, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50315, + "src": "11535:6:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 50327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11542:4:40", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "11535:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "id": 50519, + "id": 50329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "memberLocation": "1963:6:41", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1956:13:41", + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 50328, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50317, + "src": "11554:5:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "11535:25:40", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 50520, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1973:1:41", + "id": 50331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11535:31:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11497:69:40" + }, + { + "condition": { + "id": 50334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "11580:8:40", + "subExpression": { + "id": 50333, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50323, + "src": "11581:7:40", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - "src": "1956:18:41", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 50526, - "nodeType": "IfStatement", - "src": "1952:71:41", - "trueBody": { - "id": 50525, - "nodeType": "Block", - "src": "1976:47:41", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 50522, - "name": "OwnerRequired", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50495, - "src": "1997:13:41", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 50523, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1997:15:41", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 50524, - "nodeType": "RevertStatement", - "src": "1990:22:41" - } - ] - } - }, + "id": 50337, + "nodeType": "IfStatement", + "src": "11576:133:40", + "trueBody": { + "id": 50336, + "nodeType": "Block", + "src": "11590:119:40", + "statements": [ + { + "AST": { + "nativeSrc": "11629:70:40", + "nodeType": "YulBlock", + "src": "11629:70:40", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "result", + "nativeSrc": "11658:6:40", + "nodeType": "YulIdentifier", + "src": "11658:6:40" + }, + { + "kind": "number", + "nativeSrc": "11666:2:40", + "nodeType": "YulLiteral", + "src": "11666:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11654:3:40", + "nodeType": "YulIdentifier", + "src": "11654:3:40" + }, + "nativeSrc": "11654:15:40", + "nodeType": "YulFunctionCall", + "src": "11654:15:40" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "11677:6:40", + "nodeType": "YulIdentifier", + "src": "11677:6:40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11671:5:40", + "nodeType": "YulIdentifier", + "src": "11671:5:40" + }, + "nativeSrc": "11671:13:40", + "nodeType": "YulFunctionCall", + "src": "11671:13:40" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11647:6:40", + "nodeType": "YulIdentifier", + "src": "11647:6:40" + }, + "nativeSrc": "11647:38:40", + "nodeType": "YulFunctionCall", + "src": "11647:38:40" + }, + "nativeSrc": "11647:38:40", + "nodeType": "YulExpressionStatement", + "src": "11647:38:40" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 50325, + "isOffset": false, + "isSlot": false, + "src": "11658:6:40", + "valueSize": 1 + }, + { + "declaration": 50325, + "isOffset": false, + "isSlot": false, + "src": "11677:6:40", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 50335, + "nodeType": "InlineAssembly", + "src": "11604:95:40" + } + ] + } + } + ] + }, + "documentation": { + "id": 50313, + "nodeType": "StructuredDocumentation", + "src": "11048:360:40", + "text": "@notice Execute the given call from this account.\n @dev Reverts if the call reverted.\n @dev Impl taken from https://github.com/alchemyplatform/light-account/blob/main/src/LightAccount.sol#L347\n @param target The target call address.\n @param value The call value to user.\n @param data The raw call data." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_call", + "nameLocation": "11422:5:40", + "parameters": { + "id": 50320, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50315, + "mutability": "mutable", + "name": "target", + "nameLocation": "11436:6:40", + "nodeType": "VariableDeclaration", + "scope": 50339, + "src": "11428:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11428:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50317, + "mutability": "mutable", + "name": "value", + "nameLocation": "11452:5:40", + "nodeType": "VariableDeclaration", + "scope": 50339, + "src": "11444:13:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11444:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50319, + "mutability": "mutable", + "name": "data", + "nameLocation": "11472:4:40", + "nodeType": "VariableDeclaration", + "scope": 50339, + "src": "11459:17:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 50318, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11459:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "11427:50:40" + }, + "returnParameters": { + "id": 50321, + "nodeType": "ParameterList", + "parameters": [], + "src": "11487:0:40" + }, + "scope": 50482, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "id": 50455, + "nodeType": "FunctionDefinition", + "src": "12316:1469:40", + "nodes": [], + "body": { + "id": 50454, + "nodeType": "Block", + "src": "12477:1308:40", + "nodes": [], + "statements": [ { "assignments": [ - 50528, - 50530 + 50352 ], "declarations": [ { "constant": false, - "id": 50528, - "mutability": "mutable", - "name": "alreadyDeployed", - "nameLocation": "2039:15:41", - "nodeType": "VariableDeclaration", - "scope": 50562, - "src": "2034:20:41", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 50527, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2034:4:41", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50530, + "id": 50352, "mutability": "mutable", - "name": "accountAddress", - "nameLocation": "2064:14:41", + "name": "sigWrapper", + "nameLocation": "12511:10:40", "nodeType": "VariableDeclaration", - "scope": 50562, - "src": "2056:22:41", + "scope": 50454, + "src": "12487:34:40", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_struct$_SignatureWrapper_$49941_memory_ptr", + "typeString": "struct CoinbaseSmartWallet.SignatureWrapper" }, "typeName": { - "id": 50529, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2056:7:41", - "stateMutability": "nonpayable", + "id": 50351, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 50350, + "name": "SignatureWrapper", + "nameLocations": [ + "12487:16:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49941, + "src": "12487:16:40" + }, + "referencedDeclaration": 49941, + "src": "12487:16:40", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_struct$_SignatureWrapper_$49941_storage_ptr", + "typeString": "struct CoinbaseSmartWallet.SignatureWrapper" } }, "visibility": "internal" } ], - "id": 50541, + "id": 50359, "initialValue": { "arguments": [ { - "expression": { - "id": 50533, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2130:3:41", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 50534, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2134:5:41", - "memberName": "value", - "nodeType": "MemberAccess", - "src": "2130:9:41", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 50535, - "name": "implementation", + "id": 50355, + "name": "signature", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50492, - "src": "2141:14:41", + "referencedDeclaration": 50344, + "src": "12535:9:40", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" } }, { - "arguments": [ - { - "id": 50537, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50510, - "src": "2166:6:41", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - }, + "components": [ { - "id": 50538, - "name": "nonce", + "id": 50356, + "name": "SignatureWrapper", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50512, - "src": "2174:5:41", + "referencedDeclaration": 49941, + "src": "12547:16:40", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_type$_t_struct$_SignatureWrapper_$49941_storage_ptr_$", + "typeString": "type(struct CoinbaseSmartWallet.SignatureWrapper storage pointer)" } } ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 50536, - "name": "_getSalt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50627, - "src": "2157:8:41", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (bytes calldata[] calldata,uint256) pure returns (bytes32)" - } - }, - "id": 50539, + "id": 50357, "isConstant": false, + "isInlineArray": false, "isLValue": false, - "isPure": false, - "kind": "functionCall", + "isPure": true, "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2157:23:41", - "tryCall": false, + "nodeType": "TupleExpression", + "src": "12546:18:40", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_type$_t_struct$_SignatureWrapper_$49941_storage_ptr_$", + "typeString": "type(struct CoinbaseSmartWallet.SignatureWrapper storage pointer)" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" }, { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_type$_t_struct$_SignatureWrapper_$49941_storage_ptr_$", + "typeString": "type(struct CoinbaseSmartWallet.SignatureWrapper storage pointer)" } ], "expression": { - "id": 50531, - "name": "LibClone", + "id": 50353, + "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 48580, - "src": "2094:8:41", + "referencedDeclaration": -1, + "src": "12524:3:40", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibClone_$48580_$", - "typeString": "type(library LibClone)" + "typeIdentifier": "t_magic_abi", + "typeString": "abi" } }, - "id": 50532, + "id": 50354, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, "lValueRequested": false, - "memberLocation": "2103:26:41", - "memberName": "createDeterministicERC1967", + "memberLocation": "12528:6:40", + "memberName": "decode", "nodeType": "MemberAccess", - "referencedDeclaration": 48365, - "src": "2094:35:41", + "src": "12524:10:40", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$_t_bool_$_t_address_$", - "typeString": "function (uint256,address,bytes32) returns (bool,address)" + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" } }, - "id": 50540, + "id": 50358, "isConstant": false, "isLValue": false, "isPure": false, @@ -1023,1004 +7388,1240 @@ "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2094:87:41", + "src": "12524:41:40", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_address_$", - "typeString": "tuple(bool,address)" + "typeIdentifier": "t_struct$_SignatureWrapper_$49941_memory_ptr", + "typeString": "struct CoinbaseSmartWallet.SignatureWrapper memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2033:148:41" + "src": "12487:78:40" }, { - "expression": { - "id": 50549, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 50542, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50516, - "src": "2192:7:41", + "assignments": [ + 50361 + ], + "declarations": [ + { + "constant": false, + "id": 50361, + "mutability": "mutable", + "name": "ownerBytes", + "nameLocation": "12588:10:40", + "nodeType": "VariableDeclaration", + "scope": 50454, + "src": "12575:23:40", + "stateVariable": false, + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", - "typeString": "contract CoinbaseSmartWallet" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 50546, - "name": "accountAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50530, - "src": "2230:14:41", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 50545, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2222:8:41", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_payable_$", - "typeString": "type(address payable)" - }, - "typeName": { - "id": 50544, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2222:8:41", - "stateMutability": "payable", - "typeDescriptions": {} - } - }, - "id": 50547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2222:23:41", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 50360, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12575:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + }, + "visibility": "internal" + } + ], + "id": 50366, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 50363, + "name": "sigWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50352, + "src": "12614:10:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$49941_memory_ptr", + "typeString": "struct CoinbaseSmartWallet.SignatureWrapper memory" } - ], - "id": 50543, - "name": "CoinbaseSmartWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50482, - "src": "2202:19:41", + }, + "id": 50364, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12625:10:40", + "memberName": "ownerIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 49937, + "src": "12614:21:40", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_CoinbaseSmartWallet_$50482_$", - "typeString": "type(contract CoinbaseSmartWallet)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - }, - "id": 50548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2202:44:41", - "tryCall": false, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 50362, + "name": "ownerAtIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51036, + "src": "12601:12:40", "typeDescriptions": { - "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", - "typeString": "contract CoinbaseSmartWallet" + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) view returns (bytes memory)" } }, - "src": "2192:54:41", + "id": 50365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12601:35:40", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", - "typeString": "contract CoinbaseSmartWallet" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 50550, - "nodeType": "ExpressionStatement", - "src": "2192:54:41" + "nodeType": "VariableDeclarationStatement", + "src": "12575:61:40" }, { "condition": { "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 50553, + "id": 50370, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { - "id": 50551, - "name": "alreadyDeployed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50528, - "src": "2261:15:41", + "expression": { + "id": 50367, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50361, + "src": "12651:10:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 50368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12662:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12651:17:40", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { - "hexValue": "66616c7365", - "id": 50552, + "hexValue": "3332", + "id": 50369, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "bool", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2280:5:41", + "src": "12672:2:40", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" }, - "value": "false" + "value": "32" }, - "src": "2261:24:41", + "src": "12651:23:40", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 50561, + "id": 50403, "nodeType": "IfStatement", - "src": "2257:81:41", + "src": "12647:607:40", "trueBody": { - "id": 50560, + "id": 50402, "nodeType": "Block", - "src": "2287:51:41", + "src": "12676:578:40", "statements": [ { - "expression": { - "arguments": [ - { - "id": 50557, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50510, - "src": "2320:6:41", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" - } - } - ], - "expression": { - "argumentTypes": [ + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 50383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" + "arguments": [ + { + "id": 50375, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50361, + "src": "12710:10:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 50374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12702:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 50373, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12702:7:40", + "typeDescriptions": {} + } + }, + "id": 50376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12702:19:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } } ], "expression": { - "id": 50554, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50516, - "src": "2301:7:41", + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 50372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12694:7:40", "typeDescriptions": { - "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", - "typeString": "contract CoinbaseSmartWallet" + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 50371, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12694:7:40", + "typeDescriptions": {} } }, - "id": 50556, + "id": 50377, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12694:28:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 50380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12730:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 50379, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "12730:7:40", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + } + ], + "id": 50378, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "12725:4:40", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 50381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12725:13:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint160", + "typeString": "type(uint160)" + } + }, + "id": 50382, + "isConstant": false, + "isLValue": false, + "isPure": true, "lValueRequested": false, - "memberLocation": "2309:10:41", - "memberName": "initialize", + "memberLocation": "12739:3:40", + "memberName": "max", "nodeType": "MemberAccess", - "referencedDeclaration": 50059, - "src": "2301:18:41", + "src": "12725:17:40", "typeDescriptions": { - "typeIdentifier": "t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$__$", - "typeString": "function (bytes memory[] memory) payable external" + "typeIdentifier": "t_uint160", + "typeString": "uint160" } }, - "id": 50558, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2301:26:41", - "tryCall": false, + "src": "12694:48:40", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 50559, - "nodeType": "ExpressionStatement", - "src": "2301:26:41" - } - ] - } - } - ] - }, - "documentation": { - "id": 50507, - "nodeType": "StructuredDocumentation", - "src": "1113:664:41", - "text": "@notice Deploys an ERC-4337 account and returns its deterministic address.\n @dev The account is deployed behind a minimal ERC1967 proxy whose implementation points to\n the registered ERC-4337 `implementation`.\n @dev The `owners` parameter is a set of addresses and/or public keys depending on the signature\n scheme used (respectively ERC-1271 or Webauthn authentication).\n @param owners The initial set of owners that should be able to control the account.\n @param nonce The nonce of the account, allowing multiple accounts with the same set of initial\n owners to exist." - }, - "functionSelector": "3ffba36f", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "createAccount", - "nameLocation": "1791:13:41", - "parameters": { - "id": 50513, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 50510, - "mutability": "mutable", - "name": "owners", - "nameLocation": "1822:6:41", - "nodeType": "VariableDeclaration", - "scope": 50563, - "src": "1805:23:41", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 50508, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1805:5:41", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 50509, - "nodeType": "ArrayTypeName", - "src": "1805:7:41", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50512, - "mutability": "mutable", - "name": "nonce", - "nameLocation": "1838:5:41", - "nodeType": "VariableDeclaration", - "scope": 50563, - "src": "1830:13:41", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 50511, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1830:7:41", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1804:40:41" - }, - "returnParameters": { - "id": 50517, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 50516, - "mutability": "mutable", - "name": "account", - "nameLocation": "1929:7:41", - "nodeType": "VariableDeclaration", - "scope": 50563, - "src": "1909:27:41", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", - "typeString": "contract CoinbaseSmartWallet" - }, - "typeName": { - "id": 50515, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 50514, - "name": "CoinbaseSmartWallet", - "nameLocations": [ - "1909:19:41" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 50482, - "src": "1909:19:41" - }, - "referencedDeclaration": 50482, - "src": "1909:19:41", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CoinbaseSmartWallet_$50482", - "typeString": "contract CoinbaseSmartWallet" - } - }, - "visibility": "internal" - } - ], - "src": "1908:29:41" - }, - "scope": 50628, - "stateMutability": "payable", - "virtual": true, - "visibility": "public" - }, - { - "id": 50591, - "nodeType": "FunctionDefinition", - "src": "2672:223:41", - "nodes": [], - "body": { - "id": 50590, - "nodeType": "Block", - "src": "2774:121:41", - "nodes": [], - "statements": [ - { - "expression": { - "id": 50588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 50574, - "name": "predicted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50572, - "src": "2784:9:41", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 50577, - "name": "initCodeHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50605, - "src": "2833:12:41", + "id": 50389, + "nodeType": "IfStatement", + "src": "12690:318:40", + "trueBody": { + "id": 50388, + "nodeType": "Block", + "src": "12744:264:40", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 50385, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50361, + "src": "12982:10:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 50384, + "name": "InvalidEthereumAddressOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50867, + "src": "12954:27:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 50386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12954:39:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 50387, + "nodeType": "RevertStatement", + "src": "12947:46:40" + } + ] + } + }, + { + "assignments": [ + 50391 + ], + "declarations": [ + { + "constant": false, + "id": 50391, + "mutability": "mutable", + "name": "owner", + "nameLocation": "13030:5:40", + "nodeType": "VariableDeclaration", + "scope": 50402, + "src": "13022:13:40", + "stateVariable": false, + "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", - "typeString": "function () view returns (bytes32)" + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13022:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 50392, + "nodeType": "VariableDeclarationStatement", + "src": "13022:13:40" + }, + { + "AST": { + "nativeSrc": "13074:67:40", + "nodeType": "YulBlock", + "src": "13074:67:40", + "statements": [ + { + "nativeSrc": "13092:35:40", + "nodeType": "YulAssignment", + "src": "13092:35:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "ownerBytes", + "nativeSrc": "13111:10:40", + "nodeType": "YulIdentifier", + "src": "13111:10:40" + }, + { + "kind": "number", + "nativeSrc": "13123:2:40", + "nodeType": "YulLiteral", + "src": "13123:2:40", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13107:3:40", + "nodeType": "YulIdentifier", + "src": "13107:3:40" + }, + "nativeSrc": "13107:19:40", + "nodeType": "YulFunctionCall", + "src": "13107:19:40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13101:5:40", + "nodeType": "YulIdentifier", + "src": "13101:5:40" + }, + "nativeSrc": "13101:26:40", + "nodeType": "YulFunctionCall", + "src": "13101:26:40" + }, + "variableNames": [ + { + "name": "owner", + "nativeSrc": "13092:5:40", + "nodeType": "YulIdentifier", + "src": "13092:5:40" + } + ] } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 50391, + "isOffset": false, + "isSlot": false, + "src": "13092:5:40", + "valueSize": 1 }, - "id": 50578, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2833:14:41", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + { + "declaration": 50361, + "isOffset": false, + "isSlot": false, + "src": "13111:10:40", + "valueSize": 1 } - }, - { + ], + "flags": [ + "memory-safe" + ], + "id": 50393, + "nodeType": "InlineAssembly", + "src": "13049:92:40" + }, + { + "expression": { "arguments": [ { - "id": 50580, - "name": "owners", + "id": 50396, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50391, + "src": "13202:5:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 50397, + "name": "message", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50567, - "src": "2858:6:41", + "referencedDeclaration": 50342, + "src": "13209:7:40", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, { - "id": 50581, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50569, - "src": "2866:5:41", + "expression": { + "id": 50398, + "name": "sigWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50352, + "src": "13218:10:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$49941_memory_ptr", + "typeString": "struct CoinbaseSmartWallet.SignatureWrapper memory" + } + }, + "id": 50399, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13229:13:40", + "memberName": "signatureData", + "nodeType": "MemberAccess", + "referencedDeclaration": 49940, + "src": "13218:24:40", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" + "typeIdentifier": "t_address", + "typeString": "address" }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - "id": 50579, - "name": "_getSalt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50627, - "src": "2849:8:41", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (bytes calldata[] calldata,uint256) pure returns (bytes32)" - } - }, - "id": 50582, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2849:23:41", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "arguments": [ - { - "id": 50585, - "name": "this", + "expression": { + "id": 50394, + "name": "SignatureCheckerLib", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "2882:4:41", + "referencedDeclaration": 49393, + "src": "13162:19:40", "typeDescriptions": { - "typeIdentifier": "t_contract$_CoinbaseSmartWalletFactory_$50628", - "typeString": "contract CoinbaseSmartWalletFactory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_CoinbaseSmartWalletFactory_$50628", - "typeString": "contract CoinbaseSmartWalletFactory" + "typeIdentifier": "t_type$_t_contract$_SignatureCheckerLib_$49393_$", + "typeString": "type(library SignatureCheckerLib)" } - ], - "id": 50584, + }, + "id": 50395, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2874:7:41", + "memberLocation": "13182:19:40", + "memberName": "isValidSignatureNow", + "nodeType": "MemberAccess", + "referencedDeclaration": 49254, + "src": "13162:39:40", "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 50583, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2874:7:41", - "typeDescriptions": {} + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes32,bytes memory) view returns (bool)" } }, - "id": 50586, + "id": 50400, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "typeConversion", + "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", - "src": "2874:13:41", + "src": "13162:81:40", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 50575, - "name": "LibClone", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48580, - "src": "2796:8:41", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibClone_$48580_$", - "typeString": "type(library LibClone)" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 50576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2805:27:41", - "memberName": "predictDeterministicAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 48569, - "src": "2796:36:41", + "functionReturnParameters": 50349, + "id": 50401, + "nodeType": "Return", + "src": "13155:88:40" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 50407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 50404, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50361, + "src": "13268:10:40", "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_address_$returns$_t_address_$", - "typeString": "function (bytes32,bytes32,address) pure returns (address)" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 50587, + "id": 50405, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2796:92:41", - "tryCall": false, + "memberLocation": "13279:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "13268:17:40", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "2784:104:41", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 50589, - "nodeType": "ExpressionStatement", - "src": "2784:104:41" - } - ] - }, - "documentation": { - "id": 50564, - "nodeType": "StructuredDocumentation", - "src": "2350:317:41", - "text": "@notice Returns the deterministic address of the account created via `createAccount()`.\n @param owners The initial set of owners provided to `createAccount()`.\n @param nonce The nonce provided to `createAccount()`.\n @return predicted The predicted account deployment address." - }, - "functionSelector": "250b1b41", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAddress", - "nameLocation": "2681:10:41", - "parameters": { - "id": 50570, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 50567, - "mutability": "mutable", - "name": "owners", - "nameLocation": "2709:6:41", - "nodeType": "VariableDeclaration", - "scope": 50591, - "src": "2692:23:41", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" - }, - "typeName": { - "baseType": { - "id": 50565, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2692:5:41", + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3634", + "id": 50406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13289:2:40", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" }, - "id": 50566, - "nodeType": "ArrayTypeName", - "src": "2692:7:41", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 50569, - "mutability": "mutable", - "name": "nonce", - "nameLocation": "2725:5:41", - "nodeType": "VariableDeclaration", - "scope": 50591, - "src": "2717:13:41", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 50568, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2717:7:41", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2691:40:41" - }, - "returnParameters": { - "id": 50573, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 50572, - "mutability": "mutable", - "name": "predicted", - "nameLocation": "2763:9:41", - "nodeType": "VariableDeclaration", - "scope": 50591, - "src": "2755:17:41", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 50571, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2755:7:41", - "stateMutability": "nonpayable", + "src": "13268:23:40", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "visibility": "internal" - } - ], - "src": "2754:19:41" - }, - "scope": 50628, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "id": 50605, - "nodeType": "FunctionDefinition", - "src": "3057:139:41", - "nodes": [], - "body": { - "id": 50604, - "nodeType": "Block", - "src": "3126:70:41", - "nodes": [], - "statements": [ - { - "expression": { - "id": 50602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 50597, - "name": "result", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50595, - "src": "3136:6:41", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 50600, - "name": "implementation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50492, - "src": "3174:14:41", + "id": 50449, + "nodeType": "IfStatement", + "src": "13264:462:40", + "trueBody": { + "id": 50448, + "nodeType": "Block", + "src": "13293:433:40", + "statements": [ + { + "assignments": [ + 50409, + 50411 + ], + "declarations": [ + { + "constant": false, + "id": 50409, + "mutability": "mutable", + "name": "x", + "nameLocation": "13316:1:40", + "nodeType": "VariableDeclaration", + "scope": 50448, + "src": "13308:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50408, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13308:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50411, + "mutability": "mutable", + "name": "y", + "nameLocation": "13327:1:40", + "nodeType": "VariableDeclaration", + "scope": 50448, + "src": "13319:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13319:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 50421, + "initialValue": { + "arguments": [ + { + "id": 50414, + "name": "ownerBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50361, + "src": "13343:10:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 50416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13356:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 50415, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13356:7:40", + "typeDescriptions": {} + } + }, + { + "id": 50418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13365:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 50417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13365:7:40", + "typeDescriptions": {} + } + } + ], + "id": 50419, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13355:18:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(uint256),type(uint256))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$", + "typeString": "tuple(type(uint256),type(uint256))" + } + ], + "expression": { + "id": 50412, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "13332:3:40", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 50413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13336:6:40", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "13332:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 50420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13332:42:40", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" } - } - ], - "expression": { - "argumentTypes": [ + }, + "nodeType": "VariableDeclarationStatement", + "src": "13307:67:40" + }, + { + "assignments": [ + 50426 + ], + "declarations": [ { - "typeIdentifier": "t_address", - "typeString": "address" + "constant": false, + "id": 50426, + "mutability": "mutable", + "name": "auth", + "nameLocation": "13418:4:40", + "nodeType": "VariableDeclaration", + "scope": 50448, + "src": "13389:33:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$49585_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + }, + "typeName": { + "id": 50425, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 50424, + "name": "WebAuthn.WebAuthnAuth", + "nameLocations": [ + "13389:8:40", + "13398:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49585, + "src": "13389:21:40" + }, + "referencedDeclaration": 49585, + "src": "13389:21:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$49585_storage_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth" + } + }, + "visibility": "internal" } ], - "expression": { - "id": 50598, - "name": "LibClone", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 48580, - "src": "3145:8:41", + "id": 50435, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 50429, + "name": "sigWrapper", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50352, + "src": "13436:10:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignatureWrapper_$49941_memory_ptr", + "typeString": "struct CoinbaseSmartWallet.SignatureWrapper memory" + } + }, + "id": 50430, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13447:13:40", + "memberName": "signatureData", + "nodeType": "MemberAccess", + "referencedDeclaration": 49940, + "src": "13436:24:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "expression": { + "id": 50431, + "name": "WebAuthn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49808, + "src": "13463:8:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_WebAuthn_$49808_$", + "typeString": "type(library WebAuthn)" + } + }, + "id": 50432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13472:12:40", + "memberName": "WebAuthnAuth", + "nodeType": "MemberAccess", + "referencedDeclaration": 49585, + "src": "13463:21:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$49585_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + } + ], + "id": 50433, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13462:23:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$49585_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_struct$_WebAuthnAuth_$49585_storage_ptr_$", + "typeString": "type(struct WebAuthn.WebAuthnAuth storage pointer)" + } + ], + "expression": { + "id": 50427, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "13425:3:40", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 50428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13429:6:40", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "13425:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 50434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13425:61:40", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LibClone_$48580_$", - "typeString": "type(library LibClone)" + "typeIdentifier": "t_struct$_WebAuthnAuth_$49585_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" } }, - "id": 50599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3154:19:41", - "memberName": "initCodeHashERC1967", - "nodeType": "MemberAccess", - "referencedDeclaration": 48385, - "src": "3145:28:41", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes32_$", - "typeString": "function (address) pure returns (bytes32)" - } + "nodeType": "VariableDeclarationStatement", + "src": "13389:97:40" }, - "id": 50601, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3145:44:41", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "src": "3136:53:41", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 50603, - "nodeType": "ExpressionStatement", - "src": "3136:53:41" - } - ] - }, - "documentation": { - "id": 50592, - "nodeType": "StructuredDocumentation", - "src": "2901:151:41", - "text": "@notice Returns the initialization code hash of the account (a minimal ERC1967 proxy).\n @return result The initialization code hash." - }, - "functionSelector": "db4c545e", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "initCodeHash", - "nameLocation": "3066:12:41", - "parameters": { - "id": 50593, - "nodeType": "ParameterList", - "parameters": [], - "src": "3078:2:41" - }, - "returnParameters": { - "id": 50596, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 50595, - "mutability": "mutable", - "name": "result", - "nameLocation": "3118:6:41", - "nodeType": "VariableDeclaration", - "scope": 50605, - "src": "3110:14:41", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 50594, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3110:7:41", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "3109:16:41" - }, - "scope": 50628, - "stateMutability": "view", - "virtual": true, - "visibility": "public" - }, - { - "id": 50627, - "nodeType": "FunctionDefinition", - "src": "3491:155:41", - "nodes": [], - "body": { - "id": 50626, - "nodeType": "Block", - "src": "3586:60:41", - "nodes": [], - "statements": [ - { - "expression": { - "id": 50624, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 50616, - "name": "salt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 50614, - "src": "3596:4:41", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { + { + "expression": { "arguments": [ { - "id": 50620, - "name": "owners", + "arguments": [ + { + "id": 50440, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50342, + "src": "13564:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 50438, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "13553:3:40", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 50439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13557:6:40", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "13553:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 50441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13553:19:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "66616c7365", + "id": 50442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13615:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "id": 50443, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50426, + "src": "13652:4:40", + "typeDescriptions": { + "typeIdentifier": "t_struct$_WebAuthnAuth_$49585_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + } + }, + { + "id": 50444, + "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50609, - "src": "3624:6:41", + "referencedDeclaration": 50409, + "src": "13677:1:40", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - "id": 50621, - "name": "nonce", + "id": 50445, + "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 50611, - "src": "3632:5:41", + "referencedDeclaration": 50411, + "src": "13699:1:40", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2030,8 +8631,20 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes calldata[] calldata" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_struct$_WebAuthnAuth_$49585_memory_ptr", + "typeString": "struct WebAuthn.WebAuthnAuth memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { "typeIdentifier": "t_uint256", @@ -2039,240 +8652,630 @@ } ], "expression": { - "id": 50618, - "name": "abi", + "id": 50436, + "name": "WebAuthn", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "3613:3:41", + "referencedDeclaration": 49808, + "src": "13508:8:40", "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" + "typeIdentifier": "t_type$_t_contract$_WebAuthn_$49808_$", + "typeString": "type(library WebAuthn)" } }, - "id": 50619, + "id": 50437, "isConstant": false, "isLValue": false, - "isPure": true, + "isPure": false, "lValueRequested": false, - "memberLocation": "3617:6:41", - "memberName": "encode", + "memberLocation": "13517:6:40", + "memberName": "verify", "nodeType": "MemberAccess", - "src": "3613:10:41", + "referencedDeclaration": 49807, + "src": "13508:15:40", "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bool_$_t_struct$_WebAuthnAuth_$49585_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes memory,bool,struct WebAuthn.WebAuthnAuth memory,uint256,uint256) view returns (bool)" } }, - "id": 50622, + "id": 50446, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, - "nameLocations": [], - "names": [], + "nameLocations": [ + "13542:9:40", + "13590:23:40", + "13638:12:40", + "13674:1:40", + "13696:1:40" + ], + "names": [ + "challenge", + "requireUserVerification", + "webAuthnAuth", + "x", + "y" + ], "nodeType": "FunctionCall", - "src": "3613:25:41", + "src": "13508:207:40", "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "id": 50617, - "name": "keccak256", + }, + "functionReturnParameters": 50349, + "id": 50447, + "nodeType": "Return", + "src": "13501:214:40" + } + ] + } + }, + { + "errorCall": { + "arguments": [ + { + "id": 50451, + "name": "ownerBytes", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "3603:9:41", + "referencedDeclaration": 50361, + "src": "13767:10:40", "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } - }, - "id": 50623, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3603:36:41", - "tryCall": false, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 50450, + "name": "InvalidOwnerBytesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50862, + "src": "13743:23:40", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_function_error_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" } }, - "src": "3596:43:41", + "id": 50452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13743:35:40", + "tryCall": false, "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 50625, - "nodeType": "ExpressionStatement", - "src": "3596:43:41" + "id": 50453, + "nodeType": "RevertStatement", + "src": "13736:42:40" } ] }, + "baseFunctions": [ + 50821 + ], "documentation": { - "id": 50606, + "id": 50340, "nodeType": "StructuredDocumentation", - "src": "3202:284:41", - "text": "@notice Returns the deterministic salt for a specific set of `owners` and `nonce`.\n @param owners The initial set of owners provided to `createAccount()`.\n @param nonce The nonce provided to `createAccount()`.\n @return salt The computed salt." + "src": "11721:590:40", + "text": "@inheritdoc ERC1271\n @dev Used both for classic ERC-1271 signature AND `UserOperation` validations.\n @dev Reverts if the signer (based on the `ownerIndex`) is not compatible with the signature.\n @dev Reverts if the signature does not correspond to an ERC-1271 signature or to the abi\n encoded version of a `WebAuthnAuth` struct.\n @dev Does NOT revert if the signature verification fails to allow making a \"simulation call\"\n without a valid signature.\n @param signature The abi encoded `SignatureWrapper` struct." }, "implemented": true, "kind": "function", "modifiers": [], - "name": "_getSalt", - "nameLocation": "3500:8:41", + "name": "_validateSignature", + "nameLocation": "12325:18:40", + "overrides": { + "id": 50346, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "12441:8:40" + }, "parameters": { - "id": 50612, + "id": 50345, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 50609, + "id": 50342, "mutability": "mutable", - "name": "owners", - "nameLocation": "3526:6:41", + "name": "message", + "nameLocation": "12352:7:40", "nodeType": "VariableDeclaration", - "scope": 50627, - "src": "3509:23:41", + "scope": 50455, + "src": "12344:15:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 50341, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12344:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50344, + "mutability": "mutable", + "name": "signature", + "nameLocation": "12376:9:40", + "nodeType": "VariableDeclaration", + "scope": 50455, + "src": "12361:24:40", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", - "typeString": "bytes[]" + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" }, "typeName": { - "baseType": { - "id": 50607, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3509:5:41", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "id": 50608, - "nodeType": "ArrayTypeName", - "src": "3509:7:41", + "id": 50343, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12361:5:40", "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", - "typeString": "bytes[]" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "12343:43:40" + }, + "returnParameters": { + "id": 50349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 50348, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 50455, + "src": "12467:4:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 50347, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12467:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "visibility": "internal" + } + ], + "src": "12466:6:40" + }, + "scope": 50482, + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "id": 50466, + "nodeType": "FunctionDefinition", + "src": "13928:96:40", + "nodes": [], + "body": { + "id": 50465, + "nodeType": "Block", + "src": "14022:2:40", + "nodes": [], + "statements": [] + }, + "baseFunctions": [ + 49434 + ], + "documentation": { + "id": 50456, + "nodeType": "StructuredDocumentation", + "src": "13791:132:40", + "text": "@inheritdoc UUPSUpgradeable\n @dev Authorization logic is only based on the sender being an owner of this account." + }, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 50463, + "kind": "modifierInvocation", + "modifierName": { + "id": 50462, + "name": "onlyOwner", + "nameLocations": [ + "14012:9:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 50889, + "src": "14012:9:40" }, + "nodeType": "ModifierInvocation", + "src": "14012:9:40" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "13937:17:40", + "overrides": { + "id": 50461, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 50460, + "name": "UUPSUpgradeable", + "nameLocations": [ + "13995:15:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49482, + "src": "13995:15:40" + } + ], + "src": "13986:25:40" + }, + "parameters": { + "id": 50459, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 50611, + "id": 50458, "mutability": "mutable", - "name": "nonce", - "nameLocation": "3542:5:41", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 50627, - "src": "3534:13:41", + "scope": 50466, + "src": "13955:7:40", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 50610, - "name": "uint256", + "id": 50457, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "3534:7:41", + "src": "13955:7:40", + "stateMutability": "nonpayable", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_address", + "typeString": "address" } }, "visibility": "internal" } ], - "src": "3508:40:41" + "src": "13954:9:40" + }, + "returnParameters": { + "id": 50464, + "nodeType": "ParameterList", + "parameters": [], + "src": "14022:0:40" + }, + "scope": 50482, + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "id": 50481, + "nodeType": "FunctionDefinition", + "src": "14058:158:40", + "nodes": [], + "body": { + "id": 50480, + "nodeType": "Block", + "src": "14162:54:40", + "nodes": [], + "statements": [ + { + "expression": { + "components": [ + { + "hexValue": "436f696e6261736520536d6172742057616c6c6574", + "id": 50476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14180:23:40", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65342b33652b3c0bc173049ed7496b7322db7ff8abfc0752044a5a592bdde64e", + "typeString": "literal_string \"Coinbase Smart Wallet\"" + }, + "value": "Coinbase Smart Wallet" + }, + { + "hexValue": "31", + "id": 50477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14205:3:40", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "id": 50478, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14179:30:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_stringliteral_65342b33652b3c0bc173049ed7496b7322db7ff8abfc0752044a5a592bdde64e_$_t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6_$", + "typeString": "tuple(literal_string \"Coinbase Smart Wallet\",literal_string \"1\")" + } + }, + "functionReturnParameters": 50475, + "id": 50479, + "nodeType": "Return", + "src": "14172:37:40" + } + ] + }, + "baseFunctions": [ + 50811 + ], + "documentation": { + "id": 50467, + "nodeType": "StructuredDocumentation", + "src": "14030:23:40", + "text": "@inheritdoc ERC1271" + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_domainNameAndVersion", + "nameLocation": "14067:21:40", + "overrides": { + "id": 50470, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 50469, + "name": "ERC1271", + "nameLocations": [ + "14114:7:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 50822, + "src": "14114:7:40" + } + ], + "src": "14105:17:40" + }, + "parameters": { + "id": 50468, + "nodeType": "ParameterList", + "parameters": [], + "src": "14088:2:40" }, "returnParameters": { - "id": 50615, + "id": 50475, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 50614, + "id": 50472, "mutability": "mutable", - "name": "salt", - "nameLocation": "3580:4:41", + "name": "", + "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", - "scope": 50627, - "src": "3572:12:41", + "scope": 50481, + "src": "14132:13:40", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" }, "typeName": { - "id": 50613, - "name": "bytes32", + "id": 50471, + "name": "string", "nodeType": "ElementaryTypeName", - "src": "3572:7:41", + "src": "14132:6:40", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 50474, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 50481, + "src": "14147:13:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 50473, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "14147:6:40", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" } }, "visibility": "internal" } ], - "src": "3571:14:41" + "src": "14131:30:40" }, - "scope": 50628, + "scope": 50482, "stateMutability": "pure", "virtual": false, "visibility": "internal" } ], "abstract": false, - "baseContracts": [], - "canonicalName": "CoinbaseSmartWalletFactory", + "baseContracts": [ + { + "baseName": { + "id": 49926, + "name": "MultiOwnable", + "nameLocations": [ + "906:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 51215, + "src": "906:12:40" + }, + "id": 49927, + "nodeType": "InheritanceSpecifier", + "src": "906:12:40" + }, + { + "baseName": { + "id": 49928, + "name": "UUPSUpgradeable", + "nameLocations": [ + "920:15:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49482, + "src": "920:15:40" + }, + "id": 49929, + "nodeType": "InheritanceSpecifier", + "src": "920:15:40" + }, + { + "baseName": { + "id": 49930, + "name": "Receiver", + "nameLocations": [ + "937:8:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47844, + "src": "937:8:40" + }, + "id": 49931, + "nodeType": "InheritanceSpecifier", + "src": "937:8:40" + }, + { + "baseName": { + "id": 49932, + "name": "ERC1271", + "nameLocations": [ + "947:7:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 50822, + "src": "947:7:40" + }, + "id": 49933, + "nodeType": "InheritanceSpecifier", + "src": "947:7:40" + } + ], + "canonicalName": "CoinbaseSmartWallet", "contractDependencies": [], "contractKind": "contract", "documentation": { - "id": 50489, + "id": 49925, "nodeType": "StructuredDocumentation", - "src": "173:288:41", - "text": "@title Coinbase Smart Wallet Factory\n @notice CoinbaseSmartWallet factory, based on Solady's ERC4337Factory.\n @author Coinbase (https://github.com/coinbase/smart-wallet)\n @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337Factory.sol)" + "src": "492:382:40", + "text": "@title Coinbase Smart Wallet\n @notice ERC4337-compatible smart contract wallet, based on Solady ERC4337 account implementation\n with inspiration from Alchemy's LightAccount and Daimo's DaimoAccount.\n @author Coinbase (https://github.com/coinbase/smart-wallet)\n @author Solady (https://github.com/vectorized/solady/blob/main/src/accounts/ERC4337.sol)" }, "fullyImplemented": true, + "internalFunctionIDs": { + "49461": 1, + "50905": 2, + "50924": 3, + "50967": 4 + }, "linearizedBaseContracts": [ - 50628 + 50482, + 50822, + 47844, + 49482, + 51215 ], - "name": "CoinbaseSmartWalletFactory", - "nameLocation": "470:26:41", - "scope": 50629, + "name": "CoinbaseSmartWallet", + "nameLocation": "883:19:40", + "scope": 50483, "usedErrors": [ - 50495 + 49399, + 49402, + 49959, + 49964, + 49969, + 50847, + 50852, + 50857, + 50862, + 50867 ], - "usedEvents": [] + "usedEvents": [ + 49420, + 50874, + 50881 + ] } ], "license": "MIT" }, - "id": 41 + "id": 40 } \ No newline at end of file diff --git a/xmtp_id/src/erc1271_verifier.rs b/xmtp_id/src/erc1271_verifier.rs index 4ee224d9a..0040c55e2 100644 --- a/xmtp_id/src/erc1271_verifier.rs +++ b/xmtp_id/src/erc1271_verifier.rs @@ -20,7 +20,7 @@ pub struct ERC1271Verifier { } impl ERC1271Verifier { - pub fn new(url: &str) -> Self { + pub fn new(url: String) -> Self { let provider = Arc::new(Provider::::try_from(url).unwrap()); Self { provider } } @@ -51,3 +51,161 @@ impl ERC1271Verifier { Ok(res == EIP1271_MAGIC_VALUE) } } + +#[cfg(test)] +mod tests { + use super::*; + use ethers::{ + abi::{self, encode, Token}, + providers::{Http, Middleware, Provider}, + types::{Bytes, H256, U256}, + utils::AnvilInstance, + }; + + use ethers::{ + core::utils::Anvil, + middleware::SignerMiddleware, + signers::{LocalWallet, Signer as _}, + }; + use futures::Future; + use std::{convert::TryFrom, sync::Arc}; + + abigen!( + CoinbaseSmartWallet, + "artifact/CoinbaseSmartWallet.json", + derives(serde::Serialize, serde::Deserialize) + ); + + abigen!( + CoinbaseSmartWalletFactory, + "artifact/CoinbaseSmartWalletFactory.json", + derives(serde::Serialize, serde::Deserialize) + ); + + #[tokio::test] + async fn test_coinbase_smart_wallet() { + let anvil = Anvil::new() + .args(vec!["--base-fee", "100"]) + .spawn(); + let owner0: LocalWallet = anvil.keys()[1].clone().into(); + let owner1: LocalWallet = anvil.keys()[2].clone().into(); + let owners = vec![ + Bytes::from(H256::from(owner0.address()).0.to_vec()), + Bytes::from(H256::from(owner1.address()).0.to_vec()), + ]; + let nonce = U256::from(0); // needed when creating a smart wallet + let provider = Provider::::try_from(anvil.endpoint()).unwrap(); + let client = Arc::new(SignerMiddleware::new( + provider.clone(), + owner0.clone().with_chain_id(anvil.chain_id()), + )); + let verifier = ERC1271Verifier::new(anvil.endpoint()); + + // deploy a coinbase smart wallet as the implementation for factory + let implementation = CoinbaseSmartWallet::deploy(client.clone(), ()) + .unwrap() + .gas_price(100) + .send() + .await + .unwrap(); + + // Deploy the factory + let factory = CoinbaseSmartWalletFactory::deploy(client.clone(), implementation.address()) + .unwrap() + .gas_price(100) + .send() + .await + .unwrap(); + + let smart_wallet_address = factory.get_address(owners.clone(), nonce).await.unwrap(); + let tx = factory.create_account(owners.clone(), nonce); + let pending_tx = tx.send().await.unwrap(); + let _ = pending_tx.await.unwrap(); + + // Generate signatures from owners and verify them. + let smart_wallet = CoinbaseSmartWallet::new(smart_wallet_address, client.clone()); + let hash: [u8; 32] = H256::random().into(); + let replay_safe_hash = smart_wallet.replay_safe_hash(hash).call().await.unwrap(); + // owner 0 + let sig0 = owner0.sign_hash(replay_safe_hash.into()).unwrap(); + let res = smart_wallet + .is_valid_signature( + hash, + abi::encode(&[Token::Tuple(vec![ + Token::Uint(U256::from(0)), + Token::Bytes(sig0.to_vec()), + ])]) + .into(), + ) + .call() + .await + .unwrap(); + assert_eq!(res, EIP1271_MAGIC_VALUE); + // owner1 + let sig1 = owner1.sign_hash(replay_safe_hash.into()).unwrap(); + let res = smart_wallet + .is_valid_signature( + hash, + encode(&[Token::Tuple(vec![ + Token::Uint(1.into()), + Token::Bytes(sig1.to_vec()), + ])]) + .into(), + ) + .call() + .await + .unwrap(); + assert_eq!(res, EIP1271_MAGIC_VALUE); + // owner0 siganture won't be seen valid as from owner 1 + let res = smart_wallet + .is_valid_signature( + hash, + abi::encode(&[Token::Tuple(vec![ + Token::Uint(U256::from(1)), + Token::Bytes(sig0.to_vec()), + ])]) + .into(), + ) + .call() + .await + .unwrap(); + assert_ne!(res, EIP1271_MAGIC_VALUE); + + // get block number before removing + let block_number = provider.get_block_number().await.unwrap(); + + // remove owner1 and check their signature + let tx = smart_wallet.remove_owner_at_index(1.into()); + let pending_tx = tx.send().await.unwrap(); + let _ = pending_tx.await.unwrap(); + + let res = smart_wallet + .is_valid_signature( + hash, + encode(&[Token::Tuple(vec![ + Token::Uint(1.into()), + Token::Bytes(sig1.to_vec()), + ])]) + .into(), + ) + .call() + .await; + assert!(res.is_err()); + + // use pre-removal block number to verify owner1 signature + let res = smart_wallet + .is_valid_signature( + hash, + encode(&[Token::Tuple(vec![ + Token::Uint(1.into()), + Token::Bytes(sig1.to_vec()), + ])]) + .into(), + ) + .block(block_number) + .call() + .await + .unwrap(); + assert_eq!(res, EIP1271_MAGIC_VALUE); + } +} From aed4a46fa6163bd428ca9194c5a6aa794a43b7cc Mon Sep 17 00:00:00 2001 From: yoduyodu Date: Fri, 5 Apr 2024 14:53:42 -0700 Subject: [PATCH 06/10] =?UTF-8?q?=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xmtp_id/src/erc1271_verifier.rs | 67 +++++++++++++++++---------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/xmtp_id/src/erc1271_verifier.rs b/xmtp_id/src/erc1271_verifier.rs index 0040c55e2..d956555c4 100644 --- a/xmtp_id/src/erc1271_verifier.rs +++ b/xmtp_id/src/erc1271_verifier.rs @@ -1,6 +1,6 @@ use anyhow::Error; use ethers::contract::abigen; -use ethers::providers::{Http, Middleware, Provider}; +use ethers::providers::{Http, Provider}; use ethers::types::{Address, BlockNumber, Bytes}; use std::convert::TryFrom; use std::sync::Arc; @@ -32,10 +32,10 @@ impl ERC1271Verifier { /// * `wallet_address` - Address of the ERC1271 wallet. /// * `block_number` - Block number to verify the signature at. /// * `hash`, `signature` - Inputs to ERC-1271, used for signer verification. - pub async fn is_valid_signature( + pub async fn is_valid_signature( &self, wallet_address: Address, - block_number: BlockNumber, + block_number: Option, hash: [u8; 32], signature: Bytes, ) -> Result { @@ -43,7 +43,7 @@ impl ERC1271Verifier { let res: [u8; 4] = erc1271 .is_valid_signature(hash, signature) - .block(block_number) + .block(block_number.unwrap_or_default()) .call() .await? .into(); @@ -56,10 +56,9 @@ impl ERC1271Verifier { mod tests { use super::*; use ethers::{ - abi::{self, encode, Token}, + abi::{self, Token}, providers::{Http, Middleware, Provider}, types::{Bytes, H256, U256}, - utils::AnvilInstance, }; use ethers::{ @@ -67,7 +66,6 @@ mod tests { middleware::SignerMiddleware, signers::{LocalWallet, Signer as _}, }; - use futures::Future; use std::{convert::TryFrom, sync::Arc}; abigen!( @@ -84,9 +82,7 @@ mod tests { #[tokio::test] async fn test_coinbase_smart_wallet() { - let anvil = Anvil::new() - .args(vec!["--base-fee", "100"]) - .spawn(); + let anvil = Anvil::new().args(vec!["--base-fee", "100"]).spawn(); let owner0: LocalWallet = anvil.keys()[1].clone().into(); let owner1: LocalWallet = anvil.keys()[2].clone().into(); let owners = vec![ @@ -128,8 +124,11 @@ mod tests { let replay_safe_hash = smart_wallet.replay_safe_hash(hash).call().await.unwrap(); // owner 0 let sig0 = owner0.sign_hash(replay_safe_hash.into()).unwrap(); - let res = smart_wallet + + let res = verifier .is_valid_signature( + smart_wallet_address, + None, hash, abi::encode(&[Token::Tuple(vec![ Token::Uint(U256::from(0)), @@ -137,28 +136,30 @@ mod tests { ])]) .into(), ) - .call() .await .unwrap(); - assert_eq!(res, EIP1271_MAGIC_VALUE); + assert_eq!(res, true); // owner1 let sig1 = owner1.sign_hash(replay_safe_hash.into()).unwrap(); - let res = smart_wallet + let res = verifier .is_valid_signature( + smart_wallet_address, + None, hash, - encode(&[Token::Tuple(vec![ - Token::Uint(1.into()), + abi::encode(&[Token::Tuple(vec![ + Token::Uint(U256::from(1)), Token::Bytes(sig1.to_vec()), ])]) .into(), ) - .call() .await .unwrap(); - assert_eq!(res, EIP1271_MAGIC_VALUE); - // owner0 siganture won't be seen valid as from owner 1 - let res = smart_wallet + assert_eq!(res, true); + // owner0 siganture won't be deemed as signed by owner1 + let res = verifier .is_valid_signature( + smart_wallet_address, + None, hash, abi::encode(&[Token::Tuple(vec![ Token::Uint(U256::from(1)), @@ -166,10 +167,9 @@ mod tests { ])]) .into(), ) - .call() .await .unwrap(); - assert_ne!(res, EIP1271_MAGIC_VALUE); + assert_eq!(res, false); // get block number before removing let block_number = provider.get_block_number().await.unwrap(); @@ -179,33 +179,34 @@ mod tests { let pending_tx = tx.send().await.unwrap(); let _ = pending_tx.await.unwrap(); - let res = smart_wallet + let res = verifier .is_valid_signature( + smart_wallet_address, + None, hash, - encode(&[Token::Tuple(vec![ - Token::Uint(1.into()), + abi::encode(&[Token::Tuple(vec![ + Token::Uint(U256::from(1)), Token::Bytes(sig1.to_vec()), ])]) .into(), ) - .call() .await; - assert!(res.is_err()); + assert!(res.is_err()); // when verify a non-existing owner, it errors // use pre-removal block number to verify owner1 signature - let res = smart_wallet + let res = verifier .is_valid_signature( + smart_wallet_address, + Some(BlockNumber::Number(block_number)), hash, - encode(&[Token::Tuple(vec![ - Token::Uint(1.into()), + abi::encode(&[Token::Tuple(vec![ + Token::Uint(U256::from(1)), Token::Bytes(sig1.to_vec()), ])]) .into(), ) - .block(block_number) - .call() .await .unwrap(); - assert_eq!(res, EIP1271_MAGIC_VALUE); + assert_eq!(res, true); } } From f2de811116d51812cc73fdc4ca0a47ab54d3b0b6 Mon Sep 17 00:00:00 2001 From: yoduyodu Date: Fri, 5 Apr 2024 14:55:28 -0700 Subject: [PATCH 07/10] resolve comments --- xmtp_id/src/erc1271_verifier.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/xmtp_id/src/erc1271_verifier.rs b/xmtp_id/src/erc1271_verifier.rs index d956555c4..1d17ad2c1 100644 --- a/xmtp_id/src/erc1271_verifier.rs +++ b/xmtp_id/src/erc1271_verifier.rs @@ -29,24 +29,23 @@ impl ERC1271Verifier { /// /// # Arguments /// - /// * `wallet_address` - Address of the ERC1271 wallet. + /// * `contract_address` - Address of the ERC1271 wallet. /// * `block_number` - Block number to verify the signature at. /// * `hash`, `signature` - Inputs to ERC-1271, used for signer verification. pub async fn is_valid_signature( &self, - wallet_address: Address, + contract_address: Address, block_number: Option, hash: [u8; 32], signature: Bytes, ) -> Result { - let erc1271 = ERC1271::new(wallet_address, self.provider.clone()); + let erc1271 = ERC1271::new(contract_address, self.provider.clone()); let res: [u8; 4] = erc1271 .is_valid_signature(hash, signature) .block(block_number.unwrap_or_default()) .call() - .await? - .into(); + .await?; Ok(res == EIP1271_MAGIC_VALUE) } From 81e6e794839c57e2faa91bdce982856ef4da54df Mon Sep 17 00:00:00 2001 From: yoduyodu Date: Fri, 5 Apr 2024 15:06:01 -0700 Subject: [PATCH 08/10] install foundry in CI --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 475e2f265..6d59e5067 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,6 +15,9 @@ jobs: - name: Update rust toolchain from rust-toolchain file run: rustup update + - name: Install Foundry + run: curl -L https://foundry.paradigm.xyz | bash + - uses: Swatinem/rust-cache@v2 with: workspaces: | From 93c7e1cd738c2381eaebf3eb1ece666aab629d6b Mon Sep 17 00:00:00 2001 From: yoduyodu Date: Fri, 5 Apr 2024 15:25:03 -0700 Subject: [PATCH 09/10] CI --- .github/workflows/test.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6d59e5067..f5e1a523b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,7 +16,10 @@ jobs: run: rustup update - name: Install Foundry - run: curl -L https://foundry.paradigm.xyz | bash + run: | + curl -L https://foundry.paradigm.xyz | bash + source /home/runner/.bashrc + foundryup - uses: Swatinem/rust-cache@v2 with: From 9e72b543a89fee1c42076c76caa873be9334429e Mon Sep 17 00:00:00 2001 From: yoduyodu Date: Fri, 5 Apr 2024 15:56:07 -0700 Subject: [PATCH 10/10] install foundry --- .github/workflows/test.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f5e1a523b..3d35d68f8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,11 +16,8 @@ jobs: run: rustup update - name: Install Foundry - run: | - curl -L https://foundry.paradigm.xyz | bash - source /home/runner/.bashrc - foundryup - + uses: foundry-rs/foundry-toolchain@v1 + - uses: Swatinem/rust-cache@v2 with: workspaces: |