From 316ff818c5837ff5e88db8cb6e822863af5286df Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Thu, 23 Oct 2025 12:31:55 +0200 Subject: [PATCH 01/42] start drafting --- crates/cast/src/cmd/wallet/list.rs | 2 +- crates/cheatcodes/src/inspector.rs | 2 +- crates/cheatcodes/src/script.rs | 2 +- crates/lint/Cargo.toml | 1 - crates/wallets/src/error.rs | 8 ++ crates/wallets/src/lib.rs | 17 ++-- crates/wallets/src/{wallet.rs => opts.rs} | 19 ++++- .../src/{wallet_signer.rs => signer.rs} | 14 +++- crates/wallets/src/wallet_browser/error.rs | 28 +++++++ crates/wallets/src/wallet_browser/mod.rs | 2 + crates/wallets/src/wallet_browser/server.rs | 1 + crates/wallets/src/wallet_browser/signer.rs | 79 +++++++++++++++++++ .../{multi_wallet.rs => wallet_multi/mod.rs} | 2 +- .../src/{raw_wallet.rs => wallet_raw/mod.rs} | 0 14 files changed, 162 insertions(+), 15 deletions(-) rename crates/wallets/src/{wallet.rs => opts.rs} (93%) rename crates/wallets/src/{wallet_signer.rs => signer.rs} (95%) create mode 100644 crates/wallets/src/wallet_browser/error.rs create mode 100644 crates/wallets/src/wallet_browser/mod.rs create mode 100644 crates/wallets/src/wallet_browser/server.rs create mode 100644 crates/wallets/src/wallet_browser/signer.rs rename crates/wallets/src/{multi_wallet.rs => wallet_multi/mod.rs} (99%) rename crates/wallets/src/{raw_wallet.rs => wallet_raw/mod.rs} (100%) diff --git a/crates/cast/src/cmd/wallet/list.rs b/crates/cast/src/cmd/wallet/list.rs index d8c297adf53cc..30fd1384f0617 100644 --- a/crates/cast/src/cmd/wallet/list.rs +++ b/crates/cast/src/cmd/wallet/list.rs @@ -4,7 +4,7 @@ use std::env; use foundry_common::{fs, sh_err, sh_println}; use foundry_config::Config; -use foundry_wallets::multi_wallet::MultiWalletOptsBuilder; +use foundry_wallets::wallet_multi::MultiWalletOptsBuilder; /// CLI arguments for `cast wallet list`. #[derive(Clone, Debug, Parser)] diff --git a/crates/cheatcodes/src/inspector.rs b/crates/cheatcodes/src/inspector.rs index 15a8a372656b9..679b6443f5e03 100644 --- a/crates/cheatcodes/src/inspector.rs +++ b/crates/cheatcodes/src/inspector.rs @@ -46,7 +46,7 @@ use foundry_evm_core::{ use foundry_evm_traces::{ TracingInspector, TracingInspectorConfig, identifier::SignaturesIdentifier, }; -use foundry_wallets::multi_wallet::MultiWallet; +use foundry_wallets::wallet_multi::MultiWallet; use itertools::Itertools; use proptest::test_runner::{RngAlgorithm, TestRng, TestRunner}; use rand::Rng; diff --git a/crates/cheatcodes/src/script.rs b/crates/cheatcodes/src/script.rs index 6695688c4b968..ca9e9e8ccef86 100644 --- a/crates/cheatcodes/src/script.rs +++ b/crates/cheatcodes/src/script.rs @@ -7,7 +7,7 @@ use alloy_rpc_types::Authorization; use alloy_signer::SignerSync; use alloy_signer_local::PrivateKeySigner; use alloy_sol_types::SolValue; -use foundry_wallets::{WalletSigner, multi_wallet::MultiWallet}; +use foundry_wallets::{WalletSigner, wallet_multi::MultiWallet}; use parking_lot::Mutex; use revm::{ bytecode::Bytecode, diff --git a/crates/lint/Cargo.toml b/crates/lint/Cargo.toml index 5b0f57aec975d..87864721432d9 100644 --- a/crates/lint/Cargo.toml +++ b/crates/lint/Cargo.toml @@ -1,4 +1,3 @@ - [package] name = "forge-lint" diff --git a/crates/wallets/src/error.rs b/crates/wallets/src/error.rs index c77f266f481d5..777c8ab421e90 100644 --- a/crates/wallets/src/error.rs +++ b/crates/wallets/src/error.rs @@ -10,6 +10,8 @@ use alloy_signer_aws::AwsSignerError; #[cfg(feature = "gcp-kms")] use alloy_signer_gcp::GcpSignerError; +use crate::wallet_browser::error::BrowserWalletError; + #[derive(Debug, thiserror::Error)] pub enum PrivateKeyError { #[error("Failed to create wallet from private key. Private key is invalid hex: {0}")] @@ -37,6 +39,8 @@ pub enum WalletSignerError { #[cfg(feature = "gcp-kms")] Gcp(#[from] Box), #[error(transparent)] + Browser(#[from] BrowserWalletError), + #[error(transparent)] Io(#[from] std::io::Error), #[error(transparent)] InvalidHex(#[from] FromHexError), @@ -54,4 +58,8 @@ impl WalletSignerError { pub fn gcp_unsupported() -> Self { Self::UnsupportedSigner("Google Cloud KMS") } + + pub fn browser_unsupported() -> Self { + Self::UnsupportedSigner("Browser Wallet") + } } diff --git a/crates/wallets/src/lib.rs b/crates/wallets/src/lib.rs index 622e8a3b8d5a2..e7954fa2a86bc 100644 --- a/crates/wallets/src/lib.rs +++ b/crates/wallets/src/lib.rs @@ -9,16 +9,17 @@ extern crate tracing; pub mod error; -pub mod multi_wallet; -pub mod raw_wallet; +pub mod opts; +pub mod signer; pub mod utils; -pub mod wallet; -pub mod wallet_signer; +pub mod wallet_browser; +pub mod wallet_multi; +pub mod wallet_raw; -pub use multi_wallet::MultiWalletOpts; -pub use raw_wallet::RawWalletOpts; -pub use wallet::WalletOpts; -pub use wallet_signer::{PendingSigner, WalletSigner}; +pub use opts::WalletOpts; +pub use signer::{PendingSigner, WalletSigner}; +pub use wallet_multi::MultiWalletOpts; +pub use wallet_raw::RawWalletOpts; #[cfg(feature = "aws-kms")] use aws_config as _; diff --git a/crates/wallets/src/wallet.rs b/crates/wallets/src/opts.rs similarity index 93% rename from crates/wallets/src/wallet.rs rename to crates/wallets/src/opts.rs index 3feb8f99202c2..0e53dfa9328a7 100644 --- a/crates/wallets/src/wallet.rs +++ b/crates/wallets/src/opts.rs @@ -1,4 +1,4 @@ -use crate::{raw_wallet::RawWalletOpts, utils, wallet_signer::WalletSigner}; +use crate::{signer::WalletSigner, utils, wallet_raw::RawWalletOpts}; use alloy_primitives::Address; use clap::Parser; use eyre::Result; @@ -91,6 +91,20 @@ pub struct WalletOpts { /// See: #[arg(long, help_heading = "Wallet options - remote", hide = !cfg!(feature = "gcp-kms"))] pub gcp: bool, + + /// Use a browser wallet. + #[arg(long, help_heading = "Wallet options - browser")] + pub browser: bool, + + /// Port for the browser wallet server. + #[arg( + long, + help_heading = "Wallet options - browser", + value_name = "PORT", + default_value = "9545", + requires = "browser" + )] + pub browser_port: u16, } impl WalletOpts { @@ -154,6 +168,7 @@ flag to set your key via: --gcp --trezor --ledger +--browser Alternatively, when using the `cast send` or `cast mktx` commands with a local node or RPC that has unlocked accounts, the --unlocked or --ethsign flags can be used, @@ -222,6 +237,8 @@ mod tests { trezor: false, aws: false, gcp: false, + browser: false, + browser_port: 9545, }; match wallet.signer().await { Ok(_) => { diff --git a/crates/wallets/src/wallet_signer.rs b/crates/wallets/src/signer.rs similarity index 95% rename from crates/wallets/src/wallet_signer.rs rename to crates/wallets/src/signer.rs index cc619041b1b4c..2a68a3ee39eed 100644 --- a/crates/wallets/src/wallet_signer.rs +++ b/crates/wallets/src/signer.rs @@ -1,4 +1,4 @@ -use crate::error::WalletSignerError; +use crate::{error::WalletSignerError, wallet_browser::signer::BrowserSigner}; use alloy_consensus::SignableTransaction; use alloy_dyn_abi::TypedData; use alloy_network::TxSigner; @@ -35,6 +35,8 @@ pub enum WalletSigner { Ledger(LedgerSigner), /// Wrapper around Trezor signer. Trezor(TrezorSigner), + /// Wrapper around browser wallet. + Browser(BrowserSigner), /// Wrapper around AWS KMS signer. #[cfg(feature = "aws-kms")] Aws(AwsSigner), @@ -54,6 +56,12 @@ impl WalletSigner { Ok(Self::Trezor(trezor)) } + pub async fn from_browser(port: u16) -> Result { + let browser_signer = + BrowserSigner::new(port).await.map_err(|e| WalletSignerError::Browser(e.into()))?; + Ok(Self::Browser(browser_signer)) + } + pub async fn from_aws(key_id: String) -> Result { #[cfg(feature = "aws-kms")] { @@ -175,6 +183,9 @@ impl WalletSigner { } } } + Self::Browser(browser) => { + senders.insert(alloy_signer::Signer::address(browser)); + } #[cfg(feature = "aws-kms")] Self::Aws(aws) => { senders.insert(alloy_signer::Signer::address(aws)); @@ -215,6 +226,7 @@ macro_rules! delegate { Self::Local($inner) => $e, Self::Ledger($inner) => $e, Self::Trezor($inner) => $e, + Self::Browser($inner) => $e, #[cfg(feature = "aws-kms")] Self::Aws($inner) => $e, #[cfg(feature = "gcp-kms")] diff --git a/crates/wallets/src/wallet_browser/error.rs b/crates/wallets/src/wallet_browser/error.rs new file mode 100644 index 0000000000000..ace0f1c1cf3f5 --- /dev/null +++ b/crates/wallets/src/wallet_browser/error.rs @@ -0,0 +1,28 @@ +use alloy_signer::Error as SignerError; + +#[derive(Debug, thiserror::Error)] +pub enum BrowserWalletError { + #[error("{operation} request timed out")] + Timeout { operation: &'static str }, + + #[error("{operation} rejected: {reason}")] + Rejected { operation: &'static str, reason: String }, + + #[error("Wallet not connected")] + NotConnected, + + #[error("Server error: {0}")] + ServerError(String), +} + +impl From for SignerError { + fn from(err: BrowserWalletError) -> Self { + Self::other(err) + } +} + +impl From for BrowserWalletError { + fn from(err: SignerError) -> Self { + Self::ServerError(err.to_string()) + } +} diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs new file mode 100644 index 0000000000000..14fe98597fd24 --- /dev/null +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -0,0 +1,2 @@ +pub mod error; +pub mod signer; diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs new file mode 100644 index 0000000000000..8b137891791fe --- /dev/null +++ b/crates/wallets/src/wallet_browser/server.rs @@ -0,0 +1 @@ + diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs new file mode 100644 index 0000000000000..30d2f759b740e --- /dev/null +++ b/crates/wallets/src/wallet_browser/signer.rs @@ -0,0 +1,79 @@ +use alloy_consensus::SignableTransaction; +use alloy_network::TxSigner; +use alloy_primitives::{Address, B256, ChainId, address}; +use alloy_signer::{Result, Signature, Signer, SignerSync}; +use async_trait::async_trait; + +#[derive(Clone, Debug)] +pub struct BrowserSigner { + address: Address, + chain_id: ChainId, +} + +impl BrowserSigner { + pub async fn new(port: u16) -> Result { + return Ok(Self { + // TODO: Fetch address and chain ID from the browser wallet via the server. + address: address!("0x0000000000000000000000000000000000000000"), + chain_id: ChainId::default(), + }); + } +} + +impl SignerSync for BrowserSigner { + fn sign_hash_sync(&self, _hash: &B256) -> Result { + Err(alloy_signer::Error::other( + "Browser wallets cannot sign raw hashes. Use sign_message or send_transaction instead.", + )) + } + + fn sign_message_sync(&self, _message: &[u8]) -> Result { + Err(alloy_signer::Error::other( + "Browser signer requires async operations. Use sign_message instead.", + )) + } + + fn chain_id_sync(&self) -> Option { + Some(self.chain_id) + } +} + +#[async_trait] +impl Signer for BrowserSigner { + async fn sign_hash(&self, _hash: &B256) -> Result { + // Browser wallets handle transaction signing differently + // They sign and send in one step via eth_sendTransaction + Err(alloy_signer::Error::other( + "Browser wallets sign and send transactions in one step. Use eth_sendTransaction instead.", + )) + } + + fn address(&self) -> Address { + self.address + } + + fn chain_id(&self) -> Option { + Some(self.chain_id) + } + + fn set_chain_id(&mut self, chain_id: Option) { + if let Some(id) = chain_id { + self.chain_id = id; + } + } +} + +#[async_trait] +impl TxSigner for BrowserSigner { + fn address(&self) -> Address { + self.address + } + + async fn sign_transaction( + &self, + _tx: &mut dyn SignableTransaction, + ) -> Result { + // Not used - browser wallets sign and send in one step + Err(alloy_signer::Error::other("Use send_transaction_via_browser for browser wallets")) + } +} diff --git a/crates/wallets/src/multi_wallet.rs b/crates/wallets/src/wallet_multi/mod.rs similarity index 99% rename from crates/wallets/src/multi_wallet.rs rename to crates/wallets/src/wallet_multi/mod.rs index 7b89e683e47f9..537bec8a64b8e 100644 --- a/crates/wallets/src/multi_wallet.rs +++ b/crates/wallets/src/wallet_multi/mod.rs @@ -1,6 +1,6 @@ use crate::{ + signer::{PendingSigner, WalletSigner}, utils, - wallet_signer::{PendingSigner, WalletSigner}, }; use alloy_primitives::map::AddressHashMap; use alloy_signer::Signer; diff --git a/crates/wallets/src/raw_wallet.rs b/crates/wallets/src/wallet_raw/mod.rs similarity index 100% rename from crates/wallets/src/raw_wallet.rs rename to crates/wallets/src/wallet_raw/mod.rs From 95e9b8c5793f60d7ca155acac5ae5bf0da0044d8 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Thu, 23 Oct 2025 13:57:50 +0200 Subject: [PATCH 02/42] establish very basic flow --- Cargo.lock | 171 +++++++++++++++++- crates/cast/src/cmd/send.rs | 26 ++- crates/wallets/Cargo.toml | 10 + crates/wallets/src/lib.rs | 3 + crates/wallets/src/opts.rs | 17 +- crates/wallets/src/signer.rs | 7 +- .../src/wallet_browser/app/assets/index.html | 12 ++ crates/wallets/src/wallet_browser/app/mod.rs | 3 + crates/wallets/src/wallet_browser/handlers.rs | 12 ++ crates/wallets/src/wallet_browser/mod.rs | 7 + crates/wallets/src/wallet_browser/queue.rs | 60 ++++++ crates/wallets/src/wallet_browser/server.rs | 140 ++++++++++++++ crates/wallets/src/wallet_browser/signer.rs | 90 ++++++--- crates/wallets/src/wallet_browser/state.rs | 96 ++++++++++ crates/wallets/src/wallet_browser/types.rs | 30 +++ 15 files changed, 644 insertions(+), 40 deletions(-) create mode 100644 crates/wallets/src/wallet_browser/app/assets/index.html create mode 100644 crates/wallets/src/wallet_browser/app/mod.rs create mode 100644 crates/wallets/src/wallet_browser/handlers.rs create mode 100644 crates/wallets/src/wallet_browser/queue.rs create mode 100644 crates/wallets/src/wallet_browser/state.rs create mode 100644 crates/wallets/src/wallet_browser/types.rs diff --git a/Cargo.lock b/Cargo.lock index 5c5dddc886e4a..34b4d2a456939 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2618,6 +2618,12 @@ dependencies = [ "shlex", ] +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + [[package]] name = "cexpr" version = "0.6.0" @@ -2971,6 +2977,16 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + [[package]] name = "comfy-table" version = "7.2.1" @@ -3566,7 +3582,7 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3825,7 +3841,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -4973,6 +4989,7 @@ dependencies = [ "alloy-dyn-abi", "alloy-network", "alloy-primitives", + "alloy-rpc-types", "alloy-signer", "alloy-signer-aws", "alloy-signer-gcp", @@ -4982,16 +4999,21 @@ dependencies = [ "alloy-sol-types", "async-trait", "aws-config", + "axum", "clap", "derive_builder", "eth-keystore", "eyre", + "foundry-common", "foundry-config", + "parking_lot", "rpassword", "serde", "thiserror 2.0.17", "tokio", "tracing", + "uuid 1.18.1", + "webbrowser", ] [[package]] @@ -6036,6 +6058,28 @@ dependencies = [ "syn 2.0.107", ] +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + [[package]] name = "jobserver" version = "0.1.34" @@ -6546,6 +6590,12 @@ dependencies = [ "syn 2.0.107", ] +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -6668,7 +6718,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -6838,6 +6888,31 @@ dependencies = [ "smallvec", ] +[[package]] +name = "objc2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.10.0", + "objc2", +] + [[package]] name = "object" version = "0.37.3" @@ -8492,7 +8567,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -9716,7 +9791,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix 1.1.2", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -9736,7 +9811,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2111ef44dae28680ae9752bb89409e7310ca33a8c621ebe7b106cf5c928b3ac0" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -10940,6 +11015,22 @@ dependencies = [ "string_cache_codegen", ] +[[package]] +name = "webbrowser" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f1243ef785213e3a32fa0396093424a3a6ea566f9948497e5a2309261a4c97" +dependencies = [ + "core-foundation 0.10.1", + "jni", + "log", + "ndk-context", + "objc2", + "objc2-foundation", + "url", + "web-sys", +] + [[package]] name = "webpki-roots" version = "0.26.11" @@ -10997,7 +11088,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -11156,6 +11247,15 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -11192,6 +11292,21 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -11234,6 +11349,12 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -11246,6 +11367,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -11258,6 +11385,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -11282,6 +11415,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -11294,6 +11433,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -11306,6 +11451,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -11318,6 +11469,12 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" diff --git a/crates/cast/src/cmd/send.rs b/crates/cast/src/cmd/send.rs index 5f17f93184c99..75e38c9ed305a 100644 --- a/crates/cast/src/cmd/send.rs +++ b/crates/cast/src/cmd/send.rs @@ -15,6 +15,7 @@ use foundry_cli::{ utils, utils::LoadConfig, }; +use foundry_wallets::WalletSigner; use std::{path::PathBuf, str::FromStr}; /// CLI arguments for `cast send`. @@ -149,7 +150,7 @@ impl SendTxArgs { // Default to sending via eth_sendTransaction if the --unlocked flag is passed. // This should be the only way this RPC method is used as it requires a local node // or remote RPC with unlocked accounts. - if unlocked { + if unlocked && !eth.wallet.browser { // only check current chain id if it was specified in the config if let Some(config_chain) = config.chain { let current_chain_id = provider.get_chain_id().await?; @@ -183,14 +184,33 @@ impl SendTxArgs { tx::validate_from_address(eth.wallet.from, from)?; - let (tx, _) = builder.build(&signer).await?; + // Browser wallets work differently as they sign and send the transaction in one step. + if eth.wallet.browser + && let WalletSigner::Browser(ref browser_signer) = signer + { + let (tx_request, _) = builder.build(from).await?; + let tx_hash = browser_signer.send_transaction_via_browser(tx_request.inner).await?; + + if cast_async { + sh_println!("{tx_hash:#x}")?; + } else { + let receipt = Cast::new(&provider) + .receipt(format!("{tx_hash:#x}"), None, confirmations, Some(timeout), false) + .await?; + sh_println!("{receipt}")?; + } + + return Ok(()); + } + + let (tx_request, _) = builder.build(&signer).await?; let wallet = EthereumWallet::from(signer); let provider = ProviderBuilder::<_, _, AnyNetwork>::default() .wallet(wallet) .connect_provider(&provider); - cast_send(provider, tx, cast_async, confirmations, timeout).await + cast_send(provider, tx_request, cast_async, confirmations, timeout).await } } } diff --git a/crates/wallets/Cargo.toml b/crates/wallets/Cargo.toml index 8b83021df32ea..1ac930926f52d 100644 --- a/crates/wallets/Cargo.toml +++ b/crates/wallets/Cargo.toml @@ -25,6 +25,15 @@ alloy-consensus.workspace = true alloy-sol-types.workspace = true alloy-dyn-abi.workspace = true +# browser wallet +alloy-rpc-types.workspace = true +axum.workspace = true +foundry-common.workspace = true +tokio = { workspace = true, features = ["macros"] } +parking_lot.workspace = true +uuid.workspace = true +webbrowser = "1.0.6" + # aws-kms alloy-signer-aws = { workspace = true, features = ["eip712"], optional = true } aws-config = { version = "1", default-features = true, optional = true } @@ -32,6 +41,7 @@ aws-config = { version = "1", default-features = true, optional = true } # gcp-kms alloy-signer-gcp = { workspace = true, features = ["eip712"], optional = true } + async-trait.workspace = true clap = { version = "4", features = ["derive", "env", "unicode", "wrap_help"] } derive_builder = "0.20" diff --git a/crates/wallets/src/lib.rs b/crates/wallets/src/lib.rs index e7954fa2a86bc..e29e6484e2c15 100644 --- a/crates/wallets/src/lib.rs +++ b/crates/wallets/src/lib.rs @@ -5,6 +5,9 @@ #![cfg_attr(not(test), warn(unused_crate_dependencies))] #![cfg_attr(docsrs, feature(doc_cfg))] +#[macro_use] +extern crate foundry_common; + #[macro_use] extern crate tracing; diff --git a/crates/wallets/src/opts.rs b/crates/wallets/src/opts.rs index 0e53dfa9328a7..f93f47ccc18e3 100644 --- a/crates/wallets/src/opts.rs +++ b/crates/wallets/src/opts.rs @@ -9,8 +9,9 @@ use serde::Serialize; /// 2. Ledger /// 3. Trezor /// 4. Keystore (via file path) -/// 5. AWS KMS -/// 6. Google Cloud KMS +/// 5. Browser wallet +/// 6. AWS KMS +/// 7. Google Cloud KMS #[derive(Clone, Debug, Default, Serialize, Parser)] #[command(next_help_heading = "Wallet options", about = None, long_about = None)] pub struct WalletOpts { @@ -105,6 +106,15 @@ pub struct WalletOpts { requires = "browser" )] pub browser_port: u16, + + /// Whether to open the browser for wallet connection. + #[arg( + long, + help_heading = "Wallet options - browser", + default_value_t = true, + requires = "browser" + )] + pub browser_open: bool, } impl WalletOpts { @@ -134,6 +144,8 @@ impl WalletOpts { .parse() .map_err(|_| eyre::eyre!("GCP_KEY_VERSION could not be parsed into u64"))?; WalletSigner::from_gcp(project_id, location, keyring, key_name, key_version).await? + } else if self.browser { + WalletSigner::from_browser(self.browser_port, self.browser_open).await? } else if let Some(raw_wallet) = self.raw.signer()? { raw_wallet } else if let Some(path) = utils::maybe_get_keystore_path( @@ -239,6 +251,7 @@ mod tests { gcp: false, browser: false, browser_port: 9545, + browser_open: true, }; match wallet.signer().await { Ok(_) => { diff --git a/crates/wallets/src/signer.rs b/crates/wallets/src/signer.rs index 2a68a3ee39eed..efbc965c38bc6 100644 --- a/crates/wallets/src/signer.rs +++ b/crates/wallets/src/signer.rs @@ -56,9 +56,10 @@ impl WalletSigner { Ok(Self::Trezor(trezor)) } - pub async fn from_browser(port: u16) -> Result { - let browser_signer = - BrowserSigner::new(port).await.map_err(|e| WalletSignerError::Browser(e.into()))?; + pub async fn from_browser(port: u16, open_browser: bool) -> Result { + let browser_signer = BrowserSigner::new(port, open_browser) + .await + .map_err(|e| WalletSignerError::Browser(e.into()))?; Ok(Self::Browser(browser_signer)) } diff --git a/crates/wallets/src/wallet_browser/app/assets/index.html b/crates/wallets/src/wallet_browser/app/assets/index.html new file mode 100644 index 0000000000000..d977fe29ed04a --- /dev/null +++ b/crates/wallets/src/wallet_browser/app/assets/index.html @@ -0,0 +1,12 @@ + + + + + + Foundry Browser Wallet + + + + Hello, Foundry Browser Wallet! + + diff --git a/crates/wallets/src/wallet_browser/app/mod.rs b/crates/wallets/src/wallet_browser/app/mod.rs new file mode 100644 index 0000000000000..9724fcb009ffd --- /dev/null +++ b/crates/wallets/src/wallet_browser/app/mod.rs @@ -0,0 +1,3 @@ +pub mod contents { + pub const INDEX_HTML: &str = include_str!("assets/index.html"); +} diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs new file mode 100644 index 0000000000000..025d87165b976 --- /dev/null +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -0,0 +1,12 @@ +use axum::{http::HeaderMap, response::Html}; + +use crate::wallet_browser::app::contents; + +pub async fn serve_index() -> impl axum::response::IntoResponse { + let mut headers = HeaderMap::new(); + headers.insert( + axum::http::header::CONTENT_TYPE, + axum::http::HeaderValue::from_static("text/html; charset=utf-8"), + ); + (headers, Html(contents::INDEX_HTML)) +} diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index 14fe98597fd24..6b4c463dcc0a7 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -1,2 +1,9 @@ pub mod error; +pub mod server; pub mod signer; +pub mod state; + +mod app; +mod handlers; +mod queue; +mod types; diff --git a/crates/wallets/src/wallet_browser/queue.rs b/crates/wallets/src/wallet_browser/queue.rs new file mode 100644 index 0000000000000..b581bd4d43525 --- /dev/null +++ b/crates/wallets/src/wallet_browser/queue.rs @@ -0,0 +1,60 @@ +use std::collections::{HashMap, VecDeque}; + +use crate::wallet_browser::types::BrowserTransaction; + +#[derive(Debug)] +pub struct RequestQueue { + /// Pending requests from CLI to browser + requests: VecDeque, + /// Responses from browser indexed by request ID + responses: HashMap, +} + +impl Default for RequestQueue { + fn default() -> Self { + Self::new() + } +} + +impl RequestQueue { + pub fn new() -> Self { + Self { requests: VecDeque::new(), responses: HashMap::new() } + } + + pub fn add_request(&mut self, request: Req) { + self.requests.push_back(request); + } + + pub fn remove_request(&mut self, id: &str) -> Option + where + Req: HasId, + { + if let Some(pos) = self.requests.iter().position(|r| r.id() == id) { + self.requests.remove(pos) + } else { + None + } + } + + pub fn add_response(&mut self, id: String, response: Res) { + self.responses.insert(id, response); + } + + pub fn get_response(&mut self, id: &str) -> Option { + self.responses.remove(id) + } + + pub fn get_pending(&self) -> Option<&Req> { + self.requests.front() + } +} + +pub trait HasId { + fn id(&self) -> &str; +} + +impl HasId for BrowserTransaction { + fn id(&self) -> &str { + &self.id + } +} diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 8b137891791fe..f53fbe5dd4b15 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -1 +1,141 @@ +use std::{ + net::SocketAddr, + sync::Arc, + time::{Duration, Instant}, +}; +use alloy_primitives::TxHash; +use axum::{Router, routing::get}; +use tokio::{ + net::TcpListener, + sync::{Mutex, oneshot}, +}; + +use crate::wallet_browser::{ + error::BrowserWalletError, + handlers, + state::BrowserWalletState, + types::{BrowserTransaction, WalletConnection}, +}; + +/// Browser wallet HTTP server +#[derive(Debug, Clone)] +pub struct BrowserWalletServer { + port: u16, + state: Arc, + shutdown_tx: Option>>>>, + open_browser: bool, +} + +impl BrowserWalletServer { + /// Create a new browser wallet server + pub fn new(port: u16, open_browser: bool) -> Self { + Self { port, state: Arc::new(BrowserWalletState::new()), shutdown_tx: None, open_browser } + } + + /// Start the server and open browser + pub async fn start(&mut self) -> Result<(), BrowserWalletError> { + let router = Router::new() + .route("/", get(handlers::serve_index)) + .with_state(Arc::clone(&self.state)); + + let addr = SocketAddr::from(([127, 0, 0, 1], self.port)); + let listener = TcpListener::bind(addr) + .await + .map_err(|e| BrowserWalletError::ServerError(e.to_string()))?; + self.port = listener.local_addr().unwrap().port(); + + let (shutdown_tx, shutdown_rx) = oneshot::channel(); + self.shutdown_tx = Some(Arc::new(Mutex::new(Some(shutdown_tx)))); + + tokio::spawn(async move { + let server = axum::serve(listener, router); + let _ = server + .with_graceful_shutdown(async { + let _ = shutdown_rx.await; + }) + .await; + }); + + if self.open_browser { + webbrowser::open(&format!("http://localhost:{}", self.port)).map_err(|e| { + BrowserWalletError::ServerError(format!("Failed to open browser: {e}")) + })?; + } + + Ok(()) + } + + /// Stop the server + pub async fn stop(&mut self) -> Result<(), BrowserWalletError> { + if let Some(shutdown_arc) = self.shutdown_tx.take() + && let Some(tx) = shutdown_arc.lock().await.take() + { + let _ = tx.send(()); + } + Ok(()) + } + + /// Get the server port + pub fn port(&self) -> u16 { + self.port + } + + /// Check if a wallet is connected + pub fn is_connected(&self) -> bool { + self.state.get_connected_address().is_some() + } + + /// Get current wallet connection + pub fn get_connection(&self) -> Option { + self.state.get_connected_address().map(|address| { + let chain_id = self.state.get_connected_chain_id().unwrap_or(31337); + + WalletConnection { + address: address.parse().unwrap_or_default(), + chain_id, + wallet_name: None, + } + }) + } + + /// Request a transaction to be signed and sent via the browser wallet. + pub async fn request_transaction( + &self, + request: BrowserTransaction, + ) -> Result { + if !self.is_connected() { + return Err(BrowserWalletError::NotConnected); + } + + let tx_id = request.id.clone(); + + let timeout = Duration::from_secs(300); + let start = Instant::now(); + + loop { + if let Some(response) = self.state.get_transaction_response(&tx_id) { + if let Some(hash) = response.hash { + return Ok(hash); + } else if let Some(error) = response.error { + return Err(BrowserWalletError::Rejected { + operation: "Transaction", + reason: error, + }); + } else { + return Err(BrowserWalletError::ServerError( + "Transaction response missing both hash and error".to_string(), + )); + } + } + + if start.elapsed() > timeout { + // Remove from queue + self.state.remove_transaction_request(&tx_id); + return Err(BrowserWalletError::Timeout { operation: "Transaction" }); + } + + tokio::time::sleep(Duration::from_millis(100)).await; + } + } +} diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs index 30d2f759b740e..67410db95cb32 100644 --- a/crates/wallets/src/wallet_browser/signer.rs +++ b/crates/wallets/src/wallet_browser/signer.rs @@ -1,48 +1,78 @@ +use std::{ + sync::Arc, + time::{Duration, Instant}, +}; + use alloy_consensus::SignableTransaction; use alloy_network::TxSigner; -use alloy_primitives::{Address, B256, ChainId, address}; -use alloy_signer::{Result, Signature, Signer, SignerSync}; +use alloy_primitives::{Address, B256, ChainId}; +use alloy_rpc_types::TransactionRequest; +use alloy_signer::{Result, Signature, Signer}; use async_trait::async_trait; +use tokio::sync::Mutex; +use uuid::Uuid; + +use crate::wallet_browser::{server::BrowserWalletServer, types::BrowserTransaction}; #[derive(Clone, Debug)] pub struct BrowserSigner { + server: Arc>, address: Address, chain_id: ChainId, } impl BrowserSigner { - pub async fn new(port: u16) -> Result { - return Ok(Self { - // TODO: Fetch address and chain ID from the browser wallet via the server. - address: address!("0x0000000000000000000000000000000000000000"), - chain_id: ChainId::default(), - }); - } -} + pub async fn new(port: u16, open_browser: bool) -> Result { + let mut server = BrowserWalletServer::new(port, open_browser); -impl SignerSync for BrowserSigner { - fn sign_hash_sync(&self, _hash: &B256) -> Result { - Err(alloy_signer::Error::other( - "Browser wallets cannot sign raw hashes. Use sign_message or send_transaction instead.", - )) - } + server.start().await.map_err(alloy_signer::Error::other)?; - fn sign_message_sync(&self, _message: &[u8]) -> Result { - Err(alloy_signer::Error::other( - "Browser signer requires async operations. Use sign_message instead.", - )) + let _ = sh_println!("Opening browser for wallet connection..."); + let _ = sh_println!("Waiting for wallet connection..."); + + let start = Instant::now(); + let timeout = Duration::from_secs(300); + + loop { + if let Some(connection) = server.get_connection() { + let _ = sh_println!("Wallet connected: {}", connection.address); + let _ = sh_println!("Chain ID: {}", connection.chain_id); + + return Ok(Self { + server: Arc::new(Mutex::new(server)), + address: connection.address, + chain_id: connection.chain_id, + }); + } + + if start.elapsed() > timeout { + return Err(alloy_signer::Error::other("Wallet connection timeout")); + } + + tokio::time::sleep(Duration::from_secs(1)).await; + } } - fn chain_id_sync(&self) -> Option { - Some(self.chain_id) + /// Send a transaction through the browser wallet. + pub async fn send_transaction_via_browser( + &self, + tx_request: TransactionRequest, + ) -> Result { + let request = BrowserTransaction { id: Uuid::new_v4().to_string(), request: tx_request }; + + let server = self.server.lock().await; + let tx_hash = + server.request_transaction(request).await.map_err(alloy_signer::Error::other)?; + + tokio::time::sleep(std::time::Duration::from_millis(500)).await; + + Ok(tx_hash) } } #[async_trait] impl Signer for BrowserSigner { async fn sign_hash(&self, _hash: &B256) -> Result { - // Browser wallets handle transaction signing differently - // They sign and send in one step via eth_sendTransaction Err(alloy_signer::Error::other( "Browser wallets sign and send transactions in one step. Use eth_sendTransaction instead.", )) @@ -73,7 +103,17 @@ impl TxSigner for BrowserSigner { &self, _tx: &mut dyn SignableTransaction, ) -> Result { - // Not used - browser wallets sign and send in one step Err(alloy_signer::Error::other("Use send_transaction_via_browser for browser wallets")) } } + +impl Drop for BrowserSigner { + fn drop(&mut self) { + let server = self.server.clone(); + + tokio::spawn(async move { + let mut server = server.lock().await; + let _ = server.stop().await; + }); + } +} diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs new file mode 100644 index 0000000000000..1bfb0fce69fba --- /dev/null +++ b/crates/wallets/src/wallet_browser/state.rs @@ -0,0 +1,96 @@ +use std::sync::Arc; + +use parking_lot::Mutex; + +use crate::wallet_browser::{ + queue::RequestQueue, + types::{BrowserTransaction, TransactionResponse}, +}; + +/// Current connection information +#[derive(Debug, Clone, Default)] +pub struct ConnectionInfo { + pub address: Option, + pub chain_id: Option, +} + +#[derive(Debug, Clone)] +pub struct BrowserWalletState { + /// Current information about the wallet connection + pub connection: Arc>, + /// Request/response queue for transactions + pub transactions: Arc>>, +} + +impl Default for BrowserWalletState { + fn default() -> Self { + Self::new() + } +} + +impl BrowserWalletState { + pub fn new() -> Self { + Self { + connection: Arc::new(Mutex::new(ConnectionInfo::default())), + transactions: Arc::new(Mutex::new(RequestQueue::new())), + } + } + + /// Check if wallet is connected + pub fn is_connected(&self) -> bool { + self.connection.lock().address.is_some() + } + + /// Set connected address. + pub fn set_connected_address(&self, address: Option) { + let mut connection = self.connection.lock(); + connection.address = address; + + // If disconnecting, clear chain ID as well + if connection.address.is_none() { + connection.chain_id = None; + } + } + + /// Set connected chain ID. + pub fn set_connected_chain_id(&self, chain_id: Option) { + self.connection.lock().chain_id = chain_id; + } + + /// Get connected address. + pub fn get_connected_address(&self) -> Option { + self.connection.lock().address.clone() + } + + /// Get connected chain ID. + pub fn get_connected_chain_id(&self) -> Option { + self.connection.lock().chain_id + } + + /// Add a transaction request. + pub fn add_transaction_request(&self, request: BrowserTransaction) { + self.transactions.lock().add_request(request); + } + + /// Get pending transaction. + pub fn get_pending_transaction(&self) -> Option { + self.transactions.lock().get_pending().cloned() + } + + /// Remove transaction request. + pub fn remove_transaction_request(&self, id: &str) { + self.transactions.lock().remove_request(id); + } + + /// Add transaction response. + pub fn add_transaction_response(&self, response: TransactionResponse) { + let id = response.id.clone(); + self.transactions.lock().add_response(id.clone(), response); + self.remove_transaction_request(&id); + } + + /// Get transaction response. + pub fn get_transaction_response(&self, id: &str) -> Option { + self.transactions.lock().get_response(id) + } +} diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs new file mode 100644 index 0000000000000..0ea0500d5e5e2 --- /dev/null +++ b/crates/wallets/src/wallet_browser/types.rs @@ -0,0 +1,30 @@ +use alloy_primitives::{Address, ChainId, TxHash}; +use alloy_rpc_types::TransactionRequest; +use serde::{Deserialize, Serialize}; + +/// Wallet connection information +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct WalletConnection { + pub address: Address, + pub chain_id: ChainId, + #[serde(skip_serializing_if = "Option::is_none")] + pub wallet_name: Option, +} + +/// Browser-specific transaction wrapper +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BrowserTransaction { + /// Unique ID for tracking in the browser + pub id: String, + /// Standard Alloy transaction request + #[serde(flatten)] + pub request: TransactionRequest, +} + +/// Transaction response from the browser +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct TransactionResponse { + pub id: String, + pub hash: Option, + pub error: Option, +} From 99d73650610dcb45be3ecb2b6cfd47c86e7ac5fa Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Thu, 23 Oct 2025 16:55:04 +0200 Subject: [PATCH 03/42] nits --- crates/wallets/src/wallet_browser/app/assets/index.html | 1 - crates/wallets/src/wallet_browser/app/mod.rs | 2 +- crates/wallets/src/wallet_browser/handlers.rs | 2 +- crates/wallets/src/wallet_browser/queue.rs | 4 ++-- crates/wallets/src/wallet_browser/server.rs | 7 +------ crates/wallets/src/wallet_browser/state.rs | 4 ++-- crates/wallets/src/wallet_browser/types.rs | 6 +++--- 7 files changed, 10 insertions(+), 16 deletions(-) diff --git a/crates/wallets/src/wallet_browser/app/assets/index.html b/crates/wallets/src/wallet_browser/app/assets/index.html index d977fe29ed04a..111d80dfd508d 100644 --- a/crates/wallets/src/wallet_browser/app/assets/index.html +++ b/crates/wallets/src/wallet_browser/app/assets/index.html @@ -4,7 +4,6 @@ Foundry Browser Wallet - Hello, Foundry Browser Wallet! diff --git a/crates/wallets/src/wallet_browser/app/mod.rs b/crates/wallets/src/wallet_browser/app/mod.rs index 9724fcb009ffd..b4cfc2ce40376 100644 --- a/crates/wallets/src/wallet_browser/app/mod.rs +++ b/crates/wallets/src/wallet_browser/app/mod.rs @@ -1,3 +1,3 @@ -pub mod contents { +pub(crate) mod contents { pub const INDEX_HTML: &str = include_str!("assets/index.html"); } diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index 025d87165b976..b03256ac82769 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -2,7 +2,7 @@ use axum::{http::HeaderMap, response::Html}; use crate::wallet_browser::app::contents; -pub async fn serve_index() -> impl axum::response::IntoResponse { +pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { let mut headers = HeaderMap::new(); headers.insert( axum::http::header::CONTENT_TYPE, diff --git a/crates/wallets/src/wallet_browser/queue.rs b/crates/wallets/src/wallet_browser/queue.rs index b581bd4d43525..f6b1c91830390 100644 --- a/crates/wallets/src/wallet_browser/queue.rs +++ b/crates/wallets/src/wallet_browser/queue.rs @@ -3,7 +3,7 @@ use std::collections::{HashMap, VecDeque}; use crate::wallet_browser::types::BrowserTransaction; #[derive(Debug)] -pub struct RequestQueue { +pub(crate) struct RequestQueue { /// Pending requests from CLI to browser requests: VecDeque, /// Responses from browser indexed by request ID @@ -49,7 +49,7 @@ impl RequestQueue { } } -pub trait HasId { +pub(crate) trait HasId { fn id(&self) -> &str; } diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index f53fbe5dd4b15..d800eb9ea5589 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -20,7 +20,7 @@ use crate::wallet_browser::{ /// Browser wallet HTTP server #[derive(Debug, Clone)] -pub struct BrowserWalletServer { +pub(crate) struct BrowserWalletServer { port: u16, state: Arc, shutdown_tx: Option>>>>, @@ -76,11 +76,6 @@ impl BrowserWalletServer { Ok(()) } - /// Get the server port - pub fn port(&self) -> u16 { - self.port - } - /// Check if a wallet is connected pub fn is_connected(&self) -> bool { self.state.get_connected_address().is_some() diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index 1bfb0fce69fba..a06489c72b40a 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -9,13 +9,13 @@ use crate::wallet_browser::{ /// Current connection information #[derive(Debug, Clone, Default)] -pub struct ConnectionInfo { +pub(crate) struct ConnectionInfo { pub address: Option, pub chain_id: Option, } #[derive(Debug, Clone)] -pub struct BrowserWalletState { +pub(crate) struct BrowserWalletState { /// Current information about the wallet connection pub connection: Arc>, /// Request/response queue for transactions diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index 0ea0500d5e5e2..56839e94077ae 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -4,7 +4,7 @@ use serde::{Deserialize, Serialize}; /// Wallet connection information #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct WalletConnection { +pub(crate) struct WalletConnection { pub address: Address, pub chain_id: ChainId, #[serde(skip_serializing_if = "Option::is_none")] @@ -13,7 +13,7 @@ pub struct WalletConnection { /// Browser-specific transaction wrapper #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct BrowserTransaction { +pub(crate) struct BrowserTransaction { /// Unique ID for tracking in the browser pub id: String, /// Standard Alloy transaction request @@ -23,7 +23,7 @@ pub struct BrowserTransaction { /// Transaction response from the browser #[derive(Debug, Clone, Serialize, Deserialize)] -pub struct TransactionResponse { +pub(crate) struct TransactionResponse { pub id: String, pub hash: Option, pub error: Option, From 3e19baa282e886cd34e52c400b07f4addce0e42c Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 24 Oct 2025 15:21:46 +0200 Subject: [PATCH 04/42] clean up api --- Cargo.lock | 1 + crates/wallets/Cargo.toml | 1 + crates/wallets/src/wallet_browser/handlers.rs | 45 ++++++++++++++++++- crates/wallets/src/wallet_browser/server.rs | 31 +++++++------ crates/wallets/src/wallet_browser/state.rs | 13 +++--- crates/wallets/src/wallet_browser/types.rs | 13 +++--- 6 files changed, 76 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 34b4d2a456939..7bc435155a9a8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5009,6 +5009,7 @@ dependencies = [ "parking_lot", "rpassword", "serde", + "serde_json", "thiserror 2.0.17", "tokio", "tracing", diff --git a/crates/wallets/Cargo.toml b/crates/wallets/Cargo.toml index 1ac930926f52d..d11d8c5eebfde 100644 --- a/crates/wallets/Cargo.toml +++ b/crates/wallets/Cargo.toml @@ -31,6 +31,7 @@ axum.workspace = true foundry-common.workspace = true tokio = { workspace = true, features = ["macros"] } parking_lot.workspace = true +serde_json.workspace = true uuid.workspace = true webbrowser = "1.0.6" diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index b03256ac82769..08333537907ab 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -1,6 +1,13 @@ -use axum::{http::HeaderMap, response::Html}; +use std::sync::Arc; -use crate::wallet_browser::app::contents; +use axum::{Json, extract::State, http::HeaderMap, response::Html}; +use serde_json::{Value, json}; + +use crate::wallet_browser::{ + app::contents, + state::BrowserWalletState, + types::{AccountUpdate, BrowserTransaction, TransactionResponse}, +}; pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { let mut headers = HeaderMap::new(); @@ -10,3 +17,37 @@ pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { ); (headers, Html(contents::INDEX_HTML)) } + +pub(crate) async fn get_pending_transaction( + State(state): State>, +) -> Json> { + Json(state.get_pending_transaction()) +} + +pub(crate) async fn post_transaction_response( + State(state): State>, + Json(body): Json, +) -> Json { + Json(json!({ "status": "ok" })) +} + +pub(crate) async fn post_account_update( + State(state): State>, + Json(body): Json, +) -> Json { + match body.address { + Some(addr) => { + state.set_connected_address(Some(addr)); + + if let Some(chain_id) = body.chain_id { + state.set_connected_chain_id(Some(chain_id)); + } + } + None => { + state.set_connected_address(None); + state.set_connected_chain_id(None); + } + } + + Json(json!({ "status": "ok" })) +} diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index d800eb9ea5589..941290bf8ef3b 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -5,7 +5,10 @@ use std::{ }; use alloy_primitives::TxHash; -use axum::{Router, routing::get}; +use axum::{ + Router, + routing::{get, post}, +}; use tokio::{ net::TcpListener, sync::{Mutex, oneshot}, @@ -18,7 +21,7 @@ use crate::wallet_browser::{ types::{BrowserTransaction, WalletConnection}, }; -/// Browser wallet HTTP server +/// Browser wallet server. #[derive(Debug, Clone)] pub(crate) struct BrowserWalletServer { port: u16, @@ -28,15 +31,20 @@ pub(crate) struct BrowserWalletServer { } impl BrowserWalletServer { - /// Create a new browser wallet server + /// Create a new browser wallet server. pub fn new(port: u16, open_browser: bool) -> Self { Self { port, state: Arc::new(BrowserWalletState::new()), shutdown_tx: None, open_browser } } - /// Start the server and open browser + /// Start the server and open browser. pub async fn start(&mut self) -> Result<(), BrowserWalletError> { let router = Router::new() + // Serve browser wallet application .route("/", get(handlers::serve_index)) + // API endpoints + .route("/api/transaction/pending", get(handlers::get_pending_transaction)) + .route("/api/transaction/response", post(handlers::post_transaction_response)) + .route("/api/account", post(handlers::post_account_update)) .with_state(Arc::clone(&self.state)); let addr = SocketAddr::from(([127, 0, 0, 1], self.port)); @@ -66,7 +74,7 @@ impl BrowserWalletServer { Ok(()) } - /// Stop the server + /// Stop the server. pub async fn stop(&mut self) -> Result<(), BrowserWalletError> { if let Some(shutdown_arc) = self.shutdown_tx.take() && let Some(tx) = shutdown_arc.lock().await.take() @@ -76,21 +84,17 @@ impl BrowserWalletServer { Ok(()) } - /// Check if a wallet is connected + /// Check if a wallet is connected. pub fn is_connected(&self) -> bool { self.state.get_connected_address().is_some() } - /// Get current wallet connection + /// Get current wallet connection. pub fn get_connection(&self) -> Option { self.state.get_connected_address().map(|address| { let chain_id = self.state.get_connected_chain_id().unwrap_or(31337); - WalletConnection { - address: address.parse().unwrap_or_default(), - chain_id, - wallet_name: None, - } + WalletConnection { address, chain_id } }) } @@ -105,6 +109,8 @@ impl BrowserWalletServer { let tx_id = request.id.clone(); + self.state.add_transaction_request(request); + let timeout = Duration::from_secs(300); let start = Instant::now(); @@ -125,7 +131,6 @@ impl BrowserWalletServer { } if start.elapsed() > timeout { - // Remove from queue self.state.remove_transaction_request(&tx_id); return Err(BrowserWalletError::Timeout { operation: "Transaction" }); } diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index a06489c72b40a..f7929e39e3b21 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -1,5 +1,6 @@ use std::sync::Arc; +use alloy_primitives::{Address, ChainId}; use parking_lot::Mutex; use crate::wallet_browser::{ @@ -10,8 +11,8 @@ use crate::wallet_browser::{ /// Current connection information #[derive(Debug, Clone, Default)] pub(crate) struct ConnectionInfo { - pub address: Option, - pub chain_id: Option, + pub address: Option
, + pub chain_id: Option, } #[derive(Debug, Clone)] @@ -42,7 +43,7 @@ impl BrowserWalletState { } /// Set connected address. - pub fn set_connected_address(&self, address: Option) { + pub fn set_connected_address(&self, address: Option
) { let mut connection = self.connection.lock(); connection.address = address; @@ -53,17 +54,17 @@ impl BrowserWalletState { } /// Set connected chain ID. - pub fn set_connected_chain_id(&self, chain_id: Option) { + pub fn set_connected_chain_id(&self, chain_id: Option) { self.connection.lock().chain_id = chain_id; } /// Get connected address. - pub fn get_connected_address(&self) -> Option { + pub fn get_connected_address(&self) -> Option
{ self.connection.lock().address.clone() } /// Get connected chain ID. - pub fn get_connected_chain_id(&self) -> Option { + pub fn get_connected_chain_id(&self) -> Option { self.connection.lock().chain_id } diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index 56839e94077ae..2875760f203c1 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -2,29 +2,28 @@ use alloy_primitives::{Address, ChainId, TxHash}; use alloy_rpc_types::TransactionRequest; use serde::{Deserialize, Serialize}; -/// Wallet connection information #[derive(Debug, Clone, Serialize, Deserialize)] pub(crate) struct WalletConnection { pub address: Address, pub chain_id: ChainId, - #[serde(skip_serializing_if = "Option::is_none")] - pub wallet_name: Option, } -/// Browser-specific transaction wrapper #[derive(Debug, Clone, Serialize, Deserialize)] pub(crate) struct BrowserTransaction { - /// Unique ID for tracking in the browser pub id: String, - /// Standard Alloy transaction request #[serde(flatten)] pub request: TransactionRequest, } -/// Transaction response from the browser #[derive(Debug, Clone, Serialize, Deserialize)] pub(crate) struct TransactionResponse { pub id: String, pub hash: Option, pub error: Option, } + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub(crate) struct AccountUpdate { + pub address: Option
, + pub chain_id: Option, +} From e075005327607cdeb543f478d4633ccc4fb9a53a Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 24 Oct 2025 15:49:09 +0200 Subject: [PATCH 05/42] create basic test suite --- Cargo.lock | 115 +++++++++++++++++++- crates/wallets/Cargo.toml | 2 +- crates/wallets/src/wallet_browser/server.rs | 80 ++++++++++++++ crates/wallets/src/wallet_browser/state.rs | 1 - 4 files changed, 195 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7bc435155a9a8..a1e0d504f02c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4088,6 +4088,21 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "forge" version = "1.4.3" @@ -5007,6 +5022,7 @@ dependencies = [ "foundry-common", "foundry-config", "parking_lot", + "reqwest", "rpassword", "serde", "serde_json", @@ -5559,6 +5575,22 @@ dependencies = [ "tower-service", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.17" @@ -6591,6 +6623,23 @@ dependencies = [ "syn 2.0.107", ] +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + [[package]] name = "ndk-context" version = "0.1.1" @@ -7045,12 +7094,50 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "openssl" +version = "0.10.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.107", +] + [[package]] name = "openssl-probe" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -8113,11 +8200,13 @@ dependencies = [ "http-body-util", "hyper", "hyper-rustls", + "hyper-tls", "hyper-util", "js-sys", "log", "mime", "mime_guess", + "native-tls", "percent-encoding", "pin-project-lite", "quinn", @@ -8129,6 +8218,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper", "tokio", + "tokio-native-tls", "tokio-rustls", "tokio-util", "tower", @@ -8596,7 +8686,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 3.5.1", ] [[package]] @@ -8839,6 +8929,19 @@ dependencies = [ "zeroize", ] +[[package]] +name = "security-framework" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" +dependencies = [ + "bitflags 2.10.0", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + [[package]] name = "security-framework" version = "3.5.1" @@ -10034,6 +10137,16 @@ dependencies = [ "syn 2.0.107", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.26.4" diff --git a/crates/wallets/Cargo.toml b/crates/wallets/Cargo.toml index d11d8c5eebfde..393d863131476 100644 --- a/crates/wallets/Cargo.toml +++ b/crates/wallets/Cargo.toml @@ -42,7 +42,6 @@ aws-config = { version = "1", default-features = true, optional = true } # gcp-kms alloy-signer-gcp = { workspace = true, features = ["eip712"], optional = true } - async-trait.workspace = true clap = { version = "4", features = ["derive", "env", "unicode", "wrap_help"] } derive_builder = "0.20" @@ -55,6 +54,7 @@ eth-keystore = "0.5.0" [dev-dependencies] tokio = { workspace = true, features = ["macros"] } +reqwest = { version = "0.12", features = ["json"] } [features] aws-kms = ["dep:alloy-signer-aws", "dep:aws-config"] diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 941290bf8ef3b..dc8f61a5ac2f1 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -84,6 +84,11 @@ impl BrowserWalletServer { Ok(()) } + /// Get the server port. + pub fn port(&self) -> u16 { + self.port + } + /// Check if a wallet is connected. pub fn is_connected(&self) -> bool { self.state.get_connected_address().is_some() @@ -139,3 +144,78 @@ impl BrowserWalletServer { } } } + +#[cfg(test)] +mod tests { + use crate::wallet_browser::types::AccountUpdate; + + use super::*; + + use alloy_primitives::{Address, address}; + + const ALICE: Address = address!("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); + const BOB: Address = address!("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"); + + #[tokio::test] + async fn test_connect_disconnect_wallet() { + let mut server = BrowserWalletServer::new(0, false); + + // check initial disconnected state + assert!(!server.is_connected()); + + // start server + server.start().await.unwrap(); + + // check pending transaction (should be none) + let pending_tx_url = format!("http://localhost:{}/api/transaction/pending", server.port()); + let resp = reqwest::get(&pending_tx_url).await; + assert!(resp.is_ok()); + let resp_json: Option = resp.unwrap().json().await.unwrap(); + assert!(resp_json.is_none()); + + // connect Alice's wallet by posting account update + let account_update_url = format!("http://localhost:{}/api/account", server.port()); + let resp = reqwest::Client::new() + .post(&account_update_url) + .json(&AccountUpdate { address: Some(ALICE), chain_id: Some(1) }) + .send() + .await; + assert!(resp.is_ok()); + + // check connection state + let connection = server.get_connection(); + assert!(connection.is_some()); + let connection = connection.unwrap(); + assert_eq!(connection.address, ALICE); + assert_eq!(connection.chain_id, 1); + + // disconnect wallet + let resp = reqwest::Client::new() + .post(&account_update_url) + .json(&AccountUpdate { address: None, chain_id: None }) + .send() + .await; + assert!(resp.is_ok()); + + // check disconnected state + assert!(!server.is_connected()); + + // connect Bob's wallet by posting account update + let resp = reqwest::Client::new() + .post(&account_update_url) + .json(&AccountUpdate { address: Some(BOB), chain_id: Some(42) }) + .send() + .await; + assert!(resp.is_ok()); + + // check connection state + let connection = server.get_connection(); + assert!(connection.is_some()); + let connection = connection.unwrap(); + assert_eq!(connection.address, BOB); + assert_eq!(connection.chain_id, 42); + + // stop server + server.stop().await.unwrap(); + } +} diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index f7929e39e3b21..f511001458aaf 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -47,7 +47,6 @@ impl BrowserWalletState { let mut connection = self.connection.lock(); connection.address = address; - // If disconnecting, clear chain ID as well if connection.address.is_none() { connection.chain_id = None; } From 6a448e4ff4ac7b545ddb91eca0bc08f4ba542489 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 24 Oct 2025 16:40:31 +0200 Subject: [PATCH 06/42] make timeout configurable, improve types, extend tests --- crates/wallets/src/signer.rs | 4 +- crates/wallets/src/wallet_browser/queue.rs | 14 +-- crates/wallets/src/wallet_browser/server.rs | 105 +++++++++++++++----- crates/wallets/src/wallet_browser/signer.rs | 9 +- crates/wallets/src/wallet_browser/state.rs | 9 +- crates/wallets/src/wallet_browser/types.rs | 5 +- 6 files changed, 104 insertions(+), 42 deletions(-) diff --git a/crates/wallets/src/signer.rs b/crates/wallets/src/signer.rs index efbc965c38bc6..39cf3b75a98e2 100644 --- a/crates/wallets/src/signer.rs +++ b/crates/wallets/src/signer.rs @@ -9,7 +9,7 @@ use alloy_signer_local::{MnemonicBuilder, PrivateKeySigner, coins_bip39::English use alloy_signer_trezor::{HDPath as TrezorHDPath, TrezorSigner}; use alloy_sol_types::{Eip712Domain, SolStruct}; use async_trait::async_trait; -use std::{collections::HashSet, path::PathBuf}; +use std::{collections::HashSet, path::PathBuf, time::Duration}; use tracing::warn; #[cfg(feature = "aws-kms")] @@ -57,7 +57,7 @@ impl WalletSigner { } pub async fn from_browser(port: u16, open_browser: bool) -> Result { - let browser_signer = BrowserSigner::new(port, open_browser) + let browser_signer = BrowserSigner::new(port, open_browser, Duration::from_secs(300)) .await .map_err(|e| WalletSignerError::Browser(e.into()))?; Ok(Self::Browser(browser_signer)) diff --git a/crates/wallets/src/wallet_browser/queue.rs b/crates/wallets/src/wallet_browser/queue.rs index f6b1c91830390..7a5e524ebdd5b 100644 --- a/crates/wallets/src/wallet_browser/queue.rs +++ b/crates/wallets/src/wallet_browser/queue.rs @@ -1,5 +1,7 @@ use std::collections::{HashMap, VecDeque}; +use uuid::Uuid; + use crate::wallet_browser::types::BrowserTransaction; #[derive(Debug)] @@ -7,7 +9,7 @@ pub(crate) struct RequestQueue { /// Pending requests from CLI to browser requests: VecDeque, /// Responses from browser indexed by request ID - responses: HashMap, + responses: HashMap, } impl Default for RequestQueue { @@ -25,7 +27,7 @@ impl RequestQueue { self.requests.push_back(request); } - pub fn remove_request(&mut self, id: &str) -> Option + pub fn remove_request(&mut self, id: &Uuid) -> Option where Req: HasId, { @@ -36,11 +38,11 @@ impl RequestQueue { } } - pub fn add_response(&mut self, id: String, response: Res) { + pub fn add_response(&mut self, id: Uuid, response: Res) { self.responses.insert(id, response); } - pub fn get_response(&mut self, id: &str) -> Option { + pub fn get_response(&mut self, id: &Uuid) -> Option { self.responses.remove(id) } @@ -50,11 +52,11 @@ impl RequestQueue { } pub(crate) trait HasId { - fn id(&self) -> &str; + fn id(&self) -> &Uuid; } impl HasId for BrowserTransaction { - fn id(&self) -> &str { + fn id(&self) -> &Uuid { &self.id } } diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index dc8f61a5ac2f1..0f89cf633f1c9 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -28,12 +28,19 @@ pub(crate) struct BrowserWalletServer { state: Arc, shutdown_tx: Option>>>>, open_browser: bool, + timeout: Duration, } impl BrowserWalletServer { /// Create a new browser wallet server. - pub fn new(port: u16, open_browser: bool) -> Self { - Self { port, state: Arc::new(BrowserWalletState::new()), shutdown_tx: None, open_browser } + pub fn new(port: u16, open_browser: bool, timeout: Duration) -> Self { + Self { + port, + state: Arc::new(BrowserWalletState::new()), + shutdown_tx: None, + open_browser, + timeout, + } } /// Start the server and open browser. @@ -112,11 +119,10 @@ impl BrowserWalletServer { return Err(BrowserWalletError::NotConnected); } - let tx_id = request.id.clone(); + let tx_id = request.id; self.state.add_transaction_request(request); - let timeout = Duration::from_secs(300); let start = Instant::now(); loop { @@ -135,7 +141,7 @@ impl BrowserWalletServer { } } - if start.elapsed() > timeout { + if start.elapsed() > self.timeout { self.state.remove_transaction_request(&tx_id); return Err(BrowserWalletError::Timeout { operation: "Transaction" }); } @@ -151,71 +157,124 @@ mod tests { use super::*; - use alloy_primitives::{Address, address}; + use alloy_primitives::{Address, TxKind, U256, address}; + use alloy_rpc_types::TransactionRequest; + use uuid::Uuid; const ALICE: Address = address!("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); const BOB: Address = address!("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"); #[tokio::test] async fn test_connect_disconnect_wallet() { - let mut server = BrowserWalletServer::new(0, false); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); - // check initial disconnected state + // Check initial disconnected state assert!(!server.is_connected()); - // start server + // Start server server.start().await.unwrap(); - // check pending transaction (should be none) - let pending_tx_url = format!("http://localhost:{}/api/transaction/pending", server.port()); - let resp = reqwest::get(&pending_tx_url).await; + // Check pending transaction + let resp = + reqwest::get(&format!("http://localhost:{}/api/transaction/pending", server.port())) + .await; assert!(resp.is_ok()); let resp_json: Option = resp.unwrap().json().await.unwrap(); assert!(resp_json.is_none()); - // connect Alice's wallet by posting account update - let account_update_url = format!("http://localhost:{}/api/account", server.port()); + // Connect Alice's wallet let resp = reqwest::Client::new() - .post(&account_update_url) + .post(format!("http://localhost:{}/api/account", server.port())) .json(&AccountUpdate { address: Some(ALICE), chain_id: Some(1) }) .send() .await; assert!(resp.is_ok()); - // check connection state + // Check connection state let connection = server.get_connection(); assert!(connection.is_some()); let connection = connection.unwrap(); assert_eq!(connection.address, ALICE); assert_eq!(connection.chain_id, 1); - // disconnect wallet + // Disconnect wallet let resp = reqwest::Client::new() - .post(&account_update_url) + .post(format!("http://localhost:{}/api/account", server.port())) .json(&AccountUpdate { address: None, chain_id: None }) .send() .await; assert!(resp.is_ok()); - // check disconnected state + // Check disconnected state assert!(!server.is_connected()); - // connect Bob's wallet by posting account update + // Connect Bob's wallet let resp = reqwest::Client::new() - .post(&account_update_url) + .post(format!("http://localhost:{}/api/account", server.port())) .json(&AccountUpdate { address: Some(BOB), chain_id: Some(42) }) .send() .await; assert!(resp.is_ok()); - // check connection state + // Check connection state let connection = server.get_connection(); assert!(connection.is_some()); let connection = connection.unwrap(); assert_eq!(connection.address, BOB); assert_eq!(connection.chain_id, 42); - // stop server + // Stop server server.stop().await.unwrap(); } + + #[tokio::test] + async fn test_send_transaction() { + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); + server.start().await.unwrap(); + + // Connect Alice's wallet + let resp = reqwest::Client::new() + .post(format!("http://localhost:{}/api/account", server.port())) + .json(&AccountUpdate { address: Some(ALICE), chain_id: Some(1) }) + .send() + .await; + assert!(resp.is_ok()); + + // Create a browser transaction request + let tx_request_id = Uuid::new_v4(); + let tx_request = BrowserTransaction { + id: tx_request_id, + request: TransactionRequest { + from: Some(ALICE), + to: Some(TxKind::Call(BOB)), + value: Some(U256::from(1000)), + ..Default::default() + }, + }; + + // Request transaction to be signed + let browser_server = server.clone(); + let handle = + tokio::spawn( + async move { browser_server.request_transaction(tx_request.clone()).await }, + ); + + // Simulate posting a transaction response with rejection + let resp = reqwest::Client::new() + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&serde_json::json!({ + "id": tx_request_id, + "hash": null, + "error": "User rejected the transaction", + })) + .send() + .await; + assert!(resp.is_ok()); + + // Wait for the transaction request to be processed + let result = handle.await.unwrap(); + assert!(result.is_err()); + + println!("{:?}", result.err().unwrap()); + } } diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs index 67410db95cb32..88e4f10952d7d 100644 --- a/crates/wallets/src/wallet_browser/signer.rs +++ b/crates/wallets/src/wallet_browser/signer.rs @@ -22,8 +22,8 @@ pub struct BrowserSigner { } impl BrowserSigner { - pub async fn new(port: u16, open_browser: bool) -> Result { - let mut server = BrowserWalletServer::new(port, open_browser); + pub async fn new(port: u16, open_browser: bool, timeout: Duration) -> Result { + let mut server = BrowserWalletServer::new(port, open_browser, timeout); server.start().await.map_err(alloy_signer::Error::other)?; @@ -31,7 +31,6 @@ impl BrowserSigner { let _ = sh_println!("Waiting for wallet connection..."); let start = Instant::now(); - let timeout = Duration::from_secs(300); loop { if let Some(connection) = server.get_connection() { @@ -58,13 +57,13 @@ impl BrowserSigner { &self, tx_request: TransactionRequest, ) -> Result { - let request = BrowserTransaction { id: Uuid::new_v4().to_string(), request: tx_request }; + let request = BrowserTransaction { id: Uuid::new_v4(), request: tx_request }; let server = self.server.lock().await; let tx_hash = server.request_transaction(request).await.map_err(alloy_signer::Error::other)?; - tokio::time::sleep(std::time::Duration::from_millis(500)).await; + tokio::time::sleep(Duration::from_millis(500)).await; Ok(tx_hash) } diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index f511001458aaf..eb99cfa909995 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -2,6 +2,7 @@ use std::sync::Arc; use alloy_primitives::{Address, ChainId}; use parking_lot::Mutex; +use uuid::Uuid; use crate::wallet_browser::{ queue::RequestQueue, @@ -78,19 +79,19 @@ impl BrowserWalletState { } /// Remove transaction request. - pub fn remove_transaction_request(&self, id: &str) { + pub fn remove_transaction_request(&self, id: &Uuid) { self.transactions.lock().remove_request(id); } /// Add transaction response. pub fn add_transaction_response(&self, response: TransactionResponse) { - let id = response.id.clone(); - self.transactions.lock().add_response(id.clone(), response); + let id = response.id; + self.transactions.lock().add_response(id, response); self.remove_transaction_request(&id); } /// Get transaction response. - pub fn get_transaction_response(&self, id: &str) -> Option { + pub fn get_transaction_response(&self, id: &Uuid) -> Option { self.transactions.lock().get_response(id) } } diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index 2875760f203c1..18a022c77d8fa 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -1,6 +1,7 @@ use alloy_primitives::{Address, ChainId, TxHash}; use alloy_rpc_types::TransactionRequest; use serde::{Deserialize, Serialize}; +use uuid::Uuid; #[derive(Debug, Clone, Serialize, Deserialize)] pub(crate) struct WalletConnection { @@ -10,14 +11,14 @@ pub(crate) struct WalletConnection { #[derive(Debug, Clone, Serialize, Deserialize)] pub(crate) struct BrowserTransaction { - pub id: String, + pub id: Uuid, #[serde(flatten)] pub request: TransactionRequest, } #[derive(Debug, Clone, Serialize, Deserialize)] pub(crate) struct TransactionResponse { - pub id: String, + pub id: Uuid, pub hash: Option, pub error: Option, } From 372f07a086f4636a18e3aa446dbbfa137cad9916 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 24 Oct 2025 17:03:44 +0200 Subject: [PATCH 07/42] fix test --- crates/wallets/src/wallet_browser/handlers.rs | 2 + crates/wallets/src/wallet_browser/server.rs | 63 +++++++++++++------ 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index 08333537907ab..796a3deae6d0f 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -28,6 +28,8 @@ pub(crate) async fn post_transaction_response( State(state): State>, Json(body): Json, ) -> Json { + state.add_transaction_response(body); + Json(json!({ "status": "ok" })) } diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 0f89cf633f1c9..5449b7a5ef2e3 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -166,6 +166,7 @@ mod tests { #[tokio::test] async fn test_connect_disconnect_wallet() { + let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); // Check initial disconnected state @@ -183,7 +184,7 @@ mod tests { assert!(resp_json.is_none()); // Connect Alice's wallet - let resp = reqwest::Client::new() + let resp = client .post(format!("http://localhost:{}/api/account", server.port())) .json(&AccountUpdate { address: Some(ALICE), chain_id: Some(1) }) .send() @@ -198,7 +199,7 @@ mod tests { assert_eq!(connection.chain_id, 1); // Disconnect wallet - let resp = reqwest::Client::new() + let resp = client .post(format!("http://localhost:{}/api/account", server.port())) .json(&AccountUpdate { address: None, chain_id: None }) .send() @@ -209,7 +210,7 @@ mod tests { assert!(!server.is_connected()); // Connect Bob's wallet - let resp = reqwest::Client::new() + let resp = client .post(format!("http://localhost:{}/api/account", server.port())) .json(&AccountUpdate { address: Some(BOB), chain_id: Some(42) }) .send() @@ -229,11 +230,12 @@ mod tests { #[tokio::test] async fn test_send_transaction() { - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); server.start().await.unwrap(); // Connect Alice's wallet - let resp = reqwest::Client::new() + let resp = client .post(format!("http://localhost:{}/api/account", server.port())) .json(&AccountUpdate { address: Some(ALICE), chain_id: Some(1) }) .send() @@ -252,15 +254,28 @@ mod tests { }, }; - // Request transaction to be signed + // Spawn the signing flow in the background let browser_server = server.clone(); - let handle = - tokio::spawn( - async move { browser_server.request_transaction(tx_request.clone()).await }, - ); + let join_handle = + tokio::spawn(async move { browser_server.request_transaction(tx_request).await }); + tokio::task::yield_now().await; + tokio::time::sleep(Duration::from_millis(100)).await; - // Simulate posting a transaction response with rejection - let resp = reqwest::Client::new() + // Check pending transaction + let resp = + reqwest::get(&format!("http://localhost:{}/api/transaction/pending", server.port())) + .await + .unwrap(); + let resp_json: Option = resp.json().await.unwrap(); + assert!(resp_json.is_some()); + let pending_tx = resp_json.unwrap(); + assert_eq!(pending_tx.id, tx_request_id); + assert_eq!(pending_tx.request.from, Some(ALICE)); + assert_eq!(pending_tx.request.to, Some(TxKind::Call(BOB))); + assert_eq!(pending_tx.request.value, Some(U256::from(1000))); + + // Simulate the wallet rejecting the tx + let resp = client .post(format!("http://localhost:{}/api/transaction/response", server.port())) .json(&serde_json::json!({ "id": tx_request_id, @@ -268,13 +283,21 @@ mod tests { "error": "User rejected the transaction", })) .send() - .await; - assert!(resp.is_ok()); - - // Wait for the transaction request to be processed - let result = handle.await.unwrap(); - assert!(result.is_err()); - - println!("{:?}", result.err().unwrap()); + .await + .unwrap() + .error_for_status() + .unwrap(); + + assert_eq!(resp.status(), reqwest::StatusCode::OK); + + // The join handle should now return a rejection error + let res = join_handle.await.expect("task panicked"); + match res { + Err(BrowserWalletError::Rejected { operation, reason }) => { + assert_eq!(operation, "Transaction"); + assert_eq!(reason, "User rejected the transaction"); + } + other => panic!("expected rejection, got {other:?}"), + } } } From f103b764f5e775f0285ef5f3afefd90beac7cfc2 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 24 Oct 2025 17:09:32 +0200 Subject: [PATCH 08/42] clean up --- crates/wallets/src/wallet_browser/server.rs | 4 ++-- crates/wallets/src/wallet_browser/state.rs | 2 +- crates/wallets/src/wallet_browser/types.rs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 5449b7a5ef2e3..4916a0079bcd6 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -23,7 +23,7 @@ use crate::wallet_browser::{ /// Browser wallet server. #[derive(Debug, Clone)] -pub(crate) struct BrowserWalletServer { +pub struct BrowserWalletServer { port: u16, state: Arc, shutdown_tx: Option>>>>, @@ -98,7 +98,7 @@ impl BrowserWalletServer { /// Check if a wallet is connected. pub fn is_connected(&self) -> bool { - self.state.get_connected_address().is_some() + self.state.is_connected() } /// Get current wallet connection. diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index eb99cfa909995..62205accc22d4 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -60,7 +60,7 @@ impl BrowserWalletState { /// Get connected address. pub fn get_connected_address(&self) -> Option
{ - self.connection.lock().address.clone() + self.connection.lock().address } /// Get connected chain ID. diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index 18a022c77d8fa..24343d114cdac 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -4,13 +4,13 @@ use serde::{Deserialize, Serialize}; use uuid::Uuid; #[derive(Debug, Clone, Serialize, Deserialize)] -pub(crate) struct WalletConnection { +pub struct WalletConnection { pub address: Address, pub chain_id: ChainId, } #[derive(Debug, Clone, Serialize, Deserialize)] -pub(crate) struct BrowserTransaction { +pub struct BrowserTransaction { pub id: Uuid, #[serde(flatten)] pub request: TransactionRequest, From a91b76c99abc59ed1389ca2762181c0e12695b8b Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 24 Oct 2025 17:29:08 +0200 Subject: [PATCH 09/42] add transaction accept test --- crates/wallets/src/wallet_browser/server.rs | 131 +++++++++++++++----- 1 file changed, 98 insertions(+), 33 deletions(-) diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 4916a0079bcd6..32faff407cdd7 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -153,14 +153,14 @@ impl BrowserWalletServer { #[cfg(test)] mod tests { - use crate::wallet_browser::types::AccountUpdate; - use super::*; use alloy_primitives::{Address, TxKind, U256, address}; use alloy_rpc_types::TransactionRequest; use uuid::Uuid; + use crate::wallet_browser::types::{AccountUpdate, TransactionResponse}; + const ALICE: Address = address!("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); const BOB: Address = address!("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"); @@ -169,8 +169,10 @@ mod tests { let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); - // Check initial disconnected state + // Check initial state assert!(!server.is_connected()); + assert!(!server.open_browser); + assert!(server.timeout == Duration::from_secs(5)); // Start server server.start().await.unwrap(); @@ -229,7 +231,7 @@ mod tests { } #[tokio::test] - async fn test_send_transaction() { + async fn test_send_transaction_accept() { let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); server.start().await.unwrap(); @@ -243,51 +245,81 @@ mod tests { assert!(resp.is_ok()); // Create a browser transaction request - let tx_request_id = Uuid::new_v4(); - let tx_request = BrowserTransaction { - id: tx_request_id, - request: TransactionRequest { - from: Some(ALICE), - to: Some(TxKind::Call(BOB)), - value: Some(U256::from(1000)), - ..Default::default() - }, - }; + let (tx_request_id, tx_request) = create_browser_transaction(); // Spawn the signing flow in the background let browser_server = server.clone(); let join_handle = tokio::spawn(async move { browser_server.request_transaction(tx_request).await }); - tokio::task::yield_now().await; - tokio::time::sleep(Duration::from_millis(100)).await; + defer_task().await; // Check pending transaction - let resp = - reqwest::get(&format!("http://localhost:{}/api/transaction/pending", server.port())) - .await - .unwrap(); - let resp_json: Option = resp.json().await.unwrap(); - assert!(resp_json.is_some()); - let pending_tx = resp_json.unwrap(); - assert_eq!(pending_tx.id, tx_request_id); - assert_eq!(pending_tx.request.from, Some(ALICE)); - assert_eq!(pending_tx.request.to, Some(TxKind::Call(BOB))); - assert_eq!(pending_tx.request.value, Some(U256::from(1000))); + check_pending_transaction(&server, tx_request_id).await; - // Simulate the wallet rejecting the tx + // Simulate the wallet accepting and signing the tx let resp = client .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&serde_json::json!({ - "id": tx_request_id, - "hash": null, - "error": "User rejected the transaction", - })) + .json(&TransactionResponse { + id: tx_request_id, + hash: Some(TxHash::random()), + error: None, + }) .send() .await .unwrap() .error_for_status() .unwrap(); + assert_eq!(resp.status(), reqwest::StatusCode::OK); + + // The join handle should now return the tx hash + let res = join_handle.await.expect("task panicked"); + match res { + Ok(hash) => { + assert!(hash != TxHash::new([0; 32])); + } + other => panic!("expected success, got {other:?}"), + } + } + + #[tokio::test] + async fn test_send_transaction_reject() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + server.start().await.unwrap(); + + // Connect Alice's wallet + let resp = client + .post(format!("http://localhost:{}/api/account", server.port())) + .json(&AccountUpdate { address: Some(ALICE), chain_id: Some(1) }) + .send() + .await; + assert!(resp.is_ok()); + // Create a browser transaction request + let (tx_request_id, tx_request) = create_browser_transaction(); + + // Spawn the signing flow in the background + let browser_server = server.clone(); + let join_handle = + tokio::spawn(async move { browser_server.request_transaction(tx_request).await }); + defer_task().await; + + // Check pending transaction + check_pending_transaction(&server, tx_request_id).await; + + // Simulate the wallet rejecting the tx + let resp = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&TransactionResponse { + id: tx_request_id, + hash: None, + error: Some("User rejected the transaction".into()), + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); assert_eq!(resp.status(), reqwest::StatusCode::OK); // The join handle should now return a rejection error @@ -300,4 +332,37 @@ mod tests { other => panic!("expected rejection, got {other:?}"), } } + + fn create_browser_transaction() -> (Uuid, BrowserTransaction) { + let id = Uuid::new_v4(); + let tx = BrowserTransaction { + id, + request: TransactionRequest { + from: Some(ALICE), + to: Some(TxKind::Call(BOB)), + value: Some(U256::from(1000)), + ..Default::default() + }, + }; + (id, tx) + } + + async fn check_pending_transaction(server: &BrowserWalletServer, tx_request_id: Uuid) { + let resp = + reqwest::get(&format!("http://localhost:{}/api/transaction/pending", server.port())) + .await + .unwrap(); + let resp_json: Option = resp.json().await.unwrap(); + assert!(resp_json.is_some()); + let pending_tx = resp_json.unwrap(); + assert_eq!(pending_tx.id, tx_request_id); + assert_eq!(pending_tx.request.from, Some(ALICE)); + assert_eq!(pending_tx.request.to, Some(TxKind::Call(BOB))); + assert_eq!(pending_tx.request.value, Some(U256::from(1000))); + } + + async fn defer_task() { + tokio::task::yield_now().await; + tokio::time::sleep(Duration::from_millis(100)).await; + } } From 231da130382aacf1fa3bd87c42aeb6f35f3f21f7 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 24 Oct 2025 17:36:33 +0200 Subject: [PATCH 10/42] clean up tests --- crates/wallets/src/wallet_browser/server.rs | 114 +++++++++++--------- 1 file changed, 62 insertions(+), 52 deletions(-) diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 32faff407cdd7..dd36808838854 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -157,6 +157,7 @@ mod tests { use alloy_primitives::{Address, TxKind, U256, address}; use alloy_rpc_types::TransactionRequest; + use tokio::task::JoinHandle; use uuid::Uuid; use crate::wallet_browser::types::{AccountUpdate, TransactionResponse}; @@ -177,21 +178,11 @@ mod tests { // Start server server.start().await.unwrap(); - // Check pending transaction - let resp = - reqwest::get(&format!("http://localhost:{}/api/transaction/pending", server.port())) - .await; - assert!(resp.is_ok()); - let resp_json: Option = resp.unwrap().json().await.unwrap(); - assert!(resp_json.is_none()); + // Check that the pending transaction queue is empty + check_pending_transaction_queue_empty(&server).await; // Connect Alice's wallet - let resp = client - .post(format!("http://localhost:{}/api/account", server.port())) - .json(&AccountUpdate { address: Some(ALICE), chain_id: Some(1) }) - .send() - .await; - assert!(resp.is_ok()); + connect_wallet(&client, &server, ALICE, 1).await; // Check connection state let connection = server.get_connection(); @@ -201,23 +192,13 @@ mod tests { assert_eq!(connection.chain_id, 1); // Disconnect wallet - let resp = client - .post(format!("http://localhost:{}/api/account", server.port())) - .json(&AccountUpdate { address: None, chain_id: None }) - .send() - .await; - assert!(resp.is_ok()); + disconnect_wallet(&client, &server).await; // Check disconnected state assert!(!server.is_connected()); // Connect Bob's wallet - let resp = client - .post(format!("http://localhost:{}/api/account", server.port())) - .json(&AccountUpdate { address: Some(BOB), chain_id: Some(42) }) - .send() - .await; - assert!(resp.is_ok()); + connect_wallet(&client, &server, BOB, 42).await; // Check connection state let connection = server.get_connection(); @@ -237,21 +218,13 @@ mod tests { server.start().await.unwrap(); // Connect Alice's wallet - let resp = client - .post(format!("http://localhost:{}/api/account", server.port())) - .json(&AccountUpdate { address: Some(ALICE), chain_id: Some(1) }) - .send() - .await; - assert!(resp.is_ok()); + connect_wallet(&client, &server, ALICE, 1).await; // Create a browser transaction request let (tx_request_id, tx_request) = create_browser_transaction(); // Spawn the signing flow in the background - let browser_server = server.clone(); - let join_handle = - tokio::spawn(async move { browser_server.request_transaction(tx_request).await }); - defer_task().await; + let handle = wait_for_signing(&server, tx_request).await; // Check pending transaction check_pending_transaction(&server, tx_request_id).await; @@ -272,7 +245,7 @@ mod tests { assert_eq!(resp.status(), reqwest::StatusCode::OK); // The join handle should now return the tx hash - let res = join_handle.await.expect("task panicked"); + let res = handle.await.expect("task panicked"); match res { Ok(hash) => { assert!(hash != TxHash::new([0; 32])); @@ -288,21 +261,13 @@ mod tests { server.start().await.unwrap(); // Connect Alice's wallet - let resp = client - .post(format!("http://localhost:{}/api/account", server.port())) - .json(&AccountUpdate { address: Some(ALICE), chain_id: Some(1) }) - .send() - .await; - assert!(resp.is_ok()); + connect_wallet(&client, &server, ALICE, 1).await; // Create a browser transaction request let (tx_request_id, tx_request) = create_browser_transaction(); // Spawn the signing flow in the background - let browser_server = server.clone(); - let join_handle = - tokio::spawn(async move { browser_server.request_transaction(tx_request).await }); - defer_task().await; + let handle = wait_for_signing(&server, tx_request).await; // Check pending transaction check_pending_transaction(&server, tx_request_id).await; @@ -323,7 +288,7 @@ mod tests { assert_eq!(resp.status(), reqwest::StatusCode::OK); // The join handle should now return a rejection error - let res = join_handle.await.expect("task panicked"); + let res = handle.await.expect("task panicked"); match res { Err(BrowserWalletError::Rejected { operation, reason }) => { assert_eq!(operation, "Transaction"); @@ -333,6 +298,45 @@ mod tests { } } + /// Helper to connect a wallet to the server. + async fn connect_wallet( + client: &reqwest::Client, + server: &BrowserWalletServer, + address: Address, + chain_id: u64, + ) { + let resp = client + .post(format!("http://localhost:{}/api/account", server.port())) + .json(&AccountUpdate { address: Some(address), chain_id: Some(chain_id) }) + .send(); + assert!(resp.await.is_ok()); + } + + /// Helper to disconnect a wallet from the server. + async fn disconnect_wallet(client: &reqwest::Client, server: &BrowserWalletServer) { + let resp = client + .post(format!("http://localhost:{}/api/account", server.port())) + .json(&AccountUpdate { address: None, chain_id: None }) + .send(); + assert!(resp.await.is_ok()); + } + + /// Spawn the signing flow in the background and return the join handle. + async fn wait_for_signing( + server: &BrowserWalletServer, + tx_request: BrowserTransaction, + ) -> JoinHandle> { + // Spawn the signing flow in the background + let browser_server = server.clone(); + let join_handle = + tokio::spawn(async move { browser_server.request_transaction(tx_request).await }); + tokio::task::yield_now().await; + tokio::time::sleep(Duration::from_millis(100)).await; + + join_handle + } + + /// Create a simple browser transaction request. fn create_browser_transaction() -> (Uuid, BrowserTransaction) { let id = Uuid::new_v4(); let tx = BrowserTransaction { @@ -347,6 +351,17 @@ mod tests { (id, tx) } + /// Check that the pending transaction queue is empty. + async fn check_pending_transaction_queue_empty(server: &BrowserWalletServer) { + let resp = + reqwest::get(&format!("http://localhost:{}/api/transaction/pending", server.port())) + .await + .unwrap(); + let resp_json: Option = resp.json().await.unwrap(); + assert!(resp_json.is_none()); + } + + /// Check that the pending transaction matches the expected request ID and fields. async fn check_pending_transaction(server: &BrowserWalletServer, tx_request_id: Uuid) { let resp = reqwest::get(&format!("http://localhost:{}/api/transaction/pending", server.port())) @@ -360,9 +375,4 @@ mod tests { assert_eq!(pending_tx.request.to, Some(TxKind::Call(BOB))); assert_eq!(pending_tx.request.value, Some(U256::from(1000))); } - - async fn defer_task() { - tokio::task::yield_now().await; - tokio::time::sleep(Duration::from_millis(100)).await; - } } From 4ec160254c817b68ac04ecda606322a8f6304619 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 24 Oct 2025 17:37:50 +0200 Subject: [PATCH 11/42] add basic setup test --- crates/wallets/src/wallet_browser/server.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index dd36808838854..444cc00b47516 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -166,8 +166,7 @@ mod tests { const BOB: Address = address!("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"); #[tokio::test] - async fn test_connect_disconnect_wallet() { - let client = reqwest::Client::new(); + async fn test_setup_server() { let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); // Check initial state @@ -181,6 +180,19 @@ mod tests { // Check that the pending transaction queue is empty check_pending_transaction_queue_empty(&server).await; + // Stop server + server.stop().await.unwrap(); + } + + #[tokio::test] + async fn test_connect_disconnect_wallet() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); + server.start().await.unwrap(); + + // Check that the pending transaction queue is empty + check_pending_transaction_queue_empty(&server).await; + // Connect Alice's wallet connect_wallet(&client, &server, ALICE, 1).await; From 6985f888c48e428e257cf6b679212ca306e2eadf Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 13:45:16 +0100 Subject: [PATCH 12/42] solidify api --- Cargo.lock | 3 +- crates/wallets/Cargo.toml | 1 - crates/wallets/src/wallet_browser/handlers.rs | 49 ++++++-- crates/wallets/src/wallet_browser/queue.rs | 7 ++ crates/wallets/src/wallet_browser/server.rs | 109 +++++++++++++++--- crates/wallets/src/wallet_browser/state.rs | 5 + crates/wallets/src/wallet_browser/types.rs | 46 ++++++++ 7 files changed, 192 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0918bad703bc0..a83a9279936b7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5025,7 +5025,6 @@ dependencies = [ "reqwest", "rpassword", "serde", - "serde_json", "thiserror 2.0.17", "tokio", "tracing", @@ -7120,7 +7119,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.108", ] [[package]] diff --git a/crates/wallets/Cargo.toml b/crates/wallets/Cargo.toml index 393d863131476..25de7a3edbbb3 100644 --- a/crates/wallets/Cargo.toml +++ b/crates/wallets/Cargo.toml @@ -31,7 +31,6 @@ axum.workspace = true foundry-common.workspace = true tokio = { workspace = true, features = ["macros"] } parking_lot.workspace = true -serde_json.workspace = true uuid.workspace = true webbrowser = "1.0.6" diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index 796a3deae6d0f..02626b6e92bcf 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -1,12 +1,11 @@ use std::sync::Arc; use axum::{Json, extract::State, http::HeaderMap, response::Html}; -use serde_json::{Value, json}; use crate::wallet_browser::{ app::contents, state::BrowserWalletState, - types::{AccountUpdate, BrowserTransaction, TransactionResponse}, + types::{AccountUpdate, BrowserApiResponse, BrowserTransaction, TransactionResponse}, }; pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { @@ -20,23 +19,57 @@ pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { pub(crate) async fn get_pending_transaction( State(state): State>, -) -> Json> { - Json(state.get_pending_transaction()) +) -> Json> { + match state.get_pending_transaction() { + Some(tx) => Json(BrowserApiResponse::with_data(tx)), + None => Json(BrowserApiResponse::error("No pending transaction")), + } } pub(crate) async fn post_transaction_response( State(state): State>, Json(body): Json, -) -> Json { +) -> Json { + // Ensure that the transaction request exists. + if !state.has_transaction_request(&body.id) { + return Json(BrowserApiResponse::error("Unknown transaction id")); + } + + // Ensure that exactly one of hash or error is provided. + match (&body.hash, &body.error) { + (None, None) => { + return Json(BrowserApiResponse::error("Either hash or error must be provided")); + } + (Some(_), Some(_)) => { + return Json(BrowserApiResponse::error("Only one of hash or error can be provided")); + } + _ => {} + } + + // Validate transaction hash if provided. + if let Some(hash) = &body.hash { + // Check for all-zero hash + if hash.is_zero() { + return Json(BrowserApiResponse::error("Invalid (zero) transaction hash")); + } + + // Sanity check: ensure the hash is exactly 32 bytes + if hash.as_slice().len() != 32 { + return Json(BrowserApiResponse::error( + "Malformed transaction hash (expected 32 bytes)", + )); + } + } + state.add_transaction_response(body); - Json(json!({ "status": "ok" })) + Json(BrowserApiResponse::ok()) } pub(crate) async fn post_account_update( State(state): State>, Json(body): Json, -) -> Json { +) -> Json { match body.address { Some(addr) => { state.set_connected_address(Some(addr)); @@ -51,5 +84,5 @@ pub(crate) async fn post_account_update( } } - Json(json!({ "status": "ok" })) + Json(BrowserApiResponse::ok()) } diff --git a/crates/wallets/src/wallet_browser/queue.rs b/crates/wallets/src/wallet_browser/queue.rs index 7a5e524ebdd5b..6c722e4b8cd34 100644 --- a/crates/wallets/src/wallet_browser/queue.rs +++ b/crates/wallets/src/wallet_browser/queue.rs @@ -27,6 +27,13 @@ impl RequestQueue { self.requests.push_back(request); } + pub fn has_request(&self, id: &Uuid) -> bool + where + Req: HasId, + { + self.requests.iter().any(|r| r.id() == id) + } + pub fn remove_request(&mut self, id: &Uuid) -> Option where Req: HasId, diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 444cc00b47516..9214ae680b839 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -160,7 +160,7 @@ mod tests { use tokio::task::JoinHandle; use uuid::Uuid; - use crate::wallet_browser::types::{AccountUpdate, TransactionResponse}; + use crate::wallet_browser::types::{AccountUpdate, BrowserApiResponse, TransactionResponse}; const ALICE: Address = address!("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); const BOB: Address = address!("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"); @@ -224,7 +224,7 @@ mod tests { } #[tokio::test] - async fn test_send_transaction_accept() { + async fn test_send_transaction_client_accept() { let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); server.start().await.unwrap(); @@ -267,7 +267,76 @@ mod tests { } #[tokio::test] - async fn test_send_transaction_reject() { + async fn test_send_transaction_client_not_requested() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + server.start().await.unwrap(); + + // Connect Alice's wallet + connect_wallet(&client, &server, ALICE, 1).await; + + // Create a random transaction response without a matching request + let tx_request_id = Uuid::new_v4(); + + // Simulate the wallet sending a response for an unknown request + let resp = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&TransactionResponse { + id: tx_request_id, + hash: Some(TxHash::random()), + error: None, + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + + assert_eq!(resp.status(), reqwest::StatusCode::OK); + + // Assert that no transaction without a matching request is accepted + let api: BrowserApiResponse<()> = resp.json().await.unwrap(); + match api { + BrowserApiResponse::Error { message } => { + assert_eq!(message, "Unknown transaction id"); + } + _ => panic!("expected error response"), + } + } + + #[tokio::test] + async fn test_send_transaction_invalid_response_format() { + // non uuid + + let client = reqwest::Client::new(); + + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + server.start().await.unwrap(); + + // Connect Alice's wallet + connect_wallet(&client, &server, ALICE, 1).await; + + // Simulate the wallet sending a response with an invalid UUID + let resp = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .body( + r#"{ + "id": "invalid-uuid", + "hash": "invalid-hash", + "error": null + }"#, + ) + .header("Content-Type", "application/json") + .send() + .await + .unwrap(); + + // The server should respond with a 422 Unprocessable Entity status + assert_eq!(resp.status(), reqwest::StatusCode::UNPROCESSABLE_ENTITY); + } + + #[tokio::test] + async fn test_send_transaction_client_reject() { let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); server.start().await.unwrap(); @@ -363,25 +432,31 @@ mod tests { (id, tx) } - /// Check that the pending transaction queue is empty. + /// Check that the pending transaction queue is empty (expects Error). async fn check_pending_transaction_queue_empty(server: &BrowserWalletServer) { - let resp = - reqwest::get(&format!("http://localhost:{}/api/transaction/pending", server.port())) - .await - .unwrap(); - let resp_json: Option = resp.json().await.unwrap(); - assert!(resp_json.is_none()); + let url = format!("http://localhost:{}/api/transaction/pending", server.port()); + let resp = reqwest::get(&url).await.unwrap(); + + let BrowserApiResponse::Error { message } = + resp.json::>().await.unwrap() + else { + panic!("expected BrowserApiResponse::Error (no pending transaction), but got Ok"); + }; + + assert_eq!(message, "No pending transaction"); } /// Check that the pending transaction matches the expected request ID and fields. async fn check_pending_transaction(server: &BrowserWalletServer, tx_request_id: Uuid) { - let resp = - reqwest::get(&format!("http://localhost:{}/api/transaction/pending", server.port())) - .await - .unwrap(); - let resp_json: Option = resp.json().await.unwrap(); - assert!(resp_json.is_some()); - let pending_tx = resp_json.unwrap(); + let url = format!("http://localhost:{}/api/transaction/pending", server.port()); + let resp = reqwest::get(&url).await.unwrap(); + + let BrowserApiResponse::Ok(pending_tx) = + resp.json::>().await.unwrap() + else { + panic!("expected BrowserApiResponse::Ok with a pending transaction"); + }; + assert_eq!(pending_tx.id, tx_request_id); assert_eq!(pending_tx.request.from, Some(ALICE)); assert_eq!(pending_tx.request.to, Some(TxKind::Call(BOB))); diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index 62205accc22d4..b014f3992e32e 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -73,6 +73,11 @@ impl BrowserWalletState { self.transactions.lock().add_request(request); } + /// Check if a transaction request exists. + pub fn has_transaction_request(&self, id: &Uuid) -> bool { + self.transactions.lock().has_request(id) + } + /// Get pending transaction. pub fn get_pending_transaction(&self) -> Option { self.transactions.lock().get_pending().cloned() diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index 24343d114cdac..5644e6f493dc1 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -3,28 +3,74 @@ use alloy_rpc_types::TransactionRequest; use serde::{Deserialize, Serialize}; use uuid::Uuid; +/// Response format for API endpoints. +/// - `Ok(T)` serializes as: {"status":"ok","data": ...} +/// - `Ok(())` serializes as: {"status":"ok"} (no data key) +/// - `Error { message }` as: {"status":"error","message":"..."} +#[derive(Serialize, Deserialize, Debug)] +#[serde(tag = "status", content = "data", rename_all = "lowercase")] +pub(crate) enum BrowserApiResponse { + Ok(T), + Error { message: String }, +} + +impl BrowserApiResponse<()> { + /// Create a successful response with no data. + pub fn ok() -> Self { + Self::Ok(()) + } +} + +impl BrowserApiResponse { + /// Create a successful response with the given data. + pub fn with_data(data: T) -> Self { + Self::Ok(data) + } + + /// Create an error response with the given message. + pub fn error(msg: impl Into) -> Self { + Self::Error { message: msg.into() } + } +} + +/// Contains information about the active wallet connection. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct WalletConnection { + /// The address of the connected wallet. pub address: Address, + /// The chain ID of the connected wallet. pub chain_id: ChainId, } +/// Represents a transaction request sent to the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct BrowserTransaction { + /// The unique identifier for the transaction. pub id: Uuid, + /// The transaction request details. #[serde(flatten)] pub request: TransactionRequest, } +/// Represents a transaction response sent from the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] pub(crate) struct TransactionResponse { + /// The unique identifier for the transaction, must match the request ID sent earlier. pub id: Uuid, + /// The transaction hash if the transaction was successful. pub hash: Option, + /// The error message if the transaction failed. pub error: Option, } +/// Represents an account update sent from the browser wallet. +/// If `address` is `None`, it indicates that the wallet has disconnected. +/// If `address` is different from the previous one, it indicates a switch to a new account. +/// If `chain_id` is provided, it indicates a change in the connected chain. #[derive(Debug, Clone, Serialize, Deserialize)] pub(crate) struct AccountUpdate { + /// The address of the account. pub address: Option
, + /// The chain ID of the account. pub chain_id: Option, } From c9757e2182bd47500d429ececa23c357f8c87a7b Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 14:46:53 +0100 Subject: [PATCH 13/42] simplify and harden api --- crates/wallets/src/wallet_browser/handlers.rs | 25 ++---- crates/wallets/src/wallet_browser/queue.rs | 22 +++-- crates/wallets/src/wallet_browser/server.rs | 85 +++++++++---------- crates/wallets/src/wallet_browser/signer.rs | 19 ++--- crates/wallets/src/wallet_browser/state.rs | 53 ++++-------- crates/wallets/src/wallet_browser/types.rs | 21 +---- 6 files changed, 86 insertions(+), 139 deletions(-) diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index 02626b6e92bcf..8ac5650d2e9c6 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -5,7 +5,7 @@ use axum::{Json, extract::State, http::HeaderMap, response::Html}; use crate::wallet_browser::{ app::contents, state::BrowserWalletState, - types::{AccountUpdate, BrowserApiResponse, BrowserTransaction, TransactionResponse}, + types::{BrowserApiResponse, BrowserTransaction, Connection, TransactionResponse}, }; pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { @@ -17,10 +17,10 @@ pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { (headers, Html(contents::INDEX_HTML)) } -pub(crate) async fn get_pending_transaction( +pub(crate) async fn get_next_transaction_request( State(state): State>, ) -> Json> { - match state.get_pending_transaction() { + match state.get_next_transaction_request() { Some(tx) => Json(BrowserApiResponse::with_data(tx)), None => Json(BrowserApiResponse::error("No pending transaction")), } @@ -66,23 +66,12 @@ pub(crate) async fn post_transaction_response( Json(BrowserApiResponse::ok()) } -pub(crate) async fn post_account_update( +pub(crate) async fn post_connection_update( State(state): State>, - Json(body): Json, + Json(body): Json>, ) -> Json { - match body.address { - Some(addr) => { - state.set_connected_address(Some(addr)); - - if let Some(chain_id) = body.chain_id { - state.set_connected_chain_id(Some(chain_id)); - } - } - None => { - state.set_connected_address(None); - state.set_connected_chain_id(None); - } - } + // Update the connected wallet information. + state.set_connection(body); Json(BrowserApiResponse::ok()) } diff --git a/crates/wallets/src/wallet_browser/queue.rs b/crates/wallets/src/wallet_browser/queue.rs index 6c722e4b8cd34..9ac906adf5ec5 100644 --- a/crates/wallets/src/wallet_browser/queue.rs +++ b/crates/wallets/src/wallet_browser/queue.rs @@ -19,14 +19,17 @@ impl Default for RequestQueue { } impl RequestQueue { + /// Create a new request queue. pub fn new() -> Self { Self { requests: VecDeque::new(), responses: HashMap::new() } } + /// Add a new request to the queue. pub fn add_request(&mut self, request: Req) { self.requests.push_back(request); } + /// Check if the queue contains any pending requests matching the given ID. pub fn has_request(&self, id: &Uuid) -> bool where Req: HasId, @@ -34,28 +37,31 @@ impl RequestQueue { self.requests.iter().any(|r| r.id() == id) } - pub fn remove_request(&mut self, id: &Uuid) -> Option + /// Retrieve the next request from the queue without removing it. + pub fn get_request(&mut self) -> Option<&Req> { + self.requests.front() + } + + /// Remove a request by its ID. + pub fn remove_request(&mut self, id: &Uuid) where Req: HasId, { if let Some(pos) = self.requests.iter().position(|r| r.id() == id) { - self.requests.remove(pos) - } else { - None + self.requests.remove(pos); } } + /// Add a response to the queue. pub fn add_response(&mut self, id: Uuid, response: Res) { self.responses.insert(id, response); } + /// Get a response by its ID. pub fn get_response(&mut self, id: &Uuid) -> Option { + // Note: This removes the response from the map when retrieved. self.responses.remove(id) } - - pub fn get_pending(&self) -> Option<&Req> { - self.requests.front() - } } pub(crate) trait HasId { diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 9214ae680b839..a096da108fb5b 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -18,7 +18,7 @@ use crate::wallet_browser::{ error::BrowserWalletError, handlers, state::BrowserWalletState, - types::{BrowserTransaction, WalletConnection}, + types::{BrowserTransaction, Connection}, }; /// Browser wallet server. @@ -49,9 +49,9 @@ impl BrowserWalletServer { // Serve browser wallet application .route("/", get(handlers::serve_index)) // API endpoints - .route("/api/transaction/pending", get(handlers::get_pending_transaction)) + .route("/api/transaction/request", get(handlers::get_next_transaction_request)) .route("/api/transaction/response", post(handlers::post_transaction_response)) - .route("/api/account", post(handlers::post_account_update)) + .route("/api/connection", post(handlers::post_connection_update)) .with_state(Arc::clone(&self.state)); let addr = SocketAddr::from(([127, 0, 0, 1], self.port)); @@ -102,12 +102,8 @@ impl BrowserWalletServer { } /// Get current wallet connection. - pub fn get_connection(&self) -> Option { - self.state.get_connected_address().map(|address| { - let chain_id = self.state.get_connected_chain_id().unwrap_or(31337); - - WalletConnection { address, chain_id } - }) + pub fn get_connection(&self) -> Option { + self.state.get_connection() } /// Request a transaction to be signed and sent via the browser wallet. @@ -160,7 +156,7 @@ mod tests { use tokio::task::JoinHandle; use uuid::Uuid; - use crate::wallet_browser::types::{AccountUpdate, BrowserApiResponse, TransactionResponse}; + use crate::wallet_browser::types::{BrowserApiResponse, TransactionResponse}; const ALICE: Address = address!("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); const BOB: Address = address!("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"); @@ -177,8 +173,8 @@ mod tests { // Start server server.start().await.unwrap(); - // Check that the pending transaction queue is empty - check_pending_transaction_queue_empty(&server).await; + // Check that the transaction request queue is empty + check_transaction_request_queue_empty(&server).await; // Stop server server.stop().await.unwrap(); @@ -190,18 +186,17 @@ mod tests { let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); server.start().await.unwrap(); - // Check that the pending transaction queue is empty - check_pending_transaction_queue_empty(&server).await; + // Check that the transaction request queue is empty + check_transaction_request_queue_empty(&server).await; // Connect Alice's wallet - connect_wallet(&client, &server, ALICE, 1).await; + connect_wallet(&client, &server, Connection(ALICE, 1)).await; // Check connection state - let connection = server.get_connection(); - assert!(connection.is_some()); - let connection = connection.unwrap(); - assert_eq!(connection.address, ALICE); - assert_eq!(connection.chain_id, 1); + let Connection(address, chain_id) = + server.get_connection().expect("expected an active wallet connection"); + assert_eq!(address, ALICE); + assert_eq!(chain_id, 1); // Disconnect wallet disconnect_wallet(&client, &server).await; @@ -210,14 +205,13 @@ mod tests { assert!(!server.is_connected()); // Connect Bob's wallet - connect_wallet(&client, &server, BOB, 42).await; + connect_wallet(&client, &server, Connection(BOB, 42)).await; // Check connection state - let connection = server.get_connection(); - assert!(connection.is_some()); - let connection = connection.unwrap(); - assert_eq!(connection.address, BOB); - assert_eq!(connection.chain_id, 42); + let Connection(address, chain_id) = + server.get_connection().expect("expected an active wallet connection"); + assert_eq!(address, BOB); + assert_eq!(chain_id, 42); // Stop server server.stop().await.unwrap(); @@ -230,7 +224,7 @@ mod tests { server.start().await.unwrap(); // Connect Alice's wallet - connect_wallet(&client, &server, ALICE, 1).await; + connect_wallet(&client, &server, Connection(ALICE, 1)).await; // Create a browser transaction request let (tx_request_id, tx_request) = create_browser_transaction(); @@ -238,8 +232,8 @@ mod tests { // Spawn the signing flow in the background let handle = wait_for_signing(&server, tx_request).await; - // Check pending transaction - check_pending_transaction(&server, tx_request_id).await; + // Check transaction request + check_transaction_request_content(&server, tx_request_id).await; // Simulate the wallet accepting and signing the tx let resp = client @@ -273,7 +267,7 @@ mod tests { server.start().await.unwrap(); // Connect Alice's wallet - connect_wallet(&client, &server, ALICE, 1).await; + connect_wallet(&client, &server, Connection(ALICE, 1)).await; // Create a random transaction response without a matching request let tx_request_id = Uuid::new_v4(); @@ -314,7 +308,7 @@ mod tests { server.start().await.unwrap(); // Connect Alice's wallet - connect_wallet(&client, &server, ALICE, 1).await; + connect_wallet(&client, &server, Connection(ALICE, 1)).await; // Simulate the wallet sending a response with an invalid UUID let resp = client @@ -342,7 +336,7 @@ mod tests { server.start().await.unwrap(); // Connect Alice's wallet - connect_wallet(&client, &server, ALICE, 1).await; + connect_wallet(&client, &server, Connection(ALICE, 1)).await; // Create a browser transaction request let (tx_request_id, tx_request) = create_browser_transaction(); @@ -350,8 +344,8 @@ mod tests { // Spawn the signing flow in the background let handle = wait_for_signing(&server, tx_request).await; - // Check pending transaction - check_pending_transaction(&server, tx_request_id).await; + // Check transaction request + check_transaction_request_content(&server, tx_request_id).await; // Simulate the wallet rejecting the tx let resp = client @@ -383,12 +377,11 @@ mod tests { async fn connect_wallet( client: &reqwest::Client, server: &BrowserWalletServer, - address: Address, - chain_id: u64, + connection: Connection, ) { let resp = client - .post(format!("http://localhost:{}/api/account", server.port())) - .json(&AccountUpdate { address: Some(address), chain_id: Some(chain_id) }) + .post(format!("http://localhost:{}/api/connection", server.port())) + .json(&connection) .send(); assert!(resp.await.is_ok()); } @@ -396,8 +389,8 @@ mod tests { /// Helper to disconnect a wallet from the server. async fn disconnect_wallet(client: &reqwest::Client, server: &BrowserWalletServer) { let resp = client - .post(format!("http://localhost:{}/api/account", server.port())) - .json(&AccountUpdate { address: None, chain_id: None }) + .post(format!("http://localhost:{}/api/connection", server.port())) + .json(&Option::::None) .send(); assert!(resp.await.is_ok()); } @@ -432,9 +425,9 @@ mod tests { (id, tx) } - /// Check that the pending transaction queue is empty (expects Error). - async fn check_pending_transaction_queue_empty(server: &BrowserWalletServer) { - let url = format!("http://localhost:{}/api/transaction/pending", server.port()); + /// Check that the transaction request queue is empty, if not panic. + async fn check_transaction_request_queue_empty(server: &BrowserWalletServer) { + let url = format!("http://localhost:{}/api/transaction/request", server.port()); let resp = reqwest::get(&url).await.unwrap(); let BrowserApiResponse::Error { message } = @@ -446,9 +439,9 @@ mod tests { assert_eq!(message, "No pending transaction"); } - /// Check that the pending transaction matches the expected request ID and fields. - async fn check_pending_transaction(server: &BrowserWalletServer, tx_request_id: Uuid) { - let url = format!("http://localhost:{}/api/transaction/pending", server.port()); + /// Check that the transaction request matches the expected request ID and fields. + async fn check_transaction_request_content(server: &BrowserWalletServer, tx_request_id: Uuid) { + let url = format!("http://localhost:{}/api/transaction/request", server.port()); let resp = reqwest::get(&url).await.unwrap(); let BrowserApiResponse::Ok(pending_tx) = diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs index 88e4f10952d7d..7fbe4eeeadf57 100644 --- a/crates/wallets/src/wallet_browser/signer.rs +++ b/crates/wallets/src/wallet_browser/signer.rs @@ -12,7 +12,10 @@ use async_trait::async_trait; use tokio::sync::Mutex; use uuid::Uuid; -use crate::wallet_browser::{server::BrowserWalletServer, types::BrowserTransaction}; +use crate::wallet_browser::{ + server::BrowserWalletServer, + types::{BrowserTransaction, Connection}, +}; #[derive(Clone, Debug)] pub struct BrowserSigner { @@ -33,15 +36,11 @@ impl BrowserSigner { let start = Instant::now(); loop { - if let Some(connection) = server.get_connection() { - let _ = sh_println!("Wallet connected: {}", connection.address); - let _ = sh_println!("Chain ID: {}", connection.chain_id); - - return Ok(Self { - server: Arc::new(Mutex::new(server)), - address: connection.address, - chain_id: connection.chain_id, - }); + if let Some(Connection(address, chain_id)) = server.get_connection() { + let _ = sh_println!("Wallet connected: {}", address); + let _ = sh_println!("Chain ID: {}", chain_id); + + return Ok(Self { server: Arc::new(Mutex::new(server)), address, chain_id }); } if start.elapsed() > timeout { diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index b014f3992e32e..93a23106bb338 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -1,25 +1,17 @@ use std::sync::Arc; -use alloy_primitives::{Address, ChainId}; use parking_lot::Mutex; use uuid::Uuid; use crate::wallet_browser::{ queue::RequestQueue, - types::{BrowserTransaction, TransactionResponse}, + types::{BrowserTransaction, Connection, TransactionResponse}, }; -/// Current connection information -#[derive(Debug, Clone, Default)] -pub(crate) struct ConnectionInfo { - pub address: Option
, - pub chain_id: Option, -} - #[derive(Debug, Clone)] pub(crate) struct BrowserWalletState { /// Current information about the wallet connection - pub connection: Arc>, + pub connection: Arc>>, /// Request/response queue for transactions pub transactions: Arc>>, } @@ -33,39 +25,24 @@ impl Default for BrowserWalletState { impl BrowserWalletState { pub fn new() -> Self { Self { - connection: Arc::new(Mutex::new(ConnectionInfo::default())), + connection: Arc::new(Mutex::new(None)), transactions: Arc::new(Mutex::new(RequestQueue::new())), } } /// Check if wallet is connected pub fn is_connected(&self) -> bool { - self.connection.lock().address.is_some() - } - - /// Set connected address. - pub fn set_connected_address(&self, address: Option
) { - let mut connection = self.connection.lock(); - connection.address = address; - - if connection.address.is_none() { - connection.chain_id = None; - } - } - - /// Set connected chain ID. - pub fn set_connected_chain_id(&self, chain_id: Option) { - self.connection.lock().chain_id = chain_id; + self.connection.lock().is_some() } - /// Get connected address. - pub fn get_connected_address(&self) -> Option
{ - self.connection.lock().address + /// Get current connection information. + pub fn get_connection(&self) -> Option { + *self.connection.lock() } - /// Get connected chain ID. - pub fn get_connected_chain_id(&self) -> Option { - self.connection.lock().chain_id + /// Set connection information. + pub fn set_connection(&self, connection: Option) { + *self.connection.lock() = connection; } /// Add a transaction request. @@ -78,12 +55,12 @@ impl BrowserWalletState { self.transactions.lock().has_request(id) } - /// Get pending transaction. - pub fn get_pending_transaction(&self) -> Option { - self.transactions.lock().get_pending().cloned() + /// Get next transaction request. + pub fn get_next_transaction_request(&self) -> Option { + self.transactions.lock().get_request().cloned() } - /// Remove transaction request. + // Remove a transaction request. pub fn remove_transaction_request(&self, id: &Uuid) { self.transactions.lock().remove_request(id); } @@ -92,7 +69,7 @@ impl BrowserWalletState { pub fn add_transaction_response(&self, response: TransactionResponse) { let id = response.id; self.transactions.lock().add_response(id, response); - self.remove_transaction_request(&id); + self.transactions.lock().remove_request(&id); } /// Get transaction response. diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index 5644e6f493dc1..9bebaf8da6c8b 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -33,15 +33,6 @@ impl BrowserApiResponse { } } -/// Contains information about the active wallet connection. -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct WalletConnection { - /// The address of the connected wallet. - pub address: Address, - /// The chain ID of the connected wallet. - pub chain_id: ChainId, -} - /// Represents a transaction request sent to the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] pub struct BrowserTransaction { @@ -64,13 +55,5 @@ pub(crate) struct TransactionResponse { } /// Represents an account update sent from the browser wallet. -/// If `address` is `None`, it indicates that the wallet has disconnected. -/// If `address` is different from the previous one, it indicates a switch to a new account. -/// If `chain_id` is provided, it indicates a change in the connected chain. -#[derive(Debug, Clone, Serialize, Deserialize)] -pub(crate) struct AccountUpdate { - /// The address of the account. - pub address: Option
, - /// The chain ID of the account. - pub chain_id: Option, -} +#[derive(Debug, Clone, Default, Copy, PartialEq, Eq, Serialize, Deserialize)] +pub struct Connection(pub Address, pub ChainId); From d078fcb686c0e1d6dfb6066208f6d1b8bdbe0185 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 15:10:38 +0100 Subject: [PATCH 14/42] tweaks --- crates/wallets/src/wallet_browser/handlers.rs | 16 +++++++------ crates/wallets/src/wallet_browser/queue.rs | 13 +++++----- crates/wallets/src/wallet_browser/server.rs | 10 ++++---- crates/wallets/src/wallet_browser/state.rs | 24 ++++++++++--------- crates/wallets/src/wallet_browser/types.rs | 13 ++++++++-- 5 files changed, 45 insertions(+), 31 deletions(-) diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index 8ac5650d2e9c6..5b7fcbd2402d5 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -1,6 +1,11 @@ use std::sync::Arc; -use axum::{Json, extract::State, http::HeaderMap, response::Html}; +use axum::{ + Json, + extract::State, + http::{HeaderMap, HeaderValue, header::CONTENT_TYPE}, + response::Html, +}; use crate::wallet_browser::{ app::contents, @@ -10,17 +15,14 @@ use crate::wallet_browser::{ pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { let mut headers = HeaderMap::new(); - headers.insert( - axum::http::header::CONTENT_TYPE, - axum::http::HeaderValue::from_static("text/html; charset=utf-8"), - ); + headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/html; charset=utf-8")); (headers, Html(contents::INDEX_HTML)) } pub(crate) async fn get_next_transaction_request( State(state): State>, ) -> Json> { - match state.get_next_transaction_request() { + match state.read_next_transaction_request() { Some(tx) => Json(BrowserApiResponse::with_data(tx)), None => Json(BrowserApiResponse::error("No pending transaction")), } @@ -70,7 +72,7 @@ pub(crate) async fn post_connection_update( State(state): State>, Json(body): Json>, ) -> Json { - // Update the connected wallet information. + // Update the connection state, setting it to None if disconnected. state.set_connection(body); Json(BrowserApiResponse::ok()) diff --git a/crates/wallets/src/wallet_browser/queue.rs b/crates/wallets/src/wallet_browser/queue.rs index 9ac906adf5ec5..a7f1343077385 100644 --- a/crates/wallets/src/wallet_browser/queue.rs +++ b/crates/wallets/src/wallet_browser/queue.rs @@ -37,18 +37,20 @@ impl RequestQueue { self.requests.iter().any(|r| r.id() == id) } - /// Retrieve the next request from the queue without removing it. - pub fn get_request(&mut self) -> Option<&Req> { + /// Read the next request from the queue without removing it. + pub fn read_request(&self) -> Option<&Req> { self.requests.front() } /// Remove a request by its ID. - pub fn remove_request(&mut self, id: &Uuid) + pub fn remove_request(&mut self, id: &Uuid) -> Option where Req: HasId, { if let Some(pos) = self.requests.iter().position(|r| r.id() == id) { - self.requests.remove(pos); + self.requests.remove(pos) + } else { + None } } @@ -57,9 +59,8 @@ impl RequestQueue { self.responses.insert(id, response); } - /// Get a response by its ID. + /// Get a response by its ID, removing it from the queue. pub fn get_response(&mut self, id: &Uuid) -> Option { - // Note: This removes the response from the map when retrieved. self.responses.remove(id) } } diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index a096da108fb5b..61b8cb6639de7 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -190,7 +190,7 @@ mod tests { check_transaction_request_queue_empty(&server).await; // Connect Alice's wallet - connect_wallet(&client, &server, Connection(ALICE, 1)).await; + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Check connection state let Connection(address, chain_id) = @@ -205,7 +205,7 @@ mod tests { assert!(!server.is_connected()); // Connect Bob's wallet - connect_wallet(&client, &server, Connection(BOB, 42)).await; + connect_wallet(&client, &server, Connection::new(BOB, 42)).await; // Check connection state let Connection(address, chain_id) = @@ -224,7 +224,7 @@ mod tests { server.start().await.unwrap(); // Connect Alice's wallet - connect_wallet(&client, &server, Connection(ALICE, 1)).await; + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Create a browser transaction request let (tx_request_id, tx_request) = create_browser_transaction(); @@ -267,7 +267,7 @@ mod tests { server.start().await.unwrap(); // Connect Alice's wallet - connect_wallet(&client, &server, Connection(ALICE, 1)).await; + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Create a random transaction response without a matching request let tx_request_id = Uuid::new_v4(); @@ -308,7 +308,7 @@ mod tests { server.start().await.unwrap(); // Connect Alice's wallet - connect_wallet(&client, &server, Connection(ALICE, 1)).await; + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Simulate the wallet sending a response with an invalid UUID let resp = client diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index 93a23106bb338..30205b3e7f6e2 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -10,10 +10,10 @@ use crate::wallet_browser::{ #[derive(Debug, Clone)] pub(crate) struct BrowserWalletState { - /// Current information about the wallet connection - pub connection: Arc>>, - /// Request/response queue for transactions - pub transactions: Arc>>, + /// Current information about the wallet connection. + connection: Arc>>, + /// Request/response queue for transactions. + transactions: Arc>>, } impl Default for BrowserWalletState { @@ -23,6 +23,7 @@ impl Default for BrowserWalletState { } impl BrowserWalletState { + /// Create a new browser wallet state. pub fn new() -> Self { Self { connection: Arc::new(Mutex::new(None)), @@ -30,7 +31,7 @@ impl BrowserWalletState { } } - /// Check if wallet is connected + /// Check if wallet is connected. pub fn is_connected(&self) -> bool { self.connection.lock().is_some() } @@ -55,9 +56,9 @@ impl BrowserWalletState { self.transactions.lock().has_request(id) } - /// Get next transaction request. - pub fn get_next_transaction_request(&self) -> Option { - self.transactions.lock().get_request().cloned() + /// Read the next transaction request. + pub fn read_next_transaction_request(&self) -> Option { + self.transactions.lock().read_request().cloned() } // Remove a transaction request. @@ -68,11 +69,12 @@ impl BrowserWalletState { /// Add transaction response. pub fn add_transaction_response(&self, response: TransactionResponse) { let id = response.id; - self.transactions.lock().add_response(id, response); - self.transactions.lock().remove_request(&id); + let mut transactions = self.transactions.lock(); + transactions.add_response(id, response); + transactions.remove_request(&id); } - /// Get transaction response. + /// Get transaction response, removing it from the queue. pub fn get_transaction_response(&self, id: &Uuid) -> Option { self.transactions.lock().get_response(id) } diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index 9bebaf8da6c8b..3331f422092a6 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -35,6 +35,7 @@ impl BrowserApiResponse { /// Represents a transaction request sent to the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] pub struct BrowserTransaction { /// The unique identifier for the transaction. pub id: Uuid, @@ -45,6 +46,7 @@ pub struct BrowserTransaction { /// Represents a transaction response sent from the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] pub(crate) struct TransactionResponse { /// The unique identifier for the transaction, must match the request ID sent earlier. pub id: Uuid, @@ -54,6 +56,13 @@ pub(crate) struct TransactionResponse { pub error: Option, } -/// Represents an account update sent from the browser wallet. -#[derive(Debug, Clone, Default, Copy, PartialEq, Eq, Serialize, Deserialize)] +/// Represents an active connection to a browser wallet. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub struct Connection(pub Address, pub ChainId); + +impl Connection { + /// Create a new connection instance. + pub fn new(address: Address, chain_id: ChainId) -> Self { + Self(address, chain_id) + } +} From 6b11c40a7a7396291777412df3c4ca27331f0b2d Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 15:14:06 +0100 Subject: [PATCH 15/42] move tests --- crates/wallets/src/wallet_browser/mod.rs | 314 +++++++++++++++++++ crates/wallets/src/wallet_browser/server.rs | 320 +------------------- 2 files changed, 324 insertions(+), 310 deletions(-) diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index 6b4c463dcc0a7..821966cfe1c30 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -7,3 +7,317 @@ mod app; mod handlers; mod queue; mod types; + +#[cfg(test)] +mod tests { + use std::time::Duration; + + use alloy_primitives::{Address, TxHash, TxKind, U256, address}; + use alloy_rpc_types::TransactionRequest; + use tokio::task::JoinHandle; + use uuid::Uuid; + + use crate::wallet_browser::{ + error::BrowserWalletError, + server::BrowserWalletServer, + types::{BrowserApiResponse, BrowserTransaction, Connection, TransactionResponse}, + }; + + const ALICE: Address = address!("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); + const BOB: Address = address!("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"); + + #[tokio::test] + async fn test_setup_server() { + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); + + // Check initial state + assert!(!server.is_connected()); + assert!(!server.open_browser()); + assert!(server.timeout() == Duration::from_secs(5)); + + // Start server + server.start().await.unwrap(); + + // Check that the transaction request queue is empty + check_transaction_request_queue_empty(&server).await; + + // Stop server + server.stop().await.unwrap(); + } + + #[tokio::test] + async fn test_connect_disconnect_wallet() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); + server.start().await.unwrap(); + + // Check that the transaction request queue is empty + check_transaction_request_queue_empty(&server).await; + + // Connect Alice's wallet + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + // Check connection state + let Connection(address, chain_id) = + server.get_connection().expect("expected an active wallet connection"); + assert_eq!(address, ALICE); + assert_eq!(chain_id, 1); + + // Disconnect wallet + disconnect_wallet(&client, &server).await; + + // Check disconnected state + assert!(!server.is_connected()); + + // Connect Bob's wallet + connect_wallet(&client, &server, Connection::new(BOB, 42)).await; + + // Check connection state + let Connection(address, chain_id) = + server.get_connection().expect("expected an active wallet connection"); + assert_eq!(address, BOB); + assert_eq!(chain_id, 42); + + // Stop server + server.stop().await.unwrap(); + } + + #[tokio::test] + async fn test_send_transaction_client_accept() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + server.start().await.unwrap(); + + // Connect Alice's wallet + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + // Create a browser transaction request + let (tx_request_id, tx_request) = create_browser_transaction(); + + // Spawn the signing flow in the background + let handle = wait_for_signing(&server, tx_request).await; + + // Check transaction request + check_transaction_request_content(&server, tx_request_id).await; + + // Simulate the wallet accepting and signing the tx + let resp = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&TransactionResponse { + id: tx_request_id, + hash: Some(TxHash::random()), + error: None, + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + assert_eq!(resp.status(), reqwest::StatusCode::OK); + + // The join handle should now return the tx hash + let res = handle.await.expect("task panicked"); + match res { + Ok(hash) => { + assert!(hash != TxHash::new([0; 32])); + } + other => panic!("expected success, got {other:?}"), + } + } + + #[tokio::test] + async fn test_send_transaction_client_not_requested() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + server.start().await.unwrap(); + + // Connect Alice's wallet + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + // Create a random transaction response without a matching request + let tx_request_id = Uuid::new_v4(); + + // Simulate the wallet sending a response for an unknown request + let resp = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&TransactionResponse { + id: tx_request_id, + hash: Some(TxHash::random()), + error: None, + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + + assert_eq!(resp.status(), reqwest::StatusCode::OK); + + // Assert that no transaction without a matching request is accepted + let api: BrowserApiResponse<()> = resp.json().await.unwrap(); + match api { + BrowserApiResponse::Error { message } => { + assert_eq!(message, "Unknown transaction id"); + } + _ => panic!("expected error response"), + } + } + + #[tokio::test] + async fn test_send_transaction_invalid_response_format() { + // non uuid + + let client = reqwest::Client::new(); + + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + server.start().await.unwrap(); + + // Connect Alice's wallet + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + // Simulate the wallet sending a response with an invalid UUID + let resp = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .body( + r#"{ + "id": "invalid-uuid", + "hash": "invalid-hash", + "error": null + }"#, + ) + .header("Content-Type", "application/json") + .send() + .await + .unwrap(); + + // The server should respond with a 422 Unprocessable Entity status + assert_eq!(resp.status(), reqwest::StatusCode::UNPROCESSABLE_ENTITY); + } + + #[tokio::test] + async fn test_send_transaction_client_reject() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + server.start().await.unwrap(); + + // Connect Alice's wallet + connect_wallet(&client, &server, Connection(ALICE, 1)).await; + + // Create a browser transaction request + let (tx_request_id, tx_request) = create_browser_transaction(); + + // Spawn the signing flow in the background + let handle = wait_for_signing(&server, tx_request).await; + + // Check transaction request + check_transaction_request_content(&server, tx_request_id).await; + + // Simulate the wallet rejecting the tx + let resp = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&TransactionResponse { + id: tx_request_id, + hash: None, + error: Some("User rejected the transaction".into()), + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + assert_eq!(resp.status(), reqwest::StatusCode::OK); + + // The join handle should now return a rejection error + let res = handle.await.expect("task panicked"); + match res { + Err(BrowserWalletError::Rejected { operation, reason }) => { + assert_eq!(operation, "Transaction"); + assert_eq!(reason, "User rejected the transaction"); + } + other => panic!("expected rejection, got {other:?}"), + } + } + + /// Helper to connect a wallet to the server. + async fn connect_wallet( + client: &reqwest::Client, + server: &BrowserWalletServer, + connection: Connection, + ) { + let resp = client + .post(format!("http://localhost:{}/api/connection", server.port())) + .json(&connection) + .send(); + assert!(resp.await.is_ok()); + } + + /// Helper to disconnect a wallet from the server. + async fn disconnect_wallet(client: &reqwest::Client, server: &BrowserWalletServer) { + let resp = client + .post(format!("http://localhost:{}/api/connection", server.port())) + .json(&Option::::None) + .send(); + assert!(resp.await.is_ok()); + } + + /// Spawn the signing flow in the background and return the join handle. + async fn wait_for_signing( + server: &BrowserWalletServer, + tx_request: BrowserTransaction, + ) -> JoinHandle> { + // Spawn the signing flow in the background + let browser_server = server.clone(); + let join_handle = + tokio::spawn(async move { browser_server.request_transaction(tx_request).await }); + tokio::task::yield_now().await; + tokio::time::sleep(Duration::from_millis(100)).await; + + join_handle + } + + /// Create a simple browser transaction request. + fn create_browser_transaction() -> (Uuid, BrowserTransaction) { + let id = Uuid::new_v4(); + let tx = BrowserTransaction { + id, + request: TransactionRequest { + from: Some(ALICE), + to: Some(TxKind::Call(BOB)), + value: Some(U256::from(1000)), + ..Default::default() + }, + }; + (id, tx) + } + + /// Check that the transaction request queue is empty, if not panic. + async fn check_transaction_request_queue_empty(server: &BrowserWalletServer) { + let url = format!("http://localhost:{}/api/transaction/request", server.port()); + let resp = reqwest::get(&url).await.unwrap(); + + let BrowserApiResponse::Error { message } = + resp.json::>().await.unwrap() + else { + panic!("expected BrowserApiResponse::Error (no pending transaction), but got Ok"); + }; + + assert_eq!(message, "No pending transaction"); + } + + /// Check that the transaction request matches the expected request ID and fields. + async fn check_transaction_request_content(server: &BrowserWalletServer, tx_request_id: Uuid) { + let url = format!("http://localhost:{}/api/transaction/request", server.port()); + let resp = reqwest::get(&url).await.unwrap(); + + let BrowserApiResponse::Ok(pending_tx) = + resp.json::>().await.unwrap() + else { + panic!("expected BrowserApiResponse::Ok with a pending transaction"); + }; + + assert_eq!(pending_tx.id, tx_request_id); + assert_eq!(pending_tx.request.from, Some(ALICE)); + assert_eq!(pending_tx.request.to, Some(TxKind::Call(BOB))); + assert_eq!(pending_tx.request.value, Some(U256::from(1000))); + } +} diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 61b8cb6639de7..6393169485632 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -96,6 +96,16 @@ impl BrowserWalletServer { self.port } + /// Check if the browser should be opened. + pub fn open_browser(&self) -> bool { + self.open_browser + } + + /// Get the timeout duration. + pub fn timeout(&self) -> Duration { + self.timeout + } + /// Check if a wallet is connected. pub fn is_connected(&self) -> bool { self.state.is_connected() @@ -146,313 +156,3 @@ impl BrowserWalletServer { } } } - -#[cfg(test)] -mod tests { - use super::*; - - use alloy_primitives::{Address, TxKind, U256, address}; - use alloy_rpc_types::TransactionRequest; - use tokio::task::JoinHandle; - use uuid::Uuid; - - use crate::wallet_browser::types::{BrowserApiResponse, TransactionResponse}; - - const ALICE: Address = address!("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); - const BOB: Address = address!("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"); - - #[tokio::test] - async fn test_setup_server() { - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); - - // Check initial state - assert!(!server.is_connected()); - assert!(!server.open_browser); - assert!(server.timeout == Duration::from_secs(5)); - - // Start server - server.start().await.unwrap(); - - // Check that the transaction request queue is empty - check_transaction_request_queue_empty(&server).await; - - // Stop server - server.stop().await.unwrap(); - } - - #[tokio::test] - async fn test_connect_disconnect_wallet() { - let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); - server.start().await.unwrap(); - - // Check that the transaction request queue is empty - check_transaction_request_queue_empty(&server).await; - - // Connect Alice's wallet - connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; - - // Check connection state - let Connection(address, chain_id) = - server.get_connection().expect("expected an active wallet connection"); - assert_eq!(address, ALICE); - assert_eq!(chain_id, 1); - - // Disconnect wallet - disconnect_wallet(&client, &server).await; - - // Check disconnected state - assert!(!server.is_connected()); - - // Connect Bob's wallet - connect_wallet(&client, &server, Connection::new(BOB, 42)).await; - - // Check connection state - let Connection(address, chain_id) = - server.get_connection().expect("expected an active wallet connection"); - assert_eq!(address, BOB); - assert_eq!(chain_id, 42); - - // Stop server - server.stop().await.unwrap(); - } - - #[tokio::test] - async fn test_send_transaction_client_accept() { - let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); - server.start().await.unwrap(); - - // Connect Alice's wallet - connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; - - // Create a browser transaction request - let (tx_request_id, tx_request) = create_browser_transaction(); - - // Spawn the signing flow in the background - let handle = wait_for_signing(&server, tx_request).await; - - // Check transaction request - check_transaction_request_content(&server, tx_request_id).await; - - // Simulate the wallet accepting and signing the tx - let resp = client - .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { - id: tx_request_id, - hash: Some(TxHash::random()), - error: None, - }) - .send() - .await - .unwrap() - .error_for_status() - .unwrap(); - assert_eq!(resp.status(), reqwest::StatusCode::OK); - - // The join handle should now return the tx hash - let res = handle.await.expect("task panicked"); - match res { - Ok(hash) => { - assert!(hash != TxHash::new([0; 32])); - } - other => panic!("expected success, got {other:?}"), - } - } - - #[tokio::test] - async fn test_send_transaction_client_not_requested() { - let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); - server.start().await.unwrap(); - - // Connect Alice's wallet - connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; - - // Create a random transaction response without a matching request - let tx_request_id = Uuid::new_v4(); - - // Simulate the wallet sending a response for an unknown request - let resp = client - .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { - id: tx_request_id, - hash: Some(TxHash::random()), - error: None, - }) - .send() - .await - .unwrap() - .error_for_status() - .unwrap(); - - assert_eq!(resp.status(), reqwest::StatusCode::OK); - - // Assert that no transaction without a matching request is accepted - let api: BrowserApiResponse<()> = resp.json().await.unwrap(); - match api { - BrowserApiResponse::Error { message } => { - assert_eq!(message, "Unknown transaction id"); - } - _ => panic!("expected error response"), - } - } - - #[tokio::test] - async fn test_send_transaction_invalid_response_format() { - // non uuid - - let client = reqwest::Client::new(); - - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); - server.start().await.unwrap(); - - // Connect Alice's wallet - connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; - - // Simulate the wallet sending a response with an invalid UUID - let resp = client - .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .body( - r#"{ - "id": "invalid-uuid", - "hash": "invalid-hash", - "error": null - }"#, - ) - .header("Content-Type", "application/json") - .send() - .await - .unwrap(); - - // The server should respond with a 422 Unprocessable Entity status - assert_eq!(resp.status(), reqwest::StatusCode::UNPROCESSABLE_ENTITY); - } - - #[tokio::test] - async fn test_send_transaction_client_reject() { - let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); - server.start().await.unwrap(); - - // Connect Alice's wallet - connect_wallet(&client, &server, Connection(ALICE, 1)).await; - - // Create a browser transaction request - let (tx_request_id, tx_request) = create_browser_transaction(); - - // Spawn the signing flow in the background - let handle = wait_for_signing(&server, tx_request).await; - - // Check transaction request - check_transaction_request_content(&server, tx_request_id).await; - - // Simulate the wallet rejecting the tx - let resp = client - .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { - id: tx_request_id, - hash: None, - error: Some("User rejected the transaction".into()), - }) - .send() - .await - .unwrap() - .error_for_status() - .unwrap(); - assert_eq!(resp.status(), reqwest::StatusCode::OK); - - // The join handle should now return a rejection error - let res = handle.await.expect("task panicked"); - match res { - Err(BrowserWalletError::Rejected { operation, reason }) => { - assert_eq!(operation, "Transaction"); - assert_eq!(reason, "User rejected the transaction"); - } - other => panic!("expected rejection, got {other:?}"), - } - } - - /// Helper to connect a wallet to the server. - async fn connect_wallet( - client: &reqwest::Client, - server: &BrowserWalletServer, - connection: Connection, - ) { - let resp = client - .post(format!("http://localhost:{}/api/connection", server.port())) - .json(&connection) - .send(); - assert!(resp.await.is_ok()); - } - - /// Helper to disconnect a wallet from the server. - async fn disconnect_wallet(client: &reqwest::Client, server: &BrowserWalletServer) { - let resp = client - .post(format!("http://localhost:{}/api/connection", server.port())) - .json(&Option::::None) - .send(); - assert!(resp.await.is_ok()); - } - - /// Spawn the signing flow in the background and return the join handle. - async fn wait_for_signing( - server: &BrowserWalletServer, - tx_request: BrowserTransaction, - ) -> JoinHandle> { - // Spawn the signing flow in the background - let browser_server = server.clone(); - let join_handle = - tokio::spawn(async move { browser_server.request_transaction(tx_request).await }); - tokio::task::yield_now().await; - tokio::time::sleep(Duration::from_millis(100)).await; - - join_handle - } - - /// Create a simple browser transaction request. - fn create_browser_transaction() -> (Uuid, BrowserTransaction) { - let id = Uuid::new_v4(); - let tx = BrowserTransaction { - id, - request: TransactionRequest { - from: Some(ALICE), - to: Some(TxKind::Call(BOB)), - value: Some(U256::from(1000)), - ..Default::default() - }, - }; - (id, tx) - } - - /// Check that the transaction request queue is empty, if not panic. - async fn check_transaction_request_queue_empty(server: &BrowserWalletServer) { - let url = format!("http://localhost:{}/api/transaction/request", server.port()); - let resp = reqwest::get(&url).await.unwrap(); - - let BrowserApiResponse::Error { message } = - resp.json::>().await.unwrap() - else { - panic!("expected BrowserApiResponse::Error (no pending transaction), but got Ok"); - }; - - assert_eq!(message, "No pending transaction"); - } - - /// Check that the transaction request matches the expected request ID and fields. - async fn check_transaction_request_content(server: &BrowserWalletServer, tx_request_id: Uuid) { - let url = format!("http://localhost:{}/api/transaction/request", server.port()); - let resp = reqwest::get(&url).await.unwrap(); - - let BrowserApiResponse::Ok(pending_tx) = - resp.json::>().await.unwrap() - else { - panic!("expected BrowserApiResponse::Ok with a pending transaction"); - }; - - assert_eq!(pending_tx.id, tx_request_id); - assert_eq!(pending_tx.request.from, Some(ALICE)); - assert_eq!(pending_tx.request.to, Some(TxKind::Call(BOB))); - assert_eq!(pending_tx.request.value, Some(U256::from(1000))); - } -} From 3f67cd0b5bb4d954c90fcc582c183a312e6512ba Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 15:32:24 +0100 Subject: [PATCH 16/42] expand test suite --- crates/wallets/src/wallet_browser/mod.rs | 261 ++++++++++++++++++++- crates/wallets/src/wallet_browser/types.rs | 1 - 2 files changed, 252 insertions(+), 10 deletions(-) diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index 821966cfe1c30..9c7efb12d43b3 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -26,14 +26,16 @@ mod tests { const ALICE: Address = address!("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); const BOB: Address = address!("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"); + const DEFAULT_TIMEOUT: Duration = Duration::from_secs(1); + #[tokio::test] async fn test_setup_server() { - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); // Check initial state assert!(!server.is_connected()); assert!(!server.open_browser()); - assert!(server.timeout() == Duration::from_secs(5)); + assert!(server.timeout() == DEFAULT_TIMEOUT); // Start server server.start().await.unwrap(); @@ -48,7 +50,7 @@ mod tests { #[tokio::test] async fn test_connect_disconnect_wallet() { let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(5)); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); server.start().await.unwrap(); // Check that the transaction request queue is empty @@ -82,10 +84,133 @@ mod tests { server.stop().await.unwrap(); } + #[tokio::test] + async fn test_switch_wallet() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + server.start().await.unwrap(); + + // Connect Alice, assert connected + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + let Connection(address, chain_id) = + server.get_connection().expect("expected an active wallet connection"); + assert_eq!(address, ALICE); + assert_eq!(chain_id, 1); + + // Connect Bob, assert switched + connect_wallet(&client, &server, Connection::new(BOB, 42)).await; + let Connection(address, chain_id) = + server.get_connection().expect("expected an active wallet connection"); + assert_eq!(address, BOB); + assert_eq!(chain_id, 42); + + server.stop().await.unwrap(); + } + + #[tokio::test] + async fn test_transaction_response_both_hash_and_error_rejected() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + // Enqueue a tx + let (tx_request_id, tx_request) = create_browser_transaction(); + let _handle = wait_for_signing(&server, tx_request).await; + check_transaction_request_content(&server, tx_request_id).await; + + // Wallet posts both hash and error -> should be rejected + let resp = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&TransactionResponse { + id: tx_request_id, + hash: Some(TxHash::random()), + error: Some("should not have both".into()), + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + + let api: BrowserApiResponse<()> = resp.json().await.unwrap(); + match api { + BrowserApiResponse::Error { message } => { + assert_eq!(message, "Only one of hash or error can be provided"); + } + _ => panic!("expected error response"), + } + } + + #[tokio::test] + async fn test_transaction_response_neither_hash_nor_error_rejected() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + let (tx_request_id, tx_request) = create_browser_transaction(); + let _handle = wait_for_signing(&server, tx_request).await; + check_transaction_request_content(&server, tx_request_id).await; + + // Neither hash nor error -> rejected + let resp = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&TransactionResponse { id: tx_request_id, hash: None, error: None }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + + let api: BrowserApiResponse<()> = resp.json().await.unwrap(); + match api { + BrowserApiResponse::Error { message } => { + assert_eq!(message, "Either hash or error must be provided"); + } + _ => panic!("expected error response"), + } + } + + #[tokio::test] + async fn test_transaction_response_zero_hash_rejected() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(2)); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + let (tx_request_id, tx_request) = create_browser_transaction(); + let _handle = wait_for_signing(&server, tx_request).await; + check_transaction_request_content(&server, tx_request_id).await; + + // Zero hash -> rejected + let zero = TxHash::new([0u8; 32]); + let resp = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&TransactionResponse { id: tx_request_id, hash: Some(zero), error: None }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + + let api: BrowserApiResponse<()> = resp.json().await.unwrap(); + match api { + BrowserApiResponse::Error { message } => { + // Message text per your handler; adjust if you use a different string. + assert!( + message.contains("Invalid") || message.contains("Malformed"), + "unexpected message: {message}" + ); + } + _ => panic!("expected error response"), + } + } + #[tokio::test] async fn test_send_transaction_client_accept() { let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); server.start().await.unwrap(); // Connect Alice's wallet @@ -128,7 +253,7 @@ mod tests { #[tokio::test] async fn test_send_transaction_client_not_requested() { let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); server.start().await.unwrap(); // Connect Alice's wallet @@ -165,11 +290,9 @@ mod tests { #[tokio::test] async fn test_send_transaction_invalid_response_format() { - // non uuid - let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); server.start().await.unwrap(); // Connect Alice's wallet @@ -197,7 +320,7 @@ mod tests { #[tokio::test] async fn test_send_transaction_client_reject() { let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(1)); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); server.start().await.unwrap(); // Connect Alice's wallet @@ -238,6 +361,111 @@ mod tests { } } + #[tokio::test] + async fn test_multiple_transaction_requests() { + let client = reqwest::Client::new(); + let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(2)); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + // Create multiple browser transaction requests + let (tx_request_id1, tx_request1) = create_browser_transaction(); + let (tx_request_id2, tx_request2) = create_different_browser_transaction(); + + // Spawn signing flows for both transactions concurrently + let handle1 = wait_for_signing(&server, tx_request1).await; + let handle2 = wait_for_signing(&server, tx_request2).await; + + // Check first transaction request + { + let url = format!("http://localhost:{}/api/transaction/request", server.port()); + let resp = reqwest::get(&url).await.unwrap(); + + let BrowserApiResponse::Ok(pending_tx) = + resp.json::>().await.unwrap() + else { + panic!("expected BrowserApiResponse::Ok with a pending transaction"); + }; + + assert_eq!( + pending_tx.id, tx_request_id1, + "expected the first transaction to be at the front of the queue" + ); + assert_eq!(pending_tx.request.from, Some(ALICE)); + assert_eq!(pending_tx.request.to, Some(TxKind::Call(BOB))); + assert_eq!(pending_tx.request.value, Some(U256::from(1000))); + } + + // Simulate the wallet accepting and signing the first transaction + let resp1 = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&TransactionResponse { + id: tx_request_id1, + hash: Some(TxHash::random()), + error: None, + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + assert_eq!(resp1.status(), reqwest::StatusCode::OK); + + let res1 = handle1.await.expect("first signing flow panicked"); + match res1 { + Ok(hash) => assert!(!hash.is_zero(), "first tx hash should not be zero"), + other => panic!("expected success, got {other:?}"), + } + + // Check second transaction request + { + let url = format!("http://localhost:{}/api/transaction/request", server.port()); + let resp = reqwest::get(&url).await.unwrap(); + + let BrowserApiResponse::Ok(pending_tx) = + resp.json::>().await.unwrap() + else { + panic!("expected BrowserApiResponse::Ok with a pending transaction"); + }; + + assert_eq!( + pending_tx.id, tx_request_id2, + "expected the second transaction to be pending after the first one completed" + ); + assert_eq!(pending_tx.request.from, Some(BOB)); + assert_eq!(pending_tx.request.to, Some(TxKind::Call(ALICE))); + assert_eq!(pending_tx.request.value, Some(U256::from(2000))); + } + + // Simulate the wallet rejecting the second transaction + let resp2 = client + .post(format!("http://localhost:{}/api/transaction/response", server.port())) + .json(&TransactionResponse { + id: tx_request_id2, + hash: None, + error: Some("User rejected the transaction".into()), + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + assert_eq!(resp2.status(), reqwest::StatusCode::OK); + + let res2 = handle2.await.expect("second signing flow panicked"); + match res2 { + Err(BrowserWalletError::Rejected { operation, reason }) => { + assert_eq!(operation, "Transaction"); + assert_eq!(reason, "User rejected the transaction"); + } + other => panic!("expected BrowserWalletError::Rejected, got {other:?}"), + } + + check_transaction_request_queue_empty(&server).await; + + server.stop().await.unwrap(); + } + /// Helper to connect a wallet to the server. async fn connect_wallet( client: &reqwest::Client, @@ -290,6 +518,21 @@ mod tests { (id, tx) } + /// Create a different browser transaction request (from the first one). + fn create_different_browser_transaction() -> (Uuid, BrowserTransaction) { + let id = Uuid::new_v4(); + let tx = BrowserTransaction { + id, + request: TransactionRequest { + from: Some(BOB), + to: Some(TxKind::Call(ALICE)), + value: Some(U256::from(2000)), + ..Default::default() + }, + }; + (id, tx) + } + /// Check that the transaction request queue is empty, if not panic. async fn check_transaction_request_queue_empty(server: &BrowserWalletServer) { let url = format!("http://localhost:{}/api/transaction/request", server.port()); diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index 3331f422092a6..a939ec5080b21 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -40,7 +40,6 @@ pub struct BrowserTransaction { /// The unique identifier for the transaction. pub id: Uuid, /// The transaction request details. - #[serde(flatten)] pub request: TransactionRequest, } From 5ef8040d2731018ebcdeaa809474c873a032adb1 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 15:33:45 +0100 Subject: [PATCH 17/42] clean up --- crates/wallets/src/wallet_browser/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index 9c7efb12d43b3..9d79f69f3c020 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -175,7 +175,7 @@ mod tests { #[tokio::test] async fn test_transaction_response_zero_hash_rejected() { let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(2)); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; @@ -364,7 +364,7 @@ mod tests { #[tokio::test] async fn test_multiple_transaction_requests() { let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, Duration::from_secs(2)); + let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; From 7a35d55139ef8e605a9bddeeca0fd6cce10099ba Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 15:34:32 +0100 Subject: [PATCH 18/42] nit --- crates/wallets/src/wallet_browser/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index 9d79f69f3c020..1016640705ade 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -362,7 +362,7 @@ mod tests { } #[tokio::test] - async fn test_multiple_transaction_requests() { + async fn test_send_multiple_transaction_requests() { let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); server.start().await.unwrap(); From 90ab4ef2fc33b09d6e697a0770f5fa82d819a2aa Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 16:56:22 +0100 Subject: [PATCH 19/42] add basic session token --- .../src/wallet_browser/app/assets/index.html | 243 +++++++++++++++++- crates/wallets/src/wallet_browser/handlers.rs | 29 ++- crates/wallets/src/wallet_browser/server.rs | 8 +- crates/wallets/src/wallet_browser/state.rs | 16 +- 4 files changed, 284 insertions(+), 12 deletions(-) diff --git a/crates/wallets/src/wallet_browser/app/assets/index.html b/crates/wallets/src/wallet_browser/app/assets/index.html index 111d80dfd508d..bdac8f6bab7e9 100644 --- a/crates/wallets/src/wallet_browser/app/assets/index.html +++ b/crates/wallets/src/wallet_browser/app/assets/index.html @@ -3,9 +3,250 @@ + Foundry Browser Wallet + - Hello, Foundry Browser Wallet! +

Foundry Browser Wallet

+ +
+

Wallet Connection

+ + + +
Status: disconnected
+
+ +
+

Pending Transaction

+

+    
+ +
+ +
+ +
+

Log

+

+    
+ + diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index 5b7fcbd2402d5..2073f8c012c20 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -13,12 +13,22 @@ use crate::wallet_browser::{ types::{BrowserApiResponse, BrowserTransaction, Connection, TransactionResponse}, }; -pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { +pub(crate) async fn serve_index( + State(state): State>, +) -> impl axum::response::IntoResponse { + let token = state.session_token(); + let html = contents::INDEX_HTML.replace( + "", + &format!(r#""#), + ); + let mut headers = HeaderMap::new(); headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/html; charset=utf-8")); - (headers, Html(contents::INDEX_HTML)) + (headers, Html(html)) } +/// Get the next pending transaction request. +/// Route: GET /api/transaction/request pub(crate) async fn get_next_transaction_request( State(state): State>, ) -> Json> { @@ -28,6 +38,8 @@ pub(crate) async fn get_next_transaction_request( } } +/// Post a transaction response (signed or error). +/// Route: POST /api/transaction/response pub(crate) async fn post_transaction_response( State(state): State>, Json(body): Json, @@ -68,11 +80,22 @@ pub(crate) async fn post_transaction_response( Json(BrowserApiResponse::ok()) } +/// Get current connection information. +/// Route: GET /api/connection +pub(crate) async fn get_connection_info( + State(state): State>, +) -> Json>> { + let connection = state.get_connection(); + + Json(BrowserApiResponse::with_data(connection)) +} + +/// Post connection update (connect or disconnect). +/// Route: POST /api/connection pub(crate) async fn post_connection_update( State(state): State>, Json(body): Json>, ) -> Json { - // Update the connection state, setting it to None if disconnected. state.set_connection(body); Json(BrowserApiResponse::ok()) diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 6393169485632..de1f7f05f8a2e 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -13,6 +13,7 @@ use tokio::{ net::TcpListener, sync::{Mutex, oneshot}, }; +use uuid::Uuid; use crate::wallet_browser::{ error::BrowserWalletError, @@ -31,12 +32,16 @@ pub struct BrowserWalletServer { timeout: Duration, } +// TODO: harden using session token + impl BrowserWalletServer { /// Create a new browser wallet server. pub fn new(port: u16, open_browser: bool, timeout: Duration) -> Self { + let session_token = Arc::new(Uuid::new_v4().to_string()); + Self { port, - state: Arc::new(BrowserWalletState::new()), + state: Arc::new(BrowserWalletState::new(session_token)), shutdown_tx: None, open_browser, timeout, @@ -51,6 +56,7 @@ impl BrowserWalletServer { // API endpoints .route("/api/transaction/request", get(handlers::get_next_transaction_request)) .route("/api/transaction/response", post(handlers::post_transaction_response)) + .route("/api/connection", get(handlers::get_connection_info)) .route("/api/connection", post(handlers::post_connection_update)) .with_state(Arc::clone(&self.state)); diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index 30205b3e7f6e2..38b69b182fe9f 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -14,23 +14,25 @@ pub(crate) struct BrowserWalletState { connection: Arc>>, /// Request/response queue for transactions. transactions: Arc>>, -} - -impl Default for BrowserWalletState { - fn default() -> Self { - Self::new() - } + /// Unique session token for the wallet browser instance. + session_token: Arc, } impl BrowserWalletState { /// Create a new browser wallet state. - pub fn new() -> Self { + pub fn new(session_token: Arc) -> Self { Self { + session_token, connection: Arc::new(Mutex::new(None)), transactions: Arc::new(Mutex::new(RequestQueue::new())), } } + /// Get the session token. + pub fn session_token(&self) -> Arc { + self.session_token.clone() + } + /// Check if wallet is connected. pub fn is_connected(&self) -> bool { self.connection.lock().is_some() From 68f3bddd9d1e6219c1155cb3c4a64fd524b9e684 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 17:16:46 +0100 Subject: [PATCH 20/42] apply session token, fix tests by adding session token to reqwest --- crates/wallets/src/wallet_browser/mod.rs | 72 ++++++++++++++------- crates/wallets/src/wallet_browser/router.rs | 44 +++++++++++++ crates/wallets/src/wallet_browser/server.rs | 23 ++----- 3 files changed, 98 insertions(+), 41 deletions(-) create mode 100644 crates/wallets/src/wallet_browser/router.rs diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index 1016640705ade..87fbc12bc8579 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -6,6 +6,7 @@ pub mod state; mod app; mod handlers; mod queue; +mod router; mod types; #[cfg(test)] @@ -14,6 +15,7 @@ mod tests { use alloy_primitives::{Address, TxHash, TxKind, U256, address}; use alloy_rpc_types::TransactionRequest; + use axum::http::{HeaderMap, HeaderValue}; use tokio::task::JoinHandle; use uuid::Uuid; @@ -31,6 +33,7 @@ mod tests { #[tokio::test] async fn test_setup_server() { let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); // Check initial state assert!(!server.is_connected()); @@ -41,7 +44,7 @@ mod tests { server.start().await.unwrap(); // Check that the transaction request queue is empty - check_transaction_request_queue_empty(&server).await; + check_transaction_request_queue_empty(&client, &server).await; // Stop server server.stop().await.unwrap(); @@ -49,12 +52,12 @@ mod tests { #[tokio::test] async fn test_connect_disconnect_wallet() { - let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); server.start().await.unwrap(); // Check that the transaction request queue is empty - check_transaction_request_queue_empty(&server).await; + check_transaction_request_queue_empty(&client, &server).await; // Connect Alice's wallet connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; @@ -86,8 +89,8 @@ mod tests { #[tokio::test] async fn test_switch_wallet() { - let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); server.start().await.unwrap(); // Connect Alice, assert connected @@ -109,15 +112,15 @@ mod tests { #[tokio::test] async fn test_transaction_response_both_hash_and_error_rejected() { - let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Enqueue a tx let (tx_request_id, tx_request) = create_browser_transaction(); let _handle = wait_for_signing(&server, tx_request).await; - check_transaction_request_content(&server, tx_request_id).await; + check_transaction_request_content(&client, &server, tx_request_id).await; // Wallet posts both hash and error -> should be rejected let resp = client @@ -144,14 +147,14 @@ mod tests { #[tokio::test] async fn test_transaction_response_neither_hash_nor_error_rejected() { - let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; let (tx_request_id, tx_request) = create_browser_transaction(); let _handle = wait_for_signing(&server, tx_request).await; - check_transaction_request_content(&server, tx_request_id).await; + check_transaction_request_content(&client, &server, tx_request_id).await; // Neither hash nor error -> rejected let resp = client @@ -174,14 +177,14 @@ mod tests { #[tokio::test] async fn test_transaction_response_zero_hash_rejected() { - let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; let (tx_request_id, tx_request) = create_browser_transaction(); let _handle = wait_for_signing(&server, tx_request).await; - check_transaction_request_content(&server, tx_request_id).await; + check_transaction_request_content(&client, &server, tx_request_id).await; // Zero hash -> rejected let zero = TxHash::new([0u8; 32]); @@ -209,8 +212,8 @@ mod tests { #[tokio::test] async fn test_send_transaction_client_accept() { - let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); server.start().await.unwrap(); // Connect Alice's wallet @@ -223,7 +226,7 @@ mod tests { let handle = wait_for_signing(&server, tx_request).await; // Check transaction request - check_transaction_request_content(&server, tx_request_id).await; + check_transaction_request_content(&client, &server, tx_request_id).await; // Simulate the wallet accepting and signing the tx let resp = client @@ -252,8 +255,8 @@ mod tests { #[tokio::test] async fn test_send_transaction_client_not_requested() { - let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); server.start().await.unwrap(); // Connect Alice's wallet @@ -290,9 +293,8 @@ mod tests { #[tokio::test] async fn test_send_transaction_invalid_response_format() { - let client = reqwest::Client::new(); - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); server.start().await.unwrap(); // Connect Alice's wallet @@ -319,8 +321,8 @@ mod tests { #[tokio::test] async fn test_send_transaction_client_reject() { - let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); server.start().await.unwrap(); // Connect Alice's wallet @@ -333,7 +335,7 @@ mod tests { let handle = wait_for_signing(&server, tx_request).await; // Check transaction request - check_transaction_request_content(&server, tx_request_id).await; + check_transaction_request_content(&client, &server, tx_request_id).await; // Simulate the wallet rejecting the tx let resp = client @@ -363,8 +365,8 @@ mod tests { #[tokio::test] async fn test_send_multiple_transaction_requests() { - let client = reqwest::Client::new(); let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); + let client = client_with_token(&server); server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; @@ -461,11 +463,18 @@ mod tests { other => panic!("expected BrowserWalletError::Rejected, got {other:?}"), } - check_transaction_request_queue_empty(&server).await; + check_transaction_request_queue_empty(&client, &server).await; server.stop().await.unwrap(); } + /// Helper to create a reqwest client with the session token header. + fn client_with_token(server: &BrowserWalletServer) -> reqwest::Client { + let mut headers = HeaderMap::new(); + headers.insert("X-Session-Token", HeaderValue::from_str(&server.session_token()).unwrap()); + reqwest::Client::builder().default_headers(headers).build().unwrap() + } + /// Helper to connect a wallet to the server. async fn connect_wallet( client: &reqwest::Client, @@ -534,9 +543,15 @@ mod tests { } /// Check that the transaction request queue is empty, if not panic. - async fn check_transaction_request_queue_empty(server: &BrowserWalletServer) { - let url = format!("http://localhost:{}/api/transaction/request", server.port()); - let resp = reqwest::get(&url).await.unwrap(); + async fn check_transaction_request_queue_empty( + client: &reqwest::Client, + server: &BrowserWalletServer, + ) { + let resp = client + .get(format!("http://localhost:{}/api/transaction/request", server.port())) + .send() + .await + .unwrap(); let BrowserApiResponse::Error { message } = resp.json::>().await.unwrap() @@ -548,9 +563,16 @@ mod tests { } /// Check that the transaction request matches the expected request ID and fields. - async fn check_transaction_request_content(server: &BrowserWalletServer, tx_request_id: Uuid) { - let url = format!("http://localhost:{}/api/transaction/request", server.port()); - let resp = reqwest::get(&url).await.unwrap(); + async fn check_transaction_request_content( + client: &reqwest::Client, + server: &BrowserWalletServer, + tx_request_id: Uuid, + ) { + let resp = client + .get(format!("http://localhost:{}/api/transaction/request", server.port())) + .send() + .await + .unwrap(); let BrowserApiResponse::Ok(pending_tx) = resp.json::>().await.unwrap() diff --git a/crates/wallets/src/wallet_browser/router.rs b/crates/wallets/src/wallet_browser/router.rs new file mode 100644 index 0000000000000..d5af3b0cfaa63 --- /dev/null +++ b/crates/wallets/src/wallet_browser/router.rs @@ -0,0 +1,44 @@ +use std::sync::Arc; + +use axum::{ + Router, + extract::{Request, State}, + http::StatusCode, + middleware::{self, Next}, + response::Response, + routing::{get, post}, +}; + +use crate::wallet_browser::{handlers, state::BrowserWalletState}; + +pub async fn build_router(state: Arc) -> Router { + let api = Router::new() + .route("/transaction/request", get(handlers::get_next_transaction_request)) + .route("/transaction/response", post(handlers::post_transaction_response)) + .route("/connection", get(handlers::get_connection_info)) + .route("/connection", post(handlers::post_connection_update)) + .route_layer(middleware::from_fn_with_state(state.clone(), require_session_token)) + .with_state(state.clone()); + + Router::new().route("/", get(handlers::serve_index)).nest("/api", api).with_state(state) +} + +async fn require_session_token( + State(state): State>, + req: Request, + next: Next, +) -> Result { + let expected = state.session_token(); // Arc + let ok = req + .headers() + .get("X-Session-Token") + .and_then(|v| v.to_str().ok()) + .map(|v| v == expected.as_str()) + .unwrap_or(false); + + if !ok { + return Err(StatusCode::FORBIDDEN); + } + + Ok(next.run(req).await) +} diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index de1f7f05f8a2e..0f1d8769d4f66 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -5,10 +5,6 @@ use std::{ }; use alloy_primitives::TxHash; -use axum::{ - Router, - routing::{get, post}, -}; use tokio::{ net::TcpListener, sync::{Mutex, oneshot}, @@ -17,7 +13,7 @@ use uuid::Uuid; use crate::wallet_browser::{ error::BrowserWalletError, - handlers, + router::build_router, state::BrowserWalletState, types::{BrowserTransaction, Connection}, }; @@ -32,8 +28,6 @@ pub struct BrowserWalletServer { timeout: Duration, } -// TODO: harden using session token - impl BrowserWalletServer { /// Create a new browser wallet server. pub fn new(port: u16, open_browser: bool, timeout: Duration) -> Self { @@ -50,15 +44,7 @@ impl BrowserWalletServer { /// Start the server and open browser. pub async fn start(&mut self) -> Result<(), BrowserWalletError> { - let router = Router::new() - // Serve browser wallet application - .route("/", get(handlers::serve_index)) - // API endpoints - .route("/api/transaction/request", get(handlers::get_next_transaction_request)) - .route("/api/transaction/response", post(handlers::post_transaction_response)) - .route("/api/connection", get(handlers::get_connection_info)) - .route("/api/connection", post(handlers::post_connection_update)) - .with_state(Arc::clone(&self.state)); + let router = build_router(self.state.clone()).await; let addr = SocketAddr::from(([127, 0, 0, 1], self.port)); let listener = TcpListener::bind(addr) @@ -112,6 +98,11 @@ impl BrowserWalletServer { self.timeout } + /// Get the session token. + pub fn session_token(&self) -> Arc { + self.state.session_token() + } + /// Check if a wallet is connected. pub fn is_connected(&self) -> bool { self.state.is_connected() From 847050e14ac2a062157112b442e265a420107c67 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 17:19:19 +0100 Subject: [PATCH 21/42] fix test --- crates/wallets/src/wallet_browser/mod.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index 87fbc12bc8579..92831bf151469 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -380,8 +380,11 @@ mod tests { // Check first transaction request { - let url = format!("http://localhost:{}/api/transaction/request", server.port()); - let resp = reqwest::get(&url).await.unwrap(); + let resp = client + .get(format!("http://localhost:{}/api/transaction/request", server.port())) + .send() + .await + .unwrap(); let BrowserApiResponse::Ok(pending_tx) = resp.json::>().await.unwrap() @@ -421,8 +424,11 @@ mod tests { // Check second transaction request { - let url = format!("http://localhost:{}/api/transaction/request", server.port()); - let resp = reqwest::get(&url).await.unwrap(); + let resp = client + .get(format!("http://localhost:{}/api/transaction/request", server.port())) + .send() + .await + .unwrap(); let BrowserApiResponse::Ok(pending_tx) = resp.json::>().await.unwrap() From 1395160af0e265bba0eaa9d24daaa1c2255ac6ac Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 17:26:38 +0100 Subject: [PATCH 22/42] fix reqwest openssl issue, use workspace version --- Cargo.lock | 114 +------------------------------------- crates/wallets/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 114 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a83a9279936b7..53e0a50b93ea4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4088,21 +4088,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "forge" version = "1.4.4" @@ -5574,22 +5559,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - [[package]] name = "hyper-util" version = "0.1.17" @@ -6625,23 +6594,6 @@ dependencies = [ "syn 2.0.108", ] -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", -] - [[package]] name = "ndk-context" version = "0.1.1" @@ -7096,50 +7048,12 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "openssl" -version = "0.10.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" -dependencies = [ - "bitflags 2.10.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.108", -] - [[package]] name = "openssl-probe" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" -[[package]] -name = "openssl-sys" -version = "0.9.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "option-ext" version = "0.2.0" @@ -8202,13 +8116,11 @@ dependencies = [ "http-body-util", "hyper", "hyper-rustls", - "hyper-tls", "hyper-util", "js-sys", "log", "mime", "mime_guess", - "native-tls", "percent-encoding", "pin-project-lite", "quinn", @@ -8220,7 +8132,6 @@ dependencies = [ "serde_urlencoded", "sync_wrapper", "tokio", - "tokio-native-tls", "tokio-rustls", "tokio-util", "tower", @@ -8688,7 +8599,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.5.1", + "security-framework", ] [[package]] @@ -8931,19 +8842,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.10.0", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - [[package]] name = "security-framework" version = "3.5.1" @@ -10139,16 +10037,6 @@ dependencies = [ "syn 2.0.108", ] -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.26.4" diff --git a/crates/wallets/Cargo.toml b/crates/wallets/Cargo.toml index 25de7a3edbbb3..ebaa9c67e44e7 100644 --- a/crates/wallets/Cargo.toml +++ b/crates/wallets/Cargo.toml @@ -53,7 +53,7 @@ eth-keystore = "0.5.0" [dev-dependencies] tokio = { workspace = true, features = ["macros"] } -reqwest = { version = "0.12", features = ["json"] } +reqwest = { workspace = true, features = ["json"] } [features] aws-kms = ["dep:alloy-signer-aws", "dep:aws-config"] From 6fa6645edccccd6768e3e12c8c22edc757991dd1 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 27 Oct 2025 19:15:35 +0100 Subject: [PATCH 23/42] harden CSP, inject session token into JS, define 0 cache policy --- Cargo.lock | 2 + crates/wallets/Cargo.toml | 2 + .../src/wallet_browser/app/assets/index.html | 220 +----------------- .../src/wallet_browser/app/assets/main.js | 171 ++++++++++++++ .../src/wallet_browser/app/assets/style.css | 33 +++ crates/wallets/src/wallet_browser/app/mod.rs | 2 + crates/wallets/src/wallet_browser/handlers.rs | 50 +++- crates/wallets/src/wallet_browser/mod.rs | 2 +- crates/wallets/src/wallet_browser/router.rs | 64 ++++- crates/wallets/src/wallet_browser/server.rs | 10 +- crates/wallets/src/wallet_browser/state.rs | 8 +- 11 files changed, 319 insertions(+), 245 deletions(-) create mode 100644 crates/wallets/src/wallet_browser/app/assets/main.js create mode 100644 crates/wallets/src/wallet_browser/app/assets/style.css diff --git a/Cargo.lock b/Cargo.lock index 53e0a50b93ea4..6dbb0ac97a44b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5012,6 +5012,8 @@ dependencies = [ "serde", "thiserror 2.0.17", "tokio", + "tower", + "tower-http", "tracing", "uuid 1.18.1", "webbrowser", diff --git a/crates/wallets/Cargo.toml b/crates/wallets/Cargo.toml index ebaa9c67e44e7..0bb9762f86bc6 100644 --- a/crates/wallets/Cargo.toml +++ b/crates/wallets/Cargo.toml @@ -48,6 +48,8 @@ eyre.workspace = true rpassword = "7" serde.workspace = true thiserror.workspace = true +tower.workspace = true +tower-http = { workspace = true, features = ["cors", "set-header"] } tracing.workspace = true eth-keystore = "0.5.0" diff --git a/crates/wallets/src/wallet_browser/app/assets/index.html b/crates/wallets/src/wallet_browser/app/assets/index.html index bdac8f6bab7e9..e66f4c295f346 100644 --- a/crates/wallets/src/wallet_browser/app/assets/index.html +++ b/crates/wallets/src/wallet_browser/app/assets/index.html @@ -3,40 +3,8 @@ - Foundry Browser Wallet - +

Foundry Browser Wallet

@@ -63,190 +31,6 @@

Log


     
 
-    
+    
   
 
diff --git a/crates/wallets/src/wallet_browser/app/assets/main.js b/crates/wallets/src/wallet_browser/app/assets/main.js
new file mode 100644
index 0000000000000..ffae6a83a1656
--- /dev/null
+++ b/crates/wallets/src/wallet_browser/app/assets/main.js
@@ -0,0 +1,171 @@
+/** SESSION_TOKEN */
+
+const headers = {
+  "Content-Type": "application/json",
+  "X-Session-Token": window.__WALLET_TOKEN__,
+};
+let currentTxId = null;
+
+const $pending = document.getElementById("pending");
+const $log = document.getElementById("log");
+const $connStatus = document.getElementById("conn-status");
+const $checkConn = document.getElementById("check-connection");
+const $connect = document.getElementById("connect");
+const $disconnect = document.getElementById("disconnect");
+const $sign = document.getElementById("sign");
+
+async function api(path, method = "GET", body) {
+  const opts = { method, headers };
+
+  if (body !== undefined) opts.body = JSON.stringify(body);
+
+  const res = await fetch(path, opts);
+
+  if (!res.ok) {
+    throw new Error(`API request failed: ${res.status} ${res.statusText}`);
+  }
+
+  const json = await res.json().catch(() => {
+    throw new Error("Invalid JSON");
+  });
+
+  return json;
+}
+
+function log(...args) {
+  $log.textContent +=
+    args
+      .map((a) => (typeof a === "object" ? JSON.stringify(a, null, 2) : a))
+      .join(" ") + "\n";
+  $log.scrollTop = $log.scrollHeight;
+}
+
+function normalizeTo(toField) {
+  if (!toField) return null;
+  if (typeof toField === "string") return toField;
+  if (typeof toField === "object") {
+    if ("Call" in toField) return toField.Call;
+    if ("Create" in toField) return null;
+  }
+  return toField;
+}
+
+function hexToDecimalMaybe(hex) {
+  if (!hex || typeof hex !== "string" || !hex.startsWith("0x"))
+    return hex ?? null;
+  try {
+    return `${hex} (${BigInt(hex).toString(10)})`;
+  } catch {
+    return hex;
+  }
+}
+
+function randomTxHash() {
+  const bytes = crypto.getRandomValues(new Uint8Array(32));
+  return (
+    "0x" + Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("")
+  );
+}
+
+function renderPending(resp) {
+  if (!resp || resp.status !== "ok") {
+    currentTxId = null;
+    $sign.disabled = true;
+    $pending.textContent = "No pending transaction";
+    return;
+  }
+  const tx = resp.data;
+  currentTxId = tx.id;
+  $sign.disabled = false;
+  $pending.textContent = JSON.stringify(tx, null, 2);
+}
+
+async function refreshPending() {
+  try {
+    const resp = await api("/api/transaction/request");
+    renderPending(resp);
+    log("GET /api/transaction/request", resp);
+  } catch (e) {
+    $pending.textContent = "Error reading queue";
+    log("Error:", String(e));
+  }
+}
+
+async function checkQueue() {
+  const resp = await api("/api/transaction/request");
+
+  // Only update UI/log if something changed or meaningful happened
+  if (resp && resp.status === "ok") {
+    renderPending(resp);
+    log("Pending transaction found:", resp.data.id);
+
+    clearInterval(poll);
+    log("Paused polling — waiting for queue to clear");
+
+    // Wait until the queue clears, then restart polling
+    const prevId = resp.data.id;
+    const waitForClear = setInterval(async () => {
+      const nxt = await api("/api/transaction/request");
+
+      if (!nxt || nxt.status !== "ok") {
+        clearInterval(waitForClear);
+        poll = setInterval(checkQueue, 1000);
+        log("Resumed polling — queue cleared");
+      } else if (nxt.data.id !== prevId) {
+        // A new tx appeared before the old cleared
+        renderPending(nxt);
+        log("Switched to new pending transaction:", nxt.data.id);
+      }
+    }, 1000);
+  } else {
+    // Only refresh the UI silently when empty
+    renderPending(resp);
+  }
+}
+
+$checkConn.addEventListener("click", async () => {
+  const resp = await api("/api/connection");
+  if (resp.status === "ok" && resp.data) {
+    const [addr, chain] = resp.data;
+    $connStatus.innerHTML = `Status: connected (${addr} on chain ${chain})`;
+  } else {
+    $connStatus.innerHTML = "Status: disconnected";
+  }
+  log("Connection status:", resp);
+});
+
+$connect.addEventListener("click", async () => {
+  const resp = await api("/api/connection", "POST", [
+    "0xF39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
+    1,
+  ]);
+  log("POST /api/connection", resp);
+  $checkConn.click();
+});
+
+$disconnect.addEventListener("click", async () => {
+  const resp = await api("/api/connection", "POST", null);
+  log("POST /api/connection (disconnect)", resp);
+  $checkConn.click();
+});
+
+$sign.addEventListener("click", async () => {
+  if (!currentTxId) return;
+
+  try {
+    const hash = randomTxHash();
+    const res = await api("/api/transaction/response", "POST", {
+      id: currentTxId,
+      hash,
+      error: null,
+    });
+    log("Submitted mock tx hash", { id: currentTxId, hash, result: res });
+  } catch (e) {
+    log("Sign (mock) failed:", String(e));
+  }
+});
+
+refreshPending();
+
+let poll = setInterval(checkQueue, 1000);
+checkQueue();
diff --git a/crates/wallets/src/wallet_browser/app/assets/style.css b/crates/wallets/src/wallet_browser/app/assets/style.css
new file mode 100644
index 0000000000000..07abeb959d0df
--- /dev/null
+++ b/crates/wallets/src/wallet_browser/app/assets/style.css
@@ -0,0 +1,33 @@
+html,
+body {
+  font-family: system-ui, sans-serif;
+  margin: 0;
+  padding: 2rem;
+  background: #fafafa;
+  color: #222;
+}
+
+h1 {
+  font-size: 1.4rem;
+  margin-bottom: 1rem;
+}
+
+button {
+  padding: 0.6rem 1rem;
+  border-radius: 0.5rem;
+  border: 1px solid #ccc;
+  background: white;
+  cursor: pointer;
+}
+button:hover {
+  background: #eee;
+}
+
+pre {
+  background: #f5f5f5;
+  border: 1px solid #ddd;
+  padding: 0.5rem;
+  border-radius: 0.5rem;
+  max-height: 300px;
+  overflow: auto;
+}
diff --git a/crates/wallets/src/wallet_browser/app/mod.rs b/crates/wallets/src/wallet_browser/app/mod.rs
index b4cfc2ce40376..966e50e190216 100644
--- a/crates/wallets/src/wallet_browser/app/mod.rs
+++ b/crates/wallets/src/wallet_browser/app/mod.rs
@@ -1,3 +1,5 @@
 pub(crate) mod contents {
     pub const INDEX_HTML: &str = include_str!("assets/index.html");
+    pub const STYLE_CSS: &str = include_str!("assets/style.css");
+    pub const MAIN_JS: &str = include_str!("assets/main.js");
 }
diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs
index 2073f8c012c20..b59226e689792 100644
--- a/crates/wallets/src/wallet_browser/handlers.rs
+++ b/crates/wallets/src/wallet_browser/handlers.rs
@@ -3,7 +3,10 @@ use std::sync::Arc;
 use axum::{
     Json,
     extract::State,
-    http::{HeaderMap, HeaderValue, header::CONTENT_TYPE},
+    http::{
+        HeaderMap, HeaderValue,
+        header::{CACHE_CONTROL, CONTENT_TYPE, EXPIRES, PRAGMA},
+    },
     response::Html,
 };
 
@@ -13,18 +16,49 @@ use crate::wallet_browser::{
     types::{BrowserApiResponse, BrowserTransaction, Connection, TransactionResponse},
 };
 
-pub(crate) async fn serve_index(
+pub(crate) async fn serve_index() -> impl axum::response::IntoResponse {
+    let html = contents::INDEX_HTML;
+
+    let mut headers = HeaderMap::new();
+    headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/html; charset=utf-8"));
+    headers.insert(
+        CACHE_CONTROL,
+        HeaderValue::from_static("no-store, no-cache, must-revalidate, max-age=0"),
+    );
+    headers.insert(PRAGMA, HeaderValue::from_static("no-cache"));
+    headers.insert(EXPIRES, HeaderValue::from_static("0"));
+    (headers, Html(html))
+}
+
+pub(crate) async fn serve_css() -> impl axum::response::IntoResponse {
+    let css = contents::STYLE_CSS;
+
+    let mut headers = HeaderMap::new();
+    headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/css; charset=utf-8"));
+    headers.insert(
+        CACHE_CONTROL,
+        HeaderValue::from_static("no-store, no-cache, must-revalidate, max-age=0"),
+    );
+    headers.insert(PRAGMA, HeaderValue::from_static("no-cache"));
+    headers.insert(EXPIRES, HeaderValue::from_static("0"));
+    (headers, css)
+}
+
+pub(crate) async fn serve_js(
     State(state): State>,
 ) -> impl axum::response::IntoResponse {
     let token = state.session_token();
-    let html = contents::INDEX_HTML.replace(
-        "",
-        &format!(r#""#),
-    );
+    let js = format!("window.__WALLET_TOKEN__ = \"{}\";\n{}", token, contents::MAIN_JS);
 
     let mut headers = HeaderMap::new();
-    headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/html; charset=utf-8"));
-    (headers, Html(html))
+    headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/javascript; charset=utf-8"));
+    headers.insert(
+        CACHE_CONTROL,
+        HeaderValue::from_static("no-store, no-cache, must-revalidate, max-age=0"),
+    );
+    headers.insert(PRAGMA, HeaderValue::from_static("no-cache"));
+    headers.insert(EXPIRES, HeaderValue::from_static("0"));
+    (headers, js)
 }
 
 /// Get the next pending transaction request.
diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs
index 92831bf151469..0a9ebdacea521 100644
--- a/crates/wallets/src/wallet_browser/mod.rs
+++ b/crates/wallets/src/wallet_browser/mod.rs
@@ -477,7 +477,7 @@ mod tests {
     /// Helper to create a reqwest client with the session token header.
     fn client_with_token(server: &BrowserWalletServer) -> reqwest::Client {
         let mut headers = HeaderMap::new();
-        headers.insert("X-Session-Token", HeaderValue::from_str(&server.session_token()).unwrap());
+        headers.insert("X-Session-Token", HeaderValue::from_str(server.session_token()).unwrap());
         reqwest::Client::builder().default_headers(headers).build().unwrap()
     }
 
diff --git a/crates/wallets/src/wallet_browser/router.rs b/crates/wallets/src/wallet_browser/router.rs
index d5af3b0cfaa63..396321937e2e7 100644
--- a/crates/wallets/src/wallet_browser/router.rs
+++ b/crates/wallets/src/wallet_browser/router.rs
@@ -3,15 +3,17 @@ use std::sync::Arc;
 use axum::{
     Router,
     extract::{Request, State},
-    http::StatusCode,
+    http::{HeaderValue, Method, StatusCode, header},
     middleware::{self, Next},
     response::Response,
     routing::{get, post},
 };
+use tower::ServiceBuilder;
+use tower_http::{cors::CorsLayer, set_header::SetResponseHeaderLayer};
 
 use crate::wallet_browser::{handlers, state::BrowserWalletState};
 
-pub async fn build_router(state: Arc) -> Router {
+pub async fn build_router(state: Arc, port: u16) -> Router {
     let api = Router::new()
         .route("/transaction/request", get(handlers::get_next_transaction_request))
         .route("/transaction/response", post(handlers::post_transaction_response))
@@ -20,7 +22,50 @@ pub async fn build_router(state: Arc) -> Router {
         .route_layer(middleware::from_fn_with_state(state.clone(), require_session_token))
         .with_state(state.clone());
 
-    Router::new().route("/", get(handlers::serve_index)).nest("/api", api).with_state(state)
+    let security_headers = ServiceBuilder::new()
+        .layer(SetResponseHeaderLayer::if_not_present(
+            header::CONTENT_SECURITY_POLICY,
+            HeaderValue::from_static(concat!(
+                "default-src 'none'; ",
+                "object-src 'none'; ",
+                "base-uri 'none'; ",
+                "frame-ancestors 'none'; ",
+                "img-src 'none'; ",
+                "font-src 'none'; ",
+                "connect-src 'self'; ",
+                "style-src 'self'; ",
+                "script-src 'self'; ",
+                "form-action 'none'; ",
+                "worker-src 'none'; ",
+                "frame-src 'none';"
+            )),
+        ))
+        .layer(SetResponseHeaderLayer::if_not_present(
+            header::REFERRER_POLICY,
+            HeaderValue::from_static("no-referrer"),
+        ))
+        .layer(SetResponseHeaderLayer::if_not_present(
+            header::X_CONTENT_TYPE_OPTIONS,
+            HeaderValue::from_static("nosniff"),
+        ))
+        .layer(
+            CorsLayer::new()
+                .allow_origin([format!("http://127.0.0.1:{port}").parse().unwrap()])
+                .allow_methods([Method::GET, Method::POST, Method::OPTIONS])
+                .allow_headers([
+                    header::CONTENT_TYPE,
+                    header::HeaderName::from_static("x-session-token"),
+                ])
+                .allow_credentials(false),
+        );
+
+    Router::new()
+        .route("/", get(handlers::serve_index))
+        .route("/style.css", get(handlers::serve_css))
+        .route("/main.js", get(handlers::serve_js))
+        .nest("/api", api)
+        .layer(security_headers)
+        .with_state(state)
 }
 
 async fn require_session_token(
@@ -28,15 +73,18 @@ async fn require_session_token(
     req: Request,
     next: Next,
 ) -> Result {
-    let expected = state.session_token(); // Arc
-    let ok = req
+    if req.method() == Method::OPTIONS {
+        return Ok(next.run(req).await);
+    }
+
+    let expected = state.session_token();
+    let provided = req
         .headers()
         .get("X-Session-Token")
         .and_then(|v| v.to_str().ok())
-        .map(|v| v == expected.as_str())
-        .unwrap_or(false);
+        .ok_or(StatusCode::FORBIDDEN)?;
 
-    if !ok {
+    if provided != expected {
         return Err(StatusCode::FORBIDDEN);
     }
 
diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs
index 0f1d8769d4f66..db3079b25be8f 100644
--- a/crates/wallets/src/wallet_browser/server.rs
+++ b/crates/wallets/src/wallet_browser/server.rs
@@ -31,11 +31,9 @@ pub struct BrowserWalletServer {
 impl BrowserWalletServer {
     /// Create a new browser wallet server.
     pub fn new(port: u16, open_browser: bool, timeout: Duration) -> Self {
-        let session_token = Arc::new(Uuid::new_v4().to_string());
-
         Self {
             port,
-            state: Arc::new(BrowserWalletState::new(session_token)),
+            state: Arc::new(BrowserWalletState::new(Uuid::new_v4().to_string())),
             shutdown_tx: None,
             open_browser,
             timeout,
@@ -44,7 +42,7 @@ impl BrowserWalletServer {
 
     /// Start the server and open browser.
     pub async fn start(&mut self) -> Result<(), BrowserWalletError> {
-        let router = build_router(self.state.clone()).await;
+        let router = build_router(self.state.clone(), self.port).await;
 
         let addr = SocketAddr::from(([127, 0, 0, 1], self.port));
         let listener = TcpListener::bind(addr)
@@ -65,7 +63,7 @@ impl BrowserWalletServer {
         });
 
         if self.open_browser {
-            webbrowser::open(&format!("http://localhost:{}", self.port)).map_err(|e| {
+            webbrowser::open(&format!("http://127.0.0.1:{}", self.port)).map_err(|e| {
                 BrowserWalletError::ServerError(format!("Failed to open browser: {e}"))
             })?;
         }
@@ -99,7 +97,7 @@ impl BrowserWalletServer {
     }
 
     /// Get the session token.
-    pub fn session_token(&self) -> Arc {
+    pub fn session_token(&self) -> &str {
         self.state.session_token()
     }
 
diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs
index 38b69b182fe9f..47951adca4430 100644
--- a/crates/wallets/src/wallet_browser/state.rs
+++ b/crates/wallets/src/wallet_browser/state.rs
@@ -15,12 +15,12 @@ pub(crate) struct BrowserWalletState {
     /// Request/response queue for transactions.
     transactions: Arc>>,
     /// Unique session token for the wallet browser instance.
-    session_token: Arc,
+    session_token: String,
 }
 
 impl BrowserWalletState {
     /// Create a new browser wallet state.
-    pub fn new(session_token: Arc) -> Self {
+    pub fn new(session_token: String) -> Self {
         Self {
             session_token,
             connection: Arc::new(Mutex::new(None)),
@@ -29,8 +29,8 @@ impl BrowserWalletState {
     }
 
     /// Get the session token.
-    pub fn session_token(&self) -> Arc {
-        self.session_token.clone()
+    pub fn session_token(&self) -> &str {
+        &self.session_token
     }
 
     /// Check if wallet is connected.

From 0b8b9f6cbc5a82ece5b48316e79407da1dbf7cc9 Mon Sep 17 00:00:00 2001
From: zerosnacks 
Date: Wed, 29 Oct 2025 10:32:25 +0100
Subject: [PATCH 24/42] remove flawed session token for now, to implement
 actual /session route & cookie token

---
 .../src/wallet_browser/app/assets/main.js     |  1 -
 crates/wallets/src/wallet_browser/mod.rs      | 29 ++++++++--------
 crates/wallets/src/wallet_browser/router.rs   | 34 ++-----------------
 3 files changed, 16 insertions(+), 48 deletions(-)

diff --git a/crates/wallets/src/wallet_browser/app/assets/main.js b/crates/wallets/src/wallet_browser/app/assets/main.js
index ffae6a83a1656..f3cd26b6fc378 100644
--- a/crates/wallets/src/wallet_browser/app/assets/main.js
+++ b/crates/wallets/src/wallet_browser/app/assets/main.js
@@ -2,7 +2,6 @@
 
 const headers = {
   "Content-Type": "application/json",
-  "X-Session-Token": window.__WALLET_TOKEN__,
 };
 let currentTxId = null;
 
diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs
index 0a9ebdacea521..00cdc69f83e24 100644
--- a/crates/wallets/src/wallet_browser/mod.rs
+++ b/crates/wallets/src/wallet_browser/mod.rs
@@ -15,7 +15,7 @@ mod tests {
 
     use alloy_primitives::{Address, TxHash, TxKind, U256, address};
     use alloy_rpc_types::TransactionRequest;
-    use axum::http::{HeaderMap, HeaderValue};
+    use axum::http::HeaderMap;
     use tokio::task::JoinHandle;
     use uuid::Uuid;
 
@@ -33,7 +33,7 @@ mod tests {
     #[tokio::test]
     async fn test_setup_server() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
 
         // Check initial state
         assert!(!server.is_connected());
@@ -53,7 +53,7 @@ mod tests {
     #[tokio::test]
     async fn test_connect_disconnect_wallet() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
         server.start().await.unwrap();
 
         // Check that the transaction request queue is empty
@@ -90,7 +90,7 @@ mod tests {
     #[tokio::test]
     async fn test_switch_wallet() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
         server.start().await.unwrap();
 
         // Connect Alice, assert connected
@@ -113,7 +113,7 @@ mod tests {
     #[tokio::test]
     async fn test_transaction_response_both_hash_and_error_rejected() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
         server.start().await.unwrap();
         connect_wallet(&client, &server, Connection::new(ALICE, 1)).await;
 
@@ -148,7 +148,7 @@ mod tests {
     #[tokio::test]
     async fn test_transaction_response_neither_hash_nor_error_rejected() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
         server.start().await.unwrap();
         connect_wallet(&client, &server, Connection::new(ALICE, 1)).await;
 
@@ -178,7 +178,7 @@ mod tests {
     #[tokio::test]
     async fn test_transaction_response_zero_hash_rejected() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
         server.start().await.unwrap();
         connect_wallet(&client, &server, Connection::new(ALICE, 1)).await;
 
@@ -213,7 +213,7 @@ mod tests {
     #[tokio::test]
     async fn test_send_transaction_client_accept() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
         server.start().await.unwrap();
 
         // Connect Alice's wallet
@@ -256,7 +256,7 @@ mod tests {
     #[tokio::test]
     async fn test_send_transaction_client_not_requested() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
         server.start().await.unwrap();
 
         // Connect Alice's wallet
@@ -294,7 +294,7 @@ mod tests {
     #[tokio::test]
     async fn test_send_transaction_invalid_response_format() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
         server.start().await.unwrap();
 
         // Connect Alice's wallet
@@ -322,7 +322,7 @@ mod tests {
     #[tokio::test]
     async fn test_send_transaction_client_reject() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
         server.start().await.unwrap();
 
         // Connect Alice's wallet
@@ -366,7 +366,7 @@ mod tests {
     #[tokio::test]
     async fn test_send_multiple_transaction_requests() {
         let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT);
-        let client = client_with_token(&server);
+        let client = client_with_headers();
         server.start().await.unwrap();
         connect_wallet(&client, &server, Connection::new(ALICE, 1)).await;
 
@@ -475,9 +475,8 @@ mod tests {
     }
 
     /// Helper to create a reqwest client with the session token header.
-    fn client_with_token(server: &BrowserWalletServer) -> reqwest::Client {
-        let mut headers = HeaderMap::new();
-        headers.insert("X-Session-Token", HeaderValue::from_str(server.session_token()).unwrap());
+    fn client_with_headers() -> reqwest::Client {
+        let headers = HeaderMap::new();
         reqwest::Client::builder().default_headers(headers).build().unwrap()
     }
 
diff --git a/crates/wallets/src/wallet_browser/router.rs b/crates/wallets/src/wallet_browser/router.rs
index 396321937e2e7..0ccac2620114a 100644
--- a/crates/wallets/src/wallet_browser/router.rs
+++ b/crates/wallets/src/wallet_browser/router.rs
@@ -2,10 +2,7 @@ use std::sync::Arc;
 
 use axum::{
     Router,
-    extract::{Request, State},
-    http::{HeaderValue, Method, StatusCode, header},
-    middleware::{self, Next},
-    response::Response,
+    http::{HeaderValue, Method, header},
     routing::{get, post},
 };
 use tower::ServiceBuilder;
@@ -19,7 +16,6 @@ pub async fn build_router(state: Arc, port: u16) -> Router {
         .route("/transaction/response", post(handlers::post_transaction_response))
         .route("/connection", get(handlers::get_connection_info))
         .route("/connection", post(handlers::post_connection_update))
-        .route_layer(middleware::from_fn_with_state(state.clone(), require_session_token))
         .with_state(state.clone());
 
     let security_headers = ServiceBuilder::new()
@@ -52,10 +48,7 @@ pub async fn build_router(state: Arc, port: u16) -> Router {
             CorsLayer::new()
                 .allow_origin([format!("http://127.0.0.1:{port}").parse().unwrap()])
                 .allow_methods([Method::GET, Method::POST, Method::OPTIONS])
-                .allow_headers([
-                    header::CONTENT_TYPE,
-                    header::HeaderName::from_static("x-session-token"),
-                ])
+                .allow_headers([header::CONTENT_TYPE])
                 .allow_credentials(false),
         );
 
@@ -67,26 +60,3 @@ pub async fn build_router(state: Arc, port: u16) -> Router {
         .layer(security_headers)
         .with_state(state)
 }
-
-async fn require_session_token(
-    State(state): State>,
-    req: Request,
-    next: Next,
-) -> Result {
-    if req.method() == Method::OPTIONS {
-        return Ok(next.run(req).await);
-    }
-
-    let expected = state.session_token();
-    let provided = req
-        .headers()
-        .get("X-Session-Token")
-        .and_then(|v| v.to_str().ok())
-        .ok_or(StatusCode::FORBIDDEN)?;
-
-    if provided != expected {
-        return Err(StatusCode::FORBIDDEN);
-    }
-
-    Ok(next.run(req).await)
-}

From 66077fd5ec1161d97f79b7e0017e2dc95f9d13cd Mon Sep 17 00:00:00 2001
From: zerosnacks 
Date: Wed, 29 Oct 2025 13:31:23 +0100
Subject: [PATCH 25/42] port interface

---
 crates/wallets/src/opts.rs                    |  8 ++++----
 crates/wallets/src/wallet_browser/handlers.rs |  7 ++-----
 crates/wallets/src/wallet_browser/router.rs   |  5 ++++-
 crates/wallets/src/wallet_browser/server.rs   |  8 +-------
 crates/wallets/src/wallet_browser/signer.rs   | 16 ++++++++++++++++
 crates/wallets/src/wallet_browser/state.rs    | 10 +---------
 6 files changed, 28 insertions(+), 26 deletions(-)

diff --git a/crates/wallets/src/opts.rs b/crates/wallets/src/opts.rs
index f93f47ccc18e3..5d9a5effd236f 100644
--- a/crates/wallets/src/opts.rs
+++ b/crates/wallets/src/opts.rs
@@ -111,10 +111,10 @@ pub struct WalletOpts {
     #[arg(
         long,
         help_heading = "Wallet options - browser",
-        default_value_t = true,
+        default_value_t = false,
         requires = "browser"
     )]
-    pub browser_open: bool,
+    pub disable_browser_open: bool,
 }
 
 impl WalletOpts {
@@ -145,7 +145,7 @@ impl WalletOpts {
                 .map_err(|_| eyre::eyre!("GCP_KEY_VERSION could not be parsed into u64"))?;
             WalletSigner::from_gcp(project_id, location, keyring, key_name, key_version).await?
         } else if self.browser {
-            WalletSigner::from_browser(self.browser_port, self.browser_open).await?
+            WalletSigner::from_browser(self.browser_port, !self.disable_browser_open).await?
         } else if let Some(raw_wallet) = self.raw.signer()? {
             raw_wallet
         } else if let Some(path) = utils::maybe_get_keystore_path(
@@ -251,7 +251,7 @@ mod tests {
             gcp: false,
             browser: false,
             browser_port: 9545,
-            browser_open: true,
+            disable_browser_open: false,
         };
         match wallet.signer().await {
             Ok(_) => {
diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs
index b59226e689792..9a76cab145088 100644
--- a/crates/wallets/src/wallet_browser/handlers.rs
+++ b/crates/wallets/src/wallet_browser/handlers.rs
@@ -44,11 +44,8 @@ pub(crate) async fn serve_css() -> impl axum::response::IntoResponse {
     (headers, css)
 }
 
-pub(crate) async fn serve_js(
-    State(state): State>,
-) -> impl axum::response::IntoResponse {
-    let token = state.session_token();
-    let js = format!("window.__WALLET_TOKEN__ = \"{}\";\n{}", token, contents::MAIN_JS);
+pub(crate) async fn serve_js() -> impl axum::response::IntoResponse {
+    let js = contents::MAIN_JS;
 
     let mut headers = HeaderMap::new();
     headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/javascript; charset=utf-8"));
diff --git a/crates/wallets/src/wallet_browser/router.rs b/crates/wallets/src/wallet_browser/router.rs
index 0ccac2620114a..3cc29439ead2a 100644
--- a/crates/wallets/src/wallet_browser/router.rs
+++ b/crates/wallets/src/wallet_browser/router.rs
@@ -46,7 +46,10 @@ pub async fn build_router(state: Arc, port: u16) -> Router {
         ))
         .layer(
             CorsLayer::new()
-                .allow_origin([format!("http://127.0.0.1:{port}").parse().unwrap()])
+                .allow_origin([
+                    format!("http://127.0.0.1:{port}").parse().unwrap(),
+                    "https://localhost:5173".to_string().parse().unwrap(),
+                ])
                 .allow_methods([Method::GET, Method::POST, Method::OPTIONS])
                 .allow_headers([header::CONTENT_TYPE])
                 .allow_credentials(false),
diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs
index db3079b25be8f..15129af535719 100644
--- a/crates/wallets/src/wallet_browser/server.rs
+++ b/crates/wallets/src/wallet_browser/server.rs
@@ -9,7 +9,6 @@ use tokio::{
     net::TcpListener,
     sync::{Mutex, oneshot},
 };
-use uuid::Uuid;
 
 use crate::wallet_browser::{
     error::BrowserWalletError,
@@ -33,7 +32,7 @@ impl BrowserWalletServer {
     pub fn new(port: u16, open_browser: bool, timeout: Duration) -> Self {
         Self {
             port,
-            state: Arc::new(BrowserWalletState::new(Uuid::new_v4().to_string())),
+            state: Arc::new(BrowserWalletState::new()),
             shutdown_tx: None,
             open_browser,
             timeout,
@@ -96,11 +95,6 @@ impl BrowserWalletServer {
         self.timeout
     }
 
-    /// Get the session token.
-    pub fn session_token(&self) -> &str {
-        self.state.session_token()
-    }
-
     /// Check if a wallet is connected.
     pub fn is_connected(&self) -> bool {
         self.state.is_connected()
diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs
index 7fbe4eeeadf57..23d8093a27407 100644
--- a/crates/wallets/src/wallet_browser/signer.rs
+++ b/crates/wallets/src/wallet_browser/signer.rs
@@ -56,6 +56,22 @@ impl BrowserSigner {
         &self,
         tx_request: TransactionRequest,
     ) -> Result {
+        if let Some(from) = tx_request.from
+            && from != self.address
+        {
+            return Err(alloy_signer::Error::other(
+                "Transaction 'from' address does not match connected wallet address",
+            ));
+        }
+
+        if let Some(chain_id) = tx_request.chain_id
+            && chain_id != self.chain_id
+        {
+            return Err(alloy_signer::Error::other(
+                "Transaction 'chainId' does not match connected wallet chain ID",
+            ));
+        }
+
         let request = BrowserTransaction { id: Uuid::new_v4(), request: tx_request };
 
         let server = self.server.lock().await;
diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs
index 47951adca4430..02cd32f496b80 100644
--- a/crates/wallets/src/wallet_browser/state.rs
+++ b/crates/wallets/src/wallet_browser/state.rs
@@ -14,25 +14,17 @@ pub(crate) struct BrowserWalletState {
     connection: Arc>>,
     /// Request/response queue for transactions.
     transactions: Arc>>,
-    /// Unique session token for the wallet browser instance.
-    session_token: String,
 }
 
 impl BrowserWalletState {
     /// Create a new browser wallet state.
-    pub fn new(session_token: String) -> Self {
+    pub fn new() -> Self {
         Self {
-            session_token,
             connection: Arc::new(Mutex::new(None)),
             transactions: Arc::new(Mutex::new(RequestQueue::new())),
         }
     }
 
-    /// Get the session token.
-    pub fn session_token(&self) -> &str {
-        &self.session_token
-    }
-
     /// Check if wallet is connected.
     pub fn is_connected(&self) -> bool {
         self.connection.lock().is_some()

From f195964f1edc9195dabbb0815e62bb7c13474221 Mon Sep 17 00:00:00 2001
From: zerosnacks 
Date: Wed, 29 Oct 2025 18:04:16 +0100
Subject: [PATCH 26/42] replace with v0.0.0 release of foundry-browser-wallet

---
 .../src/wallet_browser/app/assets/banner.png  | Bin 0 -> 559043 bytes
 .../src/wallet_browser/app/assets/index.html  |  32 +--
 .../src/wallet_browser/app/assets/logo.png    | Bin 0 -> 49040 bytes
 .../src/wallet_browser/app/assets/main.js     | 239 +++++-------------
 .../src/wallet_browser/app/assets/style.css   |  33 ---
 .../src/wallet_browser/app/assets/styles.css  |   2 +
 6 files changed, 76 insertions(+), 230 deletions(-)
 create mode 100644 crates/wallets/src/wallet_browser/app/assets/banner.png
 create mode 100644 crates/wallets/src/wallet_browser/app/assets/logo.png
 delete mode 100644 crates/wallets/src/wallet_browser/app/assets/style.css
 create mode 100644 crates/wallets/src/wallet_browser/app/assets/styles.css

diff --git a/crates/wallets/src/wallet_browser/app/assets/banner.png b/crates/wallets/src/wallet_browser/app/assets/banner.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a3752b97fc0c082483daaa3e94a29cec296599b
GIT binary patch
literal 559043
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%0D$xA?biL2UvnupOuOnBr`DV4
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�RvS!A(2hLV7oRUGp
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�+7tSwE!fhATkCci&OxCU|7RqZqSV&>(n5_6-z0s
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

< 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 literal 0 HcmV?d00001 diff --git a/crates/wallets/src/wallet_browser/app/assets/index.html b/crates/wallets/src/wallet_browser/app/assets/index.html index e66f4c295f346..052f6448dadde 100644 --- a/crates/wallets/src/wallet_browser/app/assets/index.html +++ b/crates/wallets/src/wallet_browser/app/assets/index.html @@ -2,35 +2,13 @@ + - Foundry Browser Wallet - + Foundry + + -

Foundry Browser Wallet

- -
-

Wallet Connection

- - - -
Status: disconnected
-
- -
-

Pending Transaction

-

-    
- -
- -
- -
-

Log

-

-    
- - +
diff --git a/crates/wallets/src/wallet_browser/app/assets/logo.png b/crates/wallets/src/wallet_browser/app/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1f29796cdda68977f0dae3817c35cba6dc30b116 GIT binary patch literal 49040 zcmW)nb6BKp8^*J(-HgpP-fY{pU7KAqakK3ka{djQ#Hc36Yia z8Mp}Pt|l!8Q9Dg^1pEMFEvhIA0nreT{Avmd0ntk(Da}@?i6%?iXK)X$Df^kOaZB43RW=MG1UtKHM9Pc$`1@ zObZ98r_ zYUtCva$?uV`%BYNhNf}$bss$G2z7|3v<_He@86O1~1RN0*B(uihbQw!Nc=i zVslFimF<#DQc0})Uyp15o2iE(ntcE3eWtdxq^`%E82{HZ6pqQuKE|fW>t74%%Inq# znbz+rA3??=IJqAaN8j_`&AS76M~K`npJ?ETzs??Zq}}QrW!uZfr{Zeq6y_VL2&v2C zE8hH)CY`$6Pd8R#DqV0M#<$LK>V3P<_PE{~yP4r$b!htQ@w=id%Z~Xdx8wQ#jDLV< z(?9vIpSu#r6sP+!k^1dB1RZ6H8k(d#@cIXKxP~m>{U(mqWP1bOgyvhG6?oRaCVzFl zkTVV7H~ASn<54iVF)!FdGj#W>X-0@&HNV$u&2=Qe6?kEVG^`grxyzgPx0fI)@MCP= zMa(B7?``{Bp|O^d5n26Os&&=BZAI8>$!(j04{IDtK_4%hU>e0N&Q9v9*BRgvg_x{+ z&+~B=vj5xN67)fi`*fffX8_mO_oUEchW%g4(N+0@tMHOVy)V~6)8DmwlEqDrZVU`b zirx%pndxLxD1w5DdufUXZy#{p>vr`wb~8LzY-vtDjC&t8{EUxDHZ!dAd^QZ-#;Ed% zd0n;$f&bv;MV_VmHin_LeJA@lh>lXL5mkTguB5d7M-NV}PKJK(`&}J;&-FNiyFB?6 zg9hh7S+>)EhxMid2Z@)%5CS z{yV9@kbeq%4I_QsawM;PusG-;Z*otK?ypUS-$l1qAv~$Si)*H9R)qW%^SPB);rDknizXS}srN-~V?`#IMH=nm zj3lgxl;nz3>?h)P7Kvo+{1j|2klLs$o0h*(O0vRaPULIOIX^88M*g`l4d>@+-6NlQ zkl$iJVDVCL4`@(m(PJao?L%hfdTpyOEMMO&ippqK>~hdK=w-DISi9GA6zlxTb1BJh zy)(eA@hx>;^ze&N-YB>ORn>(}t)L@vFx{B7hHQJybay?$GQ-@QP$i*)$DSB^ExLWl zgCuL=r4-H56~X@NDJ*FxfLbu4&;7Gh?C@9-qoK3H63L?F~*nhvib3z zKHn5E^VpN(at;&`^2N>g#}gsd$foZ2*>1e>L23Rpze*kSn;=4FVCmBLyDpZ<1yUOK z=f!_@w)n5?z9c@Aj#c~X6K(B%8?niZ%cW!jE&A-hci)La>Aug&vrGj%?Wfnh-Oeks z2w6>LELuP@(_j2)7UP_^DZ0me5^RyV>1ohSw=B!Vk0`<%M~L9fC!+pE5yO~-{gjvd zgd>#R#!R$9x!2}N^6qS9Rx_t`x*B$<*#GE^lR3Fou;sn~QNY$BuOwi24(wi|6@u3f zpWEcKo*2OVl4nmXdARH!_6UJ=$59lQq)F_4zEw4?KVC+J->>YSkJEoOxizNsA5+@W zRUgP5iwGZNm>;yC)OO-w&NL1pF;v$lj9!VFkHi^X=Xz~q#`NClaf`+^hJ4EldVdN# zqW+4ff`x=62`dIA8qx@&44vB%#8B796G&l?3Y&uhU$rT0nuv{4q9LJ3SO)dJKc9#e zhV+l);>^2EFg=_bxKG{vjt{&oww74vErc~MQaM*=C#FFP=}xhi{VpeO%4NLr+sN7G zwa(MV38D8GT zr`aj_EegYMvht>j+G_B}%0bWb_$@0eWJVV6np(R1(&)mkmsrJ8v3e0EN|}CCEr?cx zRzwH6lc|?Tq5Y>{6yem-VHcAeAVUhkhR6I{-E_3d-p1rM|&J|>zS8^sSb z7E?w~5vk0(r0TkaQ9$L18{t69lBtPjAt;Ueo3fR)l=1fJfI7($%A4A|tbkyaL(KoLtoDT7v zxkkIpbVI+REi}JgPaHm#!+tVgC1afYX=Z?fT}86NpL{RS`}#rNanb#-v4*WIfGOig zEl|Q!_9?jwt8}bmd;8mEggv2vw~NZC?vis#aPy@=v@lB97nzfPO}k-gYy`Fh2Eh!!0=ljM!;l~`%uo@F=RM#V!*c{OLTJQI zG0`<+bVk9GRcqr6bveluxGNCnHBBHL7Mz=Z&x&?u?~PsxCw-t&3g+FD47gwXaZ>v- zo2KvNGY@>8JnzCEPc!O3`Q-O3oP6)Vo2%3XTGfAaBARhrF-WR4e!H zy>O4OVwCfCYSwUv?5d)8|Ne9UluAPnA}ttXOlWF?wUmT7)V0n{O@=}fz@YsVDrG+< z%_$+XAQ0i*lOymQ(zIxhU)-Dd%bBVQtvxTxougAf2vJg;%A!&k^Z8Y-On@&o*#& z=b8ZY1?b@+LeD$0N?&5U8a+TT@bxi%ju}vL^2baA5$G3R>eg<3b1zy~omTgGdY`6x z%Mr+6IWnO<&m>Q;;VsoTO|Z$!B%p(A&qKQZkC~1G7buGn-ztpax16Qvk)V-NBQcFw<2%8rQiMT z45+N$kJpB8bGoIZ=#o@<9fNB+j{ET0UjllLOWiN$ol9wm?O3Up%|%N2 z78z15DwnFj9xukLQ=!{JzJO|}5v`O&KYAw@H1HrDOMpA8$v5aOI5=k)sY8=isb*`@ z`Pc&mn>~`Io#_{{^iN`k;^XHV!$;d51A5E~jLg#ILZS*g5e3z*eb}LXp*-4B;sCUk zxE&wx<+vO#u&oS%;||h~9ynZa#6h)bO0GxnO%Uh=Pd?s{pBIE*{>(tpgcTiMhS5`J z2IPOH2qmxZ6}jbJ0>A8JSf=TQJ|Xg*2dUR?F})lLf8Z;Ky#yrf?9_cAmr|%Gc5jvX?{XpV_bt56cnxU{_st}zvK%rovq$>Ti zkdHjxY@iwQCz>Y5rQhR|flHsn`n>uz&cH61F6u;#O;!+c|dyrRt<|LZYv zuB||r5iEwPd&Ko&3-hghMO5PdIP>Sz_s^>EFbk?LEew73Q#)LDhha7PVM499MMV4C zMD_+oG~9@%-$uX0gCOLC)~yg{LauA1{t}*l022t>jEG(wZ*f7_rQJAaq6QGp9mXHe zOQxb%(G3ebiFf$X@%IP*1|!elS%efVJ+W4tRfh;-&t*IU!U>l4tx)qgf$LG^2o(J5 zV4ytcHB>h=u^_Bt*dC!(pdZ&PK#ZQb+v}ThTY~=JL;JaedH(FZd&V0282>L$4Wuv^( zqy9JTWAYMI)`@?Eib?;R(x7&s2!brDXl5h|x=(mBs?~p1#7J{(vQ%s)uV`3#VM9@# z)bYtZ_3d2eG(R?b)|$>85$U>ooPHdYiRyWuC-^*N2$UADA|v?@EsE(g9nlgns*j-x zUS1BM8y{wv$8|_p;U3}T$>f>^i8qfYr&PD^M30e25G6&<%Qg4Y+~IXBLqjriaPn;h zLnn!b!IdU;cHlq}&KX zv;U?vmI}=$LU^fZll;a_etn|A&}*G*VcvP{VQzJRV8tzw|EatJMD(U`CPgVWM9cSN(!Mk!ntp1=wlYo|oRP~y>njjoAj0|h z&aC4QN6lq{kst-jB*MzbSC~%dR{@XB{b=MJM_uj`LmVTH4oN^Gl zEcQo0J9?M$lA)L3<-(QR2BDRnTA_7J6vEZFF@!qFN@agRmcih{W>&$>$tfJQWY+nN zEnenm#IxWg(GrjIBza~!gujf7Lic<~FtyX8Zlk`HxkWbBb6}bqhBNiR_#0?Rgc(U+ zTxu3a1=3E1kOZ$$ZU^tYQjzrJPgn5#7hUez(`;ufK~EEH65}*i=6iZ`CnXmbfe)Rq zL)veW*p^+7Fs&)*u+wiU03%KzIhHu4rMKQ&{ds|`XO2C4uNOA;M_yYn3Rz0Do;%=pxjr#qc zVvmGT2DxGR;GN)o8S(kdv9p*2r~vX`W}kL$=FSZtu#&34?8chH1{CvdxVc3G!xSAx z)ZK`t9>Me0xgNh6FS>4~mBB)RFOwWI4$K-Y8E_ieRRtIcxK;GH*fNBF9NX62b_Ag+ z^yDkHC@ovy78Bk>B8~vHJMNchR}*PscG#C66LTOwfLzpC_s}%N(t{9hqe3XPr0I; z5B2&yl&_)4!4m{i?ZqhOUN?F7hQeu-+HB!KI4U7osQ)(b-rrmTnB^i0p?mKaF3b@W zGGoH)v34&~;*=UKEQ3||EG|PWZ`0o6ZoD$+8cH=UM(f>xcoz8(R#XHkog)3|6@;yX z;5hs3uP6WB3i@C17@0B8TW6@L4QkNQgUBaq8GlTjM*-!A?lsR4Lpj zvPM6oR#GskDnf%g$25XxC!pvgS#?VNqEWeQQyeRHx1iQnJg65-#Mek>RJ|eQr|KDQ zf5n53Sy_Rjn<@(ZFD_IQT?WYAo^&HWK@WjH_DSKr+JqvN-Zd2F2r3rpl7 zr%oE_uAr{(kN)d2;=C@OmMq7@RJS(!+72uED^3nR%hctEbbY6ewP8Z%9PC##)#IO@ zH`SW|iKsiv^;(-0p|IMPgIs_$2-^gQh2Qs8=J<2<(FOic%v`^HYAH@TcXaem`J}uU zpUq=BEwk|3bjIxs6^fKjOf@tkm6G3qS7x1Xu1wFc^9gdOw9*^mu7#KObRXvCQ8yyj zyBOquKdEP2h4Zur6e5_bFXhTTu*c@TMLfSlIb<=Y--!pzh&f-k<=e})rT&Dq@z7H% zn-vB0z@>XaW(UGEb}#f3otLj0fTqGTN~NOP3-{W3-yDk|wHGLD2Sbjo(tBU21`#X~ z4{CXnEgmnoqqN@3);>jawNL>pLJ@&4BP4*K*qB;<$6|NNiRD!QzXHERHm#VvK3>TWSw>+N zCATe`#pFCjs~p2#x2YDf;m?Mg(~aO6JrO$FPxm931wR_vmZn0f)%!))Ia^%ze!N}y zFZdN-U>**`5jrI38I7DL?gCN|ISw(8%GPWJqa2|rH-meUSH-Ry?4Dd2?1M5#K?II` z^BmKM(gS@@1+%J*I@8hpQsxF)PWpcH)nov&t%vE+EZ@iDi10zu*ku*5*V@&+!8Q_C z=^FwAXW}tU?pHMmp{fBnBj;aa@+B~0nfUtM=1JZ75o`P8UyD*OT$Nrpp95{6X9w9v zh_J=@qY+I>uYX$=6-aFq8zL|G0Ml#4WVmk{T=WPLZJdmM;_2xIcKr71$G!jojq}mP zJ}sgj+#b@QWW1_@AgWk+93)B1w_K^JTPuo5^q%9&s_+tj77a}uk3~&)cp?`Or^8$? zw7vi%0@b|FaY!UE8$*x9B~b`{FiJ>qpcgtkZpc1|vpJcslAmGALoY+jmbL>c$hH%0 zn^tDDb@oZd_DfJt=&mxtW>!2`9o>UocS)h^Xx2-K8Wt{YlJA%vpd@+Xv? zZC~kQd)u)D>w8THwH0}VF|WJ}LgJGM7_D~}AytVAehmHJp7EOGJ;Oz>ZRAiosUEB9Q zZV^fr*Di*1I6GDB?6*u+Cq3gy z-|Xd1VOi&4o?q+i;L3H+%lWFttT+9G4;gI6*Q)A9ITfvvKyTS`g{E@Pe1VtT4?(%m zv54;&^ONVry8Yc4$Wk@b3WDuP&Dauo7w``X1X;Rh zM(u#T5Y=%QtmDGXic^IZGN1?KNSdZy)hd&o@<$NwG<^Mi!) z6+VzH-Nau#PNoby1tUtQ@yXNz{$ZfrL#`!*n=c;I8ct$&rm%x+WEQ3`XKm;zLTPUB zSuEH&EkmjK3yx0K2QC~+f7sYMNKFI<)ab4|RmIw&O0Boz8&lXEWiA=(8W7c3`Y4C? z$dCEYUYpTt15z}to3TUbW*$us38N`|ugph>Wp?D`UaZ-j#)l(fQ_Yg@`ApIO@!0~d zEy+Ustwx8O(4v3ctd!LEZz12%$j!#k^J$F%4>x*easRlup2zGrZR3DDXQ^0%JN25b zsuehh;|zhuB6VF%*}4ku*71ZyRD$uI`ffh|Xvq?eOwlh1^BG(vx)_RRg^v9eZEvrS z#71mdc1ezP0J1~l`k75`kd5F}RBhfgQ+MniE+%TqDQ2phO>Ucv4Te1&G5rHEg{L60 zb1Os4E-OAmrp?P;w7dQGS9_LoH~GTl<5n;-XaJSxbc?ALrlMi?^*X&5<}j zuPNH7L5`Hs(bLe&n;lSd*|Io;n+wxZe>6+d^*NVPwT*lt6*8kb`ZH24c@`;` z^qsr+*4$?lIZfDi4d^kkLZ#z~GG(5?lsg7;)o8AUlnUym*XTiy;*q0xwuZM|S)egA z{!m(;8}Ou@f1URMm!{fp0W)N8GQr2vsaVnb^~^80uMrs~ShV2# zS0}E;Yn19}0*nrh83B&Hy1o~SfEl|Y^WzW%2M#6us9nFGM4|Cy&NGjhR+8QBy&2fm z_XUiUvfJvBtNo%PX3XW)MrKQWFJN&>=3O(f>`*eBmy$78`&&{3!x*_y*U4kT=j`odL_rp3z-foL%0HG{$glSATq)QAd-g>g{=01dI36UCu z7{zj95v_@JifNycbfNjjcCqP#LtmnJdSQpuZ{rnBVg&7(OV=g7Q2v9z-oti`!H+yR zB(L-N?-G0jol>G2UDaXez|7oh#14Q4%jAoDg;Vai8k0f-FOnLg&KQw3bz1wl@`hEi zr8Yq7i%6(heJZh3i}gaEMttaSTtr(k@5?I{unfHWvWW^Z5m0&Ucq2uNSj_ovH@rCs zt_U#*9i)emB2zA{XOM+?4&cuq5#2kiXYg6W7I=$r8`3-k*^GzCu63R}7SG=OTr$Qu za;bRp_4Bm^pDwb-dci@DrcOBwIU6^^B1FqTNWUL7t~c@SMM$#?QgGgthMOFoYUrJOuMHn!dNHk?MNv~zCD8<|-sC%dgBLBrcff^2lVF;Q#3_6vQN3Ry-I%Br zgnSZ0icyL5MVtwzLwZus5ns7Cq8$YY8Xx0lEx9tx&?0V2NjF|gCl#HH8>6U^U6|5f z{L$a`fuamlJs=EoWJ?sLVCl5hNWu7hde-R}Y-k#6WDIkjXno{TI}3v8s{0&6yr1&_ ztV8~eGz}(LL1=3*e!1)r%Du~f`9D!$@_1d%RLc!&6ADm#egJ46E{P`{>SRLD-xgy$ z$z}(9P2S*r6S}uCuf$(7z^xxkxid6Hd94#Z{#{pWXz@!NF9k2>v1R3)5HA}myzK)g z`B;YDg{`I5vFo6fAT=L#7LKYFY33H|c4uIY#vC`$U;z%DY5-^%OHD&2?l_EL0{vFR zp|am`+S!5brwt=U)z*dzIWG444fIs`rnTJpy8v`}DwY|GB9M7(LMF(;YVCblzYuf$ zt~ary7g1cj{DH1)Qj`Do?E6g`YdH_mzT>K*drav$1*jfxY}yt5?AMEeANAR)H} zOvIX2_E@HwbKpoQIy9ijaX zS|&M&?OWMSfQcL!Uk80W1VwrGSN8;o%bk52A@OqvF{s@&aFCUzV})KE=0L>zFk1Pr zL`8hS;~?tg!Ny#YS1$Er8DOG3mufZaC-?JKVbno&FyGK8Brhh+$x4`s{mt_`@6ezDk8(wN^$RYVwXdCIicLpDV2N}j>gRG`<#233f< z-2)6C9*;zI`1r6GZwJBU>5uoj9dsNLu;>8$K{LA4QRC{TspAnNn{fS)6>c==k}!f2 z_kd+C-#hF`ywX|1afKSp+k!X2x95bV zBTrolS+SKB#HPEMUD*i^Zo|JYy(%6{32Vz5AIZ5zVb6lyfuFtSLLe6PP>vG+@N zOfNTB(ZtZQK{(c}z|{VQ)K&~PWEXl6NLtCQ6{LduWI%>vyi%Ms>awFT3Qy^qyV&@P z&n_yaf?^>g($!8CGXh6G2Sa`tawc9s|F4ZW&)v7k!*^a520qn8p|~kz#CbC0q6+&z ziV+w{^w#z2aaARmpBiB#kU1Iek($l+!`tD-@D&LCC)R8S`D&DOVx~uJ>PdY)m%YTrn3NT9|)BGORy}Z&I zSM-aCoqGE;s%1^r+SJ&%u40 z-YD zM9xqw@5+5kMS_lxv`9%s*!+q9O+~Sburmip|H(rwI@5x;xeVC<4MfRv=Yu1JXZ;xpsWf#g&HRB`+4?i1A)-oaWLdB z&)6{d6QDQu(5~NDu!_@9BrL&SqXdfni35U60rCC9WrMQtI-He=G0{H;T4wTO+!dbn z!Du>kqB?lp8z_>NN$mu(3q|xa`-8$fCA>=T(d|#8m%fT5DP&bnzXb~iMNCVN>(a3j zpvs&W$)vfDf1XxrBih;%t|Uq-$K`I_UgBexQVToo@Hk0kaXGzuh#Y(~{`*Z2JS3ZU zrBYPZ4dvW}*_@%o0MSr}v+65W4DEq_do!FUfDj_`p_E zP|(YwfaOgF=T8MiU!vUYbMX?wP4?YsXE4fVzDlp5wW#;s1hD4Rd4|W!;CyTqOVdfS z0<{sXHn<^iQ9TsrI`OvD=p!d^uIj(1sP?0i`12m&KH#wA?E^!@TZ_uwaJwXm`X2Nep?x#X26%bBzs4 zVgs~aM7fE`lfknDgIJU6U`qe>s^&4oc(J06Obg7mxL>Wg=ASwl$lOxe3yXabNAo0M04k0j zImB^iC796Wc+j>?)&_hrFpp%%?D|Xc)7d{4(}8)^@aO4!LBNa%(xt9wo8FWN3nwo& zY+QKM_WJykmVs5HiwQx|R}p#JwK!RY!Bs6o6bqHa)!$vmhkcl$mWbYY)i)VMV!uKo z$8l3|H;jztsfkCUS+NDobeE>F)W4PeRnY=aqorhXsI&3-N)CWtVD%fh{Jwc>#F|vz zFuHV>ra1HMO!vKpXJc5R34(i|1 zlt(|w2K5%4efjnfpWl_J^Cm^bDq6sFJ8PtS7WxGD9Q;BnoncZSO07@ecF;2tM@-0D z4NSjW+7*v45_}=mI**Y}*O;gKw;TZ>J9{?wB#}k}?4>Ljq`ZbI26qC&{h^5YVEjp| znk%bbHG_G1*Qu`nHRxt6wPIruR5Q(Nwyk#}pYtQ_P)m19jw;{f_6`T|0q=}6jy_@) zs{Iy^f=mijUrf8Z?qc`TFWoBI^7yFm#(KA|p}hGvbW?E@A$53Z*=+3o^qB6W+%f=tcNyd=Q}_$7f?5cjnr3!Cp6Tw~`o}87 zL|RmDQmw-gG2Uxlkq7L!%=lK;G~0%FAe_TYm|kD5=_jmf-k+EMK2RwB()8$qEFoeJ zN4^O=RZMiYGY(dKgFv}ktEyV+Y%SiTAmZKqL#1jV*{)F zR}IHDW3p*##&#rN9V+j&>ez-#{rLhrrXR$HU6X0Hw99uH7XpEwLH6AYdVXcZEK;Pj znf!o2b*BI~=-uri%s!MpqkYJma>XMIl^dZ8o=qLa1*epc^ECC)#I?Y)%ZFrsC$Ad4 zYP3%wM`#UuDfm2oAR_SIogDQ( zo~7O(4!#$+#Y8_$OdB3V(E|lmN*-$J!t&U=+O9AQC~E5bi&Er#k^1&nN_Ic{$T5pH z9>(4+(-2~bG(?b*K}=0uM(oLBiX8aD^k2?R{}@KW5%^+T?>h${JmT!&s&^D0ND2u$ zEa~T9q$#(h<2Z)A1If;rsHpzeudnNmJ`Q0h*zZ!dSaz!P_!&1L=Z_?3r-FXJr4?}E z)CfZ{B%(*?sdojh8SWWr?N)!s!q(5(xX3GqrVm_UWJ|=RH6Q-*-i?JmgzpD}P3%oM zuwnEawEq0)=9>xZq9c=#G3!l^hmA1F*wV26cxR?!0>6QPX=Ag(K`iHYQv0%gyXHOV zJs@PkH31~CeA)}BOLdU3_+{Ow3;AlWtQm#qQrXFXZes4X6#^e_mzT0raEgLhLwS8I zhmUHg1y$)TbgI-1sZtk=v+zx;X<9vxs92?bkjtrw`R(Gi>pf!=^nFSJa}cl3O~gV6yCx zg_0Rcx-yyK!92`(d>0Z9WT>9CcEZiT42cZ;pMJ>Vk@mc%cqa4^ABd2Te`W&l#N_P| z6{;n@l~#y3!Uqh_GTN@FaWZ5s|MR@ieTvsj;>994k0oyZ^D!$h5_^8A!#XflH;63r z7s{NqhV;^D7o)%pri;O>ulmaLf^c1AIfl>EThZN#ia8CPgE#^SA6JN2X7lLFO^|QV z7MHcrFa0`uqb$_*gmC-ENF3KL5ZwCx4mhwjyk(1`*`1J*F>z&&J(d3KS6ULtcim$N z7pGZX&Y{zCQ`EN4Lzh-$^4FzdJKmSbBb)#J$V?d|zEnpH+VZdQtYsetjlT)@!yNFr zSh4nz+xVctF(5&r#q&~8-4=NQ7GEAt`5Z;l3b9Xh87KC3L+5*O%t$oLGTE$;nE1-BUrBH7Gc1W z!n34n{EiZS1(6*OdY{m7c%!4ARbt~hqN6w-IrL#CIEV1K#WqKVQE#B(>e*+SYR-26UYO5hx zrWP%1JP;XktjD{w6_Ep-h>)}X4UbUvbEff`V2U3rFPZ6|`-(gX?^DfFX0?l#;Xa6p zZ_wqc5}jUHE?aLF5hOTNF{X5;99RPWlev#MEpb6zhrEQ1+>%$J5xIW%ovyhYf_IRS-+`RsmOoT%cUON zOTJCcr-%g~9}5jpJ5YsDfvONLeyNE{&}R?XTX8Du*XOR$ROON7ZB)!J+kKJ!nR?V- zW*>MT1MJArck>CHU2Ux>Wut~iIwE;{GzBGtVc;UmNafG9T1n;aSc@E(DR>6TD<$=Q;D`Q`@N`%Tq6^%7E;B+8VOo5m zgbPZ3>qUKM*(b4lHeHq-g3y(R%mS{* zXy9Q(7W`g0Mz%`ZrMvER`&vEY%bGu5Xb9ionzneOXRw;~`?EJ~0yx((&wRDn;8UtU z!^HZJn1u08yX99WBBImJ{y^Xf9>IXQ#2VSXRR#XXu⪙0PES-FemGH=wF0v+kS@F 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
KwB-&;7~Gwqq4WT36H|1MgF;E@NwJ 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 literal 0 HcmV?d00001 diff --git a/crates/wallets/src/wallet_browser/app/assets/main.js b/crates/wallets/src/wallet_browser/app/assets/main.js index f3cd26b6fc378..9aba740aceff9 100644 --- a/crates/wallets/src/wallet_browser/app/assets/main.js +++ b/crates/wallets/src/wallet_browser/app/assets/main.js @@ -1,170 +1,69 @@ -/** SESSION_TOKEN */ - -const headers = { - "Content-Type": "application/json", -}; -let currentTxId = null; - -const $pending = document.getElementById("pending"); -const $log = document.getElementById("log"); -const $connStatus = document.getElementById("conn-status"); -const $checkConn = document.getElementById("check-connection"); -const $connect = document.getElementById("connect"); -const $disconnect = document.getElementById("disconnect"); -const $sign = document.getElementById("sign"); - -async function api(path, method = "GET", body) { - const opts = { method, headers }; - - if (body !== undefined) opts.body = JSON.stringify(body); - - const res = await fetch(path, opts); - - if (!res.ok) { - throw new Error(`API request failed: ${res.status} ${res.statusText}`); - } - - const json = await res.json().catch(() => { - throw new Error("Invalid JSON"); - }); - - return json; -} - -function log(...args) { - $log.textContent += - args - .map((a) => (typeof a === "object" ? JSON.stringify(a, null, 2) : a)) - .join(" ") + "\n"; - $log.scrollTop = $log.scrollHeight; -} - -function normalizeTo(toField) { - if (!toField) return null; - if (typeof toField === "string") return toField; - if (typeof toField === "object") { - if ("Call" in toField) return toField.Call; - if ("Create" in toField) return null; - } - return toField; -} - -function hexToDecimalMaybe(hex) { - if (!hex || typeof hex !== "string" || !hex.startsWith("0x")) - return hex ?? null; - try { - return `${hex} (${BigInt(hex).toString(10)})`; - } catch { - return hex; - } -} - -function randomTxHash() { - const bytes = crypto.getRandomValues(new Uint8Array(32)); - return ( - "0x" + Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("") - ); -} - -function renderPending(resp) { - if (!resp || resp.status !== "ok") { - currentTxId = null; - $sign.disabled = true; - $pending.textContent = "No pending transaction"; - return; - } - const tx = resp.data; - currentTxId = tx.id; - $sign.disabled = false; - $pending.textContent = JSON.stringify(tx, null, 2); -} - -async function refreshPending() { - try { - const resp = await api("/api/transaction/request"); - renderPending(resp); - log("GET /api/transaction/request", resp); - } catch (e) { - $pending.textContent = "Error reading queue"; - log("Error:", String(e)); - } -} - -async function checkQueue() { - const resp = await api("/api/transaction/request"); - - // Only update UI/log if something changed or meaningful happened - if (resp && resp.status === "ok") { - renderPending(resp); - log("Pending transaction found:", resp.data.id); - - clearInterval(poll); - log("Paused polling — waiting for queue to clear"); - - // Wait until the queue clears, then restart polling - const prevId = resp.data.id; - const waitForClear = setInterval(async () => { - const nxt = await api("/api/transaction/request"); - - if (!nxt || nxt.status !== "ok") { - clearInterval(waitForClear); - poll = setInterval(checkQueue, 1000); - log("Resumed polling — queue cleared"); - } else if (nxt.data.id !== prevId) { - // A new tx appeared before the old cleared - renderPending(nxt); - log("Switched to new pending transaction:", nxt.data.id); - } - }, 1000); - } else { - // Only refresh the UI silently when empty - renderPending(resp); - } -} - -$checkConn.addEventListener("click", async () => { - const resp = await api("/api/connection"); - if (resp.status === "ok" && resp.data) { - const [addr, chain] = resp.data; - $connStatus.innerHTML = `Status: connected (${addr} on chain ${chain})`; - } else { - $connStatus.innerHTML = "Status: disconnected"; - } - log("Connection status:", resp); -}); - -$connect.addEventListener("click", async () => { - const resp = await api("/api/connection", "POST", [ - "0xF39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - 1, - ]); - log("POST /api/connection", resp); - $checkConn.click(); -}); - -$disconnect.addEventListener("click", async () => { - const resp = await api("/api/connection", "POST", null); - log("POST /api/connection (disconnect)", resp); - $checkConn.click(); -}); - -$sign.addEventListener("click", async () => { - if (!currentTxId) return; - - try { - const hash = randomTxHash(); - const res = await api("/api/transaction/response", "POST", { - id: currentTxId, - hash, - error: null, - }); - log("Submitted mock tx hash", { id: currentTxId, hash, result: res }); - } catch (e) { - log("Sign (mock) failed:", String(e)); - } -}); - -refreshPending(); - -let poll = setInterval(checkQueue, 1000); -checkQueue(); +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(e&&(t=e(e=0)),t),s=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),c=e=>{let n={};for(var r in e)t(n,r,{get:e[r],enumerable:!0});return n},l=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},u=(n,r,a)=>(a=n==null?{}:e(i(n)),l(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),d=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},ee=Object.prototype.hasOwnProperty;function te(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ne(e,t){return te(e.type,t,e.props)}function re(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ie(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ae=/\/+/g;function oe(e,t){return typeof e==`object`&&e&&e.key!=null?ie(``+e.key):t.toString(36)}function se(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ce(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ce(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+oe(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(ae,`$&/`)+`/`),ce(o,r,i,``,function(e){return e})):o!=null&&(re(o)&&(o=ne(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ae,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=d()})),p=s((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,re());else{var t=n(l);t!==null&&oe(x,t.startTime-e)}}var S=!1,C=-1,w=5,ee=-1;function te(){return g?!0:!(e.unstable_now()-eet&&te());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&oe(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?re():S=!1}}}var re;if(typeof y==`function`)re=function(){y(ne)};else if(typeof MessageChannel<`u`){var ie=new MessageChannel,ae=ie.port2;ie.port1.onmessage=ne,re=function(){ae.postMessage(null)}}else re=function(){_(ne,0)};function oe(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,oe(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,re()))),r},e.unstable_shouldYield=te,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),m=s(((e,t)=>{t.exports=p()})),h=s((e=>{var t=f();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=s((e=>{var t=m(),n=f(),r=g();function i(e){var t=`https://react.dev/errors/`+e;if(1me||(e.current=pe[me],pe[me]=null,me--)}function _e(e,t){me++,pe[me]=e.current,e.current=t}var ve=he(null),ye=he(null),be=he(null),xe=he(null);function Se(e,t){switch(_e(be,t),_e(ye,e),_e(ve,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?xf(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=xf(t),e=Sf(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}ge(ve),_e(ve,e)}function Ce(){ge(ve),ge(ye),ge(be)}function we(e){e.memoizedState!==null&&_e(xe,e);var t=ve.current,n=Sf(t,e.type);t!==n&&(_e(ye,e),_e(ve,n))}function Te(e){ye.current===e&&(ge(ve),ge(ye)),xe.current===e&&(ge(xe),Ap._currentValue=fe)}var Ee,De;function Oe(e){if(Ee===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ee=t&&t[1]||``,De=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{ke=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Oe(n):``}function je(e,t){switch(e.tag){case 26:case 27:case 5:return Oe(e.type);case 16:return Oe(`Lazy`);case 13:return e.child!==t&&t!==null?Oe(`Suspense Fallback`):Oe(`Suspense`);case 19:return Oe(`SuspenseList`);case 0:case 15:return Ae(e.type,!1);case 11:return Ae(e.type.render,!1);case 1:return Ae(e.type,!0);case 31:return Oe(`Activity`);default:return``}}function Me(e){try{var t=``,n=null;do t+=je(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var Ne=Object.prototype.hasOwnProperty,Pe=t.unstable_scheduleCallback,Fe=t.unstable_cancelCallback,Ie=t.unstable_shouldYield,Le=t.unstable_requestPaint,Re=t.unstable_now,ze=t.unstable_getCurrentPriorityLevel,Be=t.unstable_ImmediatePriority,Ve=t.unstable_UserBlockingPriority,He=t.unstable_NormalPriority,Ue=t.unstable_LowPriority,We=t.unstable_IdlePriority,Ge=t.log,Ke=t.unstable_setDisableYieldValue,qe=null,Je=null;function Ye(e){if(typeof Ge==`function`&&Ke(e),Je&&typeof Je.setStrictMode==`function`)try{Je.setStrictMode(qe,e)}catch{}}var Xe=Math.clz32?Math.clz32:$e,Ze=Math.log,Qe=Math.LN2;function $e(e){return e>>>=0,e===0?32:31-(Ze(e)/Qe|0)|0}var et=256,tt=262144,nt=4194304;function rt(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function it(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=rt(n))):i=rt(o):i=rt(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=rt(n))):i=rt(o)):i=rt(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function at(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ot(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function st(){var e=nt;return nt<<=1,!(nt&62914560)&&(nt=4194304),e}function ct(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function lt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ut(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),bn=!1;if(yn)try{var xn={};Object.defineProperty(xn,`passive`,{get:function(){bn=!0}}),window.addEventListener(`test`,xn,xn),window.removeEventListener(`test`,xn,xn)}catch{bn=!1}var Sn=null,Cn=null,wn=null;function Tn(){if(wn)return wn;var e,t=Cn,n=t.length,r,i=`value`in Sn?Sn.value:Sn.textContent,a=i.length;for(e=0;e=fr),hr=` `,gr=!1;function _r(e,t){switch(e){case`keyup`:return ur.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function vr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var yr=!1;function br(e,t){switch(e){case`compositionend`:return vr(t);case`keypress`:return t.which===32?(gr=!0,hr):null;case`textInput`:return e=t.data,e===hr&&gr?null:e;default:return null}}function xr(e,t){if(yr)return e===`compositionend`||!dr&&_r(e,t)?(e=Tn(),wn=Cn=Sn=null,yr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Ur(n)}}function Gr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Gr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Kr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Kt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Kt(e.document)}return t}function qr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Jr=yn&&`documentMode`in document&&11>=document.documentMode,Yr=null,Xr=null,Zr=null,Qr=!1;function $r(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Qr||Yr==null||Yr!==Kt(r)||(r=Yr,`selectionStart`in r&&qr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Zr&&Hr(Zr,r)||(Zr=r,r=rf(Xr,`onSelect`),0>=o,i-=o,Gi=1<<32-Xe(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),j&&qi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),j&&qi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return j&&qi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),j&&qi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===re&&qa(l)===r.type){n(e,r.sibling),c=a(r,o.props),eo(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=Mi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=ji(o.type,o.key,o.props,null,e.mode,c),eo(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=Fi(o,e.mode,c),c.return=e,e=c}return s(e);case re:return o=qa(o),b(e,r,o,c)}if(ue(o))return h(e,r,o,c);if(se(o)){if(l=se(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,$a(o),c);if(o.$$typeof===C)return b(e,r,xa(e,o),c);to(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=Ni(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Qa=0;var i=b(e,t,n,r);return Za=null,i}catch(t){if(t===Va||t===Ua)throw t;var a=Di(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var ro=no(!0),io=no(!1),ao=!1;function oo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function co(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function lo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,du&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=wi(e),Ci(e,null,n),t}return bi(e,r,t,n),wi(e)}function uo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ft(e,n)}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var po=!1;function mo(){if(po){var e=Ma;if(e!==null)throw e}}function ho(e,t,n,r){po=!1;var i=e.updateQueue;ao=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,m=f!==s.lane;if(m?(P&f)===f:(r&f)===f){f!==0&&f===ja&&(po=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,f);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,f=typeof h==`function`?h.call(_,d,f):h,f==null)break a;d=p({},d,f);break a;case 2:ao=!0}}f=s.callback,f!==null&&(e.flags|=64,m&&(e.flags|=8192),m=i.callbacks,m===null?i.callbacks=[f]:m.push(f))}else m={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=m,c=d):u=u.next=m,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;m=s,s=m.next,m.next=null,i.lastBaseUpdate=m,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),bu|=o,e.lanes=o,e.memoizedState=d}}function go(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function _o(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=T.T,s={};T.T=s,ic(e,!1,t,n);try{var c=i(),l=T.S;if(l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`){var u=Fa(c,r);rc(e,t,u,Hu(e))}else rc(e,t,r,Hu(e))}catch(n){rc(e,t,{then:function(){},status:`rejected`,reason:n},Hu())}finally{de.p=a,o!==null&&s.types!==null&&(o.types=s.types),T.T=o}}function qs(){}function Js(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Ys(e).queue;Ks(e,a,t,fe,n===null?qs:function(){return Xs(e),n(r)})}function Ys(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:fe,baseState:fe,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rs,lastRenderedState:fe},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Xs(e){var t=Ys(e);t.next===null&&(t=e.alternate.memoizedState),rc(e,t.next.queue,{},Hu())}function Zs(){return ba(Ap)}function Qs(){return Qo().memoizedState}function $s(){return Qo().memoizedState}function ec(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Hu();e=co(n);var r=lo(t,e,n);r!==null&&(Wu(r,t,n),uo(r,t,n)),t={cache:Da()},e.payload=t;return}t=t.return}}function tc(e,t,n){var r=Hu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},ac(e)?oc(t,n):(n=xi(e,t,n,r),n!==null&&(Wu(n,e,r),sc(n,t,r)))}function nc(e,t,n){var r=Hu();rc(e,t,n,r)}function rc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(ac(e))oc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Vr(s,o))return bi(e,t,i,0),fu===null&&yi(),!1}catch{}if(n=xi(e,t,i,r),n!==null)return Wu(n,e,r),sc(n,t,r),!0}return!1}function ic(e,t,n,r){if(r={lane:2,revertLane:Vd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},ac(e)){if(t)throw Error(i(479))}else t=xi(e,n,r,2),t!==null&&Wu(t,e,2)}function ac(e){var t=e.alternate;return e===M||t!==null&&t===M}function oc(e,t){Io=Fo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function sc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ft(e,n)}}var cc={readContext:ba,use:ts,useCallback:Ho,useContext:Ho,useEffect:Ho,useImperativeHandle:Ho,useLayoutEffect:Ho,useInsertionEffect:Ho,useMemo:Ho,useReducer:Ho,useRef:Ho,useState:Ho,useDebugValue:Ho,useDeferredValue:Ho,useTransition:Ho,useSyncExternalStore:Ho,useId:Ho,useHostTransitionStatus:Ho,useFormState:Ho,useActionState:Ho,useOptimistic:Ho,useMemoCache:Ho,useCacheRefresh:Ho};cc.useEffectEvent=Ho;var lc={readContext:ba,use:ts,useCallback:function(e,t){return Zo().memoizedState=[e,t===void 0?null:t],e},useContext:ba,useEffect:Ns,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),js(4194308,4,zs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return js(4194308,4,e,t)},useInsertionEffect:function(e,t){js(4,2,e,t)},useMemo:function(e,t){var n=Zo();t=t===void 0?null:t;var r=e();if(Lo){Ye(!0);try{e()}finally{Ye(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Zo();if(n!==void 0){var i=n(t);if(Lo){Ye(!0);try{n(t)}finally{Ye(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=tc.bind(null,M,e),[r.memoizedState,e]},useRef:function(e){var t=Zo();return e={current:e},t.memoizedState=e},useState:function(e){e=hs(e);var t=e.queue,n=nc.bind(null,M,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Vs,useDeferredValue:function(e,t){var n=Zo();return Ws(n,e,t)},useTransition:function(){var e=hs(!1);return e=Ks.bind(null,M,e.queue,!0,!1),Zo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=M,a=Zo();if(j){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),fu===null)throw Error(i(349));P&127||us(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Ns(fs.bind(null,r,o,e),[e]),r.flags|=2048,ks(9,{destroy:void 0},ds.bind(null,r,o,n,t),null),n},useId:function(){var e=Zo(),t=fu.identifierPrefix;if(j){var n=Ki,r=Gi;n=(r&~(1<<32-Xe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Ro++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[yt]=t,o[bt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(mf(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&rl(t)}}return cl(t),il(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&rl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=be.current,oa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Qi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[yt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||df(e.nodeValue,n)),e||ra(t,!0)}else e=bf(e).createTextNode(r),e[yt]=t,t.stateNode=e}return cl(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=oa(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[yt]=t}else sa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;cl(t),e=!1}else n=ca(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ko(t),t):(ko(t),null);if(t.flags&128)throw Error(i(558))}return cl(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=oa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[yt]=t}else sa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;cl(t),a=!1}else a=ca(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(ko(t),t):(ko(t),null)}return ko(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),ol(t,t.updateQueue),cl(t),null);case 4:return Ce(),e===null&&$d(t.stateNode.containerInfo),cl(t),null;case 10:return ma(t.type),cl(t),null;case 19:if(ge(Ao),r=t.memoizedState,r===null)return cl(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)sl(r,!1);else{if(yu!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=jo(e),o!==null){for(t.flags|=128,sl(r,!1),e=o.updateQueue,t.updateQueue=e,ol(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ai(n,e),n=n.sibling;return _e(Ao,Ao.current&1|2),j&&qi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Re()>Au&&(t.flags|=128,a=!0,sl(r,!1),t.lanes=4194304)}else{if(!a)if(e=jo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,ol(t,e),sl(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!j)return cl(t),null}else 2*Re()-r.renderingStartTime>Au&&n!==536870912&&(t.flags|=128,a=!0,sl(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(cl(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Re(),e.sibling=null,n=Ao.current,_e(Ao,a?n&1|2:n&1),j&&qi(t,r.treeForkCount),e);case 22:case 23:return ko(t),So(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(cl(t),t.subtreeFlags&6&&(t.flags|=8192)):cl(t),n=t.updateQueue,n!==null&&ol(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&ge(La),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ma(Ea),cl(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function ul(e,t){switch(Xi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ma(Ea),Ce(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Te(t),null;case 31:if(t.memoizedState!==null){if(ko(t),t.alternate===null)throw Error(i(340));sa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ko(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));sa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ge(Ao),null;case 4:return Ce(),null;case 10:return ma(t.type),null;case 22:case 23:return ko(t),So(),e!==null&&ge(La),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ma(Ea),null;case 25:return null;default:return null}}function dl(e,t){switch(Xi(t),t.tag){case 3:ma(Ea),Ce();break;case 26:case 27:case 5:Te(t);break;case 4:Ce();break;case 31:t.memoizedState!==null&&ko(t);break;case 13:ko(t);break;case 19:ge(Ao);break;case 10:ma(t.type);break;case 22:case 23:ko(t),So(),e!==null&&ge(La);break;case 24:ma(Ea)}}function fl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){bd(t,t.return,e)}}function pl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){bd(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){bd(t,t.return,e)}}function ml(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{_o(t,n)}catch(t){bd(e,e.return,t)}}}function hl(e,t,n){n.props=gc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){bd(e,t,n)}}function gl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){bd(e,t,n)}}function _l(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){bd(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){bd(e,t,n)}else n.current=null}function vl(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){bd(e,e.return,t)}}function yl(e,t,n){try{var r=e.stateNode;hf(r,e.type,n,t),r[bt]=t}catch(t){bd(e,e.return,t)}}function bl(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&jf(e.type)||e.tag===4}function xl(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||bl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&jf(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Sl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=un));else if(r!==4&&(r===27&&jf(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Sl(e,t,n),e=e.sibling;e!==null;)Sl(e,t,n),e=e.sibling}function Cl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&jf(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Cl(e,t,n),e=e.sibling;e!==null;)Cl(e,t,n),e=e.sibling}function wl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);mf(t,r,n),t[yt]=e,t[bt]=n}catch(t){bd(e,e.return,t)}}var Tl=!1,El=!1,Dl=!1,Ol=typeof WeakSet==`function`?WeakSet:Set,kl=null;function Al(e,t){if(e=e.containerInfo,vf=zp,e=Kr(e),qr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(yf={focusedElem:e,selectionRange:n},zp=!1,kl=t;kl!==null;)if(t=kl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,kl=e;else for(;kl!==null;){switch(t=kl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),mf(o,r,n),o[yt]=e,jt(o),r=o;break a;case`link`:var s=yp(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Wr(s,h),v=Wr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,T.T=null,n=Ru,Ru=null;var o=Pu,s=Iu;if(Nu=0,Fu=Pu=null,Iu=0,du&6)throw Error(i(331));var c=du;if(du|=4,ou(o.current),Ql(o,o.current,s,n),du=c,Pd(0,!1),Je&&typeof Je.onPostCommitFiberRoot==`function`)try{Je.onPostCommitFiberRoot(qe,o)}catch{}return!0}finally{de.p=a,T.T=r,gd(e,t)}}function yd(e,t,n){t=Li(n,t),t=Sc(e.stateNode,t,2),e=lo(e,t,2),e!==null&&(lt(e,2),Nd(e))}function bd(e,t,n){if(e.tag===3)yd(e,e,n);else for(;t!==null;){if(t.tag===3){yd(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(Mu===null||!Mu.has(r))){e=Li(n,e),n=Cc(2),r=lo(t,n,2),r!==null&&(wc(n,r,t,e),lt(r,2),Nd(r));break}}t=t.return}}function xd(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new uu;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(_u=!0,i.add(n),e=Sd.bind(null,e,t,n),t.then(e,e))}function Sd(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,fu===e&&(P&n)===n&&(yu===4||yu===3&&(P&62914560)===P&&300>Re()-Ou?!(du&2)&&Zu(e,0):Su|=n,wu===P&&(wu=0)),Nd(e)}function Cd(e,t){t===0&&(t=st()),e=Si(e,t),e!==null&&(lt(e,t),Nd(e))}function wd(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Cd(e,n)}function Td(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Cd(e,n)}function Ed(e,t){return Pe(e,t)}var Dd=null,Od=null,kd=!1,Ad=!1,jd=!1,Md=0;function Nd(e){e!==Od&&e.next===null&&(Od===null?Dd=Od=e:Od=Od.next=e),Ad=!0,kd||(kd=!0,Bd())}function Pd(e,t){if(!jd&&Ad){jd=!0;do for(var n=!1,r=Dd;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Xe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,zd(r,a))}else a=P,a=it(r,r===fu?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||at(r,a)||(n=!0,zd(r,a));r=r.next}while(n);jd=!1}}function Fd(){Id()}function Id(){Ad=kd=!1;var e=0;Md!==0&&Tf()&&(e=Md);for(var t=Re(),n=null,r=Dd;r!==null;){var i=r.next,a=Ld(r,t);a===0?(r.next=null,n===null?Dd=i:n.next=i,i===null&&(Od=n)):(n=r,(e!==0||a&3)&&(Ad=!0)),r=i}Nu!==0&&Nu!==5||Pd(e,!1),Md!==0&&(Md=0)}function Ld(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&gf(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function $f(e,t,n){var r=Qf;if(r&&typeof t==`string`&&t){var i=Jt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),qf.has(i)||(qf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),mf(t,`link`,e),jt(t),r.head.appendChild(t)))}}function ep(e){Yf.D(e),$f(`dns-prefetch`,e,null)}function tp(e,t){Yf.C(e,t),$f(`preconnect`,e,t)}function np(e,t,n){Yf.L(e,t,n);var r=Qf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Jt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Jt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Jt(n.imageSizes)+`"]`)):i+=`[href="`+Jt(e)+`"]`;var a=i;switch(t){case`style`:a=cp(e);break;case`script`:a=fp(e)}Kf.has(a)||(e=p({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),Kf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(lp(a))||t===`script`&&r.querySelector(pp(a))||(t=r.createElement(`link`),mf(t,`link`,e),jt(t),r.head.appendChild(t)))}}function rp(e,t){Yf.m(e,t);var n=Qf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Jt(r)+`"][href="`+Jt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=fp(e)}if(!Kf.has(a)&&(e=p({rel:`modulepreload`,href:e},t),Kf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(pp(a)))return}r=n.createElement(`link`),mf(r,`link`,e),jt(r),n.head.appendChild(r)}}}function ip(e,t,n){Yf.S(e,t,n);var r=Qf;if(r&&e){var i=At(r).hoistableStyles,a=cp(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(lp(a)))s.loading=5;else{e=p({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=Kf.get(a))&&gp(e,n);var c=o=r.createElement(`link`);jt(c),mf(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,hp(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function ap(e,t){Yf.X(e,t);var n=Qf;if(n&&e){var r=At(n).hoistableScripts,i=fp(e),a=r.get(i);a||(a=n.querySelector(pp(i)),a||(e=p({src:e,async:!0},t),(t=Kf.get(i))&&_p(e,t),a=n.createElement(`script`),jt(a),mf(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function op(e,t){Yf.M(e,t);var n=Qf;if(n&&e){var r=At(n).hoistableScripts,i=fp(e),a=r.get(i);a||(a=n.querySelector(pp(i)),a||(e=p({src:e,async:!0,type:`module`},t),(t=Kf.get(i))&&_p(e,t),a=n.createElement(`script`),jt(a),mf(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function sp(e,t,n,r){var a=(a=be.current)?Jf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=cp(n.href),n=At(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=cp(n.href);var o=At(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(lp(e)))&&!o._p&&(s.instance=o,s.state.loading=5),Kf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Kf.set(e,n),o||dp(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=fp(n),n=At(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function cp(e){return`href="`+Jt(e)+`"`}function lp(e){return`link[rel="stylesheet"][`+e+`]`}function up(e){return p({},e,{"data-precedence":e.precedence,precedence:null})}function dp(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),mf(t,`link`,n),jt(t),e.head.appendChild(t))}function fp(e){return`[src="`+Jt(e)+`"]`}function pp(e){return`script[async]`+e}function mp(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Jt(n.href)+`"]`);if(r)return t.instance=r,jt(r),r;var a=p({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),jt(r),mf(r,`style`,a),hp(r,n.precedence,e),t.instance=r;case`stylesheet`:a=cp(n.href);var o=e.querySelector(lp(a));if(o)return t.state.loading|=4,t.instance=o,jt(o),o;r=up(n),(a=Kf.get(a))&&gp(r,a),o=(e.ownerDocument||e).createElement(`link`),jt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),mf(o,`link`,r),t.state.loading|=4,hp(o,n.precedence,e),t.instance=o;case`script`:return o=fp(n.src),(a=e.querySelector(pp(o)))?(t.instance=a,jt(a),a):(r=n,(a=Kf.get(o))&&(r=p({},n),_p(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),jt(a),mf(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,hp(r,n.precedence,e));return t.instance}function hp(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function xp(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Sp(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Cp(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=cp(r.href),a=t.querySelector(lp(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Ep.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,jt(a);return}a=t.ownerDocument||t,r=up(r),(i=Kf.get(i))&&gp(r,i),a=a.createElement(`link`),jt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),mf(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Ep.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var wp=0;function Tp(e,t){return e.stylesheets&&e.count===0&&Op(e,e.stylesheets),0wp?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Ep(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Op(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Dp=null;function Op(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Dp=new Map,t.forEach(kp,e),Dp=null,Ep.call(e))}function kp(e,t){if(!(t.state.loading&4)){var n=Dp.get(e);if(n)var r=n.get(null);else{n=new Map,Dp.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=_()}))()),y=u(f()),b,x=o((()=>{b=`1.1.0`})),S,C=o((()=>{x(),S=class e extends Error{constructor(t,n={}){let r=n.cause instanceof e?n.cause.details:n.cause?.message?n.cause.message:n.details,i=n.cause instanceof e&&n.cause.docsPath||n.docsPath,a=[t||`An error occurred.`,``,...n.metaMessages?[...n.metaMessages,``]:[],...i?[`Docs: https://abitype.dev${i}`]:[],...r?[`Details: ${r}`]:[],`Version: abitype@${b}`].join(` +`);super(a),Object.defineProperty(this,`details`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`docsPath`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`metaMessages`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`shortMessage`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`AbiTypeError`}),n.cause&&(this.cause=n.cause),this.details=r,this.docsPath=i,this.metaMessages=n.metaMessages,this.shortMessage=t}}}));function w(e,t){return e.exec(t)?.groups}var ee,te,ne,re=o((()=>{ee=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,te=/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/,ne=/^\(.+?\).*?$/}));function ie(e){let t=e.type;if(ae.test(e.type)&&`components`in e){t=`(`;let n=e.components.length;for(let r=0;r{re(),ae=/^tuple(?(\[(\d*)\])*)$/}));function se(e){let t=``,n=e.length;for(let r=0;r{oe()}));function le(e){return e.type===`function`?`function ${e.name}(${se(e.inputs)})${e.stateMutability&&e.stateMutability!==`nonpayable`?` ${e.stateMutability}`:``}${e.outputs?.length?` returns (${se(e.outputs)})`:``}`:e.type===`event`?`event ${e.name}(${se(e.inputs)})`:e.type===`error`?`error ${e.name}(${se(e.inputs)})`:e.type===`constructor`?`constructor(${se(e.inputs)})${e.stateMutability===`payable`?` payable`:``}`:e.type===`fallback`?`fallback() external${e.stateMutability===`payable`?` payable`:``}`:`receive() external payable`}var ue=o((()=>{ce()}));function T(e){return Ce.test(e)}function de(e){return w(Ce,e)}function fe(e){return we.test(e)}function pe(e){return w(we,e)}function me(e){return Te.test(e)}function he(e){return w(Te,e)}function ge(e){return Ee.test(e)}function _e(e){return w(Ee,e)}function ve(e){return De.test(e)}function ye(e){return w(De,e)}function be(e){return Oe.test(e)}function xe(e){return w(Oe,e)}function Se(e){return ke.test(e)}var Ce,we,Te,Ee,De,Oe,ke,Ae,je,Me,Ne=o((()=>{re(),Ce=/^error (?[a-zA-Z$_][a-zA-Z0-9$_]*)\((?.*?)\)$/,we=/^event (?[a-zA-Z$_][a-zA-Z0-9$_]*)\((?.*?)\)$/,Te=/^function (?[a-zA-Z$_][a-zA-Z0-9$_]*)\((?.*?)\)(?: (?external|public{1}))?(?: (?pure|view|nonpayable|payable{1}))?(?: returns\s?\((?.*?)\))?$/,Ee=/^struct (?[a-zA-Z$_][a-zA-Z0-9$_]*) \{(?.*?)\}$/,De=/^constructor\((?.*?)\)(?:\s(?payable{1}))?$/,Oe=/^fallback\(\) external(?:\s(?payable{1}))?$/,ke=/^receive\(\) external payable$/,Ae=new Set([`memory`,`indexed`,`storage`,`calldata`]),je=new Set([`indexed`]),Me=new Set([`calldata`,`memory`,`storage`])})),Pe,Fe,Ie,Le=o((()=>{C(),Pe=class extends S{constructor({signature:e}){super(`Failed to parse ABI item.`,{details:`parseAbiItem(${JSON.stringify(e,null,2)})`,docsPath:`/api/human#parseabiitem-1`}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidAbiItemError`})}},Fe=class extends S{constructor({type:e}){super(`Unknown type.`,{metaMessages:[`Type "${e}" is not a valid ABI type. Perhaps you forgot to include a struct signature?`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`UnknownTypeError`})}},Ie=class extends S{constructor({type:e}){super(`Unknown type.`,{metaMessages:[`Type "${e}" is not a valid ABI type.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`UnknownSolidityTypeError`})}}})),Re,ze,Be,Ve,He,Ue,We=o((()=>{C(),Re=class extends S{constructor({params:e}){super(`Failed to parse ABI parameters.`,{details:`parseAbiParameters(${JSON.stringify(e,null,2)})`,docsPath:`/api/human#parseabiparameters-1`}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidAbiParametersError`})}},ze=class extends S{constructor({param:e}){super(`Invalid ABI parameter.`,{details:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidParameterError`})}},Be=class extends S{constructor({param:e,name:t}){super(`Invalid ABI parameter.`,{details:e,metaMessages:[`"${t}" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`SolidityProtectedKeywordError`})}},Ve=class extends S{constructor({param:e,type:t,modifier:n}){super(`Invalid ABI parameter.`,{details:e,metaMessages:[`Modifier "${n}" not allowed${t?` in "${t}" type`:``}.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidModifierError`})}},He=class extends S{constructor({param:e,type:t,modifier:n}){super(`Invalid ABI parameter.`,{details:e,metaMessages:[`Modifier "${n}" not allowed${t?` in "${t}" type`:``}.`,`Data location can only be specified for array, struct, or mapping types, but "${n}" was given.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidFunctionModifierError`})}},Ue=class extends S{constructor({abiParameter:e}){super(`Invalid ABI parameter.`,{details:JSON.stringify(e,null,2),metaMessages:[`ABI parameter type is invalid.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidAbiTypeParameterError`})}}})),Ge,Ke,qe,Je=o((()=>{C(),Ge=class extends S{constructor({signature:e,type:t}){super(`Invalid ${t} signature.`,{details:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidSignatureError`})}},Ke=class extends S{constructor({signature:e}){super(`Unknown signature.`,{details:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`UnknownSignatureError`})}},qe=class extends S{constructor({signature:e}){super(`Invalid struct signature.`,{details:e,metaMessages:[`No properties exist.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidStructSignatureError`})}}})),Ye,Xe=o((()=>{C(),Ye=class extends S{constructor({type:e}){super(`Circular reference detected.`,{metaMessages:[`Struct "${e}" is a circular reference.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`CircularReferenceError`})}}})),Ze,Qe=o((()=>{C(),Ze=class extends S{constructor({current:e,depth:t}){super(`Unbalanced parentheses.`,{metaMessages:[`"${e.trim()}" has too many ${t>0?`opening`:`closing`} parentheses.`],details:`Depth "${t}"`}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidParenthesisError`})}}}));function $e(e,t,n){let r=``;if(n)for(let e of Object.entries(n)){if(!e)continue;let t=``;for(let n of e[1])t+=`[${n.type}${n.name?`:${n.name}`:``}]`;r+=`(${e[0]}{${t}})`}return t?`${t}:${e}${r}`:e}var et,tt=o((()=>{et=new Map([[`address`,{type:`address`}],[`bool`,{type:`bool`}],[`bytes`,{type:`bytes`}],[`bytes32`,{type:`bytes32`}],[`int`,{type:`int256`}],[`int256`,{type:`int256`}],[`string`,{type:`string`}],[`uint`,{type:`uint256`}],[`uint8`,{type:`uint8`}],[`uint16`,{type:`uint16`}],[`uint24`,{type:`uint24`}],[`uint32`,{type:`uint32`}],[`uint64`,{type:`uint64`}],[`uint96`,{type:`uint96`}],[`uint112`,{type:`uint112`}],[`uint160`,{type:`uint160`}],[`uint192`,{type:`uint192`}],[`uint256`,{type:`uint256`}],[`address owner`,{type:`address`,name:`owner`}],[`address to`,{type:`address`,name:`to`}],[`bool approved`,{type:`bool`,name:`approved`}],[`bytes _data`,{type:`bytes`,name:`_data`}],[`bytes data`,{type:`bytes`,name:`data`}],[`bytes signature`,{type:`bytes`,name:`signature`}],[`bytes32 hash`,{type:`bytes32`,name:`hash`}],[`bytes32 r`,{type:`bytes32`,name:`r`}],[`bytes32 root`,{type:`bytes32`,name:`root`}],[`bytes32 s`,{type:`bytes32`,name:`s`}],[`string name`,{type:`string`,name:`name`}],[`string symbol`,{type:`string`,name:`symbol`}],[`string tokenURI`,{type:`string`,name:`tokenURI`}],[`uint tokenId`,{type:`uint256`,name:`tokenId`}],[`uint8 v`,{type:`uint8`,name:`v`}],[`uint256 balance`,{type:`uint256`,name:`balance`}],[`uint256 tokenId`,{type:`uint256`,name:`tokenId`}],[`uint256 value`,{type:`uint256`,name:`value`}],[`event:address indexed from`,{type:`address`,name:`from`,indexed:!0}],[`event:address indexed to`,{type:`address`,name:`to`,indexed:!0}],[`event:uint indexed tokenId`,{type:`uint256`,name:`tokenId`,indexed:!0}],[`event:uint256 indexed tokenId`,{type:`uint256`,name:`tokenId`,indexed:!0}]])}));function nt(e,t={}){if(me(e))return rt(e,t);if(fe(e))return it(e,t);if(T(e))return at(e,t);if(ve(e))return ot(e,t);if(be(e))return st(e);if(Se(e))return{type:`receive`,stateMutability:`payable`};throw new Ke({signature:e})}function rt(e,t={}){let n=he(e);if(!n)throw new Ge({signature:e,type:`function`});let r=lt(n.parameters),i=[],a=r.length;for(let e=0;e{re(),Le(),We(),Je(),Qe(),tt(),Ne(),pt=/^(?[a-zA-Z$_][a-zA-Z0-9$_]*(?:\spayable)?)(?(?:\[\d*?\])+?)?(?:\s(?calldata|indexed|memory|storage{1}))?(?:\s(?[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,mt=/^\((?.+?)\)(?(?:\[\d*?\])+?)?(?:\s(?calldata|indexed|memory|storage{1}))?(?:\s(?[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,ht=/^u?int$/,gt=/^(?:after|alias|anonymous|apply|auto|byte|calldata|case|catch|constant|copyof|default|defined|error|event|external|false|final|function|immutable|implements|in|indexed|inline|internal|let|mapping|match|memory|mutable|null|of|override|partial|private|promise|public|pure|reference|relocatable|return|returns|sizeof|static|storage|struct|super|supports|switch|this|true|try|typedef|typeof|var|view|virtual)$/}));function vt(e){let t={},n=e.length;for(let r=0;r{re(),Le(),We(),Je(),Xe(),Ne(),_t(),bt=/^(?[a-zA-Z$_][a-zA-Z0-9$_]*)(?(?:\[\d*?\])+?)?$/}));function St(e){let t=vt(e),n=[],r=e.length;for(let i=0;i{Ne(),xt(),_t()}));function wt(e){let t;if(typeof e==`string`)t=nt(e);else{let n=vt(e),r=e.length;for(let i=0;i{Le(),Ne(),xt(),_t()}));function Et(e){let t=[];if(typeof e==`string`){let n=lt(e),r=n.length;for(let e=0;e{We(),Ne(),xt(),_t()})),Ot=o((()=>{ue(),ce(),Ct(),Tt(),Dt()}));function E(e,t,n){let r=e[t.name];if(typeof r==`function`)return r;let i=e[n];return typeof i==`function`?i:n=>t(e,n)}function kt(e,{includeName:t=!1}={}){if(e.type!==`function`&&e.type!==`event`&&e.type!==`error`)throw new on(e.type);return`${e.name}(${At(e.inputs,{includeName:t})})`}function At(e,{includeName:t=!1}={}){return e?e.map(e=>jt(e,{includeName:t})).join(t?`, `:`,`):``}function jt(e,{includeName:t}){return e.type.startsWith(`tuple`)?`(${At(e.components,{includeName:t})})${e.type.slice(5)}`:e.type+(t&&e.name?` ${e.name}`:``)}var Mt=o((()=>{sn()}));function Nt(e,{strict:t=!0}={}){return!e||typeof e!=`string`?!1:t?/^0x[0-9a-fA-F]*$/.test(e):e.startsWith(`0x`)}var Pt=o((()=>{}));function Ft(e){return Nt(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}var It=o((()=>{Pt()})),Lt,Rt=o((()=>{Lt=`2.38.3`}));function zt(e,t){return t?.(e)?e:e&&typeof e==`object`&&`cause`in e&&e.cause!==void 0?zt(e.cause,t):t?null:e}var Bt,D,O=o((()=>{Rt(),Bt={getDocsUrl:({docsBaseUrl:e,docsPath:t=``,docsSlug:n})=>t?`${e??`https://viem.sh`}${t}${n?`#${n}`:``}`:void 0,version:`viem@${Lt}`},D=class e extends Error{constructor(t,n={}){let r=(()=>n.cause instanceof e?n.cause.details:n.cause?.message?n.cause.message:n.details)(),i=(()=>n.cause instanceof e&&n.cause.docsPath||n.docsPath)(),a=Bt.getDocsUrl?.({...n,docsPath:i}),o=[t||`An error occurred.`,``,...n.metaMessages?[...n.metaMessages,``]:[],...a?[`Docs: ${a}`]:[],...r?[`Details: ${r}`]:[],...Bt.version?[`Version: ${Bt.version}`]:[]].join(` +`);super(o,n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,`details`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`docsPath`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`metaMessages`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`shortMessage`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`version`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`BaseError`}),this.details=r,this.docsPath=i,this.metaMessages=n.metaMessages,this.name=n.name??this.name,this.shortMessage=t,this.version=Lt}walk(e){return zt(this,e)}}})),Vt,Ht,Ut,Wt,Gt,Kt,qt,Jt,Yt,Xt,Zt,Qt,$t,en,tn,nn,rn,an,on,sn=o((()=>{Mt(),It(),O(),Vt=class extends D{constructor({docsPath:e}){super([`A constructor was not found on the ABI.`,`Make sure you are using the correct ABI and that the constructor exists on it.`].join(` +`),{docsPath:e,name:`AbiConstructorNotFoundError`})}},Ht=class extends D{constructor({docsPath:e}){super(["Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.","Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists."].join(` +`),{docsPath:e,name:`AbiConstructorParamsNotFoundError`})}},Ut=class extends D{constructor({data:e,params:t,size:n}){super([`Data size of ${n} bytes is too small for given parameters.`].join(` +`),{metaMessages:[`Params: (${At(t,{includeName:!0})})`,`Data: ${e} (${n} bytes)`],name:`AbiDecodingDataSizeTooSmallError`}),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`params`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`size`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=e,this.params=t,this.size=n}},Wt=class extends D{constructor(){super(`Cannot decode zero data ("0x") with ABI parameters.`,{name:`AbiDecodingZeroDataError`})}},Gt=class extends D{constructor({expectedLength:e,givenLength:t,type:n}){super([`ABI encoding array length mismatch for type ${n}.`,`Expected length: ${e}`,`Given length: ${t}`].join(` +`),{name:`AbiEncodingArrayLengthMismatchError`})}},Kt=class extends D{constructor({expectedSize:e,value:t}){super(`Size of bytes "${t}" (bytes${Ft(t)}) does not match expected size (bytes${e}).`,{name:`AbiEncodingBytesSizeMismatchError`})}},qt=class extends D{constructor({expectedLength:e,givenLength:t}){super([`ABI encoding params/values length mismatch.`,`Expected length (params): ${e}`,`Given length (values): ${t}`].join(` +`),{name:`AbiEncodingLengthMismatchError`})}},Jt=class extends D{constructor(e,{docsPath:t}){super([`Arguments (\`args\`) were provided to "${e}", but "${e}" on the ABI does not contain any parameters (\`inputs\`).`,`Cannot encode error result without knowing what the parameter types are.`,`Make sure you are using the correct ABI and that the inputs exist on it.`].join(` +`),{docsPath:t,name:`AbiErrorInputsNotFoundError`})}},Yt=class extends D{constructor(e,{docsPath:t}={}){super([`Error ${e?`"${e}" `:``}not found on ABI.`,`Make sure you are using the correct ABI and that the error exists on it.`].join(` +`),{docsPath:t,name:`AbiErrorNotFoundError`})}},Xt=class extends D{constructor(e,{docsPath:t}){super([`Encoded error signature "${e}" not found on ABI.`,`Make sure you are using the correct ABI and that the error exists on it.`,`You can look up the decoded signature here: https://openchain.xyz/signatures?query=${e}.`].join(` +`),{docsPath:t,name:`AbiErrorSignatureNotFoundError`}),Object.defineProperty(this,`signature`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.signature=e}},Zt=class extends D{constructor(e,{docsPath:t}={}){super([`Function ${e?`"${e}" `:``}not found on ABI.`,`Make sure you are using the correct ABI and that the function exists on it.`].join(` +`),{docsPath:t,name:`AbiFunctionNotFoundError`})}},Qt=class extends D{constructor(e,{docsPath:t}){super([`Function "${e}" does not contain any \`outputs\` on ABI.`,`Cannot decode function result without knowing what the parameter types are.`,`Make sure you are using the correct ABI and that the function exists on it.`].join(` +`),{docsPath:t,name:`AbiFunctionOutputsNotFoundError`})}},$t=class extends D{constructor(e,{docsPath:t}){super([`Encoded function signature "${e}" not found on ABI.`,`Make sure you are using the correct ABI and that the function exists on it.`,`You can look up the signature here: https://openchain.xyz/signatures?query=${e}.`].join(` +`),{docsPath:t,name:`AbiFunctionSignatureNotFoundError`})}},en=class extends D{constructor(e,t){super(`Found ambiguous types in overloaded ABI items.`,{metaMessages:[`\`${e.type}\` in \`${kt(e.abiItem)}\`, and`,`\`${t.type}\` in \`${kt(t.abiItem)}\``,``,`These types encode differently and cannot be distinguished at runtime.`,`Remove one of the ambiguous items in the ABI.`],name:`AbiItemAmbiguityError`})}},tn=class extends D{constructor({expectedSize:e,givenSize:t}){super(`Expected bytes${e}, got bytes${t}.`,{name:`BytesSizeMismatchError`})}},nn=class extends D{constructor(e,{docsPath:t}){super([`Type "${e}" is not a valid encoding type.`,`Please provide a valid ABI type.`].join(` +`),{docsPath:t,name:`InvalidAbiEncodingType`})}},rn=class extends D{constructor(e,{docsPath:t}){super([`Type "${e}" is not a valid decoding type.`,`Please provide a valid ABI type.`].join(` +`),{docsPath:t,name:`InvalidAbiDecodingType`})}},an=class extends D{constructor(e){super([`Value "${e}" is not a valid array.`].join(` +`),{name:`InvalidArrayError`})}},on=class extends D{constructor(e){super([`"${e}" is not a valid definition type.`,`Valid types: "function", "event", "error"`].join(` +`),{name:`InvalidDefinitionTypeError`})}}})),cn,ln,un,dn=o((()=>{O(),cn=class extends D{constructor({offset:e,position:t,size:n}){super(`Slice ${t===`start`?`starting`:`ending`} at offset "${e}" is out-of-bounds (size: ${n}).`,{name:`SliceOffsetOutOfBoundsError`})}},ln=class extends D{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (${e}) exceeds padding size (${t}).`,{name:`SizeExceedsPaddingSizeError`})}},un=class extends D{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} is expected to be ${t} ${n} long, but is ${e} ${n} long.`,{name:`InvalidBytesLengthError`})}}}));function fn(e,{dir:t,size:n=32}={}){return typeof e==`string`?pn(e,{dir:t,size:n}):mn(e,{dir:t,size:n})}function pn(e,{dir:t,size:n=32}={}){if(n===null)return e;let r=e.replace(`0x`,``);if(r.length>n*2)throw new ln({size:Math.ceil(r.length/2),targetSize:n,type:`hex`});return`0x${r[t===`right`?`padEnd`:`padStart`](n*2,`0`)}`}function mn(e,{dir:t,size:n=32}={}){if(n===null)return e;if(e.length>n)throw new ln({size:e.length,targetSize:n,type:`bytes`});let r=new Uint8Array(n);for(let i=0;i{dn()})),gn,_n,vn,yn,bn=o((()=>{O(),gn=class extends D{constructor({max:e,min:t,signed:n,size:r,value:i}){super(`Number "${i}" is not in safe ${r?`${r*8}-bit ${n?`signed`:`unsigned`} `:``}integer range ${e?`(${t} to ${e})`:`(above ${t})`}`,{name:`IntegerOutOfRangeError`})}},_n=class extends D{constructor(e){super(`Bytes value "${e}" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`,{name:`InvalidBytesBooleanError`})}},vn=class extends D{constructor(e){super(`Hex value "${e}" is not a valid boolean. The hex value must be "0x0" (false) or "0x1" (true).`,{name:`InvalidHexBooleanError`})}},yn=class extends D{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed ${t} bytes. Given size: ${e} bytes.`,{name:`SizeOverflowError`})}}}));function xn(e,{dir:t=`left`}={}){let n=typeof e==`string`?e.replace(`0x`,``):e,r=0;for(let e=0;e{}));function Cn(e,{size:t}){if(Ft(e)>t)throw new yn({givenSize:Ft(e),maxSize:t})}function wn(e,t={}){let{signed:n}=t;t.size&&Cn(e,{size:t.size});let r=BigInt(e);if(!n)return r;let i=(e.length-2)/2,a=(1n<{bn(),It(),Sn()}));function On(e,t={}){return typeof e==`number`||typeof e==`bigint`?k(e,t):typeof e==`string`?jn(e,t):typeof e==`boolean`?kn(e,t):An(e,t)}function kn(e,t={}){let n=`0x${Number(e)}`;return typeof t.size==`number`?(Cn(n,{size:t.size}),fn(n,{size:t.size})):n}function An(e,t={}){let n=``;for(let t=0;ta||i{bn(),hn(),Dn(),Mn=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`)),Nn=new TextEncoder}));function Pn(e,t={}){return typeof e==`number`||typeof e==`bigint`?Rn(e,t):typeof e==`boolean`?Fn(e,t):Nt(e)?Ln(e,t):zn(e,t)}function Fn(e,t={}){let n=new Uint8Array(1);return n[0]=Number(e),typeof t.size==`number`?(Cn(n,{size:t.size}),fn(n,{size:t.size})):n}function In(e){if(e>=Vn.zero&&e<=Vn.nine)return e-Vn.zero;if(e>=Vn.A&&e<=Vn.F)return e-(Vn.A-10);if(e>=Vn.a&&e<=Vn.f)return e-(Vn.a-10)}function Ln(e,t={}){let n=e;t.size&&(Cn(n,{size:t.size}),n=fn(n,{dir:`right`,size:t.size}));let r=n.slice(2);r.length%2&&(r=`0${r}`);let i=r.length/2,a=new Uint8Array(i);for(let e=0,t=0;e{O(),Pt(),hn(),Dn(),A(),Bn=new TextEncoder,Vn={zero:48,nine:57,A:65,F:70,a:97,f:102}}));function Un(e,t=!1){return t?{h:Number(e&Kn),l:Number(e>>qn&Kn)}:{h:Number(e>>qn&Kn)|0,l:Number(e&Kn)|0}}function Wn(e,t=!1){let n=e.length,r=new Uint32Array(n),i=new Uint32Array(n);for(let a=0;a>>0)+(r>>>0);return{h:e+n+(i/2**32|0)|0,l:i|0}}var Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr,ir,ar,or,sr,cr,lr,ur=o((()=>{Kn=BigInt(2**32-1),qn=BigInt(32),Jn=(e,t,n)=>e>>>n,Yn=(e,t,n)=>e<<32-n|t>>>n,Xn=(e,t,n)=>e>>>n|t<<32-n,Zn=(e,t,n)=>e<<32-n|t>>>n,Qn=(e,t,n)=>e<<64-n|t>>>n-32,$n=(e,t,n)=>e>>>n-32|t<<64-n,er=(e,t,n)=>e<>>32-n,tr=(e,t,n)=>t<>>32-n,nr=(e,t,n)=>t<>>64-n,rr=(e,t,n)=>e<>>64-n,ir=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0),ar=(e,t,n,r)=>t+n+r+(e/2**32|0)|0,or=(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0),sr=(e,t,n,r,i)=>t+n+r+i+(e/2**32|0)|0,cr=(e,t,n,r,i)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(i>>>0),lr=(e,t,n,r,i,a)=>t+n+r+i+a+(e/2**32|0)|0})),dr,fr=o((()=>{dr=typeof globalThis==`object`&&`crypto`in globalThis?globalThis.crypto:void 0}));function pr(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function mr(e){if(!Number.isSafeInteger(e)||e<0)throw Error(`positive integer expected, got `+e)}function hr(e,...t){if(!pr(e))throw Error(`Uint8Array expected`);if(t.length>0&&!t.includes(e.length))throw Error(`Uint8Array expected of length `+t+`, got length=`+e.length)}function gr(e){if(typeof e!=`function`||typeof e.create!=`function`)throw Error(`Hash should be wrapped by utils.createHasher`);mr(e.outputLen),mr(e.blockLen)}function _r(e,t=!0){if(e.destroyed)throw Error(`Hash instance has been destroyed`);if(t&&e.finished)throw Error(`Hash#digest() has already been called`)}function vr(e,t){hr(e);let n=t.outputLen;if(e.length>>t}function Cr(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function wr(e){for(let t=0;te().update(Er(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function kr(e=32){if(dr&&typeof dr.getRandomValues==`function`)return dr.getRandomValues(new Uint8Array(e));if(dr&&typeof dr.randomBytes==`function`)return Uint8Array.from(dr.randomBytes(e));throw Error(`crypto.getRandomValues must be defined`)}var Ar,jr,Mr,Nr=o((()=>{fr(),Ar=(()=>new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68)(),jr=Ar?e=>e:wr,Mr=class{}}));function Pr(e,t=24){let n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let r=(t+8)%10,i=(t+2)%10,a=n[i],o=n[i+1],s=qr(a,o,1)^n[r],c=Jr(a,o,1)^n[r+1];for(let n=0;n<50;n+=10)e[t+n]^=s,e[t+n+1]^=c}let t=e[2],i=e[3];for(let n=0;n<24;n++){let r=Hr[n],a=qr(t,i,r),o=Jr(t,i,r),s=Vr[n];t=e[s],i=e[s+1],e[s]=a,e[s+1]=o}for(let t=0;t<50;t+=10){for(let r=0;r<10;r++)n[r]=e[t+r];for(let r=0;r<10;r++)e[t+r]^=~n[(r+2)%10]&n[(r+4)%10]}e[0]^=Gr[r],e[1]^=Kr[r]}br(n)}var Fr,Ir,Lr,Rr,zr,Br,Vr,Hr,Ur,Wr,Gr,Kr,qr,Jr,Yr,Xr,Zr,Qr=o((()=>{ur(),Nr(),Fr=BigInt(0),Ir=BigInt(1),Lr=BigInt(2),Rr=BigInt(7),zr=BigInt(256),Br=BigInt(113),Vr=[],Hr=[],Ur=[];for(let e=0,t=Ir,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Vr.push(2*(5*r+n)),Hr.push((e+1)*(e+2)/2%64);let i=Fr;for(let e=0;e<7;e++)t=(t<>Rr)*Br)%zr,t&Lr&&(i^=Ir<<(Ir<n>32?nr(e,t,n):er(e,t,n),Jr=(e,t,n)=>n>32?rr(e,t,n):tr(e,t,n),Yr=class e extends Mr{constructor(e,t,n,r=!1,i=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.rounds=i,mr(n),!(0=n&&this.keccak();let a=Math.min(n-this.posOut,i-r);e.set(t.subarray(this.posOut,this.posOut+a),r),this.posOut+=a,r+=a}return e}xofInto(e){if(!this.enableXOF)throw Error(`XOF is not possible for this instance`);return this.writeInto(e)}xof(e){return mr(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(vr(e,this),this.finished)throw Error(`digest() was already called`);return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,br(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:i,rounds:a,enableXOF:o}=this;return t||=new e(n,r,i,o,a),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=r,t.outputLen=i,t.enableXOF=o,t.destroyed=this.destroyed,t}},Xr=(e,t,n)=>Or(()=>new Yr(t,e,n)),Zr=(()=>Xr(1,136,256/8))()}));function $r(e,t){let n=t||`hex`,r=Zr(Nt(e,{strict:!1})?Pn(e):e);return n===`bytes`?r:On(r)}var ei=o((()=>{Qr(),Pt(),Hn(),A()}));function ti(e){return ni(e)}var ni,ri=o((()=>{Hn(),ei(),ni=e=>$r(Pn(e))}));function ii(e){let t=!0,n=``,r=0,i=``,a=!1;for(let o=0;o{O()})),oi,si=o((()=>{Ot(),ai(),oi=e=>{let t=(()=>typeof e==`string`?e:le(e))();return ii(t)}}));function ci(e){return ti(oi(e))}var li=o((()=>{ri(),si()})),ui,di=o((()=>{li(),ui=ci})),fi,pi=o((()=>{O(),fi=class extends D{constructor({address:e}){super(`Address "${e}" is invalid.`,{metaMessages:[`- Address must be a hex value of 20 bytes (40 hex characters).`,`- Address must match its checksum counterpart.`],name:`InvalidAddressError`})}}})),mi,hi=o((()=>{mi=class extends Map{constructor(e){super(),Object.defineProperty(this,`maxSize`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&t!==void 0&&(this.delete(e),super.set(e,t)),t}set(e,t){if(super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=this.keys().next().value;e&&this.delete(e)}return this}}}));function gi(e,t){if(vi.has(`${e}.${t}`))return vi.get(`${e}.${t}`);let n=t?`${t}${e.toLowerCase()}`:e.substring(2).toLowerCase(),r=$r(zn(n),`bytes`),i=(t?n.substring(`${t}0x`.length):n).split(``);for(let e=0;e<40;e+=2)r[e>>1]>>4>=8&&i[e]&&(i[e]=i[e].toUpperCase()),(r[e>>1]&15)>=8&&i[e+1]&&(i[e+1]=i[e+1].toUpperCase());let a=`0x${i.join(``)}`;return vi.set(`${e}.${t}`,a),a}function _i(e,t){if(!bi(e,{strict:!1}))throw new fi({address:e});return gi(e,t)}var vi,yi=o((()=>{pi(),Hn(),ei(),hi(),Ci(),vi=new mi(8192)}));function bi(e,t){let{strict:n=!0}=t??{},r=`${e}.${n}`;if(Si.has(r))return Si.get(r);let i=(()=>xi.test(e)?e.toLowerCase()===e?!0:n?gi(e)===e:!0:!1)();return Si.set(r,i),i}var xi,Si,Ci=o((()=>{hi(),yi(),xi=/^0x[a-fA-F0-9]{40}$/,Si=new mi(8192)}));function wi(e){return typeof e[0]==`string`?Ei(e):Ti(e)}function Ti(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function Ei(e){return`0x${e.reduce((e,t)=>e+t.replace(`0x`,``),``)}`}var Di=o((()=>{}));function Oi(e,t,n,{strict:r}={}){return Nt(e,{strict:!1})?Mi(e,t,n,{strict:r}):ji(e,t,n,{strict:r})}function ki(e,t){if(typeof t==`number`&&t>0&&t>Ft(e)-1)throw new cn({offset:t,position:`start`,size:Ft(e)})}function Ai(e,t,n){if(typeof t==`number`&&typeof n==`number`&&Ft(e)!==n-t)throw new cn({offset:n,position:`end`,size:Ft(e)})}function ji(e,t,n,{strict:r}={}){ki(e,t);let i=e.slice(t,n);return r&&Ai(i,t,n),i}function Mi(e,t,n,{strict:r}={}){ki(e,t);let i=`0x${e.replace(`0x`,``).slice((t??0)*2,(n??e.length)*2)}`;return r&&Ai(i,t,n),i}var Ni=o((()=>{dn(),Pt(),It()})),Pi,Fi,Ii=o((()=>{Pi=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,Fi=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/}));function Li(e,t){if(e.length!==t.length)throw new qt({expectedLength:e.length,givenLength:t.length});let n=Ri({params:e,values:t}),r=Bi(n);return r.length===0?`0x`:r}function Ri({params:e,values:t}){let n=[];for(let r=0;r0?wi([t,e]):t}}if(i)return{dynamic:!0,encoded:e}}return{dynamic:!1,encoded:wi(a.map(({encoded:e})=>e))}}function Ui(e,{param:t}){let[,n]=t.type.split(`bytes`),r=Ft(e);if(!n){let t=e;return r%32!=0&&(t=pn(t,{dir:`right`,size:Math.ceil((e.length-2)/2/32)*32})),{dynamic:!0,encoded:wi([pn(k(r,{size:32})),t])}}if(r!==Number.parseInt(n,10))throw new Kt({expectedSize:Number.parseInt(n,10),value:e});return{dynamic:!1,encoded:pn(e,{dir:`right`})}}function Wi(e){if(typeof e!=`boolean`)throw new D(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:pn(kn(e))}}function Gi(e,{signed:t,size:n=256}){if(typeof n==`number`){let r=2n**(BigInt(n)-(t?1n:0n))-1n,i=t?-r-1n:0n;if(e>r||ee))}}function Ji(e){let t=e.match(/^(.*)\[(\d+)?\]$/);return t?[t[2]?Number(t[2]):null,t[1]]:void 0}var Yi=o((()=>{sn(),pi(),O(),bn(),Ci(),Di(),hn(),It(),Ni(),A(),Ii()})),Xi,Zi=o((()=>{Ni(),li(),Xi=e=>Oi(ci(e),0,4)}));function Qi(e){let{abi:t,args:n=[],name:r}=e,i=Nt(r,{strict:!1}),a=t.filter(e=>i?e.type===`function`?Xi(e)===r:e.type===`event`?ui(e)===r:!1:`name`in e&&e.name===r);if(a.length===0)return;if(a.length===1)return a[0];let o;for(let e of a)if(`inputs`in e){if(!n||n.length===0){if(!e.inputs||e.inputs.length===0)return e;continue}if(e.inputs&&e.inputs.length!==0&&e.inputs.length===n.length&&n.every((t,n)=>{let r=`inputs`in e&&e.inputs[n];return r?$i(t,r):!1})){if(o&&`inputs`in o&&o.inputs){let t=j(e.inputs,o.inputs,n);if(t)throw new en({abiItem:e,type:t[0]},{abiItem:o,type:t[1]})}o=e}}return o||a[0]}function $i(e,t){let n=typeof e,r=t.type;switch(r){case`address`:return bi(e,{strict:!1});case`bool`:return n===`boolean`;case`function`:return n===`string`;case`string`:return n===`string`;default:return r===`tuple`&&`components`in t?Object.values(t.components).every((t,n)=>$i(Object.values(e)[n],t)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(r)?n===`number`||n===`bigint`:/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(r)?n===`string`||e instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(r)?Array.isArray(e)&&e.every(e=>$i(e,{...t,type:r.replace(/(\[[0-9]{0,}\])$/,``)})):!1}}function j(e,t,n){for(let r in e){let i=e[r],a=t[r];if(i.type===`tuple`&&a.type===`tuple`&&`components`in i&&`components`in a)return j(i.components,a.components,n[r]);let o=[i.type,a.type];if((()=>o.includes(`address`)&&o.includes(`bytes20`)?!0:o.includes(`address`)&&o.includes(`string`)||o.includes(`address`)&&o.includes(`bytes`)?bi(n[r],{strict:!1}):!1)())return o}}var ea=o((()=>{sn(),Pt(),Ci(),di(),Zi()}));function ta(e){return typeof e==`string`?{address:e,type:`json-rpc`}:e}var na=o((()=>{}));function ra(e){let{abi:t,args:n,functionName:r}=e,i=t[0];if(r){let e=Qi({abi:t,args:n,name:r});if(!e)throw new Zt(r,{docsPath:ia});i=e}if(i.type!==`function`)throw new Zt(void 0,{docsPath:ia});return{abi:[i],functionName:Xi(kt(i))}}var ia,aa=o((()=>{sn(),Zi(),Mt(),ea(),ia=`/docs/contract/encodeFunctionData`}));function oa(e){let{args:t}=e,{abi:n,functionName:r}=(()=>e.abi.length===1&&e.functionName?.startsWith(`0x`)?e:ra(e))(),i=n[0],a=r,o=`inputs`in i&&i.inputs?Li(i.inputs,t??[]):void 0;return Ei([a,o??`0x`])}var sa=o((()=>{Di(),Yi(),aa()})),ca,la,ua,da=o((()=>{ca={1:"An `assert` condition failed.",17:`Arithmetic operation resulted in underflow or overflow.`,18:"Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).",33:`Attempted to convert to an invalid type.`,34:`Attempted to access a storage byte array that is incorrectly encoded.`,49:"Performed `.pop()` on an empty array",50:`Array index is out of bounds.`,65:`Allocated too much memory or created an array which is too large.`,81:`Attempted to call a zero-initialized variable of internal function type.`},la={inputs:[{name:`message`,type:`string`}],name:`Error`,type:`error`},ua={inputs:[{name:`reason`,type:`uint256`}],name:`Panic`,type:`error`}})),fa,pa,ma,ha=o((()=>{O(),fa=class extends D{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`,{name:`NegativeOffsetError`})}},pa=class extends D{constructor({length:e,position:t}){super(`Position \`${t}\` is out of bounds (\`0 < position < ${e}\`).`,{name:`PositionOutOfBoundsError`})}},ma=class extends D{constructor({count:e,limit:t}){super(`Recursive read limit of \`${t}\` exceeded (recursive read count: \`${e}\`).`,{name:`RecursiveReadLimitExceededError`})}}}));function ga(e,{recursiveReadLimit:t=8192}={}){let n=Object.create(_a);return n.bytes=e,n.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}var _a,va=o((()=>{ha(),_a={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:1/0,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new ma({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new pa({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new fa({offset:e});let t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new fa({offset:e});let t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){let n=t??this.position;return this.assertPosition(n+e-1),this.bytes.subarray(n,n+e)},inspectUint8(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){let t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){let t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){let t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,e&255),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();let e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();let n=this.inspectBytes(e);return this.position+=t??e,n},readUint8(){this.assertReadLimit(),this._touch();let e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();let e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();let e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();let e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){let t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===1/0)return;let e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}}}));function ya(e,t={}){t.size!==void 0&&Cn(e,{size:t.size});let n=An(e,t);return wn(n,t)}function ba(e,t={}){let n=e;if(t.size!==void 0&&(Cn(n,{size:t.size}),n=xn(n)),n.length>1||n[0]>1)throw new _n(n);return!!n[0]}function xa(e,t={}){t.size!==void 0&&Cn(e,{size:t.size});let n=An(e,t);return En(n,t)}function Sa(e,t={}){let n=e;return t.size!==void 0&&(Cn(n,{size:t.size}),n=xn(n,{dir:`right`})),new TextDecoder().decode(n)}var Ca=o((()=>{bn(),Sn(),Dn(),A()}));function wa(e,t){let n=typeof t==`string`?Ln(t):t,r=ga(n);if(Ft(n)===0&&e.length>0)throw new Wt;if(Ft(t)&&Ft(t)<32)throw new Ut({data:typeof t==`string`?t:An(t),params:e,size:Ft(t)});let i=0,a=[];for(let t=0;t48?ya(i,{signed:n}):xa(i,{signed:n}),32]}function ja(e,t,{staticPosition:n}){let r=t.components.length===0||t.components.some(({name:e})=>!e),i=r?[]:{},a=0;if(Na(t)){let o=xa(e.readBytes(Fa)),s=n+o;for(let n=0;n{sn(),yi(),va(),It(),Ni(),Sn(),Ca(),Hn(),A(),Yi(),Pa=32,Fa=32}));function La(e){let{abi:t,data:n}=e,r=Oi(n,0,4);if(r===`0x`)throw new Wt;let i=[...t||[],la,ua].find(e=>e.type===`error`&&r===Xi(kt(e)));if(!i)throw new Xt(r,{docsPath:`/docs/contract/decodeErrorResult`});return{abiItem:i,args:`inputs`in i&&i.inputs&&i.inputs.length>0?wa(i.inputs,Oi(n,4)):void 0,errorName:i.name}}var Ra=o((()=>{da(),sn(),Ni(),Zi(),Ia(),Mt()})),za,Ba=o((()=>{za=(e,t,n)=>JSON.stringify(e,(e,n)=>{let r=typeof n==`bigint`?n.toString():n;return typeof t==`function`?t(e,r):r},n)}));function Va({abiItem:e,args:t,includeFunctionName:n=!0,includeName:r=!1}){if(`name`in e&&`inputs`in e&&e.inputs)return`${n?e.name:``}(${e.inputs.map((e,n)=>`${r&&e.name?`${e.name}: `:``}${typeof t[n]==`object`?za(t[n]):t[n]}`).join(`, `)})`}var Ha=o((()=>{Ba()})),Ua,Wa,Ga=o((()=>{Ua={gwei:9,wei:18},Wa={ether:-9,wei:9}}));function Ka(e,t){let n=e.toString(),r=n.startsWith(`-`);r&&(n=n.slice(1)),n=n.padStart(t,`0`);let[i,a]=[n.slice(0,n.length-t),n.slice(n.length-t)];return a=a.replace(/(0+)$/,``),`${r?`-`:``}${i||`0`}${a?`.${a}`:``}`}var qa=o((()=>{}));function Ja(e,t=`wei`){return Ka(e,Ua[t])}var Ya=o((()=>{Ga(),qa()}));function Xa(e,t=`wei`){return Ka(e,Wa[t])}var Za=o((()=>{Ga(),qa()}));function Qa(e){return e.reduce((e,{slot:t,value:n})=>`${e} ${t}: ${n}\n`,``)}function $a(e){return e.reduce((e,{address:t,...n})=>{let r=`${e} ${t}:\n`;return n.nonce&&(r+=` nonce: ${n.nonce}\n`),n.balance&&(r+=` balance: ${n.balance}\n`),n.code&&(r+=` code: ${n.code}\n`),n.state&&(r+=` state: +`,r+=Qa(n.state)),n.stateDiff&&(r+=` stateDiff: +`,r+=Qa(n.stateDiff)),r},` State Override: +`).slice(0,-1)}var eo,to,no=o((()=>{O(),eo=class extends D{constructor({address:e}){super(`State for account "${e}" is set multiple times.`,{name:`AccountStateConflictError`})}},to=class extends D{constructor(){super(`state and stateDiff are set on the same account.`,{name:`StateAssignmentConflictError`})}}}));function ro(e){let t=Object.entries(e).map(([e,t])=>t===void 0||t===!1?null:[e,t]).filter(Boolean),n=t.reduce((e,[t])=>Math.max(e,t.length),0);return t.map(([e,t])=>` ${`${e}:`.padEnd(n+1)} ${t}`).join(` +`)}var io,ao,oo,so,co,lo,uo,fo,po,mo=o((()=>{Ya(),Za(),O(),io=class extends D{constructor(){super(["Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.","Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."].join(` +`),{name:`FeeConflictError`})}},ao=class extends D{constructor({v:e}){super(`Invalid \`v\` value "${e}". Expected 27 or 28.`,{name:`InvalidLegacyVError`})}},oo=class extends D{constructor({transaction:e}){super(`Cannot infer a transaction type from provided transaction.`,{metaMessages:[`Provided Transaction:`,`{`,ro(e),`}`,``,`To infer the type, either provide:`,"- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:`InvalidSerializableTransactionError`})}},so=class extends D{constructor({storageKey:e}){super(`Size for storage key "${e}" is invalid. Expected 32 bytes. Got ${Math.floor((e.length-2)/2)} bytes.`,{name:`InvalidStorageKeySizeError`})}},co=class extends D{constructor(e,{account:t,docsPath:n,chain:r,data:i,gas:a,gasPrice:o,maxFeePerGas:s,maxPriorityFeePerGas:c,nonce:l,to:u,value:d}){let f=ro({chain:r&&`${r?.name} (id: ${r?.id})`,from:t?.address,to:u,value:d!==void 0&&`${Ja(d)} ${r?.nativeCurrency?.symbol||`ETH`}`,data:i,gas:a,gasPrice:o!==void 0&&`${Xa(o)} gwei`,maxFeePerGas:s!==void 0&&`${Xa(s)} gwei`,maxPriorityFeePerGas:c!==void 0&&`${Xa(c)} gwei`,nonce:l});super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],`Request Arguments:`,f].filter(Boolean),name:`TransactionExecutionError`}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}},lo=class extends D{constructor({blockHash:e,blockNumber:t,blockTag:n,hash:r,index:i}){let a=`Transaction`;n&&i!==void 0&&(a=`Transaction at block time "${n}" at index "${i}"`),e&&i!==void 0&&(a=`Transaction at block hash "${e}" at index "${i}"`),t&&i!==void 0&&(a=`Transaction at block number "${t}" at index "${i}"`),r&&(a=`Transaction with hash "${r}"`),super(`${a} could not be found.`,{name:`TransactionNotFoundError`})}},uo=class extends D{constructor({hash:e}){super(`Transaction receipt with hash "${e}" could not be found. The Transaction may not be processed on a block yet.`,{name:`TransactionReceiptNotFoundError`})}},fo=class extends D{constructor({receipt:e}){super(`Transaction with hash "${e.transactionHash}" reverted.`,{metaMessages:[`The receipt marked the transaction as "reverted". This could mean that the function on the contract you are trying to call threw an error.`,` `,`You can attempt to extract the revert reason by:`,"- calling the `simulateContract` or `simulateCalls` Action with the `abi` and `functionName` of the contract","- using the `call` Action with raw `data`"],name:`TransactionReceiptRevertedError`}),Object.defineProperty(this,`receipt`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.receipt=e}},po=class extends D{constructor({hash:e}){super(`Timed out while waiting for transaction with hash "${e}" to be confirmed.`,{name:`WaitForTransactionReceiptTimeoutError`})}}})),ho,go,_o=o((()=>{ho=e=>e,go=e=>e})),vo,yo,bo,xo,So,Co,wo=o((()=>{na(),da(),Ra(),Mt(),Ha(),ea(),Ya(),Za(),sn(),O(),no(),mo(),_o(),vo=class extends D{constructor(e,{account:t,docsPath:n,chain:r,data:i,gas:a,gasPrice:o,maxFeePerGas:s,maxPriorityFeePerGas:c,nonce:l,to:u,value:d,stateOverride:f}){let p=t?ta(t):void 0,m=ro({from:p?.address,to:u,value:d!==void 0&&`${Ja(d)} ${r?.nativeCurrency?.symbol||`ETH`}`,data:i,gas:a,gasPrice:o!==void 0&&`${Xa(o)} gwei`,maxFeePerGas:s!==void 0&&`${Xa(s)} gwei`,maxPriorityFeePerGas:c!==void 0&&`${Xa(c)} gwei`,nonce:l});f&&(m+=`\n${$a(f)}`),super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],`Raw Call Arguments:`,m].filter(Boolean),name:`CallExecutionError`}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}},yo=class extends D{constructor(e,{abi:t,args:n,contractAddress:r,docsPath:i,functionName:a,sender:o}){let s=Qi({abi:t,args:n,name:a}),c=s?Va({abiItem:s,args:n,includeFunctionName:!1,includeName:!1}):void 0,l=s?kt(s,{includeName:!0}):void 0,u=ro({address:r&&ho(r),function:l,args:c&&c!==`()`&&`${[...Array(a?.length??0).keys()].map(()=>` `).join(``)}${c}`,sender:o});super(e.shortMessage||`An unknown error occurred while executing the contract function "${a}".`,{cause:e,docsPath:i,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],u&&`Contract Call:`,u].filter(Boolean),name:`ContractFunctionExecutionError`}),Object.defineProperty(this,`abi`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`args`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`contractAddress`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`formattedArgs`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`functionName`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`sender`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abi=t,this.args=n,this.cause=e,this.contractAddress=r,this.functionName=a,this.sender=o}},bo=class extends D{constructor({abi:e,data:t,functionName:n,message:r}){let i,a,o,s;if(t&&t!==`0x`)try{a=La({abi:e,data:t});let{abiItem:n,errorName:r,args:i}=a;if(r===`Error`)s=i[0];else if(r===`Panic`){let[e]=i;s=ca[e]}else{let e=n?kt(n,{includeName:!0}):void 0,t=n&&i?Va({abiItem:n,args:i,includeFunctionName:!1,includeName:!1}):void 0;o=[e?`Error: ${e}`:``,t&&t!==`()`?` ${[...Array(r?.length??0).keys()].map(()=>` `).join(``)}${t}`:``]}}catch(e){i=e}else r&&(s=r);let c;i instanceof Xt&&(c=i.signature,o=[`Unable to decode signature "${c}" as it was not found on the provided ABI.`,`Make sure you are using the correct ABI and that the error exists on it.`,`You can look up the decoded signature here: https://openchain.xyz/signatures?query=${c}.`]),super(s&&s!==`execution reverted`||c?[`The contract function "${n}" reverted with the following ${c?`signature`:`reason`}:`,s||c].join(` +`):`The contract function "${n}" reverted.`,{cause:i,metaMessages:o,name:`ContractFunctionRevertedError`}),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`raw`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`reason`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`signature`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=a,this.raw=t,this.reason=s,this.signature=c}},xo=class extends D{constructor({functionName:e}){super(`The contract function "${e}" returned no data ("0x").`,{metaMessages:[`This could be due to any of the following:`,` - The contract does not have the function "${e}",`,` - The parameters passed to the contract function may be invalid, or`,` - The address is not a contract.`],name:`ContractFunctionZeroDataError`})}},So=class extends D{constructor({factory:e}){super(`Deployment for counterfactual contract call failed${e?` for factory "${e}".`:``}`,{metaMessages:[`Please ensure:`,"- The `factory` is a valid contract deployment factory (ie. Create2 Factory, ERC-4337 Factory, etc).","- The `factoryData` is a valid encoded function call for contract deployment function on the factory."],name:`CounterfactualDeploymentFailedError`})}},Co=class extends D{constructor({data:e,message:t}){super(t||``,{name:`RawContractError`}),Object.defineProperty(this,`code`,{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=e}}})),To,Eo,Do,Oo=o((()=>{Ba(),O(),_o(),To=class extends D{constructor({body:e,cause:t,details:n,headers:r,status:i,url:a}){super(`HTTP request failed.`,{cause:t,details:n,metaMessages:[i&&`Status: ${i}`,`URL: ${go(a)}`,e&&`Request body: ${za(e)}`].filter(Boolean),name:`HttpRequestError`}),Object.defineProperty(this,`body`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`headers`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`status`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`url`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.body=e,this.headers=r,this.status=i,this.url=a}},Eo=class extends D{constructor({body:e,error:t,url:n}){super(`RPC Request failed.`,{cause:t,details:t.message,metaMessages:[`URL: ${go(n)}`,`Request body: ${za(e)}`],name:`RpcRequestError`}),Object.defineProperty(this,`code`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=t.code,this.data=t.data}},Do=class extends D{constructor({body:e,url:t}){super(`The request took too long to respond.`,{details:`The request timed out.`,metaMessages:[`URL: ${go(t)}`,`Request body: ${za(e)}`],name:`TimeoutError`})}}})),ko,Ao,jo,Mo,M,No,Po,Fo,Io,Lo,Ro,zo,Bo,Vo,Ho,Uo,Wo,Go,Ko,qo,Jo,Yo,Xo,Zo,Qo,$o,es,ts,ns,rs=o((()=>{O(),Oo(),ko=-1,Ao=class extends D{constructor(e,{code:t,docsPath:n,metaMessages:r,name:i,shortMessage:a}){super(a,{cause:e,docsPath:n,metaMessages:r||e?.metaMessages,name:i||`RpcError`}),Object.defineProperty(this,`code`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=i||e.name,this.code=e instanceof Eo?e.code:t??ko}},jo=class extends Ao{constructor(e,t){super(e,t),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=t.data}},Mo=class e extends Ao{constructor(t){super(t,{code:e.code,name:`ParseRpcError`,shortMessage:`Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.`})}},Object.defineProperty(Mo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32700}),M=class e extends Ao{constructor(t){super(t,{code:e.code,name:`InvalidRequestRpcError`,shortMessage:`JSON is not a valid request object.`})}},Object.defineProperty(M,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32600}),No=class e extends Ao{constructor(t,{method:n}={}){super(t,{code:e.code,name:`MethodNotFoundRpcError`,shortMessage:`The method${n?` "${n}"`:``} does not exist / is not available.`})}},Object.defineProperty(No,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32601}),Po=class e extends Ao{constructor(t){super(t,{code:e.code,name:`InvalidParamsRpcError`,shortMessage:[`Invalid parameters were provided to the RPC method.`,`Double check you have provided the correct parameters.`].join(` +`)})}},Object.defineProperty(Po,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32602}),Fo=class e extends Ao{constructor(t){super(t,{code:e.code,name:`InternalRpcError`,shortMessage:`An internal error was received.`})}},Object.defineProperty(Fo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32603}),Io=class e extends Ao{constructor(t){super(t,{code:e.code,name:`InvalidInputRpcError`,shortMessage:[`Missing or invalid parameters.`,`Double check you have provided the correct parameters.`].join(` +`)})}},Object.defineProperty(Io,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32e3}),Lo=class e extends Ao{constructor(t){super(t,{code:e.code,name:`ResourceNotFoundRpcError`,shortMessage:`Requested resource not found.`}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`ResourceNotFoundRpcError`})}},Object.defineProperty(Lo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32001}),Ro=class e extends Ao{constructor(t){super(t,{code:e.code,name:`ResourceUnavailableRpcError`,shortMessage:`Requested resource not available.`})}},Object.defineProperty(Ro,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32002}),zo=class e extends Ao{constructor(t){super(t,{code:e.code,name:`TransactionRejectedRpcError`,shortMessage:`Transaction creation failed.`})}},Object.defineProperty(zo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32003}),Bo=class e extends Ao{constructor(t,{method:n}={}){super(t,{code:e.code,name:`MethodNotSupportedRpcError`,shortMessage:`Method${n?` "${n}"`:``} is not supported.`})}},Object.defineProperty(Bo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32004}),Vo=class e extends Ao{constructor(t){super(t,{code:e.code,name:`LimitExceededRpcError`,shortMessage:`Request exceeds defined limit.`})}},Object.defineProperty(Vo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32005}),Ho=class e extends Ao{constructor(t){super(t,{code:e.code,name:`JsonRpcVersionUnsupportedError`,shortMessage:`Version of JSON-RPC protocol is not supported.`})}},Object.defineProperty(Ho,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32006}),Uo=class e extends jo{constructor(t){super(t,{code:e.code,name:`UserRejectedRequestError`,shortMessage:`User rejected the request.`})}},Object.defineProperty(Uo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4001}),Wo=class e extends jo{constructor(t){super(t,{code:e.code,name:`UnauthorizedProviderError`,shortMessage:`The requested method and/or account has not been authorized by the user.`})}},Object.defineProperty(Wo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4100}),Go=class e extends jo{constructor(t,{method:n}={}){super(t,{code:e.code,name:`UnsupportedProviderMethodError`,shortMessage:`The Provider does not support the requested method${n?` " ${n}"`:``}.`})}},Object.defineProperty(Go,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4200}),Ko=class e extends jo{constructor(t){super(t,{code:e.code,name:`ProviderDisconnectedError`,shortMessage:`The Provider is disconnected from all chains.`})}},Object.defineProperty(Ko,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4900}),qo=class e extends jo{constructor(t){super(t,{code:e.code,name:`ChainDisconnectedError`,shortMessage:`The Provider is not connected to the requested chain.`})}},Object.defineProperty(qo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4901}),Jo=class e extends jo{constructor(t){super(t,{code:e.code,name:`SwitchChainError`,shortMessage:`An error occurred when attempting to switch chain.`})}},Object.defineProperty(Jo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4902}),Yo=class e extends jo{constructor(t){super(t,{code:e.code,name:`UnsupportedNonOptionalCapabilityError`,shortMessage:`This Wallet does not support a capability that was not marked as optional.`})}},Object.defineProperty(Yo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5700}),Xo=class e extends jo{constructor(t){super(t,{code:e.code,name:`UnsupportedChainIdError`,shortMessage:`This Wallet does not support the requested chain ID.`})}},Object.defineProperty(Xo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5710}),Zo=class e extends jo{constructor(t){super(t,{code:e.code,name:`DuplicateIdError`,shortMessage:`There is already a bundle submitted with this ID.`})}},Object.defineProperty(Zo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5720}),Qo=class e extends jo{constructor(t){super(t,{code:e.code,name:`UnknownBundleIdError`,shortMessage:`This bundle id is unknown / has not been submitted`})}},Object.defineProperty(Qo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5730}),$o=class e extends jo{constructor(t){super(t,{code:e.code,name:`BundleTooLargeError`,shortMessage:`The call bundle is too large for the Wallet to process.`})}},Object.defineProperty($o,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5740}),es=class e extends jo{constructor(t){super(t,{code:e.code,name:`AtomicReadyWalletRejectedUpgradeError`,shortMessage:`The Wallet can support atomicity after an upgrade, but the user rejected the upgrade.`})}},Object.defineProperty(es,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5750}),ts=class e extends jo{constructor(t){super(t,{code:e.code,name:`AtomicityNotSupportedError`,shortMessage:`The wallet does not support atomic execution but the request requires it.`})}},Object.defineProperty(ts,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5760}),ns=class extends Ao{constructor(e){super(e,{name:`UnknownRpcError`,shortMessage:`An unknown RPC error occurred.`})}}}));sn(),O(),wo(),Oo(),rs();var os=3;function ss(e,{abi:t,address:n,args:r,docsPath:i,functionName:a,sender:o}){let s=e instanceof Co?e:e instanceof D?e.walk(e=>`data`in e)||e.walk():{},{code:c,data:l,details:u,message:d,shortMessage:f}=s,p=(()=>e instanceof Wt?new xo({functionName:a}):[os,Fo.code].includes(c)&&(l||u||d||f)?new bo({abi:t,data:typeof l==`object`?l.data:l,functionName:a,message:s instanceof Eo?u:f??d}):e)();return new yo(p,{abi:t,args:r,contractAddress:n,docsPath:i,functionName:a,sender:o})}yi(),ei();function cs(e){let t=$r(`0x${e.substring(4)}`).substring(26);return gi(`0x${t}`)}var ls,us,ds,fs,ps=o((()=>{ls=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),us=function(e){return`/`+e},ds={},fs=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=us(t,n),t in ds)return;ds[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:ls,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})}}));function ms(e,t,n,r){if(typeof e.setBigUint64==`function`)return e.setBigUint64(t,n,r);let i=BigInt(32),a=BigInt(4294967295),o=Number(n>>i&a),s=Number(n&a),c=r?4:0,l=r?0:4;e.setUint32(t+c,o,r),e.setUint32(t+l,s,r)}function hs(e,t,n){return e&t^~e&n}function gs(e,t,n){return e&t^e&n^t&n}var _s,vs,ys,bs,xs=o((()=>{Nr(),_s=class extends Mr{constructor(e,t,n,r){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.buffer=new Uint8Array(e),this.view=xr(this.buffer)}update(e){_r(this),e=Er(e),hr(e);let{view:t,buffer:n,blockLen:r}=this,i=e.length;for(let a=0;ar-a&&(this.process(n,0),a=0);for(let e=a;el.length)throw Error(`_sha2: outputLen bigger than state`);for(let e=0;e{xs(),ur(),Nr(),Ss=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Cs=new Uint32Array(64),ws=class extends _s{constructor(e=32){super(64,e,8,!1),this.A=vs[0]|0,this.B=vs[1]|0,this.C=vs[2]|0,this.D=vs[3]|0,this.E=vs[4]|0,this.F=vs[5]|0,this.G=vs[6]|0,this.H=vs[7]|0}get(){let{A:e,B:t,C:n,D:r,E:i,F:a,G:o,H:s}=this;return[e,t,n,r,i,a,o,s]}set(e,t,n,r,i,a,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0,this.F=a|0,this.G=o|0,this.H=s|0}process(e,t){for(let n=0;n<16;n++,t+=4)Cs[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){let t=Cs[e-15],n=Cs[e-2],r=Sr(t,7)^Sr(t,18)^t>>>3;Cs[e]=(Sr(n,17)^Sr(n,19)^n>>>10)+Cs[e-7]+r+Cs[e-16]|0}let{A:n,B:r,C:i,D:a,E:o,F:s,G:c,H:l}=this;for(let e=0;e<64;e++){let t=Sr(o,6)^Sr(o,11)^Sr(o,25),u=l+t+hs(o,s,c)+Ss[e]+Cs[e]|0,d=(Sr(n,2)^Sr(n,13)^Sr(n,22))+gs(n,r,i)|0;l=c,c=s,s=o,o=a+u|0,a=i,i=r,r=n,n=u+d|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,a=a+this.D|0,o=o+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,i,a,o,s,c,l)}roundClean(){br(Cs)}destroy(){this.set(0,0,0,0,0,0,0,0),br(this.buffer)}},Ts=(()=>Wn(`0x428a2f98d728ae22.0x7137449123ef65cd.0xb5c0fbcfec4d3b2f.0xe9b5dba58189dbbc.0x3956c25bf348b538.0x59f111f1b605d019.0x923f82a4af194f9b.0xab1c5ed5da6d8118.0xd807aa98a3030242.0x12835b0145706fbe.0x243185be4ee4b28c.0x550c7dc3d5ffb4e2.0x72be5d74f27b896f.0x80deb1fe3b1696b1.0x9bdc06a725c71235.0xc19bf174cf692694.0xe49b69c19ef14ad2.0xefbe4786384f25e3.0x0fc19dc68b8cd5b5.0x240ca1cc77ac9c65.0x2de92c6f592b0275.0x4a7484aa6ea6e483.0x5cb0a9dcbd41fbd4.0x76f988da831153b5.0x983e5152ee66dfab.0xa831c66d2db43210.0xb00327c898fb213f.0xbf597fc7beef0ee4.0xc6e00bf33da88fc2.0xd5a79147930aa725.0x06ca6351e003826f.0x142929670a0e6e70.0x27b70a8546d22ffc.0x2e1b21385c26c926.0x4d2c6dfc5ac42aed.0x53380d139d95b3df.0x650a73548baf63de.0x766a0abb3c77b2a8.0x81c2c92e47edaee6.0x92722c851482353b.0xa2bfe8a14cf10364.0xa81a664bbc423001.0xc24b8b70d0f89791.0xc76c51a30654be30.0xd192e819d6ef5218.0xd69906245565a910.0xf40e35855771202a.0x106aa07032bbd1b8.0x19a4c116b8d2d0c8.0x1e376c085141ab53.0x2748774cdf8eeb99.0x34b0bcb5e19b48a8.0x391c0cb3c5c95a63.0x4ed8aa4ae3418acb.0x5b9cca4f7763e373.0x682e6ff3d6b2b8a3.0x748f82ee5defb2fc.0x78a5636f43172f60.0x84c87814a1f0ab72.0x8cc702081a6439ec.0x90befffa23631e28.0xa4506cebde82bde9.0xbef9a3f7b2c67915.0xc67178f2e372532b.0xca273eceea26619c.0xd186b8c721c0c207.0xeada7dd6cde0eb1e.0xf57d4f7fee6ed178.0x06f067aa72176fba.0x0a637dc5a2c898a6.0x113f9804bef90dae.0x1b710b35131c471b.0x28db77f523047d84.0x32caab7b40c72493.0x3c9ebe0a15c9bebc.0x431d67c49c100d4c.0x4cc5d4becb3e42b6.0x597f299cfc657e2a.0x5fcb6fab3ad6faec.0x6c44198c4a475817`.split(`.`).map(e=>BigInt(e))))(),Es=(()=>Ts[0])(),Ds=(()=>Ts[1])(),Os=new Uint32Array(80),ks=new Uint32Array(80),As=class extends _s{constructor(e=64){super(128,e,16,!1),this.Ah=bs[0]|0,this.Al=bs[1]|0,this.Bh=bs[2]|0,this.Bl=bs[3]|0,this.Ch=bs[4]|0,this.Cl=bs[5]|0,this.Dh=bs[6]|0,this.Dl=bs[7]|0,this.Eh=bs[8]|0,this.El=bs[9]|0,this.Fh=bs[10]|0,this.Fl=bs[11]|0,this.Gh=bs[12]|0,this.Gl=bs[13]|0,this.Hh=bs[14]|0,this.Hl=bs[15]|0}get(){let{Ah:e,Al:t,Bh:n,Bl:r,Ch:i,Cl:a,Dh:o,Dl:s,Eh:c,El:l,Fh:u,Fl:d,Gh:f,Gl:p,Hh:m,Hl:h}=this;return[e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h]}set(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=r|0,this.Ch=i|0,this.Cl=a|0,this.Dh=o|0,this.Dl=s|0,this.Eh=c|0,this.El=l|0,this.Fh=u|0,this.Fl=d|0,this.Gh=f|0,this.Gl=p|0,this.Hh=m|0,this.Hl=h|0}process(e,t){for(let n=0;n<16;n++,t+=4)Os[n]=e.getUint32(t),ks[n]=e.getUint32(t+=4);for(let e=16;e<80;e++){let t=Os[e-15]|0,n=ks[e-15]|0,r=Xn(t,n,1)^Xn(t,n,8)^Jn(t,n,7),i=Zn(t,n,1)^Zn(t,n,8)^Yn(t,n,7),a=Os[e-2]|0,o=ks[e-2]|0,s=Xn(a,o,19)^Qn(a,o,61)^Jn(a,o,6),c=Zn(a,o,19)^$n(a,o,61)^Yn(a,o,6),l=or(i,c,ks[e-7],ks[e-16]);Os[e]=sr(l,r,s,Os[e-7],Os[e-16])|0,ks[e]=l|0}let{Ah:n,Al:r,Bh:i,Bl:a,Ch:o,Cl:s,Dh:c,Dl:l,Eh:u,El:d,Fh:f,Fl:p,Gh:m,Gl:h,Hh:g,Hl:_}=this;for(let e=0;e<80;e++){let t=Xn(u,d,14)^Xn(u,d,18)^Qn(u,d,41),v=Zn(u,d,14)^Zn(u,d,18)^$n(u,d,41),y=u&f^~u&m,b=d&p^~d&h,x=cr(_,v,b,Ds[e],ks[e]),S=lr(x,g,t,y,Es[e],Os[e]),C=x|0,w=Xn(n,r,28)^Qn(n,r,34)^Qn(n,r,39),ee=Zn(n,r,28)^$n(n,r,34)^$n(n,r,39),te=n&i^n&o^i&o,ne=r&a^r&s^a&s;g=m|0,_=h|0,m=f|0,h=p|0,f=u|0,p=d|0,{h:u,l:d}=Gn(c|0,l|0,S|0,C|0),c=o|0,l=s|0,o=i|0,s=a|0,i=n|0,a=r|0;let re=ir(C,ee,ne);n=ar(re,S,w,te),r=re|0}({h:n,l:r}=Gn(this.Ah|0,this.Al|0,n|0,r|0)),{h:i,l:a}=Gn(this.Bh|0,this.Bl|0,i|0,a|0),{h:o,l:s}=Gn(this.Ch|0,this.Cl|0,o|0,s|0),{h:c,l}=Gn(this.Dh|0,this.Dl|0,c|0,l|0),{h:u,l:d}=Gn(this.Eh|0,this.El|0,u|0,d|0),{h:f,l:p}=Gn(this.Fh|0,this.Fl|0,f|0,p|0),{h:m,l:h}=Gn(this.Gh|0,this.Gl|0,m|0,h|0),{h:g,l:_}=Gn(this.Hh|0,this.Hl|0,g|0,_|0),this.set(n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)}roundClean(){br(Os,ks)}destroy(){br(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},js=class extends As{constructor(){super(48),this.Ah=ys[0]|0,this.Al=ys[1]|0,this.Bh=ys[2]|0,this.Bl=ys[3]|0,this.Ch=ys[4]|0,this.Cl=ys[5]|0,this.Dh=ys[6]|0,this.Dl=ys[7]|0,this.Eh=ys[8]|0,this.El=ys[9]|0,this.Fh=ys[10]|0,this.Fl=ys[11]|0,this.Gh=ys[12]|0,this.Gl=ys[13]|0,this.Hh=ys[14]|0,this.Hl=ys[15]|0}},Ms=Or(()=>new ws),Ns=Or(()=>new As),Ps=Or(()=>new js)})),Is,Ls,Rs=o((()=>{Nr(),Is=class extends Mr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,gr(e);let n=Er(t);if(this.iHash=e.create(),typeof this.iHash.update!=`function`)throw Error(`Expected instance of class which extends utils.Hash`);this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let r=this.blockLen,i=new Uint8Array(r);i.set(n.length>r?e.create().update(n).digest():n);for(let e=0;enew Is(e,t).update(n).digest(),Ls.create=(e,t)=>new Is(e,t)}));function zs(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function Bs(e){if(!zs(e))throw Error(`Uint8Array expected`)}function Vs(e,t){if(typeof t!=`boolean`)throw Error(e+` boolean expected, got `+t)}function Hs(e){let t=e.toString(16);return t.length&1?`0`+t:t}function Us(e){if(typeof e!=`string`)throw Error(`hex string expected, got `+typeof e);return e===``?oc:BigInt(`0x`+e)}function Ws(e){if(Bs(e),cc)return e.toHex();let t=``;for(let n=0;n=uc._0&&e<=uc._9)return e-uc._0;if(e>=uc.A&&e<=uc.F)return e-(uc.A-10);if(e>=uc.a&&e<=uc.f)return e-(uc.a-10)}function Ks(e){if(typeof e!=`string`)throw Error(`hex string expected, got `+typeof e);if(cc)return Uint8Array.fromHex(e);let t=e.length,n=t/2;if(t%2)throw Error(`hex string expected, got unpadded hex of length `+t);let r=new Uint8Array(n);for(let t=0,i=0;toc;e>>=sc,t+=1);return t}function rc(e,t,n){if(typeof e!=`number`||e<2)throw Error(`hashLen must be a number`);if(typeof t!=`number`||t<2)throw Error(`qByteLen must be a number`);if(typeof n!=`function`)throw Error(`hmacFn must be a function`);let r=pc(e),i=pc(e),a=0,o=()=>{r.fill(1),i.fill(0),a=0},s=(...e)=>n(i,r,...e),c=(e=pc(0))=>{i=s(mc([0]),e),r=s(),e.length!==0&&(i=s(mc([1]),e),r=s())},l=()=>{if(a++>=1e3)throw Error(`drbg: tried 1000 values`);let e=0,n=[];for(;e{o(),c(e);let n;for(;!(n=t(l()));)c();return o(),n}}function ic(e,t,n={}){let r=(t,n,r)=>{let i=hc[n];if(typeof i!=`function`)throw Error(`invalid validator function`);let a=e[t];if(!(r&&a===void 0)&&!i(a,e))throw Error(`param `+String(t)+` is invalid. Expected `+n+`, got `+a)};for(let[e,n]of Object.entries(t))r(e,n,!1);for(let[e,t]of Object.entries(n))r(e,t,!0);return e}function ac(e){let t=new WeakMap;return(n,...r)=>{let i=t.get(n);if(i!==void 0)return i;let a=e(n,...r);return t.set(n,a),a}}var oc,sc,cc,lc,uc,dc,fc,pc,mc,hc,gc=o((()=>{oc=BigInt(0),sc=BigInt(1),cc=typeof Uint8Array.from([]).toHex==`function`&&typeof Uint8Array.fromHex==`function`,lc=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`)),uc={_0:48,_9:57,A:65,F:70,a:97,f:102},dc=e=>typeof e==`bigint`&&oc<=e,fc=e=>(sc<new Uint8Array(e),mc=e=>Uint8Array.from(e),hc={bigint:e=>typeof e==`bigint`,function:e=>typeof e==`function`,boolean:e=>typeof e==`boolean`,string:e=>typeof e==`string`,stringOrUint8Array:e=>typeof e==`string`||zs(e),isSafeInteger:e=>Number.isSafeInteger(e),array:e=>Array.isArray(e),field:(e,t)=>t.Fp.isValid(e),hash:e=>typeof e==`function`&&Number.isSafeInteger(e.outputLen)}}));function _c(e,t){let n=e%t;return n>=Nc?n:t+n}function vc(e,t,n){let r=e;for(;t-- >Nc;)r*=r,r%=n;return r}function yc(e,t){if(e===Nc)throw Error(`invert: expected non-zero number`);if(t<=Nc)throw Error(`invert: expected positive modulus, got `+t);let n=_c(e,t),r=t,i=Nc,a=Pc,o=Pc,s=Nc;for(;n!==Nc;){let e=r/n,t=r%n,c=i-o*e,l=a-s*e;r=n,n=t,i=o,a=s,o=c,s=l}if(r!==Pc)throw Error(`invert: does not exist`);return _c(i,t)}function bc(e,t){let n=(e.ORDER+Pc)/Lc,r=e.pow(t,n);if(!e.eql(e.sqr(r),t))throw Error(`Cannot find square root`);return r}function xc(e,t){let n=(e.ORDER-Rc)/zc,r=e.mul(t,Fc),i=e.pow(r,n),a=e.mul(t,i),o=e.mul(e.mul(a,Fc),i),s=e.mul(a,e.sub(o,e.ONE));if(!e.eql(e.sqr(s),t))throw Error(`Cannot find square root`);return s}function Sc(e){if(e1e3)throw Error(`Cannot find square root: probably non-prime P`);if(n===1)return bc;let a=i.pow(r,t),o=(t+Pc)/Fc;return function(e,r){if(e.is0(r))return r;if(Dc(e,r)!==1)throw Error(`Cannot find square root`);let i=n,s=e.mul(e.ONE,a),c=e.pow(r,t),l=e.pow(r,o);for(;!e.eql(c,e.ONE);){if(e.is0(c))return e.ZERO;let t=1,n=e.sqr(c);for(;!e.eql(n,e.ONE);)if(t++,n=e.sqr(n),t===i)throw Error(`Cannot find square root`);let r=Pc<(e[t]=`function`,e),{ORDER:`bigint`,MASK:`bigint`,BYTES:`isSafeInteger`,BITS:`isSafeInteger`});return ic(e,t)}function Tc(e,t,n){if(nNc;)n&Pc&&(r=e.mul(r,i)),i=e.sqr(i),n>>=Pc;return r}function Ec(e,t,n=!1){let r=Array(t.length).fill(n?e.ZERO:void 0),i=t.reduce((t,n,i)=>e.is0(n)?t:(r[i]=t,e.mul(t,n)),e.ONE),a=e.inv(i);return t.reduceRight((t,n,i)=>e.is0(n)?t:(r[i]=e.mul(t,r[i]),e.mul(t,n)),a),r}function Dc(e,t){let n=(e.ORDER-Pc)/Fc,r=e.pow(t,n),i=e.eql(r,e.ONE),a=e.eql(r,e.ZERO),o=e.eql(r,e.neg(e.ONE));if(!i&&!a&&!o)throw Error(`invalid Legendre symbol result`);return i?1:a?0:-1}function Oc(e,t){t!==void 0&&mr(t);let n=t===void 0?e.toString(2).length:t,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function kc(e,t,n=!1,r={}){if(e<=Nc)throw Error(`invalid field: expected ORDER > 0, got `+e);let{nBitLength:i,nByteLength:a}=Oc(e,t);if(a>2048)throw Error(`invalid field: expected ORDER of <= 2048 bytes`);let o,s=Object.freeze({ORDER:e,isLE:n,BITS:i,BYTES:a,MASK:fc(i),ZERO:Nc,ONE:Pc,create:t=>_c(t,e),isValid:t=>{if(typeof t!=`bigint`)throw Error(`invalid field element: expected bigint, got `+typeof t);return Nc<=t&&te===Nc,isOdd:e=>(e&Pc)===Pc,neg:t=>_c(-t,e),eql:(e,t)=>e===t,sqr:t=>_c(t*t,e),add:(t,n)=>_c(t+n,e),sub:(t,n)=>_c(t-n,e),mul:(t,n)=>_c(t*n,e),pow:(e,t)=>Tc(s,e,t),div:(t,n)=>_c(t*yc(n,e),e),sqrN:e=>e*e,addN:(e,t)=>e+t,subN:(e,t)=>e-t,mulN:(e,t)=>e*t,inv:t=>yc(t,e),sqrt:r.sqrt||(t=>(o||=Cc(e),o(s,t))),toBytes:e=>n?Xs(e,a):Ys(e,a),fromBytes:e=>{if(e.length!==a)throw Error(`Field.fromBytes: expected `+a+` bytes, got `+e.length);return n?Js(e):qs(e)},invertBatch:e=>Ec(s,e),cmov:(e,t,n)=>n?t:e});return Object.freeze(s)}function Ac(e){if(typeof e!=`bigint`)throw Error(`field order must be bigint`);let t=e.toString(2).length;return Math.ceil(t/8)}function jc(e){let t=Ac(e);return t+Math.ceil(t/2)}function Mc(e,t,n=!1){let r=e.length,i=Ac(t),a=jc(t);if(r<16||r1024)throw Error(`expected `+a+`-1024 bytes of input, got `+r);let o=n?Js(e):qs(e),s=_c(o,t-Pc)+Pc;return n?Xs(s,i):Ys(s,i)}var Nc,Pc,Fc,Ic,Lc,Rc,zc,Bc,Vc=o((()=>{Nr(),gc(),Nc=BigInt(0),Pc=BigInt(1),Fc=BigInt(2),Ic=BigInt(3),Lc=BigInt(4),Rc=BigInt(5),zc=BigInt(8),Bc=[`create`,`isValid`,`is0`,`neg`,`inv`,`sqrt`,`sqr`,`eql`,`add`,`sub`,`mul`,`pow`,`div`,`addN`,`subN`,`mulN`,`sqrN`]}));function Hc(e,t){let n=t.negate();return e?n:t}function Uc(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw Error(`invalid window size, expected [1..`+t+`], got W=`+e)}function Wc(e,t){Uc(e,t);let n=Math.ceil(t/e)+1,r=2**(e-1),i=2**e,a=fc(e),o=BigInt(e);return{windows:n,windowSize:r,mask:a,maxNumber:i,shiftBy:o}}function Gc(e,t,n){let{windowSize:r,mask:i,maxNumber:a,shiftBy:o}=n,s=Number(e&i),c=e>>o;s>r&&(s-=a,c+=$c);let l=t*r,u=l+Math.abs(s)-1,d=s===0,f=s<0,p=t%2!=0;return{nextN:c,offset:u,isZero:d,isNeg:f,isNegF:p,offsetF:l}}function Kc(e,t){if(!Array.isArray(e))throw Error(`array expected`);e.forEach((e,n)=>{if(!(e instanceof t))throw Error(`invalid point at index `+n)})}function qc(e,t){if(!Array.isArray(e))throw Error(`array of scalars expected`);e.forEach((e,n)=>{if(!t.isValid(e))throw Error(`invalid scalar at index `+n)})}function Jc(e){return tl.get(e)||1}function Yc(e,t){return{constTimeNegate:Hc,hasPrecomputes(e){return Jc(e)!==1},unsafeLadder(t,n,r=e.ZERO){let i=t;for(;n>Qc;)n&$c&&(r=r.add(i)),i=i.double(),n>>=$c;return r},precomputeWindow(e,n){let{windows:r,windowSize:i}=Wc(n,t),a=[],o=e,s=o;for(let e=0;e12?c=s-3:s>4?c=s-2:s>0&&(c=2);let l=fc(c),u=Array(Number(l)+1).fill(o),d=Math.floor((t.BITS-1)/c)*c,f=o;for(let e=d;e>=0;e-=c){u.fill(o);for(let t=0;t>BigInt(e)&l);u[a]=u[a].add(n[t])}let t=o;for(let e=u.length-1,n=o;e>0;e--)n=n.add(u[e]),t=t.add(n);if(f=f.add(t),e!==0)for(let e=0;e{Vc(),gc(),Qc=BigInt(0),$c=BigInt(1),el=new WeakMap,tl=new WeakMap}));function rl(e){e.lowS!==void 0&&Vs(`lowS`,e.lowS),e.prehash!==void 0&&Vs(`prehash`,e.prehash)}function il(e){let t=Zc(e);ic(t,{a:`field`,b:`field`},{allowInfinityPoint:`boolean`,allowedPrivateKeyLengths:`array`,clearCofactor:`function`,fromBytes:`function`,isTorsionFree:`function`,toBytes:`function`,wrapPrivateKey:`boolean`});let{endo:n,Fp:r,a:i}=t;if(n){if(!r.eql(i,r.ZERO))throw Error(`invalid endo: CURVE.a must be 0`);if(typeof n!=`object`||typeof n.beta!=`bigint`||typeof n.splitScalar!=`function`)throw Error(`invalid endo: expected "beta": bigint and "splitScalar": function`)}return Object.freeze({...t})}function al(e,t){return Ws(Ys(e,t))}function ol(e){let t=il(e),{Fp:n}=t,r=kc(t.n,t.nBitLength),i=t.toBytes||((e,t,r)=>{let i=t.toAffine();return Qs(Uint8Array.from([4]),n.toBytes(i.x),n.toBytes(i.y))}),a=t.fromBytes||(e=>{let t=e.subarray(1),r=n.fromBytes(t.subarray(0,n.BYTES)),i=n.fromBytes(t.subarray(n.BYTES,2*n.BYTES));return{x:r,y:i}});function o(e){let{a:r,b:i}=t,a=n.sqr(e),o=n.mul(a,e);return n.add(n.add(o,n.mul(e,r)),i)}function s(e,t){let r=n.sqr(t),i=o(e);return n.eql(r,i)}if(!s(t.Gx,t.Gy))throw Error(`bad curve params: generator point`);let c=n.mul(n.pow(t.a,gl),_l),l=n.mul(n.sqr(t.b),BigInt(27));if(n.is0(n.add(c,l)))throw Error(`bad curve params: a or b`);function u(e){return ec(e,ml,t.n)}function d(e){let{allowedPrivateKeyLengths:n,nByteLength:r,wrapPrivateKey:i,n:a}=t;if(n&&typeof e!=`bigint`){if(zs(e)&&(e=Ws(e)),typeof e!=`string`||!n.includes(e.length))throw Error(`invalid private key`);e=e.padStart(r*2,`0`)}let o;try{o=typeof e==`bigint`?e:qs(Zs(`private key`,e,r))}catch{throw Error(`invalid private key, expected hex or `+r+` bytes, got `+typeof e)}return i&&(o=_c(o,a)),tc(`private key`,o,ml,a),o}function f(e){if(!(e instanceof h))throw Error(`ProjectivePoint expected`)}let p=ac((e,t)=>{let{px:r,py:i,pz:a}=e;if(n.eql(a,n.ONE))return{x:r,y:i};let o=e.is0();t??=o?n.ONE:n.inv(a);let s=n.mul(r,t),c=n.mul(i,t),l=n.mul(a,t);if(o)return{x:n.ZERO,y:n.ZERO};if(!n.eql(l,n.ONE))throw Error(`invZ was invalid`);return{x:s,y:c}}),m=ac(e=>{if(e.is0()){if(t.allowInfinityPoint&&!n.is0(e.py))return;throw Error(`bad point: ZERO`)}let{x:r,y:i}=e.toAffine();if(!n.isValid(r)||!n.isValid(i))throw Error(`bad point: x or y not FE`);if(!s(r,i))throw Error(`bad point: equation left != right`);if(!e.isTorsionFree())throw Error(`bad point: not in prime-order subgroup`);return!0});class h{constructor(e,t,r){if(e==null||!n.isValid(e))throw Error(`x required`);if(t==null||!n.isValid(t)||n.is0(t))throw Error(`y required`);if(r==null||!n.isValid(r))throw Error(`z required`);this.px=e,this.py=t,this.pz=r,Object.freeze(this)}static fromAffine(e){let{x:t,y:r}=e||{};if(!e||!n.isValid(t)||!n.isValid(r))throw Error(`invalid affine point`);if(e instanceof h)throw Error(`projective point not allowed`);let i=e=>n.eql(e,n.ZERO);return i(t)&&i(r)?h.ZERO:new h(t,r,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(e){let t=Ec(n,e.map(e=>e.pz));return e.map((e,n)=>e.toAffine(t[n])).map(h.fromAffine)}static fromHex(e){let t=h.fromAffine(a(Zs(`pointHex`,e)));return t.assertValidity(),t}static fromPrivateKey(e){return h.BASE.multiply(d(e))}static msm(e,t){return Xc(h,r,e,t)}_setWindowSize(e){v.setWindowSize(this,e)}assertValidity(){m(this)}hasEvenY(){let{y:e}=this.toAffine();if(n.isOdd)return!n.isOdd(e);throw Error(`Field doesn't support isOdd`)}equals(e){f(e);let{px:t,py:r,pz:i}=this,{px:a,py:o,pz:s}=e,c=n.eql(n.mul(t,s),n.mul(a,i)),l=n.eql(n.mul(r,s),n.mul(o,i));return c&&l}negate(){return new h(this.px,n.neg(this.py),this.pz)}double(){let{a:e,b:r}=t,i=n.mul(r,gl),{px:a,py:o,pz:s}=this,c=n.ZERO,l=n.ZERO,u=n.ZERO,d=n.mul(a,a),f=n.mul(o,o),p=n.mul(s,s),m=n.mul(a,o);return m=n.add(m,m),u=n.mul(a,s),u=n.add(u,u),c=n.mul(e,u),l=n.mul(i,p),l=n.add(c,l),c=n.sub(f,l),l=n.add(f,l),l=n.mul(c,l),c=n.mul(m,c),u=n.mul(i,u),p=n.mul(e,p),m=n.sub(d,p),m=n.mul(e,m),m=n.add(m,u),u=n.add(d,d),d=n.add(u,d),d=n.add(d,p),d=n.mul(d,m),l=n.add(l,d),p=n.mul(o,s),p=n.add(p,p),d=n.mul(p,m),c=n.sub(c,d),u=n.mul(p,f),u=n.add(u,u),u=n.add(u,u),new h(c,l,u)}add(e){f(e);let{px:r,py:i,pz:a}=this,{px:o,py:s,pz:c}=e,l=n.ZERO,u=n.ZERO,d=n.ZERO,p=t.a,m=n.mul(t.b,gl),g=n.mul(r,o),_=n.mul(i,s),v=n.mul(a,c),y=n.add(r,i),b=n.add(o,s);y=n.mul(y,b),b=n.add(g,_),y=n.sub(y,b),b=n.add(r,a);let x=n.add(o,c);return b=n.mul(b,x),x=n.add(g,v),b=n.sub(b,x),x=n.add(i,a),l=n.add(s,c),x=n.mul(x,l),l=n.add(_,v),x=n.sub(x,l),d=n.mul(p,b),l=n.mul(m,v),d=n.add(l,d),l=n.sub(_,d),d=n.add(_,d),u=n.mul(l,d),_=n.add(g,g),_=n.add(_,g),v=n.mul(p,v),b=n.mul(m,b),_=n.add(_,v),v=n.sub(g,v),v=n.mul(p,v),b=n.add(b,v),g=n.mul(_,b),u=n.add(u,g),g=n.mul(x,b),l=n.mul(y,l),l=n.sub(l,g),g=n.mul(y,_),d=n.mul(x,d),d=n.add(d,g),new h(l,u,d)}subtract(e){return this.add(e.negate())}is0(){return this.equals(h.ZERO)}wNAF(e){return v.wNAFCached(this,e,h.normalizeZ)}multiplyUnsafe(e){let{endo:r,n:i}=t;tc(`scalar`,e,pl,i);let a=h.ZERO;if(e===pl)return a;if(this.is0()||e===ml)return this;if(!r||v.hasPrecomputes(this))return v.wNAFCachedUnsafe(this,e,h.normalizeZ);let{k1neg:o,k1:s,k2neg:c,k2:l}=r.splitScalar(e),u=a,d=a,f=this;for(;s>pl||l>pl;)s&ml&&(u=u.add(f)),l&ml&&(d=d.add(f)),f=f.double(),s>>=ml,l>>=ml;return o&&(u=u.negate()),c&&(d=d.negate()),d=new h(n.mul(d.px,r.beta),d.py,d.pz),u.add(d)}multiply(e){let{endo:r,n:i}=t;tc(`scalar`,e,ml,i);let a,o;if(r){let{k1neg:t,k1:i,k2neg:s,k2:c}=r.splitScalar(e),{p:l,f:u}=this.wNAF(i),{p:d,f}=this.wNAF(c);l=v.constTimeNegate(t,l),d=v.constTimeNegate(s,d),d=new h(n.mul(d.px,r.beta),d.py,d.pz),a=l.add(d),o=u.add(f)}else{let{p:t,f:n}=this.wNAF(e);a=t,o=n}return h.normalizeZ([a,o])[0]}multiplyAndAddUnsafe(e,t,n){let r=h.BASE,i=(e,t)=>t===pl||t===ml||!e.equals(r)?e.multiplyUnsafe(t):e.multiply(t),a=i(this,t).add(i(e,n));return a.is0()?void 0:a}toAffine(e){return p(this,e)}isTorsionFree(){let{h:e,isTorsionFree:n}=t;if(e===ml)return!0;if(n)return n(h,this);throw Error(`isTorsionFree() has not been declared for the elliptic curve`)}clearCofactor(){let{h:e,clearCofactor:n}=t;return e===ml?this:n?n(h,this):this.multiplyUnsafe(t.h)}toRawBytes(e=!0){return Vs(`isCompressed`,e),this.assertValidity(),i(h,this,e)}toHex(e=!0){return Vs(`isCompressed`,e),Ws(this.toRawBytes(e))}}h.BASE=new h(t.Gx,t.Gy,n.ONE),h.ZERO=new h(n.ZERO,n.ONE,n.ZERO);let{endo:g,nBitLength:_}=t,v=Yc(h,g?Math.ceil(_/2):_);return{CURVE:t,ProjectivePoint:h,normPrivateKeyToScalar:d,weierstrassEquation:o,isWithinCurveOrder:u}}function sl(e){let t=Zc(e);return ic(t,{hash:`hash`,hmac:`function`,randomBytes:`function`},{bits2int:`function`,bits2int_modN:`function`,lowS:`boolean`}),Object.freeze({lowS:!0,...t})}function cl(e){let t=sl(e),{Fp:n,n:r,nByteLength:i,nBitLength:a}=t,o=n.BYTES+1,s=2*n.BYTES+1;function c(e){return _c(e,r)}function l(e){return yc(e,r)}let{ProjectivePoint:u,normPrivateKeyToScalar:d,weierstrassEquation:f,isWithinCurveOrder:p}=ol({...t,toBytes(e,t,r){let i=t.toAffine(),a=n.toBytes(i.x),o=Qs;return Vs(`isCompressed`,r),r?o(Uint8Array.from([t.hasEvenY()?2:3]),a):o(Uint8Array.from([4]),a,n.toBytes(i.y))},fromBytes(e){let t=e.length,r=e[0],i=e.subarray(1);if(t===o&&(r===2||r===3)){let e=qs(i);if(!ec(e,ml,n.ORDER))throw Error(`Point is not on curve`);let t=f(e),a;try{a=n.sqrt(t)}catch(e){let t=e instanceof Error?`: `+e.message:``;throw Error(`Point is not on curve`+t)}let o=(a&ml)===ml;return(r&1)==1!==o&&(a=n.neg(a)),{x:e,y:a}}else if(t===s&&r===4){let e=n.fromBytes(i.subarray(0,n.BYTES)),t=n.fromBytes(i.subarray(n.BYTES,2*n.BYTES));return{x:e,y:t}}else{let e=o,n=s;throw Error(`invalid Point, expected length of `+e+`, or uncompressed `+n+`, got `+t)}}});function m(e){let t=r>>ml;return e>t}function h(e){return m(e)?c(-e):e}let g=(e,t,n)=>qs(e.slice(t,n));class _{constructor(e,t,n){tc(`r`,e,ml,r),tc(`s`,t,ml,r),this.r=e,this.s=t,n!=null&&(this.recovery=n),Object.freeze(this)}static fromCompact(e){let t=i;return e=Zs(`compactSignature`,e,t*2),new _(g(e,0,t),g(e,t,2*t))}static fromDER(e){let{r:t,s:n}=fl.toSig(Zs(`DER`,e));return new _(t,n)}assertValidity(){}addRecoveryBit(e){return new _(this.r,this.s,e)}recoverPublicKey(e){let{r,s:i,recovery:a}=this,o=C(Zs(`msgHash`,e));if(a==null||![0,1,2,3].includes(a))throw Error(`recovery id invalid`);let s=a===2||a===3?r+t.n:r;if(s>=n.ORDER)throw Error(`recovery id 2 or 3 invalid`);let d=a&1?`03`:`02`,f=u.fromHex(d+al(s,n.BYTES)),p=l(s),m=c(-o*p),h=c(i*p),g=u.BASE.multiplyAndAddUnsafe(f,m,h);if(!g)throw Error(`point at infinify`);return g.assertValidity(),g}hasHighS(){return m(this.s)}normalizeS(){return this.hasHighS()?new _(this.r,c(-this.s),this.recovery):this}toDERRawBytes(){return Ks(this.toDERHex())}toDERHex(){return fl.hexFromSig(this)}toCompactRawBytes(){return Ks(this.toCompactHex())}toCompactHex(){let e=i;return al(this.r,e)+al(this.s,e)}}let v={isValidPrivateKey(e){try{return d(e),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{let e=jc(t.n);return Mc(t.randomBytes(e),t.n)},precompute(e=8,t=u.BASE){return t._setWindowSize(e),t.multiply(BigInt(3)),t}};function y(e,t=!0){return u.fromPrivateKey(e).toRawBytes(t)}function b(e){if(typeof e==`bigint`)return!1;if(e instanceof u)return!0;let r=Zs(`key`,e).length,a=n.BYTES,o=a+1,s=2*a+1;if(!(t.allowedPrivateKeyLengths||i===o))return r===o||r===s}function x(e,t,n=!0){if(b(e)===!0)throw Error(`first arg must be private key`);if(b(t)===!1)throw Error(`second arg must be public key`);return u.fromHex(t).multiply(d(e)).toRawBytes(n)}let S=t.bits2int||function(e){if(e.length>8192)throw Error(`input is too large`);let t=qs(e),n=e.length*8-a;return n>0?t>>BigInt(n):t},C=t.bits2int_modN||function(e){return c(S(e))},w=fc(a);function ee(e){return tc(`num < 2^`+a,e,pl,w),Ys(e,i)}function te(e,r,i=ne){if([`recovered`,`canonical`].some(e=>e in i))throw Error(`sign() legacy options not supported`);let{hash:a,randomBytes:o}=t,{lowS:s,prehash:f,extraEntropy:g}=i;s??=!0,e=Zs(`msgHash`,e),rl(i),f&&(e=Zs(`prehashed msgHash`,a(e)));let v=C(e),y=d(r),b=[ee(y),ee(v)];if(g!=null&&g!==!1){let e=g===!0?o(n.BYTES):g;b.push(Zs(`extraEntropy`,e))}let x=Qs(...b),w=v;function te(e){let t=S(e);if(!p(t))return;let n=l(t),r=u.BASE.multiply(t).toAffine(),i=c(r.x);if(i===pl)return;let a=c(n*c(w+i*y));if(a===pl)return;let o=(r.x===i?0:2)|Number(r.y&ml),d=a;return s&&m(a)&&(d=h(a),o^=1),new _(i,d,o)}return{seed:x,k2sig:te}}let ne={lowS:t.lowS,prehash:!1},re={lowS:t.lowS,prehash:!1};function ie(e,n,r=ne){let{seed:i,k2sig:a}=te(e,n,r),o=t;return rc(o.hash.outputLen,o.nByteLength,o.hmac)(i,a)}u.BASE._setWindowSize(8);function ae(e,n,r,i=re){let a=e;n=Zs(`msgHash`,n),r=Zs(`publicKey`,r);let{lowS:o,prehash:s,format:d}=i;if(rl(i),`strict`in i)throw Error(`options.strict was renamed to lowS`);if(d!==void 0&&d!==`compact`&&d!==`der`)throw Error(`format must be compact or der`);let f=typeof a==`string`||zs(a),p=!f&&!d&&typeof a==`object`&&!!a&&typeof a.r==`bigint`&&typeof a.s==`bigint`;if(!f&&!p)throw Error(`invalid signature, expected Uint8Array, hex string or Signature instance`);let m,h;try{if(p&&(m=new _(a.r,a.s)),f){try{d!==`compact`&&(m=_.fromDER(a))}catch(e){if(!(e instanceof fl.Err))throw e}!m&&d!==`der`&&(m=_.fromCompact(a))}h=u.fromHex(r)}catch{return!1}if(!m||o&&m.hasHighS())return!1;s&&(n=t.hash(n));let{r:g,s:v}=m,y=C(n),b=l(v),x=c(y*b),S=c(g*b),w=u.BASE.multiplyAndAddUnsafe(h,x,S)?.toAffine();return w?c(w.x)===g:!1}return{CURVE:t,getPublicKey:y,getSharedSecret:x,sign:ie,verify:ae,ProjectivePoint:u,Signature:_,utils:v}}function ll(e,t){let n=e.ORDER,r=pl;for(let e=n-ml;e%hl===pl;e/=hl)r+=ml;let i=r,a=hl<{let r=d,a=e.pow(n,l),o=e.sqr(a);o=e.mul(o,n);let s=e.mul(t,o);s=e.pow(s,c),s=e.mul(s,a),a=e.mul(s,n),o=e.mul(s,t);let p=e.mul(o,a);s=e.pow(p,u);let m=e.eql(s,e.ONE);a=e.mul(o,f),s=e.mul(p,r),o=e.cmov(a,o,m),p=e.cmov(s,p,m);for(let t=i;t>ml;t--){let n=t-hl;n=hl<{let a=e.sqr(i),o=e.mul(t,i);a=e.mul(a,o);let s=e.pow(a,n);s=e.mul(s,o);let c=e.mul(s,r),l=e.mul(e.sqr(s),i),u=e.eql(l,t),d=e.cmov(c,s,u);return{isValid:u,value:d}}}return p}function ul(e,t){if(wc(e),!e.isValid(t.A)||!e.isValid(t.B)||!e.isValid(t.Z))throw Error(`mapToCurveSimpleSWU: invalid opts`);let n=ll(e,t.Z);if(!e.isOdd)throw Error(`Fp.isOdd is not implemented!`);return r=>{let i,a,o,s,c,l,u,d;i=e.sqr(r),i=e.mul(i,t.Z),a=e.sqr(i),a=e.add(a,i),o=e.add(a,e.ONE),o=e.mul(o,t.B),s=e.cmov(t.Z,e.neg(a),!e.eql(a,e.ZERO)),s=e.mul(s,t.A),a=e.sqr(o),l=e.sqr(s),c=e.mul(l,t.A),a=e.add(a,c),a=e.mul(a,o),l=e.mul(l,s),c=e.mul(l,t.B),a=e.add(a,c),u=e.mul(i,o);let{isValid:f,value:p}=n(a,l);d=e.mul(i,r),d=e.mul(d,p),u=e.cmov(u,o,f),d=e.cmov(d,p,f);let m=e.isOdd(r)===e.isOdd(d);d=e.cmov(e.neg(d),d,m);let h=Ec(e,[s],!0)[0];return u=e.mul(u,h),{x:u,y:d}}}var dl,fl,pl,ml,hl,gl,_l,vl=o((()=>{nl(),Vc(),gc(),dl=class extends Error{constructor(e=``){super(e)}},fl={Err:dl,_tlv:{encode:(e,t)=>{let{Err:n}=fl;if(e<0||e>256)throw new n(`tlv.encode: wrong tag`);if(t.length&1)throw new n(`tlv.encode: unpadded data`);let r=t.length/2,i=Hs(r);if(i.length/2&128)throw new n(`tlv.encode: long form length too big`);let a=r>127?Hs(i.length/2|128):``;return Hs(e)+a+i+t},decode(e,t){let{Err:n}=fl,r=0;if(e<0||e>256)throw new n(`tlv.encode: wrong tag`);if(t.length<2||t[r++]!==e)throw new n(`tlv.decode: wrong tlv`);let i=t[r++],a=!!(i&128),o=0;if(!a)o=i;else{let e=i&127;if(!e)throw new n(`tlv.decode(long): indefinite length not supported`);if(e>4)throw new n(`tlv.decode(long): byte length is too big`);let a=t.subarray(r,r+e);if(a.length!==e)throw new n(`tlv.decode: length bytes not complete`);if(a[0]===0)throw new n(`tlv.decode(long): zero leftmost byte`);for(let e of a)o=o<<8|e;if(r+=e,o<128)throw new n(`tlv.decode(long): not minimal encoding`)}let s=t.subarray(r,r+o);if(s.length!==o)throw new n(`tlv.decode: wrong value length`);return{v:s,l:t.subarray(r+o)}}},_int:{encode(e){let{Err:t}=fl;if(eLs(e,t,Dr(...n)),randomBytes:kr}}function bl(e,t){let n=t=>cl({...e,...yl(t)});return{...n(t),create:n}}var xl=o((()=>{Rs(),Nr(),vl()}));function Sl(e,t){if(wl(e),wl(t),e<0||e>=1<<8*t)throw Error(`invalid I2OSP input: `+e);let n=Array.from({length:t}).fill(0);for(let r=t-1;r>=0;r--)n[r]=e&255,e>>>=8;return new Uint8Array(n)}function Cl(e,t){let n=new Uint8Array(e.length);for(let r=0;r255&&(t=r(Qs($s(`H2C-OVERSIZE-DST-`),t)));let{outputLen:i,blockLen:a}=r,o=Math.ceil(n/i);if(n>65535||o>255)throw Error(`expand_message_xmd: invalid lenInBytes`);let s=Qs(t,Sl(t.length,1)),c=Sl(0,a),l=Sl(n,2),u=Array(o),d=r(Qs(c,e,l,Sl(0,1),s));u[0]=r(Qs(d,Sl(1,1),s));for(let e=1;e<=o;e++){let t=[Cl(d,u[e-1]),Sl(e+1,1),s];u[e]=r(Qs(...t))}return Qs(...u).slice(0,n)}function El(e,t,n,r,i){if(Bs(e),Bs(t),wl(n),t.length>255){let e=Math.ceil(2*r/8);t=i.create({dkLen:e}).update($s(`H2C-OVERSIZE-DST-`)).update(t).digest()}if(n>65535||t.length>255)throw Error(`expand_message_xof: invalid lenInBytes`);return i.create({dkLen:n}).update(e).update(Sl(n,2)).update(t).update(Sl(t.length,1)).digest()}function Dl(e,t,n){ic(n,{DST:`stringOrUint8Array`,p:`bigint`,m:`isSafeInteger`,k:`isSafeInteger`,hash:`hash`});let{p:r,k:i,m:a,hash:o,expand:s,DST:c}=n;Bs(e),wl(t);let l=typeof c==`string`?$s(c):c,u=r.toString(2).length,d=Math.ceil((u+i)/8),f=t*a*d,p;if(s===`xmd`)p=Tl(e,l,f,o);else if(s===`xof`)p=El(e,l,f,i,o);else if(s===`_internal_pass`)p=e;else throw Error(`expand must be "xmd" or "xof"`);let m=Array(t);for(let e=0;eArray.from(e).reverse());return(t,r)=>{let[i,a,o,s]=n.map(n=>n.reduce((n,r)=>e.add(e.mul(n,t),r))),[c,l]=Ec(e,[a,s],!0);return t=e.mul(i,c),r=e.mul(r,e.mul(o,l)),{x:t,y:r}}}function kl(e,t,n){if(typeof t!=`function`)throw Error(`mapToCurve() must be defined`);function r(n){return e.fromAffine(t(n))}function i(t){let n=t.clearCofactor();return n.equals(e.ZERO)?e.ZERO:(n.assertValidity(),n)}return{defaults:n,hashToCurve(e,t){let a=Dl(e,2,{...n,DST:n.DST,...t}),o=r(a[0]),s=r(a[1]);return i(o.add(s))},encodeToCurve(e,t){let a=Dl(e,1,{...n,DST:n.encodeDST,...t});return i(r(a[0]))},mapToCurve(e){if(!Array.isArray(e))throw Error(`expected array of bigints`);for(let t of e)if(typeof t!=`bigint`)throw Error(`expected array of bigints`);return i(r(e))}}}var Al,jl=o((()=>{Vc(),gc(),Al=qs})),Ml=c({encodeToCurve:()=>cu,hashToCurve:()=>su,schnorr:()=>ru,secp256k1:()=>Jl,secp256k1_hasher:()=>ou});function Nl(e){let t=Vl,n=BigInt(3),r=BigInt(6),i=BigInt(11),a=BigInt(22),o=BigInt(23),s=BigInt(44),c=BigInt(88),l=e*e*e%t,u=l*l*e%t,d=vc(u,n,t)*u%t,f=vc(d,n,t)*u%t,p=vc(f,Gl,t)*l%t,m=vc(p,i,t)*p%t,h=vc(m,a,t)*m%t,g=vc(h,s,t)*h%t,_=vc(g,c,t)*g%t,v=vc(_,s,t)*h%t,y=vc(v,n,t)*u%t,b=vc(y,o,t)*m%t,x=vc(b,r,t)*l%t,S=vc(x,Gl,t);if(!ql.eql(ql.sqr(S),e))throw Error(`Cannot find square root`);return S}function Pl(e,...t){let n=Yl[e];if(n===void 0){let t=Ms(Uint8Array.from(e,e=>e.charCodeAt(0)));n=Qs(t,t),Yl[e]=n}return Ms(Qs(n,...t))}function Fl(e){let t=Jl.utils.normPrivateKeyToScalar(e),n=eu.fromPrivateKey(t);return{scalar:n.hasEvenY()?t:$l(-t),bytes:Xl(n)}}function Il(e){tc(`x`,e,Wl,Vl);let t=Ql(e*e),n=Ql(t*e+BigInt(7)),r=Nl(n);r%Gl!==Ul&&(r=Ql(-r));let i=new eu(e,r,Wl);return i.assertValidity(),i}function Ll(...e){return $l(nu(Pl(`BIP0340/challenge`,...e)))}function Rl(e){return Fl(e).bytes}function zl(e,t,n=kr(32)){let r=Zs(`message`,e),{bytes:i,scalar:a}=Fl(t),o=Zs(`auxRand`,n,32),s=Zl(a^nu(Pl(`BIP0340/aux`,o))),c=Pl(`BIP0340/nonce`,s,i,r),l=$l(nu(c));if(l===Ul)throw Error(`sign failed: k is zero`);let{bytes:u,scalar:d}=Fl(l),f=Ll(u,i,r),p=new Uint8Array(64);if(p.set(u,0),p.set(Zl($l(d+f*a)),32),!Bl(p,r,i))throw Error(`sign: Invalid signature produced`);return p}function Bl(e,t,n){let r=Zs(`signature`,e,64),i=Zs(`message`,t),a=Zs(`publicKey`,n,32);try{let e=Il(nu(a)),t=nu(r.subarray(0,32));if(!ec(t,Wl,Vl))return!1;let n=nu(r.subarray(32,64));if(!ec(n,Wl,Hl))return!1;let o=Ll(Zl(t),Xl(e),i),s=tu(e,n,$l(-o));return!(!s||!s.hasEvenY()||s.toAffine().x!==t)}catch{return!1}}var Vl,Hl,Ul,Wl,Gl,Kl,ql,Jl,Yl,Xl,Zl,Ql,$l,eu,tu,nu,ru,iu,au,ou,su,cu,lu=o((()=>{Fs(),Nr(),xl(),jl(),Vc(),gc(),vl(),Vl=BigInt(`0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f`),Hl=BigInt(`0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141`),Ul=BigInt(0),Wl=BigInt(1),Gl=BigInt(2),Kl=(e,t)=>(e+t/Gl)/t,ql=kc(Vl,void 0,void 0,{sqrt:Nl}),Jl=bl({a:Ul,b:BigInt(7),Fp:ql,n:Hl,Gx:BigInt(`55066263022277343669578718895168534326250603453777594175500187360389116729240`),Gy:BigInt(`32670510020758816978083085130507043184471273380659243275938904335757337482424`),h:BigInt(1),lowS:!0,endo:{beta:BigInt(`0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee`),splitScalar:e=>{let t=Hl,n=BigInt(`0x3086d221a7d46bcde86c90e49284eb15`),r=-Wl*BigInt(`0xe4437ed6010e88286f547fa90abfe4c3`),i=BigInt(`0x114ca50f7a8e2f3f657c1108d9d44cfd8`),a=n,o=BigInt(`0x100000000000000000000000000000000`),s=Kl(a*e,t),c=Kl(-r*e,t),l=_c(e-s*n-c*i,t),u=_c(-s*r-c*a,t),d=l>o,f=u>o;if(d&&(l=t-l),f&&(u=t-u),l>o||u>o)throw Error(`splitScalar: Endomorphism failed, k=`+e);return{k1neg:d,k1:l,k2neg:f,k2:u}}}},Ms),Yl={},Xl=e=>e.toRawBytes(!0).slice(1),Zl=e=>Ys(e,32),Ql=e=>_c(e,Vl),$l=e=>_c(e,Hl),eu=(()=>Jl.ProjectivePoint)(),tu=(e,t,n)=>eu.BASE.multiplyAndAddUnsafe(e,t,n),nu=qs,ru=(()=>({getPublicKey:Rl,sign:zl,verify:Bl,utils:{randomPrivateKey:Jl.utils.randomPrivateKey,lift_x:Il,pointToBytes:Xl,numberToBytesBE:Ys,bytesToNumberBE:qs,taggedHash:Pl,mod:_c}}))(),iu=(()=>Ol(ql,[[`0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7`,`0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581`,`0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262`,`0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c`],[`0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b`,`0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14`,`0x0000000000000000000000000000000000000000000000000000000000000001`],[`0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c`,`0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3`,`0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931`,`0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84`],[`0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b`,`0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573`,`0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f`,`0x0000000000000000000000000000000000000000000000000000000000000001`]].map(e=>e.map(e=>BigInt(e)))))(),au=(()=>ul(ql,{A:BigInt(`0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533`),B:BigInt(`1771`),Z:ql.create(BigInt(`-11`))}))(),ou=(()=>kl(Jl.ProjectivePoint,e=>{let{x:t,y:n}=au(ql.create(e[0]));return iu(t,n)},{DST:`secp256k1_XMD:SHA-256_SSWU_RO_`,encodeDST:`secp256k1_XMD:SHA-256_SSWU_NU_`,p:ql.ORDER,m:1,k:128,expand:`xmd`,hash:Ms}))(),su=(()=>ou.hashToCurve)(),cu=(()=>ou.encodeToCurve)()}));Pt(),It(),Dn(),A(),ps();async function uu({hash:e,signature:t}){let n=Nt(e)?e:On(e),{secp256k1:r}=await fs(async()=>{let{secp256k1:e}=await Promise.resolve().then(()=>(lu(),Ml));return{secp256k1:e}},void 0);return`0x${(()=>{if(typeof t==`object`&&`r`in t&&`s`in t){let{r:e,s:n,v:i,yParity:a}=t,o=du(Number(a??i));return new r.Signature(wn(e),wn(n)).addRecoveryBit(o)}let e=Nt(t)?t:On(t);if(Ft(e)!==65)throw Error(`invalid signature length`);let n=En(`0x${e.slice(130)}`),i=du(n);return r.Signature.fromCompact(e.substring(2,130)).addRecoveryBit(i)})().recoverPublicKey(n.substring(2)).toHex(!1)}`}function du(e){if(e===0||e===1)return e;if(e===27)return 0;if(e===28)return 1;throw Error(`Invalid yParityOrV value`)}async function fu({hash:e,signature:t}){return cs(await uu({hash:e,signature:t}))}O(),va(),Hn(),A();function N(e,t=`hex`){let n=P(e),r=ga(new Uint8Array(n.length));return n.encode(r),t===`hex`?An(r.bytes):r.bytes}function P(e){return Array.isArray(e)?pu(e.map(e=>P(e))):mu(e)}function pu(e){let t=e.reduce((e,t)=>e+t.length,0),n=hu(t);return{length:(()=>t<=55?1+t:1+n+t)(),encode(r){t<=55?r.pushByte(192+t):(r.pushByte(247+n),n===1?r.pushUint8(t):n===2?r.pushUint16(t):n===3?r.pushUint24(t):r.pushUint32(t));for(let{encode:t}of e)t(r)}}}function mu(e){let t=typeof e==`string`?Ln(e):e,n=hu(t.length);return{length:(()=>t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+n+t.length)(),encode(e){t.length===1&&t[0]<128?e.pushBytes(t):t.length<=55?(e.pushByte(128+t.length),e.pushBytes(t)):(e.pushByte(183+n),n===1?e.pushUint8(t.length):n===2?e.pushUint16(t.length):n===3?e.pushUint24(t.length):e.pushUint32(t.length),e.pushBytes(t))}}}function hu(e){if(e<2**8)return 1;if(e<2**16)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new D(`Length is too large.`)}Di(),Hn(),A(),ei();function gu(e){let{chainId:t,nonce:n,to:r}=e,i=e.contractAddress??e.address,a=$r(Ei([`0x05`,N([t?k(t):`0x`,i,n?k(n):`0x`])]));return r===`bytes`?Ln(a):a}async function _u(e){let{authorization:t,signature:n}=e;return fu({hash:gu(t),signature:n??t})}Ya(),Za(),O(),mo();var vu=class extends D{constructor(e,{account:t,docsPath:n,chain:r,data:i,gas:a,gasPrice:o,maxFeePerGas:s,maxPriorityFeePerGas:c,nonce:l,to:u,value:d}){let f=ro({from:t?.address,to:u,value:d!==void 0&&`${Ja(d)} ${r?.nativeCurrency?.symbol||`ETH`}`,data:i,gas:a,gasPrice:o!==void 0&&`${Xa(o)} gwei`,maxFeePerGas:s!==void 0&&`${Xa(s)} gwei`,maxPriorityFeePerGas:c!==void 0&&`${Xa(c)} gwei`,nonce:l});super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],`Estimate Gas Arguments:`,f].filter(Boolean),name:`EstimateGasExecutionError`}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}},yu,bu,xu,Su,Cu,wu,Tu,Eu,Du,Ou,ku,Au,ju=o((()=>{Za(),O(),yu=class extends D{constructor({cause:e,message:t}={}){let n=t?.replace(`execution reverted: `,``)?.replace(`execution reverted`,``);super(`Execution reverted ${n?`with reason: ${n}`:`for an unknown reason`}.`,{cause:e,name:`ExecutionRevertedError`})}},Object.defineProperty(yu,`code`,{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(yu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/}),bu=class extends D{constructor({cause:e,maxFeePerGas:t}={}){super(`The fee cap (\`maxFeePerGas\`${t?` = ${Xa(t)} gwei`:``}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:e,name:`FeeCapTooHighError`})}},Object.defineProperty(bu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/}),xu=class extends D{constructor({cause:e,maxFeePerGas:t}={}){super(`The fee cap (\`maxFeePerGas\`${t?` = ${Xa(t)}`:``} gwei) cannot be lower than the block base fee.`,{cause:e,name:`FeeCapTooLowError`})}},Object.defineProperty(xu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/}),Su=class extends D{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:``}is higher than the next one expected.`,{cause:e,name:`NonceTooHighError`})}},Object.defineProperty(Su,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/}),Cu=class extends D{constructor({cause:e,nonce:t}={}){super([`Nonce provided for the transaction ${t?`(${t}) `:``}is lower than the current nonce of the account.`,"Try increasing the nonce or find the latest nonce with `getTransactionCount`."].join(` +`),{cause:e,name:`NonceTooLowError`})}},Object.defineProperty(Cu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/}),wu=class extends D{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:``}exceeds the maximum allowed nonce.`,{cause:e,name:`NonceMaxValueError`})}},Object.defineProperty(wu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/}),Tu=class extends D{constructor({cause:e}={}){super([`The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.`].join(` +`),{cause:e,metaMessages:[`This error could arise when the account does not have enough funds to:`,` - pay for the total gas fee,`,` - pay for the value to send.`,` `,"The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:`InsufficientFundsError`})}},Object.defineProperty(Tu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/}),Eu=class extends D{constructor({cause:e,gas:t}={}){super(`The amount of gas ${t?`(${t}) `:``}provided for the transaction exceeds the limit allowed for the block.`,{cause:e,name:`IntrinsicGasTooHighError`})}},Object.defineProperty(Eu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/}),Du=class extends D{constructor({cause:e,gas:t}={}){super(`The amount of gas ${t?`(${t}) `:``}provided for the transaction is too low.`,{cause:e,name:`IntrinsicGasTooLowError`})}},Object.defineProperty(Du,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/}),Ou=class extends D{constructor({cause:e}){super(`The transaction type is not supported for this chain.`,{cause:e,name:`TransactionTypeNotSupportedError`})}},Object.defineProperty(Ou,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/}),ku=class extends D{constructor({cause:e,maxPriorityFeePerGas:t,maxFeePerGas:n}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${t?` = ${Xa(t)} gwei`:``}) cannot be higher than the fee cap (\`maxFeePerGas\`${n?` = ${Xa(n)} gwei`:``}).`].join(` +`),{cause:e,name:`TipAboveFeeCapError`})}},Object.defineProperty(ku,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/}),Au=class extends D{constructor({cause:e}){super(`An error occurred while executing: ${e?.shortMessage}`,{cause:e,name:`UnknownNodeError`})}}}));function Mu(e,t){let n=(e.details||``).toLowerCase(),r=e instanceof D?e.walk(e=>e?.code===yu.code):e;return r instanceof D?new yu({cause:e,message:r.details}):yu.nodeMessage.test(n)?new yu({cause:e,message:e.details}):bu.nodeMessage.test(n)?new bu({cause:e,maxFeePerGas:t?.maxFeePerGas}):xu.nodeMessage.test(n)?new xu({cause:e,maxFeePerGas:t?.maxFeePerGas}):Su.nodeMessage.test(n)?new Su({cause:e,nonce:t?.nonce}):Cu.nodeMessage.test(n)?new Cu({cause:e,nonce:t?.nonce}):wu.nodeMessage.test(n)?new wu({cause:e,nonce:t?.nonce}):Tu.nodeMessage.test(n)?new Tu({cause:e}):Eu.nodeMessage.test(n)?new Eu({cause:e,gas:t?.gas}):Du.nodeMessage.test(n)?new Du({cause:e,gas:t?.gas}):Ou.nodeMessage.test(n)?new Ou({cause:e}):ku.nodeMessage.test(n)?new ku({cause:e,maxFeePerGas:t?.maxFeePerGas,maxPriorityFeePerGas:t?.maxPriorityFeePerGas}):new Au({cause:e})}var Nu=o((()=>{O(),ju()}));ju(),Nu();function Pu(e,{docsPath:t,...n}){let r=(()=>{let t=Mu(e,n);return t instanceof Au?e:t})();return new vu(r,{docsPath:t,...n})}function Fu(e,{format:t}){if(!t)return{};let n={};function r(t){let i=Object.keys(t);for(let a of i)a in e&&(n[a]=e[a]),t[a]&&typeof t[a]==`object`&&!Array.isArray(t[a])&&r(t[a])}let i=t(e||{});return r(i),n}var Iu=o((()=>{}));function Lu(e,t){return({exclude:n,format:r})=>({exclude:n,format:(e,i)=>{let a=t(e,i);if(n)for(let e of n)delete a[e];return{...a,...r(e,i)}},type:e})}var Ru=o((()=>{}));function zu(e,t){let n={};return e.authorizationList!==void 0&&(n.authorizationList=Bu(e.authorizationList)),e.accessList!==void 0&&(n.accessList=e.accessList),e.blobVersionedHashes!==void 0&&(n.blobVersionedHashes=e.blobVersionedHashes),e.blobs!==void 0&&(typeof e.blobs[0]==`string`?n.blobs=e.blobs:n.blobs=e.blobs.map(e=>An(e))),e.data!==void 0&&(n.data=e.data),e.from!==void 0&&(n.from=e.from),e.gas!==void 0&&(n.gas=k(e.gas)),e.gasPrice!==void 0&&(n.gasPrice=k(e.gasPrice)),e.maxFeePerBlobGas!==void 0&&(n.maxFeePerBlobGas=k(e.maxFeePerBlobGas)),e.maxFeePerGas!==void 0&&(n.maxFeePerGas=k(e.maxFeePerGas)),e.maxPriorityFeePerGas!==void 0&&(n.maxPriorityFeePerGas=k(e.maxPriorityFeePerGas)),e.nonce!==void 0&&(n.nonce=k(e.nonce)),e.to!==void 0&&(n.to=e.to),e.type!==void 0&&(n.type=Vu[e.type]),e.value!==void 0&&(n.value=k(e.value)),n}function Bu(e){return e.map(e=>({address:e.address,r:e.r?k(BigInt(e.r)):e.r,s:e.s?k(BigInt(e.s)):e.s,chainId:k(e.chainId),nonce:k(e.nonce),...e.yParity===void 0?{}:{yParity:k(e.yParity)},...e.v!==void 0&&e.yParity===void 0?{v:k(e.v)}:{}}))}var Vu,Hu,Uu=o((()=>{A(),Ru(),Vu={legacy:`0x0`,eip2930:`0x1`,eip1559:`0x2`,eip4844:`0x3`,eip7702:`0x4`},Hu=Lu(`transactionRequest`,zu)}));function Wu(e){if(!(!e||e.length===0))return e.reduce((e,{slot:t,value:n})=>{if(t.length!==66)throw new un({size:t.length,targetSize:66,type:`hex`});if(n.length!==66)throw new un({size:n.length,targetSize:66,type:`hex`});return e[t]=n,e},{})}function Gu(e){let{balance:t,nonce:n,state:r,stateDiff:i,code:a}=e,o={};if(a!==void 0&&(o.code=a),t!==void 0&&(o.balance=k(t)),n!==void 0&&(o.nonce=k(n)),r!==void 0&&(o.state=Wu(r)),i!==void 0){if(o.state)throw new to;o.stateDiff=Wu(i)}return o}function Ku(e){if(!e)return;let t={};for(let{address:n,...r}of e){if(!bi(n,{strict:!1}))throw new fi({address:n});if(t[n])throw new eo({address:n});t[n]=Gu(r)}return t}var qu=o((()=>{pi(),dn(),no(),Ci(),A()})),Ju,Yu,Xu=o((()=>{2n**(8n-1n)-1n,2n**(16n-1n)-1n,2n**(24n-1n)-1n,2n**(32n-1n)-1n,2n**(40n-1n)-1n,2n**(48n-1n)-1n,2n**(56n-1n)-1n,2n**(64n-1n)-1n,2n**(72n-1n)-1n,2n**(80n-1n)-1n,2n**(88n-1n)-1n,2n**(96n-1n)-1n,2n**(104n-1n)-1n,2n**(112n-1n)-1n,2n**(120n-1n)-1n,2n**(128n-1n)-1n,2n**(136n-1n)-1n,2n**(144n-1n)-1n,2n**(152n-1n)-1n,2n**(160n-1n)-1n,2n**(168n-1n)-1n,2n**(176n-1n)-1n,2n**(184n-1n)-1n,2n**(192n-1n)-1n,2n**(200n-1n)-1n,2n**(208n-1n)-1n,2n**(216n-1n)-1n,2n**(224n-1n)-1n,2n**(232n-1n)-1n,2n**(240n-1n)-1n,2n**(248n-1n)-1n,2n**(256n-1n)-1n,-(2n**(8n-1n)),-(2n**(16n-1n)),-(2n**(24n-1n)),-(2n**(32n-1n)),-(2n**(40n-1n)),-(2n**(48n-1n)),-(2n**(56n-1n)),-(2n**(64n-1n)),-(2n**(72n-1n)),-(2n**(80n-1n)),-(2n**(88n-1n)),-(2n**(96n-1n)),-(2n**(104n-1n)),-(2n**(112n-1n)),-(2n**(120n-1n)),-(2n**(128n-1n)),-(2n**(136n-1n)),-(2n**(144n-1n)),-(2n**(152n-1n)),-(2n**(160n-1n)),-(2n**(168n-1n)),-(2n**(176n-1n)),-(2n**(184n-1n)),-(2n**(192n-1n)),-(2n**(200n-1n)),-(2n**(208n-1n)),-(2n**(216n-1n)),-(2n**(224n-1n)),-(2n**(232n-1n)),-(2n**(240n-1n)),-(2n**(248n-1n)),-(2n**(256n-1n)),Ju=2n**16n-1n,Yu=2n**256n-1n}));function Zu(e){let{account:t,gasPrice:n,maxFeePerGas:r,maxPriorityFeePerGas:i,to:a}=e,o=t?ta(t):void 0;if(o&&!bi(o.address))throw new fi({address:o.address});if(a&&!bi(a))throw new fi({address:a});if(n!==void 0&&(r!==void 0||i!==void 0))throw new io;if(r&&r>Yu)throw new bu({maxFeePerGas:r});if(i&&r&&i>r)throw new ku({maxFeePerGas:r,maxPriorityFeePerGas:i})}var Qu=o((()=>{na(),Xu(),pi(),ju(),mo(),Ci()}));Za(),O();var $u=class extends D{constructor(){super("`baseFeeMultiplier` must be greater than 1.",{name:`BaseFeeScalarError`})}},ed=class extends D{constructor(){super(`Chain does not support EIP-1559 fees.`,{name:`Eip1559FeesNotSupportedError`})}},td=class extends D{constructor({maxPriorityFeePerGas:e}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${Xa(e)} gwei).`,{name:`MaxFeePerGasTooLowError`})}};O();var nd=class extends D{constructor({blockHash:e,blockNumber:t}){let n=`Block`;e&&(n=`Block at hash "${e}"`),t&&(n=`Block at number "${t}"`),super(`${n} could not be found.`,{name:`BlockNotFoundError`})}};Dn(),Ru();const rd={"0x0":`legacy`,"0x1":`eip2930`,"0x2":`eip1559`,"0x3":`eip4844`,"0x4":`eip7702`};function id(e,t){let n={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?En(e.chainId):void 0,gas:e.gas?BigInt(e.gas):void 0,gasPrice:e.gasPrice?BigInt(e.gasPrice):void 0,maxFeePerBlobGas:e.maxFeePerBlobGas?BigInt(e.maxFeePerBlobGas):void 0,maxFeePerGas:e.maxFeePerGas?BigInt(e.maxFeePerGas):void 0,maxPriorityFeePerGas:e.maxPriorityFeePerGas?BigInt(e.maxPriorityFeePerGas):void 0,nonce:e.nonce?En(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?rd[e.type]:void 0,typeHex:e.type?e.type:void 0,value:e.value?BigInt(e.value):void 0,v:e.v?BigInt(e.v):void 0};return e.authorizationList&&(n.authorizationList=od(e.authorizationList)),n.yParity=(()=>{if(e.yParity)return Number(e.yParity);if(typeof n.v==`bigint`){if(n.v===0n||n.v===27n)return 0;if(n.v===1n||n.v===28n)return 1;if(n.v>=35n)return n.v%2n==0n?1:0}})(),n.type===`legacy`&&(delete n.accessList,delete n.maxFeePerBlobGas,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.yParity),n.type===`eip2930`&&(delete n.maxFeePerBlobGas,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas),n.type===`eip1559`&&delete n.maxFeePerBlobGas,n}const ad=Lu(`transaction`,id);function od(e){return e.map(e=>({address:e.address,chainId:Number(e.chainId),nonce:Number(e.nonce),r:e.r,s:e.s,yParity:Number(e.yParity)}))}Ru();function sd(e,t){let n=(e.transactions??[]).map(e=>typeof e==`string`?e:id(e));return{...e,baseFeePerGas:e.baseFeePerGas?BigInt(e.baseFeePerGas):null,blobGasUsed:e.blobGasUsed?BigInt(e.blobGasUsed):void 0,difficulty:e.difficulty?BigInt(e.difficulty):void 0,excessBlobGas:e.excessBlobGas?BigInt(e.excessBlobGas):void 0,gasLimit:e.gasLimit?BigInt(e.gasLimit):void 0,gasUsed:e.gasUsed?BigInt(e.gasUsed):void 0,hash:e.hash?e.hash:null,logsBloom:e.logsBloom?e.logsBloom:null,nonce:e.nonce?e.nonce:null,number:e.number?BigInt(e.number):null,size:e.size?BigInt(e.size):void 0,timestamp:e.timestamp?BigInt(e.timestamp):void 0,transactions:n,totalDifficulty:e.totalDifficulty?BigInt(e.totalDifficulty):null}}const cd=Lu(`block`,sd);A();async function ld(e,{blockHash:t,blockNumber:n,blockTag:r=e.experimental_blockTag??`latest`,includeTransactions:i}={}){let a=i??!1,o=n===void 0?void 0:k(n),s=null;if(s=t?await e.request({method:`eth_getBlockByHash`,params:[t,a]},{dedupe:!0}):await e.request({method:`eth_getBlockByNumber`,params:[o||r,a]},{dedupe:!!o}),!s)throw new nd({blockHash:t,blockNumber:n});return(e.chain?.formatters?.block?.format||sd)(s,`getBlock`)}async function ud(e){let t=await e.request({method:`eth_gasPrice`});return BigInt(t)}Dn();async function dd(e,t){let{block:n,chain:r=e.chain,request:i}=t||{};try{let t=r?.fees?.maxPriorityFeePerGas??r?.fees?.defaultPriorityFee;if(typeof t==`function`){let r=n||await E(e,ld,`getBlock`)({}),a=await t({block:r,client:e,request:i});if(a===null)throw Error();return a}if(t!==void 0)return t;let a=await e.request({method:`eth_maxPriorityFeePerGas`});return wn(a)}catch{let[t,r]=await Promise.all([n?Promise.resolve(n):E(e,ld,`getBlock`)({}),E(e,ud,`getGasPrice`)({})]);if(typeof t.baseFeePerGas!=`bigint`)throw new ed;let i=r-t.baseFeePerGas;return i<0n?0n:i}}async function fd(e,t){let{block:n,chain:r=e.chain,request:i,type:a=`eip1559`}=t||{},o=await(async()=>typeof r?.fees?.baseFeeMultiplier==`function`?r.fees.baseFeeMultiplier({block:n,client:e,request:i}):r?.fees?.baseFeeMultiplier??1.2)();if(o<1)throw new $u;let s=10**(o.toString().split(`.`)[1]?.length??0),c=e=>e*BigInt(Math.ceil(o*s))/BigInt(s),l=n||await E(e,ld,`getBlock`)({});if(typeof r?.fees?.estimateFeesPerGas==`function`){let t=await r.fees.estimateFeesPerGas({block:n,client:e,multiply:c,request:i,type:a});if(t!==null)return t}if(a===`eip1559`){if(typeof l.baseFeePerGas!=`bigint`)throw new ed;let t=typeof i?.maxPriorityFeePerGas==`bigint`?i.maxPriorityFeePerGas:await dd(e,{block:l,chain:r,request:i}),n=c(l.baseFeePerGas);return{maxFeePerGas:i?.maxFeePerGas??n+t,maxPriorityFeePerGas:t}}return{gasPrice:i?.gasPrice??c(await E(e,ud,`getGasPrice`)({}))}}Dn(),A();async function pd(e,{address:t,blockTag:n=`latest`,blockNumber:r}){let i=await e.request({method:`eth_getTransactionCount`,params:[t,typeof r==`bigint`?k(r):n]},{dedupe:!!r});return En(i)}Uu(),Hn(),A();function md(e){let{kzg:t}=e,n=e.to??(typeof e.blobs[0]==`string`?`hex`:`bytes`),r=typeof e.blobs[0]==`string`?e.blobs.map(e=>Ln(e)):e.blobs,i=[];for(let e of r)i.push(Uint8Array.from(t.blobToKzgCommitment(e)));return n===`bytes`?i:i.map(e=>An(e))}Hn(),A();function hd(e){let{kzg:t}=e,n=e.to??(typeof e.blobs[0]==`string`?`hex`:`bytes`),r=typeof e.blobs[0]==`string`?e.blobs.map(e=>Ln(e)):e.blobs,i=typeof e.commitments[0]==`string`?e.commitments.map(e=>Ln(e)):e.commitments,a=[];for(let e=0;eAn(e))}Fs();const gd=Ms;Pt(),Hn(),A();function _d(e,t){let n=t||`hex`,r=gd(Nt(e,{strict:!1})?Pn(e):e);return n===`bytes`?r:On(r)}A();function vd(e){let{commitment:t,version:n=1}=e,r=e.to??(typeof t==`string`?`hex`:`bytes`),i=_d(t,`bytes`);return i.set([n],0),r===`bytes`?i:An(i)}function yd(e){let{commitments:t,version:n}=e,r=e.to??(typeof t[0]==`string`?`hex`:`bytes`),i=[];for(let e of t)i.push(vd({commitment:e,to:r,version:n}));return i}var bd=6;const xd=4096,Sd=32*xd,Cd=Sd*bd-1-1*xd*bd;O();var wd=class extends D{constructor({maxSize:e,size:t}){super(`Blob size is too large.`,{metaMessages:[`Max: ${e} bytes`,`Given: ${t} bytes`],name:`BlobSizeTooLargeError`})}},Td=class extends D{constructor(){super(`Blob data must not be empty.`,{name:`EmptyBlobError`})}},Ed=class extends D{constructor({hash:e,size:t}){super(`Versioned hash "${e}" size is invalid.`,{metaMessages:[`Expected: 32`,`Received: ${t}`],name:`InvalidVersionedHashSizeError`})}},Dd=class extends D{constructor({hash:e,version:t}){super(`Versioned hash "${e}" version is invalid.`,{metaMessages:[`Expected: 1`,`Received: ${t}`],name:`InvalidVersionedHashVersionError`})}};va(),It(),Hn(),A();function Od(e){let t=e.to??(typeof e.data==`string`?`hex`:`bytes`),n=typeof e.data==`string`?Ln(e.data):e.data,r=Ft(n);if(!r)throw new Td;if(r>761855)throw new wd({maxSize:Cd,size:r});let i=[],a=!0,o=0;for(;a;){let e=ga(new Uint8Array(Sd)),t=0;for(;te.bytes):i.map(e=>An(e.bytes))}function kd(e){let{data:t,kzg:n,to:r}=e,i=e.blobs??Od({data:t,to:r}),a=e.commitments??md({blobs:i,kzg:n,to:r}),o=e.proofs??hd({blobs:i,commitments:a,kzg:n,to:r}),s=[];for(let e=0;e{if(v.to)return v.to;if(i&&i.length>0)return await _u({authorization:i[0]}).catch(()=>{throw new D("`to` is required. Could not infer from `authorizationList`")})})();Zu(t);let S=e.chain?.formatters?.transactionRequest?.format,C=(S||zu)({...Fu(v,{format:S}),from:r?.address,accessList:n,authorizationList:i,blobs:a,blobVersionedHashes:o,data:l,gas:u,gasPrice:d,maxFeePerBlobGas:f,maxFeePerGas:p,maxPriorityFeePerGas:m,nonce:h,to:x,value:g},`estimateGas`);return BigInt(await e.request({method:`eth_estimateGas`,params:b?[C,y??e.experimental_blockTag??`latest`,b]:y?[C,y]:[C]}))}catch(n){throw Pu(n,{...t,account:r,chain:e.chain})}}function Id(e,t){if(!bi(e,{strict:!1}))throw new fi({address:e});if(!bi(t,{strict:!1}))throw new fi({address:t});return e.toLowerCase()===t.toLowerCase()}var Ld=o((()=>{pi(),Ci()}));function Rd(e,{args:t,eventName:n}={}){return{...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,logIndex:e.logIndex?Number(e.logIndex):null,transactionHash:e.transactionHash?e.transactionHash:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,...n?{args:t,eventName:n}:{}}}function zd(e){let{abi:t,args:n,functionName:r,data:i}=e,a=t[0];if(r){let e=Qi({abi:t,args:n,name:r});if(!e)throw new Zt(r,{docsPath:Bd});a=e}if(a.type!==`function`)throw new Zt(void 0,{docsPath:Bd});if(!a.outputs)throw new Qt(a.name,{docsPath:Bd});let o=wa(a.outputs,i);if(o&&o.length>1)return o;if(o&&o.length===1)return o[0]}var Bd,Vd=o((()=>{sn(),Ia(),ea(),Bd=`/docs/contract/decodeFunctionResult`})),Hd,Ud=o((()=>{Hd=`0.1.1`}));function Wd(){return Hd}var Gd=o((()=>{Ud()}));function Kd(e,t){return t?.(e)?e:e&&typeof e==`object`&&`cause`in e&&e.cause?Kd(e.cause,t):t?null:e}var F,qd=o((()=>{Gd(),F=class e extends Error{constructor(t,n={}){let r=(()=>{if(n.cause instanceof e){if(n.cause.details)return n.cause.details;if(n.cause.shortMessage)return n.cause.shortMessage}return n.cause&&`details`in n.cause&&typeof n.cause.details==`string`?n.cause.details:n.cause?.message?n.cause.message:n.details})(),i=(()=>n.cause instanceof e&&n.cause.docsPath||n.docsPath)(),a=`https://oxlib.sh${i??``}`,o=[t||`An error occurred.`,...n.metaMessages?[``,...n.metaMessages]:[],...r||i?[``,r?`Details: ${r}`:void 0,i?`See: ${a}`:void 0]:[]].filter(e=>typeof e==`string`).join(` +`);super(o,n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,`details`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`docs`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`docsPath`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`shortMessage`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`BaseError`}),Object.defineProperty(this,`version`,{enumerable:!0,configurable:!0,writable:!0,value:`ox@${Wd()}`}),this.cause=n.cause,this.details=r,this.docs=a,this.docsPath=i,this.shortMessage=t}walk(e){return Kd(this,e)}}}));function Jd(e,t){if(yf(e)>t)throw new Nf({givenSize:yf(e),maxSize:t})}function Yd(e,t){if(typeof t==`number`&&t>0&&t>yf(e)-1)throw new Pf({offset:t,position:`start`,size:yf(e)})}function Xd(e,t,n){if(typeof t==`number`&&typeof n==`number`&&yf(e)!==n-t)throw new Pf({offset:n,position:`end`,size:yf(e)})}function I(e){if(e>=$d.zero&&e<=$d.nine)return e-$d.zero;if(e>=$d.A&&e<=$d.F)return e-($d.A-10);if(e>=$d.a&&e<=$d.f)return e-($d.a-10)}function Zd(e,t={}){let{dir:n,size:r=32}=t;if(r===0)return e;if(e.length>r)throw new Ff({size:e.length,targetSize:r,type:`Bytes`});let i=new Uint8Array(r);for(let t=0;t{If(),$d={zero:48,nine:57,A:65,F:70,a:97,f:102}}));function tf(e,t){if(Kf(e)>t)throw new np({givenSize:Kf(e),maxSize:t})}function nf(e,t){if(typeof t==`number`&&t>0&&t>Kf(e)-1)throw new rp({offset:t,position:`start`,size:Kf(e)})}function rf(e,t,n){if(typeof t==`number`&&typeof n==`number`&&Kf(e)!==n-t)throw new rp({offset:n,position:`end`,size:Kf(e)})}function af(e,t={}){let{dir:n,size:r=32}=t;if(r===0)return e;let i=e.replace(`0x`,``);if(i.length>r*2)throw new ip({size:Math.ceil(i.length/2),targetSize:r,type:`Hex`});return`0x${i[n===`right`?`padEnd`:`padStart`](r*2,`0`)}`}function sf(e,t={}){let{dir:n=`left`}=t,r=e.replace(`0x`,``),i=0;for(let e=0;e{ap()}));function lf(e,t){return JSON.parse(e,(e,n)=>{let r=n;return typeof r==`string`&&r.endsWith(df)?BigInt(r.slice(0,-9)):typeof t==`function`?t(e,r):r})}function uf(e,t,n){return JSON.stringify(e,(e,n)=>typeof t==`function`?t(e,n):typeof n==`bigint`?n.toString()+df:n,n)}var df,ff=o((()=>{df=`#__bigint`}));function pf(e){if(!(e instanceof Uint8Array)&&(!e||typeof e!=`object`||!(`BYTES_PER_ELEMENT`in e)||e.BYTES_PER_ELEMENT!==1||e.constructor.name!==`Uint8Array`))throw new Mf(e)}function mf(e){return e instanceof Uint8Array?e:typeof e==`string`?gf(e):hf(e)}function hf(e){return e instanceof Uint8Array?e:new Uint8Array(e)}function gf(e,t={}){let{size:n}=t,r=e;n&&(tf(e,n),r=Wf(e,n));let i=r.slice(2);i.length%2&&(i=`0${i}`);let a=i.length/2,o=new Uint8Array(a);for(let e=0,t=0;e1||r[0]>1)throw new jf(r);return!!r[0]}function Cf(e,t={}){return Vf(e,t)}function wf(e,t={}){let{size:n}=t;n!==void 0&&Jd(e,n);let r=Vf(e,t);return Yf(r,t)}function Tf(e,t={}){let{size:n}=t,r=e;return n!==void 0&&(Jd(r,n),r=Df(r)),kf.decode(r)}function Ef(e){return Qd(e,{dir:`left`})}function Df(e){return Qd(e,{dir:`right`})}function Of(e){try{return pf(e),!0}catch{return!1}}var kf,Af,jf,Mf,Nf,Pf,Ff,If=o((()=>{qd(),ap(),ef(),cf(),ff(),kf=new TextDecoder,Af=new TextEncoder,jf=class extends F{constructor(e){super(`Bytes value \`${e}\` is not a valid boolean.`,{metaMessages:["The bytes array must contain a single byte of either a `0` or `1` value."]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.InvalidBytesBooleanError`})}},Mf=class extends F{constructor(e){super(`Value \`${typeof e==`object`?uf(e):e}\` of type \`${typeof e}\` is an invalid Bytes value.`,{metaMessages:["Bytes values must be of type `Bytes`."]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.InvalidBytesTypeError`})}},Nf=class extends F{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed \`${t}\` bytes. Given size: \`${e}\` bytes.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.SizeOverflowError`})}},Pf=class extends F{constructor({offset:e,position:t,size:n}){super(`Slice ${t===`start`?`starting`:`ending`} at offset \`${e}\` is out-of-bounds (size: \`${n}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.SliceOffsetOutOfBoundsError`})}},Ff=class extends F{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${e}\`) exceeds padding size (\`${t}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.SizeExceedsPaddingSizeError`})}}}));function Lf(e,t={}){let{strict:n=!1}=t;if(!e||typeof e!=`string`)throw new ep(e);if(n&&!/^0x[0-9a-fA-F]*$/.test(e)||!e.startsWith(`0x`))throw new tp(e)}function Rf(...e){return`0x${e.reduce((e,t)=>e+t.replace(`0x`,``),``)}`}function zf(e){return e instanceof Uint8Array?Vf(e):Array.isArray(e)?Vf(new Uint8Array(e)):e}function Bf(e,t={}){let n=`0x${Number(e)}`;return typeof t.size==`number`?(tf(n,t.size),Uf(n,t.size)):n}function Vf(e,t={}){let n=``;for(let t=0;ta||i>1n;return r<=o?r:r-a-1n}function Yf(e,t={}){let{signed:n,size:r}=t;return!n&&!r?Number(e):Number(Jf(e,t))}function Xf(e,t={}){let{strict:n=!1}=t;try{return Lf(e,{strict:n}),!0}catch{return!1}}var Zf,Qf,$f,ep,tp,np,rp,ip,ap=o((()=>{qd(),cf(),ff(),Zf=new TextEncoder,Qf=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`)),$f=class extends F{constructor({max:e,min:t,signed:n,size:r,value:i}){super(`Number \`${i}\` is not in safe${r?` ${r*8}-bit`:``}${n?` signed`:` unsigned`} integer range ${e?`(\`${t}\` to \`${e}\`)`:`(above \`${t}\`)`}`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.IntegerOutOfRangeError`})}},ep=class extends F{constructor(e){super(`Value \`${typeof e==`object`?uf(e):e}\` of type \`${typeof e}\` is an invalid hex type.`,{metaMessages:['Hex types must be represented as `"0x${string}"`.']}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.InvalidHexTypeError`})}},tp=class extends F{constructor(e){super(`Value \`${e}\` is an invalid hex value.`,{metaMessages:['Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).']}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.InvalidHexValueError`})}},np=class extends F{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed \`${t}\` bytes. Given size: \`${e}\` bytes.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.SizeOverflowError`})}},rp=class extends F{constructor({offset:e,position:t,size:n}){super(`Slice ${t===`start`?`starting`:`ending`} at offset \`${e}\` is out-of-bounds (size: \`${n}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.SliceOffsetOutOfBoundsError`})}},ip=class extends F{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${e}\`) exceeds padding size (\`${t}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.SizeExceedsPaddingSizeError`})}}}));function op(e){return{address:e.address,amount:L(e.amount),index:L(e.index),validatorIndex:L(e.validatorIndex)}}var sp=o((()=>{ap()}));function cp(e){return{...typeof e.baseFeePerGas==`bigint`&&{baseFeePerGas:L(e.baseFeePerGas)},...typeof e.blobBaseFee==`bigint`&&{blobBaseFee:L(e.blobBaseFee)},...typeof e.feeRecipient==`string`&&{feeRecipient:e.feeRecipient},...typeof e.gasLimit==`bigint`&&{gasLimit:L(e.gasLimit)},...typeof e.number==`bigint`&&{number:L(e.number)},...typeof e.prevRandao==`bigint`&&{prevRandao:L(e.prevRandao)},...typeof e.time==`bigint`&&{time:L(e.time)},...e.withdrawals&&{withdrawals:e.withdrawals.map(op)}}}var lp=o((()=>{ap(),sp()})),up,dp,fp,pp,mp,hp=o((()=>{up=[{inputs:[{components:[{name:`target`,type:`address`},{name:`allowFailure`,type:`bool`},{name:`callData`,type:`bytes`}],name:`calls`,type:`tuple[]`}],name:`aggregate3`,outputs:[{components:[{name:`success`,type:`bool`},{name:`returnData`,type:`bytes`}],name:`returnData`,type:`tuple[]`}],stateMutability:`view`,type:`function`},{inputs:[],name:`getCurrentBlockTimestamp`,outputs:[{internalType:`uint256`,name:`timestamp`,type:`uint256`}],stateMutability:`view`,type:`function`}],dp=[{name:`query`,type:`function`,stateMutability:`view`,inputs:[{type:`tuple[]`,name:`queries`,components:[{type:`address`,name:`sender`},{type:`string[]`,name:`urls`},{type:`bytes`,name:`data`}]}],outputs:[{type:`bool[]`,name:`failures`},{type:`bytes[]`,name:`responses`}]},{name:`HttpError`,type:`error`,inputs:[{type:`uint16`,name:`status`},{type:`string`,name:`message`}]}],fp=[{inputs:[{name:`dns`,type:`bytes`}],name:`DNSDecodingFailed`,type:`error`},{inputs:[{name:`ens`,type:`string`}],name:`DNSEncodingFailed`,type:`error`},{inputs:[],name:`EmptyAddress`,type:`error`},{inputs:[{name:`status`,type:`uint16`},{name:`message`,type:`string`}],name:`HttpError`,type:`error`},{inputs:[],name:`InvalidBatchGatewayResponse`,type:`error`},{inputs:[{name:`errorData`,type:`bytes`}],name:`ResolverError`,type:`error`},{inputs:[{name:`name`,type:`bytes`},{name:`resolver`,type:`address`}],name:`ResolverNotContract`,type:`error`},{inputs:[{name:`name`,type:`bytes`}],name:`ResolverNotFound`,type:`error`},{inputs:[{name:`primary`,type:`string`},{name:`primaryAddress`,type:`bytes`}],name:`ReverseAddressMismatch`,type:`error`},{inputs:[{internalType:`bytes4`,name:`selector`,type:`bytes4`}],name:`UnsupportedResolverProfile`,type:`error`}],[...fp],[...fp],pp=[{name:`isValidSignature`,type:`function`,stateMutability:`view`,inputs:[{name:`hash`,type:`bytes32`},{name:`signature`,type:`bytes`}],outputs:[{name:``,type:`bytes4`}]}],mp=[{inputs:[{name:`_signer`,type:`address`},{name:`_hash`,type:`bytes32`},{name:`_signature`,type:`bytes`}],stateMutability:`nonpayable`,type:`constructor`},{inputs:[{name:`_signer`,type:`address`},{name:`_hash`,type:`bytes32`},{name:`_signature`,type:`bytes`}],outputs:[{type:`bool`}],stateMutability:`nonpayable`,type:`function`,name:`isValidSig`}]})),gp=o((()=>{})),_p,vp,yp,bp,xp=o((()=>{_p=`0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe`,vp=`0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe`,yp=`0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572`,bp=`0x608060405234801561001057600080fd5b506115b9806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e14610325578063bce38bd714610350578063c3077fa914610380578063ee82ac5e146103b2576100f3565b80634d2301cc1461026257806372425d9d1461029f57806382ad56cb146102ca57806386d516e8146102fa576100f3565b80633408e470116100c65780633408e470146101af578063399542e9146101da5780633e64a6961461020c57806342cbb15c14610237576100f3565b80630f28c97d146100f8578063174dea7114610123578063252dba421461015357806327e86d6e14610184575b600080fd5b34801561010457600080fd5b5061010d6103ef565b60405161011a9190610c0a565b60405180910390f35b61013d60048036038101906101389190610c94565b6103f7565b60405161014a9190610e94565b60405180910390f35b61016d60048036038101906101689190610f0c565b610615565b60405161017b92919061101b565b60405180910390f35b34801561019057600080fd5b506101996107ab565b6040516101a69190611064565b60405180910390f35b3480156101bb57600080fd5b506101c46107b7565b6040516101d19190610c0a565b60405180910390f35b6101f460048036038101906101ef91906110ab565b6107bf565b6040516102039392919061110b565b60405180910390f35b34801561021857600080fd5b506102216107e1565b60405161022e9190610c0a565b60405180910390f35b34801561024357600080fd5b5061024c6107e9565b6040516102599190610c0a565b60405180910390f35b34801561026e57600080fd5b50610289600480360381019061028491906111a7565b6107f1565b6040516102969190610c0a565b60405180910390f35b3480156102ab57600080fd5b506102b4610812565b6040516102c19190610c0a565b60405180910390f35b6102e460048036038101906102df919061122a565b61081a565b6040516102f19190610e94565b60405180910390f35b34801561030657600080fd5b5061030f6109e4565b60405161031c9190610c0a565b60405180910390f35b34801561033157600080fd5b5061033a6109ec565b6040516103479190611286565b60405180910390f35b61036a600480360381019061036591906110ab565b6109f4565b6040516103779190610e94565b60405180910390f35b61039a60048036038101906103959190610f0c565b610ba6565b6040516103a99392919061110b565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d491906112cd565b610bca565b6040516103e69190611064565b60405180910390f35b600042905090565b60606000808484905090508067ffffffffffffffff81111561041c5761041b6112fa565b5b60405190808252806020026020018201604052801561045557816020015b610442610bd5565b81526020019060019003908161043a5790505b5092503660005b828110156105c957600085828151811061047957610478611329565b5b6020026020010151905087878381811061049657610495611329565b5b90506020028101906104a89190611367565b925060008360400135905080860195508360000160208101906104cb91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16818580606001906104f2919061138f565b604051610500929190611431565b60006040518083038185875af1925050503d806000811461053d576040519150601f19603f3d011682016040523d82523d6000602084013e610542565b606091505b5083600001846020018290528215151515815250505081516020850135176105bc577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b826001019250505061045c565b5082341461060c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610603906114a7565b60405180910390fd5b50505092915050565b6000606043915060008484905090508067ffffffffffffffff81111561063e5761063d6112fa565b5b60405190808252806020026020018201604052801561067157816020015b606081526020019060019003908161065c5790505b5091503660005b828110156107a157600087878381811061069557610694611329565b5b90506020028101906106a791906114c7565b92508260000160208101906106bc91906111a7565b73ffffffffffffffffffffffffffffffffffffffff168380602001906106e2919061138f565b6040516106f0929190611431565b6000604051808303816000865af19150503d806000811461072d576040519150601f19603f3d011682016040523d82523d6000602084013e610732565b606091505b5086848151811061074657610745611329565b5b60200260200101819052819250505080610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c9061153b565b60405180910390fd5b81600101915050610678565b5050509250929050565b60006001430340905090565b600046905090565b6000806060439250434091506107d68686866109f4565b905093509350939050565b600048905090565b600043905090565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b600044905090565b606060008383905090508067ffffffffffffffff81111561083e5761083d6112fa565b5b60405190808252806020026020018201604052801561087757816020015b610864610bd5565b81526020019060019003908161085c5790505b5091503660005b828110156109db57600084828151811061089b5761089a611329565b5b602002602001015190508686838181106108b8576108b7611329565b5b90506020028101906108ca919061155b565b92508260000160208101906108df91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060400190610905919061138f565b604051610913929190611431565b6000604051808303816000865af19150503d8060008114610950576040519150601f19603f3d011682016040523d82523d6000602084013e610955565b606091505b5082600001836020018290528215151515815250505080516020840135176109cf577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b8160010191505061087e565b50505092915050565b600045905090565b600041905090565b606060008383905090508067ffffffffffffffff811115610a1857610a176112fa565b5b604051908082528060200260200182016040528015610a5157816020015b610a3e610bd5565b815260200190600190039081610a365790505b5091503660005b82811015610b9c576000848281518110610a7557610a74611329565b5b60200260200101519050868683818110610a9257610a91611329565b5b9050602002810190610aa491906114c7565b9250826000016020810190610ab991906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060200190610adf919061138f565b604051610aed929190611431565b6000604051808303816000865af19150503d8060008114610b2a576040519150601f19603f3d011682016040523d82523d6000602084013e610b2f565b606091505b508260000183602001829052821515151581525050508715610b90578060000151610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b869061153b565b60405180910390fd5b5b81600101915050610a58565b5050509392505050565b6000806060610bb7600186866107bf565b8093508194508295505050509250925092565b600081409050919050565b6040518060400160405280600015158152602001606081525090565b6000819050919050565b610c0481610bf1565b82525050565b6000602082019050610c1f6000830184610bfb565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610c5457610c53610c2f565b5b8235905067ffffffffffffffff811115610c7157610c70610c34565b5b602083019150836020820283011115610c8d57610c8c610c39565b5b9250929050565b60008060208385031215610cab57610caa610c25565b5b600083013567ffffffffffffffff811115610cc957610cc8610c2a565b5b610cd585828601610c3e565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60008115159050919050565b610d2281610d0d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d62578082015181840152602081019050610d47565b83811115610d71576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d9382610d28565b610d9d8185610d33565b9350610dad818560208601610d44565b610db681610d77565b840191505092915050565b6000604083016000830151610dd96000860182610d19565b5060208301518482036020860152610df18282610d88565b9150508091505092915050565b6000610e0a8383610dc1565b905092915050565b6000602082019050919050565b6000610e2a82610ce1565b610e348185610cec565b935083602082028501610e4685610cfd565b8060005b85811015610e825784840389528151610e638582610dfe565b9450610e6e83610e12565b925060208a01995050600181019050610e4a565b50829750879550505050505092915050565b60006020820190508181036000830152610eae8184610e1f565b905092915050565b60008083601f840112610ecc57610ecb610c2f565b5b8235905067ffffffffffffffff811115610ee957610ee8610c34565b5b602083019150836020820283011115610f0557610f04610c39565b5b9250929050565b60008060208385031215610f2357610f22610c25565b5b600083013567ffffffffffffffff811115610f4157610f40610c2a565b5b610f4d85828601610eb6565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000610f918383610d88565b905092915050565b6000602082019050919050565b6000610fb182610f59565b610fbb8185610f64565b935083602082028501610fcd85610f75565b8060005b858110156110095784840389528151610fea8582610f85565b9450610ff583610f99565b925060208a01995050600181019050610fd1565b50829750879550505050505092915050565b60006040820190506110306000830185610bfb565b81810360208301526110428184610fa6565b90509392505050565b6000819050919050565b61105e8161104b565b82525050565b60006020820190506110796000830184611055565b92915050565b61108881610d0d565b811461109357600080fd5b50565b6000813590506110a58161107f565b92915050565b6000806000604084860312156110c4576110c3610c25565b5b60006110d286828701611096565b935050602084013567ffffffffffffffff8111156110f3576110f2610c2a565b5b6110ff86828701610eb6565b92509250509250925092565b60006060820190506111206000830186610bfb565b61112d6020830185611055565b818103604083015261113f8184610e1f565b9050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061117482611149565b9050919050565b61118481611169565b811461118f57600080fd5b50565b6000813590506111a18161117b565b92915050565b6000602082840312156111bd576111bc610c25565b5b60006111cb84828501611192565b91505092915050565b60008083601f8401126111ea576111e9610c2f565b5b8235905067ffffffffffffffff81111561120757611206610c34565b5b60208301915083602082028301111561122357611222610c39565b5b9250929050565b6000806020838503121561124157611240610c25565b5b600083013567ffffffffffffffff81111561125f5761125e610c2a565b5b61126b858286016111d4565b92509250509250929050565b61128081611169565b82525050565b600060208201905061129b6000830184611277565b92915050565b6112aa81610bf1565b81146112b557600080fd5b50565b6000813590506112c7816112a1565b92915050565b6000602082840312156112e3576112e2610c25565b5b60006112f1848285016112b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b60008235600160800383360303811261138357611382611358565b5b80830191505092915050565b600080833560016020038436030381126113ac576113ab611358565b5b80840192508235915067ffffffffffffffff8211156113ce576113cd61135d565b5b6020830192506001820236038313156113ea576113e9611362565b5b509250929050565b600081905092915050565b82818337600083830152505050565b600061141883856113f2565b93506114258385846113fd565b82840190509392505050565b600061143e82848661140c565b91508190509392505050565b600082825260208201905092915050565b7f4d756c746963616c6c333a2076616c7565206d69736d61746368000000000000600082015250565b6000611491601a8361144a565b915061149c8261145b565b602082019050919050565b600060208201905081810360008301526114c081611484565b9050919050565b6000823560016040038336030381126114e3576114e2611358565b5b80830191505092915050565b7f4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000600082015250565b600061152560178361144a565b9150611530826114ef565b602082019050919050565b6000602082019050818103600083015261155481611518565b9050919050565b60008235600160600383360303811261157757611576611358565b5b8083019150509291505056fea264697066735822122020c1bc9aacf8e4a6507193432a895a8e77094f45a1395583f07b24e860ef06cd64736f6c634300080c0033`})),Sp,Cp,wp,Tp,Ep,Dp=o((()=>{O(),Sp=class extends D{constructor({blockNumber:e,chain:t,contract:n}){super(`Chain "${t.name}" does not support contract "${n.name}".`,{metaMessages:[`This could be due to any of the following:`,...e&&n.blockCreated&&n.blockCreated>e?[`- The contract "${n.name}" was not deployed until block ${n.blockCreated} (current block ${e}).`]:[`- The chain does not have the contract "${n.name}" configured.`]],name:`ChainDoesNotSupportContract`})}},Cp=class extends D{constructor({chain:e,currentChainId:t}){super(`The current chain of the wallet (id: ${t}) does not match the target chain for the transaction (id: ${e.id} – ${e.name}).`,{metaMessages:[`Current Chain ID: ${t}`,`Expected Chain ID: ${e.id} – ${e.name}`],name:`ChainMismatchError`})}},wp=class extends D{constructor(){super([`No chain was provided to the request.`,"Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient."].join(` +`),{name:`ChainNotFoundError`})}},Tp=class extends D{constructor(){super(`No chain was provided to the Client.`,{name:`ClientChainNotConfiguredError`})}},Ep=class extends D{constructor({chainId:e}){super(typeof e==`number`?`Chain ID "${e}" is invalid.`:`Chain ID is invalid.`,{name:`InvalidChainIdError`})}}}));function Op(e){let{abi:t,args:n,bytecode:r}=e;if(!n||n.length===0)return r;let i=t.find(e=>`type`in e&&e.type===`constructor`);if(!i)throw new Vt({docsPath:kp});if(!(`inputs`in i)||!i.inputs||i.inputs.length===0)throw new Ht({docsPath:kp});let a=Li(i.inputs,n);return Ei([r,a])}var kp,Ap=o((()=>{sn(),Di(),Yi(),kp=`/docs/contract/encodeDeployData`}));function jp({blockNumber:e,chain:t,contract:n}){let r=t?.contracts?.[n];if(!r)throw new Sp({chain:t,contract:{name:n}});if(e&&r.blockCreated&&r.blockCreated>e)throw new Sp({blockNumber:e,chain:t,contract:{name:n,blockCreated:r.blockCreated}});return r.address}var Mp=o((()=>{Dp()}));function Np(e,{docsPath:t,...n}){let r=(()=>{let t=Mu(e,n);return t instanceof Au?e:t})();return new vo(r,{docsPath:t,...n})}var Pp=o((()=>{wo(),ju(),Nu()}));function Fp(){let e=()=>void 0,t=()=>void 0;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var Ip=o((()=>{}));function Lp({fn:e,id:t,shouldSplitBatch:n,wait:r=0,sort:i}){let a=async()=>{let t=c();o();let n=t.map(({args:e})=>e);n.length!==0&&e(n).then(e=>{i&&Array.isArray(e)&&e.sort(i);for(let n=0;n{for(let n=0;nRp.delete(t),s=()=>c().map(({args:e})=>e),c=()=>Rp.get(t)||[],l=e=>Rp.set(t,[...c(),e]);return{flush:o,async schedule(e){let{promise:t,resolve:i,reject:o}=Fp();return n?.([...s(),e])&&a(),c().length>0?(l({args:e,resolve:i,reject:o}),t):(l({args:e,resolve:i,reject:o}),setTimeout(a,r),t)}}}var Rp,zp=o((()=>{Ip(),Rp=new Map})),Bp,Vp,Hp,Up=o((()=>{Ba(),O(),_o(),Bp=class extends D{constructor({callbackSelector:e,cause:t,data:n,extraData:r,sender:i,urls:a}){super(t.shortMessage||`An error occurred while fetching for an offchain result.`,{cause:t,metaMessages:[...t.metaMessages||[],t.metaMessages?.length?``:[],`Offchain Gateway Call:`,a&&[` Gateway URL(s):`,...a.map(e=>` ${go(e)}`)],` Sender: ${i}`,` Data: ${n}`,` Callback selector: ${e}`,` Extra data: ${r}`].flat(),name:`OffchainLookupError`})}},Vp=class extends D{constructor({result:e,url:t}){super(`Offchain gateway response is malformed. Response data must be a hex value.`,{metaMessages:[`Gateway URL: ${go(t)}`,`Response: ${za(e)}`],name:`OffchainLookupResponseMalformedError`})}},Hp=class extends D{constructor({sender:e,to:t}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${t}`,`OffchainLookup sender address: ${e}`],name:`OffchainLookupSenderMismatchError`})}}}));function Wp(e){let{abi:t,data:n}=e,r=Oi(n,0,4),i=t.find(e=>e.type===`function`&&r===Xi(kt(e)));if(!i)throw new $t(r,{docsPath:`/docs/contract/decodeFunctionData`});return{functionName:i.name,args:`inputs`in i&&i.inputs&&i.inputs.length>0?wa(i.inputs,Oi(n,4)):void 0}}var Gp=o((()=>{sn(),Ni(),Zi(),Ia(),Mt()}));function Kp(e){let{abi:t,errorName:n,args:r}=e,i=t[0];if(n){let e=Qi({abi:t,args:r,name:n});if(!e)throw new Yt(n,{docsPath:qp});i=e}if(i.type!==`error`)throw new Yt(void 0,{docsPath:qp});let a=kt(i),o=Xi(a),s=`0x`;if(r&&r.length>0){if(!i.inputs)throw new Jt(i.name,{docsPath:qp});s=Li(i.inputs,r)}return Ei([o,s])}var qp,Jp=o((()=>{sn(),Di(),Zi(),Yi(),Mt(),ea(),qp=`/docs/contract/encodeErrorResult`}));function Yp(e){let{abi:t,functionName:n,result:r}=e,i=t[0];if(n){let e=Qi({abi:t,name:n});if(!e)throw new Zt(n,{docsPath:Xp});i=e}if(i.type!==`function`)throw new Zt(void 0,{docsPath:Xp});if(!i.outputs)throw new Qt(i.name,{docsPath:Xp});let a=(()=>{if(i.outputs.length===0)return[];if(i.outputs.length===1)return[r];if(Array.isArray(r))return r;throw new an(r)})();return Li(i.outputs,a)}var Xp,Zp=o((()=>{sn(),Yi(),ea(),Xp=`/docs/contract/encodeFunctionResult`}));async function Qp(e){let{data:t,ccipRequest:n}=e,{args:[r]}=Wp({abi:dp,data:t}),i=[],a=[];return await Promise.all(r.map(async(e,t)=>{try{a[t]=e.urls.includes(`x-batch-gateway:true`)?await Qp({data:e.data,ccipRequest:n}):await n(e),i[t]=!1}catch(e){i[t]=!0,a[t]=$p(e)}})),Yp({abi:dp,functionName:`query`,result:[i,a]})}function $p(e){return e.name===`HttpRequestError`&&e.status?Kp({abi:dp,errorName:`HttpError`,args:[e.status,e.shortMessage]}):Kp({abi:[la],errorName:`Error`,args:[`shortMessage`in e?e.shortMessage:e.message]})}var em=o((()=>{hp(),da(),Gp(),Jp(),Zp()})),tm=c({ccipRequest:()=>rm,offchainLookup:()=>nm,offchainLookupAbiItem:()=>am,offchainLookupSignature:()=>im});async function nm(e,{blockNumber:t,blockTag:n,data:r,to:i}){let{args:a}=La({data:r,abi:[am]}),[o,s,c,l,u]=a,{ccipRead:d}=e,f=d&&typeof d?.request==`function`?d.request:rm;try{if(!Id(i,o))throw new Hp({sender:o,to:i});let r=s.includes(`x-batch-gateway:true`)?await Qp({data:c,ccipRequest:f}):await f({data:c,sender:o,urls:s}),{data:a}=await sm(e,{blockNumber:t,blockTag:n,data:wi([l,Li([{type:`bytes`},{type:`bytes`}],[r,u])]),to:i});return a}catch(e){throw new Bp({callbackSelector:l,cause:e,data:r,extraData:u,sender:o,urls:s})}}async function rm({data:e,sender:t,urls:n}){let r=Error(`An unknown error occurred.`);for(let i=0;i{pm(),Up(),Oo(),Ra(),Yi(),Ld(),Di(),Pt(),em(),Ba(),im=`0x556f1830`,am={name:`OffchainLookup`,type:`error`,inputs:[{name:`sender`,type:`address`},{name:`urls`,type:`string[]`},{name:`callData`,type:`bytes`},{name:`callbackFunction`,type:`bytes4`},{name:`extraData`,type:`bytes`}]}}));async function sm(e,t){let{account:n=e.account,authorizationList:r,batch:i=!!e.batch?.multicall,blockNumber:a,blockTag:o=e.experimental_blockTag??`latest`,accessList:s,blobs:c,blockOverrides:l,code:u,data:d,factory:f,factoryData:p,gas:m,gasPrice:h,maxFeePerBlobGas:g,maxFeePerGas:_,maxPriorityFeePerGas:v,nonce:y,to:b,value:x,stateOverride:S,...C}=t,w=n?ta(n):void 0;if(u&&(f||p))throw new D("Cannot provide both `code` & `factory`/`factoryData` as parameters.");if(u&&b)throw new D("Cannot provide both `code` & `to` as parameters.");let ee=u&&d,te=f&&p&&b&&d,ne=ee||te,re=(()=>ee?um({code:u,data:d}):te?dm({data:d,factory:f,factoryData:p,to:b}):d)();try{Zu(t);let n=(typeof a==`bigint`?k(a):void 0)||o,u=l?cp(l):void 0,d=Ku(S),f=e.chain?.formatters?.transactionRequest?.format,p=(f||zu)({...Fu(C,{format:f}),from:w?.address,accessList:s,authorizationList:r,blobs:c,data:re,gas:m,gasPrice:h,maxFeePerBlobGas:g,maxFeePerGas:_,maxPriorityFeePerGas:v,nonce:y,to:ne?void 0:b,value:x},`call`);if(i&&cm({request:p})&&!d&&!u)try{return await lm(e,{...p,blockNumber:a,blockTag:o})}catch(e){if(!(e instanceof Tp)&&!(e instanceof Sp))throw e}let ee=(()=>{let e=[p,n];return d&&u?[...e,d,u]:d?[...e,d]:u?[...e,{},u]:e})(),te=await e.request({method:`eth_call`,params:ee});return te===`0x`?{data:void 0}:{data:te}}catch(n){let r=fm(n),{offchainLookup:i,offchainLookupSignature:a}=await fs(async()=>{let{offchainLookup:e,offchainLookupSignature:t}=await Promise.resolve().then(()=>(om(),tm));return{offchainLookup:e,offchainLookupSignature:t}},void 0);if(e.ccipRead!==!1&&r?.slice(0,10)===a&&b)return{data:await i(e,{data:r,to:b})};throw ne&&r?.slice(0,10)===`0x101bb98d`?new So({factory:f}):Np(n,{...t,account:w,chain:e.chain})}}function cm({request:e}){let{data:t,to:n,...r}=e;return!(!t||t.startsWith(`0x82ad56cb`)||!n||Object.values(r).filter(e=>e!==void 0).length>0)}async function lm(e,t){let{batchSize:n=1024,deployless:r=!1,wait:i=0}=typeof e.batch?.multicall==`object`?e.batch.multicall:{},{blockNumber:a,blockTag:o=e.experimental_blockTag??`latest`,data:s,to:c}=t,l=(()=>{if(r)return null;if(t.multicallAddress)return t.multicallAddress;if(e.chain)return jp({blockNumber:a,chain:e.chain,contract:`multicall3`});throw new Tp})(),u=(typeof a==`bigint`?k(a):void 0)||o,{schedule:d}=Lp({id:`${e.uid}.${u}`,wait:i,shouldSplitBatch(e){return e.reduce((e,{data:t})=>e+(t.length-2),0)>n*2},fn:async t=>{let n=t.map(e=>({allowFailure:!0,callData:e.data,target:e.to})),r=oa({abi:up,args:[n],functionName:`aggregate3`}),i=await e.request({method:`eth_call`,params:[{...l===null?{data:um({code:bp,data:r})}:{to:l,data:r}},u]});return zd({abi:up,args:[n],functionName:`aggregate3`,data:i||`0x`})}}),[{returnData:f,success:p}]=await d({data:s,to:c});if(!p)throw new Co({data:f});return f===`0x`?{data:void 0}:{data:f}}function um(e){let{code:t,data:n}=e;return Op({abi:St([`constructor(bytes, bytes)`]),bytecode:_p,args:[t,n]})}function dm(e){let{data:t,factory:n,factoryData:r,to:i}=e;return Op({abi:St([`constructor(address, bytes, address, bytes)`]),bytecode:vp,args:[i,t,n,r]})}function fm(e){if(!(e instanceof D))return;let t=e.walk();return typeof t?.data==`object`?t.data?.data:t.data}var pm=o((()=>{Ot(),lp(),na(),hp(),gp(),xp(),O(),Dp(),wo(),Vd(),Ap(),sa(),Mp(),A(),Pp(),Iu(),Uu(),zp(),qu(),Qu(),ps()}));Vd(),sa(),pm();async function mm(e,t){let{abi:n,address:r,args:i,functionName:a,...o}=t,s=oa({abi:n,args:i,functionName:a});try{let{data:t}=await E(e,sm,`call`)({...o,data:s,to:r});return zd({abi:n,args:i,functionName:a,data:t||`0x`})}catch(e){throw ss(e,{abi:n,address:r,args:i,docsPath:`/docs/contract/readContract`,functionName:a})}}const hm=new Map,gm=new Map;var _m=0;function vm(e,t,n){let r=++_m,i=()=>hm.get(e)||[],a=()=>{let t=i();hm.set(e,t.filter(e=>e.id!==r))},o=()=>{let t=i();if(!t.some(e=>e.id===r))return;let n=gm.get(e);if(t.length===1&&n){let e=n();e instanceof Promise&&e.catch(()=>{})}a()},s=i();if(hm.set(e,[...s,{id:r,fns:t}]),s&&s.length>0)return o;let c={};for(let e in t)c[e]=((...t)=>{let n=i();if(n.length!==0)for(let r of n)r.fns[e]?.(...t)});let l=n(c);return typeof l==`function`&&gm.set(e,l),o}async function ym(e){return new Promise(t=>setTimeout(t,e))}function bm(e,{emitOnBegin:t,initialWaitTime:n,interval:r}){let i=!0,a=()=>i=!1;return(async()=>{let o;t&&(o=await e({unpoll:a}));let s=await n?.(o)??r;await ym(s);let c=async()=>{i&&(await e({unpoll:a}),await ym(r),c())};c()})(),a}const xm=new Map,Sm=new Map;function Cm(e){let t=(e,t)=>({clear:()=>t.delete(e),get:()=>t.get(e),set:n=>t.set(e,n)}),n=t(e,xm),r=t(e,Sm);return{clear:()=>{n.clear(),r.clear()},promise:n,response:r}}async function wm(e,{cacheKey:t,cacheTime:n=1/0}){let r=Cm(t),i=r.response.get();if(i&&n>0&&Date.now()-i.created.getTime()`blockNumber.${e}`;async function Em(e,{cacheTime:t=e.cacheTime}={}){let n=await wm(()=>e.request({method:`eth_blockNumber`}),{cacheKey:Tm(e.uid),cacheTime:t});return BigInt(n)}O();var Dm=class extends D{constructor({docsPath:e}={}){super([`Could not find an Account to execute with this Action.`,"Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."].join(` +`),{docsPath:e,docsSlug:`account`,name:`AccountNotFoundError`})}},Om=class extends D{constructor({docsPath:e,metaMessages:t,type:n}){super(`Account type "${n}" is not supported.`,{docsPath:e,metaMessages:t,name:`AccountTypeNotSupportedError`})}};Dp();function km({chain:e,currentChainId:t}){if(!e)throw new wp;if(t!==e.id)throw new Cp({chain:e,currentChainId:t})}ju(),mo(),Nu();function Am(e,{docsPath:t,...n}){let r=(()=>{let t=Mu(e,n);return t instanceof Au?e:t})();return new co(r,{docsPath:t,...n})}async function jm(e,{serializedTransaction:t}){return e.request({method:`eth_sendRawTransaction`,params:[t]},{retryCount:0})}na(),O(),Iu(),Uu(),hi(),Qu();var Mm=new mi(128);async function Nm(e,t){let{account:n=e.account,chain:r=e.chain,accessList:i,authorizationList:a,blobs:o,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,type:m,value:h,...g}=t;if(n===void 0)throw new Dm({docsPath:`/docs/actions/wallet/sendTransaction`});let _=n?ta(n):null;try{Zu(t);let n=await(async()=>{if(t.to)return t.to;if(t.to!==null&&a&&a.length>0)return await _u({authorization:a[0]}).catch(()=>{throw new D("`to` is required. Could not infer from `authorizationList`.")})})();if(_?.type===`json-rpc`||_===null){let t;r!==null&&(t=await E(e,jd,`getChainId`)({}),km({currentChainId:t,chain:r}));let v=e.chain?.formatters?.transactionRequest?.format,y=(v||zu)({...Fu(g,{format:v}),accessList:i,authorizationList:a,blobs:o,chainId:t,data:s,from:_?.address,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,to:n,type:m,value:h},`sendTransaction`),b=Mm.get(e.uid),x=b?`wallet_sendTransaction`:`eth_sendTransaction`;try{return await e.request({method:x,params:[y]},{retryCount:0})}catch(t){if(b===!1)throw t;let n=t;if(n.name===`InvalidInputRpcError`||n.name===`InvalidParamsRpcError`||n.name===`MethodNotFoundRpcError`||n.name===`MethodNotSupportedRpcError`)return await e.request({method:`wallet_sendTransaction`,params:[y]},{retryCount:0}).then(t=>(Mm.set(e.uid,!0),t)).catch(t=>{let r=t;throw r.name===`MethodNotFoundRpcError`||r.name===`MethodNotSupportedRpcError`?(Mm.set(e.uid,!1),n):r});throw n}}if(_?.type===`local`){let t=await E(e,Pd,`prepareTransactionRequest`)({account:_,accessList:i,authorizationList:a,blobs:o,chain:r,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,nonceManager:_.nonceManager,parameters:[...Md,`sidecars`],type:m,value:h,...g,to:n}),v=r?.serializers?.transaction,y=await _.signTransaction(t,{serializer:v});return await E(e,jm,`sendRawTransaction`)({serializedTransaction:y})}throw _?.type===`smart`?new Om({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:`/docs/actions/bundler/sendUserOperation`,type:`smart`}):new Om({docsPath:`/docs/actions/wallet/sendTransaction`,type:_?.type})}catch(e){throw e instanceof Om?e:Am(e,{...t,account:_,chain:t.chain||void 0})}}na(),sa();async function Pm(e,t){return Pm.internal(e,Nm,`sendTransaction`,t)}(function(e){async function t(e,t,n,r){let{abi:i,account:a=e.account,address:o,args:s,dataSuffix:c,functionName:l,...u}=r;if(a===void 0)throw new Dm({docsPath:`/docs/contract/writeContract`});let d=a?ta(a):null,f=oa({abi:i,args:s,functionName:l});try{return await E(e,t,n)({data:`${f}${c?c.replace(`0x`,``):``}`,to:o,account:d,...u})}catch(e){throw ss(e,{abi:i,address:o,args:s,docsPath:`/docs/contract/writeContract`,functionName:l,sender:d?.address})}}e.internal=t})(Pm||={}),O();var Fm=class extends D{constructor(e){super(`Call bundle failed with status: ${e.statusCode}`,{name:`BundleFailedError`}),Object.defineProperty(this,`result`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.result=e}};function Im(e,{delay:t=100,retryCount:n=2,shouldRetry:r=()=>!0}={}){return new Promise((i,a)=>{let o=async({count:s=0}={})=>{let c=async({error:e})=>{let n=typeof t==`function`?t({count:s,error:e}):t;n&&await ym(n),o({count:s+1})};try{let t=await e();i(t)}catch(e){if(sRd(e)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?En(e.transactionIndex):null,status:e.status?Lm[e.status]:null,type:e.type?rd[e.type]||e.type:null};return e.blobGasPrice&&(n.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(n.blobGasUsed=BigInt(e.blobGasUsed)),n}const zm=Lu(`transactionReceipt`,Rm);na(),O(),rs(),sa(),Di(),Dn(),A();const Bm=k(0,{size:32});async function Vm(e,t){let{account:n=e.account,capabilities:r,chain:i=e.chain,experimental_fallback:a,experimental_fallbackDelay:o=32,forceAtomic:s=!1,id:c,version:l=`2.0.0`}=t,u=n?ta(n):null,d=t.calls.map(e=>{let t=e,n=t.abi?oa({abi:t.abi,functionName:t.functionName,args:t.args}):t.data;return{data:t.dataSuffix&&n?wi([n,t.dataSuffix]):n,to:t.to,value:t.value?k(t.value):void 0}});try{let t=await e.request({method:`wallet_sendCalls`,params:[{atomicRequired:s,calls:d,capabilities:r,chainId:k(i.id),from:u?.address,id:c,version:l}]},{retryCount:0});return typeof t==`string`?{id:t}:t}catch(n){let c=n;if(a&&(c.name===`MethodNotFoundRpcError`||c.name===`MethodNotSupportedRpcError`||c.name===`UnknownRpcError`||c.details.toLowerCase().includes(`does not exist / is not available`)||c.details.toLowerCase().includes(`missing or invalid. request()`)||c.details.toLowerCase().includes(`did not match any variant of untagged enum`)||c.details.toLowerCase().includes(`account upgraded to unsupported contract`)||c.details.toLowerCase().includes(`eip-7702 not supported`)||c.details.toLowerCase().includes(`unsupported wc_ method`)||c.details.toLowerCase().includes(`feature toggled misconfigured`)||c.details.toLowerCase().includes(`jsonrpcengine: response has no error or result for request`))){if(r&&Object.values(r).some(e=>!e.optional)){let e="non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.";throw new Yo(new D(e,{details:e}))}if(s&&d.length>1){let e="`forceAtomic` is not supported on fallback to `eth_sendTransaction`.";throw new ts(new D(e,{details:e}))}let t=[];for(let n of d){let r=Nm(e,{account:u,chain:i,data:n.data,to:n.to,value:n.value?wn(n.value):void 0});t.push(r),o>0&&await new Promise(e=>setTimeout(e,o))}let n=await Promise.allSettled(t);if(n.every(e=>e.status===`rejected`))throw n[0].reason;let a=n.map(e=>e.status===`fulfilled`?e.value:Bm);return{id:wi([...a,k(i.id,{size:32}),`0x5792579257925792579257925792579257925792579257925792579257925792`])}}throw Am(n,{...t,account:u,chain:t.chain})}}Ni(),Sn(),Dn();async function Hm(e,t){async function n(t){if(t.endsWith(`5792579257925792579257925792579257925792579257925792579257925792`)){let n=xn(Mi(t,-64,-32)),r=Mi(t,0,-64).slice(2).match(/.{1,64}/g),i=await Promise.all(r.map(t=>Bm.slice(2)===t?void 0:e.request({method:`eth_getTransactionReceipt`,params:[`0x${t}`]},{dedupe:!0}))),a=(()=>i.some(e=>e===null)?100:i.every(e=>e?.status===`0x1`)?200:i.every(e=>e?.status===`0x0`)?500:600)();return{atomic:!1,chainId:En(n),receipts:i.filter(Boolean),status:a,version:`2.0.0`}}return e.request({method:`wallet_getCallsStatus`,params:[t]})}let{atomic:r=!1,chainId:i,receipts:a,version:o=`2.0.0`,...s}=await n(t.id),[c,l]=(()=>{let e=s.status;return e>=100&&e<200?[`pending`,e]:e>=200&&e<300?[`success`,e]:e>=300&&e<700?[`failure`,e]:e===`CONFIRMED`?[`success`,200]:e===`PENDING`?[`pending`,100]:[void 0,e]})();return{...s,atomic:r,chainId:i?En(i):void 0,receipts:a?.map(e=>({...e,blockNumber:wn(e.blockNumber),gasUsed:wn(e.gasUsed),status:Lm[e.status]}))??[],statusCode:l,status:c,version:o}}O(),Ip(),Ba();async function Um(e,t){let{id:n,pollingInterval:r=e.pollingInterval,status:i=({statusCode:e})=>e===200||e>=300,retryCount:a=4,retryDelay:o=({count:e})=>~~(1<{let s=bm(async()=>{let r=e=>{clearTimeout(p),s(),e(),m()};try{let s=await Im(async()=>{let t=await E(e,Hm,`getCallsStatus`)({id:n});if(c&&t.status===`failure`)throw new Fm(t);return t},{retryCount:a,delay:o});if(!i(s))return;r(()=>t.resolve(s))}catch(e){r(()=>t.reject(e))}},{interval:r,emitOnBegin:!0});return s});return p=s?setTimeout(()=>{m(),clearTimeout(p),f(new Wm({id:n}))},s):void 0,await u}var Wm=class extends D{constructor({id:e}){super(`Timed out while waiting for call bundle with id "${e}" to be confirmed.`,{name:`WaitForCallsStatusTimeoutError`})}},Gm=256,Km=Gm,qm;function Jm(e=11){if(!qm||Km+e>Gm*2){qm=``,Km=0;for(let e=0;e{let n=t(e);for(let e in _)delete n[e];let r={...e,...n};return Object.assign(r,{extend:v(r)})}}return Object.assign(_,{extend:v(_)})}A();async function Xm(e,{address:t,blockNumber:n,blockTag:r=`latest`}){let i=n===void 0?void 0:k(n),a=await e.request({method:`eth_getCode`,params:[t,i||r]},{dedupe:!!i});if(a!==`0x`)return a}O();var Zm=class extends D{constructor({address:e}){super(`No EIP-712 domain found on contract "${e}".`,{metaMessages:[`Ensure that:`,`- The contract is deployed at the address "${e}".`,"- `eip712Domain()` function exists on the contract.","- `eip712Domain()` function matches signature to ERC-5267 specification."],name:`Eip712DomainNotFoundError`})}};async function Qm(e,t){let{address:n,factory:r,factoryData:i}=t;try{let[t,a,o,s,c,l,u]=await E(e,mm,`readContract`)({abi:$m,address:n,functionName:`eip712Domain`,factory:r,factoryData:i});return{domain:{name:a,version:o,chainId:Number(s),verifyingContract:c,salt:l},extensions:u,fields:t}}catch(e){let t=e;throw t.name===`ContractFunctionExecutionError`&&t.cause.name===`ContractFunctionZeroDataError`?new Zm({address:n}):t}}var $m=[{inputs:[],name:`eip712Domain`,outputs:[{name:`fields`,type:`bytes1`},{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`},{name:`salt`,type:`bytes32`},{name:`extensions`,type:`uint256[]`}],stateMutability:`view`,type:`function`}];Xu(),pi(),O(),Dp(),ju(),Ci(),It(),Ni(),Dn();function eh(e){let{authorizationList:t}=e;if(t)for(let e of t){let{chainId:t}=e,n=e.address;if(!bi(n))throw new fi({address:n});if(t<0)throw new Ep({chainId:t})}nh(e)}function th(e){let{blobVersionedHashes:t}=e;if(t){if(t.length===0)throw new Td;for(let e of t){let t=Ft(e),n=En(Oi(e,0,1));if(t!==32)throw new Ed({hash:e,size:t});if(n!==1)throw new Dd({hash:e,version:n})}}nh(e)}function nh(e){let{chainId:t,maxPriorityFeePerGas:n,maxFeePerGas:r,to:i}=e;if(t<=0)throw new Ep({chainId:t});if(i&&!bi(i))throw new fi({address:i});if(r&&r>Yu)throw new bu({maxFeePerGas:r});if(n&&r&&n>r)throw new ku({maxFeePerGas:r,maxPriorityFeePerGas:n})}function rh(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:r,maxFeePerGas:i,to:a}=e;if(t<=0)throw new Ep({chainId:t});if(a&&!bi(a))throw new fi({address:a});if(n||i)throw new D("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(r&&r>Yu)throw new bu({maxFeePerGas:r})}function ih(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:r,maxFeePerGas:i,to:a}=e;if(a&&!bi(a))throw new fi({address:a});if(t!==void 0&&t<=0)throw new Ep({chainId:t});if(n||i)throw new D("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(r&&r>Yu)throw new bu({maxFeePerGas:r})}pi(),mo(),Ci();function ah(e){if(!e||e.length===0)return[];let t=[];for(let n=0;nAn(e)),n=e.kzg,r=md({blobs:t,kzg:n});if(f===void 0&&(f=yd({commitments:r})),p===void 0){let e=hd({blobs:t,commitments:r,kzg:n});p=kd({blobs:t,commitments:r,proofs:e})}}let m=ah(u),h=[k(n),i?k(i):`0x`,l?k(l):`0x`,c?k(c):`0x`,r?k(r):`0x`,a??`0x`,o?k(o):`0x`,d??`0x`,m,s?k(s):`0x`,f??[],...fh(e,t)],g=[],_=[],v=[];if(p)for(let e=0;e{if(t.v>=35n)return(t.v-35n)/2n>0?t.v:27n+(t.v===35n?0n:1n);if(n>0)return BigInt(n*2)+BigInt(35n+t.v-27n);let e=27n+(t.v===27n?0n:1n);if(t.v!==e)throw new ao({v:t.v});return e})(),r=xn(t.r),i=xn(t.s);l=[...l,k(e),r===`0x00`?`0x`:r,i===`0x00`?`0x`:i]}else n>0&&(l=[...l,k(n),`0x`,`0x`]);return N(l)}function fh(e,t){let n=t??e,{v:r,yParity:i}=n;if(n.r===void 0||n.s===void 0||r===void 0&&i===void 0)return[];let a=xn(n.r),o=xn(n.s);return[(()=>typeof i==`number`?i?k(1):`0x`:r===0n?`0x`:r===1n?k(1):r===27n?`0x`:k(1))(),a===`0x00`?`0x`:a,o===`0x00`?`0x`:o]}A();function ph(e){if(!e||e.length===0)return[];let t=[];for(let n of e){let{chainId:e,nonce:r,...i}=n,a=n.address;t.push([e?On(e):`0x`,a,r?On(r):`0x`,...fh({},i)])}return t}yi(),Ld();async function mh({address:e,authorization:t,signature:n}){return Id(_i(e),await _u({authorization:t,signature:n}))}hi();const hh=new mi(8192);function gh(e,{enabled:t=!0,id:n}){if(!t||!n)return e();if(hh.get(n))return hh.get(n);let r=e().finally(()=>hh.delete(n));return hh.set(n,r),r}O(),Oo(),rs(),A(),Ba();function _h(e,t={}){return async(n,r={})=>{let{dedupe:i=!1,methods:a,retryDelay:o=150,retryCount:s=3,uid:c}={...t,...r},{method:l}=n;if(a?.exclude?.includes(l)||a?.include&&!a.include.includes(l))throw new Bo(Error(`method not supported`),{method:l});let u=i?jn(`${c}.${za(n)}`):void 0;return gh(()=>Im(async()=>{try{return await e(n)}catch(e){let t=e;switch(t.code){case Mo.code:throw new Mo(t);case M.code:throw new M(t);case No.code:throw new No(t,{method:n.method});case Po.code:throw new Po(t);case Fo.code:throw new Fo(t);case Io.code:throw new Io(t);case Lo.code:throw new Lo(t);case Ro.code:throw new Ro(t);case zo.code:throw new zo(t);case Bo.code:throw new Bo(t,{method:n.method});case Vo.code:throw new Vo(t);case Ho.code:throw new Ho(t);case Uo.code:throw new Uo(t);case Wo.code:throw new Wo(t);case Go.code:throw new Go(t);case Ko.code:throw new Ko(t);case qo.code:throw new qo(t);case Jo.code:throw new Jo(t);case Yo.code:throw new Yo(t);case Xo.code:throw new Xo(t);case Zo.code:throw new Zo(t);case Qo.code:throw new Qo(t);case $o.code:throw new $o(t);case es.code:throw new es(t);case ts.code:throw new ts(t);case 5e3:throw new Uo(t);default:throw e instanceof D?e:new ns(t)}}},{delay:({count:e,error:t})=>{if(t&&t instanceof To){let e=t?.headers?.get(`Retry-After`);if(e?.match(/\d/))return Number.parseInt(e,10)*1e3}return~~(1<vh(e)}),{enabled:i,id:u})}}function vh(e){return`code`in e&&typeof e.code==`number`?e.code===-1||e.code===Vo.code||e.code===Fo.code:e instanceof To&&e.status?e.status===403||e.status===408||e.status===413||e.status===429||e.status===500||e.status===502||e.status===503||e.status===504:!0}function R(e){return{formatters:void 0,fees:void 0,serializers:void 0,...e}}function yh(e,{errorInstance:t=Error(`timed out`),timeout:n,signal:r}){return new Promise((i,a)=>{(async()=>{let o;try{let s=new AbortController;n>0&&(o=setTimeout(()=>{r?s.abort():a(t)},n)),i(await e({signal:s?.signal||null}))}catch(e){e?.name===`AbortError`&&a(t),a(e)}finally{clearTimeout(o)}})()})}function bh(){return{current:0,take(){return this.current++},reset(){this.current=0}}}const xh=bh();Oo(),Ba();function Sh(e,t={}){return{async request(n){let{body:r,fetchFn:i=t.fetchFn??fetch,onRequest:a=t.onRequest,onResponse:o=t.onResponse,timeout:s=t.timeout??1e4}=n,c={...t.fetchOptions??{},...n.fetchOptions??{}},{headers:l,method:u,signal:d}=c;try{let t=await yh(async({signal:t})=>{let n={...c,body:za(Array.isArray(r)?r.map(e=>({jsonrpc:`2.0`,id:e.id??xh.take(),...e})):{jsonrpc:`2.0`,id:r.id??xh.take(),...r}),headers:{"Content-Type":`application/json`,...l},method:u||`POST`,signal:d||(s>0?t:null)},o=new Request(e,n),f=await a?.(o,n)??{...n,url:e};return await i(f.url??e,f)},{errorInstance:new Do({body:r,url:e}),timeout:s,signal:!0});o&&await o(t);let n;if(t.headers.get(`Content-Type`)?.startsWith(`application/json`))n=await t.json();else{n=await t.text();try{n=JSON.parse(n||`{}`)}catch(e){if(t.ok)throw e;n={error:n}}}if(!t.ok)throw new To({body:r,details:za(n.error)||t.statusText,headers:t.headers,status:t.status,url:e});return n}catch(t){throw t instanceof To||t instanceof Do?t:new To({body:r,cause:t,url:e})}}}}Di(),It(),A();function Ch(e){let t=(()=>typeof e==`string`?jn(e):typeof e.raw==`string`?e.raw:An(e.raw))(),n=jn(`Ethereum Signed Message: +${Ft(t)}`);return wi([n,t])}ei();function wh(e,t){return $r(Ch(e),t)}Ba(),O();var Th=class extends D{constructor({domain:e}){super(`Invalid domain "${za(e)}".`,{metaMessages:[`Must be a valid EIP-712 domain.`]})}},Eh=class extends D{constructor({primaryType:e,types:t}){super(`Invalid primary type \`${e}\` must be one of \`${JSON.stringify(Object.keys(t))}\`.`,{docsPath:`/api/glossary/Errors#typeddatainvalidprimarytypeerror`,metaMessages:["Check that the primary type is a key in `types`."]})}},Dh=class extends D{constructor({type:e}){super(`Struct type "${e}" is invalid.`,{metaMessages:[`Struct type must not be a Solidity type.`],name:`InvalidStructTypeError`})}};sn(),pi(),Ci(),It(),A(),Ii(),Ba();function Oh(e){let{domain:t,message:n,primaryType:r,types:i}=e,a=(e,t)=>{let n={...t};for(let t of e){let{name:e,type:r}=t;r===`address`&&(n[e]=n[e].toLowerCase())}return n},o=(()=>!i.EIP712Domain||!t?{}:a(i.EIP712Domain,t))(),s=(()=>{if(r!==`EIP712Domain`)return a(i[r],n)})();return za({domain:o,message:s,primaryType:r,types:i})}function kh(e){let{domain:t,message:n,primaryType:r,types:i}=e,a=(e,t)=>{for(let n of e){let{name:e,type:r}=n,o=t[e],s=r.match(Fi);if(s&&(typeof o==`number`||typeof o==`bigint`)){let[e,t,n]=s;k(o,{signed:t===`int`,size:Number.parseInt(n,10)/8})}if(r===`address`&&typeof o==`string`&&!bi(o))throw new fi({address:o});let c=r.match(Pi);if(c){let[e,t]=c;if(t&&Ft(o)!==Number.parseInt(t,10))throw new tn({expectedSize:Number.parseInt(t,10),givenSize:Ft(o)})}let l=i[r];l&&(jh(r),a(l,o))}};if(i.EIP712Domain&&t){if(typeof t!=`object`)throw new Th({domain:t});a(i.EIP712Domain,t)}if(r!==`EIP712Domain`)if(i[r])a(i[r],n);else throw new Eh({primaryType:r,types:i})}function Ah({domain:e}){return[typeof e?.name==`string`&&{name:`name`,type:`string`},e?.version&&{name:`version`,type:`string`},(typeof e?.chainId==`number`||typeof e?.chainId==`bigint`)&&{name:`chainId`,type:`uint256`},e?.verifyingContract&&{name:`verifyingContract`,type:`address`},e?.salt&&{name:`salt`,type:`bytes32`}].filter(Boolean)}function jh(e){if(e===`address`||e===`bool`||e===`string`||e.startsWith(`bytes`)||e.startsWith(`uint`)||e.startsWith(`int`))throw new Dh({type:e})}Yi(),Di(),A(),ei();function Mh(e){let{domain:t={},message:n,primaryType:r}=e,i={EIP712Domain:Ah({domain:t}),...e.types};kh({domain:t,message:n,primaryType:r,types:i});let a=[`0x1901`];return t&&a.push(Nh({domain:t,types:i})),r!==`EIP712Domain`&&a.push(Ph({data:n,primaryType:r,types:i})),$r(wi(a))}function Nh({domain:e,types:t}){return Ph({data:e,primaryType:`EIP712Domain`,types:t})}function Ph({data:e,primaryType:t,types:n}){let r=Fh({data:e,primaryType:t,types:n});return $r(r)}function Fh({data:e,primaryType:t,types:n}){let r=[{type:`bytes32`}],i=[Ih({primaryType:t,types:n})];for(let a of n[t]){let[t,o]=zh({types:n,name:a.name,type:a.type,value:e[a.name]});r.push(t),i.push(o)}return Li(r,i)}function Ih({primaryType:e,types:t}){let n=On(Lh({primaryType:e,types:t}));return $r(n)}function Lh({primaryType:e,types:t}){let n=``,r=Rh({primaryType:e,types:t});r.delete(e);let i=[e,...Array.from(r).sort()];for(let e of i)n+=`${e}(${t[e].map(({name:e,type:t})=>`${t} ${e}`).join(`,`)})`;return n}function Rh({primaryType:e,types:t},n=new Set){let r=e.match(/^\w*/u)?.[0];if(n.has(r)||t[r]===void 0)return n;n.add(r);for(let e of t[r])Rh({primaryType:e.type,types:t},n);return n}function zh({types:e,name:t,type:n,value:r}){if(e[n]!==void 0)return[{type:`bytes32`},$r(Fh({data:r,primaryType:n,types:e}))];if(n===`bytes`)return r=`0x${(r.length%2?`0`:``)+r.slice(2)}`,[{type:`bytes32`},$r(r)];if(n===`string`)return[{type:`bytes32`},$r(On(r))];if(n.lastIndexOf(`]`)===n.length-1){let i=n.slice(0,n.lastIndexOf(`[`)),a=r.map(n=>zh({name:t,type:i,types:e,value:n}));return[{type:`bytes32`},$r(Li(a.map(([e])=>e),a.map(([,e])=>e)))]}return[{type:n},r]}const Bh={checksum:new class extends Map{constructor(e){super(),Object.defineProperty(this,`maxSize`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&t!==void 0&&(this.delete(e),super.set(e,t)),t}set(e,t){if(super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=this.keys().next().value;e&&this.delete(e)}return this}}(8192)}.checksum;Qr(),If(),ap();function Vh(e,t={}){let{as:n=typeof e==`string`?`Hex`:`Bytes`}=t,r=Zr(mf(e));return n===`Bytes`?r:Vf(r)}function Hh(e,t={}){let{as:n=typeof e==`string`?`Hex`:`Bytes`}=t,r=gd(mf(e));return n===`Bytes`?r:Vf(r)}If(),qd(),ap(),ff();function Uh(e,t={}){let{compressed:n}=t,{prefix:r,x:i,y:a}=e;if(n===!1||typeof i==`bigint`&&typeof a==`bigint`){if(r!==4)throw new Yh({prefix:r,cause:new Zh});return}if(n===!0||typeof i==`bigint`&&a===void 0){if(r!==3&&r!==2)throw new Yh({prefix:r,cause:new Xh});return}throw new Jh({publicKey:e})}function Wh(e){let t=(()=>{if(Xf(e))return Kh(e);if(Of(e))return Gh(e);let{prefix:t,x:n,y:r}=e;return typeof n==`bigint`&&typeof r==`bigint`?{prefix:t??4,x:n,y:r}:{prefix:t,x:n}})();return Uh(t),t}function Gh(e){return Kh(Vf(e))}function Kh(e){if(e.length!==132&&e.length!==130&&e.length!==68)throw new Qh({publicKey:e});if(e.length===130){let t=BigInt(Gf(e,0,32)),n=BigInt(Gf(e,32,64));return{prefix:4,x:t,y:n}}if(e.length===132){let t=Number(Gf(e,0,1)),n=BigInt(Gf(e,1,33)),r=BigInt(Gf(e,33,65));return{prefix:t,x:n,y:r}}let t=Number(Gf(e,0,1)),n=BigInt(Gf(e,1,33));return{prefix:t,x:n}}function qh(e,t={}){Uh(e);let{prefix:n,x:r,y:i}=e,{includePrefix:a=!0}=t;return Rf(a?L(n,{size:1}):`0x`,L(r,{size:32}),typeof i==`bigint`?L(i,{size:32}):`0x`)}var Jh=class extends F{constructor({publicKey:e}){super(`Value \`${uf(e)}\` is not a valid public key.`,{metaMessages:[`Public key must contain:`,"- an `x` and `prefix` value (compressed)","- an `x`, `y`, and `prefix` value (uncompressed)"]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidError`})}},Yh=class extends F{constructor({prefix:e,cause:t}){super(`Prefix "${e}" is invalid.`,{cause:t}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidPrefixError`})}},Xh=class extends F{constructor(){super(`Prefix must be 2 or 3 for compressed public keys.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidCompressedPrefixError`})}},Zh=class extends F{constructor(){super(`Prefix must be 4 for uncompressed public keys.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidUncompressedPrefixError`})}},Qh=class extends F{constructor({publicKey:e}){super(`Value \`${e}\` is an invalid public key size.`,{metaMessages:[`Expected: 33 bytes (compressed + prefix), 64 bytes (uncompressed) or 65 bytes (uncompressed + prefix).`,`Received ${Kf(zf(e))} bytes.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidSerializedSizeError`})}};If(),qd();var $h=/^0x[a-fA-F0-9]{40}$/;function eg(e,t={}){let{strict:n=!0}=t;if(!$h.test(e))throw new og({address:e,cause:new sg});if(n){if(e.toLowerCase()===e)return;if(tg(e)!==e)throw new og({address:e,cause:new cg})}}function tg(e){if(Bh.has(e))return Bh.get(e);eg(e,{strict:!1});let t=e.substring(2).toLowerCase(),n=Vh(_f(t),{as:`Bytes`}),r=t.split(``);for(let e=0;e<40;e+=2)n[e>>1]>>4>=8&&r[e]&&(r[e]=r[e].toUpperCase()),(n[e>>1]&15)>=8&&r[e+1]&&(r[e+1]=r[e+1].toUpperCase());let i=`0x${r.join(``)}`;return Bh.set(e,i),i}function ng(e,t={}){let{checksum:n=!1}=t;return eg(e),n?tg(e):e}function rg(e,t={}){let n=Vh(`0x${qh(e).slice(4)}`).substring(26);return ng(`0x${n}`,t)}function ig(e,t){return eg(e,{strict:!1}),eg(t,{strict:!1}),e.toLowerCase()===t.toLowerCase()}function ag(e,t={}){let{strict:n=!0}=t??{};try{return eg(e,{strict:n}),!0}catch{return!1}}var og=class extends F{constructor({address:e,cause:t}){super(`Address "${e}" is invalid.`,{cause:t}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Address.InvalidAddressError`})}},sg=class extends F{constructor(){super(`Address is not a 20 byte (40 hexadecimal character) value.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Address.InvalidInputError`})}},cg=class extends F{constructor(){super(`Address does not match its checksum counterpart.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Address.InvalidChecksumError`})}};const lg=/^(.*)\[([0-9]*)\]$/,ug=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,dg=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;2n**(8n-1n)-1n,2n**(16n-1n)-1n,2n**(24n-1n)-1n,2n**(32n-1n)-1n,2n**(40n-1n)-1n,2n**(48n-1n)-1n,2n**(56n-1n)-1n,2n**(64n-1n)-1n,2n**(72n-1n)-1n,2n**(80n-1n)-1n,2n**(88n-1n)-1n,2n**(96n-1n)-1n,2n**(104n-1n)-1n,2n**(112n-1n)-1n,2n**(120n-1n)-1n,2n**(128n-1n)-1n,2n**(136n-1n)-1n,2n**(144n-1n)-1n,2n**(152n-1n)-1n,2n**(160n-1n)-1n,2n**(168n-1n)-1n,2n**(176n-1n)-1n,2n**(184n-1n)-1n,2n**(192n-1n)-1n,2n**(200n-1n)-1n,2n**(208n-1n)-1n,2n**(216n-1n)-1n,2n**(224n-1n)-1n,2n**(232n-1n)-1n,2n**(240n-1n)-1n,2n**(248n-1n)-1n,2n**(256n-1n)-1n,-(2n**(8n-1n)),-(2n**(16n-1n)),-(2n**(24n-1n)),-(2n**(32n-1n)),-(2n**(40n-1n)),-(2n**(48n-1n)),-(2n**(56n-1n)),-(2n**(64n-1n)),-(2n**(72n-1n)),-(2n**(80n-1n)),-(2n**(88n-1n)),-(2n**(96n-1n)),-(2n**(104n-1n)),-(2n**(112n-1n)),-(2n**(120n-1n)),-(2n**(128n-1n)),-(2n**(136n-1n)),-(2n**(144n-1n)),-(2n**(152n-1n)),-(2n**(160n-1n)),-(2n**(168n-1n)),-(2n**(176n-1n)),-(2n**(184n-1n)),-(2n**(192n-1n)),-(2n**(200n-1n)),-(2n**(208n-1n)),-(2n**(216n-1n)),-(2n**(224n-1n)),-(2n**(232n-1n)),-(2n**(240n-1n)),-(2n**(248n-1n)),-(2n**(256n-1n));const fg=2n**256n-1n;If(),qd(),ap();function pg(e,t,n){let{checksumAddress:r,staticPosition:i}=n,a=Ng(t.type);if(a){let[n,o]=a;return _g(e,{...t,type:o},{checksumAddress:r,length:n,staticPosition:i})}if(t.type===`tuple`)return xg(e,t,{checksumAddress:r,staticPosition:i});if(t.type===`address`)return gg(e,{checksum:r});if(t.type===`bool`)return vg(e);if(t.type.startsWith(`bytes`))return yg(e,t,{staticPosition:i});if(t.type.startsWith(`uint`)||t.type.startsWith(`int`))return bg(e,t);if(t.type===`string`)return Sg(e,{staticPosition:i});throw new Xg(t.type)}var mg=32,hg=32;function gg(e,t={}){let{checksum:n=!1}=t,r=e.readBytes(32);return[(e=>n?tg(e):e)(Vf(bf(r,-20))),32]}function _g(e,t,n){let{checksumAddress:r,length:i,staticPosition:a}=n;if(!i){let n=wf(e.readBytes(hg)),i=a+n,o=i+mg;e.setPosition(i);let s=wf(e.readBytes(mg)),c=Pg(t),l=0,u=[];for(let n=0;n48?xf(i,{signed:n}):wf(i,{signed:n}),32]}function xg(e,t,n){let{checksumAddress:r,staticPosition:i}=n,a=t.components.length===0||t.components.some(({name:e})=>!e),o=a?[]:{},s=0;if(Pg(t)){let n=wf(e.readBytes(hg)),c=i+n;for(let n=0;n0?Rf(t,e):t}}if(o)return{dynamic:!0,encoded:e}}return{dynamic:!1,encoded:Rf(...s.map(({encoded:e})=>e))}}function Og(e,{type:t}){let[,n]=t.split(`bytes`),r=Kf(e);if(!n){let t=e;return r%32!=0&&(t=Wf(t,Math.ceil((e.length-2)/2/32)*32)),{dynamic:!0,encoded:Rf(Uf(L(r,{size:32})),t)}}if(r!==Number.parseInt(n,10))throw new qg({expectedSize:Number.parseInt(n,10),value:e});return{dynamic:!1,encoded:Wf(e)}}function kg(e){if(typeof e!=`boolean`)throw new F(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:Uf(Bf(e))}}function Ag(e,{signed:t,size:n}){if(typeof n==`number`){let r=2n**(BigInt(n)-(t?1n:0n))-1n,i=t?-r-1n:0n;if(e>r||ee))}}function Ng(e){let t=e.match(/^(.*)\[(\d+)?\]$/);return t?[t[2]?Number(t[2]):null,t[1]]:void 0}function Pg(e){let{type:t}=e;if(t===`string`||t===`bytes`||t.endsWith(`[]`))return!0;if(t===`tuple`)return e.components?.some(Pg);let n=Ng(e.type);return!!(n&&Pg({...e,type:n[1]}))}qd();var Fg={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:1/0,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new zg({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new Rg({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new Lg({offset:e});let t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new Lg({offset:e});let t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){let n=t??this.position;return this.assertPosition(n+e-1),this.bytes.subarray(n,n+e)},inspectUint8(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){let t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){let t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){let t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,e&255),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();let e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();let n=this.inspectBytes(e);return this.position+=t??e,n},readUint8(){this.assertReadLimit(),this._touch();let e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();let e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();let e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();let e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){let t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===1/0)return;let e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}};function Ig(e,{recursiveReadLimit:t=8192}={}){let n=Object.create(Fg);return n.bytes=e,n.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}var Lg=class extends F{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Cursor.NegativeOffsetError`})}},Rg=class extends F{constructor({length:e,position:t}){super(`Position \`${t}\` is out of bounds (\`0 < position < ${e}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Cursor.PositionOutOfBoundsError`})}},zg=class extends F{constructor({count:e,limit:t}){super(`Recursive read limit of \`${t}\` exceeded (recursive read count: \`${e}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Cursor.RecursiveReadLimitExceededError`})}};Ot(),If(),qd(),ap();function Bg(e,t,n={}){let{as:r=`Array`,checksumAddress:i=!1}=n,a=typeof t==`string`?gf(t):t,o=Ig(a);if(yf(a)===0&&e.length>0)throw new Gg;if(yf(a)&&yf(a)<32)throw new Wg({data:typeof t==`string`?t:Vf(t),parameters:e,size:yf(a)});let s=0,c=r===`Array`?[]:{};for(let t=0;t$g(e))):t_(e)}function e_(e){let t=e.reduce((e,t)=>e+t.length,0),n=n_(t);return{length:(()=>t<=55?1+t:1+n+t)(),encode(r){t<=55?r.pushByte(192+t):(r.pushByte(247+n),n===1?r.pushUint8(t):n===2?r.pushUint16(t):n===3?r.pushUint24(t):r.pushUint32(t));for(let{encode:t}of e)t(r)}}}function t_(e){let t=typeof e==`string`?gf(e):e,n=n_(t.length);return{length:(()=>t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+n+t.length)(),encode(e){t.length===1&&t[0]<128?e.pushBytes(t):t.length<=55?(e.pushByte(128+t.length),e.pushBytes(t)):(e.pushByte(183+n),n===1?e.pushUint8(t.length):n===2?e.pushUint16(t.length):n===3?e.pushUint24(t.length):e.pushUint32(t.length),e.pushBytes(t))}}}function n_(e){if(e<2**8)return 1;if(e<2**16)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new F(`Length is too large.`)}qd(),ap(),ff();function r_(e,t={}){let{recovered:n}=t;if(e.r===void 0||e.s===void 0||n&&e.yParity===void 0)throw new h_({signature:e});if(e.r<0n||e.r>fg)throw new g_({value:e.r});if(e.s<0n||e.s>fg)throw new __({value:e.s});if(typeof e.yParity==`number`&&e.yParity!==0&&e.yParity!==1)throw new v_({value:e.yParity})}function i_(e){return a_(Vf(e))}function a_(e){if(e.length!==130&&e.length!==132)throw new m_({signature:e});let t=BigInt(Gf(e,0,32)),n=BigInt(Gf(e,32,64)),r=(()=>{let t=Number(`0x${e.slice(130)}`);if(!Number.isNaN(t))try{return f_(t)}catch{throw new v_({value:t})}})();return r===void 0?{r:t,s:n}:{r:t,s:n,yParity:r}}function o_(e){if(e.r!==void 0&&e.s!==void 0)return s_(e)}function s_(e){let t=(()=>typeof e==`string`?a_(e):e instanceof Uint8Array?i_(e):typeof e.r==`string`?l_(e):e.v?c_(e):{r:e.r,s:e.s,...e.yParity===void 0?{}:{yParity:e.yParity}})();return r_(t),t}function c_(e){return{r:e.r,s:e.s,yParity:f_(e.v)}}function l_(e){let t=(()=>{let t=e.v?Number(e.v):void 0,n=e.yParity?Number(e.yParity):void 0;if(typeof t==`number`&&typeof n!=`number`&&(n=f_(t)),typeof n!=`number`)throw new v_({value:e.yParity});return n})();return{r:BigInt(e.r),s:BigInt(e.s),yParity:t}}function u_(e){r_(e);let t=e.r,n=e.s;return Rf(L(t,{size:32}),L(n,{size:32}),typeof e.yParity==`number`?L(p_(e.yParity),{size:1}):`0x`)}function d_(e){let{r:t,s:n,yParity:r}=e;return[r?`0x01`:`0x`,t===0n?`0x`:qf(L(t)),n===0n?`0x`:qf(L(n))]}function f_(e){if(e===0||e===27)return 0;if(e===1||e===28)return 1;if(e>=35)return e%2==0?1:0;throw new y_({value:e})}function p_(e){if(e===0)return 27;if(e===1)return 28;throw new v_({value:e})}var m_=class extends F{constructor({signature:e}){super(`Value \`${e}\` is an invalid signature size.`,{metaMessages:[`Expected: 64 bytes or 65 bytes.`,`Received ${Kf(zf(e))} bytes.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidSerializedSizeError`})}},h_=class extends F{constructor({signature:e}){super(`Signature \`${uf(e)}\` is missing either an \`r\`, \`s\`, or \`yParity\` property.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.MissingPropertiesError`})}},g_=class extends F{constructor({value:e}){super(`Value \`${e}\` is an invalid r value. r must be a positive integer less than 2^256.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidRError`})}},__=class extends F{constructor({value:e}){super(`Value \`${e}\` is an invalid s value. s must be a positive integer less than 2^256.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidSError`})}},v_=class extends F{constructor({value:e}){super(`Value \`${e}\` is an invalid y-parity value. Y-parity must be 0 or 1.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidYParityError`})}},y_=class extends F{constructor({value:e}){super(`Value \`${e}\` is an invalid v value. v must be 27, 28 or >=35.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidVError`})}};ap();function b_(e,t={}){return typeof e.chainId==`string`?x_(e):{...e,...t.signature}}function x_(e){let{address:t,chainId:n,nonce:r}=e,i=o_(e);return{address:t,chainId:Number(n),nonce:BigInt(r),...i}}function S_(e){return C_(e,{presign:!0})}function C_(e,t={}){let{presign:n}=t;return Vh(Rf(`0x05`,Qg(w_(n?{address:e.address,chainId:e.chainId,nonce:e.nonce}:e))))}function w_(e){let{address:t,chainId:n,nonce:r}=e,i=o_(e);return[n?L(n):`0x`,t,r?L(r):`0x`,...i?d_(i):[]]}lu(),If(),ap();function T_(e){let{privateKey:t}=e,n=Jl.ProjectivePoint.fromPrivateKey(zf(t).slice(2));return Wh(n)}function E_(e={}){let{as:t=`Hex`}=e,n=Jl.utils.randomPrivateKey();return t===`Hex`?Vf(n):n}function D_(e){return rg(O_(e))}function O_(e){let{payload:t,signature:n}=e,{r,s:i,yParity:a}=n,o=new Jl.Signature(BigInt(r),BigInt(i)).addRecoveryBit(a).recoverPublicKey(zf(t).substring(2));return Wh(o)}function k_(e){let{extraEntropy:t=!1,hash:n,payload:r,privateKey:i}=e,{r:a,s:o,recovery:s}=Jl.sign(mf(r),mf(i),{extraEntropy:typeof t==`boolean`?t:zf(t).slice(2),lowS:!0,...n?{prehash:!0}:{}});return{r:a,s:o,yParity:s}}qd(),ap();const A_=Ug(`(uint256 chainId, address delegation, uint256 nonce, uint8 yParity, uint256 r, uint256 s), address to, bytes data`);function j_(e){if(typeof e==`string`){if(Gf(e,-32)!==`0x8010801080108010801080108010801080108010801080108010801080108010`)throw new F_(e)}else r_(e.authorization)}function M_(e){j_(e);let t=Yf(Gf(e,-64,-32)),n=Gf(e,-t-64,-64),r=Gf(e,0,-t-64),[i,a,o]=Bg(A_,n);return{authorization:b_({address:i.delegation,chainId:Number(i.chainId),nonce:i.nonce,yParity:i.yParity,r:i.r,s:i.s}),signature:r,...o&&o!==`0x`?{data:o,to:a}:{}}}function N_(e){let{data:t,signature:n}=e;j_(e);let r=D_({payload:S_(e.authorization),signature:s_(e.authorization)}),i=Vg(A_,[{...e.authorization,delegation:e.authorization.address,chainId:BigInt(e.authorization.chainId)},e.to??r,t??`0x`]),a=L(Kf(i),{size:32});return Rf(n,i,a,`0x8010801080108010801080108010801080108010801080108010801080108010`)}function P_(e){try{return j_(e),!0}catch{return!1}}var F_=class extends F{constructor(e){super(`Value \`${e}\` is an invalid ERC-8010 wrapped signature.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`SignatureErc8010.InvalidWrappedSignatureError`})}};mo(),A();async function I_(e,{blockHash:t,blockNumber:n,blockTag:r,hash:i,index:a}){let o=r||`latest`,s=n===void 0?void 0:k(n),c=null;if(i?c=await e.request({method:`eth_getTransactionByHash`,params:[i]},{dedupe:!0}):t?c=await e.request({method:`eth_getTransactionByBlockHashAndIndex`,params:[t,k(a)]},{dedupe:!0}):(s||o)&&(c=await e.request({method:`eth_getTransactionByBlockNumberAndIndex`,params:[s||o,k(a)]},{dedupe:!!s})),!c)throw new lo({blockHash:t,blockNumber:n,blockTag:o,hash:i,index:a});return(e.chain?.formatters?.transaction?.format||id)(c,`getTransaction`)}mo();async function L_(e,{hash:t}){let n=await e.request({method:`eth_getTransactionReceipt`,params:[t]},{dedupe:!0});if(!n)throw new uo({hash:t});return(e.chain?.formatters?.transactionReceipt?.format||Rm)(n,`getTransactionReceipt`)}qd();function R_(e){let t=!0,n=``,r=0,i=``,a=!1;for(let o=0;oz_(Object.values(e)[n],t)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(r)?n===`number`||n===`bigint`:/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(r)?n===`string`||e instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(r)?Array.isArray(e)&&e.every(e=>z_(e,{...t,type:r.replace(/(\[[0-9]{0,}\])$/,``)})):!1}}function B_(e,t,n){for(let r in e){let i=e[r],a=t[r];if(i.type===`tuple`&&a.type===`tuple`&&`components`in i&&`components`in a)return B_(i.components,a.components,n[r]);let o=[i.type,a.type];if((()=>o.includes(`address`)&&o.includes(`bytes20`)?!0:o.includes(`address`)&&o.includes(`string`)||o.includes(`address`)&&o.includes(`bytes`)?ag(n[r],{strict:!1}):!1)())return o}}Ot(),qd(),ap();function V_(e,t={}){let{prepare:n=!0}=t,r=(()=>Array.isArray(e)||typeof e==`string`?wt(e):e)();return{...r,...n?{hash:G_(r)}:{}}}function H_(e,t,n){let{args:r=[],prepare:i=!0}=n??{},a=Xf(t,{strict:!1}),o=e.filter(e=>a?e.type===`function`||e.type===`error`?U_(e)===Gf(t,0,4):e.type===`event`?G_(e)===t:!1:`name`in e&&e.name===t);if(o.length===0)throw new q_({name:t});if(o.length===1)return{...o[0],...i?{hash:G_(o[0])}:{}};let s;for(let e of o)if(`inputs`in e){if(!r||r.length===0){if(!e.inputs||e.inputs.length===0)return{...e,...i?{hash:G_(e)}:{}};continue}if(e.inputs&&e.inputs.length!==0&&e.inputs.length===r.length&&r.every((t,n)=>{let r=`inputs`in e&&e.inputs[n];return r?z_(t,r):!1})){if(s&&`inputs`in s&&s.inputs){let t=B_(e.inputs,s.inputs,r);if(t)throw new K_({abiItem:e,type:t[0]},{abiItem:s,type:t[1]})}s=e}}let c=(()=>{if(s)return s;let[e,...t]=o;return{...e,overloads:t}})();if(!c)throw new q_({name:t});return{...c,...i?{hash:G_(c)}:{}}}function U_(...e){let t=(()=>{if(Array.isArray(e[0])){let[t,n]=e;return H_(t,n)}return e[0]})();return Gf(G_(t),0,4)}function W_(...e){let t=(()=>{if(Array.isArray(e[0])){let[t,n]=e;return H_(t,n)}return e[0]})(),n=(()=>typeof t==`string`?t:le(t))();return R_(n)}function G_(...e){let t=(()=>{if(Array.isArray(e[0])){let[t,n]=e;return H_(t,n)}return e[0]})();return typeof t!=`string`&&`hash`in t&&t.hash?t.hash:Vh(Hf(W_(t)))}var K_=class extends F{constructor(e,t){super(`Found ambiguous types in overloaded ABI Items.`,{metaMessages:[`\`${e.type}\` in \`${R_(le(e.abiItem))}\`, and`,`\`${t.type}\` in \`${R_(le(t.abiItem))}\``,``,`These types encode differently and cannot be distinguished at runtime.`,`Remove one of the ambiguous items in the ABI.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`AbiItem.AmbiguityError`})}},q_=class extends F{constructor({name:e,data:t,type:n=`item`}){let r=(()=>e?` with name "${e}"`:t?` with data "${t}"`:``)();super(`ABI ${n}${r} not found.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`AbiItem.NotFoundError`})}};ap();function J_(...e){let[t,n=[]]=(()=>{if(Array.isArray(e[0])){let[t,n,r]=e;return[Y_(t,n,{args:r}),r]}let[t,n]=e;return[t,n]})(),{overloads:r}=t,i=r?Y_([t,...r],t.name,{args:n}):t,a=X_(i),o=n.length>0?Vg(i.inputs,n):void 0;return o?Rf(a,o):a}function Y_(e,t,n){let r=H_(e,t,n);if(r.type!==`function`)throw new q_({name:t,type:`function`});return r}function X_(e){return U_(e)}const Z_=`0x0000000000000000000000000000000000000000`;qd(),ap();function Q_(e){if(Gf(e,-32)!==`0x6492649264926492649264926492649264926492649264926492649264926492`)throw new tv(e)}function $_(e){let{data:t,signature:n,to:r}=e;return Rf(Vg(Ug(`address, bytes, bytes`),[r,t,n]),`0x6492649264926492649264926492649264926492649264926492649264926492`)}function ev(e){try{return Q_(e),!0}catch{return!1}}var tv=class extends F{constructor(e){super(`Value \`${e}\` is an invalid ERC-6492 wrapped signature.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`SignatureErc6492.InvalidWrappedSignatureError`})}};lu(),Dn(),Hn();function nv({r:e,s:t,to:n=`hex`,v:r,yParity:i}){let a=(()=>{if(i===0||i===1)return i;if(r&&(r===27n||r===28n||r>=35n))return r%2n==0n?1:0;throw Error("Invalid `v` or `yParity` value")})(),o=`0x${new Jl.Signature(wn(e),wn(t)).toCompactHex()}${a===0?`1b`:`1c`}`;return n===`hex`?o:Ln(o)}hp(),xp(),wo(),Ap(),sa(),yi(),Ld(),Di(),Pt(),Dn(),A(),pm();async function rv(e,t){let{address:n,hash:r,erc6492VerifierAddress:i=t.universalSignatureVerifierAddress??e.chain?.contracts?.erc6492Verifier?.address,multicallAddress:a=t.multicallAddress??e.chain?.contracts?.multicall3?.address}=t,o=(()=>{let e=t.signature;return Nt(e)?e:typeof e==`object`&&`r`in e&&`s`in e?nv(e):An(e)})();try{return P_(o)?await iv(e,{...t,multicallAddress:a,signature:o}):await av(e,{...t,verifierAddress:i,signature:o})}catch(e){try{if(Id(_i(n),await fu({hash:r,signature:o})))return!0}catch{}if(e instanceof sv)return!1;throw e}}async function iv(e,t){let{address:n,blockNumber:r,blockTag:i,hash:a,multicallAddress:o}=t,{authorization:s,data:c,signature:l,to:u}=M_(t.signature);if(await Xm(e,{address:n,blockNumber:r,blockTag:i})===Ei([`0xef0100`,s.address]))return await ov(e,{address:n,blockNumber:r,blockTag:i,hash:a,signature:l});let d={address:s.address,chainId:Number(s.chainId),nonce:Number(s.nonce),r:k(s.r,{size:32}),s:k(s.s,{size:32}),yParity:s.yParity};if(!await mh({address:n,authorization:d}))throw new sv;let f=await E(e,mm,`readContract`)({...o?{address:o}:{code:bp},authorizationList:[d],abi:up,blockNumber:r,blockTag:`pending`,functionName:`aggregate3`,args:[[...c?[{allowFailure:!0,target:u??n,callData:c}]:[],{allowFailure:!0,target:n,callData:oa({abi:pp,functionName:`isValidSignature`,args:[a,l]})}]]});if((f[f.length-1]?.returnData)?.startsWith(`0x1626ba7e`))return!0;throw new sv}async function av(e,t){let{address:n,factory:r,factoryData:i,hash:a,signature:o,verifierAddress:s,...c}=t,l=await(async()=>!r&&!i||ev(o)?o:$_({data:i,signature:o,to:r}))(),u=s?{to:s,data:oa({abi:mp,functionName:`isValidSig`,args:[n,a,l]}),...c}:{data:Op({abi:mp,args:[n,a,l],bytecode:yp}),...c},{data:d}=await E(e,sm,`call`)(u).catch(e=>{throw e instanceof vo?new sv:e});if(Tn(d??`0x0`))return!0;throw new sv}async function ov(e,t){let{address:n,blockNumber:r,blockTag:i,hash:a,signature:o}=t;if((await E(e,mm,`readContract`)({address:n,abi:pp,args:[a,o],blockNumber:r,blockTag:i,functionName:`isValidSignature`}).catch(e=>{throw e instanceof yo?new sv:e})).startsWith(`0x1626ba7e`))return!0;throw new sv}var sv=class extends Error{};Dn(),Ba();function cv(e,{emitOnBegin:t=!1,emitMissed:n=!1,onBlockNumber:r,onError:i,poll:a,pollingInterval:o=e.pollingInterval}){let s=(()=>a===void 0?!(e.transport.type===`webSocket`||e.transport.type===`ipc`||e.transport.type===`fallback`&&(e.transport.transports[0].config.type===`webSocket`||e.transport.transports[0].config.type===`ipc`)):a)(),c;return s?(()=>{let a=za([`watchBlockNumber`,e.uid,t,n,o]);return vm(a,{onBlockNumber:r,onError:i},r=>bm(async()=>{try{let t=await E(e,Em,`getBlockNumber`)({cacheTime:0});if(c!==void 0){if(t===c)return;if(t-c>1&&n)for(let e=c+1n;ec)&&(r.onBlockNumber(t,c),c=t)}catch(e){r.onError?.(e)}},{emitOnBegin:t,interval:o}))})():(()=>{let a=za([`watchBlockNumber`,e.uid,t,n]);return vm(a,{onBlockNumber:r,onError:i},t=>{let n=!0,r=()=>n=!1;return(async()=>{try{let{unsubscribe:i}=await(()=>{if(e.transport.type===`fallback`){let t=e.transport.transports.find(e=>e.config.type===`webSocket`||e.config.type===`ipc`);return t?t.value:e.transport}return e.transport})().subscribe({params:[`newHeads`],onData(e){if(!n)return;let r=wn(e.result?.number);t.onBlockNumber(r,c),c=r},onError(e){t.onError?.(e)}});r=i,n||r()}catch(e){i?.(e)}})(),()=>r()})})()}mo(),Ip(),Ba();async function lv(e,t){let{checkReplacement:n=!0,confirmations:r=1,hash:i,onReplaced:a,retryCount:o=6,retryDelay:s=({count:e})=>~~(1<t.pollingInterval?t.pollingInterval:e.chain?.experimental_preconfirmationTime?e.chain.experimental_preconfirmationTime:e.pollingInterval)(),d,f,p,m=!1,h,g,{promise:_,resolve:v,reject:y}=Fp(),b=c?setTimeout(()=>{g?.(),h?.(),y(new po({hash:i}))},c):void 0;return h=vm(l,{onReplaced:a,resolve:v,reject:y},async t=>{if(p=await E(e,L_,`getTransactionReceipt`)({hash:i}).catch(()=>void 0),p&&r<=1){clearTimeout(b),t.resolve(p),h?.();return}g=E(e,cv,`watchBlockNumber`)({emitMissed:!0,emitOnBegin:!0,poll:!0,pollingInterval:u,async onBlockNumber(a){let c=e=>{clearTimeout(b),g?.(),e(),h?.()},l=a;if(!m)try{if(p){if(r>1&&(!p.blockNumber||l-p.blockNumber+1nt.resolve(p));return}if(n&&!d&&(m=!0,await Im(async()=>{d=await E(e,I_,`getTransaction`)({hash:i}),d.blockNumber&&(l=d.blockNumber)},{delay:s,retryCount:o}),m=!1),p=await E(e,L_,`getTransactionReceipt`)({hash:i}),r>1&&(!p.blockNumber||l-p.blockNumber+1nt.resolve(p))}catch(n){if(n instanceof lo||n instanceof uo){if(!d){m=!1;return}try{f=d,m=!0;let n=await Im(()=>E(e,ld,`getBlock`)({blockNumber:l,includeTransactions:!0}),{delay:s,retryCount:o,shouldRetry:({error:e})=>e instanceof nd});m=!1;let i=n.transactions.find(({from:e,nonce:t})=>e===f.from&&t===f.nonce);if(!i||(p=await E(e,L_,`getTransactionReceipt`)({hash:i.hash}),r>1&&(!p.blockNumber||l-p.blockNumber+1n{t.onReplaced?.({reason:a,replacedTransaction:f,transaction:i,transactionReceipt:p}),t.resolve(p)})}catch(e){c(()=>t.reject(e))}}else c(()=>t.reject(n))}}})}),_}mo();async function uv(e,{serializedTransaction:t,throwOnReceiptRevert:n,timeout:r}){let i=await e.request({method:`eth_sendRawTransactionSync`,params:r?[t,k(r)]:[t]},{retryCount:0}),a=(e.chain?.formatters?.transactionReceipt?.format||Rm)(i);if(a.status===`reverted`&&n)throw new fo({receipt:a});return a}A();async function dv(e,{chain:t}){let{id:n,name:r,nativeCurrency:i,rpcUrls:a,blockExplorers:o}=t;await e.request({method:`wallet_addEthereumChain`,params:[{chainId:k(n),chainName:r,nativeCurrency:i,rpcUrls:a.default.http,blockExplorerUrls:o?Object.values(o).map(({url:e})=>e):void 0}]},{dedupe:!0,retryCount:0})}Ap();function fv(e,t){let{abi:n,args:r,bytecode:i,...a}=t,o=Op({abi:n,args:r,bytecode:i});return Nm(e,{...a,...a.authorizationList?{to:null}:{},data:o})}yi();async function pv(e){return e.account?.type===`local`?[e.account.address]:(await e.request({method:`eth_accounts`},{dedupe:!0})).map(e=>gi(e))}na(),A();async function mv(e,t={}){let{account:n=e.account,chainId:r}=t,i=n?ta(n):void 0,a=r?[i?.address,[k(r)]]:[i?.address],o=await e.request({method:`wallet_getCapabilities`,params:a}),s={};for(let[e,t]of Object.entries(o)){s[Number(e)]={};for(let[n,r]of Object.entries(t))n===`addSubAccount`&&(n=`unstable_addSubAccount`),s[Number(e)][n]=r}return typeof r==`number`?s[r]:s}async function hv(e){return await e.request({method:`wallet_getPermissions`},{dedupe:!0})}na(),Ld();async function gv(e,t){let{account:n=e.account,chainId:r,nonce:i}=t;if(!n)throw new Dm({docsPath:`/docs/eip7702/prepareAuthorization`});let a=ta(n),o=(()=>{if(t.executor)return t.executor===`self`?t.executor:ta(t.executor)})(),s={address:t.contractAddress??t.address,chainId:r,nonce:i};return s.chainId===void 0&&(s.chainId=e.chain?.id??await E(e,jd,`getChainId`)({})),s.nonce===void 0&&(s.nonce=await E(e,pd,`getTransactionCount`)({address:a.address,blockTag:`pending`}),(o===`self`||o?.address&&Id(o.address,a.address))&&(s.nonce+=1)),s}yi();async function _v(e){return(await e.request({method:`eth_requestAccounts`},{dedupe:!0,retryCount:0})).map(e=>_i(e))}async function vv(e,t){return e.request({method:`wallet_requestPermissions`,params:[t]},{retryCount:0})}async function yv(e,t){let{chain:n=e.chain}=t,r=t.timeout??Math.max((n?.blockTime??0)*3,5e3),i=await Vm(e,t);return await Um(e,{...t,id:i.id,timeout:r})}na(),O(),mo(),Iu(),Uu(),hi(),Qu();var bv=new mi(128);async function xv(e,t){let{account:n=e.account,chain:r=e.chain,accessList:i,authorizationList:a,blobs:o,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,pollingInterval:m,throwOnReceiptRevert:h,type:g,value:_,...v}=t,y=t.timeout??Math.max((r?.blockTime??0)*3,5e3);if(n===void 0)throw new Dm({docsPath:`/docs/actions/wallet/sendTransactionSync`});let b=n?ta(n):null;try{Zu(t);let n=await(async()=>{if(t.to)return t.to;if(t.to!==null&&a&&a.length>0)return await _u({authorization:a[0]}).catch(()=>{throw new D("`to` is required. Could not infer from `authorizationList`.")})})();if(b?.type===`json-rpc`||b===null){let t;r!==null&&(t=await E(e,jd,`getChainId`)({}),km({currentChainId:t,chain:r}));let x=e.chain?.formatters?.transactionRequest?.format,S=(x||zu)({...Fu(v,{format:x}),accessList:i,authorizationList:a,blobs:o,chainId:t,data:s,from:b?.address,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,to:n,type:g,value:_},`sendTransaction`),C=bv.get(e.uid),w=C?`wallet_sendTransaction`:`eth_sendTransaction`,ee=await(async()=>{try{return await e.request({method:w,params:[S]},{retryCount:0})}catch(t){if(C===!1)throw t;let n=t;if(n.name===`InvalidInputRpcError`||n.name===`InvalidParamsRpcError`||n.name===`MethodNotFoundRpcError`||n.name===`MethodNotSupportedRpcError`)return await e.request({method:`wallet_sendTransaction`,params:[S]},{retryCount:0}).then(t=>(bv.set(e.uid,!0),t)).catch(t=>{let r=t;throw r.name===`MethodNotFoundRpcError`||r.name===`MethodNotSupportedRpcError`?(bv.set(e.uid,!1),n):r});throw n}})(),te=await E(e,lv,`waitForTransactionReceipt`)({checkReplacement:!1,hash:ee,pollingInterval:m,timeout:y});if(h&&te.status===`reverted`)throw new fo({receipt:te});return te}if(b?.type===`local`){let t=await E(e,Pd,`prepareTransactionRequest`)({account:b,accessList:i,authorizationList:a,blobs:o,chain:r,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,nonceManager:b.nonceManager,parameters:[...Md,`sidecars`],type:g,value:_,...v,to:n}),m=r?.serializers?.transaction,y=await b.signTransaction(t,{serializer:m});return await E(e,uv,`sendRawTransactionSync`)({serializedTransaction:y,throwOnReceiptRevert:h})}throw b?.type===`smart`?new Om({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:`/docs/actions/bundler/sendUserOperation`,type:`smart`}):new Om({docsPath:`/docs/actions/wallet/sendTransactionSync`,type:b?.type})}catch(e){throw e instanceof Om?e:Am(e,{...t,account:b,chain:t.chain||void 0})}}async function Sv(e,t){let{id:n}=t;await e.request({method:`wallet_showCallsStatus`,params:[n]})}na();async function Cv(e,t){let{account:n=e.account}=t;if(!n)throw new Dm({docsPath:`/docs/eip7702/signAuthorization`});let r=ta(n);if(!r.signAuthorization)throw new Om({docsPath:`/docs/eip7702/signAuthorization`,metaMessages:["The `signAuthorization` Action does not support JSON-RPC Accounts."],type:r.type});let i=await gv(e,t);return r.signAuthorization(i)}na(),A();async function wv(e,{account:t=e.account,message:n}){if(!t)throw new Dm({docsPath:`/docs/actions/wallet/signMessage`});let r=ta(t);if(r.signMessage)return r.signMessage({message:n});let i=(()=>typeof n==`string`?jn(n):n.raw instanceof Uint8Array?On(n.raw):n.raw)();return e.request({method:`personal_sign`,params:[i,r.address]},{retryCount:0})}na(),A(),Uu(),Qu();async function Tv(e,t){let{account:n=e.account,chain:r=e.chain,...i}=t;if(!n)throw new Dm({docsPath:`/docs/actions/wallet/signTransaction`});let a=ta(n);Zu({account:a,...t});let o=await E(e,jd,`getChainId`)({});r!==null&&km({currentChainId:o,chain:r});let s=(r?.formatters||e.chain?.formatters)?.transactionRequest?.format||zu;return a.signTransaction?a.signTransaction({...i,chainId:o},{serializer:e.chain?.serializers?.transaction}):await e.request({method:`eth_signTransaction`,params:[{...s(i,`signTransaction`),chainId:k(o),from:a.address}]},{retryCount:0})}na();async function Ev(e,t){let{account:n=e.account,domain:r,message:i,primaryType:a}=t;if(!n)throw new Dm({docsPath:`/docs/actions/wallet/signTypedData`});let o=ta(n),s={EIP712Domain:Ah({domain:r}),...t.types};if(kh({domain:r,message:i,primaryType:a,types:s}),o.signTypedData)return o.signTypedData({domain:r,message:i,primaryType:a,types:s});let c=Oh({domain:r,message:i,primaryType:a,types:s});return e.request({method:`eth_signTypedData_v4`,params:[o.address,c]},{retryCount:0})}A();async function Dv(e,{id:t}){await e.request({method:`wallet_switchEthereumChain`,params:[{chainId:k(t)}]},{retryCount:0})}async function Ov(e,t){return await e.request({method:`wallet_watchAsset`,params:t},{retryCount:0})}async function kv(e,t){return Pm.internal(e,xv,`sendTransactionSync`,t)}function Av(e){return{addChain:t=>dv(e,t),deployContract:t=>fv(e,t),getAddresses:()=>pv(e),getCallsStatus:t=>Hm(e,t),getCapabilities:t=>mv(e,t),getChainId:()=>jd(e),getPermissions:()=>hv(e),prepareAuthorization:t=>gv(e,t),prepareTransactionRequest:t=>Pd(e,t),requestAddresses:()=>_v(e),requestPermissions:t=>vv(e,t),sendCalls:t=>Vm(e,t),sendCallsSync:t=>yv(e,t),sendRawTransaction:t=>jm(e,t),sendRawTransactionSync:t=>uv(e,t),sendTransaction:t=>Nm(e,t),sendTransactionSync:t=>xv(e,t),showCallsStatus:t=>Sv(e,t),signAuthorization:t=>Cv(e,t),signMessage:t=>wv(e,t),signTransaction:t=>Tv(e,t),signTypedData:t=>Ev(e,t),switchChain:t=>Dv(e,t),waitForCallsStatus:t=>Um(e,t),watchAsset:t=>Ov(e,t),writeContract:t=>Pm(e,t),writeContractSync:t=>kv(e,t)}}function jv(e){let{key:t=`wallet`,name:n=`Wallet Client`,transport:r}=e;return Ym({...e,key:t,name:n,transport:r,type:`walletClient`}).extend(Av)}function Mv({key:e,methods:t,name:n,request:r,retryCount:i=3,retryDelay:a=150,timeout:o,type:s},c){let l=Jm();return{config:{key:e,methods:t,name:n,request:r,retryCount:i,retryDelay:a,timeout:o,type:s},request:_h(r,{methods:t,retryCount:i,retryDelay:a,uid:l}),value:c}}function Nv(e,t={}){let{key:n=`custom`,methods:r,name:i=`Custom Provider`,retryDelay:a}=t;return({retryCount:o})=>Mv({key:n,methods:r,name:i,request:e.request.bind(e),retryCount:t.retryCount??o,retryDelay:a,type:`custom`})}ju(),rs();function Pv(e,t={}){let{key:n=`fallback`,name:r=`Fallback`,rank:i=!1,shouldThrow:a=Fv,retryCount:o,retryDelay:s}=t;return(({chain:t,pollingInterval:c=4e3,timeout:l,...u})=>{let d=e,f=()=>{},p=Mv({key:n,name:r,async request({method:e,params:n}){let r,i=async(o=0)=>{let s=d[o]({...u,chain:t,retryCount:0,timeout:l});try{let t=await s.request({method:e,params:n});return f({method:e,params:n,response:t,transport:s,status:`success`}),t}catch(c){if(f({error:c,method:e,params:n,transport:s,status:`error`}),a(c)||o===d.length-1||(r??=d.slice(o+1).some(n=>{let{include:r,exclude:i}=n({chain:t}).config.methods||{};return r?r.includes(e):i?!i.includes(e):!0}),!r))throw c;return i(o+1)}};return i()},retryCount:o,retryDelay:s,type:`fallback`},{onResponse:e=>f=e,transports:d.map(e=>e({chain:t,retryCount:0}))});if(i){let e=typeof i==`object`?i:{};Iv({chain:t,interval:e.interval??c,onTransports:e=>d=e,ping:e.ping,sampleCount:e.sampleCount,timeout:e.timeout,transports:d,weights:e.weights})}return p})}function Fv(e){return!!(`code`in e&&typeof e.code==`number`&&(e.code===zo.code||e.code===Uo.code||yu.nodeMessage.test(e.message)||e.code===5e3))}function Iv({chain:e,interval:t=4e3,onTransports:n,ping:r,sampleCount:i=10,timeout:a=1e3,transports:o,weights:s={}}){let{stability:c=.7,latency:l=.3}=s,u=[],d=async()=>{let s=await Promise.all(o.map(async t=>{let n=t({chain:e,retryCount:0,timeout:a}),i=Date.now(),o,s;try{await(r?r({transport:n}):n.request({method:`net_listening`})),s=1}catch{s=0}finally{o=Date.now()}return{latency:o-i,success:s}}));u.push(s),u.length>i&&u.shift();let f=Math.max(...u.map(e=>Math.max(...e.map(({latency:e})=>e)))),p=o.map((e,t)=>{let n=u.map(e=>e[t].latency),r=1-n.reduce((e,t)=>e+t,0)/n.length/f,i=u.map(e=>e[t].success),a=i.reduce((e,t)=>e+t,0)/i.length;return a===0?[0,t]:[l*r+c*a,t]}).sort((e,t)=>t[0]-e[0]);n(p.map(([,e])=>o[e])),await ym(t),d()};d()}O();var Lv=class extends D{constructor(){super(`No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.`,{docsPath:`/docs/clients/intro`,name:`UrlRequiredError`})}};Oo(),zp();function Rv(e,t={}){let{batch:n,fetchFn:r,fetchOptions:i,key:a=`http`,methods:o,name:s=`HTTP JSON-RPC`,onFetchRequest:c,onFetchResponse:l,retryDelay:u,raw:d}=t;return({chain:f,retryCount:p,timeout:m})=>{let{batchSize:h=1e3,wait:g=0}=typeof n==`object`?n:{},_=t.retryCount??p,v=m??t.timeout??1e4,y=e||f?.rpcUrls.default.http[0];if(!y)throw new Lv;let b=Sh(y,{fetchFn:r,fetchOptions:i,onRequest:c,onResponse:l,timeout:v});return Mv({key:a,methods:o,name:s,async request({method:e,params:t}){let r={method:e,params:t},{schedule:i}=Lp({id:y,wait:g,shouldSplitBatch(e){return e.length>h},fn:e=>b.request({body:e}),sort:(e,t)=>e.id-t.id}),[{error:a,result:o}]=await(async e=>n?i(e):[await b.request({body:e})])(r);if(d)return{error:a,result:o};if(a)throw new Eo({body:r,error:a,url:y});return o},retryCount:_,retryDelay:u,timeout:v,type:`http`},{fetchOptions:i,url:y})}}const zv=R({id:16600,name:`0G Newton Testnet`,nativeCurrency:{name:`A0GI`,symbol:`A0GI`,decimals:18},rpcUrls:{default:{http:[`https://evmrpc-testnet.0g.ai`]}},blockExplorers:{default:{name:`0G BlockChain Explorer`,url:`https://chainscan-newton.0g.ai`}},testnet:!0}),Bv=R({id:16601,name:`0G Galileo Testnet`,nativeCurrency:{name:`A0GI`,symbol:`A0GI`,decimals:18},rpcUrls:{default:{http:[`https://evmrpc-testnet.0g.ai`]}},blockExplorers:{default:{name:`0G BlockChain Explorer`,url:`https://chainscan-galileo.0g.ai`}},testnet:!0}),Vv=R({id:16661,name:`0G Mainnet`,nativeCurrency:{name:`0G`,symbol:`0G`,decimals:18},rpcUrls:{default:{http:[`https://evmrpc.0g.ai`]}},blockExplorers:{default:{name:`0G BlockChain Explorer`,url:`https://chainscan.0g.ai`}},testnet:!1}),Hv=R({id:995,name:`5ireChain`,nativeCurrency:{name:`5ire Token`,symbol:`5IRE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.5ire.network`]}},blockExplorers:{default:{name:`5ireChain Mainnet Explorer`,url:`https://5irescan.io/`}},testnet:!1}),Uv=R({id:179,name:`ABEY Mainnet`,nativeCurrency:{name:`ABEY`,symbol:`ABEY`,decimals:18},rpcUrls:{default:{http:[`https://rpc.abeychain.com`]}},blockExplorers:{default:{name:`Abey Scan`,url:`https://abeyscan.com`}},testnet:!1});Xu();const Wv=50000n,Gv=Ju*32n;Dn(),Hn(),A(),Uu();const Kv={block:cd({format(e){let t=e.transactions?.map(e=>{if(typeof e==`string`)return e;let t=Kv.transaction?.format(e);return t.typeHex===`0x71`?t.type=`eip712`:t.typeHex===`0xff`&&(t.type=`priority`),t});return{l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,l1BatchTimestamp:e.l1BatchTimestamp?wn(e.l1BatchTimestamp):null,transactions:t}}}),transaction:ad({format(e){let t={};return e.type===`0x71`?t.type=`eip712`:e.type===`0xff`&&(t.type=`priority`),{...t,l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,l1BatchTxIndex:e.l1BatchTxIndex?wn(e.l1BatchTxIndex):null}}}),transactionReceipt:zm({format(e){return{l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,l1BatchTxIndex:e.l1BatchTxIndex?wn(e.l1BatchTxIndex):null,logs:e.logs.map(e=>({...Rd(e),l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,transactionLogIndex:En(e.transactionLogIndex),logType:e.logType})),l2ToL1Logs:e.l2ToL1Logs.map(e=>({blockNumber:wn(e.blockHash),blockHash:e.blockHash,l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,transactionIndex:wn(e.transactionIndex),shardId:wn(e.shardId),isService:e.isService,sender:e.sender,key:e.key,value:e.value,transactionHash:e.transactionHash,logIndex:wn(e.logIndex)}))}}}),transactionRequest:Hu({exclude:[`customSignature`,`factoryDeps`,`gasPerPubdata`,`paymaster`,`paymasterInput`],format(e){return e.gasPerPubdata||e.paymaster&&e.paymasterInput||e.factoryDeps||e.customSignature?{eip712Meta:{...e.gasPerPubdata?{gasPerPubdata:On(e.gasPerPubdata)}:{gasPerPubdata:On(Wv)},...e.paymaster&&e.paymasterInput?{paymasterParams:{paymaster:e.paymaster,paymasterInput:Array.from(Ln(e.paymasterInput))}}:{},...e.factoryDeps?{factoryDeps:e.factoryDeps.map(e=>Array.from(Ln(e)))}:{},...e.customSignature?{customSignature:Array.from(Ln(e.customSignature))}:{}},type:`0x71`}:{}}})};O();var qv=class extends D{constructor(){super([`Transaction is not an EIP712 transaction.`,``,`Transaction must:`,' - include `type: "eip712"`'," - include one of the following: `customSignature`, `paymaster`, `paymasterInput`, `gasPerPubdata`, `factoryDeps`"].join(` +`),{name:`InvalidEip712TransactionError`})}};function Jv(e){return!!(e.type===`eip712`||`customSignature`in e&&e.customSignature||`paymaster`in e&&e.paymaster||`paymasterInput`in e&&e.paymasterInput||`gasPerPubdata`in e&&typeof e.gasPerPubdata==`bigint`||`factoryDeps`in e&&e.factoryDeps)}pi(),O(),Dp(),Ci();function Yv(e){let{chainId:t,to:n,from:r,paymaster:i,paymasterInput:a}=e;if(!Jv(e))throw new qv;if(!t||t<=0)throw new Ep({chainId:t});if(n&&!bi(n))throw new fi({address:n});if(r&&!bi(r))throw new fi({address:r});if(i&&!bi(i))throw new fi({address:i});if(i&&!a)throw new D("`paymasterInput` must be provided when `paymaster` is defined");if(!i&&a)throw new D("`paymaster` must be provided when `paymasterInput` is defined")}Di(),A();function Xv(e,t){return Jv(e)?Qv(e):oh(e,t)}const Zv={transaction:Xv};function Qv(e){let{chainId:t,gas:n,nonce:r,to:i,from:a,value:o,maxFeePerGas:s,maxPriorityFeePerGas:c,customSignature:l,factoryDeps:u,paymaster:d,paymasterInput:f,gasPerPubdata:p,data:m}=e;Yv(e);let h=[r?On(r):`0x`,c?On(c):`0x`,s?On(s):`0x`,n?On(n):`0x`,i??`0x`,o?On(o):`0x`,m??`0x`,On(t),On(``),On(``),On(t),a??`0x`,On(p||Wv),u??[],l??`0x`,d&&f?[d,f]:[]];return Ei([`0x71`,N(h)])}O();var $v=class extends D{constructor({givenLength:e,maxBytecodeSize:t}){super(`Bytecode cannot be longer than ${t} bytes. Given length: ${e}`,{name:`BytecodeLengthExceedsMaxSizeError`})}},ey=class extends D{constructor({givenLengthInWords:e}){super(`Bytecode length in 32-byte words must be odd. Given length in words: ${e}`,{name:`BytecodeLengthInWordsMustBeOddError`})}},ty=class extends D{constructor({givenLength:e}){super(`The bytecode length in bytes must be divisible by 32. Given length: ${e}`,{name:`BytecodeLengthMustBeDivisibleBy32Error`})}};hn(),Hn();function ny(e){let t=Pn(e);if(t.length%32!=0)throw new ty({givenLength:t.length});if(t.length>Gv)throw new $v({givenLength:t.length,maxBytecodeSize:Gv});let n=_d(t),r=Pn(n),i=t.length/32;if(i%2==0)throw new ey({givenLengthInWords:i});let a=Pn(i),o=fn(a,{size:2}),s=new Uint8Array([1,0]);return r.set(s,0),r.set(o,2),r}A();const ry=e=>{Yv(e);let t=iy(e);return{domain:{name:`zkSync`,version:`2`,chainId:e.chainId},types:{Transaction:[{name:`txType`,type:`uint256`},{name:`from`,type:`uint256`},{name:`to`,type:`uint256`},{name:`gasLimit`,type:`uint256`},{name:`gasPerPubdataByteLimit`,type:`uint256`},{name:`maxFeePerGas`,type:`uint256`},{name:`maxPriorityFeePerGas`,type:`uint256`},{name:`paymaster`,type:`uint256`},{name:`nonce`,type:`uint256`},{name:`value`,type:`uint256`},{name:`data`,type:`bytes`},{name:`factoryDeps`,type:`bytes32[]`},{name:`paymasterInput`,type:`bytes`}]},primaryType:`Transaction`,message:t}};function iy(e){let{gas:t,nonce:n,to:r,from:i,value:a,maxFeePerGas:o,maxPriorityFeePerGas:s,factoryDeps:c,paymaster:l,paymasterInput:u,gasPerPubdata:d,data:f}=e;return{txType:113n,from:BigInt(i),to:r?BigInt(r):0n,gasLimit:t??0n,gasPerPubdataByteLimit:d??50000n,maxFeePerGas:o??0n,maxPriorityFeePerGas:s??0n,paymaster:l?BigInt(l):0n,nonce:n?BigInt(n):0n,value:a??0n,data:f??`0x`,factoryDeps:c?.map(e=>On(ny(e)))??[],paymasterInput:u||`0x`}}const ay={blockTime:1e3,formatters:Kv,serializers:Zv,custom:{getEip712Domain:ry}},oy=R({...ay,id:2741,name:`Abstract`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.mainnet.abs.xyz`],webSocket:[`wss://api.mainnet.abs.xyz/ws`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://abscan.org`},native:{name:`Abstract Explorer`,url:`https://explorer.mainnet.abs.xyz`}},contracts:{multicall3:{address:`0xAa4De41dba0Ca5dCBb288b7cC6b708F3aaC759E7`,blockCreated:5288},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:5263}}}),sy=R({...ay,id:11124,name:`Abstract Testnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.testnet.abs.xyz`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia.abscan.org`},native:{name:`Abstract Explorer`,url:`https://explorer.testnet.abs.xyz`}},testnet:!0,contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`,blockCreated:358349},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:431682}}}),cy=R({id:787,name:`Acala`,network:`acala`,nativeCurrency:{name:`Acala`,symbol:`ACA`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-acala.aca-api.network`],webSocket:[`wss://eth-rpc-acala.aca-api.network`]}},blockExplorers:{default:{name:`Acala Blockscout`,url:`https://blockscout.acala.network`,apiUrl:`https://blockscout.acala.network/api`}},testnet:!1}),ly=R({id:47,name:`Acria IntelliChain`,nativeCurrency:{decimals:18,name:`ACRIA`,symbol:`ACRIA`},rpcUrls:{default:{http:[`https://aic.acria.ai`]}},blockExplorers:{default:{name:`Acria Explorer`,url:`https://explorer.acria.ai`}},testnet:!1}),uy=R({id:1215,name:`ADF Chain`,nativeCurrency:{name:`ADDFILL`,symbol:`ADF`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.adftechnology.com`]}},blockExplorers:{default:{name:`ADF Mainnet Explorer`,url:`https://explorer.adftechnology.com`}},testnet:!1}),dy=R({id:9990,name:`Agung Network`,nativeCurrency:{decimals:18,name:`Agung`,symbol:`AGNG`},rpcUrls:{default:{http:[`https://wss-async.agung.peaq.network`],webSocket:[`wss://wss-async.agung.peaq.network`]}},blockExplorers:{default:{name:`Subscan`,url:`https://agung-testnet.subscan.io`}},testnet:!0}),fy=R({id:168,name:`AIOZ Network`,nativeCurrency:{decimals:18,name:`AIOZ`,symbol:`AIOZ`},rpcUrls:{default:{http:[`https://eth-dataseed.aioz.network`]}},blockExplorers:{default:{name:`AIOZ Explorer`,url:`https://explorer.aioz.network`}},testnet:!1}),py=R({id:41455,name:`Aleph Zero`,nativeCurrency:{name:`Aleph Zero`,symbol:`AZERO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.alephzero.raas.gelato.cloud`]}},blockExplorers:{default:{name:`Aleph Zero EVM Explorer`,url:`https://evm-explorer.alephzero.org`,apiUrl:`https://evm-explorer.alephzero.org/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4603377}}}),my=R({id:2039,name:`Aleph Zero Testnet`,nativeCurrency:{name:`TZERO`,symbol:`TZERO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.alephzero-testnet.gelato.digital`],webSocket:[`wss://ws.alephzero-testnet.gelato.digital`]}},blockExplorers:{default:{name:`Aleph Zero EVM Testnet explorer`,url:`https://evm-explorer-testnet.alephzero.org`,apiUrl:`https://evm-explorer-testnet.alephzero.org/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2861745}},testnet:!0}),hy=R({id:10241024,name:`AlienX Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.alienxchain.io/http`]}},blockExplorers:{default:{name:`AlienX Explorer`,url:`https://explorer.alienxchain.io`}},testnet:!1}),gy=R({id:10241025,name:`ALIENX Hal Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://hal-rpc.alienxchain.io/http`]}},blockExplorers:{default:{name:`AlienX Explorer`,url:`https://hal-explorer.alienxchain.io`}},testnet:!0}),_y={gasPriceOracle:{address:`0x420000000000000000000000000000000000000F`},l1Block:{address:`0x4200000000000000000000000000000000000015`},l2CrossDomainMessenger:{address:`0x4200000000000000000000000000000000000007`},l2Erc721Bridge:{address:`0x4200000000000000000000000000000000000014`},l2StandardBridge:{address:`0x4200000000000000000000000000000000000010`},l2ToL1MessagePasser:{address:`0x4200000000000000000000000000000000000016`}};Dn();const vy={block:cd({format(e){return{transactions:e.transactions?.map(e=>{if(typeof e==`string`)return e;let t=id(e);return t.typeHex===`0x7e`&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?wn(e.mint):void 0,t.sourceHash=e.sourceHash,t.type=`deposit`),t}),stateRoot:e.stateRoot}}}),transaction:ad({format(e){let t={};return e.type===`0x7e`&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?wn(e.mint):void 0,t.sourceHash=e.sourceHash,t.type=`deposit`),t}}),transactionReceipt:zm({format(e){return{l1GasPrice:e.l1GasPrice?wn(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?wn(e.l1GasUsed):null,l1Fee:e.l1Fee?wn(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null}}})};pi(),Ci(),Di(),A();function yy(e,t){return Sy(e)?xy(e):oh(e,t)}const by={transaction:yy};function xy(e){Cy(e);let{sourceHash:t,data:n,from:r,gas:i,isSystemTx:a,mint:o,to:s,value:c}=e,l=[t,r,s??`0x`,o?On(o):`0x`,c?On(c):`0x`,i?On(i):`0x`,a?`0x1`:`0x`,n??`0x`];return Ei([`0x7e`,N(l)])}function Sy(e){return e.type===`deposit`||e.sourceHash!==void 0}function Cy(e){let{from:t,to:n}=e;if(t&&!bi(t))throw new fi({address:t});if(n&&!bi(n))throw new fi({address:n})}const z={blockTime:2e3,contracts:_y,formatters:vy,serializers:by};var wy=1;const Ty=R({...z,id:888888888,name:`Ancient8`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.ancient8.gg`]}},blockExplorers:{default:{name:`Ancient8 explorer`,url:`https://scan.ancient8.gg`,apiUrl:`https://scan.ancient8.gg/api`}},contracts:{...z.contracts,l2OutputOracle:{[wy]:{address:`0xB09DC08428C8b4EFB4ff9C0827386CDF34277996`}},portal:{[wy]:{address:`0x639F2AECE398Aa76b07e59eF6abe2cFe32bacb68`,blockCreated:19070571}},l1StandardBridge:{[wy]:{address:`0xd5e3eDf5b68135D559D572E26bF863FBC1950033`,blockCreated:19070571}}},sourceId:wy});var Ey=11155111;const Dy=R({...z,id:28122024,name:`Ancient8 Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpcv2-testnet.ancient8.gg`]}},blockExplorers:{default:{name:`Ancient8 Celestia Testnet explorer`,url:`https://scanv2-testnet.ancient8.gg`,apiUrl:`https://scanv2-testnet.ancient8.gg/api`}},contracts:{...z.contracts,l2OutputOracle:{[Ey]:{address:`0x942fD5017c0F60575930D8574Eaca13BEcD6e1bB`}},portal:{[Ey]:{address:`0xfa1d9E26A6aCD7b22115D27572c1221B9803c960`,blockCreated:4972908}},l1StandardBridge:{[Ey]:{address:`0xF6Bc0146d3c74D48306e79Ae134A260E418C9335`,blockCreated:4972908}}},sourceId:Ey}),Oy=R({id:31337,name:`Anvil`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`],webSocket:[`ws://127.0.0.1:8545`]}}}),ky=R({id:33139,name:`Ape Chain`,nativeCurrency:{name:`ApeCoin`,symbol:`APE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.apechain.com/http`],webSocket:[`wss://rpc.apechain.com/ws`]}},blockExplorers:{default:{name:`Apescan`,url:`https://apescan.io`,apiUrl:`https://api.apescan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:20889}},sourceId:42161}),Ay=R({id:3993,name:`APEX Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.apexlayer.xyz`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp-testnet.apexlayer.xyz`,apiUrl:`https://exp-testnet.apexlayer.xyz/api`}},contracts:{multicall3:{address:`0xf7642be33a6b18D16a995657adb5a68CD0438aE2`,blockCreated:283775}},testnet:!0}),jy=R({id:42161,name:`Arbitrum One`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:250,rpcUrls:{default:{http:[`https://arb1.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://arbiscan.io`,apiUrl:`https://api.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7654707}}}),My=R({id:421613,name:`Arbitrum Goerli`,nativeCurrency:{name:`Arbitrum Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://goerli-rollup.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://goerli.arbiscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:88114}},testnet:!0}),Ny=R({id:42170,name:`Arbitrum Nova`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://nova.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://nova.arbiscan.io`,apiUrl:`https://api-nova.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1746963}}}),Py=R({id:421614,name:`Arbitrum Sepolia`,blockTime:250,nativeCurrency:{name:`Arbitrum Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rollup.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://sepolia.arbiscan.io`,apiUrl:`https://api-sepolia.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:81930}},testnet:!0}),Fy=R({id:7897,name:`Arena-Z`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.arena-z.gg`]}},blockExplorers:{default:{name:`Arena-Z Explorer`,url:`https://explorer.arena-z.gg`,apiUrl:`https://explorer.arena-z.gg`}}}),Iy=R({id:463,name:`Areon Network`,nativeCurrency:{decimals:18,name:`AREA`,symbol:`AREA`},rpcUrls:{default:{http:[`https://mainnet-rpc.areon.network`],webSocket:[`wss://mainnet-ws.areon.network`]}},blockExplorers:{default:{name:`Areonscan`,url:`https://areonscan.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:353286}},testnet:!1}),Ly=R({id:462,name:`Areon Network Testnet`,nativeCurrency:{decimals:18,name:`TAREA`,symbol:`TAREA`},rpcUrls:{default:{http:[`https://testnet-rpc.areon.network`],webSocket:[`wss://testnet-ws.areon.network`]}},blockExplorers:{default:{name:`Areonscan`,url:`https://areonscan.com`}},testnet:!0}),Ry=R({id:463,name:`Areum`,nativeCurrency:{decimals:18,name:`AREA`,symbol:`AREA`},rpcUrls:{default:{http:[`https://mainnet-rpc.areum.network`],webSocket:[`wss://mainnet-ws.areum.network`]}},blockExplorers:{default:{name:`Areum Explorer`,url:`https://explorer.areum.network`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:353286}},testnet:!1}),zy=R({id:11822,name:`Artela Testnet`,nativeCurrency:{name:`ART`,symbol:`ART`,decimals:18},rpcUrls:{default:{http:[`https://betanet-rpc1.artela.network`]}},blockExplorers:{default:{name:`Artela`,url:`https://betanet-scan.artela.network`,apiUrl:`https://betanet-scan.artela.network/api`}},contracts:{multicall3:{address:`0xd07c8635f76e8745Ee7092fbb6e8fbc5FeF09DD7`,blockCreated:7001871}},testnet:!0}),By=R({id:10242,name:`Arthera`,nativeCurrency:{name:`Arthera`,symbol:`AA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.arthera.net`]}},blockExplorers:{default:{name:`Arthera EVM Explorer`,url:`https://explorer.arthera.net`,apiUrl:`https://explorer.arthera.net/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4502791}}}),Vy=R({id:10243,name:`Arthera Testnet`,nativeCurrency:{name:`Arthera`,symbol:`AA`,decimals:18},rpcUrls:{default:{http:[`https://rpc-test.arthera.net`]}},blockExplorers:{default:{name:`Arthera EVM Explorer`,url:`https://explorer-test.arthera.net`,apiUrl:`https://explorer-test.arthera.net/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:22051}}}),Hy=R({id:42420,name:`AssetChain Mainnet`,nativeCurrency:{decimals:18,name:`Real World Asset`,symbol:`RWA`},rpcUrls:{default:{http:[`https://mainnet-rpc.assetchain.org`]}},blockExplorers:{default:{name:`Asset Chain Explorer`,url:`https://scan.assetchain.org`,apiUrl:`https://scan.assetchain.org/api`}},testnet:!1,contracts:{}}),Uy=R({id:42421,name:`AssetChain Testnet`,nativeCurrency:{decimals:18,name:`Real World Asset`,symbol:`RWA`},rpcUrls:{default:{http:[`https://enugu-rpc.assetchain.org`]}},blockExplorers:{default:{name:`Asset Chain Testnet Explorer`,url:`https://scan-testnet.assetchain.org`,apiUrl:`https://scan-testnet.assetchain.org/api`}},testnet:!0,contracts:{multicall3:{address:`0x989F832D35988cb5e3eB001Fa2Fe789469EC31Ea`,blockCreated:17177}}}),Wy=R({id:592,name:`Astar`,network:`astar-mainnet`,nativeCurrency:{name:`Astar`,symbol:`ASTR`,decimals:18},rpcUrls:{default:{http:[`https://astar.api.onfinality.io/public`]}},blockExplorers:{default:{name:`Astar Subscan`,url:`https://astar.subscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:761794}},testnet:!1}),Gy=R({id:3776,name:`Astar zkEVM`,network:`AstarZkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-zkevm.astar.network`]}},blockExplorers:{default:{name:`Astar zkEVM Explorer`,url:`https://astar-zkevm.explorer.startale.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:93528}},testnet:!1}),Ky=R({id:6038361,name:`Astar zkEVM Testnet zKyoto`,network:`zKyoto`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.startale.com/zkyoto`]}},blockExplorers:{default:{name:`zKyoto Explorer`,url:`https://zkyoto.explorer.startale.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:196153}},testnet:!0}),qy=R({id:2340,name:`Atleta Olympia`,nativeCurrency:{decimals:18,name:`Atla`,symbol:`ATLA`},rpcUrls:{default:{http:[`https://testnet-rpc.atleta.network:9944`,`https://testnet-rpc.atleta.network`],ws:[`wss://testnet-rpc.atleta.network:9944`]}},blockExplorers:{default:{name:`Atleta Olympia Explorer`,url:`https://blockscout.atleta.network`,apiUrl:`https://blockscout.atleta.network/api`}},contracts:{multicall3:{address:`0x1472ec6392180fb84F345d2455bCC75B26577115`,blockCreated:1076473}},testnet:!0}),Jy=R({id:1313161554,name:`Aurora`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.aurora.dev`]}},blockExplorers:{default:{name:`Aurorascan`,url:`https://aurorascan.dev`,apiUrl:`https://aurorascan.dev/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:62907816}}}),Yy=R({id:1313161555,name:`Aurora Testnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://testnet.aurora.dev`]}},blockExplorers:{default:{name:`Aurorascan`,url:`https://testnet.aurorascan.dev`,apiUrl:`https://testnet.aurorascan.dev/api`}},testnet:!0}),Xy=R({id:205205,name:`Auroria Testnet`,network:`auroria`,nativeCurrency:{name:`Auroria Stratis`,symbol:`tSTRAX`,decimals:18},rpcUrls:{default:{http:[`https://auroria.rpc.stratisevm.com`]}},blockExplorers:{default:{name:`Auroria Testnet Explorer`,url:`https://auroria.explorer.stratisevm.com`}},testnet:!0}),Zy=R({id:785,name:`Autheo Testnet`,nativeCurrency:{decimals:18,name:`Autheo`,symbol:`THEO`},rpcUrls:{default:{http:[`https://testnet-rpc1.autheo.com`,`https://testnet-rpc2.autheo.com`]}},blockExplorers:{default:{name:`Autheo Testnet Block Explorer`,url:`https://testnet-explorer.autheo.com/`}}}),Qy=R({id:43114,name:`Avalanche`,blockTime:1700,nativeCurrency:{decimals:18,name:`Avalanche`,symbol:`AVAX`},rpcUrls:{default:{http:[`https://api.avax.network/ext/bc/C/rpc`]}},blockExplorers:{default:{name:`SnowTrace`,url:`https://snowtrace.io`,apiUrl:`https://api.snowtrace.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:11907934}}}),$y=R({id:43113,name:`Avalanche Fuji`,nativeCurrency:{decimals:18,name:`Avalanche Fuji`,symbol:`AVAX`},rpcUrls:{default:{http:[`https://api.avax-test.network/ext/bc/C/rpc`]}},blockExplorers:{default:{name:`SnowTrace`,url:`https://testnet.snowtrace.io`,apiUrl:`https://api-testnet.snowtrace.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7096959}},testnet:!0}),eb=R({id:8333,name:`B3`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.b3.fun/http`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.b3.fun`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}},sourceId:8453}),tb=R({id:1993,name:`B3 Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.b3.fun/http`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia.explorer.b3.fun`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}},testnet:!0,sourceId:168587773}),nb=R({id:5165,network:`bahamut`,name:`Bahamut`,nativeCurrency:{name:`Fasttoken`,symbol:`FTN`,decimals:18},rpcUrls:{default:{http:[`https://rpc1.bahamut.io`,`https://bahamut-rpc.publicnode.com`,`https://rpc2.bahamut.io`],webSocket:[`wss://ws1.sahara.bahamutchain.com`,`wss://bahamut-rpc.publicnode.com`,`wss://ws2.sahara.bahamutchain.com`]}},blockExplorers:{default:{name:`Ftnscan`,url:`https://www.ftnscan.com`,apiUrl:`https://www.ftnscan.com/api`}}});var rb=1;const ib=R({...z,id:8453,name:`Base`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.base.org`]}},blockExplorers:{default:{name:`Basescan`,url:`https://basescan.org`,apiUrl:`https://api.basescan.org/api`}},contracts:{...z.contracts,disputeGameFactory:{[rb]:{address:`0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e`}},l2OutputOracle:{[rb]:{address:`0x56315b90c40730925ec5485cf004d835058518A0`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:5022},portal:{[rb]:{address:`0x49048044D57e1C92A77f79988d21Fa8fAF74E97e`,blockCreated:17482143}},l1StandardBridge:{[rb]:{address:`0x3154Cf16ccdb4C6d922629664174b904d80F2C35`,blockCreated:17482143}}},sourceId:rb}),ab=R({...ib,experimental_preconfirmationTime:200,rpcUrls:{default:{http:[`https://mainnet-preconf.base.org`]}}}),ob=R({id:123420001114,name:`Basecamp Testnet`,nativeCurrency:{decimals:18,name:`Camp`,symbol:`CAMP`},rpcUrls:{default:{http:[`https://rpc.basecamp.t.raas.gelato.cloud`]}},blockExplorers:{default:{name:`basecamp`,url:`https://basecamp.cloud.blockscout.com`}},testnet:!0});var sb=5;const cb=R({...z,id:84531,name:`Base Goerli`,nativeCurrency:{name:`Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://goerli.base.org`]}},blockExplorers:{default:{name:`Basescan`,url:`https://goerli.basescan.org`,apiUrl:`https://goerli.basescan.org/api`}},contracts:{...z.contracts,l2OutputOracle:{[sb]:{address:`0x2A35891ff30313CcFa6CE88dcf3858bb075A2298`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1376988},portal:{[sb]:{address:`0xe93c8cD0D409341205A592f8c4Ac1A5fe5585cfA`}},l1StandardBridge:{[sb]:{address:`0xfA6D8Ee5BE770F84FC001D098C4bD604Fe01284a`}}},testnet:!0,sourceId:sb});var lb=11155111;const ub=R({...z,id:84532,network:`base-sepolia`,name:`Base Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.base.org`]}},blockExplorers:{default:{name:`Basescan`,url:`https://sepolia.basescan.org`,apiUrl:`https://api-sepolia.basescan.org/api`}},contracts:{...z.contracts,disputeGameFactory:{[lb]:{address:`0xd6E6dBf4F7EA0ac412fD8b65ED297e64BB7a06E1`}},l2OutputOracle:{[lb]:{address:`0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254`}},portal:{[lb]:{address:`0x49f53e41452c74589e85ca1677426ba426459e85`,blockCreated:4446677}},l1StandardBridge:{[lb]:{address:`0xfd0Bf71F60660E2f608ed56e1659C450eB113120`,blockCreated:4446677}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1059647}},testnet:!0,sourceId:lb}),db=R({...ub,experimental_preconfirmationTime:200,rpcUrls:{default:{http:[`https://sepolia-preconf.base.org`]}}}),fb=R({id:4337,name:`Beam`,network:`beam`,nativeCurrency:{decimals:18,name:`Beam`,symbol:`BEAM`},rpcUrls:{default:{http:[`https://build.onbeam.com/rpc`],webSocket:[`wss://build.onbeam.com/ws`]}},blockExplorers:{default:{name:`Beam Explorer`,url:`https://subnets.avax.network/beam`}},contracts:{multicall3:{address:`0x4956f15efdc3dc16645e90cc356eafa65ffc65ec`,blockCreated:1}}}),pb=R({id:13337,name:`Beam Testnet`,network:`beam`,nativeCurrency:{decimals:18,name:`Beam`,symbol:`BEAM`},rpcUrls:{default:{http:[`https://build.onbeam.com/rpc/testnet`],webSocket:[`wss://build.onbeam.com/ws/testnet`]}},blockExplorers:{default:{name:`Beam Explorer`,url:`https://subnets-test.avax.network/beam`}},contracts:{multicall3:{address:`0x9bf49b704ee2a095b95c1f2d4eb9010510c41c9e`,blockCreated:3}},testnet:!0}),mb=R({id:641230,name:`Bear Network Chain Mainnet`,nativeCurrency:{decimals:18,name:`BearNetworkChain`,symbol:`BRNKC`},rpcUrls:{default:{http:[`https://brnkc-mainnet.bearnetwork.net`]}},blockExplorers:{default:{name:`BrnkScan`,url:`https://brnkscan.bearnetwork.net`,apiUrl:`https://brnkscan.bearnetwork.net/api`}}}),hb=R({id:751230,name:`Bear Network Chain Testnet`,nativeCurrency:{decimals:18,name:`tBRNKC`,symbol:`tBRNKC`},rpcUrls:{default:{http:[`https://brnkc-test.bearnetwork.net`]}},blockExplorers:{default:{name:`BrnkTestScan`,url:`https://brnktest-scan.bearnetwork.net`,apiUrl:`https://brnktest-scan.bearnetwork.net/api`}},testnet:!0}),gb=R({id:80094,name:`Berachain`,blockTime:2e3,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},ensRegistry:{address:`0x5b22280886a2f5e09a49bea7e320eab0e5320e28`,blockCreated:877007},ensUniversalResolver:{address:`0x4D41762915F83c76EcaF6776d9b08076aA32b492`,blockCreated:9310021}},rpcUrls:{default:{http:[`https://rpc.berachain.com`]}},blockExplorers:{default:{name:`Berascan`,url:`https://berascan.com`}},ensTlds:[`.bera`],testnet:!1}),_b=R({id:80069,blockTime:2e3,name:`Berachain Bepolia`,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},rpcUrls:{default:{http:[`https://bepolia.rpc.berachain.com`]}},blockExplorers:{default:{name:`Berascan`,url:`https://bepolia.beratrail.io`}},testnet:!0}),vb=R({id:80085,name:`Berachain Artio`,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},rpcUrls:{default:{http:[`https://artio.rpc.berachain.com`]}},blockExplorers:{default:{name:`Berachain`,url:`https://artio.beratrail.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:866924}},testnet:!0}),yb=R({id:80084,name:`Berachain bArtio`,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:109269},ensRegistry:{address:`0xB0eef18971290b333450586D33dcA6cE122651D2`,blockCreated:7736794},ensUniversalResolver:{address:`0x41692Ef1EA0C79E6b73077E4A67572D2BDbD7057`,blockCreated:7736795}},ensTlds:[`.bera`],rpcUrls:{default:{http:[`https://bartio.rpc.berachain.com`]}},blockExplorers:{default:{name:`Berachain bArtio Beratrail`,url:`https://bartio.beratrail.io`}},testnet:!0}),bb=R({id:11501,name:`BEVM Mainnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet-1.bevm.io`]}},blockExplorers:{default:{name:`Bevmscan`,url:`https://scan-mainnet.bevm.io`,apiUrl:`https://scan-mainnet-api.bevm.io/api`}}}),xb=R({id:3068,name:`Bifrost Mainnet`,nativeCurrency:{name:`BFC`,symbol:`BFC`,decimals:18},rpcUrls:{default:{http:[`https://public-01.mainnet.bifrostnetwork.com/rpc`]}},blockExplorers:{default:{name:`Bifrost Blockscout`,url:`https://explorer.mainnet.bifrostnetwork.com`}},testnet:!1}),Sb=R({id:53456,name:`BirdLayer`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.birdlayer.xyz`,`https://rpc1.birdlayer.xyz`],webSocket:[`wss://rpc.birdlayer.xyz/ws`]}},blockExplorers:{default:{name:`BirdLayer Explorer`,url:`https://scan.birdlayer.xyz`}}}),Cb=R({id:32520,name:`Bitgert Mainnet`,nativeCurrency:{decimals:18,name:`Brise`,symbol:`Brise`},rpcUrls:{default:{http:[`https://rpc-bitgert.icecreamswap.com`]}},blockExplorers:{default:{name:`Bitgert Scan`,url:`https://brisescan.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2118034}},testnet:!1}),wb=R({id:96,name:`KUB Mainnet`,nativeCurrency:{name:`KUB Coin`,symbol:`KUB`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bitkubchain.io`]}},blockExplorers:{default:{name:`KUB Chain Mainnet Explorer`,url:`https://www.bkcscan.com`,apiUrl:`https://www.bkcscan.com/api`}}}),Tb=R({id:25925,name:`Bitkub Testnet`,network:`Bitkub Testnet`,nativeCurrency:{name:`Bitkub Test`,symbol:`tKUB`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.bitkubchain.io`]}},blockExplorers:{default:{name:`Bitkub Chain Testnet Explorer`,url:`https://testnet.bkcscan.com`,apiUrl:`https://testnet.bkcscan.com/api`}},testnet:!0}),Eb=R({id:200901,name:`Bitlayer Mainnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bitlayer.org`],webSocket:[`wss://ws.bitlayer.org`]}},blockExplorers:{default:{name:`bitlayer mainnet scan`,url:`https://www.btrscan.com`}},contracts:{multicall3:{address:`0x5B256fE9e993902eCe49D138a5b1162cBb529474`,blockCreated:2421963}}}),Db=R({id:200810,name:`Bitlayer Testnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.bitlayer.org`],webSocket:[`wss://testnet-ws.bitlayer.org`]}},blockExplorers:{default:{name:`bitlayer testnet scan`,url:`https://testnet.btrscan.com`}},contracts:{multicall3:{address:`0x5B256fE9e993902eCe49D138a5b1162cBb529474`,blockCreated:4135671}},testnet:!0}),Ob=R({id:7171,name:`Bitrock Mainnet`,nativeCurrency:{name:`BROCK`,symbol:`BROCK`,decimals:18},rpcUrls:{default:{http:[`https://brockrpc.io`]}},blockExplorers:{default:{name:`Bitrock Explorer`,url:`https://explorer.bit-rock.io`}},testnet:!1}),kb=R({id:199,name:`BitTorrent`,network:`bittorrent-chain-mainnet`,nativeCurrency:{name:`BitTorrent`,symbol:`BTT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bittorrentchain.io`]}},blockExplorers:{default:{name:`Bttcscan`,url:`https://bttcscan.com`,apiUrl:`https://api.bttcscan.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:31078552}}}),Ab=R({id:1028,name:`BitTorrent Chain Testnet`,network:`bittorrent-chain-testnet`,nativeCurrency:{name:`BitTorrent`,symbol:`BTT`,decimals:18},rpcUrls:{default:{http:[`https://testrpc.bittorrentchain.io`]}},blockExplorers:{default:{name:`Bttcscan`,url:`https://testnet.bttcscan.com`,apiUrl:`https://testnet.bttcscan.com/api`}},testnet:!0});var jb=1;const Mb=R({...z,id:81457,name:`Blast`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.blast.io`]}},blockExplorers:{default:{name:`Blastscan`,url:`https://blastscan.io`,apiUrl:`https://api.blastscan.io/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:212929},l2OutputOracle:{[jb]:{address:`0x826D1B0D4111Ad9146Eb8941D7Ca2B6a44215c76`,blockCreated:19300358}},portal:{[jb]:{address:`0x0Ec68c5B10F21EFFb74f2A5C61DFe6b08C0Db6Cb`,blockCreated:19300357}},l1StandardBridge:{[jb]:{address:`0x697402166Fbf2F22E970df8a6486Ef171dbfc524`,blockCreated:19300360}}},sourceId:jb}),Nb=R({id:168587773,name:`Blast Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.blast.io`]}},blockExplorers:{default:{name:`Blastscan`,url:`https://sepolia.blastscan.io`,apiUrl:`https://api-sepolia.blastscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:756690}},testnet:!0,sourceId:11155111});var Pb=1;const Fb=R({...z,id:60808,name:`BOB`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.gobob.xyz`],webSocket:[`wss://rpc.gobob.xyz`]}},blockExplorers:{default:{name:`BOB Explorer`,url:`https://explorer.gobob.xyz`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:23131},l2OutputOracle:{[Pb]:{address:`0xdDa53E23f8a32640b04D7256e651C1db98dB11C1`,blockCreated:4462615}},portal:{[Pb]:{address:`0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E`,blockCreated:4462615}}},sourceId:Pb}),Ib=R({id:288,name:`Boba Network`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.boba.network`]}},blockExplorers:{default:{name:`BOBAScan`,url:`https://bobascan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:446859}}}),Lb=R({id:28882,name:`Boba Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.boba.network`]}},blockExplorers:{default:{name:`BOBAScan`,url:`https://testnet.bobascan.com`}},testnet:!0});var Rb=11155111;const zb=R({...z,id:808813,name:`BOB Sepolia`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://bob-sepolia.rpc.gobob.xyz`],webSocket:[`wss://bob-sepolia.rpc.gobob.xyz`]}},blockExplorers:{default:{name:`BOB Sepolia Explorer`,url:`https://bob-sepolia.explorer.gobob.xyz`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:35677},l2OutputOracle:{[Rb]:{address:`0x14D0069452b4AE2b250B395b8adAb771E4267d2f`,blockCreated:4462615}},portal:{[Rb]:{address:`0x867B1Aa872b9C8cB5E9F7755feDC45BB24Ad0ae4`,blockCreated:4462615}}},testnet:!0,sourceId:Rb}),Bb=R({id:11100,name:`Bool Beta Mainnet`,nativeCurrency:{decimals:18,name:`BOL`,symbol:`BOL`},rpcUrls:{default:{http:[`https://beta-rpc-node-http.bool.network`]}},blockExplorers:{default:{name:`BoolScan`,url:`https://beta-mainnet.boolscan.com/`}},testnet:!1}),Vb=R({id:3637,name:`Botanix`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.botanixlabs.com`],webSocket:[`wss://rpc.botanixlabs.com/ws`]}},blockExplorers:{default:{name:`Botanixscan`,url:`https://botanixscan.io`}}}),Hb=R({id:3636,name:`Botanix Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://node.botanixlabs.dev`]}},blockExplorers:{default:{name:`Botanix Testnet Explorer`,url:`https://testnet.botanixscan.io`}},testnet:!0}),Ub=R({id:6001,name:`BounceBit Mainnet`,nativeCurrency:{name:`BounceBit`,symbol:`BB`,decimals:18},rpcUrls:{default:{http:[`https://fullnode-mainnet.bouncebitapi.com`]}},blockExplorers:{default:{name:`BB Scan`,url:`https://bbscan.io`}},testnet:!1}),Wb=R({id:6e3,name:`BounceBit Testnet`,nativeCurrency:{name:`BounceBit`,symbol:`BB`,decimals:18},rpcUrls:{default:{http:[`https://fullnode-testnet.bouncebitapi.com`]}},blockExplorers:{default:{name:`BB Scan`,url:`https://testnet.bbscan.io`}},testnet:!0}),Gb=R({id:1039,name:`Bronos`,nativeCurrency:{decimals:18,name:`BRO`,symbol:`BRO`},rpcUrls:{default:{http:[`https://evm.bronos.org`]}},blockExplorers:{default:{name:`BronoScan`,url:`https://broscan.bronos.org`}}}),Kb=R({id:1038,name:`Bronos Testnet`,nativeCurrency:{decimals:18,name:`Bronos Coin`,symbol:`tBRO`},rpcUrls:{default:{http:[`https://evm-testnet.bronos.org`]}},blockExplorers:{default:{name:`BronoScan`,url:`https://tbroscan.bronos.org`}},testnet:!0}),qb=R({id:56,name:`BNB Smart Chain`,blockTime:750,nativeCurrency:{decimals:18,name:`BNB`,symbol:`BNB`},rpcUrls:{default:{http:[`https://56.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`BscScan`,url:`https://bscscan.com`,apiUrl:`https://api.bscscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:15921452}}}),Jb=R({id:1017,name:`BNB Greenfield Chain`,nativeCurrency:{decimals:18,name:`BNB`,symbol:`BNB`},rpcUrls:{default:{http:[`https://greenfield-chain.bnbchain.org`]}},blockExplorers:{default:{name:`BNB Greenfield Mainnet Scan`,url:`https://greenfieldscan.com`}},testnet:!1}),Yb=R({id:97,name:`BNB Smart Chain Testnet`,nativeCurrency:{decimals:18,name:`BNB`,symbol:`tBNB`},rpcUrls:{default:{http:[`https://data-seed-prebsc-1-s1.bnbchain.org:8545`]}},blockExplorers:{default:{name:`BscScan`,url:`https://testnet.bscscan.com`,apiUrl:`https://api-testnet.bscscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:17422483}},testnet:!0}),Xb=R({id:223,name:`B2`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bsquared.network`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.bsquared.network`}}}),Zb=R({id:1123,name:`B2 Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.bsquared.network`]}},blockExplorers:{default:{name:`blockscout`,url:`https://testnet-explorer.bsquared.network`}},testnet:!0}),Qb=R({id:200901,name:`Bitlayer`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bitlayer.org`,`https://rpc.bitlayer-rpc.com`],webSocket:[`wss://ws.bitlayer.org`,`wss://ws.bitlayer-rpc.com`]}},blockExplorers:{default:{name:`Bitlayer(BTR) Scan`,url:`https://www.btrscan.com`}}}),$b=R({id:200810,name:`Bitlayer Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.bitlayer.org`],webSocket:[`wss://testnet-ws.bitlayer.org`,`wss://testnet-ws.bitlayer-rpc.com`]}},blockExplorers:{default:{name:`Bitlayer(BTR) Scan`,url:`https://testnet.btrscan.com`}},testnet:!0}),ex=R({id:4999,name:`BlackFort Exchange Network`,nativeCurrency:{name:`BlackFort Token`,symbol:`BXN`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.blackfort.network/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.blackfort.network`,apiUrl:`https://explorer.blackfort.network/api`}}}),tx=R({id:4777,name:`BlackFort Exchange Network Testnet`,nativeCurrency:{name:`BlackFort Testnet Token`,symbol:`TBXN`,decimals:18},rpcUrls:{default:{http:[`https://testnet.blackfort.network/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer.blackfort.network`,apiUrl:`https://testnet-explorer.blackfort.network/api`}},testnet:!0}),nx=R({id:13370,name:`Cannon`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`]}}}),rx=R({id:7700,name:`Canto`,nativeCurrency:{decimals:18,name:`Canto`,symbol:`CANTO`},rpcUrls:{default:{http:[`https://canto.gravitychain.io`]}},blockExplorers:{default:{name:`Tuber.Build (Blockscout)`,url:`https://tuber.build`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2905789}}}),ix={estimateFeesPerGas:async e=>{if(!e.request?.feeCurrency)return null;let[t,n]=await Promise.all([ax(e.client,e.request.feeCurrency),ox(e.client,e.request.feeCurrency)]);return{maxFeePerGas:e.multiply(t-n)+n,maxPriorityFeePerGas:n}}};async function ax(e,t){let n=await e.request({method:`eth_gasPrice`,params:[t]});return BigInt(n)}async function ox(e,t){let n=await e.request({method:`eth_maxPriorityFeePerGas`,params:[t]});return BigInt(n)}Sn();function sx(e){return e===0||e===0n||e==null||e===`0`||e===``||typeof e==`string`&&(xn(e).toLowerCase()===`0x`||xn(e).toLowerCase()===`0x00`)}function cx(e){return!sx(e)}function lx(e){return e.maxFeePerGas!==void 0&&e.maxPriorityFeePerGas!==void 0}function ux(e){return e.type===`cip64`?!0:lx(e)&&cx(e.feeCurrency)}Dn(),Uu();const dx={block:cd({format(e){return{transactions:e.transactions?.map(e=>typeof e==`string`?e:{...id(e),...e.gatewayFee?{gatewayFee:wn(e.gatewayFee),gatewayFeeRecipient:e.gatewayFeeRecipient}:{},feeCurrency:e.feeCurrency})}}}),transaction:ad({format(e){if(e.type===`0x7e`)return{isSystemTx:e.isSystemTx,mint:e.mint?wn(e.mint):void 0,sourceHash:e.sourceHash,type:`deposit`};let t={feeCurrency:e.feeCurrency};return e.type===`0x7b`?t.type=`cip64`:(e.type===`0x7c`&&(t.type=`cip42`),t.gatewayFee=e.gatewayFee?wn(e.gatewayFee):null,t.gatewayFeeRecipient=e.gatewayFeeRecipient),t}}),transactionRequest:Hu({format(e){let t={};return e.feeCurrency&&(t.feeCurrency=e.feeCurrency),ux(e)&&(t.type=`0x7b`),t}})};Xu(),pi(),O(),Dp(),ju(),Ci(),Di(),A();function fx(e,t){return ux(e)?mx(e,t):yy(e,t)}const px={transaction:fx};function mx(e,t){gx(e);let{chainId:n,gas:r,nonce:i,to:a,value:o,maxFeePerGas:s,maxPriorityFeePerGas:c,accessList:l,feeCurrency:u,data:d}=e,f=[On(n),i?On(i):`0x`,c?On(c):`0x`,s?On(s):`0x`,r?On(r):`0x`,a??`0x`,o?On(o):`0x`,d??`0x`,ah(l),u,...fh(e,t)];return Ei([`0x7b`,N(f)])}var hx=Yu;function gx(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:r,maxFeePerGas:i,to:a,feeCurrency:o}=e;if(t<=0)throw new Ep({chainId:t});if(a&&!bi(a))throw new fi({address:a});if(r)throw new D("`gasPrice` is not a valid CIP-64 Transaction attribute.");if(cx(i)&&i>hx)throw new bu({maxFeePerGas:i});if(cx(n)&&cx(i)&&n>i)throw new ku({maxFeePerGas:i,maxPriorityFeePerGas:n});if(cx(o)&&!bi(o))throw new D("`feeCurrency` MUST be a token address for CIP-64 transactions.");if(sx(o))throw new D("`feeCurrency` must be provided for CIP-64 transactions.")}const _x={blockTime:1e3,contracts:_y,formatters:dx,serializers:px,fees:ix},vx=R({..._x,id:42220,name:`Celo`,nativeCurrency:{decimals:18,name:`CELO`,symbol:`CELO`},rpcUrls:{default:{http:[`https://forno.celo.org`]}},blockExplorers:{default:{name:`Celo Explorer`,url:`https://celoscan.io`,apiUrl:`https://api.celoscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:13112599}},testnet:!1});var yx=17e3;const bx=R({..._x,id:44787,name:`Alfajores`,nativeCurrency:{decimals:18,name:`CELO`,symbol:`A-CELO`},rpcUrls:{default:{http:[`https://alfajores-forno.celo-testnet.org`]}},blockExplorers:{default:{name:`Celo Alfajores Explorer`,url:`https://celo-alfajores.blockscout.com`,apiUrl:`https://celo-alfajores.blockscout.com/api`}},contracts:{..._x.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:14569001},portal:{[yx]:{address:`0x82527353927d8D069b3B452904c942dA149BA381`,blockCreated:2411324}},disputeGameFactory:{[yx]:{address:`0xE28AAdcd9883746c0e5068F58f9ea06027b214cb`,blockCreated:2411324}},l2OutputOracle:{[yx]:{address:`0x4a2635e9e4f6e45817b1D402ac4904c1d1752438`,blockCreated:2411324}},l1StandardBridge:{[yx]:{address:`0xD1B0E0581973c9eB7f886967A606b9441A897037`,blockCreated:2411324}}},testnet:!0});var xx=11155111;const Sx=R({..._x,id:11142220,name:`Celo Sepolia Testnet`,nativeCurrency:{decimals:18,name:`CELO`,symbol:`S-CELO`},rpcUrls:{default:{http:[`https://forno.celo-sepolia.celo-testnet.org`]}},blockExplorers:{default:{name:`Celo Sepolia Explorer`,url:`https://celo-sepolia.blockscout.com/`,apiUrl:`https://celo-sepolia.blockscout.com/api`}},contracts:{..._x.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1},portal:{[xx]:{address:`0x44ae3d41a335a7d05eb533029917aad35662dcc2`,blockCreated:8825790}},disputeGameFactory:{[xx]:{address:`0x57c45d82d1a995f1e135b8d7edc0a6bb5211cfaa`,blockCreated:8825790}},l1StandardBridge:{[xx]:{address:`0xec18a3c30131a0db4246e785355fbc16e2eaf408`,blockCreated:8825790}}},testnet:!0}),Cx=R({id:5858,name:`Chang Chain Foundation Mainnet`,nativeCurrency:{decimals:18,name:`CTH`,symbol:`CTH`},rpcUrls:{default:{http:[`https://rpc.cthscan.com`]}},blockExplorers:{default:{name:`Chang Chain explorer`,url:`https://cthscan.com`}}}),wx=R({id:88888,name:`Chiliz Chain`,network:`chiliz-chain`,nativeCurrency:{decimals:18,name:`CHZ`,symbol:`CHZ`},rpcUrls:{default:{http:[`https://rpc.chiliz.com`]}},blockExplorers:{default:{name:`Chiliz Explorer`,url:`https://scan.chiliz.com`,apiUrl:`https://scan.chiliz.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:8080847}}}),Tx=R({id:2882,name:`Chips Network`,network:`CHIPS`,nativeCurrency:{decimals:18,name:`IOTA`,symbol:`IOTA`},rpcUrls:{default:{http:[`https://node.chips.ooo/wasp/api/v1/chains/iota1pp3d3mnap3ufmgqnjsnw344sqmf5svjh26y2khnmc89sv6788y3r207a8fn/evm`]}}}),Ex=R({id:5115,name:`Citrea Testnet`,nativeCurrency:{name:`cBTC`,symbol:`cBTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.citrea.xyz`]}},blockExplorers:{default:{name:`Citrea Explorer`,url:`https://explorer.testnet.citrea.xyz`,apiUrl:`https://explorer.testnet.citrea.xyz/api`}},testnet:!0}),Dx=R({id:61,name:`Ethereum Classic`,nativeCurrency:{decimals:18,name:`ETC`,symbol:`ETC`},rpcUrls:{default:{http:[`https://etc.rivet.link`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.com/etc/mainnet`}}}),Ox=R({id:112,name:`Coinbit Mainnet`,nativeCurrency:{name:`GIDR`,symbol:`GIDR`,decimals:18},rpcUrls:{default:{http:[`https://coinbit-rpc-mainnet.chain.sbcrypto.app`]}},blockExplorers:{default:{name:`Coinbit Explorer`,url:`https://coinbit-explorer.chain.sbcrypto.app`}},testnet:!1}),kx=R({id:52,name:`CoinEx Mainnet`,nativeCurrency:{name:`cet`,symbol:`cet`,decimals:18},rpcUrls:{default:{http:[`https://rpc.coinex.net`]}},blockExplorers:{default:{name:`CoinEx Explorer`,url:`https://www.coinex.net`}},testnet:!1}),Ax=R({id:1030,name:`Conflux eSpace`,nativeCurrency:{name:`Conflux`,symbol:`CFX`,decimals:18},rpcUrls:{default:{http:[`https://evm.confluxrpc.com`],webSocket:[`wss://evm.confluxrpc.com/ws`]}},blockExplorers:{default:{name:`ConfluxScan`,url:`https://evm.confluxscan.org`}},contracts:{multicall3:{address:`0xEFf0078910f638cd81996cc117bccD3eDf2B072F`,blockCreated:68602935}}}),jx=R({id:71,name:`Conflux eSpace Testnet`,network:`cfx-espace-testnet`,testnet:!0,nativeCurrency:{name:`Conflux`,symbol:`CFX`,decimals:18},rpcUrls:{default:{http:[`https://evmtestnet.confluxrpc.com`],webSocket:[`wss://evmtestnet.confluxrpc.com/ws`]}},blockExplorers:{default:{name:`ConfluxScan`,url:`https://evmtestnet.confluxscan.org`}},contracts:{multicall3:{address:`0xEFf0078910f638cd81996cc117bccD3eDf2B072F`,blockCreated:117499050}}}),Mx=R({id:1116,name:`Core Dao`,nativeCurrency:{decimals:18,name:`Core`,symbol:`CORE`},rpcUrls:{default:{http:[`https://rpc.coredao.org`]}},blockExplorers:{default:{name:`CoreDao`,url:`https://scan.coredao.org`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:11907934}},testnet:!1}),Nx=R({id:1115,name:`Core Testnet`,nativeCurrency:{decimals:18,name:`tCore`,symbol:`TCORE`},rpcUrls:{default:{http:[`https://rpc.test.btcs.network`]}},blockExplorers:{default:{name:`Core Testnet`,url:`https://scan.test.btcs.network`,apiUrl:`https://api.test.btcs.network/api`}},contracts:{multicall3:{address:`0xCcddF20A1932537123C2E48Bd8e00b108B8f7569`,blockCreated:29350509}},testnet:!0}),Px=R({id:1114,name:`Core Testnet2`,nativeCurrency:{decimals:18,name:`tCore2`,symbol:`TCORE2`},rpcUrls:{default:{http:[`https://rpc.test2.btcs.network`]}},blockExplorers:{default:{name:`Core Testnet2`,url:`https://scan.test2.btcs.network`,apiUrl:`https://api.test2.btcs.network/api`}},contracts:{multicall3:{address:`0x3CB285ff3Cd5C7C7e570b1E7DE3De17A0f985e56`,blockCreated:3838600}},testnet:!0}),Fx=R({id:21e6,name:`Corn`,nativeCurrency:{decimals:18,name:`Bitcorn`,symbol:`BTCN`},rpcUrls:{default:{http:[`https://21000000.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Corn Explorer`,url:`https://cornscan.io`,apiUrl:`https://api.routescan.io/v2/network/mainnet/evm/21000000/etherscan/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3228}},sourceId:1}),Ix=R({id:21000001,name:`Corn Testnet`,nativeCurrency:{decimals:18,name:`Bitcorn`,symbol:`BTCN`},rpcUrls:{default:{http:[`https://21000001.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Corn Testnet Explorer`,url:`https://testnet.cornscan.io`,apiUrl:`https://api.routescan.io/v2/network/testnet/evm/21000001/etherscan/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4886}},testnet:!0,sourceId:11155111}),Lx=R({id:44,name:`Crab Network`,nativeCurrency:{decimals:18,name:`Crab Network Native Token`,symbol:`CRAB`},rpcUrls:{default:{http:[`https://crab-rpc.darwinia.network`],webSocket:[`wss://crab-rpc.darwinia.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://crab-scan.darwinia.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3032593}}}),Rx=R({id:66665,name:`Creator`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.creatorchain.io`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.creatorchain.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},testnet:!0}),zx=R({id:102032,name:`Creditcoin Devnet`,nativeCurrency:{name:`Devnet CTC`,symbol:`devCTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.cc3-devnet.creditcoin.network`],webSocket:[`wss://rpc.cc3-devnet.creditcoin.network/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://creditcoin-devnet.blockscout.com`,apiUrl:`https://creditcoin3-dev.subscan.io`}},testnet:!0}),Bx=R({id:102030,name:`Creditcoin`,nativeCurrency:{name:`Creditcoin`,symbol:`CTC`,decimals:18},rpcUrls:{default:{http:[`https://mainnet3.creditcoin.network`],webSocket:[`wss://mainnet3.creditcoin.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://creditcoin.blockscout.com`,apiUrl:`https://creditcoin.blockscout.com/api`}},testnet:!1}),Vx=R({id:102031,name:`Creditcoin Testnet`,nativeCurrency:{name:`Creditcoin Testnet`,symbol:`tCTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.cc3-testnet.creditcoin.network`],webSocket:[`wss://rpc.cc3-testnet.creditcoin.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://creditcoin-testnet.blockscout.com`,apiUrl:`https://creditcoin-testnet.blockscout.com/api`}},testnet:!0}),Hx=R({id:25,name:`Cronos Mainnet`,nativeCurrency:{decimals:18,name:`Cronos`,symbol:`CRO`},rpcUrls:{default:{http:[`https://evm.cronos.org`]}},blockExplorers:{default:{name:`Cronos Explorer`,url:`https://explorer.cronos.org`,apiUrl:`https://explorer-api.cronos.org/mainnet/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1963112}}}),Ux=R({id:338,name:`Cronos Testnet`,nativeCurrency:{decimals:18,name:`CRO`,symbol:`tCRO`},rpcUrls:{default:{http:[`https://evm-t3.cronos.org`]}},blockExplorers:{default:{name:`Cronos Explorer (Testnet)`,url:`https://explorer.cronos.org/testnet`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:10191251}},testnet:!0}),Wx=R({id:388,name:`Cronos zkEVM Mainnet`,nativeCurrency:{decimals:18,name:`Cronos zkEVM CRO`,symbol:`zkCRO`},rpcUrls:{default:{http:[`https://mainnet.zkevm.cronos.org`]}},blockExplorers:{default:{name:`Cronos zkEVM (Mainnet) Chain Explorer`,url:`https://explorer.zkevm.cronos.org`}},contracts:{multicall3:{address:`0x06f4487d7c4a5983d2660db965cc6d2565e4cfaa`,blockCreated:72}}}),Gx=R({id:282,name:`Cronos zkEVM Testnet`,nativeCurrency:{decimals:18,name:`Cronos zkEVM Test Coin`,symbol:`zkTCRO`},rpcUrls:{default:{http:[`https://testnet.zkevm.cronos.org`]}},blockExplorers:{default:{name:`Cronos zkEVM Testnet Explorer`,url:`https://explorer.zkevm.cronos.org/testnet`}},testnet:!0}),Kx=R({id:3737,name:`Crossbell`,nativeCurrency:{decimals:18,name:`CSB`,symbol:`CSB`},rpcUrls:{default:{http:[`https://rpc.crossbell.io`]}},blockExplorers:{default:{name:`CrossScan`,url:`https://scan.crossbell.io`,apiUrl:`https://scan.crossbell.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:38246031}}}),qx=R({id:4158,name:`CrossFi Mainnet`,nativeCurrency:{decimals:18,name:`CrossFi`,symbol:`XFI`},rpcUrls:{default:{http:[`https://rpc.mainnet.ms`]}},blockExplorers:{default:{name:`CrossFi Blockchain Explorer`,url:`https://xfiscan.com`}},testnet:!1}),Jx=R({id:33111,name:`Curtis`,nativeCurrency:{name:`ApeCoin`,symbol:`APE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.curtis.apechain.com`]}},blockExplorers:{default:{name:`Curtis Explorer`,url:`https://explorer.curtis.apechain.com`}},testnet:!0}),Yx=R({id:7560,name:`Cyber`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://cyber.alt.technology`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://cyberscan.co`,apiUrl:`https://cyberscan.co/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),Xx=R({id:111557560,name:`Cyber Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://cyber-testnet.alt.technology`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet.cyberscan.co`,apiUrl:`https://testnet.cyberscan.co/api`}},contracts:{multicall3:{address:`0xffc391F0018269d4758AEA1a144772E8FB99545E`,blockCreated:304545}},testnet:!0}),Zx=R({id:824,name:`Daily Network Mainnet`,nativeCurrency:{decimals:18,name:`Daily`,symbol:`DLY`},rpcUrls:{default:{http:[`https://rpc.mainnet.dailycrypto.net`]}},blockExplorers:{default:{name:`Daily Mainnet Explorer`,url:`https://explorer.mainnet.dailycrypto.net`}},testnet:!1}),Qx=R({id:825,name:`Daily Network Testnet`,nativeCurrency:{decimals:18,name:`Daily`,symbol:`DLY`},rpcUrls:{default:{http:[`https://rpc.testnet.dailycrypto.net`]}},blockExplorers:{default:{name:`Daily Testnet Explorer`,url:`https://explorer.testnet.dailycrypto.net`}},testnet:!0}),$x=R({id:46,name:`Darwinia Network`,nativeCurrency:{decimals:18,name:`RING`,symbol:`RING`},rpcUrls:{default:{http:[`https://rpc.darwinia.network`],webSocket:[`wss://rpc.darwinia.network`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.darwinia.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:69420}}}),eS=R({id:20240603,name:`DBK chain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.dbkchain.io`]}},blockExplorers:{default:{name:`DBK Chain Explorer`,url:`https://scan.dbkchain.io`}},testnet:!1}),tS=R({...z,id:0x9a697f88076c8,name:`Dchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://dchain-2716446429837000-1.jsonrpc.sagarpc.io`]}},blockExplorers:{default:{name:`Dchain Explorer`,url:`https://dchain-2716446429837000-1.sagaexplorer.io`,apiUrl:`https://api-dchain-2716446429837000-1.sagaexplorer.io/api`}},contracts:{...z.contracts}}),nS=R({...z,id:0x9a379ba03cf10,name:`Dchain Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://dchaintestnet-2713017997578000-1.jsonrpc.testnet.sagarpc.io`]}},blockExplorers:{default:{name:`Dchain Explorer`,url:`https://dchaintestnet-2713017997578000-1.testnet.sagaexplorer.io`,apiUrl:`https://api-dchaintestnet-2713017997578000-1.testnet.sagaexplorer.io/api`}},contracts:{...z.contracts}}),rS=R({id:1130,network:`defichain-evm`,name:`DeFiChain EVM Mainnet`,nativeCurrency:{name:`DeFiChain`,symbol:`DFI`,decimals:18},rpcUrls:{default:{http:[`https://eth.mainnet.ocean.jellyfishsdk.com`]}},blockExplorers:{default:{name:`DeFiScan`,url:`https://meta.defiscan.live`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:137852}}}),iS=R({id:1131,network:`defichain-evm-testnet`,name:`DeFiChain EVM Testnet`,nativeCurrency:{name:`DeFiChain`,symbol:`DFI`,decimals:18},rpcUrls:{default:{http:[`https://eth.testnet.ocean.jellyfishsdk.com`]}},blockExplorers:{default:{name:`DeFiScan`,url:`https://meta.defiscan.live/?network=TestNet`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:156462}},testnet:!0}),aS=R({id:666666666,name:`Degen`,nativeCurrency:{decimals:18,name:`Degen`,symbol:`DEGEN`},rpcUrls:{default:{http:[`https://rpc.degen.tips`],webSocket:[`wss://rpc.degen.tips`]}},blockExplorers:{default:{name:`Degen Chain Explorer`,url:`https://explorer.degen.tips`,apiUrl:`https://explorer.degen.tips/api/v2`}}}),oS=R({id:53935,name:`DFK Chain`,nativeCurrency:{decimals:18,name:`Jewel`,symbol:`JEWEL`},rpcUrls:{default:{http:[`https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc`]}},blockExplorers:{default:{name:`DFKSubnetScan`,url:`https://subnets.avax.network/defi-kingdoms`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14790551}}}),sS=R({id:15,name:`Diode Prenet`,nativeCurrency:{decimals:18,name:`DIODE`,symbol:`DIODE`},rpcUrls:{default:{http:[`https://prenet.diode.io:8443`],webSocket:[`wss://prenet.diode.io:8443/ws`]}},blockExplorers:{default:{name:`Diode Explorer`,url:`https://diode.io/prenet`}},testnet:!1}),cS=R({id:513100,name:`DisChain`,nativeCurrency:{decimals:18,name:`DIS`,symbol:`DIS`},rpcUrls:{default:{http:[`https://rpc.dischain.xyz`]}},blockExplorers:{default:{name:`DisChain Explorer`,url:`https://www.oklink.com/dis`}}}),lS=R({id:53457,name:`DODOchain Testnet`,nativeCurrency:{decimals:18,name:`DODO`,symbol:`DODO`},rpcUrls:{default:{http:[`https://dodochain-testnet.alt.technology`],webSocket:[`wss://dodochain-testnet.alt.technology/ws`]}},blockExplorers:{default:{name:`DODOchain Testnet (Sepolia) Explorer`,url:`https://testnet-scan.dodochain.com`}},testnet:!0}),uS=R({id:2e3,name:`Dogechain`,nativeCurrency:{decimals:18,name:`Wrapped Dogecoin`,symbol:`WDOGE`},rpcUrls:{default:{http:[`https://rpc.dogechain.dog`]}},blockExplorers:{default:{name:`DogeChainExplorer`,url:`https://explorer.dogechain.dog`,apiUrl:`https://explorer.dogechain.dog/api`}},contracts:{multicall3:{address:`0x68a8609a60a008EFA633dfdec592c03B030cC508`,blockCreated:25384031}}}),dS=R({id:97476,name:`Doma Testnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc-testnet.doma.xyz`]}},blockExplorers:{default:{name:`Doma Testnet Explorer`,url:`https://explorer-testnet.doma.xyz`}},testnet:!0}),fS=R({id:42026,name:`Donatuz`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.donatuz.com`]}},blockExplorers:{default:{name:`Donatuz Explorer`,url:`https://explorer.donatuz.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}}}),pS=R({id:7979,name:`DOS Chain`,nativeCurrency:{decimals:18,name:`DOS Chain`,symbol:`DOS`},rpcUrls:{default:{http:[`https://main.doschain.com`]}},blockExplorers:{default:{name:`DOS Chain Explorer`,url:`https://doscan.io`,apiUrl:`https://api.doscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:161908}}}),mS=R({id:3939,name:`DOS Chain Testnet`,nativeCurrency:{decimals:18,name:`DOS Chain Testnet`,symbol:`DOS`},rpcUrls:{default:{http:[`https://test.doschain.com`]}},blockExplorers:{default:{name:`DOS Chain Testnet Explorer`,url:`https://test.doscan.io`,apiUrl:`https://api-test.doscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:69623}},testnet:!0}),hS=R({id:23451,name:`DreyerX Mainnet`,nativeCurrency:{name:`DreyerX`,symbol:`DRX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.dreyerx.com`]}},blockExplorers:{default:{name:`DreyerX Scan`,url:`https://scan.dreyerx.com`}}}),gS=R({id:23452,name:`DreyerX Testnet`,nativeCurrency:{name:`DreyerX`,symbol:`DRX`,decimals:18},rpcUrls:{default:{http:[`http://testnet-rpc.dreyerx.com`]}},blockExplorers:{default:{name:`DreyerX Testnet Scan`,url:`https://testnet-scan.dreyerx.com`}},testnet:!0}),_S=R({id:555888,name:`DustBoy IoT`,nativeCurrency:{name:`Ether`,symbol:`DST`,decimals:18},rpcUrls:{default:{http:[`https://dustboy-rpc.jibl2.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://dustboy.jibl2.com`,apiUrl:`https://dustboy.jibl2.com/api`}},contracts:{multicall3:{address:`0xFFD34aa2C62B2D52E00A361e466C229788f4eD6a`,blockCreated:526569}},testnet:!1}),vS=R({id:1100,name:`Dymension`,nativeCurrency:{name:`DYM`,symbol:`DYM`,decimals:18},rpcUrls:{default:{http:[`https://dymension-evm-rpc.publicnode.com`],webSocket:[`wss://dymension-evm-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Dym FYI`,url:`https://dym.fyi`}},testnet:!1}),yS=R({id:5424,name:`edeXa`,nativeCurrency:{name:`edeXa`,symbol:`EDX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.edexa.network`]}},blockExplorers:{default:{name:`edeXa Explorer`,url:`https://explorer.edexa.network`,apiUrl:`https://explorer.edexa.network/api/v2`}}}),bS=R({id:1995,name:`edeXa Testnet`,nativeCurrency:{name:`edeXa`,symbol:`tEDX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.edexa.network`]}},blockExplorers:{default:{name:`edeXa Testnet Explorer`,url:`https://explorer.testnet.edexa.network`,apiUrl:`https://explorer.testnet.edexa.network/api/v2`}},testnet:!0}),xS=R({id:2026,name:`Edgeless Network`,nativeCurrency:{name:`Edgeless Wrapped ETH`,symbol:`EwETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.edgeless.network/http`],webSocket:[`wss://rpc.edgeless.network/ws`]}},blockExplorers:{default:{name:`Edgeless Explorer`,url:`https://explorer.edgeless.network`}}}),SS=R({id:202,name:`Edgeless Testnet`,nativeCurrency:{name:`Edgeless Wrapped ETH`,symbol:`EwETH`,decimals:18},rpcUrls:{default:{http:[`https://edgeless-testnet.rpc.caldera.xyz/http`],webSocket:[`wss://edgeless-testnet.rpc.caldera.xyz/ws`]}},blockExplorers:{default:{name:`Edgeless Testnet Explorer`,url:`https://testnet.explorer.edgeless.network`}}}),CS=R({id:2021,name:`Edgeware EdgeEVM Mainnet`,nativeCurrency:{decimals:18,name:`Edgeware`,symbol:`EDG`},rpcUrls:{default:{http:[`https://edgeware-evm.jelliedowl.net`]}},blockExplorers:{default:{name:`Edgscan by Bharathcoorg`,url:`https://edgscan.live`,apiUrl:`https://edgscan.live/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:18117872}}}),wS=R({id:2022,name:`Beresheet BereEVM Testnet`,nativeCurrency:{decimals:18,name:`Testnet EDG`,symbol:`tEDG`},rpcUrls:{default:{http:[`https://beresheet-evm.jelliedowl.net`]}},blockExplorers:{default:{name:`Edgscan by Bharathcoorg`,url:`https://testnet.edgscan.live`,apiUrl:`https://testnet.edgscan.live/api`}}}),TS=R({id:41923,name:`EDU Chain`,nativeCurrency:{decimals:18,name:`EDU`,symbol:`EDU`},rpcUrls:{default:{http:[`https://rpc.edu-chain.raas.gelato.cloud`]}},blockExplorers:{default:{name:`EDU Chain Explorer`,url:`https://educhain.blockscout.com/`}},testnet:!1}),ES=R({id:656476,name:`EDU Chain Testnet`,nativeCurrency:{decimals:18,name:`EDU`,symbol:`EDU`},rpcUrls:{default:{http:[`https://rpc.open-campus-codex.gelato.digital/`],webSocket:[`wss://ws.open-campus-codex.gelato.digital`]}},blockExplorers:{default:{name:`EDU Chain Testnet Explorer`,url:`https://opencampus-codex.blockscout.com`,apiUrl:`https://opencampus-codex.blockscout.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:15514133}},testnet:!0}),DS=R({id:1994,name:`Ekta`,nativeCurrency:{decimals:18,name:`EKTA`,symbol:`EKTA`},rpcUrls:{default:{http:[`https://main.ekta.io`]}},blockExplorers:{default:{name:`Ektascan`,url:`https://ektascan.io`,apiUrl:`https://ektascan.io/api`}}}),OS=R({id:1004,name:`Ekta Testnet`,nativeCurrency:{decimals:18,name:`EKTA`,symbol:`EKTA`},rpcUrls:{default:{http:[`https://test.ekta.io:8545`]}},blockExplorers:{default:{name:`Test Ektascan`,url:`https://test.ektascan.io`,apiUrl:`https://test.ektascan.io/api`}},testnet:!0}),kS=R({id:20,name:`Elastos Smart Chain`,nativeCurrency:{name:`ELA`,symbol:`ELA`,decimals:18},rpcUrls:{default:{http:[`https://api2.elastos.io/eth`]}},blockExplorers:{default:{name:`Elastos Explorer`,url:`https://esc.elastos.io`}},testnet:!1}),AS=R({id:21,name:`Elastos Smart Chain Testnet`,nativeCurrency:{name:`tELA`,symbol:`tELA`,decimals:18},rpcUrls:{default:{http:[`https://api-testnet.elastos.io/eth`]}},blockExplorers:{default:{name:`Elastos Explorer`,url:`https://esc-testnet.elastos.io`}},testnet:!0}),jS=R({id:52014,name:`Electroneum Mainnet`,nativeCurrency:{name:`ETN`,symbol:`ETN`,decimals:18},rpcUrls:{default:{http:[`https://rpc.electroneum.com`]}},blockExplorers:{default:{name:`Electroneum Block Explorer`,url:`https://blockexplorer.electroneum.com`}},testnet:!1}),MS=R({id:5201420,name:`Electroneum Testnet`,nativeCurrency:{name:`ETN`,symbol:`ETN`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.electroneum.com`]}},blockExplorers:{default:{name:`Electroneum Block Explorer`,url:`https://blockexplorer.thesecurityteam.rocks`}},testnet:!0}),NS=R({...z,id:1338,name:`Elysium Testnet`,nativeCurrency:{decimals:18,name:`LAVA`,symbol:`LAVA`},rpcUrls:{default:{http:[`https://elysium-test-rpc.vulcanforged.com`]}},blockExplorers:{default:{name:`Elysium testnet explorer`,url:`https://elysium-explorer.vulcanforged.com`}},testnet:!0}),PS=R({id:246,name:`Energy Mainnet`,nativeCurrency:{name:`EWT`,symbol:`EWT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.energyweb.org`]}},blockExplorers:{default:{name:`EnergyWeb Explorer`,url:`https://explorer.energyweb.org`}},testnet:!1}),FS=R({id:173,name:`ENI Mainnet`,nativeCurrency:{decimals:18,name:`ENI`,symbol:`ENI`},rpcUrls:{default:{http:[`https://rpc.eniac.network`]}},blockExplorers:{default:{name:`ENI Explorer`,url:`https://scan.eniac.network`}},testnet:!1}),IS=R({id:6912115,name:`ENI Testnet`,nativeCurrency:{decimals:18,name:`ENI Testnet Token`,symbol:`ENI`},rpcUrls:{default:{http:[`https://rpc-testnet.eniac.network`]}},blockExplorers:{default:{name:`ENI Testnet Explorer`,url:`https://scan-testnet.eniac.network`}},testnet:!0}),LS=R({id:119,name:`ENULS Mainnet`,nativeCurrency:{decimals:18,name:`NULS`,symbol:`NULS`},rpcUrls:{default:{http:[`https://evmapi2.nuls.io`]}},blockExplorers:{default:{name:`ENULS Explorer`,url:`https://evmscan.nuls.io`}},testnet:!1}),RS=R({id:7332,name:`Horizen EON`,nativeCurrency:{decimals:18,name:`ZEN`,symbol:`ZEN`},rpcUrls:{default:{http:[`https://eon-rpc.horizenlabs.io/ethv1`]}},blockExplorers:{default:{name:`EON Explorer`,url:`https://eon-explorer.horizenlabs.io`}},contracts:{}}),zS=R({id:17777,name:`EOS EVM`,nativeCurrency:{decimals:18,name:`EOS`,symbol:`EOS`},rpcUrls:{default:{http:[`https://api.evm.eosnetwork.com`]}},blockExplorers:{default:{name:`EOS EVM Explorer`,url:`https://explorer.evm.eosnetwork.com`,apiUrl:`https://explorer.evm.eosnetwork.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7943933}}}),BS=R({id:15557,name:`EOS EVM Testnet`,nativeCurrency:{decimals:18,name:`EOS`,symbol:`EOS`},rpcUrls:{default:{http:[`https://api.testnet.evm.eosnetwork.com`]}},blockExplorers:{default:{name:`EOS EVM Testnet Explorer`,url:`https://explorer.testnet.evm.eosnetwork.com`,apiUrl:`https://explorer.testnet.evm.eosnetwork.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:9067940}},testnet:!0}),VS=R({id:140,name:`Eteria`,nativeCurrency:{name:`Eteria`,symbol:`ERA`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.eteria.io/v1`]}},blockExplorers:{default:{name:`Eteria Explorer`,url:`https://explorer.eteria.io`,apiUrl:`https://explorer.eteria.io/api`}}}),HS=R({id:42793,name:`Etherlink`,blockTime:4830,nativeCurrency:{decimals:18,name:`Tez`,symbol:`XTZ`},rpcUrls:{default:{http:[`https://node.mainnet.etherlink.com`]}},blockExplorers:{default:{name:`Etherlink`,url:`https://explorer.etherlink.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:33899}}}),US=R({id:128123,name:`Etherlink Testnet`,nativeCurrency:{decimals:18,name:`Tez`,symbol:`XTZ`},rpcUrls:{default:{http:[`https://node.ghostnet.etherlink.com`]}},blockExplorers:{default:{name:`Etherlink Testnet`,url:`https://testnet.explorer.etherlink.com`}},testnet:!0}),WS=R({id:183,name:`Ethernity`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.ethernitychain.io`]}},blockExplorers:{default:{name:`Ethernity Explorer`,url:`https://ernscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},testnet:!1}),GS=R({id:20256789,name:`ETP Mainnet`,nativeCurrency:{decimals:18,name:`ETP Chain Native Token`,symbol:`ETP`},rpcUrls:{default:{http:[`https://rpc.etpscan.xyz`]}},blockExplorers:{default:{name:`ETP Scan`,url:`https://etpscan.xyz`}}}),KS=R({id:9001,name:`Evmos`,nativeCurrency:{decimals:18,name:`Evmos`,symbol:`EVMOS`},rpcUrls:{default:{http:[`https://eth.bd.evmos.org:8545`]}},blockExplorers:{default:{name:`Evmos Block Explorer`,url:`https://escan.live`}}}),qS=R({id:9e3,name:`Evmos Testnet`,nativeCurrency:{decimals:18,name:`Evmos`,symbol:`EVMOS`},rpcUrls:{default:{http:[`https://eth.bd.evmos.dev:8545`]}},blockExplorers:{default:{name:`Evmos Testnet Block Explorer`,url:`https://evm.evmos.dev/`}}}),JS=R({id:22052002,name:`Excelon Mainnet`,network:`XLON`,nativeCurrency:{decimals:18,name:`Excelon`,symbol:`xlon`},rpcUrls:{default:{http:[`https://edgewallet1.xlon.org`]}},blockExplorers:{default:{name:`Excelon explorer`,url:`https://explorer.excelon.io`}}}),YS=R({id:2,name:`Expanse Network`,nativeCurrency:{decimals:18,name:`EXP`,symbol:`EXP`},rpcUrls:{default:{http:[`https://node.expanse.tech`]}},blockExplorers:{default:{name:`Expanse Explorer`,url:`https://explorer.expanse.tech`}},testnet:!1}),XS=R({id:7200,name:`exSat Network`,nativeCurrency:{decimals:18,name:`BTC`,symbol:`BTC`},rpcUrls:{default:{http:[`https://evm.exsat.network`]}},blockExplorers:{default:{name:`exSat Explorer`,url:`https://scan.exsat.network`,apiUrl:`https://scan.exsat.network/api`}}}),ZS=R({id:839999,name:`exSat Testnet`,nativeCurrency:{decimals:18,name:`BTC`,symbol:`BTC`},rpcUrls:{default:{http:[`https://evm-tst3.exsat.network`]}},blockExplorers:{default:{name:`exSat Explorer`,url:`https://scan-testnet.exsat.network`,apiUrl:`https://scan-testnet.exsat.network/api`}}}),QS=R({id:250,name:`Fantom`,nativeCurrency:{decimals:18,name:`Fantom`,symbol:`FTM`},rpcUrls:{default:{http:[`https://250.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`FTMScan`,url:`https://ftmscan.com`,apiUrl:`https://api.ftmscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:33001987}}}),$S=R({id:64240,name:`Fantom Sonic Open Testnet`,network:`fantom-sonic-testnet`,nativeCurrency:{decimals:18,name:`Fantom`,symbol:`FTM`},rpcUrls:{default:{http:[`https://rpcapi.sonic.fantom.network`]}},blockExplorers:{default:{name:`Fantom Sonic Open Testnet Explorer`,url:`https://public-sonic.fantom.network`}},testnet:!0}),eC=R({id:4002,name:`Fantom Testnet`,nativeCurrency:{decimals:18,name:`Fantom`,symbol:`FTM`},rpcUrls:{default:{http:[`https://rpc.testnet.fantom.network`]}},blockExplorers:{default:{name:`FTMScan`,url:`https://testnet.ftmscan.com`,apiUrl:`https://testnet.ftmscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:8328688}},testnet:!0}),tC=R({id:12306,name:`Fibo Chain`,nativeCurrency:{decimals:18,name:`fibo`,symbol:`FIBO`},rpcUrls:{default:{http:[`https://network.hzroc.art`]}},blockExplorers:{default:{name:`FiboScan`,url:`https://scan.fibochain.org`}}}),nC=R({id:314,name:`Filecoin Mainnet`,nativeCurrency:{decimals:18,name:`filecoin`,symbol:`FIL`},rpcUrls:{default:{http:[`https://api.node.glif.io/rpc/v1`]}},blockExplorers:{default:{name:`Filfox`,url:`https://filfox.info/en`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3328594}}}),rC=R({id:314159,name:`Filecoin Calibration`,nativeCurrency:{decimals:18,name:`testnet filecoin`,symbol:`tFIL`},rpcUrls:{default:{http:[`https://api.calibration.node.glif.io/rpc/v1`]}},blockExplorers:{default:{name:`Filscan`,url:`https://calibration.filscan.io`}},testnet:!0}),iC=R({id:3141,name:`Filecoin Hyperspace`,nativeCurrency:{decimals:18,name:`testnet filecoin`,symbol:`tFIL`},rpcUrls:{default:{http:[`https://api.hyperspace.node.glif.io/rpc/v1`]}},blockExplorers:{default:{name:`Filfox`,url:`https://hyperspace.filfox.info/en`}},testnet:!0}),aC=R({id:253368190,name:`Flame`,network:`flame`,nativeCurrency:{symbol:`TIA`,name:`TIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.flame.astria.org`],webSocket:[`wss://ws.flame.astria.org`]}},blockExplorers:{default:{name:`Flame Explorer`,url:`https://explorer.flame.astria.org`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:6829148}}}),oC=R({id:14,name:`Flare Mainnet`,nativeCurrency:{decimals:18,name:`Flare`,symbol:`FLR`},rpcUrls:{default:{http:[`https://flare-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Flare Explorer`,url:`https://flare-explorer.flare.network`,apiUrl:`https://flare-explorer.flare.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3002461}}}),sC=R({id:114,name:`Flare Testnet Coston2`,nativeCurrency:{decimals:18,name:`Coston2 Flare`,symbol:`C2FLR`},rpcUrls:{default:{http:[`https://coston2-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Coston2 Explorer`,url:`https://coston2-explorer.flare.network`,apiUrl:`https://coston2-explorer.flare.network/api`}},testnet:!0}),cC=R({id:747,name:`Flow EVM Mainnet`,nativeCurrency:{decimals:18,name:`Flow`,symbol:`FLOW`},rpcUrls:{default:{http:[`https://mainnet.evm.nodes.onflow.org`]}},blockExplorers:{default:{name:`Mainnet Explorer`,url:`https://evm.flowscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6205}},blockTime:800}),lC=R({id:646,name:`Flow EVM Previewnet`,nativeCurrency:{decimals:18,name:`Flow`,symbol:`FLOW`},rpcUrls:{default:{http:[`https://previewnet.evm.nodes.onflow.org`]}},blockExplorers:{default:{name:`Previewnet Explorer`,url:`https://previewnet.flowdiver.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6205}}}),uC=R({id:545,name:`Flow EVM Testnet`,nativeCurrency:{decimals:18,name:`Flow`,symbol:`FLOW`},rpcUrls:{default:{http:[`https://testnet.evm.nodes.onflow.org`]}},blockExplorers:{default:{name:`Flow Diver`,url:`https://evm-testnet.flowscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:137518}},testnet:!0,blockTime:800}),dC=R({id:9999999,name:`Fluence`,nativeCurrency:{name:`FLT`,symbol:`FLT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.fluence.dev`],webSocket:[`wss://ws.mainnet.fluence.dev`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.mainnet.fluence.dev`,apiUrl:`https://blockscout.mainnet.fluence.dev/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:207583}}}),fC=R({id:123420000220,name:`Fluence Stage`,nativeCurrency:{name:`tFLT`,symbol:`tFLT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.stage.fluence.dev`],webSocket:[`wss://ws.stage.fluence.dev`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.stage.fluence.dev`,apiUrl:`https://blockscout.stage.fluence.dev/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:83227}},testnet:!0}),pC=R({id:52164803,name:`Fluence Testnet`,nativeCurrency:{name:`tFLT`,symbol:`tFLT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.fluence.dev`],webSocket:[`wss://ws.testnet.fluence.dev`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.testnet.fluence.dev`,apiUrl:`https://blockscout.testnet.fluence.dev/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:96424}},testnet:!0}),mC=R({id:20993,name:`Fluent Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.dev.gblend.xyz`]}},blockExplorers:{default:{name:`Fluent Explorer`,url:`https://blockscout.dev.gblend.xyz`}},testnet:!0});var hC=1;const gC=R({id:478,name:`Form Network`,nativeCurrency:{decimals:18,name:`Ethereum`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.form.network/http`],webSocket:[`wss://rpc.form.network/ws`]}},blockExplorers:{default:{name:`Form Explorer`,url:`https://explorer.form.network`}},contracts:{...z.contracts,addressManager:{[hC]:{address:`0x15c249E46A2F924C2dB3A1560CF86729bAD1f07B`}},l1CrossDomainMessenger:{[hC]:{address:`0xF333158DCCad1dF6C3F0a3aEe8BC31fA94d9eD5c`}},l2OutputOracle:{[hC]:{address:`0x4ccAAF69F41c5810cA875183648B577CaCf1F67E`}},portal:{[hC]:{address:`0x4E259Ee5F4136408908160dD32295A5031Fa426F`}},l1StandardBridge:{[hC]:{address:`0xdc20aA63D3DE59574E065957190D8f24e0F7B8Ba`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},sourceId:hC}),_C=R({id:984122,name:`Forma`,network:`forma`,nativeCurrency:{symbol:`TIA`,name:`TIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.forma.art`],webSocket:[`wss://ws.forma.art`]}},blockExplorers:{default:{name:`Forma Explorer`,url:`https://explorer.forma.art`}},contracts:{multicall3:{address:`0xd53C6FFB123F7349A32980F87faeD8FfDc9ef079`,blockCreated:252705}}});var vC=11155111;const yC=R({id:132902,name:`Form Testnet`,nativeCurrency:{decimals:18,name:`Ethereum`,symbol:`ETH`},rpcUrls:{default:{http:[`https://sepolia-rpc.form.network/http`],webSocket:[`wss://sepolia-rpc.form.network/ws`]}},blockExplorers:{default:{name:`Form Testnet Explorer`,url:`https://sepolia-explorer.form.network`}},contracts:{...z.contracts,addressManager:{[vC]:{address:`0xd5C38fa934f7fd7477D4800F4f38a1c5BFdF1373`}},l1CrossDomainMessenger:{[vC]:{address:`0x37A68565c4BE9700b3E3Ec60cC4416cAC3052FAa`}},l2OutputOracle:{[vC]:{address:`0x9eA2239E65a59EC9C7F1ED4C116dD58Da71Fc1e2`}},portal:{[vC]:{address:`0x60377e3cE15dF4CCA24c4beF076b60314240b032`}},l1StandardBridge:{[vC]:{address:`0xD4531f633942b2725896F47cD2aFd260b44Ab1F7`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},testnet:!0,sourceId:vC}),bC=R({id:80931,name:`Forta Chain`,nativeCurrency:{symbol:`FORT`,name:`FORT`,decimals:18},rpcUrls:{default:{http:[`https://rpc-forta-chain-8gj1qndmfc.t.conduit.xyz`]}},blockExplorers:{default:{name:`Forta Explorer`,url:`https://explorer.forta.org`}}}),xC=R({id:31337,name:`Foundry`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`],webSocket:[`ws://127.0.0.1:8545`]}}});var SC=1;const CC=R({...z,id:252,name:`Fraxtal`,nativeCurrency:{name:`Frax`,symbol:`FRAX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.frax.com`]}},blockExplorers:{default:{name:`fraxscan`,url:`https://fraxscan.com`,apiUrl:`https://api.fraxscan.com/api`}},contracts:{...z.contracts,l2OutputOracle:{[SC]:{address:`0x66CC916Ed5C6C2FA97014f7D1cD141528Ae171e4`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[SC]:{address:`0x36cb65c1967A0Fb0EEE11569C51C2f2aA1Ca6f6D`,blockCreated:19135323}},l1StandardBridge:{[SC]:{address:`0x34C0bD5877A5Ee7099D0f5688D65F4bB9158BDE2`,blockCreated:19135323}}},sourceId:SC});var wC=17e3;const TC=R({...z,id:2522,name:`Fraxtal Testnet`,nativeCurrency:{name:`Frax`,symbol:`FRAX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.frax.com`]}},blockExplorers:{default:{name:`fraxscan testnet`,url:`https://holesky.fraxscan.com`,apiUrl:`https://api-holesky.fraxscan.com/api`}},contracts:{...z.contracts,l2OutputOracle:{[wC]:{address:`0x715EA64DA13F4d0831ece4Ad3E8c1aa013167F32`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[wC]:{address:`0xB9c64BfA498d5b9a8398Ed6f46eb76d90dE5505d`,blockCreated:318416}},l1StandardBridge:{[wC]:{address:`0x0BaafC217162f64930909aD9f2B27125121d6332`,blockCreated:318416}}},sourceId:wC});var EC=1;const DC=R({...z,id:33979,name:`Funki`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.funkichain.com`]}},blockExplorers:{default:{name:`Funki Mainnet Explorer`,url:`https://funkiscan.io`}},contracts:{...z.contracts},sourceId:EC});var OC=11155111;const kC=R({...z,id:3397901,network:`funkiSepolia`,name:`Funki Sepolia Sandbox`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://funki-testnet.alt.technology`]}},blockExplorers:{default:{name:`Funki Sepolia Sandbox Explorer`,url:`https://sepolia-sandbox.funkichain.com/`}},testnet:!0,contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1620204}},sourceId:OC}),AC=R({id:122,name:`Fuse`,nativeCurrency:{name:`Fuse`,symbol:`FUSE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.fuse.io`]}},blockExplorers:{default:{name:`Fuse Explorer`,url:`https://explorer.fuse.io`,apiUrl:`https://explorer.fuse.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:16146628}}}),jC=R({id:123,name:`Fuse Sparknet`,nativeCurrency:{name:`Spark`,symbol:`SPARK`,decimals:18},rpcUrls:{default:{http:[`https://rpc.fusespark.io`]}},blockExplorers:{default:{name:`Sparkent Explorer`,url:`https://explorer.fusespark.io`,apiUrl:`https://explorer.fusespark.io/api`}}}),MC=R({id:32659,name:`Fusion Mainnet`,nativeCurrency:{name:`Fusion`,symbol:`FSN`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.fusionnetwork.io`],webSocket:[`wss://mainnet.fusionnetwork.io`]}},blockExplorers:{default:{name:`FSNscan`,url:`https://fsnscan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:10441605}},testnet:!1}),NC=R({id:46688,name:`Fusion Testnet`,nativeCurrency:{name:`Fusion`,symbol:`FSN`,decimals:18},rpcUrls:{default:{http:[`https://testnet.fusionnetwork.io`],webSocket:[`wss://testnet.fusionnetwork.io`]}},blockExplorers:{default:{name:`FSNscan`,url:`https://testnet.fsnscan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:10428309}},testnet:!0});var PC=17e3;const FC=R({...z,name:`Garnet Testnet`,testnet:!0,id:17069,sourceId:PC,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.garnetchain.com`],webSocket:[`wss://rpc.garnetchain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.garnetchain.com`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[PC]:{address:`0x57ee40586fbE286AfC75E67cb69511A6D9aF5909`,blockCreated:1274684}},l2OutputOracle:{[PC]:{address:`0xCb8E7AC561b8EF04F2a15865e9fbc0766FEF569B`,blockCreated:1274684}},l1StandardBridge:{[PC]:{address:`0x09bcDd311FE398F80a78BE37E489f5D440DB95DE`,blockCreated:1274684}}}}),IC=R({id:63157,name:`Geist Mainnet`,nativeCurrency:{decimals:18,name:`Aavegotchi GHST Token`,symbol:`GHST`},rpcUrls:{default:{http:[`https://geist-mainnet.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://geist-mainnet.explorer.alchemy.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:660735}}}),LC=R({id:16507,name:`Genesys Mainnet`,nativeCurrency:{decimals:18,name:`GSYS`,symbol:`GSYS`},rpcUrls:{default:{http:[`https://rpc.genesys.network`]}},blockExplorers:{default:{name:`Genesys Explorer`,url:`https://gchainexplorer.genesys.network`}},testnet:!1});var RC=11155111;const zC=R({...z,id:91342,network:`giwa-sepolia`,name:`GIWA Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},blockTime:1e3,rpcUrls:{default:{http:[`https://sepolia-rpc.giwa.io`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia-explorer.giwa.io`,apiUrl:`https://sepolia-explorer.giwa.io/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},disputeGameFactory:{[RC]:{address:`0x37347caB2afaa49B776372279143D71ad1f354F6`}},portal:{[RC]:{address:`0x956962C34687A954e611A83619ABaA37Ce6bC78A`}},l1StandardBridge:{[RC]:{address:`0x77b2ffc0F57598cAe1DB76cb398059cF5d10A7E7`}}},testnet:!0,sourceId:RC}),BC=R({id:251,name:`Glide L1 Protocol XP`,nativeCurrency:{name:`GLXP`,symbol:`GLXP`,decimals:18},rpcUrls:{default:{http:[`https://rpc-api.glideprotocol.xyz/l1-rpc`],webSocket:[`wss://rpc-api.glideprotocol.xyz/l1-rpc`]}},blockExplorers:{default:{name:`Glide Protocol Explore`,url:`https://blockchain-explorer.glideprotocol.xyz`}},testnet:!1}),VC=R({id:253,name:`Glide L2 Protocol XP`,nativeCurrency:{name:`GLXP`,symbol:`GLXP`,decimals:18},rpcUrls:{default:{http:[`https://rpc-api.glideprotocol.xyz/l2-rpc`],webSocket:[`wss://rpc-api.glideprotocol.xyz/l2-rpc`]}},blockExplorers:{default:{name:`Glide Protocol Explore`,url:`https://blockchain-explorer.glideprotocol.xyz`}},testnet:!1}),HC=R({id:100,name:`Gnosis`,nativeCurrency:{decimals:18,name:`xDAI`,symbol:`XDAI`},blockTime:5e3,rpcUrls:{default:{http:[`https://rpc.gnosischain.com`],webSocket:[`wss://rpc.gnosischain.com/wss`]}},blockExplorers:{default:{name:`Gnosisscan`,url:`https://gnosisscan.io`,apiUrl:`https://api.gnosisscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:21022491}}}),UC=R({id:10200,name:`Gnosis Chiado`,nativeCurrency:{decimals:18,name:`Gnosis`,symbol:`xDAI`},blockTime:5e3,rpcUrls:{default:{http:[`https://rpc.chiadochain.net`],webSocket:[`wss://rpc.chiadochain.net/wss`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.chiadochain.net`,apiUrl:`https://blockscout.chiadochain.net/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4967313}},testnet:!0}),WC=R({id:2345,name:`GOAT`,nativeCurrency:{decimals:18,name:`Bitcoin`,symbol:`BTC`},rpcUrls:{default:{http:[`https://rpc.goat.network`]}},blockExplorers:{default:{name:`Goat Explorer`,url:`https://explorer.goat.network`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),GC=R({id:1663,name:`Horizen Gobi Testnet`,nativeCurrency:{decimals:18,name:`Test ZEN`,symbol:`tZEN`},rpcUrls:{default:{http:[`https://gobi-testnet.horizenlabs.io/ethv1`]}},blockExplorers:{default:{name:`Gobi Explorer`,url:`https://gobi-explorer.horizen.io`}},contracts:{},testnet:!0}),KC=R({id:60,name:`GoChain`,nativeCurrency:{decimals:18,name:`GO`,symbol:`GO`},rpcUrls:{default:{http:[`https://rpc.gochain.io`]}},blockExplorers:{default:{name:`GoChain Explorer`,url:`https://explorer.gochain.io`}},testnet:!1}),qC=R({id:71402,name:`Godwoken Mainnet`,nativeCurrency:{decimals:18,name:`pCKB`,symbol:`pCKB`},rpcUrls:{default:{http:[`https://v1.mainnet.godwoken.io/rpc`]}},blockExplorers:{default:{name:`GW Scan`,url:`https://v1.gwscan.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:15034}},testnet:!1}),JC=R({id:5,name:`Goerli`,nativeCurrency:{name:`Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://5.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli.etherscan.io`,apiUrl:`https://api-goerli.etherscan.io/api`}},contracts:{ensRegistry:{address:`0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e`},ensUniversalResolver:{address:`0xfc4AC75C46C914aF5892d6d3eFFcebD7917293F1`,blockCreated:10339206},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6507670}},testnet:!0}),YC=R({id:440017,name:`Graphite Network`,nativeCurrency:{name:`Graphite`,symbol:`@G`,decimals:18},rpcUrls:{default:{http:[`https://anon-entrypoint-1.atgraphite.com`],webSocket:[`wss://ws-anon-entrypoint-1.atgraphite.com`]}},blockExplorers:{default:{name:`Graphite Spectre`,url:`https://main.atgraphite.com`,apiUrl:`https://api.main.atgraphite.com/api`}},testnet:!1}),XC=R({id:54170,name:`Graphite Network Testnet`,nativeCurrency:{name:`Graphite`,symbol:`@G`,decimals:18},rpcUrls:{default:{http:[`https://anon-entrypoint-test-1.atgraphite.com`],webSocket:[`wss://ws-anon-entrypoint-test-1.atgraphite.com`]}},blockExplorers:{default:{name:`Graphite Testnet Spectre`,url:`https://test.atgraphite.com`,apiUrl:`https://api.test.atgraphite.com/api`}},testnet:!0}),ZC=R({id:1625,name:`Gravity Alpha Mainnet`,nativeCurrency:{name:`G`,symbol:`G`,decimals:18},rpcUrls:{default:{http:[`https://rpc.gravity.xyz`]}},blockExplorers:{default:{name:`Gravity Explorer`,url:`https://explorer.gravity.xyz`,apiUrl:`https://explorer.gravity.xyz/api`}},contracts:{multicall3:{address:`0xf8ac4BEB2F75d2cFFb588c63251347fdD629B92c`,blockCreated:16851}}}),QC=R({id:43419,name:`Gunz Mainnet`,nativeCurrency:{name:`GUN`,symbol:`GUN`,decimals:18},rpcUrls:{default:{http:[`https://rpc.gunzchain.io/ext/bc/2M47TxWHGnhNtq6pM5zPXdATBtuqubxn5EPFgFmEawCQr9WFML/rpc`]}},blockExplorers:{default:{name:`Gunz Explorer`,url:`https://gunzscan.io/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:70502}}}),$C=R({id:260,name:`Guru Network Mainnet`,nativeCurrency:{name:`GURU Token`,symbol:`GURU`,decimals:18},rpcUrls:{default:{http:[`https://rpc-main.gurunetwork.ai`,`https://rpc.gurunetwork.ai/archive/260`]}},blockExplorers:{default:{name:`Guruscan`,url:`https://scan.gurunetwork.ai`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:271691}},testnet:!1}),ew=R({id:261,name:`Guru Network Testnet`,nativeCurrency:{name:`tGURU Token`,symbol:`tGURU`,decimals:18},rpcUrls:{default:{http:[`https://rpc-test.gurunetwork.ai`,`https://rpc.gurunetwork.ai/archive/261`]}},blockExplorers:{default:{name:`Guruscan`,url:`https://sepolia.gurunetwork.ai`}},testnet:!0}),tw=R({id:5112,name:`Ham`,nativeCurrency:{decimals:18,name:`Ham`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.ham.fun`],webSocket:[`wss://rpc.ham.fun`]}},blockExplorers:{default:{name:`Ham Chain Explorer`,url:`https://explorer.ham.fun`,apiUrl:`https://explorer.ham.fun/api/v2`}}}),nw=R({id:216,name:`Happychain Testnet`,nativeCurrency:{symbol:`HAPPY`,name:`HAPPY`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.happy.tech/http`],webSocket:[`wss://rpc.testnet.happy.tech/ws`]}},blockExplorers:{default:{name:`Happy Chain Testnet Explorer`,url:`https://explorer.testnet.happy.tech`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1}},testnet:!0}),rw=R({id:11235,name:`HAQQ Mainnet`,nativeCurrency:{decimals:18,name:`Islamic Coin`,symbol:`ISLM`},rpcUrls:{default:{http:[`https://rpc.eth.haqq.network`]}},blockExplorers:{default:{name:`HAQQ Explorer`,url:`https://explorer.haqq.network`,apiUrl:`https://explorer.haqq.network/api`}}}),iw=R({id:54211,name:`HAQQ Testedge 2`,nativeCurrency:{decimals:18,name:`Islamic Coin`,symbol:`ISLMT`},rpcUrls:{default:{http:[`https://rpc.eth.testedge2.haqq.network`]}},blockExplorers:{default:{name:`HAQQ Explorer`,url:`https://explorer.testedge2.haqq.network`,apiUrl:`https://explorer.testedge2.haqq.network/api`}}}),aw=R({id:31337,name:`Hardhat`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`]}}}),ow=R({id:16666e5,name:`Harmony One`,nativeCurrency:{name:`Harmony`,symbol:`ONE`,decimals:18},rpcUrls:{default:{http:[`https://1666600000.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Harmony Explorer`,url:`https://explorer.harmony.one`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:24185753}}}),sw=R({id:177,name:`HashKey Chain`,nativeCurrency:{decimals:18,name:`HashKey EcoPoints`,symbol:`HSK`},rpcUrls:{default:{http:[`https://mainnet.hsk.xyz`]}},blockExplorers:{default:{name:`HashKey Chain Explorer`,url:`https://hashkey.blockscout.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}}}),cw=R({id:133,name:`HashKey Chain Testnet`,nativeCurrency:{decimals:18,name:`HashKey EcoPoints`,symbol:`HSK`},rpcUrls:{default:{http:[`https://hashkeychain-testnet.alt.technology`]}},blockExplorers:{default:{name:`HashKey Chain Explorer`,url:`https://hashkeychain-testnet-explorer.alt.technology`}},testnet:!0}),lw=R({id:1523903251,name:`Haust Network Testnet`,nativeCurrency:{decimals:18,name:`HAUST`,symbol:`HAUST`},rpcUrls:{default:{http:[`https://rpc-testnet.haust.app`]}},blockExplorers:{default:{name:`Haust Network Testnet Explorer`,url:`https://explorer-testnet.haust.app`}},testnet:!0}),uw=R({id:295,name:`Hedera Mainnet`,network:`hedera-mainnet`,nativeCurrency:{symbol:`HBAR`,name:`HBAR`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.hashio.io/api`]}},blockExplorers:{default:{name:`Hashscan`,url:`https://hashscan.io/mainnet`}},testnet:!1}),dw=R({id:297,name:`Hedera Previewnet`,network:`hedera-previewnet`,nativeCurrency:{symbol:`HBAR`,name:`HBAR`,decimals:18},rpcUrls:{default:{http:[`https://previewnet.hashio.io/api`]}},blockExplorers:{default:{name:`Hashscan`,url:`https://hashscan.io/previewnet`}},testnet:!0}),fw=R({id:296,name:`Hedera Testnet`,network:`hedera-testnet`,nativeCurrency:{symbol:`HBAR`,name:`HBAR`,decimals:18},rpcUrls:{default:{http:[`https://testnet.hashio.io/api`]}},blockExplorers:{default:{name:`Hashscan`,url:`https://hashscan.io/testnet`}},testnet:!0}),pw=R({id:8668,name:`Hela Mainnet`,nativeCurrency:{name:`HLUSD`,symbol:`HLUSD`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.helachain.com`]}},blockExplorers:{default:{name:`Hela explorer`,url:`https://mainnet-blockexplorer.helachain.com`}},testnet:!1}),mw=R({id:43111,name:`Hemi`,network:`Hemi`,blockTime:12e3,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hemi.network/rpc`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.hemi.xyz`}},testnet:!1}),hw=R({id:743111,name:`Hemi Sepolia`,network:`Hemi Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.rpc.hemi.network/rpc`]}},blockExplorers:{default:{name:`Hemi Sepolia explorer`,url:`https://testnet.explorer.hemi.xyz`}},testnet:!0}),gw=R({id:17e3,name:`Holesky`,nativeCurrency:{name:`Holesky Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://ethereum-holesky-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://holesky.etherscan.io`,apiUrl:`https://api-holesky.etherscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:77},ensUniversalResolver:{address:`0xeeeeeeee14d718c2b47d9923deab1335e144eeee`,blockCreated:4295055}},testnet:!0}),_w=R({id:560048,name:`Hoodi`,nativeCurrency:{name:`Hoodi Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hoodi.ethpandaops.io`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://hoodi.etherscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2589}},testnet:!0}),vw=R({id:269,name:`High Performance Blockchain`,nativeCurrency:{name:`HPB`,symbol:`HPB`,decimals:18},rpcUrls:{default:{http:[`https://hpbnode.com`]}},blockExplorers:{default:{name:`hpbScan`,url:`https://hscan.org`}},testnet:!1}),yw=R({id:12323,name:`Huddle01 dRTC Chain`,nativeCurrency:{name:`Ethereum`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://huddle01.calderachain.xyz/http`],webSocket:[`wss://huddle01.calderachain.xyz/ws`]}},blockExplorers:{default:{name:`Huddle01 Caldera Explorer`,url:`https://huddle01.calderaexplorer.xyz`,apiUrl:`https://huddle01.calderaexplorer.xyz/api`}},sourceId:42161}),bw=R({id:2524852,name:`Huddle01 dRTC Chain Testnet`,nativeCurrency:{name:`Ethereum`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://huddle-testnet.rpc.caldera.xyz/http`],webSocket:[`wss://huddle-testnet.rpc.caldera.xyz/ws`]}},blockExplorers:{default:{name:`Huddle01 Caldera Explorer`,url:`https://huddle-testnet.explorer.caldera.xyz`,apiUrl:`https://huddle-testnet.explorer.caldera.xyz/api`}},sourceId:421614}),xw=R({id:6985385,name:`Humanity`,nativeCurrency:{name:`H`,symbol:`H`,decimals:18},rpcUrls:{default:{http:[`https://humanity-mainnet.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Humanity Mainnet Explorer`,url:`https://humanity-mainnet.explorer.alchemy.com`,apiUrl:`https://humanity-mainnet.explorer.alchemy.com/api`}},testnet:!1}),Sw=R({id:7080969,name:`Humanity Testnet`,nativeCurrency:{name:`tHP`,symbol:`tHP`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.humanity.org`]}},blockExplorers:{default:{name:`Humanity Testnet Explorer`,url:`https://humanity-testnet.explorer.alchemy.com`,apiUrl:`https://humanity-testnet.explorer.alchemy.com/api`}},testnet:!0}),Cw=R({id:5234,name:`Humanode`,nativeCurrency:{name:`HMND`,symbol:`HMND`,decimals:18},rpcUrls:{default:{http:[`https://explorer-rpc-http.mainnet.stages.humanode.io`],webSocket:[`wss://explorer-rpc-ws.mainnet.stages.humanode.io`]}},blockExplorers:{default:{name:`Subscan`,url:`https://humanode.subscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4413097}}}),ww=R({id:14853,name:`Humanode Testnet 5`,nativeCurrency:{name:`HMND`,symbol:`HMND`,decimals:18},rpcUrls:{default:{http:[`https://explorer-rpc-http.testnet5.stages.humanode.io`],webSocket:[`wss://explorer-rpc-ws.testnet5.stages.humanode.io`]}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}}}),Tw=R({id:2911,name:`HYCHAIN`,nativeCurrency:{name:`HYTOPIA`,symbol:`TOPIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hychain.com/http`]}},blockExplorers:{default:{name:`HYCHAIN Explorer`,url:`https://explorer.hychain.com`}},testnet:!1}),Ew=R({id:29112,name:`HYCHAIN Testnet`,nativeCurrency:{name:`HYTOPIA`,symbol:`TOPIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hychain.com/http`]}},blockExplorers:{default:{name:`HYCHAIN Explorer`,url:`https://testnet-rpc.hychain.com/http`}},testnet:!0}),Dw=R({id:998,name:`Hyperliquid EVM Testnet`,nativeCurrency:{name:`HYPE`,symbol:`HYPE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hyperliquid-testnet.xyz/evm`]}},testnet:!0}),Ow=R({id:73115,name:`ICB Network`,nativeCurrency:{decimals:18,name:`ICB Native Token`,symbol:`ICBX`},rpcUrls:{default:{http:[`https://rpc1-mainnet.icbnetwork.info`]}},blockExplorers:{default:{name:`ICB Explorer`,url:`https://icbscan.io`,apiUrl:`https://icbscan.io/api`}},testnet:!1}),kw=R({id:74,name:`IDChain Mainnet`,nativeCurrency:{decimals:18,name:`EIDI`,symbol:`EIDI`},rpcUrls:{default:{http:[`https://idchain.one/rpc`],webSocket:[`wss://idchain.one/ws`]}},blockExplorers:{default:{name:`IDChain Explorer`,url:`https://explorer.idchain.one`}},testnet:!1}),Aw=R({id:13371,name:`Immutable zkEVM`,nativeCurrency:{decimals:18,name:`Immutable Coin`,symbol:`IMX`},rpcUrls:{default:{http:[`https://rpc.immutable.com`]}},blockExplorers:{default:{name:`Immutable Explorer`,url:`https://explorer.immutable.com`,apiUrl:`https://explorer.immutable.com/api`}},contracts:{multicall3:{address:`0x236bdA4589e44e6850f5aC6a74BfCa398a86c6c0`,blockCreated:4335972}}}),jw=R({id:13473,name:`Immutable zkEVM Testnet`,nativeCurrency:{decimals:18,name:`Immutable Coin`,symbol:`IMX`},rpcUrls:{default:{http:[`https://rpc.testnet.immutable.com`]}},blockExplorers:{default:{name:`Immutable Testnet Explorer`,url:`https://explorer.testnet.immutable.com/`}},contracts:{multicall3:{address:`0x2CC787Ed364600B0222361C4188308Fa8E68bA60`,blockCreated:5977391}},testnet:!0}),Mw=R({id:2525,name:`inEVM Mainnet`,nativeCurrency:{decimals:18,name:`Injective`,symbol:`INJ`},rpcUrls:{default:{http:[`https://mainnet.rpc.inevm.com/http`]}},blockExplorers:{default:{name:`inEVM Explorer`,url:`https://inevm.calderaexplorer.xyz`,apiUrl:`https://inevm.calderaexplorer.xyz/api/v2`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:118606}}}),Nw=R({id:7233,name:`InitVerse Mainnet`,nativeCurrency:{decimals:18,name:`InitVerse`,symbol:`INI`},rpcUrls:{default:{http:[`https://rpc-mainnet.inichain.com`]}},blockExplorers:{default:{name:`InitVerseScan`,url:`https://www.iniscan.com`,apiUrl:`https://explorer-api.inichain.com/api`}},contracts:{multicall3:{address:`0x83466BE48A067115FFF91f7b892Ed1726d032e47`,blockCreated:2318}}}),Pw=R({id:7234,name:`InitVerse Genesis Testnet`,nativeCurrency:{decimals:18,name:`InitVerse`,symbol:`INI`},rpcUrls:{default:{http:[`https://rpc-testnet.inichain.com`]}},blockExplorers:{default:{name:`InitVerseGenesisScan`,url:`https://genesis-testnet.iniscan.com`,apiUrl:`https://explorer-testnet-api.inichain.com/api`}},contracts:{multicall3:{address:`0x0cF32CBDd6c437331EA4f85ed2d881A5379B5a6F`,blockCreated:16361}},testnet:!0}),Fw=R({id:1776,name:`Injective`,nativeCurrency:{decimals:18,name:`Injective`,symbol:`INJ`},rpcUrls:{default:{http:[`https://sentry.evm-rpc.injective.network`],webSocket:[`wss://sentry.evm-ws.injective.network`]}},blockExplorers:{default:{name:`Injective Explorer`,url:`https://blockscout.injective.network`,apiUrl:`https://blockscout.injective.network/api`}},testnet:!1}),Iw=R({id:1439,name:`Injective Testnet`,nativeCurrency:{decimals:18,name:`Injective`,symbol:`INJ`},rpcUrls:{default:{http:[`https://k8s.testnet.json-rpc.injective.network`],webSocket:[`wss://k8s.testnet.ws.injective.network`]}},blockExplorers:{default:{name:`Injective Explorer`,url:`https://testnet.blockscout.injective.network`,apiUrl:`https://testnet.blockscout.injective.network/api`}},testnet:!0});var Lw=1;const Rw=R({...z,id:57073,name:`Ink`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-gel.inkonchain.com`,`https://rpc-qnd.inkonchain.com`],webSocket:[`wss://rpc-gel.inkonchain.com`,`wss://rpc-qnd.inkonchain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.inkonchain.com`,apiUrl:`https://explorer.inkonchain.com/api/v2`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},...z.contracts,disputeGameFactory:{[Lw]:{address:`0x10d7b35078d3baabb96dd45a9143b94be65b12cd`}},portal:{[Lw]:{address:`0x5d66c1782664115999c47c9fa5cd031f495d3e4f`}},l1StandardBridge:{[Lw]:{address:`0x88ff1e5b602916615391f55854588efcbb7663f0`}}},testnet:!1,sourceId:Lw});var zw=11155111;const Bw=R({...z,id:763373,name:`Ink Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-gel-sepolia.inkonchain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer-sepolia.inkonchain.com/`,apiUrl:`https://explorer-sepolia.inkonchain.com/api/v2`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},disputeGameFactory:{[zw]:{address:`0x860e626c700af381133d9f4af31412a2d1db3d5d`}},portal:{[zw]:{address:`0x5c1d29c6c9c8b0800692acc95d700bcb4966a1d7`}},l1StandardBridge:{[zw]:{address:`0x33f60714bbd74d62b66d79213c348614de51901c`}}},testnet:!0,sourceId:zw}),Vw=R({id:8822,name:`IOTA EVM`,network:`iotaevm`,nativeCurrency:{decimals:18,name:`IOTA`,symbol:`IOTA`},rpcUrls:{default:{http:[`https://json-rpc.evm.iotaledger.net`],webSocket:[`wss://ws.json-rpc.evm.iotaledger.net`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.evm.iota.org`,apiUrl:`https://explorer.evm.iota.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:25022}}}),Hw=R({id:1075,name:`IOTA EVM Testnet`,network:`iotaevm-testnet`,nativeCurrency:{decimals:18,name:`IOTA`,symbol:`IOTA`},rpcUrls:{default:{http:[`https://json-rpc.evm.testnet.iotaledger.net`],webSocket:[`wss://ws.json-rpc.evm.testnet.iotaledger.net`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.evm.testnet.iotaledger.net`,apiUrl:`https://explorer.evm.testnet.iotaledger.net/api`}},testnet:!0}),Uw=R({id:4689,name:`IoTeX`,nativeCurrency:{decimals:18,name:`IoTeX`,symbol:`IOTX`},rpcUrls:{default:{http:[`https://babel-api.mainnet.iotex.io`],webSocket:[`wss://babel-api.mainnet.iotex.io`]}},blockExplorers:{default:{name:`IoTeXScan`,url:`https://iotexscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:22163670}}}),Ww=R({id:4690,name:`IoTeX Testnet`,nativeCurrency:{decimals:18,name:`IoTeX`,symbol:`IOTX`},rpcUrls:{default:{http:[`https://babel-api.testnet.iotex.io`],webSocket:[`wss://babel-api.testnet.iotex.io`]}},blockExplorers:{default:{name:`IoTeXScan`,url:`https://testnet.iotexscan.io`}},contracts:{multicall3:{address:`0xb5cecD6894c6f473Ec726A176f1512399A2e355d`,blockCreated:24347592}},testnet:!0}),Gw=R({id:8017,name:`iSunCoin Mainnet`,nativeCurrency:{decimals:18,name:`ISC`,symbol:`ISC`},rpcUrls:{default:{http:[`https://mainnet.isuncoin.com`]}},blockExplorers:{default:{name:`iSunCoin Explorer`,url:`https://baifa.io/app/chains/8017`}}}),Kw=R({id:8899,name:`JB Chain`,network:`jbc`,nativeCurrency:{name:`JBC`,symbol:`JBC`,decimals:18},rpcUrls:{default:{http:[`https://rpc-l1.jibchain.net`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp-l1.jibchain.net`,apiUrl:`https://exp-l1.jibchain.net/api`}},contracts:{multicall3:{address:`0xc0C8C486D1466C57Efe13C2bf000d4c56F47CBdC`,blockCreated:2299048}},testnet:!1}),qw=R({id:88991,name:`Jibchain Testnet`,nativeCurrency:{name:`tJBC`,symbol:`tJBC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.jibchain.net`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp.testnet.jibchain.net`,apiUrl:`https://exp.testnet.jibchain.net/api`}},contracts:{multicall3:{address:`0xa1a858ad9041B4741e620355a3F96B3c78e70ecE`,blockCreated:32848}},testnet:!0}),Jw=R({id:81,name:`Japan Open Chain Mainnet`,nativeCurrency:{decimals:18,name:`Japan Open Chain Token`,symbol:`JOC`},rpcUrls:{default:{http:[`https://rpc-1.japanopenchain.org:8545`,`https://rpc-2.japanopenchain.org:8545`,`https://rpc-3.japanopenchain.org`]}},blockExplorers:{default:{name:`Block Explorer`,url:`https://explorer.japanopenchain.org`}},testnet:!1}),Yw=R({id:10081,name:`Japan Open Chain Testnet`,nativeCurrency:{decimals:18,name:`Japan Open Chain Testnet Token`,symbol:`JOCT`},rpcUrls:{default:{http:[`https://rpc-1.testnet.japanopenchain.org:8545`,`https://rpc-2.testnet.japanopenchain.org:8545`,`https://rpc-3.testnet.japanopenchain.org`]}},blockExplorers:{default:{name:`Testnet Block Explorer`,url:`https://explorer.testnet.japanopenchain.org`}},testnet:!0}),Xw=R({id:5734951,name:`Jovay Mainnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.zan.top/public/jovay-mainnet`]}},blockExplorers:{default:{name:`Jovay Explorer`,url:`https://explorer.jovay.io`}},testnet:!1}),Zw=R({id:2019775,name:`Jovay Sepolia Testnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.zan.top/public/jovay-testnet`]}},blockExplorers:{default:{name:`Jovay Testnet Explorer`,url:`https://sepolia-explorer.jovay.io/l2`}},testnet:!0}),Qw=R({id:45003,name:`Juneo JUNE-Chain`,nativeCurrency:{decimals:18,name:`JUNE-Chain`,symbol:`JUNE`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/JUNE/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/2`,apiUrl:`https://juneoscan.io/chain/2/api`}}}),$w=R({id:45013,name:`Juneo BCH1-Chain`,nativeCurrency:{decimals:18,name:`Juneo BCH1-Chain`,symbol:`BCH1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/BCH1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/12`,apiUrl:`https://juneoscan.io/chain/12/api`}}}),eT=R({id:45004,name:`Juneo DAI1-Chain`,nativeCurrency:{decimals:18,name:`Juneo DAI1-Chain`,symbol:`DAI1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/DAI1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/5`,apiUrl:`https://juneoscan.io/chain/5/api`}}}),tT=R({id:45010,name:`Juneo DOGE1-Chain`,nativeCurrency:{decimals:18,name:`Juneo DOGE1-Chain`,symbol:`DOGE1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/DOGE1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/10`,apiUrl:`https://juneoscan.io/chain/10/api`}}}),nT=R({id:45011,name:`Juneo EUR1-Chain`,nativeCurrency:{decimals:18,name:`Juneo EUR1-Chain`,symbol:`EUR1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/EUR1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/6`,apiUrl:`https://juneoscan.io/chain/6/api`}}}),rT=R({id:45008,name:`Juneo GLD1-Chain`,nativeCurrency:{decimals:18,name:`Juneo GLD1-Chain`,symbol:`GLD1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/GLD1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/8`,apiUrl:`https://juneoscan.io/chain/8/api`}}}),iT=R({id:45014,name:`Juneo LINK1-Chain`,nativeCurrency:{decimals:18,name:`Juneo LINK1-Chain`,symbol:`LINK1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/LINK1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/13`,apiUrl:`https://juneoscan.io/chain/13/api`}}}),aT=R({id:45009,name:`Juneo LTC1-Chain`,nativeCurrency:{decimals:18,name:`Juneo LTC1-Chain`,symbol:`LTC1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/LTC1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/11`,apiUrl:`https://juneoscan.io/chain/11/api`}}}),oT=R({id:45007,name:`Juneo mBTC1-Chain`,nativeCurrency:{decimals:18,name:`Juneo mBTC1-Chain`,symbol:`mBTC1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/mBTC1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/9`,apiUrl:`https://juneoscan.io/chain/9/api`}}}),sT=R({id:45012,name:`Juneo SGD1-Chain`,nativeCurrency:{decimals:18,name:`Juneo SGD1-Chain`,symbol:`SGD1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/SGD1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/7`,apiUrl:`https://juneoscan.io/chain/7/api`}}}),cT=R({id:101003,name:`Socotra JUNE-Chain`,nativeCurrency:{decimals:18,name:`Socotra JUNE-Chain`,symbol:`JUNE`},rpcUrls:{default:{http:[`https://rpc.socotra-testnet.network/ext/bc/JUNE/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://socotra.juneoscan.io/chain/2`,apiUrl:`https://socotra.juneoscan.io/chain/2/api`}},testnet:!0}),lT=R({id:45006,name:`Juneo USD1-Chain`,nativeCurrency:{decimals:18,name:`Juneo USD1-Chain`,symbol:`USD1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/USD1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/4`,apiUrl:`https://juneoscan.io/chain/4/api`}}}),uT=R({id:45005,name:`Juneo USDT1-Chain`,nativeCurrency:{decimals:18,name:`Juneo USDT1-Chain`,symbol:`USDT1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/USDT1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/3`,apiUrl:`https://juneoscan.io/chain/3/api`}}}),dT=R({id:8217,name:`Kaia`,nativeCurrency:{decimals:18,name:`Kaia`,symbol:`KAIA`},rpcUrls:{default:{http:[`https://public-en.node.kaia.io`]}},blockExplorers:{default:{name:`KaiaScan`,url:`https://kaiascan.io`,apiUrl:`https://api-cypress.klaytnscope.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:96002415}}}),fT=R({id:1001,name:`Kairos Testnet`,network:`kairos`,nativeCurrency:{decimals:18,name:`Kairos KAIA`,symbol:`KAIA`},rpcUrls:{default:{http:[`https://public-en-kairos.node.kaia.io`]}},blockExplorers:{default:{name:`KaiaScan`,url:`https://kairos.kaiascan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:123390593}},testnet:!0}),pT=R({id:1802203764,name:`Kakarot Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rpc.kakarot.org`]}},blockExplorers:{default:{name:`Kakarot Scan`,url:`https://sepolia.kakarotscan.org`}},testnet:!0}),mT=R({id:920637907288165,name:`Kakarot Starknet Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rpc.kakarot.org`]}},blockExplorers:{default:{name:`Kakarot Scan`,url:`https://sepolia.kakarotscan.org`}},testnet:!0}),hT=R({id:24,name:`KardiaChain Mainnet`,nativeCurrency:{name:`KAI`,symbol:`KAI`,decimals:18},rpcUrls:{default:{http:[`https://rpc.kardiachain.io`]}},blockExplorers:{default:{name:`KardiaChain Explorer`,url:`https://explorer.kardiachain.io`}},testnet:!1}),gT=R({id:686,name:`Karura`,network:`karura`,nativeCurrency:{name:`Karura`,symbol:`KAR`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-karura.aca-api.network`],webSocket:[`wss://eth-rpc-karura.aca-api.network`]}},blockExplorers:{default:{name:`Karura Blockscout`,url:`https://blockscout.karura.network`,apiUrl:`https://blockscout.karura.network/api`}},testnet:!1}),_T=R({id:747474,name:`Katana`,network:`katana`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.katana.network`]}},blockExplorers:{default:{name:`katana explorer`,url:`https://explorer.katanarpc.com`}},testnet:!1}),vT=R({id:2222,name:`Kava EVM`,network:`kava-mainnet`,nativeCurrency:{name:`Kava`,symbol:`KAVA`,decimals:18},rpcUrls:{default:{http:[`https://evm.kava.io`]}},blockExplorers:{default:{name:`Kava EVM Explorer`,url:`https://kavascan.com`,apiUrl:`https://kavascan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3661165}},testnet:!1}),yT=R({id:2221,name:`Kava EVM Testnet`,network:`kava-testnet`,nativeCurrency:{name:`Kava`,symbol:`KAVA`,decimals:18},rpcUrls:{default:{http:[`https://evm.testnet.kava.io`]}},blockExplorers:{default:{name:`Kava EVM Testnet Explorer`,url:`https://testnet.kavascan.com/`,apiUrl:`https://testnet.kavascan.com/api`}},contracts:{multicall3:{address:`0xDf1D724A7166261eEB015418fe8c7679BBEa7fd6`,blockCreated:7242179}},testnet:!0}),bT=R({id:321,name:`KCC Mainnet`,network:`KCC Mainnet`,nativeCurrency:{decimals:18,name:`KCS`,symbol:`KCS`},rpcUrls:{default:{http:[`https://kcc-rpc.com`]}},blockExplorers:{default:{name:`KCC Explorer`,url:`https://explorer.kcc.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:11760430}},testnet:!1}),xT=R({id:1336,name:`Kii Testnet Oro`,network:`kii-testnet-oro`,nativeCurrency:{name:`Kii`,symbol:`KII`,decimals:18},rpcUrls:{default:{http:[`https://json-rpc.uno.sentry.testnet.v3.kiivalidator.com`]}},blockExplorers:{default:{name:`KiiExplorer`,url:`https://explorer.kiichain.io/testnet`}},testnet:!0}),ST=R({id:7887,name:`Kinto Mainnet`,network:`Kinto Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.kinto.xyz/http`]}},blockExplorers:{default:{name:`Kinto Explorer`,url:`https://explorer.kinto.xyz`}},testnet:!1}),CT=R({id:8217,name:`Klaytn`,nativeCurrency:{decimals:18,name:`Klaytn`,symbol:`KLAY`},rpcUrls:{default:{http:[`https://public-en-cypress.klaytn.net`]}},blockExplorers:{default:{name:`KlaytnScope`,url:`https://scope.klaytn.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:96002415}}}),wT=R({id:1001,name:`Klaytn Baobab Testnet`,network:`klaytn-baobab`,nativeCurrency:{decimals:18,name:`Baobab Klaytn`,symbol:`KLAY`},rpcUrls:{default:{http:[`https://public-en-baobab.klaytn.net`]}},blockExplorers:{default:{name:`KlaytnScope`,url:`https://baobab.klaytnscope.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:123390593}},testnet:!0}),TT=R({id:701,name:`Koi Network`,nativeCurrency:{decimals:18,name:`Koi Network Native Token`,symbol:`KRING`},rpcUrls:{default:{http:[`https://koi-rpc.darwinia.network`],webSocket:[`wss://koi-rpc.darwinia.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://koi-scan.darwinia.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:180001}},testnet:!0}),ET=R({id:255,name:`Kroma`,nativeCurrency:{name:`ETH`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://api.kroma.network`]}},blockExplorers:{default:{name:`Kroma Explorer`,url:`https://blockscout.kroma.network`,apiUrl:`https://blockscout.kroma.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:16054868}},testnet:!1}),DT=R({id:2358,name:`Kroma Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://api.sepolia.kroma.network`]}},blockExplorers:{default:{name:`Kroma Sepolia Explorer`,url:`https://blockscout.sepolia.kroma.network`,apiUrl:`https://blockscout.sepolia.kroma.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:8900914}},testnet:!0}),OT=R({id:12324,name:`L3X Protocol`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.l3x.com`],webSocket:[`wss://rpc-mainnet.l3x.com`]}},blockExplorers:{default:{name:`L3X Mainnet Explorer`,url:`https://explorer.l3x.com`,apiUrl:`https://explorer.l3x.com/api/v2`}},testnet:!1}),kT=R({id:12325,name:`L3X Protocol Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.l3x.com`],webSocket:[`wss://rpc-testnet.l3x.com`]}},blockExplorers:{default:{name:`L3X Testnet Explorer`,url:`https://explorer-testnet.l3x.com`,apiUrl:`https://explorer-testnet.l3x.com/api/v2`}},testnet:!0}),AT=R({id:360890,name:`LAVITA Mainnet`,nativeCurrency:{name:`vTFUEL`,symbol:`vTFUEL`,decimals:18},rpcUrls:{default:{http:[`https://tsub360890-eth-rpc.thetatoken.org/rpc`]}},blockExplorers:{default:{name:`LAVITA Explorer`,url:`https://tsub360890-explorer.thetatoken.org`}},testnet:!1}),jT=R({id:232,name:`Lens`,nativeCurrency:{name:`GHO`,symbol:`GHO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.lens.xyz`]}},blockExplorers:{default:{name:`Lens Block Explorer`,url:`https://explorer.lens.xyz`,apiUrl:`https://explorer.lens.xyz/api`}}}),MT=R({id:37111,name:`Lens Testnet`,nativeCurrency:{name:`GRASS`,symbol:`GRASS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.lens.dev`],webSocket:[`wss://rpc.testnet.lens.dev/ws`]}},blockExplorers:{default:{name:`Lens Block Explorer`,url:`https://block-explorer.testnet.lens.dev`,apiUrl:`https://block-explorer-api.staging.lens.dev/api`}},testnet:!0}),NT=R({id:21363,name:`Lestnet`,nativeCurrency:{name:`Lestnet Ether`,symbol:`LETH`,decimals:18},rpcUrls:{default:{http:[`https://service.lestnet.org`]}},blockExplorers:{default:{name:`Lestnet Explorer`,url:`https://explore.lestnet.org`}},testnet:!0}),PT=R({id:1891,name:`LightLink Pegasus Testnet`,network:`lightlink-pegasus`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://replicator.pegasus.lightlink.io/rpc/v1`]}},blockExplorers:{default:{name:`LightLink Pegasus Explorer`,url:`https://pegasus.lightlink.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:127188532}},testnet:!0}),FT=R({id:1890,name:`LightLink Phoenix Mainnet`,network:`lightlink-phoenix`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://replicator.phoenix.lightlink.io/rpc/v1`]}},blockExplorers:{default:{name:`LightLink Phoenix Explorer`,url:`https://phoenix.lightlink.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:125499184}},testnet:!1});na(),A(),Pp(),Iu(),Uu(),Qu();async function IT(e,t){let{account:n=e.account}=t;if(!n)throw new Dm;let r=ta(n);try{let{accessList:n,blockNumber:i,blockTag:a,data:o,gas:s,gasPrice:c,maxFeePerGas:l,maxPriorityFeePerGas:u,nonce:d,to:f,value:p,...m}=t,h=(typeof i==`bigint`?k(i):void 0)||a;Zu(t);let g=e.chain?.formatters?.transactionRequest?.format,_=(g||zu)({...Fu(m,{format:g}),from:r?.address,accessList:n,data:o,gas:s,gasPrice:c,maxFeePerGas:l,maxPriorityFeePerGas:u,nonce:d,to:f,value:p},`estimateGas`),{baseFeePerGas:v,gasLimit:y,priorityFeePerGas:b}=await e.request({method:`linea_estimateGas`,params:h?[_,h]:[_]});return{baseFeePerGas:BigInt(v),gasLimit:BigInt(y),priorityFeePerGas:BigInt(b)}}catch(n){throw Np(n,{...t,account:r,chain:e.chain})}}const LT={fees:{estimateFeesPerGas:RT,async maxPriorityFeePerGas({block:e,client:t,request:n}){let r=await RT({block:e,client:t,multiply:e=>e,request:n,type:`eip1559`});return r?.maxPriorityFeePerGas?r.maxPriorityFeePerGas:null}}};async function RT({client:e,multiply:t,request:n,type:r}){try{let i=await IT(e,{...n,account:n?.account}),{priorityFeePerGas:a}=i,o=t(BigInt(i.baseFeePerGas))+a;return r===`legacy`?{gasPrice:o}:{maxFeePerGas:o,maxPriorityFeePerGas:a}}catch{return null}}const zT=R({...LT,id:59144,name:`Linea Mainnet`,blockTime:2e3,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.linea.build`],webSocket:[`wss://rpc.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://lineascan.build`,apiUrl:`https://api.lineascan.build/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:42},ensRegistry:{address:`0x50130b669B28C339991d8676FA73CF122a121267`,blockCreated:6682888},ensUniversalResolver:{address:`0x4D41762915F83c76EcaF6776d9b08076aA32b492`,blockCreated:22222151}},ensTlds:[`.linea.eth`],testnet:!1}),BT=R({id:59140,name:`Linea Goerli Testnet`,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.goerli.linea.build`],webSocket:[`wss://rpc.goerli.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli.lineascan.build`,apiUrl:`https://api-goerli.lineascan.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:498623}},testnet:!0}),VT=R({...LT,id:59141,name:`Linea Sepolia Testnet`,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.sepolia.linea.build`],webSocket:[`wss://rpc.sepolia.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia.lineascan.build`,apiUrl:`https://api-sepolia.lineascan.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:227427},ensRegistry:{address:`0x5B2636F0f2137B4aE722C01dd5122D7d3e9541f7`,blockCreated:2395094},ensUniversalResolver:{address:`0x4D41762915F83c76EcaF6776d9b08076aA32b492`,blockCreated:17168484}},ensTlds:[`.linea.eth`],testnet:!0}),HT=R({id:59140,name:`Linea Goerli Testnet`,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.goerli.linea.build`],webSocket:[`wss://rpc.goerli.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli.lineascan.build`,apiUrl:`https://goerli.lineascan.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:498623}},testnet:!0});var UT=1;const WT=R({...z,id:1135,name:`Lisk`,network:`lisk`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.api.lisk.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.lisk.com`,apiUrl:`https://blockscout.lisk.com/api`}},contracts:{...z.contracts,multicall3:{address:`0xA9d71E1dd7ca26F26e656E66d6AA81ed7f745bf0`},l2OutputOracle:{[UT]:{address:`0x113cB99283AF242Da0A0C54347667edF531Aa7d6`}},portal:{[UT]:{address:`0x26dB93F8b8b4f7016240af62F7730979d353f9A7`}},l1StandardBridge:{[UT]:{address:`0x2658723Bf70c7667De6B25F99fcce13A16D25d08`}}},sourceId:UT});var GT=11155111;const KT=R({...z,id:4202,network:`lisk-sepolia`,name:`Lisk Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.sepolia-api.lisk.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia-blockscout.lisk.com`,apiUrl:`https://sepolia-blockscout.lisk.com/api`}},contracts:{...z.contracts,l2OutputOracle:{[GT]:{address:`0xA0E35F56C318DE1bD5D9ca6A94Fe7e37C5663348`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[GT]:{address:`0xe3d90F21490686Ec7eF37BE788E02dfC12787264`}},l1StandardBridge:{[GT]:{address:`0x1Fb30e446eA791cd1f011675E5F3f5311b70faF5`}}},testnet:!0,sourceId:GT}),qT=R({id:9496,name:`Load Alphanet`,nativeCurrency:{name:`Testnet LOAD`,symbol:`tLOAD`,decimals:18},rpcUrls:{default:{http:[`https://alphanet.load.network`]}},blockExplorers:{default:{name:`Load Alphanet Explorer`,url:`https://explorer.load.network`}},testnet:!0}),JT=R({id:1337,name:`Localhost`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`]}}}),YT=R({id:15551,name:`LoopNetwork Mainnet`,nativeCurrency:{name:`LOOP`,symbol:`LOOP`,decimals:18},rpcUrls:{default:{http:[`https://api.mainnetloop.com`]}},blockExplorers:{default:{name:`LoopNetwork Blockchain Explorer`,url:`https://explorer.mainnetloop.com/`}},testnet:!1}),XT=R({id:42,network:`lukso`,name:`LUKSO`,nativeCurrency:{name:`LUKSO`,symbol:`LYX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.lukso.network`],webSocket:[`wss://ws-rpc.mainnet.lukso.network`]}},blockExplorers:{default:{name:`LUKSO Mainnet Explorer`,url:`https://explorer.execution.mainnet.lukso.network`,apiUrl:`https://api.explorer.execution.mainnet.lukso.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:468183}}}),ZT=R({id:4201,name:`LUKSO Testnet`,nativeCurrency:{decimals:18,name:`LUKSO Testnet`,symbol:`LYXt`},rpcUrls:{default:{http:[`https://rpc.testnet.lukso.network`],webSocket:[`wss://ws-rpc.testnet.lukso.network`]}},blockExplorers:{default:{name:`LUKSO Testnet Explorer`,url:`https://explorer.execution.testnet.lukso.network`,apiUrl:`https://api.explorer.execution.testnet.lukso.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:605348}},testnet:!0}),QT=R({id:994873017,name:`Lumia Mainnet`,network:`LumiaMainnet`,nativeCurrency:{name:`Lumia`,symbol:`LUMIA`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.lumia.org`]}},blockExplorers:{default:{name:`Lumia Explorer`,url:`https://explorer.lumia.org/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3975939}},testnet:!1}),$T=R({id:1952959480,name:`Lumia Testnet`,network:`LumiaTestnet`,nativeCurrency:{name:`Lumia`,symbol:`LUMIA`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.lumia.org`]}},blockExplorers:{default:{name:`Lumia Testnet Explorer`,url:`https://testnet-explorer.lumia.org/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2235063}},testnet:!0}),eE=R({id:96370,name:`Lumoz`,nativeCurrency:{decimals:18,name:`Lumoz Token`,symbol:`MOZ`},rpcUrls:{default:{http:[`https://rpc.lumoz.org`]}},blockExplorers:{default:{name:`Lumoz Scan`,url:`https://scan.lumoz.info`}},testnet:!1}),tE=R({id:105363,name:`Lumoz Testnet`,nativeCurrency:{decimals:18,name:`Lumoz Testnet Token`,symbol:`MOZ`},rpcUrls:{default:{http:[`https://testnet-rpc.lumoz.org`]}},testnet:!0}),nE=R({id:721,name:`Lycan`,nativeCurrency:{decimals:18,name:`Lycan`,symbol:`LYC`},rpcUrls:{default:{http:[`https://rpc.lycanchain.com`,`https://us-east.lycanchain.com`,`https://us-west.lycanchain.com`,`https://eu-north.lycanchain.com`,`https://eu-west.lycanchain.com`,`https://asia-southeast.lycanchain.com`],webSocket:[`wss://rpc.lycanchain.com`,`wss://us-east.lycanchain.com`,`wss://us-west.lycanchain.com`,`wss://eu-north.lycanchain.com`,`wss://eu-west.lycanchain.com`,`wss://asia-southeast.lycanchain.com`]}},blockExplorers:{default:{name:`Lycan Explorer`,url:`https://explorer.lycanchain.com`}}}),rE=R({id:957,name:`Lyra Chain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.lyra.finance`]}},blockExplorers:{default:{name:`Lyra Explorer`,url:`https://explorer.lyra.finance`,apiUrl:`https://explorer.lyra.finance/api/v2`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1935198}}}),iE=R({id:1,name:`Ethereum`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:12e3,rpcUrls:{default:{http:[`https://eth.merkle.io`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://etherscan.io`,apiUrl:`https://api.etherscan.io/api`}},contracts:{ensUniversalResolver:{address:`0xeeeeeeee14d718c2b47d9923deab1335e144eeee`,blockCreated:23085558},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14353601}}}),aE=R({id:595,name:`Mandala TC9`,network:`mandala`,nativeCurrency:{name:`Mandala`,symbol:`mACA`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-tc9.aca-staging.network`],webSocket:[`wss://eth-rpc-tc9.aca-staging.network`]}},blockExplorers:{default:{name:`Mandala Blockscout`,url:`https://blockscout.mandala.aca-staging.network`,apiUrl:`https://blockscout.mandala.aca-staging.network/api`}},testnet:!0}),oE=R({id:169,name:`Manta Pacific Mainnet`,network:`manta`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://pacific-rpc.manta.network/http`]}},blockExplorers:{default:{name:`Manta Explorer`,url:`https://pacific-explorer.manta.network`,apiUrl:`https://pacific-explorer.manta.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:332890}}}),sE=R({id:3441006,name:`Manta Pacific Sepolia Testnet`,network:`manta-sepolia`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://pacific-rpc.sepolia-testnet.manta.network/http`]}},blockExplorers:{default:{name:`Manta Sepolia Testnet Explorer`,url:`https://pacific-explorer.sepolia-testnet.manta.network`,apiUrl:`https://pacific-explorer.sepolia-testnet.manta.network/api`}},contracts:{multicall3:{address:`0xca54918f7B525C8df894668846506767412b53E3`,blockCreated:479584}},testnet:!0}),cE=R({id:3441005,name:`Manta Pacific Testnet`,network:`manta-testnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://manta-testnet.calderachain.xyz/http`]}},blockExplorers:{default:{name:`Manta Testnet Explorer`,url:`https://pacific-explorer.testnet.manta.network`,apiUrl:`https://pacific-explorer.testnet.manta.network/api`}},contracts:{multicall3:{address:`0x211B1643b95Fe76f11eD8880EE810ABD9A4cf56C`,blockCreated:419915}},testnet:!0}),lE=R({id:5e3,name:`Mantle`,nativeCurrency:{decimals:18,name:`MNT`,symbol:`MNT`},rpcUrls:{default:{http:[`https://rpc.mantle.xyz`]}},blockExplorers:{default:{name:`Mantle Explorer`,url:`https://mantlescan.xyz/`,apiUrl:`https://api.mantlescan.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:304717}}}),uE=R({id:5003,name:`Mantle Sepolia Testnet`,nativeCurrency:{decimals:18,name:`MNT`,symbol:`MNT`},rpcUrls:{default:{http:[`https://rpc.sepolia.mantle.xyz`]}},blockExplorers:{default:{name:`Mantle Testnet Explorer`,url:`https://explorer.sepolia.mantle.xyz/`,apiUrl:`https://explorer.sepolia.mantle.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4584012}},testnet:!0}),dE=R({id:5001,name:`Mantle Testnet`,nativeCurrency:{decimals:18,name:`MNT`,symbol:`MNT`},rpcUrls:{default:{http:[`https://rpc.testnet.mantle.xyz`]}},blockExplorers:{default:{name:`Mantle Testnet Explorer`,url:`https://explorer.testnet.mantle.xyz`,apiUrl:`https://explorer.testnet.mantle.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:561333}},testnet:!0}),fE=R({id:5887,name:`MANTRA DuKong EVM Testnet`,nativeCurrency:{decimals:18,name:`OM`,symbol:`OM`},rpcUrls:{default:{http:[`https://evm.dukong.mantrachain.io`]}},blockExplorers:{default:{name:`MANTRAScan`,url:`https://mantrascan.io/dukong`}},testnet:!0}),pE=R({id:5888,name:`MANTRA EVM`,nativeCurrency:{decimals:18,name:`OM`,symbol:`OM`},rpcUrls:{default:{http:[`https://evm.mantrachain.io`],webSocket:[`https://evm.mantrachain.io/ws`]}},blockExplorers:{default:{name:`MANTRA Scan`,url:`https://mantrascan.io/mainnet`}}}),mE=R({id:22776,name:`MAP Protocol`,nativeCurrency:{decimals:18,name:`MAPO`,symbol:`MAPO`},rpcUrls:{default:{http:[`https://rpc.maplabs.io`]}},blockExplorers:{default:{name:`MAPO Scan`,url:`https://maposcan.io`}},testnet:!1}),hE=R({id:698,name:`Matchain`,nativeCurrency:{name:`BNB`,symbol:`BNB`,decimals:18},rpcUrls:{default:{http:[`https://rpc.matchain.io`]}},blockExplorers:{default:{name:`Matchain Scan`,url:`https://matchscan.io`}}}),gE=R({id:699,name:`Matchain Testnet`,nativeCurrency:{name:`BNB`,symbol:`BNB`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.matchain.io`]}},blockExplorers:{default:{name:`Matchain Scan`,url:`https://testnet.matchscan.io`}},testnet:!0}),_E=R({id:29548,name:`MCH Verse`,nativeCurrency:{name:`Oasys`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.oasys.mycryptoheroes.net`]}},blockExplorers:{default:{name:`MCH Verse Explorer`,url:`https://explorer.oasys.mycryptoheroes.net`,apiUrl:`https://explorer.oasys.mycryptoheroes.net/api`}},testnet:!1}),vE=R({id:6342,blockTime:1e3,name:`MegaETH Testnet`,nativeCurrency:{name:`MegaETH Testnet Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://carrot.megaeth.com/rpc`],webSocket:[`wss://carrot.megaeth.com/ws`]}},blockExplorers:{default:{name:`MegaETH Testnet Explorer`,url:`https://www.megaexplorer.xyz/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},testnet:!0}),yE=R({id:7078815900,name:`Mekong Pectra Devnet`,nativeCurrency:{name:`eth`,symbol:`eth`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mekong.ethpandaops.io`]}},blockExplorers:{default:{name:`Block Explorer`,url:`https://explorer.mekong.ethpandaops.io`}},testnet:!0}),bE=R({id:333000333,name:`Meld`,nativeCurrency:{decimals:18,name:`Meld`,symbol:`MELD`},rpcUrls:{default:{http:[`https://rpc-1.meld.com`]}},blockExplorers:{default:{name:`MELDscan`,url:`https://meldscan.io`}},contracts:{multicall3:{address:`0x769ee5a8e82c15c1b6e358f62ac8eb6e3abe8dc5`,blockCreated:360069}}}),xE=R({id:4352,name:`MemeCore`,nativeCurrency:{decimals:18,name:`M`,symbol:`M`},rpcUrls:{default:{http:[`https://rpc.memecore.net`],webSocket:[`wss://ws.memecore.net`]}},blockExplorers:{default:{name:`MemeCore Explorer`,url:`https://memecorescan.io`,apiUrl:`https://api.memecorescan.io/api`},okx:{name:`MemeCore Explorer`,url:`https://web3.okx.com/explorer/memecore`},memecore:{name:`MemeCore Explorer`,url:`https://blockscout.memecore.com`,apiUrl:`https://blockscout.memecore.com/api`}}}),SE=R({id:43521,name:`Formicarium`,nativeCurrency:{decimals:18,name:`M`,symbol:`M`},rpcUrls:{default:{http:[`https://rpc.formicarium.memecore.net`],webSocket:[`wss://ws.formicarium.memecore.net`]}},blockExplorers:{default:{name:`MemeCore Testnet Explorer`,url:`https://formicarium.memecorescan.io`},okx:{name:`MemeCore Testnet Explorer`,url:`https://web3.okx.com/explorer/formicarium-testnet`},memecore:{name:`MemeCore Testnet Explorer`,url:`https://formicarium.blockscout.memecore.com`,apiUrl:`https://formicarium.blockscout.memecore.com/api`}},testnet:!0}),CE=R({id:4200,name:`Merlin`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.merlinchain.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://scan.merlinchain.io`,apiUrl:`https://scan.merlinchain.io/api`}}}),wE=R({id:4203,name:`Merlin Erigon Testnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-erigon-rpc.merlinchain.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://testnet-erigon-scan.merlinchain.io`,apiUrl:`https://testnet-erigon-scan.merlinchain.io/api`}},testnet:!0}),TE=R({id:571,name:`MetaChain Mainnet`,nativeCurrency:{name:`Metatime Coin`,symbol:`MTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.metatime.com`]}},blockExplorers:{default:{name:`MetaExplorer`,url:`https://explorer.metatime.com`}},contracts:{multicall3:{address:`0x0000000000000000000000000000000000003001`,blockCreated:0}}}),EE=R({id:1453,name:`MetaChain Istanbul`,nativeCurrency:{name:`Metatime Coin`,symbol:`MTC`,decimals:18},rpcUrls:{default:{http:[`https://istanbul-rpc.metachain.dev`]}},blockExplorers:{default:{name:`MetaExplorer`,url:`https://istanbul-explorer.metachain.dev`}},contracts:{multicall3:{address:`0x0000000000000000000000000000000000003001`,blockCreated:0}},testnet:!0}),DE=R({id:11,name:`Metadium Network`,nativeCurrency:{decimals:18,name:`META`,symbol:`META`},rpcUrls:{default:{http:[`https://api.metadium.com/prod`]}},blockExplorers:{default:{name:`Metadium Explorer`,url:`https://explorer.metadium.com`}},testnet:!1});var OE=1;const kE=R({...z,id:1750,name:`Metal L2`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.metall2.com`],webSocket:[`wss://rpc.metall2.com`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.metall2.com`,apiUrl:`https://explorer.metall2.com/api`}},contracts:{...z.contracts,l2OutputOracle:{[OE]:{address:`0x3B1F7aDa0Fcc26B13515af752Dd07fB1CAc11426`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},portal:{[OE]:{address:`0x3F37aBdE2C6b5B2ed6F8045787Df1ED1E3753956`}},l1StandardBridge:{[OE]:{address:`0x6d0f65D59b55B0FEC5d2d15365154DcADC140BF3`}}},sourceId:OE}),AE=R({id:82,name:`Meter`,nativeCurrency:{decimals:18,name:`MTR`,symbol:`MTR`},rpcUrls:{default:{http:[`https://rpc.meter.io`]}},blockExplorers:{default:{name:`MeterScan`,url:`https://scan.meter.io`}}}),jE=R({id:83,name:`Meter Testnet`,nativeCurrency:{decimals:18,name:`MTR`,symbol:`MTR`},rpcUrls:{default:{http:[`https://rpctest.meter.io`]}},blockExplorers:{default:{name:`MeterTestnetScan`,url:`https://scan-warringstakes.meter.io`}}}),ME=R({id:1088,name:`Metis`,nativeCurrency:{decimals:18,name:`Metis`,symbol:`METIS`},rpcUrls:{default:{http:[`https://metis.rpc.hypersync.xyz`,`https://metis-pokt.nodies.app`,`https://api.blockeden.xyz/metis/67nCBdZQSH9z3YqDDjdm`,`https://metis-andromeda.rpc.thirdweb.com`,`https://metis-andromeda.gateway.tenderly.co`,`https://metis.api.onfinality.io/public`,`https://andromeda.metis.io/?owner=1088`,`https://metis-mainnet.public.blastapi.io`],webSocket:[`wss://metis-rpc.publicnode.com`,`wss://metis.drpc.org`]}},blockExplorers:{default:{name:`Metis Explorer`,url:`https://explorer.metis.io`,apiUrl:`https://api.routescan.io/v2/network/mainnet/evm/1088/etherscan/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2338552}}}),NE=R({id:599,name:`Metis Goerli`,nativeCurrency:{decimals:18,name:`Metis Goerli`,symbol:`METIS`},rpcUrls:{default:{http:[`https://goerli.gateway.metisdevops.link`]}},blockExplorers:{default:{name:`Metis Goerli Explorer`,url:`https://goerli.explorer.metisdevops.link`,apiUrl:`https://goerli.explorer.metisdevops.link/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1006207}}}),PE=R({id:59902,name:`Metis Sepolia`,nativeCurrency:{decimals:18,name:`Test Metis`,symbol:`tMETIS`},rpcUrls:{default:{http:[`https://sepolia.metisdevops.link`,`https://metis-sepolia-rpc.publicnode.com`,`https://metis-sepolia.gateway.tenderly.co`],webSocket:[`wss://metis-sepolia-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Metis Sepolia Explorer`,url:`https://sepolia-explorer.metisdevops.link`,apiUrl:`https://sepolia-explorer.metisdevops.link/api-docs`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:224185}}}),FE=R({id:7518,name:`MEVerse Chain Mainnet`,nativeCurrency:{decimals:18,name:`MEVerse`,symbol:`MEV`},rpcUrls:{default:{http:[`https://rpc.meversemainnet.io`]}},blockExplorers:{default:{name:`Explorer`,url:`https://www.meversescan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:86881340}}}),IE=R({id:4759,name:`MEVerse Chain Testnet`,nativeCurrency:{decimals:18,name:`MEVerse`,symbol:`MEV`},rpcUrls:{default:{http:[`https://rpc.meversetestnet.io`]}},blockExplorers:{default:{name:`Explorer`,url:`https://testnet.meversescan.io/`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:64371115}},testnet:!0}),LE=R({id:185,name:`Mint Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mintchain.io`]}},blockExplorers:{default:{name:`Mintchain explorer`,url:`https://explorer.mintchain.io`}},testnet:!1}),RE=R({id:1686,name:`Mint Sepolia Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.mintchain.io`]}},blockExplorers:{default:{name:`Mintchain Testnet explorer`,url:`https://testnet-explorer.mintchain.io`}},testnet:!0}),zE=R({id:124832,name:`Mitosis Testnet`,nativeCurrency:{name:`MITO`,symbol:`MITO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.mitosis.org`]}},blockExplorers:{default:{name:`Mitosis testnet explorer`,url:`https://testnet.mitosiscan.xyz`}},testnet:!0});var BE=1;const VE=R({...z,id:34443,name:`Mode Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.mode.network`]}},blockExplorers:{default:{name:`Modescan`,url:`https://modescan.io`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2465882},l2OutputOracle:{[BE]:{address:`0x4317ba146D4933D889518a3e5E11Fe7a53199b04`}},portal:{[BE]:{address:`0x8B34b14c7c7123459Cf3076b8Cb929BE097d0C07`}},l1StandardBridge:{[BE]:{address:`0x735aDBbE72226BD52e818E7181953f42E3b0FF21`}}},sourceId:BE});var HE=11155111;const UE=R({...z,id:919,name:`Mode Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.mode.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia.explorer.mode.network`,apiUrl:`https://sepolia.explorer.mode.network/api`}},contracts:{...z.contracts,l2OutputOracle:{[HE]:{address:`0x2634BD65ba27AB63811c74A63118ACb312701Bfa`,blockCreated:3778393}},portal:{[HE]:{address:`0x320e1580effF37E008F1C92700d1eBa47c1B23fD`,blockCreated:3778395}},l1StandardBridge:{[HE]:{address:`0xbC5C679879B2965296756CD959C3C739769995E2`,blockCreated:3778392}},multicall3:{address:`0xBAba8373113Fb7a68f195deF18732e01aF8eDfCF`,blockCreated:3019007}},testnet:!0,sourceId:HE}),WE=R({id:10143,name:`Monad Testnet`,blockTime:400,nativeCurrency:{name:`Testnet MON Token`,symbol:`MON`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.monad.xyz`]}},blockExplorers:{default:{name:`Monad Testnet explorer`,url:`https://testnet.monadexplorer.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:251449}},testnet:!0}),GE=R({id:1287,name:`Moonbase Alpha`,nativeCurrency:{decimals:18,name:`DEV`,symbol:`DEV`},rpcUrls:{default:{http:[`https://rpc.api.moonbase.moonbeam.network`],webSocket:[`wss://wss.api.moonbase.moonbeam.network`]}},blockExplorers:{default:{name:`Moonscan`,url:`https://moonbase.moonscan.io`,apiUrl:`https://moonbase.moonscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1850686}},testnet:!0}),KE=R({id:1284,name:`Moonbeam`,nativeCurrency:{decimals:18,name:`GLMR`,symbol:`GLMR`},rpcUrls:{default:{http:[`https://moonbeam.public.blastapi.io`],webSocket:[`wss://moonbeam.public.blastapi.io`]}},blockExplorers:{default:{name:`Moonscan`,url:`https://moonscan.io`,apiUrl:`https://api-moonbeam.moonscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:609002}},testnet:!1}),qE=R({id:1281,name:`Moonbeam Development Node`,nativeCurrency:{decimals:18,name:`DEV`,symbol:`DEV`},rpcUrls:{default:{http:[`http://127.0.0.1:9944`],webSocket:[`wss://127.0.0.1:9944`]}}}),JE=R({id:1285,name:`Moonriver`,nativeCurrency:{decimals:18,name:`MOVR`,symbol:`MOVR`},rpcUrls:{default:{http:[`https://moonriver.public.blastapi.io`],webSocket:[`wss://moonriver.public.blastapi.io`]}},blockExplorers:{default:{name:`Moonscan`,url:`https://moonriver.moonscan.io`,apiUrl:`https://api-moonriver.moonscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1597904}},testnet:!1}),YE=R({id:2818,name:`Morph`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.morphl2.io`],webSocket:[`wss://rpc.morphl2.io:8443`]}},blockExplorers:{default:{name:`Morph Explorer`,url:`https://explorer.morphl2.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3654913}},testnet:!1}),XE=R({id:2810,name:`Morph Holesky`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-quicknode-holesky.morphl2.io`],webSocket:[`wss://rpc-quicknode-holesky.morphl2.io`]}},blockExplorers:{default:{name:`Morph Holesky Explorer`,url:`https://explorer-holesky.morphl2.io`,apiUrl:`https://explorer-api-holesky.morphl2.io/api?`}},testnet:!0}),ZE=R({id:2710,name:`Morph Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.morphl2.io`]}},blockExplorers:{default:{name:`Morph Testnet Explorer`,url:`https://explorer-testnet.morphl2.io`,apiUrl:`https://explorer-api-testnet.morphl2.io/api`}},testnet:!0}),QE=R({id:5551,name:`Nahmii 2 Mainnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://l2.nahmii.io`]}},blockExplorers:{default:{name:`Nahmii 2 Explorer`,url:`https://explorer.n2.nahmii.io`}},testnet:!1}),$E=R({id:22222,name:`Nautilus Mainnet`,nativeCurrency:{name:`ZBC`,symbol:`ZBC`,decimals:9},rpcUrls:{default:{http:[`https://api.nautilus.nautchain.xyz`]}},blockExplorers:{default:{name:`NautScan`,url:`https://nautscan.com`}}}),eD=R({id:397,name:`NEAR Protocol`,nativeCurrency:{decimals:18,name:`NEAR`,symbol:`NEAR`},rpcUrls:{default:{http:[`https://eth-rpc.mainnet.near.org`]}},blockExplorers:{default:{name:`NEAR Explorer`,url:`https://eth-explorer.near.org`}},testnet:!1}),tD=R({id:398,name:`NEAR Protocol Testnet`,nativeCurrency:{decimals:18,name:`NEAR`,symbol:`NEAR`},rpcUrls:{default:{http:[`https://eth-rpc.testnet.near.org`]}},blockExplorers:{default:{name:`NEAR Explorer`,url:`https://eth-explorer-testnet.near.org`}},testnet:!0}),nD=R({id:245022926,name:`Neon EVM DevNet`,nativeCurrency:{name:`NEON`,symbol:`NEON`,decimals:18},rpcUrls:{default:{http:[`https://devnet.neonevm.org`]}},blockExplorers:{default:{name:`Neonscan`,url:`https://devnet.neonscan.org`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:205206112}},testnet:!0}),rD=R({id:245022934,network:`neonMainnet`,name:`Neon EVM MainNet`,nativeCurrency:{name:`NEON`,symbol:`NEON`,decimals:18},rpcUrls:{default:{http:[`https://neon-proxy-mainnet.solana.p2p.org`]}},blockExplorers:{default:{name:`Neonscan`,url:`https://neonscan.org`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:206545524}},testnet:!1}),iD=R({id:47763,name:`Neo X Mainnet`,nativeCurrency:{name:`Gas`,symbol:`GAS`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-1.rpc.banelabs.org`,`https://mainnet-2.rpc.banelabs.org`]}},blockExplorers:{default:{name:`Neo X - Explorer`,url:`https://xexplorer.neo.org`}},testnet:!1}),aD=R({id:12227332,name:`Neo X Testnet T4`,nativeCurrency:{name:`Gas`,symbol:`GAS`,decimals:18},rpcUrls:{default:{http:[`https://testnet.rpc.banelabs.org/`]}},blockExplorers:{default:{name:`neox-scan`,url:`https://xt4scan.ngd.network`}},testnet:!0}),oD=R({id:1012,name:`Newton`,nativeCurrency:{name:`Newton`,symbol:`NEW`,decimals:18},rpcUrls:{default:{http:[`https://global.rpc.mainnet.newtonproject.org`]}},blockExplorers:{default:{name:`NewFi explorer`,url:`https://explorer.newtonproject.org/`}},testnet:!1}),sD=R({id:4242,name:`Nexi`,nativeCurrency:{name:`Nexi`,symbol:`NEXI`,decimals:18},rpcUrls:{default:{http:[`https://rpc.chain.nexi.technology`]}},blockExplorers:{default:{name:`NexiScan`,url:`https://www.nexiscan.com`,apiUrl:`https://www.nexiscan.com/api`}},contracts:{multicall3:{address:`0x0277A46Cc69A57eE3A6C8c158bA874832F718B8E`,blockCreated:25770160}}}),cD=R({id:240,name:`Nexilix Smart Chain`,nativeCurrency:{decimals:18,name:`Nexilix`,symbol:`NEXILIX`},rpcUrls:{default:{http:[`https://rpcurl.pos.nexilix.com`]}},blockExplorers:{default:{name:`NexilixScan`,url:`https://scan.nexilix.com`}},contracts:{multicall3:{address:`0x58381c8e2BF9d0C2C4259cA14BdA9Afe02831244`,blockCreated:74448}}}),lD=R({id:6900,name:`Nibiru`,nativeCurrency:{decimals:18,name:`NIBI`,symbol:`NIBI`},rpcUrls:{default:{http:[`https://evm-rpc.nibiru.fi`]}},blockExplorers:{default:{name:`NibiScan`,url:`https://nibiscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:19587573}}}),uD=R({id:200024,name:`Nitrograph Testnet`,testnet:!0,rpcUrls:{default:{http:[`https://rpc-testnet.nitrograph.foundation`]}},nativeCurrency:{name:`Nitro`,symbol:`NOS`,decimals:18},blockExplorers:{default:{url:`https://explorer-testnet.nitrograph.foundation`,name:`Nitrograph Explorer`}}}),dD=R({id:4090,network:`oasis-testnet`,name:`Oasis Testnet`,nativeCurrency:{name:`Fasttoken`,symbol:`FTN`,decimals:18},rpcUrls:{default:{http:[`https://rpc1.oasis.bahamutchain.com`]}},blockExplorers:{default:{name:`Ftnscan`,url:`https://oasis.ftnscan.com`,apiUrl:`https://oasis.ftnscan.com/api`}},testnet:!0}),fD=R({id:248,name:`Oasys`,nativeCurrency:{name:`Oasys`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.oasys.games`]}},blockExplorers:{default:{name:`OasysScan`,url:`https://scan.oasys.games`,apiUrl:`https://scan.oasys.games/api`}}}),pD=R({id:911867,name:`Odyssey Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://odyssey.ithaca.xyz`]}},blockExplorers:{default:{name:`Odyssey Explorer`,url:`https://odyssey-explorer.ithaca.xyz`,apiUrl:`https://odyssey-explorer.ithaca.xyz/api`}},testnet:!0}),mD=R({id:66,name:`OKC`,nativeCurrency:{decimals:18,name:`OKT`,symbol:`OKT`},rpcUrls:{default:{http:[`https://exchainrpc.okex.org`]}},blockExplorers:{default:{name:`oklink`,url:`https://www.oklink.com/okc`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:10364792}}}),hD=R({id:311,name:`Omax Mainnet`,nativeCurrency:{decimals:18,name:`OMAX`,symbol:`OMAX`},rpcUrls:{default:{http:[`https://mainapi.omaxray.com`]}},blockExplorers:{default:{name:`Omax Explorer`,url:`https://omaxscan.com`}},testnet:!1}),gD=R({id:166,name:`Omni`,nativeCurrency:{name:`Omni`,symbol:`OMNI`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.omni.network`],webSocket:[`wss://mainnet.omni.network`]}},blockExplorers:{default:{name:`OmniScan`,url:`https://omniscan.network`}},testnet:!1}),_D=R({id:164,name:`Omni Omega`,nativeCurrency:{name:`Omni`,symbol:`OMNI`,decimals:18},rpcUrls:{default:{http:[`https://omega.omni.network`],webSocket:[`wss://omega.omni.network`]}},blockExplorers:{default:{name:`Omega OmniScan`,url:`https://omega.omniscan.network/`}},testnet:!0}),vD=R({id:309075,name:`One World Chain Mainnet`,nativeCurrency:{decimals:18,name:`OWCT`,symbol:`OWCT`},rpcUrls:{default:{http:[`https://mainnet-rpc.oneworldchain.org`]}},blockExplorers:{default:{name:`One World Explorer`,url:`https://mainnet.oneworldchain.org`}},testnet:!1}),yD=R({id:9700,name:`OORT MainnetDev`,nativeCurrency:{decimals:18,name:`OORT`,symbol:`OORT`},rpcUrls:{default:{http:[`https://dev-rpc.oortech.com`]}},blockExplorers:{default:{name:`OORT MainnetDev Explorer`,url:`https://dev-scan.oortech.com`}}});var bD=56;const xD=R({id:204,name:`opBNB`,nativeCurrency:{name:`BNB`,symbol:`BNB`,decimals:18},rpcUrls:{default:{http:[`https://opbnb-mainnet-rpc.bnbchain.org`]}},blockExplorers:{default:{name:`opBNB (BSCScan)`,url:`https://opbnb.bscscan.com`,apiUrl:`https://api-opbnb.bscscan.com/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:512881},l2OutputOracle:{[bD]:{address:`0x153CAB79f4767E2ff862C94aa49573294B13D169`}},portal:{[bD]:{address:`0x1876EA7702C0ad0C6A2ae6036DE7733edfBca519`}},l1StandardBridge:{[bD]:{address:`0xF05F0e4362859c3331Cb9395CBC201E3Fa6757Ea`}}},sourceId:bD});var SD=97;const CD=R({id:5611,name:`opBNB Testnet`,nativeCurrency:{decimals:18,name:`tBNB`,symbol:`tBNB`},rpcUrls:{default:{http:[`https://opbnb-testnet-rpc.bnbchain.org`]}},blockExplorers:{default:{name:`opbnbscan`,url:`https://testnet.opbnbscan.com`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3705108},l2OutputOracle:{[SD]:{address:`0xFf2394Bb843012562f4349C6632a0EcB92fC8810`}},portal:{[SD]:{address:`0x4386C8ABf2009aC0c263462Da568DD9d46e52a31`}},l1StandardBridge:{[SD]:{address:`0x677311Fd2cCc511Bbc0f581E8d9a07B033D5E840`}}},testnet:!0,sourceId:SD}),wD=R({id:1612,name:`OpenLedger`,nativeCurrency:{name:`Open`,symbol:`OPEN`,decimals:18},rpcUrls:{default:{http:[`https://rpc.openledger.xyz`]}},blockExplorers:{default:{name:`OpenLedger Explorer`,url:`https://scan.openledger.xyz`}},testnet:!1});var TD=1;const ED=R({...z,id:10,name:`OP Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.optimism.io`]}},blockExplorers:{default:{name:`Optimism Explorer`,url:`https://optimistic.etherscan.io`,apiUrl:`https://api-optimistic.etherscan.io/api`}},contracts:{...z.contracts,disputeGameFactory:{[TD]:{address:`0xe5965Ab5962eDc7477C8520243A95517CD252fA9`}},l2OutputOracle:{[TD]:{address:`0xdfe97868233d1aa22e815a266982f2cf17685a27`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4286263},portal:{[TD]:{address:`0xbEb5Fc579115071764c7423A4f12eDde41f106Ed`}},l1StandardBridge:{[TD]:{address:`0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1`}}},sourceId:TD});var DD=5;const OD=R({...z,id:420,name:`Optimism Goerli`,nativeCurrency:{name:`Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://goerli.optimism.io`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli-optimism.etherscan.io`,apiUrl:`https://goerli-optimism.etherscan.io/api`}},contracts:{...z.contracts,l2OutputOracle:{[DD]:{address:`0xE6Dfba0953616Bacab0c9A8ecb3a9BBa77FC15c0`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:49461},portal:{[DD]:{address:`0x5b47E1A08Ea6d985D6649300584e6722Ec4B1383`}},l1StandardBridge:{[DD]:{address:`0x636Af16bf2f682dD3109e60102b8E1A089FedAa8`}}},testnet:!0,sourceId:DD});var kD=11155111;const AD=R({...z,id:11155420,name:`OP Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.optimism.io`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://optimism-sepolia.blockscout.com`,apiUrl:`https://optimism-sepolia.blockscout.com/api`}},contracts:{...z.contracts,disputeGameFactory:{[kD]:{address:`0x05F9613aDB30026FFd634f38e5C4dFd30a197Fa1`}},l2OutputOracle:{[kD]:{address:`0x90E9c4f8a994a250F6aEfd61CAFb4F2e895D458F`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1620204},portal:{[kD]:{address:`0x16Fc5058F25648194471939df75CF27A2fdC48BC`}},l1StandardBridge:{[kD]:{address:`0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1`}}},testnet:!0,sourceId:kD}),jD=R({id:62050,name:`Optopia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.optopia.ai`]}},blockExplorers:{default:{name:`Optopia Explorer`,url:`https://scan.optopia.ai`}},testnet:!1}),MD=R({id:62049,name:`Optopia Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.optopia.ai`]}},blockExplorers:{default:{name:`Optopia Explorer`,url:`https://scan-testnet.optopia.ai`}},testnet:!0}),ND=R({id:291,name:`Orderly`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.orderly.network`]}},blockExplorers:{default:{name:`Orderly Explorer`,url:`https://explorer.orderly.network`}},testnet:!1}),PD=R({id:4460,name:`Orderly Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://l2-orderly-l2-4460-sepolia-8tc3sd7dvy.t.conduit.xyz`]}},blockExplorers:{default:{name:`Orderly Explorer`,url:`https://explorerl2new-orderly-l2-4460-sepolia-8tc3sd7dvy.t.conduit.xyz`}},testnet:!0}),FD=R({id:41144114,name:`Otim Devnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`http://devnet.otim.xyz`]}},contracts:{batchInvoker:{address:`0x5FbDB2315678afecb367f032d93F642f64180aa3`}}}),ID=R({id:11297108109,name:`Palm`,nativeCurrency:{decimals:18,name:`PALM`,symbol:`PALM`},rpcUrls:{default:{http:[`https://palm-mainnet.public.blastapi.io`],webSocket:[`wss://palm-mainnet.public.blastapi.io`]}},blockExplorers:{default:{name:`Chainlens`,url:`https://palm.chainlens.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:15429248}}}),LD=R({id:11297108099,name:`Palm Testnet`,nativeCurrency:{decimals:18,name:`PALM`,symbol:`PALM`},rpcUrls:{default:{http:[`https://palm-mainnet.public.blastapi.io`],webSocket:[`wss://palm-mainnet.public.blastapi.io`]}},blockExplorers:{default:{name:`Chainlens`,url:`https://palm.chainlens.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:15429248}},testnet:!0}),RD=R({id:3338,name:`Peaq`,nativeCurrency:{decimals:18,name:`peaq`,symbol:`PEAQ`},rpcUrls:{default:{http:[`https://quicknode1.peaq.xyz`,`https://quicknode2.peaq.xyz`,`https://quicknode3.peaq.xyz`],webSocket:[`wss://quicknode1.peaq.xyz`,`wss://quicknode2.peaq.xyz`,`wss://quicknode3.peaq.xyz`]}},blockExplorers:{default:{name:`Subscan`,url:`https://peaq.subscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3566354}}});var zD=1;const BD=R({id:424,network:`pgn`,name:`PGN`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.publicgoods.network`]}},blockExplorers:{default:{name:`PGN Explorer`,url:`https://explorer.publicgoods.network`,apiUrl:`https://explorer.publicgoods.network/api`}},contracts:{l2OutputOracle:{[zD]:{address:`0x9E6204F750cD866b299594e2aC9eA824E2e5f95c`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3380209},portal:{[zD]:{address:`0xb26Fd985c5959bBB382BAFdD0b879E149e48116c`}},l1StandardBridge:{[zD]:{address:`0xD0204B9527C1bA7bD765Fa5CCD9355d38338272b`}}},formatters:vy,sourceId:zD});var VD=11155111;const HD=R({id:58008,network:`pgn-testnet`,name:`PGN `,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.publicgoods.network`]}},blockExplorers:{default:{name:`PGN Testnet Explorer`,url:`https://explorer.sepolia.publicgoods.network`,apiUrl:`https://explorer.sepolia.publicgoods.network/api`}},contracts:{l2OutputOracle:{[VD]:{address:`0xD5bAc3152ffC25318F848B3DD5dA6C85171BaEEe`}},portal:{[VD]:{address:`0xF04BdD5353Bb0EFF6CA60CfcC78594278eBfE179`}},l1StandardBridge:{[VD]:{address:`0xFaE6abCAF30D23e233AC7faF747F2fC3a5a6Bfa3`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3754925}},formatters:vy,sourceId:VD,testnet:!0}),UD=R({id:13381,name:`Phoenix Blockchain`,nativeCurrency:{name:`Phoenix`,symbol:`PHX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.phoenixplorer.com`]}},blockExplorers:{default:{name:`Phoenixplorer`,url:`https://phoenixplorer.com`,apiUrl:`https://phoenixplorer.com/api`}},contracts:{multicall3:{address:`0x498cF757a575cFF2c2Ed9f532f56Efa797f86442`,blockCreated:5620192}}}),WD=R({id:7070,name:`Planq Mainnet`,nativeCurrency:{decimals:18,name:`PLQ`,symbol:`PLQ`},rpcUrls:{default:{http:[`https://planq-rpc.nodies.app`,`https://evm-rpc.planq.network`,`https://jsonrpc.planq.nodestake.top`]}},blockExplorers:{default:{name:`Planq Explorer`,url:`https://evm.planq.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:8470015}},testnet:!1}),GD=R({id:9745,name:`Plasma`,blockTime:1e3,nativeCurrency:{name:`Plasma`,symbol:`XPL`,decimals:18},rpcUrls:{default:{http:[`https://rpc.plasma.to`]}},blockExplorers:{default:{name:`PlasmaScan`,url:`https://plasmascan.to`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),KD=R({id:9747,name:`Plasma Devnet`,nativeCurrency:{name:`Devnet Plasma`,symbol:`XPL`,decimals:18},rpcUrls:{default:{http:[`https://devnet-rpc.plasma.to`]}},testnet:!0,contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),qD=R({id:9746,name:`Plasma Testnet`,nativeCurrency:{name:`Testnet Plasma`,symbol:`XPL`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.plasma.to`]}},blockExplorers:{default:{name:`RouteScan`,url:`https://testnet.plasmascan.to`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},testnet:!0}),JD=R({...ay,id:1612127,name:`PlayFi Albireo Testnet`,network:`albireo`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://albireo-rpc.playfi.ai`],webSocket:[`wss://albireo-rpc-ws.playfi.ai/ws`]}},blockExplorers:{default:{name:`PlayFi Albireo Explorer`,url:`https://albireo-explorer.playfi.ai`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`}},testnet:!0}),YD=R({id:242,name:`Plinga`,nativeCurrency:{name:`Plinga`,symbol:`PLINGA`,decimals:18},rpcUrls:{default:{http:[`https://rpcurl.mainnet.plgchain.com`]}},blockExplorers:{default:{name:`Plgscan`,url:`https://www.plgscan.com`}},contracts:{multicall3:{address:`0x0989576160f2e7092908BB9479631b901060b6e4`,blockCreated:204489}}}),XD=R({id:98865,name:`Plume (Legacy)`,nativeCurrency:{name:`Plume Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.plumenetwork.xyz`],webSocket:[`wss://rpc.plumenetwork.xyz`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.plumenetwork.xyz`,apiUrl:`https://explorer.plumenetwork.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:48577}},sourceId:1}),ZD=R({id:98864,name:`Plume Devnet (Legacy)`,nativeCurrency:{name:`Plume Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://test-rpc.plumenetwork.xyz`],webSocket:[`wss://test-rpc.plumenetwork.xyz`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://test-explorer.plumenetwork.xyz`,apiUrl:`https://test-explorer.plumenetwork.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:481948}},testnet:!0,sourceId:11155111}),QD=R({id:98866,name:`Plume`,nativeCurrency:{name:`Plume`,symbol:`PLUME`,decimals:18},rpcUrls:{default:{http:[`https://rpc.plume.org`],webSocket:[`wss://rpc.plume.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.plume.org`,apiUrl:`https://explorer.plume.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:39679}},sourceId:1}),$D=R({id:98867,name:`Plume Testnet`,nativeCurrency:{name:`Plume`,symbol:`PLUME`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.plume.org`],webSocket:[`wss://testnet-rpc.plume.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer.plume.org`,apiUrl:`https://testnet-explorer.plume.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:199712}},testnet:!0,sourceId:11155111}),eO=R({id:161221135,name:`Plume Testnet (Legacy)`,nativeCurrency:{name:`Plume Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.plumenetwork.xyz/http`],webSocket:[`wss://testnet-rpc.plumenetwork.xyz/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer.plumenetwork.xyz`,apiUrl:`https://testnet-explorer.plumenetwork.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:6022332}},testnet:!0,sourceId:11155111}),tO=R({id:631571,name:`Polter Testnet`,nativeCurrency:{decimals:18,name:`Polter GHST`,symbol:`GHST`},rpcUrls:{default:{http:[`https://geist-polter.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://polter-testnet.explorer.alchemy.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:11245}},testnet:!0}),nO=R({id:137,name:`Polygon`,blockTime:2e3,nativeCurrency:{name:`POL`,symbol:`POL`,decimals:18},rpcUrls:{default:{http:[`https://polygon-rpc.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://polygonscan.com`,apiUrl:`https://api.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:25770160}}}),rO=R({id:80002,name:`Polygon Amoy`,nativeCurrency:{name:`POL`,symbol:`POL`,decimals:18},rpcUrls:{default:{http:[`https://rpc-amoy.polygon.technology`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://amoy.polygonscan.com`,apiUrl:`https://api-amoy.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3127388}},testnet:!0}),iO=R({id:80001,name:`Polygon Mumbai`,nativeCurrency:{name:`MATIC`,symbol:`MATIC`,decimals:18},rpcUrls:{default:{http:[`https://80001.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://mumbai.polygonscan.com`,apiUrl:`https://api-testnet.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:25770160}},testnet:!0}),aO=R({id:1101,name:`Polygon zkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://zkevm-rpc.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://zkevm.polygonscan.com`,apiUrl:`https://api-zkevm.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:57746}}}),oO=R({id:2442,name:`Polygon zkEVM Cardona`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.cardona.zkevm-rpc.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://cardona-zkevm.polygonscan.com`,apiUrl:`https://cardona-zkevm.polygonscan.com/api`}},testnet:!0,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:114091}}}),sO=R({id:1442,name:`Polygon zkEVM Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.public.zkevm-test.net`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://testnet-zkevm.polygonscan.com`,apiUrl:`https://testnet-zkevm.polygonscan.com/api`}},testnet:!0,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:525686}}}),cO=R({id:8008,name:`Polynomial`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.polynomial.fi`]}},blockExplorers:{default:{name:`Polynomial Scan`,url:`https://polynomialscan.io`}},testnet:!1,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}}}),lO=R({id:80008,name:`Polynomia Sepolia`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.sepolia.polynomial.fi`]}},blockExplorers:{default:{name:`Polynomial Scan`,url:`https://sepolia.polynomialscan.io`}},testnet:!0,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}}}),uO=R({id:23023,name:`PremiumBlock Testnet`,nativeCurrency:{name:`Premium Block`,symbol:`PBLK`,decimals:18},rpcUrls:{default:{http:[`https://rpc.premiumblock.org`]}},blockExplorers:{default:{name:`PremiumBlocks Explorer`,url:`https://scan.premiumblock.org`}},testnet:!0}),dO=R({id:369,name:`PulseChain`,nativeCurrency:{name:`Pulse`,symbol:`PLS`,decimals:18},testnet:!1,blockTime:1e4,rpcUrls:{default:{http:[`https://rpc.pulsechain.com`],webSocket:[`wss://ws.pulsechain.com`]}},blockExplorers:{default:{name:`PulseScan`,url:`https://ipfs.scan.pulsechain.com`,apiUrl:`https://api.scan.pulsechain.com/api`}},contracts:{ensRegistry:{address:`0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e`},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14353601}}}),fO=R({id:943,name:`PulseChain V4`,testnet:!0,nativeCurrency:{name:`V4 Pulse`,symbol:`v4PLS`,decimals:18},blockTime:1e4,rpcUrls:{default:{http:[`https://rpc.v4.testnet.pulsechain.com`],webSocket:[`wss://ws.v4.testnet.pulsechain.com`]}},blockExplorers:{default:{name:`PulseScan`,url:`https://scan.v4.testnet.pulsechain.com`,apiUrl:`https://scan.v4.testnet.pulsechain.com/api`}},contracts:{ensRegistry:{address:`0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e`},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14353601}}}),pO=R({id:490092,name:`Pumpfi Testnet`,nativeCurrency:{decimals:18,name:`PMPT`,symbol:`PMPT`},rpcUrls:{default:{http:[`https://rpc1testnet.pumpfi.me`]}},blockExplorers:{default:{name:`Pumpfi Testnet Scan`,url:`https://testnetscan.pumpfi.me`}},testnet:!0});var mO=11155111;const hO=R({...z,name:`Pyrope Testnet`,testnet:!0,id:695569,sourceId:mO,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.pyropechain.com`],webSocket:[`wss://rpc.pyropechain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://pyrope.blockscout.com`}},contracts:{...z.contracts,l1StandardBridge:{[mO]:{address:`0xC24932c31D9621aE9e792576152B7ef010cFC2F8`}}}}),gO=R({id:766,name:`QL1`,nativeCurrency:{decimals:18,name:`QOM`,symbol:`QOM`},rpcUrls:{default:{http:[`https://rpc.qom.one`]}},blockExplorers:{default:{name:`Ql1 Explorer`,url:`https://scan.qom.one`}},contracts:{multicall3:{address:`0x7A52370716ea730585884F5BDB0f6E60C39b8C64`}},testnet:!1}),_O=R({id:35441,name:`Q Mainnet`,nativeCurrency:{decimals:18,name:`Q`,symbol:`Q`},rpcUrls:{default:{http:[`https://rpc.q.org`]}},blockExplorers:{default:{name:`Q Mainnet Explorer`,url:`https://explorer.q.org`,apiUrl:`https://explorer.q.org/api`}}}),vO=R({id:35443,name:`Q Testnet`,nativeCurrency:{decimals:18,name:`Q`,symbol:`Q`},rpcUrls:{default:{http:[`https://rpc.qtestnet.org`]}},blockExplorers:{default:{name:`Q Testnet Explorer`,url:`https://explorer.qtestnet.org`,apiUrl:`https://explorer.qtestnet.org/api`}},testnet:!0}),yO=R({id:111188,name:`re.al`,nativeCurrency:{name:`reETH`,decimals:18,symbol:`reETH`},rpcUrls:{default:{http:[`https://rpc.realforreal.gelato.digital`]}},blockExplorers:{default:{name:`re.al Explorer`,url:`https://explorer.re.al`,apiUrl:`https://explorer.re.al/api/v2`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:695}}}),bO=R({id:151,name:`Redbelly Network Mainnet`,nativeCurrency:{name:`Redbelly Native Coin`,symbol:`RBNT`,decimals:18},rpcUrls:{default:{http:[`https://governors.mainnet.redbelly.network`]}},blockExplorers:{default:{name:`Routescan`,url:`https://redbelly.routescan.io`,apiUrl:`https://api.routescan.io/v2/network/mainnet/evm/151/etherscan/api`}},testnet:!1}),xO=R({id:153,name:`Redbelly Network Testnet`,nativeCurrency:{name:`Redbelly Native Coin`,symbol:`RBNT`,decimals:18},rpcUrls:{default:{http:[`https://governors.testnet.redbelly.network`]}},blockExplorers:{default:{name:`Routescan`,url:`https://redbelly.testnet.routescan.io`,apiUrl:`https://api.routescan.io/v2/network/testnet/evm/153_2/etherscan/api`}},testnet:!0}),SO=R({id:50342,name:`Reddio`,nativeCurrency:{name:`Reddio`,symbol:`RED`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.reddio.com/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://reddio.cloud.blockscout.com`,apiUrl:`https://reddio.cloud.blockscout.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:848849}},testnet:!1}),CO=R({id:50341,name:`Reddio Sepolia`,nativeCurrency:{name:`Reddio`,symbol:`RED`,decimals:18},rpcUrls:{default:{http:[`https://reddio-dev.reddio.com`]}},blockExplorers:{default:{name:`Reddioscan`,url:`https://reddio-devnet.l2scan.co`,apiUrl:`https://reddio-devnet.l2scan.co/api`}},testnet:!0});var wO=1;const TO=R({...z,name:`Redstone`,id:690,sourceId:wO,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.redstonechain.com`],webSocket:[`wss://rpc.redstonechain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.redstone.xyz`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[wO]:{address:`0xC7bCb0e8839a28A1cFadd1CF716de9016CdA51ae`,blockCreated:19578329}},l2OutputOracle:{[wO]:{address:`0xa426A052f657AEEefc298b3B5c35a470e4739d69`,blockCreated:19578337}},l1StandardBridge:{[wO]:{address:`0xc473ca7E02af24c129c2eEf51F2aDf0411c1Df69`,blockCreated:19578331}}}}),EO=R({id:47805,name:`REI Mainnet`,nativeCurrency:{decimals:18,name:`REI`,symbol:`REI`},rpcUrls:{default:{http:[`https://rpc.rei.network`],webSocket:[`wss://rpc.rei.network`]}},blockExplorers:{default:{name:`REI Scan`,url:`https://scan.rei.network`}},testnet:!1}),DO=R({id:1729,name:`Reya Network`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.reya.network`],webSocket:[`wss://ws.reya.network`]}},blockExplorers:{default:{name:`Reya Network Explorer`,url:`https://explorer.reya.network`}},testnet:!1}),OO=R({id:11155931,name:`RISE Testnet`,nativeCurrency:{name:`RISE Testnet Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.riselabs.xyz`],webSocket:[`wss://testnet.riselabs.xyz/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.testnet.riselabs.xyz/`,apiUrl:`https://explorer.testnet.riselabs.xyz/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}},testnet:!0}),kO=R({id:753,name:`Rivalz`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rivalz.calderachain.xyz/http`]}},blockExplorers:{default:{name:`Rivalz Caldera Explorer`,url:`https://rivalz.calderaexplorer.xyz`}},testnet:!1}),AO=R({id:570,name:`Rollux Mainnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc.rollux.com`],webSocket:[`wss://rpc.rollux.com/wss`]}},blockExplorers:{default:{name:`RolluxExplorer`,url:`https://explorer.rollux.com`,apiUrl:`https://explorer.rollux.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:119222}}}),jO=R({id:57e3,name:`Rollux Testnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc-tanenbaum.rollux.com/`],webSocket:[`wss://rpc-tanenbaum.rollux.com/wss`]}},blockExplorers:{default:{name:`RolluxTestnetExplorer`,url:`https://rollux.tanenbaum.io`,apiUrl:`https://rollux.tanenbaum.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1813675}}}),MO=R({id:2020,name:`Ronin`,nativeCurrency:{name:`RON`,symbol:`RON`,decimals:18},rpcUrls:{default:{http:[`https://api.roninchain.com/rpc`]}},blockExplorers:{default:{name:`Ronin Explorer`,url:`https://app.roninchain.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:26023535}}}),NO=R({id:7668,name:`The Root Network`,nativeCurrency:{decimals:18,name:`XRP`,symbol:`XRP`},rpcUrls:{default:{http:[`https://root.rootnet.live/archive`],webSocket:[`wss://root.rootnet.live/archive/ws`]}},blockExplorers:{default:{name:`Rootscan`,url:`https://rootscan.io`}},contracts:{multicall3:{address:`0xc9C2E2429AeC354916c476B30d729deDdC94988d`,blockCreated:9218338}}}),PO=R({id:7672,name:`The Root Network - Porcini`,nativeCurrency:{decimals:18,name:`XRP`,symbol:`XRP`},rpcUrls:{default:{http:[`https://porcini.rootnet.app/archive`],webSocket:[`wss://porcini.rootnet.app/archive/ws`]}},blockExplorers:{default:{name:`Rootscan`,url:`https://porcini.rootscan.io`}},contracts:{multicall3:{address:`0xc9C2E2429AeC354916c476B30d729deDdC94988d`,blockCreated:10555692}},testnet:!0}),FO=R({id:30,name:`Rootstock Mainnet`,network:`rootstock`,nativeCurrency:{decimals:18,name:`Rootstock Bitcoin`,symbol:`RBTC`},rpcUrls:{default:{http:[`https://public-node.rsk.co`]}},blockExplorers:{default:{name:`RSK Explorer`,url:`https://explorer.rsk.co`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4249540}}}),IO=R({id:31,name:`Rootstock Testnet`,network:`rootstock`,nativeCurrency:{decimals:18,name:`Rootstock Bitcoin`,symbol:`tRBTC`},rpcUrls:{default:{http:[`https://public-node.testnet.rsk.co`]}},blockExplorers:{default:{name:`RSK Explorer`,url:`https://explorer.testnet.rootstock.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2771150}},testnet:!0});var LO=1;const RO=R({...z,id:12553,name:`RSS3 VSL Mainnet`,nativeCurrency:{name:`RSS3`,symbol:`RSS3`,decimals:18},rpcUrls:{default:{http:[`https://rpc.rss3.io`]}},blockExplorers:{default:{name:`RSS3 VSL Mainnet Scan`,url:`https://scan.rss3.io`,apiUrl:`https://scan.rss3.io/api`}},contracts:{...z.contracts,l2OutputOracle:{[LO]:{address:`0xE6f24d2C32B3109B18ed33cF08eFb490b1e09C10`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14193},portal:{[LO]:{address:`0x6A12432491bbbE8d3babf75F759766774C778Db4`,blockCreated:19387057}},l1StandardBridge:{[LO]:{address:`0x4cbab69108Aa72151EDa5A3c164eA86845f18438`}}},sourceId:LO});var zO=11155111;const BO=R({...z,id:2331,name:`RSS3 VSL Sepolia Testnet`,nativeCurrency:{name:`RSS3`,symbol:`RSS3`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.rss3.io`]}},blockExplorers:{default:{name:`RSS3 VSL Sepolia Testnet Scan`,url:`https://scan.testnet.rss3.io`,apiUrl:`https://scan.testnet.rss3.io/api`}},contracts:{...z.contracts,l2OutputOracle:{[zO]:{address:`0xDb5c46C3Eaa6Ed6aE8b2379785DF7dd029C0dC81`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:55697},portal:{[zO]:{address:`0xcBD77E8E1E7F06B25baDe67142cdE82652Da7b57`,blockCreated:5345035}},l1StandardBridge:{[zO]:{address:`0xdDD29bb63B0839FB1cE0eE439Ff027738595D07B`}}},testnet:!0,sourceId:zO}),VO=R({id:7225878,name:`Saakuru Mainnet`,nativeCurrency:{name:`OAS`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.saakuru.network`]}},blockExplorers:{default:{name:`Saakuru Explorer`,url:`https://explorer.saakuru.network`}},testnet:!1}),HO=R({id:5464,name:`Saga`,network:`saga`,nativeCurrency:{decimals:18,name:`gas`,symbol:`GAS`},rpcUrls:{default:{http:[`https://sagaevm.jsonrpc.sagarpc.io`]}},blockExplorers:{default:{name:`Saga Explorer`,url:`https://sagaevm.sagaexplorer.io`}},contracts:{multicall3:{address:`0x864DDc9B50B9A0dF676d826c9B9EDe9F8913a160`,blockCreated:467530}}}),UO=R({id:2021,name:`Saigon Testnet`,nativeCurrency:{name:`RON`,symbol:`RON`,decimals:18},rpcUrls:{default:{http:[`https://saigon-testnet.roninchain.com/rpc`]}},blockExplorers:{default:{name:`Saigon Explorer`,url:`https://saigon-app.roninchain.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:18736871}},testnet:!0}),WO=R({id:1996,name:`Sanko`,nativeCurrency:{name:`DMT`,symbol:`DMT`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.sanko.xyz`]}},blockExplorers:{default:{name:`Sanko Explorer`,url:`https://explorer.sanko.xyz`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:37}},testnet:!1}),GO=R({id:23294,name:`Oasis Sapphire`,network:`sapphire`,nativeCurrency:{name:`Sapphire Rose`,symbol:`ROSE`,decimals:18},rpcUrls:{default:{http:[`https://sapphire.oasis.io`],webSocket:[`wss://sapphire.oasis.io/ws`]}},blockExplorers:{default:{name:`Oasis Explorer`,url:`https://explorer.oasis.io/mainnet/sapphire`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:734531}}}),KO=R({id:23295,name:`Oasis Sapphire Testnet`,network:`sapphire-testnet`,nativeCurrency:{name:`Sapphire Test Rose`,symbol:`TEST`,decimals:18},rpcUrls:{default:{http:[`https://testnet.sapphire.oasis.dev`],webSocket:[`wss://testnet.sapphire.oasis.dev/ws`]}},blockExplorers:{default:{name:`Oasis Explorer`,url:`https://explorer.oasis.io/testnet/sapphire`}},testnet:!0}),qO=R({id:3109,name:`SatoshiVM Alpha Mainnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://alpha-rpc-node-http.svmscan.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://svmscan.io`,apiUrl:`https://svmscan.io/api`}}}),JO=R({id:3110,name:`SatoshiVM Testnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://test-rpc-node-http.svmscan.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://testnet.svmscan.io`,apiUrl:`https://testnet.svmscan.io/api`}},testnet:!0}),YO=R({id:534352,name:`Scroll`,blockTime:3e3,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.scroll.io`],webSocket:[`wss://wss-rpc.scroll.io/ws`]}},blockExplorers:{default:{name:`Scrollscan`,url:`https://scrollscan.com`,apiUrl:`https://api.scrollscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14}},testnet:!1}),XO=R({id:534351,name:`Scroll Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rpc.scroll.io`]}},blockExplorers:{default:{name:`Scrollscan`,url:`https://sepolia.scrollscan.com`,apiUrl:`https://api-sepolia.scrollscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:9473}},testnet:!0}),ZO=R({id:1329,name:`Sei Network`,nativeCurrency:{name:`Sei`,symbol:`SEI`,decimals:18},rpcUrls:{default:{http:[`https://evm-rpc.sei-apis.com/`],webSocket:[`wss://evm-ws.sei-apis.com/`]}},blockExplorers:{default:{name:`Seitrace`,url:`https://seitrace.com`,apiUrl:`https://seitrace.com/pacific-1/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}}}),QO=R({id:713715,name:`Sei Devnet`,nativeCurrency:{name:`Sei`,symbol:`SEI`,decimals:18},rpcUrls:{default:{http:[`https://evm-rpc-arctic-1.sei-apis.com`]}},blockExplorers:{default:{name:`Seitrace`,url:`https://seitrace.com`}},testnet:!0}),$O=R({id:5124,name:`Seismic Devnet`,nativeCurrency:{name:`Seismic Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://node-2.seismicdev.net/rpc`]}},blockExplorers:{default:{name:`Seismic Devnet Explorer`,url:`https://explorer-2.seismicdev.net`}},testnet:!0}),ek=R({id:1328,name:`Sei Testnet`,nativeCurrency:{name:`Sei`,symbol:`SEI`,decimals:18},rpcUrls:{default:{http:[`https://evm-rpc-testnet.sei-apis.com`],webSocket:[`wss://evm-ws-testnet.sei-apis.com`]}},blockExplorers:{default:{name:`Seitrace`,url:`https://seitrace.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:98697651}},testnet:!0}),tk=R({id:11155111,name:`Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.drpc.org`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia.etherscan.io`,apiUrl:`https://api-sepolia.etherscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:751532},ensUniversalResolver:{address:`0xeeeeeeee14d718c2b47d9923deab1335e144eeee`,blockCreated:8928790}},testnet:!0});var nk=1;const rk=R({...z,id:360,name:`Shape`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.shape.network`]}},blockExplorers:{default:{name:`shapescan`,url:`https://shapescan.xyz`,apiUrl:`https://shapescan.xyz/api`}},contracts:{...z.contracts,l2OutputOracle:{[nk]:{address:`0x6Ef8c69CfE4635d866e3E02732068022c06e724D`,blockCreated:20369940}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1},portal:{[nk]:{address:`0xEB06fFa16011B5628BaB98E29776361c83741dd3`,blockCreated:20369933}},l1StandardBridge:{[nk]:{address:`0x62Edd5f4930Ea92dCa3fB81689bDD9b9d076b57B`,blockCreated:20369935}}},sourceId:nk});var ik=11155111;const ak=R({...z,id:11011,name:`Shape Sepolia Testnet`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.shape.network`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer-sepolia.shape.network/`,apiUrl:`https://explorer-sepolia.shape.network/api/v2`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1}},testnet:!0,sourceId:ik}),ok=R({id:8118,name:`Shardeum`,nativeCurrency:{name:`Shardeum`,symbol:`SHM`,decimals:18},rpcUrls:{default:{http:[`https://api.shardeum.org`]}},blockExplorers:{default:{name:`Shardeum Explorer`,url:`https://explorer.shardeum.org`}},testnet:!1}),sk=R({id:8082,name:`Shardeum Sphinx`,nativeCurrency:{name:`SHARDEUM`,symbol:`SHM`,decimals:18},rpcUrls:{default:{http:[`https://sphinx.shardeum.org`]}},blockExplorers:{default:{name:`Shardeum Explorer`,url:`https://explorer-sphinx.shardeum.org`}},testnet:!0}),ck=R({id:109,name:`Shibarium`,network:`shibarium`,nativeCurrency:{name:`Bone`,symbol:`BONE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.shibrpc.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://shibariumscan.io`}},contracts:{multicall3:{address:`0x864Bf681ADD6052395188A89101A1B37d3B4C961`,blockCreated:265900}}}),lk=R({id:157,name:`Puppynet Shibarium`,nativeCurrency:{decimals:18,name:`Bone`,symbol:`BONE`},rpcUrls:{default:{http:[`https://puppynet.shibrpc.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://puppyscan.shib.io`,apiUrl:`https://puppyscan.shib.io/api`}},contracts:{multicall3:{address:`0xA4029b74FBA366c926eDFA7Dd10B21C621170a4c`,blockCreated:3035769}},testnet:!0}),uk=R({id:336,name:`Shiden`,nativeCurrency:{decimals:18,name:`SDN`,symbol:`SDN`},rpcUrls:{default:{http:[`https://shiden.public.blastapi.io`],webSocket:[`wss://shiden-rpc.dwellir.com`]}},blockExplorers:{default:{name:`Shiden Scan`,url:`https://shiden.subscan.io`}},testnet:!1}),dk=R({id:148,name:`Shimmer`,network:`shimmer`,nativeCurrency:{decimals:18,name:`Shimmer`,symbol:`SMR`},rpcUrls:{default:{http:[`https://json-rpc.evm.shimmer.network`]}},blockExplorers:{default:{name:`Shimmer Network Explorer`,url:`https://explorer.evm.shimmer.network`,apiUrl:`https://explorer.evm.shimmer.network/api`}}}),fk=R({id:1073,name:`Shimmer Testnet`,network:`shimmer-testnet`,nativeCurrency:{decimals:18,name:`Shimmer`,symbol:`SMR`},rpcUrls:{default:{http:[`https://json-rpc.evm.testnet.shimmer.network`]}},blockExplorers:{default:{name:`Shimmer Network Explorer`,url:`https://explorer.evm.testnet.shimmer.network`,apiUrl:`https://explorer.evm.testnet.shimmer.network/api`}},testnet:!0}),pk=R({id:97453,name:`Sidra Chain`,nativeCurrency:{decimals:18,name:`Sidra Digital Asset`,symbol:`SDA`},rpcUrls:{default:{http:[`https://node.sidrachain.com`]}},blockExplorers:{default:{name:`Sidra Chain Explorer`,url:`https://ledger.sidrachain.com`}}}),mk=R({id:2355,name:`Silicon zkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.silicon.network`,`https://silicon-mainnet.nodeinfra.com`]}},blockExplorers:{default:{name:`SiliconScope`,url:`https://scope.silicon.network`}}}),hk=R({id:1722641160,name:`Silicon Sepolia zkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-sepolia.silicon.network`,`https://silicon-testnet.nodeinfra.com`]}},blockExplorers:{default:{name:`SiliconSepoliaScope`,url:`https://scope-sepolia.silicon.network`}},testnet:!0}),gk=R({id:98,name:`Six Protocol`,nativeCurrency:{decimals:18,name:`SIX`,symbol:`SIX`},rpcUrls:{default:{http:[`https://sixnet-rpc-evm.sixprotocol.net`]}},blockExplorers:{default:{name:`Six Protocol Scan`,url:`https://sixscan.io/sixnet`}},testnet:!1}),_k=R({id:391845894,name:`SKALE | Block Brawlers`,nativeCurrency:{name:`BRAWL`,symbol:`BRAWL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/frayed-decent-antares`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/frayed-decent-antares`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://frayed-decent-antares.explorer.mainnet.skalenodes.com`}},contracts:{}}),vk=R({id:1564830818,name:`SKALE Calypso Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/honorable-steel-rasalhague`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/honorable-steel-rasalhague`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://honorable-steel-rasalhague.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3107626}}}),yk=R({id:974399131,name:`SKALE Calypso Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/giant-half-dual-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/giant-half-dual-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://giant-half-dual-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:103220}},testnet:!0}),bk=R({id:1026062157,name:`SKALE | CryptoBlades`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/affectionate-immediate-pollux`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/affectionate-immediate-pollux`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://affectionate-immediate-pollux.explorer.mainnet.skalenodes.com`}},contracts:{}}),xk=R({id:1032942172,name:`SKALE | Crypto Colosseum`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/haunting-devoted-deneb`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/haunting-devoted-deneb`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://haunting-devoted-deneb.explorer.mainnet.skalenodes.com`}},contracts:{}}),Sk=R({id:2046399126,name:`SKALE Europa Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/elated-tan-skat`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/elated-tan-skat`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://elated-tan-skat.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3113495}}}),Ck=R({id:1444673419,name:`SKALE Europa Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/juicy-low-small-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/juicy-low-small-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://juicy-low-small-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:110858}},testnet:!0}),wk=R({id:2139927552,name:`Exorde Network`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/light-vast-diphda`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/light-vast-diphda`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://light-vast-diphda.explorer.mainnet.skalenodes.com`}},contracts:{}}),Tk=R({id:1273227453,name:`SKALE | Human Protocol`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/wan-red-ain`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/wan-red-ain`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://wan-red-ain.explorer.mainnet.skalenodes.com`}},contracts:{}}),Ek=R({id:1482601649,name:`SKALE Nebula Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/green-giddy-denebola`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/green-giddy-denebola`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://green-giddy-denebola.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2372986}}}),Dk=R({id:37084624,name:`SKALE Nebula Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/lanky-ill-funny-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/lanky-ill-funny-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://lanky-ill-funny-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:105141}},testnet:!0}),Ok=R({id:278611351,name:`SKALE | Razor Network`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/turbulent-unique-scheat`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/turbulent-unique-scheat`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://turbulent-unique-scheat.explorer.mainnet.skalenodes.com`}},contracts:{}}),kk=R({id:1350216234,name:`SKALE Titan Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/parallel-stormy-spica`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/parallel-stormy-spica`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://parallel-stormy-spica.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2076458}}}),Ak=R({id:1020352220,name:`SKALE Titan Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/aware-fake-trim-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/aware-fake-trim-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://aware-fake-trim-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:104072}},testnet:!0}),jk=R({id:984123,name:`Forma Sketchpad`,network:`sketchpad`,nativeCurrency:{symbol:`TIA`,name:`TIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.sketchpad-1.forma.art`],webSocket:[`wss://ws.sketchpad-1.forma.art`]}},blockExplorers:{default:{name:`Sketchpad Explorer`,url:`https://explorer.sketchpad-1.forma.art`}},testnet:!0});var Mk=1;const Nk=R({...z,id:2192,network:`snaxchain-mainnet`,name:`SnaxChain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.snaxchain.io`]}},blockExplorers:{default:{name:`Snax Explorer`,url:`https://explorer.snaxchain.io`,apiUrl:`https://explorer.snaxchain.io/api`}},contracts:{...z.contracts,disputeGameFactory:{[Mk]:{address:`0x472562Fcf26D6b2793f8E0b0fB660ba0E5e08A46`}},l2OutputOracle:{[Mk]:{address:`0x2172e492Fc807F5d5645D0E3543f139ECF539294`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[Mk]:{address:`0x79f446D024d74D0Bb6E699C131c703463c5D65E9`}},l1StandardBridge:{[Mk]:{address:`0x6534Bdb6b5c060d3e6aa833433333135eFE8E0aA`}}},sourceId:Mk});var Pk=11155111;const Fk=R({...z,id:13001,network:`snaxchain-testnet`,name:`SnaxChain Testnet`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.snaxchain.io`]}},blockExplorers:{default:{name:`Snax Explorer`,url:`https://testnet-explorer.snaxchain.io`,apiUrl:`https://testnet-explorer.snaxchain.io/api`}},contracts:{...z.contracts,disputeGameFactory:{[Pk]:{address:`0x206a75d89d45F146C54020F132FF93bEDD09f55E`}},l2OutputOracle:{[Pk]:{address:`0x60e3A368a4cdCEf85ffB964e372726F56A46221e`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[Pk]:{address:`0xb5afdd0E8dDF081Ef90e8A3e0c7b5798e66E954E`}},l1StandardBridge:{[Pk]:{address:`0xbd37E1a59D4C00C9A46F75018dffd84061bC5f74`}}},testnet:!0,sourceId:Pk}),Ik=R({id:50312,name:`Somnia Testnet`,nativeCurrency:{name:`STT`,symbol:`STT`,decimals:18},rpcUrls:{default:{http:[`https://dream-rpc.somnia.network`]}},blockExplorers:{default:{name:`Somnia Testnet Explorer`,url:`https://shannon-explorer.somnia.network/`,apiUrl:`https://shannon-explorer.somnia.network/api`}},contracts:{multicall3:{address:`0x841b8199E6d3Db3C6f264f6C2bd8848b3cA64223`,blockCreated:71314235}},testnet:!0});var Lk=1;const Rk=R({...z,id:1868,name:`Soneium Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.soneium.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://soneium.blockscout.com`,apiUrl:`https://soneium.blockscout.com/api`}},contracts:{...z.contracts,disputeGameFactory:{[Lk]:{address:`0x512a3d2c7a43bd9261d2b8e8c9c70d4bd4d503c0`}},l2OutputOracle:{[Lk]:{address:`0x0000000000000000000000000000000000000000`}},portal:{[Lk]:{address:`0x88e529a6ccd302c948689cd5156c83d4614fae92`,blockCreated:7061266}},l1StandardBridge:{[Lk]:{address:`0xeb9bf100225c214efc3e7c651ebbadcf85177607`,blockCreated:7061266}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}},sourceId:Lk});var zk=11155111;const Bk=R({...z,id:1946,name:`Soneium Minato Testnet`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.minato.soneium.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://soneium-minato.blockscout.com`,apiUrl:`https://soneium-minato.blockscout.com/api`}},contracts:{...z.contracts,disputeGameFactory:{[zk]:{address:`0xB3Ad2c38E6e0640d7ce6aA952AB3A60E81bf7a01`}},l2OutputOracle:{[zk]:{address:`0x710e5286C746eC38beeB7538d0146f60D27be343`}},portal:{[zk]:{address:`0x65ea1489741A5D72fFdD8e6485B216bBdcC15Af3`,blockCreated:6466136}},l1StandardBridge:{[zk]:{address:`0x5f5a404A5edabcDD80DB05E8e54A78c9EBF000C2`,blockCreated:6466136}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}},testnet:!0,sourceId:zk}),Vk=R({id:19,name:`Songbird Canary-Network`,nativeCurrency:{decimals:18,name:`Songbird`,symbol:`SGB`},rpcUrls:{default:{http:[`https://songbird-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Songbird Explorer`,url:`https://songbird-explorer.flare.network`,apiUrl:`https://songbird-explorer.flare.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:13382504}}}),Hk=R({id:16,name:`Songbird Testnet Coston`,nativeCurrency:{decimals:18,name:`Coston Flare`,symbol:`CFLR`},rpcUrls:{default:{http:[`https://coston-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Coston Explorer`,url:`https://coston-explorer.flare.network`,apiUrl:`https://coston-explorer.flare.network/api`}},testnet:!0}),Uk=R({id:146,name:`Sonic`,blockTime:630,nativeCurrency:{decimals:18,name:`Sonic`,symbol:`S`},rpcUrls:{default:{http:[`https://rpc.soniclabs.com`]}},blockExplorers:{default:{name:`Sonic Explorer`,url:`https://sonicscan.org`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:60}},testnet:!1}),Wk=R({id:57054,name:`Sonic Blaze Testnet`,nativeCurrency:{decimals:18,name:`Sonic`,symbol:`S`},rpcUrls:{default:{http:[`https://rpc.blaze.soniclabs.com`]}},blockExplorers:{default:{name:`Sonic Blaze Testnet Explorer`,url:`https://testnet.sonicscan.org`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1100}},testnet:!0}),Gk=R({id:64165,name:`Sonic Testnet`,nativeCurrency:{decimals:18,name:`Sonic`,symbol:`S`},rpcUrls:{default:{http:[`https://rpc.testnet.soniclabs.com`]}},blockExplorers:{default:{name:`Sonic Testnet Explorer`,url:`https://testnet.soniclabs.com/`}},testnet:!0}),Kk=R({...ay,id:50104,name:`Sophon`,nativeCurrency:{decimals:18,name:`Sophon`,symbol:`SOPH`},rpcUrls:{default:{http:[`https://rpc.sophon.xyz`],webSocket:[`wss://rpc.sophon.xyz/ws`]}},blockExplorers:{default:{name:`Sophon Block Explorer`,url:`https://explorer.sophon.xyz`}},contracts:{multicall3:{address:`0x5f4867441d2416cA88B1b3fd38f21811680CD2C8`,blockCreated:116}},testnet:!1}),qk=R({...ay,id:531050104,name:`Sophon Testnet`,nativeCurrency:{decimals:18,name:`Sophon`,symbol:`SOPH`},rpcUrls:{default:{http:[`https://rpc.testnet.sophon.xyz`],webSocket:[`wss://rpc.testnet.sophon.xyz/ws`]}},blockExplorers:{default:{name:`Sophon Block Explorer`,url:`https://explorer.testnet.sophon.xyz`}},contracts:{multicall3:{address:`0x83c04d112adedA2C6D9037bb6ecb42E7f0b108Af`,blockCreated:15642}},testnet:!0}),Jk=R({id:100021,name:`Sova`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.sova.io`]}},blockExplorers:{default:{name:`Sova Block Explorer`,url:`hhttps://explorer.sova.io`}},testnet:!1}),Yk=R({id:120893,name:`Sova Network Sepolia`,nativeCurrency:{decimals:18,name:`Sepolia Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.testnet.sova.io`]}},blockExplorers:{default:{name:`Sova Sepolia Explorer`,url:`https://explorer.testnet.sova.io`}},testnet:!0}),Xk=R({id:88882,name:`Chiliz Spicy Testnet`,network:`chiliz-spicy-Testnet`,nativeCurrency:{decimals:18,name:`CHZ`,symbol:`CHZ`},rpcUrls:{default:{http:[`https://spicy-rpc.chiliz.com`,`https://chiliz-spicy-rpc.publicnode.com`],webSocket:[`wss://spicy-rpc-ws.chiliz.com`,`wss://chiliz-spicy-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Chiliz Explorer`,url:`http://spicy-explorer.chiliz.com`,apiUrl:`http://spicy-explorer.chiliz.com/api`}},testnet:!0}),Zk=R({...LT,id:1660990954,name:`Status Network Sepolia`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://public.sepolia.rpc.status.network`],webSocket:[`wss://public.sepolia.rpc.status.network/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepoliascan.status.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1578364}},testnet:!0}),Qk=R({id:1234,name:`Step Network`,nativeCurrency:{name:`FITFI`,symbol:`FITFI`,decimals:18},rpcUrls:{default:{http:[`https://rpc.step.network`]}},blockExplorers:{default:{name:`Step Scan`,url:`https://stepscan.io`}},testnet:!1}),$k=R({id:1514,name:`Story`,nativeCurrency:{decimals:18,name:`IP Token`,symbol:`IP`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:340998},ensRegistry:{address:`0x5dc881dda4e4a8d312be3544ad13118d1a04cb17`,blockCreated:648924},ensUniversalResolver:{address:`0xddfb18888a9466688235887dec2a10c4f5effee9`,blockCreated:649114}},rpcUrls:{default:{http:[`https://mainnet.storyrpc.io`]}},blockExplorers:{default:{name:`Story explorer`,url:`https://storyscan.io`,apiUrl:`https://storyscan.io/api/v2`}},ensTlds:[`.ip`],testnet:!1}),eA=R({id:1315,name:`Story Aeneid`,network:`story-aeneid`,nativeCurrency:{decimals:18,name:`IP`,symbol:`IP`},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1792},ensRegistry:{address:`0x5dC881dDA4e4a8d312be3544AD13118D1a04Cb17`,blockCreated:1322033},ensUniversalResolver:{address:`0x6D3B3F99177FB2A5de7F9E928a9BD807bF7b5BAD`,blockCreated:1322097}},rpcUrls:{default:{http:[`https://aeneid.storyrpc.io`]}},blockExplorers:{default:{name:`Story Aeneid Explorer`,url:`https://aeneid.storyscan.io`,apiUrl:`https://aeneid.storyscan.io/api/v2`}},ensTlds:[`.ip`],testnet:!0}),tA=R({id:1516,name:`Story Odyssey`,nativeCurrency:{decimals:18,name:`IP`,symbol:`IP`},rpcUrls:{default:{http:[`https://rpc.odyssey.storyrpc.io`]}},blockExplorers:{default:{name:`Story Odyssey Explorer`,url:`https://odyssey.storyscan.xyz`}},testnet:!0}),nA=R({id:1513,name:`Story Testnet`,nativeCurrency:{decimals:18,name:`IP`,symbol:`IP`},rpcUrls:{default:{http:[`https://testnet.storyrpc.io`]}},blockExplorers:{default:{name:`Story Testnet Explorer`,url:`https://testnet.storyscan.xyz`}},testnet:!0}),rA=R({id:105105,name:`Stratis Mainnet`,network:`stratis`,nativeCurrency:{name:`Stratis`,symbol:`STRAX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.stratisevm.com`]}},blockExplorers:{default:{name:`Stratis Explorer`,url:`https://explorer.stratisevm.com`}}}),iA=R({id:8866,name:`SuperLumio`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.lumio.io`]}},blockExplorers:{default:{name:`Lumio explorer`,url:`https://explorer.lumio.io`}},testnet:!1}),aA=R({id:55244,name:`Superposition`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.superposition.so`]}},blockExplorers:{default:{name:`Superposition Explorer`,url:`https://explorer.superposition.so`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:39}},testnet:!1});var oA=1;const sA=R({...z,id:5330,name:`Superseed`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.superseed.xyz`]}},blockExplorers:{default:{name:`Superseed Explorer`,url:`https://explorer.superseed.xyz`,apiUrl:`https://explorer.superseed.xyz/api/v2`}},contracts:{...z.contracts,disputeGameFactory:{[oA]:{address:`0x8b097CF1f9BbD9cbFD0DD561858a1FCbC8857Be0`,blockCreated:20737481}},l2OutputOracle:{[oA]:{address:`0x693A0F8854F458D282DE3C5b69E8eE5EEE8aA949`,blockCreated:20737481}},portal:{[oA]:{address:`0x2c2150aa5c75A24fB93d4fD2F2a895D618054f07`,blockCreated:20737481}},l1StandardBridge:{[oA]:{address:`0x8b0576E39F1233679109F9b40cFcC2a7E0901Ede`,blockCreated:20737481}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},sourceId:oA});var cA=11155111;const lA=R({...z,id:53302,name:`Superseed Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.superseed.xyz`]}},blockExplorers:{default:{name:`Superseed Sepolia Explorer`,url:`https://sepolia-explorer.superseed.xyz`,apiUrl:`https://sepolia-explorer.superseed.xyz/api/v2`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`},portal:{[cA]:{address:`0x7A0db8C51432d2C3eb4e8f360a2EeB26FF2809fB`,blockCreated:5523438}},l1StandardBridge:{[cA]:{address:`0x2B227A603fAAdB3De0ED050b63ADD232B5f2c28C`,blockCreated:5523442}}},testnet:!0,sourceId:cA}),uA=R({id:763375,name:`Surge Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://l2-rpc.hoodi.surge.wtf`],webSocket:[`wss://l2-ws.hoodi.surge.wtf`]}},blockExplorers:{default:{name:`Surge Testnet Blockscout`,url:`https://explorer.hoodi.surge.wtf`}},testnet:!0}),dA=R({id:254,name:`Swan Chain Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.swanchain.org`]}},blockExplorers:{default:{name:`Swan Explorer`,url:`https://swanscan.io`}},testnet:!1}),fA=R({id:20241133,name:`Swan Proxima Testnet`,nativeCurrency:{name:`Swan Ether`,symbol:`sETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-proxima.swanchain.io`]}},blockExplorers:{default:{name:`Swan Explorer`,url:`https://proxima-explorer.swanchain.io`}},testnet:!0}),pA=R({id:2024,name:`Swan Saturn Testnet`,nativeCurrency:{name:`Swan Ether`,symbol:`sETH`,decimals:18},rpcUrls:{default:{http:[`https://saturn-rpc.swanchain.io`]}},blockExplorers:{default:{name:`Swan Explorer`,url:`https://saturn-explorer.swanchain.io`}},testnet:!0}),mA=R({...z,id:1923,name:`Swellchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://swell-mainnet.alt.technology`]}},blockExplorers:{default:{name:`Swell Explorer`,url:`https://explorer.swellnetwork.io`,apiUrl:`https://explorer.swellnetwork.io/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}}}),hA=R({...z,id:1924,name:`Swellchain Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://swell-testnet.alt.technology`]}},blockExplorers:{default:{name:`Swellchain Testnet Explorer`,url:`https://swell-testnet-explorer.alt.technology`,apiUrl:`https://swell-testnet-explorer.alt.technology/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}}}),gA=R({id:94,name:`SwissDLT Mainnet`,nativeCurrency:{decimals:18,name:`BCTS`,symbol:`BCTS`},rpcUrls:{default:{http:[`https://rpc.swissdlt.ch`]}},blockExplorers:{default:{name:`SwissDLT Explorer`,url:`https://explorer.swissdlt.ch`}},testnet:!1}),_A=R({id:57,name:`Syscoin Mainnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc.syscoin.org`],webSocket:[`wss://rpc.syscoin.org/wss`]}},blockExplorers:{default:{name:`SyscoinExplorer`,url:`https://explorer.syscoin.org`,apiUrl:`https://explorer.syscoin.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:287139}}}),vA=R({id:5700,name:`Syscoin Tanenbaum Testnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc.tanenbaum.io`],webSocket:[`wss://rpc.tanenbaum.io/wss`]}},blockExplorers:{default:{name:`SyscoinTestnetExplorer`,url:`https://tanenbaum.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:271288}}}),yA=R({id:239,name:`TAC`,nativeCurrency:{name:`TAC`,symbol:`TAC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.ankr.com/tac`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://tac.blockscout.com`,apiUrl:`https://tac.blockscout.com/api`},native:{name:`TAC Explorer`,url:`https://explorer.tac.build`,apiUrl:`https://explorer.tac.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}}}),bA=R({id:2391,name:`TAC SPB Testnet`,nativeCurrency:{name:`TAC`,symbol:`TAC`,decimals:18},rpcUrls:{default:{http:[`https://spb.rpc.tac.build`]}},blockExplorers:{default:{name:`TAC`,url:`https://spb.explorer.tac.build`,apiUrl:`https://spb.explorer.tac.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:471429}},testnet:!0}),xA=R({id:167e3,name:`Taiko Mainnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.mainnet.taiko.xyz`],webSocket:[`wss://ws.mainnet.taiko.xyz`]}},blockExplorers:{default:{name:`Taikoscan`,url:`https://taikoscan.io`,apiUrl:`https://api.taikoscan.io/api`}},contracts:{multicall3:{address:`0xcb2436774C3e191c85056d248EF4260ce5f27A9D`}}}),SA=R({id:167009,name:`Taiko Hekla L2`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hekla.taiko.xyz`]}},blockExplorers:{default:{name:`Taikoscan`,url:`https://hekla.taikoscan.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:59757}},testnet:!0}),CA=R({id:167007,name:`Taiko Jolnir (Alpha-5 Testnet)`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.jolnir.taiko.xyz`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.jolnir.taiko.xyz`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:732706}},testnet:!0}),wA=R({id:167008,name:`Taiko Katla (Alpha-6 Testnet)`,network:`tko-katla`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.katla.taiko.xyz`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.katla.taiko.xyz`}}}),TA=R({id:167005,name:`Taiko (Alpha-3 Testnet)`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.test.taiko.xyz`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.test.taiko.xyz`}}}),EA=R({id:841,name:`Taraxa Mainnet`,nativeCurrency:{name:`Tara`,symbol:`TARA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.taraxa.io`]}},blockExplorers:{default:{name:`Taraxa Explorer`,url:`https://explorer.mainnet.taraxa.io`}}}),DA=R({id:842,name:`Taraxa Testnet`,nativeCurrency:{name:`Tara`,symbol:`TARA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.taraxa.io`]}},blockExplorers:{default:{name:`Taraxa Explorer`,url:`https://explorer.testnet.taraxa.io`}},testnet:!0}),OA=R({id:10218,name:`Tea Sepolia`,nativeCurrency:{name:`Sepolia Tea`,symbol:`TEA`,decimals:18},rpcUrls:{default:{http:[`https://tea-sepolia.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Tea Sepolia Explorer`,url:`https://sepolia.tea.xyz`}},testnet:!0}),kA=R({id:2017,name:`Telcoin Adiri Testnet`,nativeCurrency:{name:`Telcoin`,symbol:`TEL`,decimals:18},rpcUrls:{default:{http:[`https://rpc.telcoin.network`]}},blockExplorers:{default:{name:`telscan`,url:`https://telscan.io`}},testnet:!0}),AA=R({id:40,name:`Telos`,nativeCurrency:{decimals:18,name:`Telos`,symbol:`TLOS`},rpcUrls:{default:{http:[`https://rpc.telos.net`]}},blockExplorers:{default:{name:`Teloscan`,url:`https://www.teloscan.io/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:246530709}}}),jA=R({id:41,name:`Telos`,nativeCurrency:{decimals:18,name:`Telos`,symbol:`TLOS`},rpcUrls:{default:{http:[`https://rpc.testnet.telos.net`]}},blockExplorers:{default:{name:`Teloscan (testnet)`,url:`https://testnet.teloscan.io/`}},testnet:!0}),MA=R({id:1559,name:`Tenet`,network:`tenet-mainnet`,nativeCurrency:{name:`TENET`,symbol:`TENET`,decimals:18},rpcUrls:{default:{http:[`https://rpc.tenet.org`]}},blockExplorers:{default:{name:`TenetScan Mainnet`,url:`https://tenetscan.io`,apiUrl:`https://tenetscan.io/api`}},testnet:!1}),NA=R({id:752025,name:`Ternoa`,nativeCurrency:{name:`Capsule Coin`,symbol:`CAPS`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.zkevm.ternoa.network`]}},blockExplorers:{default:{name:`Ternoa Explorer`,url:`https://explorer-mainnet.zkevm.ternoa.network`}},testnet:!1}),PA=R({id:7,name:`ThaiChain`,nativeCurrency:{name:`TCH`,symbol:`TCH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.thaichain.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp.thaichain.org`,apiUrl:`https://exp.thaichain.org/api`}},contracts:{multicall3:{address:`0x0DaD6130e832c21719C5CE3bae93454E16A84826`,blockCreated:4806386}},testnet:!1}),FA=R({id:8428,name:`THAT Mainnet`,nativeCurrency:{name:`THAT`,symbol:`THAT`,decimals:18},rpcUrls:{default:{http:[`https://api.thatchain.io/mainnet`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://that.blockscout.com`}},testnet:!1}),IA=R({id:361,name:`Theta Mainnet`,nativeCurrency:{name:`TFUEL`,symbol:`TFUEL`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-api.thetatoken.org/rpc`]}},blockExplorers:{default:{name:`Theta Explorer`,url:`https://explorer.thetatoken.org`}},testnet:!1}),LA=R({id:365,name:`Theta Testnet`,nativeCurrency:{name:`TFUEL`,symbol:`TFUEL`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-api-testnet.thetatoken.org/rpc`]}},blockExplorers:{default:{name:`Theta Explorer`,url:`https://testnet-explorer.thetatoken.org`}},testnet:!0}),RA=R({id:108,name:`ThunderCore Mainnet`,nativeCurrency:{name:`TT`,symbol:`TT`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.thundercore.com`]}},blockExplorers:{default:{name:`ThunderCore Explorer`,url:`https://explorer-mainnet.thundercore.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},testnet:!1}),zA=R({id:997,name:`5ireChain Thunder Testnet`,nativeCurrency:{name:`5ire Token`,symbol:`5IRE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.5ire.network`]}},blockExplorers:{default:{name:`5ireChain Thunder Explorer`,url:`https://testnet.5irescan.io/`}},testnet:!0}),BA=R({id:62092,name:`TikTrix Testnet`,nativeCurrency:{name:`tTTX`,symbol:`tTTX`,decimals:18},rpcUrls:{default:{http:[`https://tiktrix-rpc.xyz`]}},blockExplorers:{default:{name:`TikTrix Testnet Explorer`,url:`https://tiktrix.xyz`}},testnet:!0}),VA=R({id:6969,name:`Tomb Mainnet`,nativeCurrency:{name:`TOMB`,symbol:`TOMB`,decimals:18},rpcUrls:{default:{http:[`https://rpc.tombchain.com`]}},blockExplorers:{default:{name:`Tomb Explorer`,url:`https://tombscout.com`}},testnet:!1}),HA=R({...ay,id:61166,name:`Treasure`,nativeCurrency:{decimals:18,name:`MAGIC`,symbol:`MAGIC`},rpcUrls:{default:{http:[`https://rpc.treasure.lol`],webSocket:[`wss://rpc.treasure.lol/ws`]}},blockExplorers:{default:{name:`Treasure Block Explorer`,url:`https://treasurescan.io`}},contracts:{multicall3:{address:`0x2e29fe39496a56856D8698bD43e1dF4D0CE6266a`,blockCreated:101}},testnet:!1}),UA=R({...ay,id:978658,name:`Treasure Topaz Testnet`,nativeCurrency:{decimals:18,name:`MAGIC`,symbol:`MAGIC`},rpcUrls:{default:{http:[`https://rpc.topaz.treasure.lol`],webSocket:[`wss://rpc.topaz.treasure.lol/ws`]}},blockExplorers:{default:{name:`Treasure Topaz Block Explorer`,url:`https://topaz.treasurescan.io`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`,blockCreated:108112}},testnet:!0}),WA=R({id:728126428,name:`Tron`,nativeCurrency:{name:`TRON`,symbol:`TRX`,decimals:6},rpcUrls:{default:{http:[`https://api.trongrid.io/jsonrpc`]}},blockExplorers:{default:{name:`Tronscan`,url:`https://tronscan.org`,apiUrl:`https://apilist.tronscanapi.com/api`}}}),GA=R({id:3448148188,name:`Tron Nile`,nativeCurrency:{name:`TRON`,symbol:`TRX`,decimals:6},rpcUrls:{default:{http:[`https://nile.trongrid.io/jsonrpc`]}},blockExplorers:{default:{name:`Tronscan`,url:`https://nile.tronscan.org`}},testnet:!0}),KA=R({id:2494104990,name:`Tron Shasta`,nativeCurrency:{name:`TRON`,symbol:`TRX`,decimals:6},rpcUrls:{default:{http:[`https://api.shasta.trongrid.io/jsonrpc`]}},blockExplorers:{default:{name:`Tronscan`,url:`https://shasta.tronscan.org`}},testnet:!0}),qA=R({id:8,name:`Ubiq Mainnet`,nativeCurrency:{name:`UBQ`,symbol:`UBQ`,decimals:18},rpcUrls:{default:{http:[`https://pyrus2.ubiqscan.io`]}},blockExplorers:{default:{name:`Ubiq Scan`,url:`https://ubiqscan.io`}},testnet:!1}),JA=R({id:19991,name:`Ultra EVM`,nativeCurrency:{decimals:18,name:`Ultra Token`,symbol:`UOS`},rpcUrls:{default:{http:[`https://evm.ultra.eosusa.io`]}},blockExplorers:{default:{name:`Ultra EVM Explorer`,url:`https://evmexplorer.ultra.io`}}}),YA=R({id:18881,name:`Ultra EVM Testnet`,nativeCurrency:{decimals:18,name:`Ultra Token`,symbol:`UOS`},rpcUrls:{default:{http:[`https://evm.test.ultra.eosusa.io`]}},blockExplorers:{default:{name:`Ultra EVM Testnet Explorer`,url:`https://evmexplorer.testnet.ultra.io`}},testnet:!0}),XA=R({id:1231,name:`Ultron Mainnet`,nativeCurrency:{name:`ULX`,symbol:`ULX`,decimals:18},rpcUrls:{default:{http:[`https://ultron-rpc.net`]}},blockExplorers:{default:{name:`Ultron Scan`,url:`https://ulxscan.com`}},testnet:!1}),ZA=R({id:1230,name:`Ultron Testnet`,nativeCurrency:{name:`ULX`,symbol:`ULX`,decimals:18},rpcUrls:{default:{http:[`https://ultron-dev.io`]}},blockExplorers:{default:{name:`Ultron Scan`,url:`https://explorer.ultron-dev.io`}},testnet:!0});var QA=1;const $A=R({...z,id:130,name:`Unichain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:1e3,rpcUrls:{default:{http:[`https://mainnet.unichain.org/`]}},blockExplorers:{default:{name:`Uniscan`,url:`https://uniscan.xyz`,apiUrl:`https://api.uniscan.xyz/api`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},disputeGameFactory:{[QA]:{address:`0x2F12d621a16e2d3285929C9996f478508951dFe4`}},portal:{[QA]:{address:`0x0bd48f6B86a26D3a217d0Fa6FfE2B491B956A7a2`}},l1StandardBridge:{[QA]:{address:`0x81014F44b0a345033bB2b3B21C7a1A308B35fEeA`}}},sourceId:QA});var ej=11155111;const tj=R({...z,id:1301,name:`Unichain Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:1e3,rpcUrls:{default:{http:[`https://sepolia.unichain.org`]}},blockExplorers:{default:{name:`Uniscan`,url:`https://sepolia.uniscan.xyz`,apiUrl:`https://api-sepolia.uniscan.xyz/api`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},portal:{[ej]:{address:`0x0d83dab629f0e0F9d36c0Cbc89B69a489f0751bD`}},l1StandardBridge:{[ej]:{address:`0xea58fcA6849d79EAd1f26608855c2D6407d54Ce2`}},disputeGameFactory:{[ej]:{address:`0xeff73e5aa3B9AEC32c659Aa3E00444d20a84394b`}}},testnet:!0,sourceId:ej}),nj=R({id:8880,name:`Unique Mainnet`,nativeCurrency:{decimals:18,name:`UNQ`,symbol:`UNQ`},rpcUrls:{default:{http:[`https://rpc.unique.network`]}},blockExplorers:{default:{name:`Unique Subscan`,url:`https://unique.subscan.io/`}}}),rj=R({id:8882,name:`Opal Testnet`,nativeCurrency:{decimals:18,name:`OPL`,symbol:`OPL`},rpcUrls:{default:{http:[`https://rpc-opal.unique.network`]}},blockExplorers:{default:{name:`Opal Subscan`,url:`https://opal.subscan.io/`}},testnet:!0}),ij=R({id:8881,name:`Quartz Mainnet`,nativeCurrency:{decimals:18,name:`QTZ`,symbol:`QTZ`},rpcUrls:{default:{http:[`https://rpc-quartz.unique.network`]}},blockExplorers:{default:{name:`Quartz Subscan`,url:`https://quartz.subscan.io/`}}}),aj=R({id:18233,name:`Unreal`,nativeCurrency:{name:`reETH`,decimals:18,symbol:`reETH`},rpcUrls:{default:{http:[`https://rpc.unreal-orbit.gelato.digital`]}},blockExplorers:{default:{name:`Unreal Explorer`,url:`https://unreal.blockscout.com`,apiUrl:`https://unreal.blockscout.com/api/v2`}},testnet:!0,contracts:{multicall3:{address:`0x8b6B0e60D8CD84898Ea8b981065A12F876eA5677`,blockCreated:1745}}}),oj=R({id:1480,name:`Vana`,blockTime:6e3,nativeCurrency:{decimals:18,name:`Vana`,symbol:`VANA`},rpcUrls:{default:{http:[`https://rpc.vana.org/`]}},blockExplorers:{default:{name:`Vana Block Explorer`,url:`https://vanascan.io`,apiUrl:`https://vanascan.io/api`}},contracts:{multicall3:{address:`0xD8d2dFca27E8797fd779F8547166A2d3B29d360E`,blockCreated:716763}}}),sj=R({id:14800,name:`Vana Moksha Testnet`,blockTime:6e3,nativeCurrency:{decimals:18,name:`Vana`,symbol:`VANA`},rpcUrls:{default:{http:[`https://rpc.moksha.vana.org`]}},blockExplorers:{default:{name:`Vana Moksha Testnet`,url:`https://moksha.vanascan.io`,apiUrl:`https://moksha.vanascan.io/api`}},contracts:{multicall3:{address:`0xD8d2dFca27E8797fd779F8547166A2d3B29d360E`,blockCreated:732283}},testnet:!0}),cj=R({id:2040,name:`Vanar Mainnet`,nativeCurrency:{name:`VANRY`,symbol:`VANRY`,decimals:18},rpcUrls:{default:{http:[`https://rpc.vanarchain.com`]}},blockExplorers:{default:{name:`Vanar Mainnet Explorer`,url:`https://explorer.vanarchain.com/`}},testnet:!1}),lj=R({id:100009,name:`Vechain`,nativeCurrency:{name:`VeChain`,symbol:`VET`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.vechain.org`]}},blockExplorers:{default:{name:`Vechain Explorer`,url:`https://explore.vechain.org`},vechainStats:{name:`Vechain Stats`,url:`https://vechainstats.com`}}}),uj=R({id:106,name:`Velas EVM Mainnet`,nativeCurrency:{name:`VLX`,symbol:`VLX`,decimals:18},rpcUrls:{default:{http:[`https://evmexplorer.velas.com/rpc`]}},blockExplorers:{default:{name:`Velas Explorer`,url:`https://evmexplorer.velas.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:55883577}},testnet:!1}),dj=R({id:88,name:`Viction`,nativeCurrency:{name:`Viction`,symbol:`VIC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.viction.xyz`]}},blockExplorers:{default:{name:`VIC Scan`,url:`https://vicscan.xyz`}},testnet:!1}),fj=R({id:89,name:`Viction Testnet`,nativeCurrency:{name:`Viction`,symbol:`VIC`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.viction.xyz`]}},blockExplorers:{default:{name:`VIC Scan`,url:`https://testnet.vicscan.xyz`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:12170179}},testnet:!0}),pj=R({id:888888,name:`Vision`,nativeCurrency:{name:`VISION`,symbol:`VS`,decimals:18},rpcUrls:{default:{http:[`https://infragrid.v.network/ethereum/compatible`]}},blockExplorers:{default:{name:`Vision Scan`,url:`https://visionscan.org`}},testnet:!1}),mj=R({id:666666,name:`Vision Testnet`,nativeCurrency:{name:`VISION`,symbol:`VS`,decimals:18},rpcUrls:{default:{http:[`https://vpioneer.infragrid.v.network/ethereum/compatible`]}},blockExplorers:{default:{name:`Vision Scan`,url:`https://visionscan.org/?chain=vpioneer`}},testnet:!0}),hj=R({id:888,name:`Wanchain`,nativeCurrency:{name:`WANCHAIN`,symbol:`WAN`,decimals:18},rpcUrls:{default:{http:[`https://gwan-ssl.wandevs.org:56891`,`https://gwan2-ssl.wandevs.org`]}},blockExplorers:{default:{name:`WanScan`,url:`https://wanscan.org`}},contracts:{multicall3:{address:`0xcDF6A1566e78EB4594c86Fe73Fcdc82429e97fbB`,blockCreated:25312390}}}),gj=R({id:999,name:`Wanchain Testnet`,nativeCurrency:{name:`WANCHAIN`,symbol:`WANt`,decimals:18},rpcUrls:{default:{http:[`https://gwan-ssl.wandevs.org:46891`]}},blockExplorers:{default:{name:`WanScanTest`,url:`https://wanscan.org`}},contracts:{multicall3:{address:`0x11c89bF4496c39FB80535Ffb4c92715839CC5324`,blockCreated:24743448}},testnet:!0}),_j=R({id:9496,name:`WeaveVM Alphanet`,nativeCurrency:{name:`Testnet WeaveVM`,symbol:`tWVM`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.wvm.dev`]}},blockExplorers:{default:{name:`WeaveVM Alphanet Explorer`,url:`https://explorer.wvm.dev`}},testnet:!0}),vj=R({id:1111,name:`WEMIX`,network:`wemix-mainnet`,nativeCurrency:{name:`WEMIX`,symbol:`WEMIX`,decimals:18},rpcUrls:{default:{http:[`https://api.wemix.com`]}},blockExplorers:{default:{name:`wemixExplorer`,url:`https://explorer.wemix.com`}}}),yj=R({id:1112,name:`WEMIX Testnet`,network:`wemix-testnet`,nativeCurrency:{name:`WEMIX`,symbol:`tWEMIX`,decimals:18},rpcUrls:{default:{http:[`https://api.test.wemix.com`]}},blockExplorers:{default:{name:`wemixExplorer`,url:`https://testnet.wemixscan.com`,apiUrl:`https://testnet.wemixscan.com/api`}},testnet:!0}),bj=R({id:420420421,name:`Westend Asset Hub`,nativeCurrency:{decimals:18,name:`Westies`,symbol:`WND`},rpcUrls:{default:{http:[`https://westend-asset-hub-eth-rpc.polkadot.io`]}},blockExplorers:{default:{name:`subscan`,url:`https://westend-asset-hub-eth-explorer.parity.io`}},testnet:!0}),xj=R({testnet:!1,name:`Whitechain`,blockExplorers:{default:{name:`Whitechain Explorer`,url:`https://explorer.whitechain.io`}},id:1875,rpcUrls:{default:{http:[`https://rpc.whitechain.io`]}},nativeCurrency:{decimals:18,name:`WhiteBIT Coin`,symbol:`WBT`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:25212237}}}),Sj=R({testnet:!0,name:`Whitechain Testnet`,blockExplorers:{default:{name:`Whitechain Explorer`,url:`https://testnet.whitechain.io`}},id:2625,rpcUrls:{default:{http:[`https://rpc-testnet.whitechain.io`]}},nativeCurrency:{decimals:18,name:`WhiteBIT Coin`,symbol:`WBT`}}),Cj=R({id:42070,name:`WMC Testnet`,nativeCurrency:{name:`WMTx`,symbol:`WMTx`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet-base.worldmobile.net`]}},blockExplorers:{default:{name:`WMC Explorer`,url:`https://explorer2-base-testnet.worldmobile.net`}},testnet:!0});var wj=1;const Tj=R({...z,id:480,name:`World Chain`,network:`worldchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://worldchain-mainnet.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Worldscan`,url:`https://worldscan.org`,apiUrl:`https://api.worldscan.org/api`},blockscout:{name:`Blockscout`,url:`https://worldchain-mainnet.explorer.alchemy.com`,apiUrl:`https://worldchain-mainnet.explorer.alchemy.com/api`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},disputeGameFactory:{[wj]:{address:`0x069c4c579671f8c120b1327a73217D01Ea2EC5ea`}},l2OutputOracle:{[wj]:{address:`0x19A6d1E9034596196295CF148509796978343c5D`}},portal:{[wj]:{address:`0xd5ec14a83B7d95BE1E2Ac12523e2dEE12Cbeea6C`}},l1StandardBridge:{[wj]:{address:`0x470458C91978D2d929704489Ad730DC3E3001113`}}},testnet:!1,sourceId:wj});var Ej=11155111;const Dj=R({...z,id:4801,name:`World Chain Sepolia`,network:`worldchain-sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://worldchain-sepolia.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Worldscan Sepolia`,url:`https://sepolia.worldscan.org`,apiUrl:`https://api-sepolia.worldscan.org/api`},blockscout:{name:`Blockscout`,url:`https://worldchain-sepolia.explorer.alchemy.com`,apiUrl:`https://worldchain-sepolia.explorer.alchemy.com/api`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},disputeGameFactory:{[Ej]:{address:`0x8Ec1111f67Dad6b6A93B3F42DfBC92D81c98449A`}},l2OutputOracle:{[Ej]:{address:`0xc8886f8BAb6Eaeb215aDB5f1c686BF699248300e`}},portal:{[Ej]:{address:`0xFf6EBa109271fe6d4237EeeD4bAb1dD9A77dD1A4`}},l1StandardBridge:{[Ej]:{address:`0xd7DF54b3989855eb66497301a4aAEc33Dbb3F8DE`}}},testnet:!0,sourceId:Ej}),Oj=R({id:103,name:`WorldLand Mainnet`,nativeCurrency:{decimals:18,name:`WLC`,symbol:`WLC`},rpcUrls:{default:{http:[`https://seoul.worldland.foundation`]}},blockExplorers:{default:{name:`WorldLand Scan`,url:`https://scan.worldland.foundation`}},testnet:!1}),kj=R({id:660279,name:`Xai Mainnet`,nativeCurrency:{name:`Xai`,symbol:`XAI`,decimals:18},rpcUrls:{default:{http:[`https://xai-chain.net/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.xai-chain.net`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:222549}},testnet:!1}),Aj=R({id:37714555429,name:`Xai Testnet`,nativeCurrency:{name:`sXai`,symbol:`sXAI`,decimals:18},rpcUrls:{default:{http:[`https://testnet-v2.xai-chain.net/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer-v2.xai-chain.net`}},testnet:!0}),jj=R({id:50,name:`XDC Network`,nativeCurrency:{decimals:18,name:`XDC`,symbol:`XDC`},rpcUrls:{default:{http:[`https://rpc.xdcrpc.com`]}},blockExplorers:{default:{name:`XDCScan`,url:`https://xdcscan.com`}},contracts:{multicall3:{address:`0x0B1795ccA8E4eC4df02346a082df54D437F8D9aF`,blockCreated:75884020}}}),Mj=R({id:51,name:`Apothem Network`,nativeCurrency:{decimals:18,name:`TXDC`,symbol:`TXDC`},rpcUrls:{default:{http:[`https://erpc.apothem.network`]}},blockExplorers:{default:{name:`XDCScan`,url:`https://testnet.xdcscan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:59765389}}}),Nj=R({id:196,name:`X Layer Mainnet`,nativeCurrency:{decimals:18,name:`OKB`,symbol:`OKB`},rpcUrls:{default:{http:[`https://rpc.xlayer.tech`]}},blockExplorers:{default:{name:`OKLink`,url:`https://www.oklink.com/xlayer`,apiUrl:`https://www.oklink.com/api/v5/explorer/xlayer/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:47416}}}),Pj=R({id:195,name:`X1 Testnet`,nativeCurrency:{decimals:18,name:`OKB`,symbol:`OKB`},rpcUrls:{default:{http:[`https://xlayertestrpc.okx.com`]}},blockExplorers:{default:{name:`OKLink`,url:`https://www.oklink.com/xlayer-test`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:624344}},testnet:!0}),Fj=R({id:20250217,name:`Xphere Mainnet`,nativeCurrency:{decimals:18,name:`XP`,symbol:`XP`},rpcUrls:{default:{http:[`https://en-bkk.x-phere.com`]}},blockExplorers:{default:{name:`Xphere Tamsa Explorer`,url:`https://xp.tamsa.io`}},testnet:!1}),Ij=R({id:1998991,name:`Xphere Testnet`,nativeCurrency:{decimals:18,name:`XPT`,symbol:`XPT`},rpcUrls:{default:{http:[`http://testnet.x-phere.com`]}},blockExplorers:{default:{name:`Xphere Tamsa Explorer`,url:`https://xpt.tamsa.io`}},testnet:!0}),Lj=R({id:273,name:`XR One`,nativeCurrency:{decimals:18,name:`XR1`,symbol:`XR1`},rpcUrls:{default:{http:[`https://xr1.calderachain.xyz/http`],webSocket:[`wss://xr1.calderachain.xyz/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://xr1.calderaexplorer.xyz`}},testnet:!1}),Rj=R({id:1440002,name:`XRPL EVM Devnet`,nativeCurrency:{name:`XRP`,symbol:`XRP`,decimals:18},rpcUrls:{default:{http:[`https://rpc.xrplevm.org/`]},public:{http:[`https://rpc.xrplevm.org/`]}},blockExplorers:{default:{name:`XRPLEVM Devnet Explorer`,url:`https://explorer.xrplevm.org/`}},contracts:{multicall3:{address:`0x82Cc144D7d0AD4B1c27cb41420e82b82Ad6e9B31`,blockCreated:15237286}},testnet:!0}),zj=R({id:1449e3,name:`XRPL EVM Testnet`,nativeCurrency:{name:`XRP`,symbol:`XRP`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.xrplevm.org`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.testnet.xrplevm.org`,apiUrl:`https://explorer.testnet.xrplevm.org/api/v2`}},contracts:{multicall3:{address:`0x82Cc144D7d0AD4B1c27cb41420e82b82Ad6e9B31`,blockCreated:492302}},testnet:!0}),Bj=R({id:2730,name:`XR Sepolia`,nativeCurrency:{decimals:18,name:`tXR`,symbol:`tXR`},rpcUrls:{default:{http:[`https://xr-sepolia-testnet.rpc.caldera.xyz/http`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://xr-sepolia-testnet.explorer.caldera.xyz`}},testnet:!0}),Vj=R({id:50005,name:`Yooldo Verse`,nativeCurrency:{name:`OAS`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.yooldo-verse.xyz`]}},blockExplorers:{default:{name:`Yooldo Verse Explorer`,url:`https://explorer.yooldo-verse.xyz`}}}),Hj=R({id:50006,name:`Yooldo Verse Testnet`,nativeCurrency:{name:`OAS`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.yooldo-verse.xyz`]}},blockExplorers:{default:{name:`Yooldo Verse Testnet Explorer`,url:`https://explorer.testnet.yooldo-verse.xyz`}},testnet:!0}),Uj=R({id:8408,name:`ZenChain Testnet`,nativeCurrency:{decimals:18,name:`ZTC`,symbol:`ZTC`},rpcUrls:{default:{http:[`https://zenchain-testnet.api.onfinality.io/public`],webSocket:[`wss://zenchain-testnet.api.onfinality.io/public-ws`]}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:230019}},blockExplorers:{default:{name:`Zentrace`,url:`https://zentrace.io`}},testnet:!0}),Wj=R({id:383414847825,name:`Zeniq Mainnet`,nativeCurrency:{name:`ZENIQ`,symbol:`ZENIQ`,decimals:18},rpcUrls:{default:{http:[`https://api.zeniq.network`]}},blockExplorers:{default:{name:`Zeniq Explorer`,url:`https://zeniqscan.com`}},testnet:!1}),Gj=R({id:543210,name:`Zero Network`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.zerion.io/v1/zero`]}},blockExplorers:{default:{name:`Zero Network Explorer`,url:`https://explorer.zero.network`}},testnet:!1}),Kj=R({id:7e3,name:`ZetaChain`,nativeCurrency:{decimals:18,name:`Zeta`,symbol:`ZETA`},rpcUrls:{default:{http:[`https://zetachain-evm.blockpi.network/v1/rpc/public`]}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1632781}},blockExplorers:{default:{name:`ZetaScan`,url:`https://zetascan.com`}},testnet:!1}),qj=R({id:7001,name:`ZetaChain Athens Testnet`,nativeCurrency:{decimals:18,name:`Zeta`,symbol:`aZETA`},rpcUrls:{default:{http:[`https://zetachain-athens-evm.blockpi.network/v1/rpc/public`]}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2715217}},blockExplorers:{default:{name:`ZetaScan`,url:`https://testnet.zetascan.com`}},testnet:!0}),Jj=R({id:1337803,name:`Zhejiang`,nativeCurrency:{name:`Zhejiang Ether`,symbol:`ZhejETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.zhejiang.ethpandaops.io`]}},blockExplorers:{default:{name:`Beaconchain`,url:`https://zhejiang.beaconcha.in`}},testnet:!0}),Yj=R({id:32769,name:`Zilliqa`,network:`zilliqa`,nativeCurrency:{name:`Zilliqa`,symbol:`ZIL`,decimals:18},rpcUrls:{default:{http:[`https://api.zilliqa.com`]}},blockExplorers:{default:{name:`Ethernal`,url:`https://evmx.zilliqa.com`}},testnet:!1}),Xj=R({id:33101,name:`Zilliqa Testnet`,network:`zilliqa-testnet`,nativeCurrency:{name:`Zilliqa`,symbol:`ZIL`,decimals:18},rpcUrls:{default:{http:[`https://dev-api.zilliqa.com`]}},blockExplorers:{default:{name:`Ethernal`,url:`https://evmx.testnet.zilliqa.com`}},testnet:!0});var Zj=1;const Qj=R({...z,id:48900,name:`Zircuit Mainnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.zircuit.com`,`https://zircuit1-mainnet.liquify.com`,`https://zircuit1-mainnet.p2pify.com`,`https://zircuit-mainnet.drpc.org`]}},blockExplorers:{default:{name:`Zircuit Explorer`,url:`https://explorer.zircuit.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`},l2OutputOracle:{[Zj]:{address:`0x92Ef6Af472b39F1b363da45E35530c24619245A4`}},portal:{[Zj]:{address:`0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1`}},l1StandardBridge:{[Zj]:{address:`0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8`}}},testnet:!1});var $j=11155111;const eM=R({...z,id:48898,name:`Zircuit Garfield Testnet`,nativeCurrency:{name:`ETH`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://garfield-testnet.zircuit.com/`]}},blockExplorers:{default:{name:`Zircuit Garfield Testnet Explorer`,url:`https://explorer.garfield-testnet.zircuit.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`},l2OutputOracle:{[$j]:{address:`0xd69D3AC5CA686cCF94b258291772bc520FEAf211`}},portal:{[$j]:{address:`0x4E21A71Ac3F7607Da5c06153A17B1DD20E702c21`}},l1StandardBridge:{[$j]:{address:`0x87a7E2bCA9E35BA49282E832a28A6023904460D8`}}},testnet:!0});var tM=11155111;const nM=R({...z,id:48899,name:`Zircuit Testnet`,nativeCurrency:{name:`ETH`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.zircuit.com`,`https://zircuit1-testnet.p2pify.com`,`https://zircuit1-testnet.liquify.com`]}},blockExplorers:{default:{name:`Zircuit Testnet Explorer`,url:`https://explorer.testnet.zircuit.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:6040287},l2OutputOracle:{[tM]:{address:`0x740C2dac453aEf7140809F80b72bf0e647af8148`}},portal:{[tM]:{address:`0x787f1C8c5924178689E0560a43D848bF8E54b23e`}},l1StandardBridge:{[tM]:{address:`0x0545c5fe980098C16fcD0eCB5E79753afa6d9af9`}}},testnet:!0}),rM=R({id:42766,name:`ZKFair Mainnet`,network:`zkfair-mainnet`,nativeCurrency:{decimals:18,name:`USD Coin`,symbol:`USDC`},rpcUrls:{default:{http:[`https://rpc.zkfair.io`]}},blockExplorers:{default:{name:`zkFair Explorer`,url:`https://scan.zkfair.io`,apiUrl:`https://scan.zkfair.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6090959}},testnet:!1}),iM=R({id:43851,name:`ZKFair Testnet`,network:`zkfair-testnet`,nativeCurrency:{decimals:18,name:`USD Coin`,symbol:`USDC`},rpcUrls:{default:{http:[`https://testnet-rpc.zkfair.io`]}},blockExplorers:{default:{name:`zkFair Explorer`,url:`https://testnet-scan.zkfair.io`}},testnet:!0}),aM=R({id:810180,name:`zkLink Nova`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.zklink.io`]}},blockExplorers:{default:{name:`zkLink Nova Block Explorer`,url:`https://explorer.zklink.io`}}}),oM=R({id:810181,name:`zkLink Nova Sepolia Testnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://sepolia.rpc.zklink.io`]}},blockExplorers:{default:{name:`zkLink Nova Block Explorer`,url:`https://sepolia.explorer.zklink.io`}}}),sM=R({...ay,id:324,name:`ZKsync Era`,network:`zksync-era`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.era.zksync.io`],webSocket:[`wss://mainnet.era.zksync.io/ws`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://era.zksync.network/`,apiUrl:`https://api-era.zksync.network/api`},native:{name:`ZKsync Explorer`,url:`https://explorer.zksync.io/`,apiUrl:`https://block-explorer-api.mainnet.zksync.io/api`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:45659388}}}),cM=R({...ay,id:260,name:`ZKsync InMemory Node`,network:`zksync-in-memory-node`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:8011`]}},testnet:!0}),lM=R({...ay,id:272,name:`ZKsync CLI Local Custom Hyperchain`,nativeCurrency:{name:`BAT`,symbol:`BAT`,decimals:18},rpcUrls:{default:{http:[`http://localhost:15200`],webSocket:[`ws://localhost:15201`]}},blockExplorers:{default:{name:`ZKsync explorer`,url:`http://localhost:15005/`,apiUrl:`http://localhost:15005/api`}},testnet:!0}),uM=R({...ay,id:270,name:`ZKsync CLI Local Hyperchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:15100`],webSocket:[`ws://localhost:15101`]}},blockExplorers:{default:{name:`ZKsync explorer`,url:`http://localhost:15005/`,apiUrl:`http://localhost:15005/api`}},testnet:!0}),dM=R({id:9,name:`ZKsync CLI Local Hyperchain L1`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:15045`]}},blockExplorers:{default:{name:`Blockscout`,url:`http://localhost:15001/`,apiUrl:`http://localhost:15001/api/v2`}},testnet:!0}),fM=R({...ay,id:270,name:`ZKsync CLI Local Node`,network:`zksync-cli-local-node`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:3050`]}},testnet:!0}),pM=R({...ay,id:300,name:`ZKsync Sepolia Testnet`,network:`zksync-sepolia-testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.era.zksync.dev`],webSocket:[`wss://sepolia.era.zksync.dev/ws`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia-era.zksync.network/`,apiUrl:`https://api-sepolia-era.zksync.network/api`},native:{name:`ZKsync Explorer`,url:`https://sepolia.explorer.zksync.io/`,blockExplorerApi:`https://block-explorer-api.sepolia.zksync.dev/api`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:3855712}},testnet:!0});var mM=1;const hM=R({...z,id:7777777,name:`Zora`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.zora.energy`],webSocket:[`wss://rpc.zora.energy`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.zora.energy`,apiUrl:`https://explorer.zora.energy/api`}},contracts:{...z.contracts,l2OutputOracle:{[mM]:{address:`0x9E6204F750cD866b299594e2aC9eA824E2e5f95c`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:5882},portal:{[mM]:{address:`0x1a0ad011913A150f69f6A19DF447A0CfD9551054`}},l1StandardBridge:{[mM]:{address:`0x3e2Ea9B92B7E48A52296fD261dc26fd995284631`}}},sourceId:mM});var gM=11155111;const _M=R({...z,id:999999999,name:`Zora Sepolia`,network:`zora-sepolia`,nativeCurrency:{decimals:18,name:`Zora Sepolia`,symbol:`ETH`},rpcUrls:{default:{http:[`https://sepolia.rpc.zora.energy`],webSocket:[`wss://sepolia.rpc.zora.energy`]}},blockExplorers:{default:{name:`Zora Sepolia Explorer`,url:`https://sepolia.explorer.zora.energy/`,apiUrl:`https://sepolia.explorer.zora.energy/api`}},contracts:{...z.contracts,l2OutputOracle:{[gM]:{address:`0x2615B481Bd3E5A1C0C7Ca3Da1bdc663E8615Ade9`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:83160},portal:{[gM]:{address:`0xeffE2C6cA9Ab797D418f0D91eA60807713f3536f`}},l1StandardBridge:{[gM]:{address:`0x5376f1D543dcbB5BD416c56C189e4cB7399fCcCB`}}},sourceId:gM,testnet:!0});var vM=5;const yM=R({...z,id:999,name:`Zora Goerli Testnet`,nativeCurrency:{decimals:18,name:`Zora Goerli`,symbol:`ETH`},rpcUrls:{default:{http:[`https://testnet.rpc.zora.energy`],webSocket:[`wss://testnet.rpc.zora.energy`]}},blockExplorers:{default:{name:`Explorer`,url:`https://testnet.explorer.zora.energy`,apiUrl:`https://testnet.explorer.zora.energy/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:189123},portal:{[vM]:{address:`0xDb9F51790365e7dc196e7D072728df39Be958ACe`}}},sourceId:vM,testnet:!0});var bM=c({abey:()=>Uv,abstract:()=>oy,abstractTestnet:()=>sy,acala:()=>cy,acria:()=>ly,adf:()=>uy,agungTestnet:()=>dy,aioz:()=>fy,alephZero:()=>py,alephZeroTestnet:()=>my,alienx:()=>hy,alienxHalTestnet:()=>gy,ancient8:()=>Ty,ancient8Sepolia:()=>Dy,anvil:()=>Oy,apeChain:()=>ky,apexTestnet:()=>Ay,arbitrum:()=>jy,arbitrumGoerli:()=>My,arbitrumNova:()=>Ny,arbitrumSepolia:()=>Py,arenaz:()=>Fy,areonNetwork:()=>Iy,areonNetworkTestnet:()=>Ly,areum:()=>Ry,artelaTestnet:()=>zy,arthera:()=>By,artheraTestnet:()=>Vy,assetChain:()=>Hy,assetChainTestnet:()=>Uy,astar:()=>Wy,astarZkEVM:()=>Gy,astarZkyoto:()=>Ky,atletaOlympia:()=>qy,aurora:()=>Jy,auroraTestnet:()=>Yy,auroria:()=>Xy,autheoTestnet:()=>Zy,avalanche:()=>Qy,avalancheFuji:()=>$y,b3:()=>eb,b3Sepolia:()=>tb,bahamut:()=>nb,base:()=>ib,baseGoerli:()=>cb,basePreconf:()=>ab,baseSepolia:()=>ub,baseSepoliaPreconf:()=>db,basecampTestnet:()=>ob,beam:()=>fb,beamTestnet:()=>pb,bearNetworkChainMainnet:()=>mb,bearNetworkChainTestnet:()=>hb,berachain:()=>gb,berachainBepolia:()=>_b,berachainTestnet:()=>vb,berachainTestnetbArtio:()=>yb,bevmMainnet:()=>bb,bifrost:()=>xb,birdlayer:()=>Sb,bitTorrent:()=>kb,bitTorrentTestnet:()=>Ab,bitgert:()=>Cb,bitkub:()=>wb,bitkubTestnet:()=>Tb,bitlayer:()=>Eb,bitlayerTestnet:()=>Db,bitrock:()=>Ob,blast:()=>Mb,blastSepolia:()=>Nb,bob:()=>Fb,bobSepolia:()=>zb,boba:()=>Ib,bobaSepolia:()=>Lb,boolBetaMainnet:()=>Bb,botanix:()=>Vb,botanixTestnet:()=>Hb,bounceBit:()=>Ub,bounceBitTestnet:()=>Wb,bronos:()=>Gb,bronosTestnet:()=>Kb,bsc:()=>qb,bscGreenfield:()=>Jb,bscTestnet:()=>Yb,bsquared:()=>Xb,bsquaredTestnet:()=>Zb,btr:()=>Qb,btrTestnet:()=>$b,bxn:()=>ex,bxnTestnet:()=>tx,cannon:()=>nx,canto:()=>rx,celo:()=>vx,celoAlfajores:()=>bx,celoSepolia:()=>Sx,chang:()=>Cx,chiliz:()=>wx,chips:()=>Tx,citreaTestnet:()=>Ex,classic:()=>Dx,coinbit:()=>Ox,coinex:()=>kx,confluxESpace:()=>Ax,confluxESpaceTestnet:()=>jx,coreDao:()=>Mx,coreTestnet1:()=>Nx,coreTestnet2:()=>Px,corn:()=>Fx,cornTestnet:()=>Ix,crab:()=>Lx,creatorTestnet:()=>Rx,creditCoin3Devnet:()=>zx,creditCoin3Mainnet:()=>Bx,creditCoin3Testnet:()=>Vx,cronos:()=>Hx,cronosTestnet:()=>Ux,cronoszkEVM:()=>Wx,cronoszkEVMTestnet:()=>Gx,crossbell:()=>Kx,crossfi:()=>qx,curtis:()=>Jx,cyber:()=>Yx,cyberTestnet:()=>Xx,dailyNetwork:()=>Zx,dailyNetworkTestnet:()=>Qx,darwinia:()=>$x,dbkchain:()=>eS,dchain:()=>tS,dchainTestnet:()=>nS,defichainEvm:()=>rS,defichainEvmTestnet:()=>iS,degen:()=>aS,dfk:()=>oS,diode:()=>sS,disChain:()=>cS,dodochainTestnet:()=>lS,dogechain:()=>uS,domaTestnet:()=>dS,donatuz:()=>fS,dosChain:()=>pS,dosChainTestnet:()=>mS,dreyerxMainnet:()=>hS,dreyerxTestnet:()=>gS,dustboyIoT:()=>_S,dymension:()=>vS,edexa:()=>yS,edexaTestnet:()=>bS,edgeless:()=>xS,edgelessTestnet:()=>SS,edgeware:()=>CS,edgewareTestnet:()=>wS,eduChain:()=>TS,eduChainTestnet:()=>ES,ekta:()=>DS,ektaTestnet:()=>OS,elastos:()=>kS,elastosTestnet:()=>AS,electroneum:()=>jS,electroneumTestnet:()=>MS,elysiumTestnet:()=>NS,energy:()=>PS,eni:()=>FS,eniTestnet:()=>IS,enuls:()=>LS,eon:()=>RS,eos:()=>zS,eosTestnet:()=>BS,eteria:()=>VS,etherlink:()=>HS,etherlinkTestnet:()=>US,ethernity:()=>WS,etp:()=>GS,evmos:()=>KS,evmosTestnet:()=>qS,excelonMainnet:()=>JS,expanse:()=>YS,exsat:()=>XS,exsatTestnet:()=>ZS,fantom:()=>QS,fantomSonicTestnet:()=>$S,fantomTestnet:()=>eC,fibo:()=>tC,filecoin:()=>nC,filecoinCalibration:()=>rC,filecoinHyperspace:()=>iC,fireChain:()=>Hv,flame:()=>aC,flare:()=>oC,flareTestnet:()=>sC,flowMainnet:()=>cC,flowPreviewnet:()=>lC,flowTestnet:()=>uC,fluence:()=>dC,fluenceStage:()=>fC,fluenceTestnet:()=>pC,fluentTestnet:()=>mC,form:()=>gC,formTestnet:()=>yC,forma:()=>_C,formicarium:()=>SE,forta:()=>bC,foundry:()=>xC,fraxtal:()=>CC,fraxtalTestnet:()=>TC,funkiMainnet:()=>DC,funkiSepolia:()=>kC,fuse:()=>AC,fuseSparknet:()=>jC,fusion:()=>MC,fusionTestnet:()=>NC,garnet:()=>FC,geist:()=>IC,genesys:()=>LC,giwaSepolia:()=>zC,glideL1Protocol:()=>BC,glideL2Protocol:()=>VC,gnosis:()=>HC,gnosisChiado:()=>UC,goChain:()=>KC,goat:()=>WC,gobi:()=>GC,godwoken:()=>qC,goerli:()=>JC,graphite:()=>YC,graphiteTestnet:()=>XC,gravity:()=>ZC,gunz:()=>QC,guruNetwork:()=>$C,guruTestnet:()=>ew,ham:()=>tw,happychainTestnet:()=>nw,haqqMainnet:()=>rw,haqqTestedge2:()=>iw,hardhat:()=>aw,harmonyOne:()=>ow,hashkey:()=>sw,hashkeyTestnet:()=>cw,haustTestnet:()=>lw,hedera:()=>uw,hederaPreviewnet:()=>dw,hederaTestnet:()=>fw,hela:()=>pw,hemi:()=>mw,hemiSepolia:()=>hw,holesky:()=>gw,hoodi:()=>_w,hpb:()=>vw,huddle01Mainnet:()=>yw,huddle01Testnet:()=>bw,humanity:()=>xw,humanityTestnet:()=>Sw,humanode:()=>Cw,humanodeTestnet5:()=>ww,hychain:()=>Tw,hychainTestnet:()=>Ew,hyperliquidEvmTestnet:()=>Dw,iSunCoin:()=>Gw,icbNetwork:()=>Ow,idchain:()=>kw,immutableZkEvm:()=>Aw,immutableZkEvmTestnet:()=>jw,inEVM:()=>Mw,initVerse:()=>Nw,initVerseGenesis:()=>Pw,injective:()=>Fw,injectiveTestnet:()=>Iw,ink:()=>Rw,inkSepolia:()=>Bw,iota:()=>Vw,iotaTestnet:()=>Hw,iotex:()=>Uw,iotexTestnet:()=>Ww,jbc:()=>Kw,jbcTestnet:()=>qw,jocMainnet:()=>Jw,jocTestnet:()=>Yw,jovay:()=>Xw,jovaySepolia:()=>Zw,juneo:()=>Qw,juneoBCH1Chain:()=>$w,juneoDAI1Chain:()=>eT,juneoDOGE1Chain:()=>tT,juneoEUR1Chain:()=>nT,juneoGLD1Chain:()=>rT,juneoLINK1Chain:()=>iT,juneoLTC1Chain:()=>aT,juneoSGD1Chain:()=>sT,juneoSocotraTestnet:()=>cT,juneoUSD1Chain:()=>lT,juneoUSDT1Chain:()=>uT,juneomBTC1Chain:()=>oT,kaia:()=>dT,kairos:()=>fT,kakarotSepolia:()=>pT,kakarotStarknetSepolia:()=>mT,kardiaChain:()=>hT,karura:()=>gT,katana:()=>_T,kava:()=>vT,kavaTestnet:()=>yT,kcc:()=>bT,kiiTestnetOro:()=>xT,kinto:()=>ST,klaytn:()=>CT,klaytnBaobab:()=>wT,koi:()=>TT,kroma:()=>ET,kromaSepolia:()=>DT,l3x:()=>OT,l3xTestnet:()=>kT,lavita:()=>AT,lens:()=>jT,lensTestnet:()=>MT,lestnet:()=>NT,lightlinkPegasus:()=>PT,lightlinkPhoenix:()=>FT,linea:()=>zT,lineaGoerli:()=>BT,lineaSepolia:()=>VT,lineaTestnet:()=>HT,lisk:()=>WT,liskSepolia:()=>KT,loadAlphanet:()=>qT,localhost:()=>JT,loop:()=>YT,lukso:()=>XT,luksoTestnet:()=>ZT,lumiaMainnet:()=>QT,lumiaTestnet:()=>$T,lumoz:()=>eE,lumozTestnet:()=>tE,lycan:()=>nE,lyra:()=>rE,mainnet:()=>iE,mandala:()=>aE,manta:()=>oE,mantaSepoliaTestnet:()=>sE,mantaTestnet:()=>cE,mantle:()=>lE,mantleSepoliaTestnet:()=>uE,mantleTestnet:()=>dE,mantraDuKongEVMTestnet:()=>fE,mantraEVM:()=>pE,mapProtocol:()=>mE,matchain:()=>hE,matchainTestnet:()=>gE,mchVerse:()=>_E,megaethTestnet:()=>vE,mekong:()=>yE,meld:()=>bE,memecore:()=>xE,merlin:()=>CE,merlinErigonTestnet:()=>wE,metachain:()=>TE,metachainIstanbul:()=>EE,metadium:()=>DE,metalL2:()=>kE,meter:()=>AE,meterTestnet:()=>jE,metis:()=>ME,metisGoerli:()=>NE,metisSepolia:()=>PE,mev:()=>FE,mevTestnet:()=>IE,mint:()=>LE,mintSepoliaTestnet:()=>RE,mitosisTestnet:()=>zE,mode:()=>VE,modeTestnet:()=>UE,monadTestnet:()=>WE,moonbaseAlpha:()=>GE,moonbeam:()=>KE,moonbeamDev:()=>qE,moonriver:()=>JE,morph:()=>YE,morphHolesky:()=>XE,morphSepolia:()=>ZE,nahmii:()=>QE,nautilus:()=>$E,near:()=>eD,nearTestnet:()=>tD,neonDevnet:()=>nD,neonMainnet:()=>rD,neoxMainnet:()=>iD,neoxT4:()=>aD,newton:()=>oD,nexi:()=>sD,nexilix:()=>cD,nibiru:()=>lD,nitrographTestnet:()=>uD,oasisTestnet:()=>dD,oasys:()=>fD,odysseyTestnet:()=>pD,okc:()=>mD,omax:()=>hD,omni:()=>gD,omniOmega:()=>_D,oneWorld:()=>vD,oortMainnetDev:()=>yD,opBNB:()=>xD,opBNBTestnet:()=>CD,openledger:()=>wD,optimism:()=>ED,optimismGoerli:()=>OD,optimismSepolia:()=>AD,optopia:()=>jD,optopiaTestnet:()=>MD,orderly:()=>ND,orderlySepolia:()=>PD,otimDevnet:()=>FD,palm:()=>ID,palmTestnet:()=>LD,peaq:()=>RD,pgn:()=>BD,pgnTestnet:()=>HD,phoenix:()=>UD,planq:()=>WD,plasma:()=>GD,plasmaDevnet:()=>KD,plasmaTestnet:()=>qD,playfiAlbireo:()=>JD,plinga:()=>YD,plume:()=>XD,plumeDevnet:()=>ZD,plumeMainnet:()=>QD,plumeSepolia:()=>$D,plumeTestnet:()=>eO,polterTestnet:()=>tO,polygon:()=>nO,polygonAmoy:()=>rO,polygonMumbai:()=>iO,polygonZkEvm:()=>aO,polygonZkEvmCardona:()=>oO,polygonZkEvmTestnet:()=>sO,polynomial:()=>cO,polynomialSepolia:()=>lO,premiumBlockTestnet:()=>uO,pulsechain:()=>dO,pulsechainV4:()=>fO,pumpfiTestnet:()=>pO,pyrope:()=>hO,qMainnet:()=>_O,qTestnet:()=>vO,ql1:()=>gO,real:()=>yO,redbellyMainnet:()=>bO,redbellyTestnet:()=>xO,reddio:()=>SO,reddioSepolia:()=>CO,redstone:()=>TO,rei:()=>EO,reyaNetwork:()=>DO,riseTestnet:()=>OO,rivalz:()=>kO,rollux:()=>AO,rolluxTestnet:()=>jO,ronin:()=>MO,root:()=>NO,rootPorcini:()=>PO,rootstock:()=>FO,rootstockTestnet:()=>IO,rss3:()=>RO,rss3Sepolia:()=>BO,saakuru:()=>VO,saga:()=>HO,saigon:()=>UO,sanko:()=>WO,sapphire:()=>GO,sapphireTestnet:()=>KO,satoshiVM:()=>qO,satoshiVMTestnet:()=>JO,scroll:()=>YO,scrollSepolia:()=>XO,sei:()=>ZO,seiDevnet:()=>QO,seiTestnet:()=>ek,seismicDevnet:()=>$O,sepolia:()=>tk,shape:()=>rk,shapeSepolia:()=>ak,shardeum:()=>ok,shardeumSphinx:()=>sk,shibarium:()=>ck,shibariumTestnet:()=>lk,shiden:()=>uk,shimmer:()=>dk,shimmerTestnet:()=>fk,sidraChain:()=>pk,silicon:()=>mk,siliconSepolia:()=>hk,sixProtocol:()=>gk,skaleBlockBrawlers:()=>_k,skaleCalypso:()=>vk,skaleCalypsoTestnet:()=>yk,skaleCryptoBlades:()=>bk,skaleCryptoColosseum:()=>xk,skaleEuropa:()=>Sk,skaleEuropaTestnet:()=>Ck,skaleExorde:()=>wk,skaleHumanProtocol:()=>Tk,skaleNebula:()=>Ek,skaleNebulaTestnet:()=>Dk,skaleRazor:()=>Ok,skaleTitan:()=>kk,skaleTitanTestnet:()=>Ak,sketchpad:()=>jk,snax:()=>Nk,snaxTestnet:()=>Fk,somniaTestnet:()=>Ik,soneium:()=>Rk,soneiumMinato:()=>Bk,songbird:()=>Vk,songbirdTestnet:()=>Hk,sonic:()=>Uk,sonicBlazeTestnet:()=>Wk,sonicTestnet:()=>Gk,sophon:()=>Kk,sophonTestnet:()=>qk,sova:()=>Jk,sovaSepolia:()=>Yk,spicy:()=>Xk,statusNetworkSepolia:()=>Zk,statusSepolia:()=>Zk,step:()=>Qk,story:()=>$k,storyAeneid:()=>eA,storyOdyssey:()=>tA,storyTestnet:()=>nA,stratis:()=>rA,superlumio:()=>iA,superposition:()=>aA,superseed:()=>sA,superseedSepolia:()=>lA,surgeTestnet:()=>uA,swan:()=>dA,swanProximaTestnet:()=>fA,swanSaturnTestnet:()=>pA,swellchain:()=>mA,swellchainTestnet:()=>hA,swissdlt:()=>gA,syscoin:()=>_A,syscoinTestnet:()=>vA,tac:()=>yA,tacSPB:()=>bA,taiko:()=>xA,taikoHekla:()=>SA,taikoJolnir:()=>CA,taikoKatla:()=>wA,taikoTestnetSepolia:()=>TA,taraxa:()=>EA,taraxaTestnet:()=>DA,teaSepolia:()=>OA,telcoinTestnet:()=>kA,telos:()=>AA,telosTestnet:()=>jA,tenet:()=>MA,ternoa:()=>NA,thaiChain:()=>PA,that:()=>FA,theta:()=>IA,thetaTestnet:()=>LA,thunderCore:()=>RA,thunderTestnet:()=>zA,tiktrixTestnet:()=>BA,tomb:()=>VA,treasure:()=>HA,treasureTopaz:()=>UA,tron:()=>WA,tronNile:()=>GA,tronShasta:()=>KA,ubiq:()=>qA,ultra:()=>JA,ultraTestnet:()=>YA,ultron:()=>XA,ultronTestnet:()=>ZA,unichain:()=>$A,unichainSepolia:()=>tj,unique:()=>nj,uniqueOpal:()=>rj,uniqueQuartz:()=>ij,unreal:()=>aj,vana:()=>oj,vanaMoksha:()=>sj,vanar:()=>cj,vechain:()=>lj,velas:()=>uj,viction:()=>dj,victionTestnet:()=>fj,vision:()=>pj,visionTestnet:()=>mj,wanchain:()=>hj,wanchainTestnet:()=>gj,weaveVMAlphanet:()=>_j,wemix:()=>vj,wemixTestnet:()=>yj,westendAssetHub:()=>bj,whitechain:()=>xj,whitechainTestnet:()=>Sj,wmcTestnet:()=>Cj,worldLand:()=>Oj,worldchain:()=>Tj,worldchainSepolia:()=>Dj,x1Testnet:()=>Pj,xLayer:()=>Nj,xLayerTestnet:()=>Pj,xai:()=>kj,xaiTestnet:()=>Aj,xdc:()=>jj,xdcTestnet:()=>Mj,xphereMainnet:()=>Fj,xphereTestnet:()=>Ij,xrOne:()=>Lj,xrSepolia:()=>Bj,xrplevmDevnet:()=>Rj,xrplevmTestnet:()=>zj,yooldoVerse:()=>Vj,yooldoVerseTestnet:()=>Hj,zenchainTestnet:()=>Uj,zeniq:()=>Wj,zeroG:()=>zv,zeroGGalileoTestnet:()=>Bv,zeroGMainnet:()=>Vv,zeroNetwork:()=>Gj,zetachain:()=>Kj,zetachainAthensTestnet:()=>qj,zhejiang:()=>Jj,zilliqa:()=>Yj,zilliqaTestnet:()=>Xj,zircuit:()=>Qj,zircuitGarfieldTestnet:()=>eM,zircuitTestnet:()=>nM,zkFair:()=>rM,zkFairTestnet:()=>iM,zkLinkNova:()=>aM,zkLinkNovaSepoliaTestnet:()=>oM,zkSync:()=>sM,zkSyncInMemoryNode:()=>cM,zkSyncLocalNode:()=>fM,zkSyncSepoliaTestnet:()=>pM,zksync:()=>sM,zksyncInMemoryNode:()=>cM,zksyncLocalCustomHyperchain:()=>lM,zksyncLocalHyperchain:()=>uM,zksyncLocalHyperchainL1:()=>dM,zksyncLocalNode:()=>fM,zksyncSepoliaTestnet:()=>pM,zora:()=>hM,zoraSepolia:()=>_M,zoraTestnet:()=>yM}),xM=c({arbitrum:()=>jy,arbitrumSepolia:()=>Py,base:()=>ib,baseSepolia:()=>ub,berachain:()=>gb,berachainBepolia:()=>_b,bsc:()=>qb,celo:()=>vx,gnosis:()=>HC,hoodi:()=>_w,katana:()=>_T,mainnet:()=>iE,optimism:()=>ED,optimismSepolia:()=>AD,polygon:()=>nO,sepolia:()=>tk});const SM=[ib,...Object.values(xM).filter(e=>e&&e.id!==ib.id)],CM=Oy;({...CM}),{...CM};var wM=u(s(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i`IntersectionObserver`in window&&`IntersectionObserverEntry`in window&&`intersectionRatio`in IntersectionObserverEntry.prototype&&`isVisible`in IntersectionObserverEntry.prototype;function aN(e={}){let{prefix:t=`[Porto]`}=e,n=new Set;return{error:sN(console.error,{prefix:t}),errorOnce:sN(console.error,{memo:n,prefix:t}),log:sN(console.log,{prefix:t}),logOnce:sN(console.log,{memo:n,prefix:t}),warn:sN(console.warn,{prefix:t}),warnOnce:sN(console.warn,{memo:n,prefix:t})}}const oN=aN();function sN(e,t={}){let{memo:n,prefix:r}=t;return(...t)=>{let i=t.join(` `);n?.has(i)||(n?.add(i),e(`${r} ${i}`))}}function cN(){let e=navigator.userAgent.toLowerCase();return e.includes(`safari`)&&!e.includes(`chrome`)}function lN(){let e=navigator.userAgent.toLowerCase();return(e.includes(`firefox`)||e.includes(`fxios`))&&!e.includes(`seamonkey`)}function uN(){return window.navigator?.userAgentData?.mobile?!0:navigator.maxTouchPoints>1||/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(navigator.userAgent)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(navigator.userAgent.slice(0,4))}function dN(){let e=()=>void 0,t=()=>void 0;return{promise:new Promise((n,r)=>{e=n,t=r}),reject:t,resolve:e}}function fN(e){if(Array.isArray(e))return e.map(fN);if(typeof e==`function`)return;if(typeof e!=`object`||!e)return e;if(Object.getPrototypeOf(e)!==Object.prototype)try{return structuredClone(e)}catch{return}let t={};for(let[n,r]of Object.entries(e))t[n]=fN(r);return t}function pN(e,t){let n=[],r=new Set;for(let i of e){let e=t(i);r.has(e)||(r.add(e),n.push(i))}return n}function mN(){return typeof globalThis<`u`&&`crypto`in globalThis?globalThis.crypto.randomUUID():crypto.randomUUID()}function hN(e,{enabled:t=!0,id:n}){if(!t||!n)return e();if(hN.cache.get(n))return hN.cache.get(n);let r=e().finally(()=>hN.cache.delete(n));return hN.cache.set(n,r),r}(function(e){e.cache=new Map})(hN||={});function gN(e){return e}function _N(e,t={}){let{targetOrigin:n}=t,r=new Map;return gN({destroy(){for(let t of r.values())e.removeEventListener(`message`,t)},on(t,i,a){function o(e){e.data.topic===t&&(a&&e.data.id!==a||n&&e.origin!==n||i(e.data.payload,e))}return e.addEventListener(`message`,o),r.set(t,o),()=>e.removeEventListener(`message`,o)},async send(t,r,i){let a=mN();return e.postMessage(fN({id:a,payload:r,topic:t}),i??n??`*`),{id:a,payload:r,topic:t}},async sendAsync(e,t,n){let{id:r}=await this.send(e,t,n);return new Promise(t=>this.on(e,t,r))}})}function vN(e){let{from:t,to:n,waitForReady:r=!1}=e,i=!1,a=dN();t.on(`ready`,a.resolve);let o=gN({destroy(){t.destroy(),n.destroy(),i&&a.reject()},on(e,n,r){return t.on(e,n,r)},async send(e,t){return i=!0,r&&await a.promise.finally(()=>i=!1),n.send(e,t)},async sendAsync(e,t){return i=!0,r&&await a.promise.finally(()=>i=!1),n.sendAsync(e,t)}});return{...o,ready(e){o.send(`ready`,e)},waitForReady(){return a.promise}}}const yN={local:`http://localhost:5175/dialog/`,prod:`https://id.porto.sh/dialog`,stg:`https://stg.id.porto.sh/dialog`};function bN(e){return e}function xN(e={}){let{skipProtocolCheck:t,skipUnsupported:n}=e,r=e=>!n&&cN()&&e?.some(e=>[`wallet_connect`,`eth_requestAccounts`].includes(e.method));return typeof window>`u`?CN():bN({name:`iframe`,setup(e){let{host:n,internal:i,theme:a,themeController:o}=e,{store:s}=i,c=SN().setup(e),l=!1,u=new URL(n),d=document.createElement(`dialog`);d.dataset.porto=``,d.setAttribute(`role`,`dialog`),d.setAttribute(`aria-closed`,`true`),d.setAttribute(`aria-label`,`Porto Wallet`),d.setAttribute(`hidden`,`until-found`),Object.assign(d.style,{background:`transparent`,border:`0`,outline:`0`,padding:`0`,position:`fixed`}),document.body.appendChild(d);let f=document.createElement(`iframe`);f.setAttribute(`data-testid`,`porto`);let p=[`payment`,`publickey-credentials-get ${u.origin}`,`publickey-credentials-create ${u.origin}`];lN()||p.push(`clipboard-write`),f.setAttribute(`allow`,p.join(`; `)),f.setAttribute(`tabindex`,`0`),f.setAttribute(`sandbox`,`allow-forms allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox`),f.setAttribute(`src`,kN(n)),f.setAttribute(`title`,`Porto`),Object.assign(f.style,{backgroundColor:`transparent`,border:`0`,colorScheme:`light dark`,height:`100%`,left:`0`,position:`fixed`,top:`0`,width:`100%`});let m=document.createElement(`style`);m.innerHTML=` + dialog[data-porto]::backdrop { + background: transparent!important; + } + `,d.appendChild(m),d.appendChild(f);let h=vN({from:_N(window,{targetOrigin:u.origin}),to:_N(f.contentWindow,{targetOrigin:u.origin}),waitForReady:!0});o?._setup(h,!0);let g=window.matchMedia(`(max-width: 460px)`),_=()=>{h.send(`__internal`,{type:`resize`,width:g.matches?460:461})};g.addEventListener(`change`,_),h.on(`ready`,t=>{let n=e.internal.store.getState().chainIds.filter(e=>t.chainIds.includes(e));n.length===0&&(n=t.chainIds),s.setState(e=>({...e,chainIds:n})),h.send(`__internal`,{chainIds:n,mode:`iframe`,referrer:EN(),theme:a,type:`init`}),_()}),h.on(`rpc-response`,e=>{r([e._request])&&(f.src=f.src),ON(s,e)}),h.on(`__internal`,e=>{e.type===`switch`&&e.mode===`popup`&&(c.open(),c.syncRequests(s.getState().requestQueue))});let v=null,y=null,b=()=>DN(s),x=e=>{e.key===`Escape`&&DN(s)},S=new MutationObserver(e=>{for(let t of e){if(t.type!==`attributes`)continue;let e=t.attributeName;e&&e===`inert`&&d.removeAttribute(e)}});S.observe(d,{attributeOldValue:!0,attributes:!0});let C=!1,w=()=>{C&&(C=!1,d.removeEventListener(`click`,b),document.removeEventListener(`keydown`,x),d.style.pointerEvents=`none`,y?.focus(),y=null,Object.assign(document.body.style,v??``),document.body.style.overflow=v?.overflow??``)},ee=()=>{C||(C=!0,d.addEventListener(`click`,b),document.addEventListener(`keydown`,x),f.focus(),d.style.pointerEvents=`auto`,v=Object.assign({},document.body.style),document.body.style.overflow=`hidden`)},te=!1,ne=()=>{te||(te=!0,document.activeElement instanceof HTMLElement&&(y=document.activeElement),d.removeAttribute(`hidden`),d.removeAttribute(`aria-closed`),d.showModal())},re=()=>{if(te){te=!1,d.setAttribute(`hidden`,`true`),d.setAttribute(`aria-closed`,`true`),d.close();for(let e of d.parentNode?Array.from(d.parentNode.children):[])e!==d&&e.hasAttribute(`inert`)&&e.removeAttribute(`inert`)}};return{close(){c.close(),l=!1,h.send(`__internal`,{mode:`iframe`,referrer:EN(),type:`init`}),re(),w()},destroy(){c.close(),l=!1,w(),re(),c.destroy(),h.destroy(),d.remove(),S.disconnect(),g.removeEventListener(`change`,_)},open(){l||(l=!0,ne(),ee(),h.send(`__internal`,{mode:`iframe`,referrer:EN(),type:`init`}))},async secure(){let{trustedHosts:e}=await h.waitForReady(),n=(()=>{if(t)return!0;let e=window.location.protocol.startsWith(`https`);return e||oN.warnOnce(`Detected insecure protocol (HTTP).`,`\n\nThe Porto iframe is not supported on HTTP origins (${window.location.origin})`,`due to lack of WebAuthn support.`,`See https://porto.sh/sdk#secure-origins-https for more information.`),e})(),r=iN(),i=!!e?.includes(window.location.hostname),a=!!(r||i);return a||oN.warnOnce([`Warning: Browser does not support IntersectionObserver v2 or host "${u.hostname}" is not trusted by Porto.`,`This may result in the dialog falling back to a popup.`,``,`Add "${u.hostname}" to the trusted hosts list to enable iframe dialog: https://github.com/ithacaxyz/porto/edit/main/src/trusted-hosts.ts`].join(` +`)),{frame:a,host:i,protocol:n}},async syncRequests(e){let{methodPolicies:t}=await h.waitForReady(),n=await this.secure(),i=e?.every(e=>t?.find(t=>t.method===e.request.method)?.modes?.headless===!0),a=r(e.map(e=>e.request));if(!i&&(a||!n.protocol||!n.frame))c.syncRequests(e);else{let n=e.some(e=>TN(e.request,{methodPolicies:t,targetOrigin:u.origin}));!l&&n&&this.open(),h.send(`rpc-requests`,e)}}}},supportsHeadless:!0})}function SN(e={}){if(typeof window>`u`)return CN();let{type:t=`auto`,size:n=wN}=e;return bN({name:`popup`,setup(e){let{host:r,internal:i,themeController:a}=e,{store:o}=i,s=new URL(r),c=null,l=t===`page`||t===`auto`&&uN()?`page`:`popup`;function u(){c&&DN(o)}let d=(()=>{let e=setInterval(()=>{c?.closed&&DN(o)},100);return()=>clearInterval(e)})(),f;return a?._setup(null,!0),{close(){c&&=(c.close(),null)},destroy(){this.close(),window.removeEventListener(`focus`,u),f?.destroy(),d()},open(){if(l===`popup`){let e=(window.innerWidth-n.width)/2+window.screenX,t=window.screenY+100;c=window.open(kN(r),`_blank`,`width=${n.width},height=${n.height},left=${e},top=${t}`)}else c=window.open(kN(r),`_blank`);if(!c)throw Error(`Failed to open popup`);f=vN({from:_N(window,{targetOrigin:s.origin}),to:_N(c,{targetOrigin:s.origin}),waitForReady:!0}),a?._setup(f,!1),f.send(`__internal`,{mode:l===`page`?`page`:`popup`,referrer:EN(),theme:a?.getTheme()??e.theme,type:`init`}),f.on(`rpc-response`,e=>ON(o,e)),window.removeEventListener(`focus`,u),window.addEventListener(`focus`,u)},async secure(){return{frame:!0,host:!0,protocol:!0}},async syncRequests(e){e.some(e=>TN(e.request))&&((!c||c.closed)&&this.open(),c?.focus()),f?.send(`rpc-requests`,e)}}},supportsHeadless:!1})}function CN(){return bN({name:`noop`,setup(){return{close(){},destroy(){},open(){},async secure(){return{frame:!0,host:!0,protocol:!0}},async syncRequests(){}}},supportsHeadless:!0})}const wN={height:282,width:360};function TN(e,t={}){let{methodPolicies:n,targetOrigin:r}=t,i=n?.find(t=>t.method===e.method);return i&&i.modes?.headless?!!(typeof i.modes.headless==`object`&&i.modes.headless.sameOrigin&&r!==window.location.origin):!0}function EN(){return{icon:(()=>{let e=document.querySelector(`link[rel="icon"][media="(prefers-color-scheme: dark)"]`)?.href,t=document.querySelector(`link[rel="icon"][media="(prefers-color-scheme: light)"]`)?.href??document.querySelector(`link[rel="icon"]`)?.href;return e&&t&&e!==t?{dark:e,light:t}:window.matchMedia(`(prefers-color-scheme: dark)`).matches?e:t})(),title:document.title}}function DN(e){e.setState(e=>({...e,requestQueue:e.requestQueue.map(e=>({account:e.account,error:new VM,request:e.request,status:`error`}))}))}function ON(e,t){e.setState(e=>({...e,requestQueue:e.requestQueue.map(e=>e.request.id===t.id?t.error?{account:e.account,error:t.error,request:e.request,status:`error`}:{account:e.account,request:e.request,result:t.result,status:`success`}:e)}))}function kN(e){let t=new URL(e),n=new URLSearchParams(window.location.search);for(let[e,r]of n.entries())e.startsWith(`porto.`)&&t.searchParams.set(e.slice(6),r);return t.toString()}function AN(e){let t=new CustomEvent(`eip6963:announceProvider`,{detail:Object.freeze(e)});window.dispatchEvent(t);let n=()=>window.dispatchEvent(t);return window.addEventListener(`eip6963:requestProvider`,n),()=>window.removeEventListener(`eip6963:requestProvider`,n)}Object.freeze({status:`aborted`});function B(e,t,n){function r(n,r){var i;for(let a in Object.defineProperty(n,`_zod`,{value:n._zod??{},enumerable:!1}),(i=n._zod).traits??(i.traits=new Set),n._zod.traits.add(e),t(n,r),o.prototype)a in n||Object.defineProperty(n,a,{value:o.prototype[a].bind(n)});n._zod.constr=o,n._zod.def=r}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,`name`,{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,`init`,{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,`name`,{value:e}),o}var jN=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}};const MN={};function NN(e){return e&&Object.assign(MN,e),MN}function PN(e,t){return typeof t==`bigint`?t.toString():t}function FN(e){return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}throw Error(`cached value already set`)}}}function IN(e){return e==null}function LN(e){let t=e.startsWith(`^`)?1:0,n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}var RN=Symbol(`evaluating`);function zN(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==RN)return r===void 0&&(r=RN,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function BN(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function VN(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}const HN=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function UN(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function WN(e){if(UN(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(UN(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}const GN=new Set([`string`,`number`,`bigint`,`boolean`,`symbol`,`undefined`]);function KN(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function qN(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function JN(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function YN(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}-Number.MAX_VALUE,Number.MAX_VALUE;function XN(e,t){let n=e._zod.def,r=VN(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return BN(this,`shape`,e),e},checks:[]});return qN(e,r)}function ZN(e,t){let n=e._zod.def,r=VN(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return BN(this,`shape`,r),r},checks:[]});return qN(e,r)}function QN(e,t,n){let r=VN(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return BN(this,`shape`,i),i},checks:[]});return qN(t,r)}function $N(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function tP(e){return typeof e==`string`?e:e?.message}function nP(e,t,n){let r={...e,path:e.path??[]};return e.message||(r.message=tP(e.inst?._zod.def?.error?.(e))??tP(t?.error?.(e))??tP(n.customError?.(e))??tP(n.localeError?.(e))??`Invalid input`),delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function rP(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}var iP=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,`_zod`,{value:e._zod,enumerable:!1}),Object.defineProperty(e,`issues`,{value:t,enumerable:!1}),e.message=JSON.stringify(t,PN,2),Object.defineProperty(e,`toString`,{value:()=>e.message,enumerable:!1})};const aP=B(`$ZodError`,iP),oP=B(`$ZodError`,iP,{Parent:Error}),sP=e=>(t,n,r,i)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new jN;if(o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>nP(e,a,NN())));throw HN(t,i?.callee),t}return o.value},cP=sP(oP),lP=(e=>async(t,n,r,i)=>{let a=r?Object.assign(r,{async:!0}):{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>nP(e,a,NN())));throw HN(t,i?.callee),t}return o.value})(oP),uP=(e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new jN;return a.issues.length?{success:!1,error:new(e??aP)(a.issues.map(e=>nP(e,i,NN())))}:{success:!0,data:a.value}})(oP),dP=(e=>async(t,n,r)=>{let i=r?Object.assign(r,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>nP(e,i,NN())))}:{success:!0,data:a.value}})(oP),fP=(e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return sP(e)(t,n,i)})(oP),pP=(e=>(t,n,r)=>sP(e)(t,n,r))(oP),mP=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},hP=/^-?\d+n?$/,gP=/^-?\d+(?:\.\d+)?/,_P=/^(?:true|false)$/i;var vP=/^null$/i,yP=/^undefined$/i;const bP=B(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])});var xP={number:`number`,bigint:`bigint`,object:`date`};const SP=B(`$ZodCheckGreaterThan`,(e,t)=>{bP.init(e,t);let n=xP[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),CP=B(`$ZodCheckMinLength`,(e,t)=>{var n;bP.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!IN(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=rP(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),wP=B(`$ZodCheckStringFormat`,(e,t)=>{var n,r;bP.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),TP=B(`$ZodCheckRegex`,(e,t)=>{wP.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),EP={major:4,minor:1,patch:12},DP=B(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=EP;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=$N(e),i;for(let a of t){if(a._zod.def.when){if(!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new jN;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=$N(e,t))});else{if(e.issues.length===t)continue;r||=$N(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if($N(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new jN;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new jN;return o.then(e=>t(e,r,a))}return t(o,r,a)}}e[`~standard`]={validate:t=>{try{let n=uP(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return dP(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}}),OP=B(`$ZodString`,(e,t)=>{DP.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??mP(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),kP=B(`$ZodNumber`,(e,t)=>{DP.init(e,t),e._zod.pattern=e._zod.bag.pattern??gP,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),AP=B(`$ZodBoolean`,(e,t)=>{DP.init(e,t),e._zod.pattern=_P,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),jP=B(`$ZodBigInt`,(e,t)=>{DP.init(e,t),e._zod.pattern=hP,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=BigInt(n.value)}catch{}return typeof n.value==`bigint`||n.issues.push({expected:`bigint`,code:`invalid_type`,input:n.value,inst:e}),n}}),MP=B(`$ZodUndefined`,(e,t)=>{DP.init(e,t),e._zod.pattern=yP,e._zod.values=new Set([void 0]),e._zod.optin=`optional`,e._zod.optout=`optional`,e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`undefined`,code:`invalid_type`,input:r,inst:e}),t}}),NP=B(`$ZodNull`,(e,t)=>{DP.init(e,t),e._zod.pattern=vP,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),PP=B(`$ZodAny`,(e,t)=>{DP.init(e,t),e._zod.parse=e=>e}),FP=B(`$ZodUnknown`,(e,t)=>{DP.init(e,t),e._zod.parse=e=>e}),IP=B(`$ZodDate`,(e,t)=>{DP.init(e,t),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=new Date(n.value)}catch{}let i=n.value,a=i instanceof Date;return a&&!Number.isNaN(i.getTime())||n.issues.push({expected:`date`,code:`invalid_type`,input:i,...a?{received:`Invalid Date`}:{},inst:e}),n}});function LP(e,t,n){e.issues.length&&t.issues.push(...eP(n,e.issues)),t.value[n]=e.value}const RP=B(`$ZodArray`,(e,t)=>{DP.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;eLP(t,n,e))):LP(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function zP(e,t,n,r){e.issues.length&&t.issues.push(...eP(n,e.issues)),e.value===void 0?n in r&&(t.value[n]=void 0):t.value[n]=e.value}function BP(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=YN(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function VP(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type;for(let i of Object.keys(t)){if(s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>zP(e,n,i,t))):zP(a,n,i,t)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}const HP=B(`$ZodObject`,(e,t)=>{if(DP.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,`shape`,{get:()=>{let n={...e};return Object.defineProperty(t,`shape`,{value:n}),n}})}let n=FN(()=>BP(t));zN(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=UN,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e]._zod.run({value:s[e],issues:[]},o);n instanceof Promise?c.push(n.then(n=>zP(n,t,e,s))):zP(n,t,e,s)}return i?VP(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}});function UP(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!$N(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>nP(e,r,NN())))}),t)}const WP=B(`$ZodUnion`,(e,t)=>{DP.init(e,t),zN(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),zN(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),zN(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),zN(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>LN(e.source)).join(`|`)})$`)}});let n=t.options.length===1,r=t.options[0]._zod.run;e._zod.parse=(i,a)=>{if(n)return r(i,a);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:i.value,issues:[]},a);if(t instanceof Promise)s.push(t),o=!0;else{if(t.issues.length===0)return t;s.push(t)}}return o?Promise.all(s).then(t=>UP(t,i,e,a)):UP(s,i,e,a)}}),GP=B(`$ZodDiscriminatedUnion`,(e,t)=>{WP.init(e,t);let n=e._zod.parse;zN(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=FN(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!UN(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,input:o,path:[t.discriminator],inst:e}),i)}}),KP=B(`$ZodTuple`,(e,t)=>{DP.init(e,t);let n=t.items,r=n.length-[...n].reverse().findIndex(e=>e._zod.optin!==`optional`);e._zod.parse=(i,a)=>{let o=i.value;if(!Array.isArray(o))return i.issues.push({input:o,inst:e,expected:`tuple`,code:`invalid_type`}),i;i.value=[];let s=[];if(!t.rest){let t=o.length>n.length,a=o.length=o.length&&c>=r)continue;let t=e._zod.run({value:o[c],issues:[]},a);t instanceof Promise?s.push(t.then(e=>qP(e,i,c))):qP(t,i,c)}if(t.rest){let e=o.slice(n.length);for(let n of e){c++;let e=t.rest._zod.run({value:n,issues:[]},a);e instanceof Promise?s.push(e.then(e=>qP(e,i,c))):qP(e,i,c)}}return s.length?Promise.all(s).then(()=>i):i}});function qP(e,t,n){e.issues.length&&t.issues.push(...eP(n,e.issues)),t.value[n]=e.value}const JP=B(`$ZodRecord`,(e,t)=>{DP.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!WN(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[];if(t.keyType._zod.values){let o=t.keyType._zod.values;n.value={};for(let e of o)if(typeof e==`string`||typeof e==`number`||typeof e==`symbol`){let o=t.valueType._zod.run({value:i[e],issues:[]},r);o instanceof Promise?a.push(o.then(t=>{t.issues.length&&n.issues.push(...eP(e,t.issues)),n.value[e]=t.value})):(o.issues.length&&n.issues.push(...eP(e,o.issues)),n.value[e]=o.value)}let s;for(let e in i)o.has(e)||(s??=[],s.push(e));s&&s.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:s})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`)continue;let s=t.keyType._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){n.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>nP(e,r,NN())),input:o,path:[o],inst:e}),n.value[s.value]=s.value;continue}let c=t.valueType._zod.run({value:i[o],issues:[]},r);c instanceof Promise?a.push(c.then(e=>{e.issues.length&&n.issues.push(...eP(o,e.issues)),n.value[s.value]=e.value})):(c.issues.length&&n.issues.push(...eP(o,c.issues)),n.value[s.value]=c.value)}}return a.length?Promise.all(a).then(()=>n):n}}),YP=B(`$ZodLiteral`,(e,t)=>{if(DP.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);e._zod.values=new Set(t.values),e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?KN(e):e?KN(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(n,r)=>{let i=n.value;return e._zod.values.has(i)||n.issues.push({code:`invalid_value`,values:t.values,input:i,inst:e}),n}});function XP(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const ZP=B(`$ZodOptional`,(e,t)=>{DP.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,zN(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),zN(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${LN(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(t=>XP(t,e.value)):XP(r,e.value)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),QP=B(`$ZodNullable`,(e,t)=>{DP.init(e,t),zN(e._zod,`optin`,()=>t.innerType._zod.optin),zN(e._zod,`optout`,()=>t.innerType._zod.optout),zN(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${LN(e.source)}|null)$`):void 0}),zN(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),$P=B(`$ZodPipe`,(e,t)=>{DP.init(e,t),zN(e._zod,`values`,()=>t.in._zod.values),zN(e._zod,`optin`,()=>t.in._zod.optin),zN(e._zod,`optout`,()=>t.out._zod.optout),zN(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>eF(e,t.in,n)):eF(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>eF(e,t.out,n)):eF(r,t.out,n)}});function eF(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const tF=B(`$ZodCodec`,(e,t)=>{DP.init(e,t),zN(e._zod,`values`,()=>t.in._zod.values),zN(e._zod,`optin`,()=>t.in._zod.optin),zN(e._zod,`optout`,()=>t.out._zod.optout),zN(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if((n.direction||`forward`)===`forward`){let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>nF(e,t,n)):nF(r,t,n)}else{let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>nF(e,t,n)):nF(r,t,n)}}});function nF(e,t,n){if(e.issues.length)return e.aborted=!0,e;if((n.direction||`forward`)===`forward`){let r=t.transform(e.value,e);return r instanceof Promise?r.then(r=>rF(e,r,t.out,n)):rF(e,r,t.out,n)}else{let r=t.reverseTransform(e.value,e);return r instanceof Promise?r.then(r=>rF(e,r,t.in,n)):rF(e,r,t.in,n)}}function rF(e,t,n,r){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:t,issues:e.issues},r)}const iF=B(`$ZodReadonly`,(e,t)=>{DP.init(e,t),zN(e._zod,`propValues`,()=>t.innerType._zod.propValues),zN(e._zod,`values`,()=>t.innerType._zod.values),zN(e._zod,`optin`,()=>t.innerType._zod.optin),zN(e._zod,`optout`,()=>t.innerType._zod.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(aF):aF(r)}});function aF(e){return e.value=Object.freeze(e.value),e}const oF=B(`$ZodTemplateLiteral`,(e,t)=>{DP.init(e,t);let n=[];for(let e of t.parts)if(typeof e==`object`&&e){if(!e._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...e._zod.traits].shift()}`);let t=e._zod.pattern instanceof RegExp?e._zod.pattern.source:e._zod.pattern;if(!t)throw Error(`Invalid template literal part: ${e._zod.traits}`);let r=t.startsWith(`^`)?1:0,i=t.endsWith(`$`)?t.length-1:t.length;n.push(t.slice(r,i))}else if(e===null||GN.has(typeof e))n.push(KN(`${e}`));else throw Error(`Invalid template literal part: ${e}`);e._zod.pattern=RegExp(`^${n.join(``)}$`),e._zod.parse=(n,r)=>typeof n.value==`string`?(e._zod.pattern.lastIndex=0,e._zod.pattern.test(n.value)||n.issues.push({input:n.value,inst:e,code:`invalid_format`,format:t.format??`template_literal`,pattern:e._zod.pattern.source}),n):(n.issues.push({input:n.value,inst:e,expected:`template_literal`,code:`invalid_type`}),n)});function sF(e,t){return new e({type:`string`,...JN(t)})}function cF(e,t){return new e({type:`number`,checks:[],...JN(t)})}function lF(e,t){return new e({type:`boolean`,...JN(t)})}function uF(e,t){return new e({type:`bigint`,...JN(t)})}function dF(e,t){return new e({type:`undefined`,...JN(t)})}function fF(e,t){return new e({type:`null`,...JN(t)})}function pF(e){return new e({type:`any`})}function mF(e){return new e({type:`unknown`})}function hF(e,t){return new e({type:`date`,...JN(t)})}function gF(e,t){return new SP({check:`greater_than`,...JN(t),value:e,inclusive:!0})}function _F(e,t){return new CP({check:`min_length`,...JN(t),minimum:e})}function vF(e,t){return new TP({check:`string_format`,format:`regex`,...JN(t),pattern:e})}const yF=B(`ZodMiniType`,(e,t)=>{if(!e._zod)throw Error(`Uninitialized schema in ZodMiniType.`);DP.init(e,t),e.def=t,e.type=t.type,e.parse=(t,n)=>cP(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>uP(e,t,n),e.parseAsync=async(t,n)=>lP(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>dP(e,t,n),e.check=(...n)=>e.clone({...t,checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),e.clone=(t,n)=>qN(e,t,n),e.brand=()=>e,e.register=((t,n)=>(t.add(e,n),e))}),bF=B(`ZodMiniString`,(e,t)=>{OP.init(e,t),yF.init(e,t)});function V(e){return sF(bF,e)}const xF=B(`ZodMiniNumber`,(e,t)=>{kP.init(e,t),yF.init(e,t)});function H(e){return cF(xF,e)}const SF=B(`ZodMiniBoolean`,(e,t)=>{AP.init(e,t),yF.init(e,t)});function CF(e){return lF(SF,e)}const wF=B(`ZodMiniBigInt`,(e,t)=>{jP.init(e,t),yF.init(e,t)});function TF(e){return uF(wF,e)}const EF=B(`ZodMiniUndefined`,(e,t)=>{MP.init(e,t),yF.init(e,t)});function DF(e){return dF(EF,e)}const OF=B(`ZodMiniNull`,(e,t)=>{NP.init(e,t),yF.init(e,t)});function kF(e){return fF(OF,e)}const AF=B(`ZodMiniAny`,(e,t)=>{PP.init(e,t),yF.init(e,t)});function jF(){return pF(AF)}const MF=B(`ZodMiniUnknown`,(e,t)=>{FP.init(e,t),yF.init(e,t)});function NF(){return mF(MF)}const PF=B(`ZodMiniDate`,(e,t)=>{IP.init(e,t),yF.init(e,t)});function FF(e){return hF(PF,e)}const IF=B(`ZodMiniArray`,(e,t)=>{RP.init(e,t),yF.init(e,t)});function U(e,t){return new IF({type:`array`,element:e,...JN(t)})}const LF=B(`ZodMiniObject`,(e,t)=>{HP.init(e,t),yF.init(e,t),zN(e,`shape`,()=>t.shape)});function W(e,t){let n={type:`object`,shape:e??{},...JN(t)};return new LF(n)}function RF(e,t){return XN(e,t)}function zF(e,t){return ZN(e,t)}function BF(e,t){return QN(JF,e,t)}const VF=B(`ZodMiniUnion`,(e,t)=>{WP.init(e,t),yF.init(e,t)});function G(e,t){return new VF({type:`union`,options:e,...JN(t)})}const HF=B(`ZodMiniDiscriminatedUnion`,(e,t)=>{GP.init(e,t),yF.init(e,t)});function UF(e,t,n){return new HF({type:`union`,options:t,discriminator:e,...JN(n)})}const WF=B(`ZodMiniTuple`,(e,t)=>{KP.init(e,t),yF.init(e,t)});function K(e,t,n){let r=t instanceof DP;return new WF({type:`tuple`,items:e,rest:r?t:null,...JN(r?n:t)})}const GF=B(`ZodMiniRecord`,(e,t)=>{JP.init(e,t),yF.init(e,t)});function KF(e,t,n){return new GF({type:`record`,keyType:e,valueType:t,...JN(n)})}const qF=B(`ZodMiniLiteral`,(e,t)=>{YP.init(e,t),yF.init(e,t)});function q(e,t){return new qF({type:`literal`,values:Array.isArray(e)?e:[e],...JN(t)})}const JF=B(`ZodMiniOptional`,(e,t)=>{ZP.init(e,t),yF.init(e,t)});function J(e){return new JF({type:`optional`,innerType:e})}const YF=B(`ZodMiniNullable`,(e,t)=>{QP.init(e,t),yF.init(e,t)});function XF(e){return new YF({type:`nullable`,innerType:e})}function ZF(e){return J(XF(e))}const QF=B(`ZodMiniPipe`,(e,t)=>{$P.init(e,t),yF.init(e,t)}),$F=B(`ZodMiniCodec`,(e,t)=>{QF.init(e,t),tF.init(e,t)});function eI(e,t,n){return new $F({type:`pipe`,in:e,out:t,transform:n.decode,reverseTransform:n.encode})}const tI=B(`ZodMiniReadonly`,(e,t)=>{iF.init(e,t),yF.init(e,t)});function Y(e){return new tI({type:`readonly`,innerType:e})}const nI=B(`ZodMiniTemplateLiteral`,(e,t)=>{oF.init(e,t),yF.init(e,t)});function rI(e,t){return new nI({type:`template_literal`,parts:e,...JN(t)})}If(),qd(),ap(),ff();function iI(e){let{domain:t,message:n,primaryType:r,types:i}=e,a=(e,t)=>{for(let n of e){let{name:e,type:r}=n,o=t[e],s=r.match(dg);if(s&&(typeof o==`number`||typeof o==`bigint`)){let[,e,t]=s;L(o,{signed:e===`int`,size:Number.parseInt(t??``,10)/8})}if(r===`address`&&typeof o==`string`&&!ag(o))throw new og({address:o,cause:new sg});let c=r.match(ug);if(c){let[,e]=c;if(e&&Kf(o)!==Number.parseInt(e,10))throw new dI({expectedSize:Number.parseInt(e,10),givenSize:Kf(o)})}let l=i[r];l&&(yI(r),a(l,o))}};if(i.EIP712Domain&&t){if(typeof t!=`object`)throw new fI({domain:t});a(i.EIP712Domain,t)}if(r!==`EIP712Domain`)if(i[r])a(i[r],n);else throw new pI({primaryType:r,types:i})}function aI(e){let{domain:t={},message:n,primaryType:r}=e,i={EIP712Domain:sI(t),...e.types};iI({domain:t,message:n,primaryType:r,types:i});let a=[`0x19`,`0x01`];return t&&a.push(lI({domain:t,types:i})),r!==`EIP712Domain`&&a.push(uI({data:n,primaryType:r,types:i})),Rf(...a)}function oI(e){let{primaryType:t,types:n}=e,r=``,i=vI({primaryType:t,types:n});i.delete(t);let a=[t,...Array.from(i).sort()];for(let e of a)r+=`${e}(${(n[e]??[]).map(({name:e,type:t})=>`${t} ${e}`).join(`,`)})`;return r}function sI(e){return[typeof e?.name==`string`&&{name:`name`,type:`string`},e?.version&&{name:`version`,type:`string`},(typeof e?.chainId==`number`||typeof e?.chainId==`bigint`)&&{name:`chainId`,type:`uint256`},e?.verifyingContract&&{name:`verifyingContract`,type:`address`},e?.salt&&{name:`salt`,type:`bytes32`}].filter(Boolean)}function cI(e){return Vh(aI(e))}function lI(e){let{domain:t,types:n}=e;return uI({data:t,primaryType:`EIP712Domain`,types:{...n,EIP712Domain:n?.EIP712Domain||sI(t)}})}function uI(e){let{data:t,primaryType:n,types:r}=e,i=hI({data:t,primaryType:n,types:r});return Vh(i)}var dI=class extends F{constructor({expectedSize:e,givenSize:t}){super(`Expected bytes${e}, got bytes${t}.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.BytesSizeMismatchError`})}},fI=class extends F{constructor({domain:e}){super(`Invalid domain "${uf(e)}".`,{metaMessages:[`Must be a valid EIP-712 domain.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.InvalidDomainError`})}},pI=class extends F{constructor({primaryType:e,types:t}){super(`Invalid primary type \`${e}\` must be one of \`${JSON.stringify(Object.keys(t))}\`.`,{metaMessages:["Check that the primary type is a key in `types`."]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.InvalidPrimaryTypeError`})}},mI=class extends F{constructor({type:e}){super(`Struct type "${e}" is invalid.`,{metaMessages:[`Struct type must not be a Solidity type.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.InvalidStructTypeError`})}};function hI(e){let{data:t,primaryType:n,types:r}=e,i=[{type:`bytes32`}],a=[gI({primaryType:n,types:r})];for(let e of r[n]??[]){let[n,o]=_I({types:r,name:e.name,type:e.type,value:t[e.name]});i.push(n),a.push(o)}return Vg(i,a)}function gI(e){let{primaryType:t,types:n}=e,r=Hf(oI({primaryType:t,types:n}));return Vh(r)}function _I(e){let{types:t,name:n,type:r,value:i}=e;if(t[r]!==void 0)return[{type:`bytes32`},Vh(hI({data:i,primaryType:r,types:t}))];if(r===`bytes`)return i=`0x${(i.length%2?`0`:``)+i.slice(2)}`,[{type:`bytes32`},Vh(i,{as:`Hex`})];if(r===`string`)return[{type:`bytes32`},Vh(_f(i),{as:`Hex`})];if(r.lastIndexOf(`]`)===r.length-1){let e=r.slice(0,r.lastIndexOf(`[`)),a=i.map(r=>_I({name:n,type:e,types:t,value:r}));return[{type:`bytes32`},Vh(Vg(a.map(([e])=>e),a.map(([,e])=>e)))]}return[{type:r},i]}function vI(e,t=new Set){let{primaryType:n,types:r}=e,i=n.match(/^\w*/u)?.[0];if(t.has(i)||r[i]===void 0)return t;t.add(i);for(let e of r[i])vI({primaryType:e.type,types:r},t);return t}function yI(e){if(e===`address`||e===`bool`||e===`string`||e.startsWith(`bytes`)||e.startsWith(`uint`)||e.startsWith(`int`))throw new mI({type:e})}pi(),Ci();function bI(e){if(typeof e==`string`){if(!bi(e,{strict:!1}))throw new fi({address:e});return{address:e,type:`json-rpc`}}if(!bi(e.address,{strict:!1}))throw new fi({address:e.address});return{address:e.address,nonceManager:e.nonceManager,sign:e.sign,signAuthorization:e.signAuthorization,signMessage:e.signMessage,signTransaction:e.signTransaction,signTypedData:e.signTypedData,source:`custom`,type:`local`}}Fs(),xl(),Vc();var xI=kc(BigInt(`0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff`)),SI=xI.create(BigInt(`-3`)),CI=BigInt(`0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b`);const wI=bl({a:SI,b:CI,Fp:xI,n:BigInt(`0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551`),Gx:BigInt(`0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296`),Gy:BigInt(`0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5`),h:BigInt(1),lowS:!1},Ms);var TI=kc(BigInt(`0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff`)),EI=TI.create(BigInt(`-3`)),DI=BigInt(`0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef`);bl({a:EI,b:DI,Fp:TI,n:BigInt(`0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973`),Gx:BigInt(`0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7`),Gy:BigInt(`0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f`),h:BigInt(1),lowS:!1},Ps);var OI=kc(BigInt(`0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`)),kI=OI.create(BigInt(`-3`)),AI=BigInt(`0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00`);bl({a:kI,b:AI,Fp:OI,n:BigInt(`0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409`),Gx:BigInt(`0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66`),Gy:BigInt(`0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650`),h:BigInt(1),lowS:!1,allowedPrivateKeyLengths:[130,131,132]},Ns);const jI=wI,MI=wI;If(),ap();function NI(e){let{privateKey:t}=e,n=MI.ProjectivePoint.fromPrivateKey(typeof t==`string`?t.slice(2):Vf(t).slice(2));return Wh(n)}function PI(e={}){let{as:t=`Hex`}=e,n=MI.utils.randomPrivateKey();return t===`Hex`?Vf(n):n}function FI(e){let{extraEntropy:t=!1,hash:n,payload:r,privateKey:i}=e,{r:a,s:o,recovery:s}=MI.sign(r instanceof Uint8Array?r:gf(r),i instanceof Uint8Array?i:gf(i),{extraEntropy:typeof t==`boolean`?t:zf(t).slice(2),lowS:!0,...n?{prehash:!0}:{}});return{r:a,s:o,yParity:s}}qd();function II(e,t=0){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new LI({value:e});let[n=``,r=`0`]=e.split(`.`),i=n.startsWith(`-`);if(i&&(n=n.slice(1)),r=r.replace(/(0+)$/,``),t===0)Math.round(Number(`.${r}`))===1&&(n=`${BigInt(n)+1n}`),r=``;else if(r.length>t){let[e,i,a]=[r.slice(0,t-1),r.slice(t-1,t),r.slice(t)],o=Math.round(Number(`${i}.${a}`));r=o>9?`${BigInt(e)+BigInt(1)}0`.padStart(e.length+1,`0`):`${e}${o}`,r.length>t&&(r=r.slice(1),n=`${BigInt(n)+1n}`),r=r.slice(0,t)}else r=r.padEnd(t,`0`);return BigInt(`${i?`-`:``}${n}${r}`)}var LI=class extends F{constructor({value:e}){super(`Value \`${e}\` is not a valid decimal number.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Value.InvalidDecimalNumberError`})}};If();var RI=new TextEncoder,zI=new TextDecoder,BI=Object.fromEntries(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`).map((e,t)=>[t,e.charCodeAt(0)])),VI={...Object.fromEntries(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`).map((e,t)=>[e.charCodeAt(0),t])),61:0,45:62,95:63};function HI(e,t={}){let{pad:n=!0,url:r=!1}=t,i=new Uint8Array(Math.ceil(e.length/3)*4);for(let t=0,n=0;n>18],i[t+1]=BI[r>>12&63],i[t+2]=BI[r>>6&63],i[t+3]=BI[r&63]}let a=e.length%3,o=Math.floor(e.length/3)*4+(a&&a+1),s=zI.decode(new Uint8Array(i.buffer,0,o));return n&&a===1&&(s+=`==`),n&&a===2&&(s+=`=`),r&&(s=s.replaceAll(`+`,`-`).replaceAll(`/`,`_`)),s}function UI(e,t={}){return HI(gf(e),t)}function WI(e){let t=e.replace(/=+$/,``),n=t.length,r=new Uint8Array(n+3);RI.encodeInto(t+`===`,r);for(let e=0,n=0;e>16,r[n+1]=t>>8&255,r[n+2]=t&255}let i=(n>>2)*3+(n%4&&n%4-1);return new Uint8Array(r.buffer,0,i)}ap();function GI(e){let t=e[4]===0?5:4,n=t+32,r=e[n+2]===0?n+3:n+2,i=BigInt(Vf(e.slice(t,n))),a=BigInt(Vf(e.slice(r)));return{r:i,s:a>jI.CURVE.n/2n?jI.CURVE.n-a:a}}async function KI(e){try{let t=e.getPublicKey();if(!t)throw new tL;let n=new Uint8Array(t),r=await crypto.subtle.importKey(`spki`,new Uint8Array(n),{name:`ECDSA`,namedCurve:`P-256`,hash:`SHA-256`},!0,[`verify`]),i=new Uint8Array(await crypto.subtle.exportKey(`raw`,r));return Wh(i)}catch(t){if(t.message!==`Permission denied to access object`)throw t;let n=new Uint8Array(e.attestationObject),r=e=>{let t=new Uint8Array([e,88,32]);for(let e=0;en[e+r]===t))return e+t.length;throw new tL},i=r(33),a=r(34);return Wh(new Uint8Array([4,...n.slice(i,i+32),...n.slice(a,a+32)]))}}If(),qd(),ap();const qI=Uint8Array.from([105,171,180,181,160,222,75,198,42,42,32,31,141,37,186,233]);async function JI(e){let{createFn:t=window.navigator.credentials.create.bind(window.navigator.credentials),...n}=e,r=ZI(n);try{let e=await t(r);if(!e)throw new tL;let n=e.response,i=await KI(n);return{id:e.id,publicKey:i,raw:e}}catch(e){throw new tL({cause:e})}}function YI(e={}){let{flag:t=5,rpId:n=window.location.hostname,signCount:r=0}=e,i=Hh(Hf(n)),a=L(t,{size:1}),o=L(r,{size:4});return Rf(i,a,o)}function XI(e){let{challenge:t,crossOrigin:n=!1,extraClientData:r,origin:i=window.location.origin}=e;return JSON.stringify({type:`webauthn.get`,challenge:UI(t,{url:!0,pad:!1}),origin:i,crossOrigin:n,...r})}function ZI(e){let{attestation:t=`none`,authenticatorSelection:n={residentKey:`preferred`,requireResidentKey:!1,userVerification:`required`},challenge:r=qI,excludeCredentialIds:i,extensions:a,name:o,rp:s={id:window.location.hostname,name:window.document.title},user:c}=e,l=c?.name??o;return{publicKey:{attestation:t,authenticatorSelection:n,challenge:r,...i?{excludeCredentials:i?.map(e=>({id:WI(e),type:`public-key`}))}:{},pubKeyCredParams:[{type:`public-key`,alg:-7}],...a&&{extensions:a},rp:s,user:{id:c?.id??Vh(_f(l),{as:`Bytes`}),name:l,displayName:c?.displayName??l}}}}function QI(e){let{credentialId:t,challenge:n,extensions:r,rpId:i=window.location.hostname,userVerification:a=`required`}=e;return{publicKey:{...t?{allowCredentials:Array.isArray(t)?t.map(e=>({id:WI(e),type:`public-key`})):[{id:WI(t),type:`public-key`}]}:{},challenge:gf(n),...r&&{extensions:r},rpId:i,userVerification:a}}}function $I(e){let{challenge:t,crossOrigin:n,extraClientData:r,flag:i,origin:a,rpId:o,signCount:s,userVerification:c=`required`}=e,l=YI({flag:i,rpId:o,signCount:s}),u=XI({challenge:t,crossOrigin:n,extraClientData:r,origin:a}),d=Hh(Hf(u)),f=u.indexOf(`"challenge"`),p=u.indexOf(`"type"`),m={authenticatorData:l,clientDataJSON:u,challengeIndex:f,typeIndex:p,userVerificationRequired:c===`required`},h=Rf(l,d);return{metadata:m,payload:h}}async function eL(e){let{getFn:t=window.navigator.credentials.get.bind(window.navigator.credentials),...n}=e,r=QI(n);try{let e=await t(r);if(!e)throw new nL;let n=e.response,i=String.fromCharCode(...new Uint8Array(n.clientDataJSON)),a=i.indexOf(`"challenge"`),o=i.indexOf(`"type"`),s=GI(new Uint8Array(n.signature));return{metadata:{authenticatorData:Vf(new Uint8Array(n.authenticatorData)),clientDataJSON:i,challengeIndex:a,typeIndex:o,userVerificationRequired:r.publicKey.userVerification===`required`},signature:s,raw:e}}catch(e){throw new nL({cause:e})}}var tL=class extends F{constructor({cause:e}={}){super(`Failed to create credential.`,{cause:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`WebAuthnP256.CredentialCreationFailedError`})}},nL=class extends F{constructor({cause:e}={}){super(`Failed to request credential.`,{cause:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`WebAuthnP256.CredentialRequestFailedError`})}};If();async function rL(e={}){let{extractable:t=!1}=e,n=await globalThis.crypto.subtle.generateKey({name:`ECDSA`,namedCurve:`P-256`},t,[`sign`,`verify`]),r=await globalThis.crypto.subtle.exportKey(`raw`,n.publicKey),i=Wh(new Uint8Array(r));return{privateKey:n.privateKey,publicKey:i}}async function iL(e){let{payload:t,privateKey:n}=e,r=await globalThis.crypto.subtle.sign({name:`ECDSA`,hash:`SHA-256`},n,mf(t)),i=hf(new Uint8Array(r)),a=xf(bf(i,0,32)),o=xf(bf(i,32,64));return o>jI.CURVE.n/2n&&(o=jI.CURVE.n-o),{r:a,s:o}}const aL=`0x32323232`;If(),ap(),ff();const oL={p256:`p256`,secp256k1:`secp256k1`,webauthnp256:`webauthn-p256`},sL={admin:`admin`,normal:`session`},cL={0:`minute`,1:`hour`,2:`day`,3:`week`,4:`month`,5:`year`},lL={address:`secp256k1`,p256:`p256`,secp256k1:`secp256k1`,"webauthn-p256":`webauthnp256`},uL={admin:`admin`,session:`normal`},dL={address:2,p256:0,secp256k1:2,"webauthn-p256":1},fL={day:2,hour:1,minute:0,month:4,week:3,year:5};function pL(e={}){let t=PI();return vL({...e,privateKey:t})}async function mL(e){let{createFn:t,label:n,rpId:r,userId:i}=e,a=await JI({authenticatorSelection:{requireResidentKey:!0,residentKey:`required`,userVerification:`required`},createFn:t,extensions:{credProps:!0},rp:r?{id:r,name:r}:void 0,user:{displayName:n,id:new Uint8Array(i??_f(n)),name:n}});return bL({...e,credential:{id:a.id,publicKey:a.publicKey},id:i?Cf(i):qh(a.publicKey,{includePrefix:!1})})}function hL(e={}){let t=PI();return xL({...e,privateKey:t})}async function gL(e={}){let t=await rL();return SL({...e,keyPair:t})}function _L(e,t={}){let{chainId:n=e.chainId}=t,{expiry:r=0,id:i,prehash:a=!1,role:o=`admin`,type:s}=e,c=(()=>{let t=e.publicKey;return t===`0x`?t:s===`secp256k1`||s===`address`?Kf(t)===20||Jf(Gf(t,0,12))===0n?Gf(t,-20):rg(Kh(t)):t})();return{...e,chainId:n,expiry:r,hash:CL({publicKey:c,type:s}),id:(i??c).toLowerCase(),prehash:a,publicKey:c.toLowerCase(),role:o,type:s}}function vL(e){let{chainId:t,expiry:n,feeToken:r,permissions:i,privateKey:a,role:o}=e,s=qh(NI({privateKey:a}),{includePrefix:!1});return _L({chainId:t,expiry:n,feeToken:r,permissions:i,privateKey(){return a},publicKey:s,role:o,type:`p256`})}function yL(e,t){let{chainId:n}=t,{publicKey:r}=e,i=Kf(r)===20||Jf(Gf(r,0,12))===0n,a={};for(let t of e.permissions)t.type===`call`&&(a.calls??=[],a.calls.push({signature:t.selector,to:t.to===`0x3232323232323232323232323232323232323232`?void 0:t.to})),t.type===`spend`&&(a.spend??=[],a.spend.push({limit:t.limit,period:t.period,token:t.token}));return _L({chainId:n,expiry:e.expiry,permissions:a,publicKey:e.publicKey,role:sL[e.role],type:i?`address`:oL[e.type]})}function bL(e){let{credential:t,id:n,rpId:r}=e,i=qh(t.publicKey,{includePrefix:!1});return _L({chainId:e.chainId,expiry:e.expiry??0,feeToken:e.feeToken,id:n,permissions:e.permissions,privateKey:{credential:t,rpId:r},publicKey:i,role:e.role,type:`webauthn-p256`})}function xL(e){let{privateKey:t}=e,n=qh(NI({privateKey:t}),{includePrefix:!1});return _L({chainId:e.chainId,expiry:e.expiry??0,feeToken:e.feeToken,permissions:e.permissions,privateKey:{privateKey(){return t}},publicKey:n,role:e.role,type:`webauthn-p256`})}function SL(e){let{chainId:t,expiry:n,feeToken:r,keyPair:i,permissions:a,role:o}=e,{privateKey:s}=i,c=qh(i.publicKey,{includePrefix:!1});return _L({chainId:t,expiry:n,feeToken:r,permissions:a,prehash:!0,privateKey:s,publicKey:c,role:o,type:`p256`})}function CL(e){let{type:t}=e,n=wL(e.publicKey);return Vh(Vg([{type:`uint8`},{type:`bytes32`}],[dL[t],Vh(n)]))}function wL(e){return Kf(e)<32?Uf(e,32):e}async function TL(e,t){let{address:n,storage:r,webAuthn:i,wrap:a=!0}=t,{privateKey:o,publicKey:s,type:c}=e;if(!o)throw Error(`Key does not have a private key to sign with. + +Key: +`+uf(e,null,2));let l=(()=>n?cI({domain:{verifyingContract:n},message:{digest:t.payload},primaryType:`ERC1271Sign`,types:{ERC1271Sign:[{name:`digest`,type:`bytes32`}]}}):t.payload)(),[u,d]=await(async()=>{if(c===`p256`){let{privateKey:t}=e;if(typeof t==`function`)return[u_(FI({payload:l,privateKey:t()})),!1];if(t instanceof CryptoKey)return[u_(await iL({payload:l,privateKey:t})),!0]}if(c===`secp256k1`)return[u_(k_({payload:l,privateKey:o()})),!1];if(c===`webauthn-p256`){if(o.privateKey){let{payload:e,metadata:t}=$I({challenge:l,origin:`https://ithaca.xyz`,rpId:`ithaca.xyz`}),{r:n,s:r}=FI({hash:!0,payload:e,privateKey:o.privateKey()});return[kL({metadata:t,signature:{r:n,s:r}}),!1]}let{credential:t,rpId:n}=o,a=`porto.webauthnVerified.${e.hash}`,s=Date.now(),c=!0;if(r){let e=await r.getItem(a);c=!e||s-e>6e5}let{signature:{r:u,s:d},raw:f,metadata:p}=await eL({challenge:l,credentialId:t.id,getFn:i?.getFn,rpId:n,userVerification:c?`required`:`preferred`}),m=f.response;if(!m?.userHandle)throw Error(`No user handle in response`,{cause:{response:m}});let h=Cf(new Uint8Array(m.userHandle));if(e.id&&ag(e.id)&&!ig(e.id,h))throw Error(`supplied webauthn key "${e.id}" does not match signature webauthn key "${h}"`,{cause:{id:h,key:e}});return c&&r&&await r.setItem(a,s),[kL({metadata:p,signature:{r:u,s:d}}),!1]}throw Error(`Key type "${c}" is not supported.\n\nKey:\n`+uf(e,null,2))})();return a?AL(u,{keyType:c,prehash:d,publicKey:s}):u}function EL(e,t={}){let{expiry:n=0,prehash:r=!1,publicKey:i,role:a=`admin`,type:o}=e,{feeTokens:s,orchestrator:c}=t,l=Object.entries(DL(e,{feeTokens:s})).map(([e,t])=>{if(e===`calls`)return t.map(({signature:e,to:t})=>({selector:(()=>e?Xf(e)?e:X_(e):aL)(),to:t??`0x3232323232323232323232323232323232323232`,type:`call`}));if(e!==`feeToken`){if(e===`spend`)return t.map(({limit:e,period:t,token:n})=>({limit:e,period:t,token:n,type:`spend`}));throw Error(`Invalid permission type "${e}".`)}}).flat().filter(Boolean);return e.role===`session`&&c&&l.push({selector:aL,to:c,type:`call`}),{expiry:n,permissions:l??[],prehash:r,publicKey:wL(i),role:uL[a],type:lL[o]}}function DL(e,t){let{permissions:n}=e,r=n?.calls?[...n.calls]:[],i=n?.spend?[...n.spend]:[],a=t.feeTokens?.filter(e=>e.feeToken);if(a&&a.length>0){let t=OL(e,{feeTokens:a});if(t){let e=-1,n=fL.year;for(let r=0;re.feeToken.symbol===t.symbol?!0:!e.feeToken.symbol||e.feeToken.symbol===`native`?t.address===Z_:!1);if(!r)return;let i=II(e.feeToken.limit,r.decimals);return{...r,value:i}}function kL(e){let{metadata:t,signature:n}=e;return Vg(Ug([`struct WebAuthnAuth { bytes authenticatorData; string clientDataJSON; uint256 challengeIndex; uint256 typeIndex; bytes32 r; bytes32 s; }`,`WebAuthnAuth auth`]),[{authenticatorData:t.authenticatorData,challengeIndex:BigInt(t.challengeIndex),clientDataJSON:t.clientDataJSON,r:L(n.r,{size:32}),s:L(n.s,{size:32}),typeIndex:BigInt(t.typeIndex)}])}function AL(e,t){let{keyType:n,prehash:r=!1,publicKey:i}=t,a=CL({publicKey:i,type:n});return Hg([`bytes`,`bytes32`,`bool`],[e,a,r])}function jL(e){let t=typeof e==`string`?{address:e}:e,n=t.sign?`privateKey`:`porto`,{address:r,sign:i,signMessage:a,signTransaction:o,signTypedData:s,type:c}=bI({address:t.address,sign({hash:e}){if(n===`porto`)throw Error("`sign` not supported on porto accounts.");if(!t.sign)throw Error("`sign` not supported.");return t.sign({hash:e})},signMessage({message:e}){return this.sign({hash:wh(e)})},signTransaction(){throw Error("`signTransaction` not supported on porto accounts.")},signTypedData(e){return this.sign({hash:Mh(e)})}});return{address:r,keys:t.keys??void 0,sign:i,signMessage:a,signTransaction:o,signTypedData:s,source:n,type:c}}function ML(e,t={}){let{keys:n}=t,r=rg(T_({privateKey:e}));return jL({address:r,keys:n,async sign({hash:t}){return u_(k_({payload:t,privateKey:e}))},source:`privateKey`})}function NL(e,t={}){let{key:n,role:r}=t;if(n!==null){if(typeof n==`object`)return n;if(e.keys&&e.keys.length>0)return typeof n==`number`?e.keys[n]:e.keys.find(e=>e.privateKey&&(!r||e.role===r))}}async function PL(e,t){let{storage:n,replaySafe:r=!0,wrap:i=!0,webAuthn:a}=t,o=NL(e,t),s=(()=>r?cI({domain:{verifyingContract:e.address},message:{digest:t.payload},primaryType:`ERC1271Sign`,types:{ERC1271Sign:[{name:`digest`,type:`bytes32`}]}}):t.payload)(),c=(()=>o?({hash:e})=>TL(o,{address:null,payload:e,storage:n,webAuthn:a,wrap:i}):e.source===`privateKey`?e.sign:void 0)();if(!c)throw Error(`cannot find key to sign with.`);return await c({hash:s})}ap();function FL(e,t={}){return V_(e,t)}function IL(e,t,n){if(t===`Error`)return RL;if(t===`Panic`)return zL;if(Xf(t,{strict:!1})){let e=Gf(t,0,4);if(e===`0x08c379a0`)return RL;if(e===`0x4e487b71`)return zL}let r=H_(e,t,n);if(r.type!==`error`)throw new q_({name:t,type:`error`});return r}function LL(e){return U_(e)}const RL=FL({inputs:[{name:`message`,type:`string`}],name:`Error`,type:`error`}),zL=FL({inputs:[{name:`reason`,type:`uint8`}],name:`Panic`,type:`error`});O();var BL=class extends D{constructor(){super(`Function is not recognized.`,{metaMessages:[`This could be due to any of the following:`,` - The contract does not have the function,`,` - The address is not a contract.`],name:`FunctionSelectorNotRecognizedError`})}};Ra();function VL(e,t){let n=e.walk(e=>`data`in e);if(!n?.data)return e;if(n.data===LL(FL(`error FnSelectorNotRecognized()`)))return new BL;let r=null;for(let e of t.calls){let t=e;if(t.abi)try{if(!La({abi:t.abi,data:n.data}))continue;r=t}catch{}}return r?ss(n,{abi:r.abi,address:r.to,args:r.args,functionName:r.functionName}):e}qd(),ap();const X=()=>rI([`0x`,V()],{message:`Needs string in format ^0x[A-Fa-f0-9]{40}$.`}),Z=()=>rI([`0x`,V()],{message:`Needs string in format ^0x[A-Fa-f0-9]+$.`}),Q=()=>eI(Z(),H(),{decode:e=>Yf(e),encode:e=>L(e)}),$=()=>eI(Z(),TF({message:`Required bigint`}),{decode:e=>Jf(e),encode:e=>L(e)});function HL(e){return G(e)}var UL=class extends F{constructor(){super(...arguments),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Schema.ValidationError`})}};function WL(e){let t=e,n=`Validation failed with ${t.issues.length} error${t.issues.length===1?``:`s`}:`;n+=` +`;for(let e of t.issues)e&&(n+=` +`,n+=GL(e));return new UL(n)}function GL(e,t=0){let n=KL(e.path),r=`- ${n?`${n}: `:``}`,i=` `.repeat(t+1),a=r;switch(e.code){case`invalid_type`:{let t=e.expected,n=e.input?qL(e):`undefined`;a+=`Expected ${t}. ${e.message===`Invalid input`?``:e.message}`,n!==`undefined`&&(a+=`but received ${n}`);break}case`too_big`:{let t=e.maximum,n=e.inclusive??!0;e.exact??!1?a+=`${e.origin} must be exactly ${t}`:a+=`${e.origin} must be ${n?`at most`:`less than`} ${t}`;break}case`too_small`:{let t=e.minimum,n=e.inclusive??!0;e.exact??!1?a+=`${e.origin} must be exactly ${t}`:a+=`${e.origin} must be ${n?`at least`:`greater than`} ${t}`;break}case`invalid_format`:switch(e.format){case`regex`:a+=`Must match pattern: ${e.pattern}`;break;case`starts_with`:a+=`Must start with "${e.prefix}"`;break;case`ends_with`:a+=`Must end with "${e.suffix}"`;break;case`includes`:a+=`Must include "${e.includes}"`;break;case`template_literal`:a+=`Must match pattern: ${e.pattern}`;break;default:a+=`Invalid ${e.format} format`}break;case`not_multiple_of`:a+=`Number must be a multiple of ${e.divisor}`;break;case`unrecognized_keys`:{let t=e.keys.map(e=>`"${e}"`).join(`, `);a+=`Unrecognized key${e.keys.length>1?`s`:``}: ${t}`;break}case`invalid_union`:{let n=e.errors&&e.errors.length>0;a+=`Invalid union value.`,n&&e.errors.forEach(e=>{e.length>0&&e.forEach(e=>{a+=` +`,a+=i,a+=GL(e,t+1)})});break}case`invalid_key`:a+=`Invalid ${e.origin} key`,e.issues&&e.issues.length>0&&e.issues.forEach(e=>{a+=` +`,a+=i,a+=GL(e,t+1)});break;case`invalid_element`:a+=`Invalid ${e.origin} element at key "${e.key}"`,e.issues&&e.issues.length>0&&e.issues.forEach(e=>{a+=` +`,a+=i,a+=GL(e,t+1)});break;case`invalid_value`:{let t=e.values.map(e=>JSON.stringify(e)).join(`, `);e.values.length>1?a+=`Expected one of: ${t}`:a+=`Expected ${t}`;break}case`custom`:a+=e.message||`Custom validation failed`;break;default:a+=e.message||`Validation failed`}return a}function KL(e){return e.length===0?``:"at `"+e.map((e,t)=>typeof e==`number`?`[${e}]`:typeof e==`symbol`?`[${e.toString()}]`:/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)&&t>0?`.${e}`:t===0&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`["${e}"]`).join(``)+"`"}function qL(e){let t=e.input;if(t===void 0)return`undefined`;if(t===null)return`null`;let n=typeof t;return n===`object`?Array.isArray(t)?`array`:t instanceof Date?`date`:t instanceof Map?`map`:t instanceof Set?`set`:`object`:n}const JL=W({selector:Z(),to:X(),type:q(`call`)}),YL=W({limit:$(),period:G([q(`minute`),q(`hour`),q(`day`),q(`week`),q(`month`),q(`year`)]),token:J(G([X(),kF()])),type:q(`spend`)}),XL=G([JL,YL]),ZL=W({expiry:Q(),prehash:J(CF()),publicKey:Z(),role:G([q(`admin`),q(`normal`)]),type:G([q(`p256`),q(`secp256k1`),q(`webauthnp256`)])}),QL=W({...ZL.shape,permissions:Y(U(XL))});var $L;(function(e){e.AssetDiffAsset=G([W({address:J(G([X(),kF()])),decimals:J(G([H(),kF()])),direction:G([q(`incoming`),q(`outgoing`)]),fiat:J(W({currency:V(),value:eI(V(),H(),{decode:e=>Number(e),encode:e=>String(e)})})),name:J(G([V(),kF()])),symbol:V(),type:q(`erc20`),value:$()}),W({address:J(G([X(),kF()])),direction:G([q(`incoming`),q(`outgoing`)]),fiat:J(W({currency:V(),value:eI(V(),H(),{decode:e=>Number(e),encode:e=>String(e)})})),name:J(G([V(),kF()])),symbol:V(),type:q(`erc721`),uri:V(),value:$()}),W({address:kF(),decimals:J(G([H(),kF()])),direction:G([q(`incoming`),q(`outgoing`)]),fiat:J(W({currency:V(),value:eI(V(),H(),{decode:e=>Number(e),encode:e=>String(e)})})),symbol:V(),type:kF(),value:$()})]),e.Response=KF(Z(),Y(U(Y(K([X(),Y(U(e.AssetDiffAsset))])))))})($L||={});var eR;(function(e){e.Request=Y(U(QL)),e.Response=Y(U(W({...QL.shape,hash:Z()})))})(eR||={});var tR;(function(e){e.Response=KF(Z(),W({currency:V(),value:V()}))})(tR||={});var nR;(function(e){e.Request=W({feePayer:J(X()),feeToken:J(X()),nonce:J($())})})(nR||={});var rR;(function(e){e.Request=Y(U(W({address:X(),value:$()})))})(rR||={});var iR;(function(e){e.Request=Y(U(W({hash:Z()}))),e.Response=Y(U(W({hash:Z()})))})(iR||={});const aR=W({eoa:X(),executionData:Z(),nonce:Z(),signature:Z()}),oR=W({...aR.shape,chainId:Q()}),sR=G([W({combinedGas:$(),encodedFundTransfers:Y(U(Z())),encodedPreCalls:Y(U(Z())),eoa:X(),executionData:Z(),expiry:$(),funder:X(),funderSignature:Z(),isMultichain:CF(),nonce:$(),payer:X(),paymentAmount:$(),paymentMaxAmount:$(),paymentRecipient:X(),paymentSignature:Z(),paymentToken:X(),settler:X(),settlerContext:Z(),signature:Z(),supportedAccountImplementation:X()}),W({combinedGas:$(),encodedFundTransfers:Y(U(Z())),encodedPreCalls:Y(U(Z())),eoa:X(),executionData:Z(),expiry:$(),funder:X(),funderSignature:Z(),isMultichain:CF(),nonce:$(),payer:X(),paymentRecipient:X(),paymentSignature:Z(),paymentToken:X(),prePaymentAmount:$(),prePaymentMaxAmount:$(),settler:X(),settlerContext:Z(),signature:Z(),supportedAccountImplementation:X(),totalPaymentAmount:$(),totalPaymentMaxAmount:$()})]);W({eoa:X(),executionData:Z(),nonce:$()});const cR=W({address:G([X(),kF()]),decimals:J(H()),deficit:$(),fiat:J(W({currency:V(),value:V()})),name:J(V()),required:$(),symbol:J(V())}),lR=W({additionalAuthorization:ZF(W({address:X(),chainId:Q(),nonce:Q(),r:Z(),s:Z(),yParity:Q()})),assetDeficits:J(U(cR)),authorizationAddress:J(G([X(),kF()])),chainId:Q(),ethPrice:$(),extraPayment:$(),feeTokenDeficit:$(),intent:sR,nativeFeeEstimate:W({maxFeePerGas:$(),maxPriorityFeePerGas:$()}),orchestrator:X(),paymentTokenDecimals:H(),txGas:$()}),uR=W({multiChainRoot:J(G([Z(),kF()])),quotes:Y(U(lR)).check(_F(1)),ttl:H()}),dR=W({...uR.shape,hash:Z(),r:Z(),s:Z(),v:J(Z()),yParity:J(Z())}),fR=W({address:X(),decimals:H(),feeToken:J(CF()),interop:J(CF()),nativeRate:J($()),symbol:V(),uid:V()}),pR=V().check(vF(/^[A-Z0-9]+$/));var mR=W({address:X(),chainId:Q(),nonce:Q()}),hR=W({...mR.shape,r:Z(),s:Z(),yParity:Q()}),gR=W({data:J(Z()),to:X(),value:J($())}),_R;(function(e){e.Parameters=W({address:X(),secret:V()}),e.Request=W({method:q(`account_getOnrampContactInfo`),params:Y(K([e.Parameters]))}),e.Response=W({email:J(V()),phone:J(V()),phoneVerifiedAt:J(H())})})(_R||={});var vR;(function(e){e.Parameters=W({address:X()}),e.Request=W({method:q(`account_onrampStatus`),params:Y(K([e.Parameters]))}),e.Response=W({email:J(H()),phone:J(H())})})(vR||={});var yR;(function(e){e.Parameters=W({phone:V(),walletAddress:X()}),e.Request=W({method:q(`account_resendVerifyPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(yR||={});var bR;(function(e){e.Parameters=W({email:V().check(vF(/^.*@.*$/)),walletAddress:X()}),e.Request=W({method:q(`account_setEmail`),params:Y(K([e.Parameters]))}),e.Response=kF()})(bR||={});var xR;(function(e){e.Parameters=W({phone:V(),walletAddress:X()}),e.Request=W({method:q(`account_setPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(xR||={});var SR;(function(e){e.Parameters=W({chainId:Q(),email:V(),signature:Z(),token:V(),walletAddress:X()}),e.Request=W({method:q(`account_verifyEmail`),params:Y(K([e.Parameters]))}),e.Response=kF()})(SR||={});var CR;(function(e){e.Parameters=W({code:V(),phone:V(),walletAddress:X()}),e.Request=W({method:q(`account_verifyPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(CR||={});var wR;(function(e){e.Request=W({method:q(`health`),params:DF()}),e.Response=W({quoteSigner:X(),status:V(),version:V()})})(wR||={});var TR;(function(e){e.Parameters=W({address:X(),chainId:Q(),tokenAddress:X(),value:$()}),e.Request=W({method:q(`wallet_addFaucetFunds`),params:Y(K([e.Parameters]))}),e.Response=W({message:J(V()),transactionHash:Z()})})(TR||={});var ER;(function(e){e.Parameters=W({chainId:Q(),id:Z()}),e.Request=W({method:q(`wallet_getAccounts`),params:Y(K([e.Parameters]))}),e.Response=Y(U(W({address:X(),keys:eR.Response})))})(ER||={});var DR;(function(e){e.Parameters=W({address:X()}),e.Request=W({method:q(`wallet_getAuthorization`),params:Y(K([e.Parameters]))}),e.Response=W({authorization:hR,data:Z(),to:X()})})(DR||={});var OR;(function(e){e.Request=W({method:q(`wallet_getCapabilities`),params:J(K([Y(U(H()))]))});let t=W({address:X(),version:J(G([V(),kF()]))});e.Response=KF(Z(),W({contracts:W({accountImplementation:t,accountProxy:t,legacyAccountImplementations:Y(U(t)),legacyOrchestrators:Y(U(G([W({orchestrator:t,simulator:t}),t]))),orchestrator:t,simulator:t}),fees:W({quoteConfig:W({constantRate:J(G([H(),kF()])),gas:J(W({intentBuffer:J(H()),txBuffer:J(H())})),rateTtl:H(),ttl:H()}),recipient:X(),tokens:Y(U(fR))})}))})(OR||={});var kR;(function(e){let t=G([q(`native`),q(`erc20`),q(`erc721`),V()]);e.Parameters=W({account:X(),assetFilter:J(KF(Z(),Y(U(W({address:G([X(),q(`native`)]),type:t}))))),assetTypeFilter:J(Y(U(t))),chainFilter:J(Y(U(Q())))}),e.Request=W({method:q(`wallet_getAssets`),params:Y(K([e.Parameters]))}),e.Price=W({currency:V(),value:eI(V(),H(),{decode:e=>Number(e),encode:e=>String(e)})}),e.Response=KF(V(),Y(U(HL([W({address:X(),balance:$(),metadata:XF(W({decimals:H(),fiat:ZF(e.Price),name:V(),symbol:V()})),type:q(`erc20`)}),W({address:XF(q(`native`)),balance:$(),metadata:XF(W({decimals:H(),fiat:ZF(e.Price),name:J(V()),symbol:J(V())})),type:q(`native`)})]))))})(kR||={});var AR;(function(e){e.Request=W({method:q(`wallet_getCallsStatus`),params:Y(K([Z()]))}),e.Response=W({id:V(),receipts:J(Y(U(W({blockHash:Z(),blockNumber:Q(),chainId:Q(),gasUsed:Q(),logs:Y(U(W({address:X(),data:Z(),topics:Y(U(Z()))}))),status:Z(),transactionHash:Z()})))),status:H()})})(AR||={});var jR;(function(e){e.Parameters=W({address:X(),chainIds:J(Y(U(Q())))}),e.Request=W({method:q(`wallet_getKeys`),params:Y(K([e.Parameters]))}),e.Response=KF(Z(),eR.Response)})(jR||={});var MR;(function(e){e.Capabilities=W({authorizeKeys:J(eR.Request),meta:nR.Request,preCall:J(CF()),preCalls:J(Y(U(aR))),requiredFunds:J(rR.Request),revokeKeys:J(iR.Request)}),e.ResponseCapabilities=W({assetDiffs:J($L.Response),authorizeKeys:ZF(eR.Response),feePayerDigest:J(Z()),feeSignature:J(Z()),feeTotals:J(tR.Response),revokeKeys:ZF(iR.Response)}),e.Parameters=W({calls:Y(U(gR)),capabilities:e.Capabilities,chainId:Q(),from:J(X()),key:J(W({prehash:CF(),publicKey:Z(),type:ZL.shape.type}))}),e.Request=W({method:q(`wallet_prepareCalls`),params:Y(K([e.Parameters]))}),e.Response=W({capabilities:e.ResponseCapabilities,context:W({preCall:J(BF(oR)),quote:J(BF(dR))}),digest:Z(),key:ZF(W({prehash:CF(),publicKey:Z(),type:ZL.shape.type})),signature:Z(),typedData:W({domain:G([W({chainId:G([Q(),H()]),name:V(),verifyingContract:X(),version:V()}),W({})]),message:KF(V(),NF()),primaryType:V(),types:KF(V(),NF())})})})(MR||={});var NR;(function(e){e.Capabilities=W({authorizeKeys:eR.Request}),e.Parameters=W({address:X(),capabilities:e.Capabilities,chainId:J(H()),delegation:X()}),e.Request=W({method:q(`wallet_prepareUpgradeAccount`),params:Y(K([e.Parameters]))}),e.Response=W({capabilities:e.Capabilities,chainId:Q(),context:W({address:X(),authorization:mR,chainId:Q(),preCall:aR}),digests:W({auth:Z(),exec:Z()}),typedData:W({domain:G([W({chainId:G([Q(),H()]),name:V(),verifyingContract:X(),version:V()}),W({})]),message:KF(V(),NF()),primaryType:V(),types:KF(V(),NF())})})})(NR||={});var PR;(function(e){e.Request=W({method:q(`wallet_feeTokens`),params:J(DF())}),e.Response=KF(Z(),Y(U(W({address:X(),decimals:H(),nativeRate:J($()),symbol:V()}))))})(PR||={});var FR;(function(e){e.Parameters=W({capabilities:J(W({feeSignature:J(Z())})),context:W({preCall:J(BF(oR)),quote:J(BF(dR))}),key:J(W({prehash:CF(),publicKey:Z(),type:ZL.shape.type})),signature:Z()}),e.Request=W({method:q(`wallet_sendPreparedCalls`),params:Y(K([e.Parameters]))}),e.Response=W({id:Z()})})(FR||={});var IR;(function(e){e.Parameters=W({context:W({address:X(),authorization:mR,chainId:Q(),preCall:aR}),signatures:W({auth:Z(),exec:Z()})}),e.Request=W({method:q(`wallet_upgradeAccount`),params:Y(K([e.Parameters]))}),e.Response=DF()})(IR||={});var LR;(function(e){e.Parameters=W({address:Z(),chainId:Q(),digest:Z(),signature:Z()}),e.Request=W({method:q(`wallet_verifySignature`),params:Y(K([e.Parameters]))}),e.Response=W({proof:ZF(W({account:X(),initPreCall:ZF(aR),keyHash:Z()})),valid:CF()})})(LR||={}),qd(),ap();async function RR(e,t){try{let n=`wallet_getAuthorization`,r=await wm(()=>e.request({method:n,params:[fP(DR.Parameters,t)]}),{cacheKey:`${e.uid}.${n}.${t.address}`});return pP(DR.Response,r)}catch(e){throw ez(e),e}}async function zR(e,t={}){let n=(()=>{if(t.chainId)return[t.chainId];if(t.chainIds!==`all`)return t.chainIds?t.chainIds:[e.chain.id]})();try{let r=`wallet_getCapabilities`,i=await wm(()=>e.request({method:r,params:n?[n]:void 0},{retryCount:0}),{cacheKey:`${e.uid}.${r}.${n?.join(`,`)}`}),a=(()=>t.raw?i:pP(OR.Response,i))();return t.chainIds?a:Object.values(a)[0]}catch(e){throw ez(e),e}}async function BR(e,t){let{account:n,assetFilter:r,assetTypeFilter:i,chainFilter:a}=t;try{let t=await e.request({method:`wallet_getAssets`,params:[fP(kR.Parameters,{account:n,assetFilter:r,assetTypeFilter:i,chainFilter:a})]}),o=pP(kR.Response,t),s=Object.entries(o).reduce((e,[t,n])=>(e[Yf(t)]=n,e),{}),c={};for(let e of Object.values(s))for(let t of e){let e=JSON.stringify(t.metadata);c[e]={...t,balance:t.balance+(c[e]?.balance??0n)}}return{...s,0:Object.values(c)}}catch(e){throw ez(e),e}}async function VR(e,t){let{id:n}=t;try{let t=await e.request({method:`wallet_getCallsStatus`,params:[n]});return pP(AR.Response,t)}catch(e){throw ez(e),e}}async function HR(e,t){let{address:n,chainIds:r}=t;try{let t=await e.request({method:`wallet_getKeys`,params:[fP(jR.Parameters,{address:n,chainIds:r})]});return pP(jR.Response,t)}catch(e){throw ez(e),e}}async function UR(e){let t=`health`,n=await wm(()=>e.request({method:t}),{cacheKey:`${e.uid}.${t}`});return pP(wR.Response,n)}async function WR(e,t){let{address:n,capabilities:r,chain:i=e.chain,key:a}=t,o=t.calls.map(e=>({data:e.abi?J_(Y_(e.abi,e.functionName),e.args):e.data??`0x`,to:e.to,value:e.value??0n}));try{let t=await e.request({method:`wallet_prepareCalls`,params:[fP(MR.Parameters,{calls:o,capabilities:{...r,meta:{...r?.meta}},chainId:i?.id,from:n,key:a?{prehash:a.prehash,publicKey:a.publicKey,type:a.type}:void 0})]},{retryCount:0});return Object.assign(pP(MR.Response,t),{_raw:t})}catch(e){throw ez(e),QR(e,{calls:t.calls}),e}}async function GR(e,t){let{address:n,chain:r=e.chain,delegation:i,...a}=t;try{let t=await e.request({method:`wallet_prepareUpgradeAccount`,params:[fP(NR.Parameters,fN({address:n,capabilities:a,chainId:r?.id,delegation:i}))]},{retryCount:0});return pP(NR.Response,t)}catch(e){throw ez(e),QR(e),e}}async function KR(e,t){let{capabilities:n,context:r,key:i,signature:a}=t;try{let t=await e.request({method:`wallet_sendPreparedCalls`,params:[fP(FR.Parameters,{capabilities:n,context:{preCall:r.preCall,quote:r.quote},key:i?{prehash:i.prehash,publicKey:i.publicKey,type:i.type}:void 0,signature:a})]},{retryCount:0});return pP(FR.Response,t)}catch(e){throw ez(e),QR(e),e}}async function qR(e,t){let{email:n,walletAddress:r}=t;try{let t=await e.request({method:`account_setEmail`,params:[fP(bR.Parameters,{email:n,walletAddress:r})]},{retryCount:0});return pP(bR.Response,t)}catch(e){throw ez(e),QR(e),e}}async function JR(e,t){let{context:n,signatures:r}=t;try{await e.request({method:`wallet_upgradeAccount`,params:[fP(IR.Parameters,{context:n,signatures:r})]},{retryCount:0})}catch(e){throw ez(e),QR(e),e}}async function YR(e,t){let{chainId:n,email:r,signature:i,token:a,walletAddress:o}=t;try{let t=await e.request({method:`account_verifyEmail`,params:[fP(SR.Parameters,{chainId:n,email:r,signature:i,token:a,walletAddress:o})]},{retryCount:0});return pP(SR.Response,t)}catch(e){throw ez(e),QR(e),e}}async function XR(e,t){let{signature:n}=t,{signature:r,capabilities:{feeSignature:i,...a},...o}=t.response,s=$R({capabilities:a,...o}),c=Vh(Hf(JSON.stringify(s))),l=D_({payload:c,signature:a_(n)}),{quoteSigner:u}=await UR(e);return l===u}async function ZR(e,t){let{address:n,chain:r=e.chain,digest:i,signature:a}=t;try{async function t(){return{proof:null,valid:await rv(e,{address:n,hash:i,signature:a})}}let o=await(async()=>{let o=await e.request({method:`wallet_verifySignature`,params:[fP(LR.Parameters,{address:n,chainId:r?.id,digest:i,signature:a})]},{retryCount:0}).catch(t);return o.valid?o:t()})();return pP(LR.Response,o)}catch(e){throw ez(e),e}}function QR(e,{calls:t}={}){if(!(e instanceof D))return;let n=e=>{try{if(e.name===`ContractFunctionExecutionError`){let t=e.cause.name===`ContractFunctionRevertedError`?e.cause.data:void 0;if(t)return IL([t.abiItem],t.errorName)}let t=e.walk(e=>!(e instanceof Error)&&e.code===3);if(!t)return;let{data:n,message:r}=t;return n===`0xd0d5039b`?FL(`error Unauthorized()`):{inputs:[],name:(r??n).split(`(`)[0],type:`error`}}catch{return}},r=VL(e,{calls:t??[]}),i=n(r);if(!(r===e&&!i))throw new tz(Object.assign(r,{abiError:i}))}function $R(e){if(typeof e==`object`&&e){if(Array.isArray(e))return e.map($R);let t={};for(let n of Object.keys(e).sort())t[n]=$R(e[n]);return t}return e}function ez(e){if(e.name===`$ZodError`)throw WL(e)}var tz=class extends F{constructor(e){super(`An error occurred while executing calls.`,{cause:e,metaMessages:[e.abiError&&`Reason: `+e.abiError.name].filter(Boolean)}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Rpc.ExecutionError`}),Object.defineProperty(this,`abiError`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abiError=e.abiError}};const nz={anvil:{http:`http://localhost:9119`},prod:{http:`https://rpc.porto.sh`},stg:{http:`https://stg-rpc.porto.sh`}};function rz(e){return t=>{let n=e.public(t),r=e.relay(t);return Mv({key:rz.type,name:`Relay Proxy`,async request({method:e,params:t},i){return iz(e)?r.request({method:e,params:t},i):n.request({method:e,params:t},i)},type:rz.type})}}(function(e){e.type=`relayProxy`})(rz||={});function iz(e){return!!(e.startsWith(`wallet_`)||e.startsWith(`account_`)||e===`health`)}ff();var az=new Map;function oz(e,t={}){let{config:n,id:r,store:i}=e._internal,{chains:a,relay:o}=n,s=i.getState(),c=t.chainId??s.chainIds[0],l=a.find(e=>e.id===c);if(!l)throw Error([`Could not find a compatible Porto chain on the given chain configuration.`,``,`Provided chains: [${a.map(e=>`${e.name} (id: ${e.id})`).join(`, `)}]`,`Needed chain (id): ${c}`,`Please add this chain (id) to your chain configuration.`].join(` +`));let u=rz({public:n.transports[l.id]??Pv(l.rpcUrls.default.http.map(e=>Rv(e))),relay:o}),d=[r,uf(l)].filter(Boolean).join(`:`);if(az.has(d))return az.get(d);let f=Ym({...t,chain:l,pollingInterval:1e3,transport:u});return az.set(d,f),f}const sz=W({chainId:J(Q()),expiry:Q(),hash:Z(),id:Z(),prehash:J(CF()),publicKey:Z(),role:G([q(`admin`),q(`session`)]),type:G([q(`address`),q(`p256`),q(`secp256k1`),q(`webauthn-p256`)])}),cz=Y(U(HL([W({signature:V(),to:X()}),W({signature:V()}),W({to:X()})])).check(_F(1))),lz=W({limit:G([rI([H(),`.`,H()]),rI([H()])]).check(vF(/^\d+(\.\d+)?$/)),symbol:J(G([q(`native`),pR]))}),uz=W({addresses:Y(U(X()))}),dz=Y(U(W({limit:$(),period:G([q(`minute`),q(`hour`),q(`day`),q(`week`),q(`month`),q(`year`)]),token:J(X())}))),fz=W({calls:J(cz),signatureVerification:J(uz),spend:J(dz)}),pz=W({...sz.shape,feeToken:J(XF(lz)),permissions:J(fz)}),mz=W({address:X(),chainId:J(Q()),expiry:H(),id:Z(),key:RF(sz,{publicKey:!0,type:!0}),permissions:W({calls:cz,signatureVerification:J(uz),spend:J(dz)})}),hz=W({address:J(X()),chainId:J(Q()),expiry:H().check(gF(1)),feeToken:XF(lz),key:J(RF(sz,{publicKey:!0,type:!0})),permissions:W({calls:cz,signatureVerification:J(uz),spend:J(dz)})}),gz=mz;function _z(e,t){let{chainId:n,expiry:r,permissions:i,id:a,publicKey:o,type:s}=e,{address:c}=t;return{address:c,chainId:n,expiry:r,id:a,key:{publicKey:o,type:s},permissions:i??{}}}function vz(e){let{chainId:t,expiry:n,key:r}=e;return _L({chainId:t,expiry:n,permissions:e.permissions??{},publicKey:r.publicKey,role:`session`,type:r.type})}var yz;(function(e){e.GetCapabilitiesResponse=W({status:G([q(`supported`),q(`unsupported`)])})})(yz||={});var bz;(function(e){e.Request=G([CF(),W({chainId:J(Q()),label:J(V())})])})(bz||={});var xz;(function(e){e.Request=HL([W({chainId:J(H()),domain:J(V()),expirationTime:J(FF()),issuedAt:J(FF()),nonce:V(),notBefore:J(FF()),requestId:J(V()),resources:J(Y(U(V()))),scheme:J(V()),statement:J(V()),uri:J(V()),version:J(q(`1`))}),W({authUrl:G([V(),W({logout:V(),nonce:V(),verify:V()})]),chainId:J(Q()),domain:J(V()),expirationTime:J(FF()),issuedAt:J(FF()),notBefore:J(FF()),requestId:J(V()),resources:J(Y(U(V()))),scheme:J(V()),statement:J(V()),uri:J(V()),version:J(q(`1`))})]),e.Response=W({message:V(),signature:Z(),token:J(V())})})(xz||={});var Sz;(function(e){e.GetCapabilitiesResponse=W({supported:CF(),tokens:Y(U(fR))}),e.Request=G([pR,X()])})(Sz||={});var Cz;(function(e){e.Request=hz})(Cz||={});var wz;(function(e){e.GetCapabilitiesResponse=W({supported:CF()})})(wz||={});var Tz;(function(e){e.GetCapabilitiesResponse=W({supported:CF()}),e.Request=W({id:J(G([Z(),kF()]))}),e.Response=Y(U(mz))})(Tz||={});var Ez;(function(e){e.Request=Y(U(W({context:NF(),signature:Z()}))),e.Response=e.Request})(Ez||={});var Dz;(function(e){e.Request=V()})(Dz||={});var Oz;(function(e){e.GetCapabilitiesResponse=W({supported:CF(),tokens:Y(U(fR))}),e.Request=Y(U(HL([W({address:X(),value:$()}),W({symbol:pR,value:G([rI([H(),`.`,H()]),rI([H()])]).check(vF(/^\d+(\.\d+)?$/))})])))})(Oz||={});var kz=W({...RF(sz,{id:!0,publicKey:!0,type:!0}).shape,credentialId:J(V()),privateKey:J(jF())}),Az;(function(e){e.Parameters=W({address:X(),secret:V()}),e.Request=W({method:q(`account_getOnrampContactInfo`),params:Y(K([e.Parameters]))}),e.Response=W({email:J(V()),phone:J(V()),phoneVerifiedAt:J(H())})})(Az||={});var jz;(function(e){e.Parameters=W({address:X()}),e.Request=W({method:q(`account_onrampStatus`),params:Y(K([e.Parameters]))}),e.Response=W({email:J(H()),phone:J(H())})})(jz||={});var Mz;(function(e){e.Parameters=W({email:V(),walletAddress:X()}),e.Request=W({method:q(`account_resendVerifyPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(Mz||={});var Nz;(function(e){e.Parameters=W({email:V(),walletAddress:X()}),e.Request=W({method:q(`account_setEmail`),params:Y(K([e.Parameters]))}),e.Response=kF()})(Nz||={});var Pz;(function(e){e.Parameters=W({email:V(),walletAddress:X()}),e.Request=W({method:q(`account_setPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(Pz||={});var Fz;(function(e){e.Parameters=W({chainId:Q(),email:V(),token:V(),walletAddress:X()}),e.Request=W({method:q(`account_verifyEmail`),params:Y(K([e.Parameters]))}),e.Response=kF()})(Fz||={});var Iz;(function(e){e.Parameters=W({code:V(),phone:V(),walletAddress:X()}),e.Request=W({method:q(`account_verifyPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(Iz||={});var Lz;(function(e){e.Parameters=W({address:J(X()),chainId:J(Q()),token:J(X()),value:J(V())}),e.Request=W({method:q(`wallet_addFunds`),params:Y(K([e.Parameters]))}),e.Response=W({id:Z()})})(Lz||={});var Rz;(function(e){e.Request=W({method:q(`eth_accounts`),params:J(NF())}),e.Response=Y(U(X()))})(Rz||={});var zz;(function(e){e.Request=W({method:q(`eth_chainId`),params:J(NF())}),e.Response=Z()})(zz||={});var Bz;(function(e){e.Request=W({method:q(`eth_requestAccounts`),params:J(NF())}),e.Response=Y(U(X()))})(Bz||={});var Vz;(function(e){e.Request=W({method:q(`eth_sendTransaction`),params:Y(K([W({capabilities:J(W({feeToken:J(Sz.Request),merchantUrl:J(Dz.Request),preCalls:J(Ez.Request)})),chainId:J(Q()),data:J(Z()),from:J(X()),to:X(),value:J($())})]))}),e.Response=Z()})(Vz||={});var Hz;(function(e){e.Request=W({method:q(`eth_signTypedData_v4`),params:Y(K([X(),V()]))}),e.Response=Z()})(Hz||={});var Uz;(function(e){e.Parameters=W({address:J(X()),chainId:J(Q())}),e.Request=W({method:q(`wallet_getAdmins`),params:J(Y(K([e.Parameters])))}),e.Key=kz,e.Response=W({address:X(),chainId:Q(),keys:Y(U(e.Key))})})(Uz||={});var Wz;(function(e){e.Capabilities=W({feeToken:J(Sz.Request)}),e.Parameters=W({address:J(X()),capabilities:J(e.Capabilities),chainId:J(Q()),key:RF(sz,{publicKey:!0,type:!0})}),e.Request=W({method:q(`wallet_grantAdmin`),params:Y(K([e.Parameters]))}),e.Response=W({address:X(),chainId:Q(),key:Uz.Key})})(Wz||={});var Gz;(function(e){e.Parameters=hz,e.Request=W({method:q(`wallet_grantPermissions`),params:Y(K([e.Parameters]))}),e.ResponseCapabilities=W({preCalls:J(Ez.Response)}),e.Response=W({...mz.shape,capabilities:J(jF())})})(Gz||={});var Kz;(function(e){e.Parameters=W({address:J(X())}),e.Request=W({method:q(`wallet_getAccountVersion`),params:J(Y(K([e.Parameters])))}),e.Response=W({current:V(),latest:V()})})(Kz||={});var qz;(function(e){e.Parameters=W({address:J(X()),chainIds:J(Y(U(Q())))}),e.Request=W({method:q(`wallet_getPermissions`),params:J(Y(K([e.Parameters])))}),e.Response=Tz.Response})(qz||={});var Jz;(function(e){e.Capabilities=W({feeToken:J(Sz.Request)}),e.Parameters=W({address:J(X()),capabilities:J(e.Capabilities),chainId:J(Q()),id:Z()}),e.Request=W({method:q(`wallet_revokeAdmin`),params:Y(K([e.Parameters]))}),e.Response=void 0})(Jz||={});var Yz;(function(e){e.Capabilities=W({feeToken:J(Sz.Request)}),e.Parameters=W({address:J(X()),capabilities:J(e.Capabilities),id:Z()}),e.Request=W({method:q(`wallet_revokePermissions`),params:Y(K([e.Parameters]))}),e.Response=void 0})(Yz||={});var Xz;(function(e){e.Request=W({method:q(`wallet_switchEthereumChain`),params:Y(K([W({chainId:Z()})]))})})(Xz||={});var Zz;(function(e){e.Parameters=W({context:NF(),signatures:W({auth:Z(),exec:Z()})}),e.Request=W({method:q(`wallet_upgradeAccount`),params:Y(K([e.Parameters]))}),e.ResponseCapabilities=W({admins:J(Y(U(Uz.Key))),permissions:J(Tz.Response)}),e.Response=W({address:X(),capabilities:J(e.ResponseCapabilities)})})(Zz||={});var Qz;(function(e){e.Request=W({method:q(`personal_sign`),params:Y(K([Z(),X()]))}),e.Response=Z()})(Qz||={});var $z;(function(e){e.Request=W({method:q(`porto_ping`),params:J(DF())}),e.Response=q(`pong`)})($z||={});var eB;(function(e){e.Capabilities=W({createAccount:J(bz.Request),email:J(CF()),grantAdmins:J(Y(U(RF(sz,{publicKey:!0,type:!0})))),grantPermissions:J(Cz.Request),preCalls:J(Ez.Request),selectAccount:J(G([CF(),W({address:X(),key:J(W({credentialId:J(V()),publicKey:Z()}))})])),signInWithEthereum:J(xz.Request)}),e.Parameters=W({capabilities:J(e.Capabilities),chainIds:J(Y(U(Q())))}),e.Request=W({method:q(`wallet_connect`),params:J(Y(K([e.Parameters])))}),e.ResponseCapabilities=W({admins:J(Y(U(W({...RF(sz,{id:!0,publicKey:!0,type:!0}).shape,credentialId:J(V())})))),permissions:J(Tz.Response),preCalls:J(Ez.Response),signInWithEthereum:J(xz.Response)}),e.Response=W({accounts:Y(U(W({address:X(),capabilities:J(e.ResponseCapabilities)}))),chainIds:Y(U(Q()))})})(eB||={});var tB;(function(e){e.Request=W({method:q(`wallet_disconnect`),params:J(NF())}),e.Response=void 0})(tB||={});var nB;(function(e){e.Parameters=kR.Parameters,e.Request=kR.Request,e.Response=kR.Response})(nB||={});var rB;(function(e){e.Request=W({method:q(`wallet_getCallsStatus`),params:K([Z()])}),e.Response=W({atomic:CF(),chainId:Q(),id:V(),receipts:J(Y(U(W({blockHash:Z(),blockNumber:Z(),gasUsed:Z(),logs:Y(U(W({address:X(),data:Z(),topics:Y(U(Z()))}))),status:Z(),transactionHash:Z()})))),status:H(),version:V()})})(rB||={});var iB;(function(e){e.Request=W({method:q(`wallet_getCapabilities`),params:J(G([Y(K([G([Z(),DF()])])),Y(K([G([Z(),DF()]),Y(U(Q()))]))]))}),e.Response=KF(Z(),W({atomic:yz.GetCapabilitiesResponse,feeToken:Sz.GetCapabilitiesResponse,merchant:wz.GetCapabilitiesResponse,permissions:Tz.GetCapabilitiesResponse,requiredFunds:Oz.GetCapabilitiesResponse}))})(iB||={});var aB;(function(e){e.Parameters=W({address:X(),chainIds:J(Y(U(Q())))}),e.Request=W({method:q(`wallet_getKeys`),params:Y(K([e.Parameters]))}),e.Response=Y(U(pz))})(aB||={});var oB;(function(e){e.Capabilities=W({feeToken:J(Sz.Request),merchantUrl:J(Dz.Request),permissions:J(Tz.Request),preCalls:J(Ez.Request),requiredFunds:J(Oz.Request)}),e.Parameters=W({calls:Y(U(W({data:J(Z()),to:X(),value:J($())}))),capabilities:J(e.Capabilities),chainId:J(Q()),from:J(X()),key:J(RF(sz,{prehash:!0,publicKey:!0,type:!0})),version:J(V())}),e.Request=W({method:q(`wallet_prepareCalls`),params:Y(K([e.Parameters]))}),e.Response=W({capabilities:J(W({...MR.ResponseCapabilities.shape,quote:J(dR)})),chainId:Z(),context:W({account:W({address:X()}),calls:e.Parameters.shape.calls,nonce:$(),quote:J(BF(dR))}),digest:Z(),key:RF(sz,{prehash:!0,publicKey:!0,type:!0}),typedData:W({domain:G([W({chainId:Q(),name:V(),verifyingContract:X(),version:V()}),W({})]),message:KF(V(),NF()),primaryType:V(),types:KF(V(),NF())})})})(oB||={});var sB;(function(e){e.Capabilities=W({...eB.Capabilities.shape,label:J(V())}),e.Parameters=W({address:X(),capabilities:J(e.Capabilities),chainId:J(Q())}),e.Request=W({method:q(`wallet_prepareUpgradeAccount`),params:Y(K([e.Parameters]))}),e.Response=W({context:NF(),digests:W({auth:Z(),exec:Z()})})})(sB||={});var cB;(function(e){e.Capabilities=oB.Capabilities,e.Request=W({method:q(`wallet_sendCalls`),params:Y(K([zF(oB.Parameters,{key:!0})]))}),e.Response=W({id:Z()})})(cB||={});var lB;(function(e){e.Parameters=W({capabilities:oB.Response.shape.capabilities,chainId:Z(),context:oB.Response.shape.context,key:oB.Response.shape.key,signature:Z()}),e.Request=W({method:q(`wallet_sendPreparedCalls`),params:Y(K([e.Parameters]))}),e.Response=Y(U(W({capabilities:J(KF(V(),NF())),id:Z()})))})(lB||={});var uB;(function(e){e.Parameters=W({address:X(),chainId:J(Q()),digest:Z(),signature:Z()}),e.Request=W({method:q(`wallet_verifySignature`),params:Y(K([e.Parameters]))}),e.Response=W({address:X(),chainId:Q(),proof:J(NF()),valid:CF()})})(uB||={});const dB=UF(`method`,[Fz.Request,Lz.Request,Rz.Request,zz.Request,Bz.Request,Vz.Request,Hz.Request,Kz.Request,Uz.Request,qz.Request,Wz.Request,Gz.Request,sB.Request,Jz.Request,Yz.Request,Zz.Request,Qz.Request,$z.Request,eB.Request,tB.Request,nB.Request,rB.Request,iB.Request,aB.Request,oB.Request,cB.Request,lB.Request,Xz.Request,uB.Request]);function fB(e,t){let n=uP(e,t);if(n.error){let e=n.error.issues.at(0);throw e?.code===`invalid_union`&&e.note===`No matching discriminator`?new MM:new LM(WL(n.error))}return{...t,_decoded:n.data}}async function pB(e){e.persist.hasHydrated()||await new Promise(t=>{e.persist.onFinishHydration(()=>t(!0)),setTimeout(()=>t(!0),100)})}function mB(e){if(e)return e.startsWith(`/`)?`${window.location.origin}${e}`:e}ap(),ff();function hB(e){let{config:t,getMode:n,id:r,store:i}=e,{announceProvider:a}=t;function o(e={}){let a=s(),o=e.request??fB(dB,{method:`wallet_getCapabilities`,params:e.chainIds?[void 0,e.chainIds]:void 0});return wm(()=>n().actions.getCapabilities({chainIds:e.chainIds,internal:{client:a,config:t,request:o,store:i}}),{cacheKey:`getCapabilities.${r}.${e.chainIds?.join(`,`)}`})}function s(t){let n=typeof t==`string`?Yf(t):t;return oz({_internal:e},{chainId:n})}let c=new Map,l=[],u=eN(),d=tN({...u,async request(e){await pB(i);let r=[`eth_accounts`,`eth_chainId`,`eth_requestAccounts`,`wallet_getAssets`,`wallet_getCapabilities`,`wallet_getKeys`,`wallet_getPermissions`,`wallet_getAccountVersion`,`wallet_connect`].includes(e.method);return hN(async()=>{let r;try{r=fB(dB,e)}catch(t){let n=t;if(!(n instanceof MM))throw n;if(e.method.startsWith(`wallet_`))throw new UM;return s().request(e)}let a=i.getState();switch(r.method){case`account_verifyEmail`:{if(a.accounts.length===0)throw new WM;let[e]=r._decoded.params,{chainId:o,email:c,token:l,walletAddress:u}=e,d=s(o);if(o&&o!==d.chain.id)throw new GM;let f=u?a.accounts.find(e=>ig(e.address,u)):a.accounts[0];if(!f)throw new HM;return await n().actions.verifyEmail({account:f,chainId:o,email:c,internal:{client:d,config:t,request:r,store:i},token:l,walletAddress:u})}case`wallet_addFunds`:{if(a.accounts.length===0)throw new WM;let{address:e,value:o,token:c}=r.params[0]??{},l=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!l)throw new HM;let d=s(),f=await n().actions.addFunds({address:l.address,internal:{client:d,config:t,request:r,store:i},token:c,value:o});return u.emit(`message`,{data:null,type:`assetsChanged`}),f}case`eth_accounts`:if(a.accounts.length===0)throw new WM;return a.accounts.map(yB);case`eth_chainId`:return L(a.chainIds[0]);case`eth_requestAccounts`:{if(a.accounts.length>0&&c.get(`eth_requestAccounts`))return a.accounts.map(yB);let e=s(),{accounts:o}=await n().actions.loadAccounts({internal:{client:e,config:t,request:r,store:i}});return i.setState(e=>({...e,accounts:o})),u.emit(`connect`,{chainId:L(e.chain.id)}),c.set(`eth_requestAccounts`,!0),setTimeout(()=>c.delete(`eth_requestAccounts`),1e3),o.map(yB)}case`eth_sendTransaction`:{if(a.accounts.length===0)throw new WM;let[{capabilities:e,chainId:o,data:c=`0x`,from:l,to:u,value:d}]=r._decoded.params,f=s(o);if(o&&o!==f.chain.id)throw new GM;let p=l?a.accounts.find(e=>ig(e.address,l)):a.accounts[0];if(!p)throw new HM;let{id:m}=await n().actions.sendCalls({account:p,asTxHash:!0,calls:[{data:c,to:u,value:d}],chainId:f.chain.id,internal:{client:f,config:t,request:r,store:i},merchantUrl:mB(t.merchantUrl??e?.merchantUrl)});return m}case`eth_signTypedData_v4`:{if(a.accounts.length===0)throw new WM;let[e,o]=r._decoded.params,c=a.accounts.find(t=>ig(t.address,e));if(!c)throw new HM;let l=s();return await n().actions.signTypedData({account:c,data:o,internal:{client:l,config:t,request:r,store:i}})}case`wallet_grantAdmin`:{if(a.accounts.length===0)throw new WM;let[{address:e,capabilities:o,chainId:c,key:l}]=r._decoded.params??[{}],d=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!d)throw new HM;let f=s(c);if(_B([...d.keys??[]])?.some(e=>e.publicKey?.toLowerCase()===l.publicKey.toLowerCase()))throw new LM({message:`Key already granted as admin.`});let{key:p}=await n().actions.grantAdmin({account:d,feeToken:o?.feeToken,internal:{client:f,config:t,request:r,store:i},key:l});i.setState(e=>{let t=e.accounts.findIndex(e=>d?ig(e.address,d.address):!0);return t===-1?e:{...e,accounts:e.accounts.map((e,n)=>n===t?{...e,keys:[...e.keys??[],p]}:e)}});let m=_B([...d.keys??[],p]);return u.emit(`message`,{data:null,type:`adminsChanged`}),fP(Wz.Response,{address:d.address,chainId:f.chain.id,key:m.at(-1)})}case`wallet_grantPermissions`:{if(a.accounts.length===0)throw new WM;let[{address:e,chainId:o,...c}]=r._decoded.params??[{}],l=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!l)throw new HM;let d=s(o),{key:f}=await n().actions.grantPermissions({account:l,internal:{client:d,config:t,request:r,store:i},permissions:c});return i.setState(e=>{let t=e.accounts.findIndex(e=>l?ig(e.address,l.address):!0);return t===-1?e:{...e,accounts:e.accounts.map((e,n)=>n===t?{...e,keys:[...e.keys??[],f]}:e)}}),u.emit(`message`,{data:null,type:`permissionsChanged`}),fP(Gz.Response,{..._z(f,{address:l.address})})}case`wallet_getAdmins`:{if(a.accounts.length===0)throw new WM;let[{address:e,chainId:o}]=r._decoded.params??[{}],c=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!c)throw new HM;let l=s(o),u=await n().actions.getKeys({account:c,internal:{client:l,config:t,request:r,store:i}}),d=_B(u);return fP(Uz.Response,{address:c.address,chainId:l.chain.id,keys:d})}case`wallet_prepareUpgradeAccount`:{let[{address:e,capabilities:a,chainId:o}]=r._decoded.params??[{}],{email:c,label:u,grantPermissions:d}=a??{},f=s(o),{context:p,digests:m}=await n().actions.prepareUpgradeAccount({address:e,email:c,internal:{client:f,config:t,request:r,store:i},label:u,permissions:d});return l.push(p.account),{context:p,digests:m}}case`wallet_getAccountVersion`:{if(a.accounts.length===0)throw new WM;let[{address:e}]=r._decoded.params??[{}],o=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!o)throw new HM;let c=s(),{current:l,latest:u}=await n().actions.getAccountVersion({address:o.address,internal:{client:c,config:t,request:r,store:i}});return{current:l,latest:u}}case`wallet_getKeys`:{if(a.accounts.length===0)throw new WM;let[{address:e,chainIds:o}]=r._decoded.params??[{}],c=a.accounts.find(t=>ig(t.address,e));if(!c)throw new HM;let l=s(),u=await n().actions.getKeys({account:c,chainIds:o,internal:{client:l,config:t,request:r,store:i}});return fP(aB.Response,u)}case`wallet_getPermissions`:{if(a.accounts.length===0)throw new WM;let[{address:e,chainIds:o}]=r._decoded.params??[{}],c=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!c)throw new HM;let l=s(),u=await n().actions.getKeys({account:c,chainIds:o,internal:{client:l,config:t,request:r,store:i}});return vB(u,{address:c.address})}case`wallet_revokeAdmin`:{if(a.accounts.length===0)throw new WM;let[{address:e,capabilities:o,id:c}]=r._decoded.params,l=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!l)throw new HM;let d=s();await n().actions.revokeAdmin({account:l,feeToken:o?.feeToken,id:c,internal:{client:d,config:t,request:r,store:i}});let f=l.keys?.filter(e=>e.id.toLowerCase()!==c.toLowerCase());i.setState(e=>({...e,accounts:e.accounts.map(e=>ig(e.address,l.address)?{...e,keys:f}:e)})),u.emit(`message`,{data:null,type:`adminsChanged`});return}case`wallet_revokePermissions`:{if(a.accounts.length===0)throw new WM;let[{address:e,capabilities:o,id:c}]=r._decoded.params,l=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!l)throw new HM;let d=s();await n().actions.revokePermissions({account:l,feeToken:o?.feeToken,id:c,internal:{client:d,config:t,request:r,store:i}});let f=l.keys?.filter(e=>e.id.toLowerCase()!==c.toLowerCase());i.setState(e=>({...e,accounts:e.accounts.map(e=>ig(e.address,l.address)?{...e,keys:f}:e)})),u.emit(`message`,{data:null,type:`permissionsChanged`});return}case`wallet_upgradeAccount`:{let[{context:e,signatures:a}]=r._decoded.params??[{}],o=s(),c=l.find(t=>ig(t.address,e.account.address));if(!c)throw new HM;let{account:d}=await n().actions.upgradeAccount({account:c,context:e,internal:{client:o,config:t,request:r,store:i},signatures:a}),f=_B(d.keys??[]),p=vB(d.keys??[],{address:d.address});return i.setState(e=>({...e,accounts:[d]})),u.emit(`connect`,{chainId:L(o.chain.id)}),{address:d.address,capabilities:{admins:f,...p.length>0?{permissions:p}:{}}}}case`porto_ping`:return`pong`;case`personal_sign`:{if(a.accounts.length===0)throw new WM;let[e,o]=r._decoded.params,c=a.accounts.find(e=>ig(e.address,o));if(!c)throw new HM;let l=s();return await n().actions.signPersonalMessage({account:c,data:e,internal:{client:l,config:t,request:r,store:i}})}case`wallet_connect`:{let[{capabilities:e,chainIds:o}]=r._decoded.params??[{}],c=s(o?.[0]),l=c.chain.id,{createAccount:d,email:f,grantAdmins:p,grantPermissions:m,selectAccount:h,signInWithEthereum:g}=e??{},_={client:c,config:t,request:r,store:i},{accounts:v}=await(async()=>{if(f||d){let{label:e=void 0}=typeof d==`object`?d:{},{account:t}=await n().actions.createAccount({admins:p,email:f,internal:_,label:e,permissions:m,signInWithEthereum:g});return{accounts:[t]}}let e=a.accounts[0],{address:t,key:r}=(()=>{if(h)return typeof h==`object`?h:{address:void 0,key:void 0};for(let t of e?.keys??[])if(t.type===`webauthn-p256`&&t.role===`admin`)return{address:e?.address,key:{credentialId:t.credentialId??t.privateKey?.credential?.id,publicKey:t.publicKey}};return{address:void 0,key:void 0}})(),i={internal:_,permissions:m,signInWithEthereum:g};try{return await n().actions.loadAccounts({address:t,key:r,...i})}catch(e){if(e instanceof VM)throw e;if(t&&r)return await n().actions.loadAccounts(i);throw e}})();i.setState(e=>({...e,accounts:v}));let y=[l,...i.getState().chainIds.filter(e=>e!==l)];return u.emit(`connect`,{chainId:L(y[0])}),{accounts:v.map(e=>({address:yB(e),capabilities:{admins:e.keys?_B(e.keys):[],permissions:e.keys?vB(e.keys,{address:e.address}):[],...e.signInWithEthereum&&{signInWithEthereum:e.signInWithEthereum}}})),chainIds:y.map(e=>L(e))}}case`wallet_disconnect`:{let e=s();await n().actions.disconnect?.({internal:{client:e,config:t,request:r,store:i}}),i.setState(e=>({...e,accounts:[]})),u.emit(`disconnect`,new WM);return}case`wallet_getAssets`:{let[e]=r._decoded.params??[],{account:a,chainFilter:o,assetFilter:c,assetTypeFilter:l}=e,u=s(),d=await n().actions.getAssets({account:a,assetFilter:c,assetTypeFilter:l,chainFilter:o,internal:{client:u,config:t,request:r,store:i}}),f=Object.entries(d).reduce((e,[t,n])=>(e[L(Number(t))]=n,e),{});return fP(nB.Response,f)}case`wallet_getCallsStatus`:{let[e]=r._decoded.params??[],a=s();return await n().actions.getCallsStatus({id:e,internal:{client:a,config:t,request:r,store:i}})}case`wallet_getCapabilities`:{let[e,t]=r.params??[];return await o({chainIds:t,request:r})}case`wallet_prepareCalls`:{let[e]=r._decoded.params,{calls:o,capabilities:c,chainId:l,key:u,from:d}=e,f=s(l),p=d??a.accounts[0];if(!p)throw new HM;if(l&&l!==f.chain.id)throw new GM;let{digest:m,...h}=await n().actions.prepareCalls({account:jL(p),calls:o,feeToken:c?.feeToken,internal:{client:f,config:t,request:r,store:i},key:u,merchantUrl:mB(t.merchantUrl??c?.merchantUrl),requiredFunds:c?.requiredFunds});return fP(oB.Response,{capabilities:h.capabilities,chainId:L(h.chainId??f.chain.id),context:{...h.context,account:{address:h.account.address},calls:h.context.calls??[],nonce:h.context.nonce??0n},digest:m,key:h.key,typedData:h.typedData})}case`wallet_sendPreparedCalls`:{let[e]=r._decoded.params,{chainId:a,context:o,key:c,signature:l}=e,{account:u}=e.context,d=s(a);if(a&&Yf(a)!==d.chain.id)throw new GM;return[{id:await n().actions.sendPreparedCalls({account:jL(u),context:o,internal:{client:d,config:t,request:r,store:i},key:c,signature:l})}]}case`wallet_sendCalls`:{if(a.accounts.length===0)throw new WM;let[e]=r._decoded.params,{calls:o,capabilities:c,chainId:l,from:u}=e,d=s(l);if(l&&l!==d.chain.id)throw new GM;let f=u?a.accounts.find(e=>ig(e.address,u)):a.accounts[0];if(!f)throw new HM;let{id:p}=await n().actions.sendCalls({account:f,calls:o,chainId:d.chain.id,feeToken:c?.feeToken,internal:{client:d,config:t,request:r,store:i},merchantUrl:mB(t.merchantUrl??c?.merchantUrl),permissionsId:c?.permissions?.id,requiredFunds:c?.requiredFunds});return{id:p}}case`wallet_switchEthereumChain`:{let[e]=r._decoded.params,{chainId:a}=e,o=Yf(a);if(!t.chains.find(e=>e.id===o))throw new JM;let c=s(a);await n().actions.switchChain?.({chainId:c.chain.id,internal:{client:c,config:t,request:r,store:i}}),i.setState(e=>({...e,chainIds:[o,...e.chainIds.filter(e=>e!==o)]}));return}case`wallet_verifySignature`:{let[e]=r._decoded.params,{address:t,chainId:n,digest:i,signature:a}=e,o=s(n);return{...await ZR(o,{address:t,digest:i,signature:a}),address:t,chainId:L(o.chain.id)}}}},{enabled:r,id:uf(e)})}});function f(){let e=()=>{},t=()=>{};pB(i).then(()=>{o().catch(()=>{}),e(),e=i.subscribe(e=>e.accounts,e=>{u.emit(`accountsChanged`,e.map(yB))},{equalityFn:(e,t)=>e.every((e,n)=>e.address===t[n]?.address)}),t(),t=i.subscribe(e=>e.chainIds[0],(e,t)=>{e!==t&&u.emit(`chainChanged`,L(e))})});let n=gB(d,a);return()=>{e(),t(),n()}}let p=f();return Object.assign(d,{_internal:{destroy:p}})}function gB(e,t){if(!t||typeof window>`u`||!window.dispatchEvent)return()=>{};let{icon:n=`data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIyIiBoZWlnaHQ9IjQyMiIgdmlld0JveD0iMCAwIDQyMiA0MjIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI0MjIiIGhlaWdodD0iNDIyIiBmaWxsPSJibGFjayIvPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMV8xNSkiPgo8cGF0aCBkPSJNODEgMjg2LjM2NkM4MSAyODAuODkzIDg1LjQ1MDUgMjc2LjQ1NSA5MC45NDA0IDI3Ni40NTVIMzI5LjUxMUMzMzUuMDAxIDI3Ni40NTUgMzM5LjQ1MiAyODAuODkzIDMzOS40NTIgMjg2LjM2NlYzMDYuMTg4QzMzOS40NTIgMzExLjY2MiAzMzUuMDAxIDMxNi4wOTkgMzI5LjUxMSAzMTYuMDk5SDkwLjk0MDRDODUuNDUwNSAzMTYuMDk5IDgxIDMxMS42NjIgODEgMzA2LjE4OFYyODYuMzY2WiIgZmlsbD0id2hpdGUiIGZpbGwtb3BhY2l0eT0iMC41Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTAuOTQwNCAyMzQuODI4Qzg1LjQ1MDUgMjM0LjgyOCA4MSAyMzkuMjY2IDgxIDI0NC43MzlWMjcxLjUzMUM4My44NDMyIDI2OS42MzMgODcuMjYyMiAyNjguNTI2IDkwLjk0MDQgMjY4LjUyNkgzMjkuNTExQzMzMy4xODggMjY4LjUyNiAzMzYuNjA4IDI2OS42MzMgMzM5LjQ1MiAyNzEuNTMxVjI0NC43MzlDMzM5LjQ1MiAyMzkuMjY2IDMzNS4wMDEgMjM0LjgyOCAzMjkuNTExIDIzNC44MjhIOTAuOTQwNFpNMzM5LjQ1MiAyODYuMzY2QzMzOS40NTIgMjgwLjg5MyAzMzUuMDAxIDI3Ni40NTUgMzI5LjUxMSAyNzYuNDU1SDkwLjk0MDRDODUuNDUwNSAyNzYuNDU1IDgxIDI4MC44OTMgODEgMjg2LjM2NlYzMDYuMTlDODEgMzExLjY2NCA4NS40NTA1IDMxNi4xMDEgOTAuOTQwNCAzMTYuMTAxSDMyOS41MTFDMzM1LjAwMSAzMTYuMTAxIDMzOS40NTIgMzExLjY2NCAzMzkuNDUyIDMwNi4xOVYyODYuMzY2WiIgZmlsbD0id2hpdGUiIGZpbGwtb3BhY2l0eT0iMC41Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTAuOTQwNCAxOTMuMjAxQzg1LjQ1MDUgMTkzLjIwMSA4MSAxOTcuNjM4IDgxIDIwMy4xMTJWMjI5LjkwM0M4My44NDMyIDIyOC4wMDYgODcuMjYyMiAyMjYuODk5IDkwLjk0MDQgMjI2Ljg5OUgzMjkuNTExQzMzMy4xODggMjI2Ljg5OSAzMzYuNjA4IDIyOC4wMDYgMzM5LjQ1MiAyMjkuOTAzVjIwMy4xMTJDMzM5LjQ1MiAxOTcuNjM4IDMzNS4wMDEgMTkzLjIwMSAzMjkuNTExIDE5My4yMDFIOTAuOTQwNFpNMzM5LjQ1MiAyNDQuNzM5QzMzOS40NTIgMjM5LjI2NSAzMzUuMDAxIDIzNC44MjggMzI5LjUxMSAyMzQuODI4SDkwLjk0MDRDODUuNDUwNSAyMzQuODI4IDgxIDIzOS4yNjUgODEgMjQ0LjczOVYyNzEuNTNDODEuMjE3NSAyNzEuMzg1IDgxLjQzODMgMjcxLjI0NSA4MS42NjI0IDI3MS4xMDlDODMuODMyNSAyNjkuNzk0IDg2LjMwNTQgMjY4LjkyNyA4OC45NTIzIDI2OC42MzVDODkuNjA1MSAyNjguNTYzIDkwLjI2ODQgMjY4LjUyNiA5MC45NDA0IDI2OC41MjZIMzI5LjUxMUMzMzAuMTgzIDI2OC41MjYgMzMwLjg0NiAyNjguNTYzIDMzMS40OTggMjY4LjYzNUMzMzQuNDE5IDI2OC45NTcgMzM3LjEyOCAyNjkuOTggMzM5LjQ1MiAyNzEuNTNWMjQ0LjczOVpNMzM5LjQ1MiAyODYuMzY2QzMzOS40NTIgMjgxLjAyMSAzMzUuMjA2IDI3Ni42NjMgMzI5Ljg5MyAyNzYuNDYyQzMyOS43NjcgMjc2LjQ1NyAzMjkuNjQgMjc2LjQ1NSAzMjkuNTExIDI3Ni40NTVIOTAuOTQwNEM4NS40NTA1IDI3Ni40NTUgODEgMjgwLjg5MyA4MSAyODYuMzY2VjMwNi4xODhDODEgMzExLjY2MiA4NS40NTA1IDMxNi4xMDEgOTAuOTQwNCAzMTYuMTAxSDMyOS41MTFDMzM1LjAwMSAzMTYuMTAxIDMzOS40NTIgMzExLjY2MiAzMzkuNDUyIDMwNi4xODhWMjg2LjM2NloiIGZpbGw9IndoaXRlIiBmaWxsLW9wYWNpdHk9IjAuNSIvPgo8cGF0aCBvcGFjaXR5PSIwLjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTguMDE0NiAxMDRDODguNjE3NyAxMDQgODEgMTExLjU5NSA4MSAxMjAuOTY1VjE4OC4yNzZDODMuODQzMiAxODYuMzc5IDg3LjI2MjIgMTg1LjI3MiA5MC45NDA0IDE4NS4yNzJIMzI5LjUxMUMzMzMuMTg4IDE4NS4yNzIgMzM2LjYwOCAxODYuMzc5IDMzOS40NTIgMTg4LjI3NlYxMjAuOTY1QzMzOS40NTIgMTExLjU5NSAzMzEuODMzIDEwNCAzMjIuNDM3IDEwNEg5OC4wMTQ2Wk0zMzkuNDUyIDIwMy4xMTJDMzM5LjQ1MiAxOTcuNjM4IDMzNS4wMDEgMTkzLjIwMSAzMjkuNTExIDE5My4yMDFIOTAuOTQwNEM4NS40NTA1IDE5My4yMDEgODEgMTk3LjYzOCA4MSAyMDMuMTEyVjIyOS45MDNDODEuMjE3NSAyMjkuNzU4IDgxLjQzODMgMjI5LjYxOCA4MS42NjI0IDIyOS40ODJDODMuODMyNSAyMjguMTY3IDg2LjMwNTQgMjI3LjMgODguOTUyMyAyMjcuMDA4Qzg5LjYwNTEgMjI2LjkzNiA5MC4yNjg0IDIyNi44OTkgOTAuOTQwNCAyMjYuODk5SDMyOS41MTFDMzMwLjE4MyAyMjYuODk5IDMzMC44NDYgMjI2LjkzNiAzMzEuNDk4IDIyNy4wMDhDMzM0LjQxOSAyMjcuMzMgMzM3LjEyOCAyMjguMzUyIDMzOS40NTIgMjI5LjkwM1YyMDMuMTEyWk0zMzkuNDUyIDI0NC43MzlDMzM5LjQ1MiAyMzkuMzkzIDMzNS4yMDYgMjM1LjAzNiAzMjkuODkzIDIzNC44MzVDMzI5Ljc2NyAyMzQuODMgMzI5LjY0IDIzNC44MjggMzI5LjUxMSAyMzQuODI4SDkwLjk0MDRDODUuNDUwNSAyMzQuODI4IDgxIDIzOS4yNjUgODEgMjQ0LjczOVYyNzEuNTNMODEuMDcwNyAyNzEuNDgzQzgxLjI2NTMgMjcxLjM1NSA4MS40NjI1IDI3MS4yMyA4MS42NjI0IDI3MS4xMDlDODEuOTA4MyAyNzAuOTYgODIuMTU4MSAyNzAuODE3IDgyLjQxMTcgMjcwLjY3OUM4NC4zOTUzIDI2OS42MDUgODYuNjA1NCAyNjguODk0IDg4Ljk1MjMgMjY4LjYzNUM4OS4wMDUyIDI2OC42MjkgODkuMDU4IDI2OC42MjQgODkuMTExIDI2OC42MThDODkuNzEyNSAyNjguNTU3IDkwLjMyMjggMjY4LjUyNiA5MC45NDA0IDI2OC41MjZIMzI5LjUxMUMzMjkuNzM4IDI2OC41MjYgMzI5Ljk2NSAyNjguNTMgMzMwLjE5MiAyNjguNTM5QzMzMC42MzEgMjY4LjU1NSAzMzEuMDY3IDI2OC41ODcgMzMxLjQ5OCAyNjguNjM1QzMzNC40MTkgMjY4Ljk1NyAzMzcuMTI4IDI2OS45OCAzMzkuNDUyIDI3MS41M1YyNDQuNzM5Wk0zMzkuNDUyIDI4Ni4zNjZDMzM5LjQ1MiAyODEuMDIxIDMzNS4yMDYgMjc2LjY2MyAzMjkuODkzIDI3Ni40NjJMMzI5Ljg2NSAyNzYuNDYxQzMyOS43NDggMjc2LjQ1NyAzMjkuNjI5IDI3Ni40NTUgMzI5LjUxMSAyNzYuNDU1SDkwLjk0MDRDODUuNDUwNSAyNzYuNDU1IDgxIDI4MC44OTMgODEgMjg2LjM2NlYzMDYuMTg4QzgxIDMxMS42NjIgODUuNDUwNSAzMTYuMTAxIDkwLjk0MDQgMzE2LjEwMUgzMjkuNTExQzMzNS4wMDEgMzE2LjEwMSAzMzkuNDUyIDMxMS42NjIgMzM5LjQ1MiAzMDYuMTg4VjI4Ni4zNjZaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjY5Ljg2OCAxMzEuNzUyQzI2OS44NjggMTI2LjI3OCAyNzQuMzE4IDEyMS44NCAyNzkuODA4IDEyMS44NEgzMTEuNjE4QzMxNy4xMDggMTIxLjg0IDMyMS41NTggMTI2LjI3OCAzMjEuNTU4IDEzMS43NTJWMTYxLjQ4NUMzMjEuNTU4IDE2Ni45NTkgMzE3LjEwOCAxNzEuMzk2IDMxMS42MTggMTcxLjM5NkgyNzkuODA4QzI3NC4zMTggMTcxLjM5NiAyNjkuODY4IDE2Ni45NTkgMjY5Ljg2OCAxNjEuNDg1VjEzMS43NTJaIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzFfMTUiPgo8cmVjdCB3aWR0aD0iMjU5IiBoZWlnaHQ9IjIxMyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgxIDEwNCkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K`,name:r=`Porto`,rdns:i=`xyz.ithaca.porto`}=typeof t==`object`?t:{};return AN({info:{icon:n,name:r,rdns:i,uuid:mN()},provider:e})}function _B(e){return e.map(e=>{if(e.role===`admin`)try{return fP(Uz.Key,{id:e.id??e.publicKey,publicKey:e.publicKey,type:e.type,...e.type===`webauthn-p256`?{credentialId:e.privateKey?.credential?.id,privateKey:{credential:{id:e.privateKey?.credential?.id},rpId:e.privateKey?.rpId}}:{}})}catch{return}}).filter(Boolean)}function vB(e,{address:t}){return e.map(e=>{if(e.chainId&&e.role===`session`&&!(e.expiry>0&&e.expiry()=>{})}}async function xB(e){let{account:t,calls:n,permissionsId:r}=e;if(r!==void 0){if(r===null)return;let e=t.keys?.find(e=>e.publicKey===r&&e.privateKey);if(!e)throw Error(`permission (id: ${r}) does not exist.`);return e}let i=t.keys?.find(e=>!e.privateKey||e.role!==`session`||e.expirye.permissions?.calls?.some(e=>{if(e.to&&e.to!==t.to)return!1;if(e.signature){if(!t.data)return!1;let n=Gf(t.data,0,4);if(Xf(e.signature))return e.signature===n;if(U_(e.signature)!==n)return!1}return!0}))),a=t.keys?.find(e=>e.role===`admin`&&e.privateKey);return i??a}function SB(e={}){let t=e.id??0;return{prepare(e){return CB({id:t++,...e})},get id(){return t}}}function CB(e){return{...e,jsonrpc:`2.0`}}function wB(){return null}const TB=hz;function EB(e){let{expiry:t,feeToken:n,permissions:r,publicKey:i,type:a}=e;return{expiry:t,feeToken:n??null,key:{publicKey:i,type:a},permissions:r??{}}}async function DB(e,t={}){if(!e)return;let n=t.chainId??e.chainId,r=e.expiry??0,i=e.feeToken,a=DL(e,{feeTokens:t.feeTokens}),o={chainId:n,expiry:r,feeToken:i,permissions:a,role:`session`};if(e?.key)return _L({...o,publicKey:e.key.publicKey,type:e.key.type??`secp256k1`});if(typeof globalThis.crypto?.subtle?.generateKey==`function`)try{return await gL(o)}catch(e){if(!OB(e))throw e}return pL(o)}function OB(e){if(!(e instanceof Error))return!1;let t=e.message?.toLowerCase()??``;return e.name===`TypeError`||e.name===`ReferenceError`||t.includes(`subtle`)||t.includes(`generatekey`)}qd();const kB=/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(:[0-9]{1,5})?$/,AB=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:[0-9]{1,5})?$/,jB=/^localhost(:[0-9]{1,5})?$/,MB=/^[a-zA-Z0-9]{8,}$/,NB=/^([a-zA-Z][a-zA-Z0-9+-.]*)$/,PB=/^(?:(?[a-zA-Z][a-zA-Z0-9+-.]*):\/\/)?(?[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\n)(?
0x[a-fA-F0-9]{40})\n\n(?:(?.*)\n\n)?/,FB=/(?:URI: (?.+))\n(?:Version: (?.+))\n(?:Chain ID: (?\d+))\n(?:Nonce: (?[a-zA-Z0-9]+))\n(?:Issued At: (?.+))(?:\nExpiration Time: (?.+))?(?:\nNot Before: (?.+))?(?:\nRequest ID: (?.+))?/;function IB(e){let{chainId:t,domain:n,expirationTime:r,issuedAt:i=new Date,nonce:a,notBefore:o,requestId:s,resources:c,scheme:l,uri:u,version:d}=e;{if(t!==Math.floor(t))throw new BB({field:`chainId`,metaMessages:[`- Chain ID must be a EIP-155 chain ID.`,`- See https://eips.ethereum.org/EIPS/eip-155`,``,`Provided value: ${t}`]});if(!(kB.test(n)||AB.test(n)||jB.test(n)))throw new BB({field:`domain`,metaMessages:[`- Domain must be an RFC 3986 authority.`,`- See https://www.rfc-editor.org/rfc/rfc3986`,``,`Provided value: ${n}`]});if(!MB.test(a))throw new BB({field:`nonce`,metaMessages:[`- Nonce must be at least 8 characters.`,`- Nonce must be alphanumeric.`,``,`Provided value: ${a}`]});if(!LB(u))throw new BB({field:`uri`,metaMessages:[`- URI must be a RFC 3986 URI referring to the resource that is the subject of the signing.`,`- See https://www.rfc-editor.org/rfc/rfc3986`,``,`Provided value: ${u}`]});if(d!==`1`)throw new BB({field:`version`,metaMessages:[`- Version must be '1'.`,``,`Provided value: ${d}`]});if(l&&!NB.test(l))throw new BB({field:`scheme`,metaMessages:[`- Scheme must be an RFC 3986 URI scheme.`,`- See https://www.rfc-editor.org/rfc/rfc3986#section-3.1`,``,`Provided value: ${l}`]});let r=e.statement;if(r?.includes(` +`))throw new BB({field:`statement`,metaMessages:[`- Statement must not include '\\n'.`,``,`Provided value: ${r}`]})}let f=ng(e.address,{checksum:!0}),p=(()=>l?`${l}://${n}`:n)(),m=(()=>e.statement?`${e.statement}\n`:``)(),h=`${p} wants you to sign in with your Ethereum account:\n${f}\n\n${m}`,g=`URI: ${u}\nVersion: ${d}\nChain ID: ${t}\nNonce: ${a}\nIssued At: ${i.toISOString()}`;if(r&&(g+=`\nExpiration Time: ${r.toISOString()}`),o&&(g+=`\nNot Before: ${o.toISOString()}`),s&&(g+=`\nRequest ID: ${s}`),c){let e=` +Resources:`;for(let t of c){if(!LB(t))throw new BB({field:`resources`,metaMessages:[`- Every resource must be a RFC 3986 URI.`,`- See https://www.rfc-editor.org/rfc/rfc3986`,``,`Provided value: ${t}`]});e+=`\n- ${t}`}g+=e}return`${h}\n${g}`}function LB(e){if(/[^a-z0-9:/?#[\]@!$&'()*+,;=.\-_~%]/i.test(e)||/%[^0-9a-f]/i.test(e)||/%[0-9a-f](:?[^0-9a-f]|$)/i.test(e))return!1;let t=RB(e),n=t[1],r=t[2],i=t[3],a=t[4],o=t[5];if(!(n?.length&&i&&i.length>=0))return!1;if(r?.length){if(!(i.length===0||/^\//.test(i)))return!1}else if(/^\/\//.test(i))return!1;if(!/^[a-z][a-z0-9+\-.]*$/.test(n.toLowerCase()))return!1;let s=``;return s+=`${n}:`,r?.length&&(s+=`//${r}`),s+=i,a?.length&&(s+=`?${a}`),o?.length&&(s+=`#${o}`),s}function RB(e){return e.match(/(?:([^:/?#]+):)?(?:\/\/([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/)}function zB(e){let{scheme:t,statement:n,...r}=e.match(PB)?.groups??{},{chainId:i,expirationTime:a,issuedAt:o,notBefore:s,requestId:c,...l}=e.match(FB)?.groups??{},u=e.split(`Resources:`)[1]?.split(` +- `).slice(1);return{...r,...l,...i?{chainId:Number(i)}:{},...a?{expirationTime:new Date(a)}:{},...o?{issuedAt:new Date(o)}:{},...s?{notBefore:new Date(s)}:{},...c?{requestId:c}:{},...u?{resources:u}:{},...t?{scheme:t}:{},...n?{statement:n}:{}}}var BB=class extends F{constructor(e){let{field:t,metaMessages:n}=e;super(`Invalid Sign-In with Ethereum message field "${t}".`,{metaMessages:n}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Siwe.InvalidMessageFieldError`})}};async function VB(e){let{address:t,authUrl:n,message:r,signature:i,publicKey:a}=e,{chainId:o}=zB(r);return await fetch(n.verify,{body:JSON.stringify({address:t,chainId:o,message:r,signature:i,walletAddress:t,...a&&{publicKey:a}}),credentials:`include`,headers:{"Content-Type":`application/json`},method:`POST`}).then(e=>e.json())}async function HB(e,t,n){let{chainId:r=e.chain?.id,domain:i,uri:a,resources:o,version:s=`1`}=t,{address:c}=n,l=t.authUrl?UB(t.authUrl):void 0;if(!r)throw Error("`chainId` is required.");if(!i)throw Error("`domain` is required.");if(!t.nonce&&!l?.nonce)throw Error("`nonce` or `authUrl.nonce` is required.");if(!a)throw Error("`uri` is required.");let u=await(async()=>{if(t.nonce)return t.nonce;if(!l?.nonce)throw Error("`nonce` or `authUrl.nonce` is required.");let e=await(await fetch(l.nonce,{body:JSON.stringify({address:c,chainId:r,walletAddress:c}),headers:{"Content-Type":`application/json`},method:`POST`})).json().catch(()=>void 0);if(!e?.nonce)throw Error("`nonce` or `authUrl.nonce` is required.");return e.nonce})();return IB({...t,address:n.address,chainId:r,domain:i,nonce:u,resources:o,uri:a,version:s})}function UB(e,t=``){if(!e)return;let n=(()=>{if(typeof e==`string`){let t=e.replace(/\/$/,``);return{logout:t+`/logout`,nonce:t+`/nonce`,verify:t+`/verify`}}return e})();return{logout:WB(n.logout,t),nonce:WB(n.nonce,t),verify:WB(n.verify,t)}}function WB(e,t){return!t||!e.startsWith(`/`)?e:t+e}ap();function GB(e){let t=zf(e);return Rf(`0x19`,Hf(`Ethereum Signed Message: +`+Kf(t)),t)}function KB(e){return Vh(GB(e))}async function qB(e,t){let{account:n=e.account}=t,r=n?jL(n):void 0;if(!r)throw Error(`account is required.`);let{domain:{name:i,version:a}}=await Qm(e,{address:r.address});if(!e.chain)throw Error(`client.chain is required`);return{chainId:e.chain.id,name:i,verifyingContract:r.address,version:a}}async function JB(e,t){let{account:n=e.account,chainIds:r}=t,i=n?jL(n):void 0;if(!i)throw Error(`account is required.`);let a=await HR(e,{address:i.address,chainIds:r});return Object.entries(a).flatMap(([e,t])=>t.map(t=>yL(t,{chainId:Number(e)})))}async function YB(e,t){let{account:n=e.account,calls:r,chain:i=e.chain,feePayer:a,merchantUrl:o,nonce:s,preCalls:c,requiredFunds:l,revokeKeys:u}=t,d=n?jL(n):void 0,f=t.key??(d?NL(d,{role:`admin`}):void 0),p=t.authorizeKeys?.some(e=>e.role===`session`),{contracts:m,fees:{tokens:h}}=await zR(e,{chainId:i?.id}),g=p?m.orchestrator.address:void 0,_=(t.authorizeKeys??[]).map(e=>EL(e,{feeTokens:h,orchestrator:g})),v=(()=>t.feeToken?t.feeToken:f?.permissions?.spend?.[0]?.token)(),y=typeof c==`boolean`?c:!1,b=typeof c==`object`?c.map(({context:e,signature:t})=>({...e.preCall,signature:t})):void 0,x={address:d?.address,calls:r??[],capabilities:{authorizeKeys:_,meta:{feePayer:a,feeToken:v,nonce:s},preCall:y,preCalls:b,requiredFunds:l,revokeKeys:u?.map(e=>({hash:e.hash}))},chain:i,key:f?EL(f,{feeTokens:h}):void 0},S=await(async()=>{if(o){let t=Ym({chain:e.chain,transport:Rv(o)});return await WR(t,x).catch(t=>(console.error(t),WR(e,x)))}return await WR(e,x)})(),{capabilities:C,context:w,digest:ee,signature:te,typedData:ne}=S;if(o&&!await XR(e,{response:S._raw,signature:te}))throw Error(`cannot verify integrity of \`wallet_prepareCalls\` response from ${o}`);return{capabilities:{...C,quote:w.quote},context:w,digest:ee,key:f,typedData:ne}}async function XB(e,t){let{address:n,authorizeKeys:r,chain:i=e.chain}=t;if(!i)throw Error(`chain is required.`);let{contracts:a,fees:{tokens:o}}=await zR(e,{chainId:i.id}),s=t.delegation??a.accountProxy.address,c=r.some(e=>e.role===`session`)?a.orchestrator.address:void 0,l=r.map(e=>{let t=e.role===`session`?e.permissions:{};return EL({...e,permissions:t},{feeTokens:o,orchestrator:c})}),{capabilities:u,chainId:d,context:f,digests:p,typedData:m}=await GR(e,{address:n,authorizeKeys:l,chain:i,delegation:s}),h=jL({address:n,keys:r});return{capabilities:u,chainId:d,context:{...f,account:h},digests:p,typedData:m}}async function ZB(e,t){let{account:n=e.account,chain:r=e.chain,webAuthn:i}=t;if(!r)throw Error("`chain` is required.");let a=n?jL(n):void 0;if(!a)throw Error("`account` is required.");let o=t.key??NL(a,t);if(!o&&!a.sign)throw Error("`key` or `account` with `sign` is required");let s=await Promise.all((t.preCalls??[]).map(async n=>{if(n.signature)return n;let{authorizeKeys:o,key:s,calls:c,revokeKeys:l}=n,{context:u,digest:d}=await YB(e,{account:a,authorizeKeys:o,calls:c,chain:r,feeToken:t.feeToken,key:s,preCalls:!0,revokeKeys:l}),f=await TL(s,{address:null,payload:d,webAuthn:i});return{context:u,signature:f}})),{capabilities:c,context:l,digest:u}=await YB(e,{...t,account:a,chain:r,key:o,preCalls:s}),d=await(async()=>o?await TL(o,{address:null,payload:u,webAuthn:i,wrap:!1}):await a.sign({hash:u}))();return await QB(e,{capabilities:c.feeSignature?{feeSignature:c.feeSignature}:void 0,context:l,key:o,signature:d})}async function QB(e,t){let{capabilities:n,context:r,key:i,signature:a}=t;return await KR(e,{capabilities:n,context:r,key:i?EL(i):void 0,signature:a})}async function $B(e,t){let{email:n,walletAddress:r}=t;return await qR(e,{email:n,walletAddress:r})}async function eV(e,t){if(t.account){let{account:n}=t,r=[...n.keys??[],...t.authorizeKeys??[]].filter((e,t,n)=>n.findIndex(t=>t.id===e.id)===t),{digests:i,...a}=await XB(e,{...t,address:n.address,authorizeKeys:r}),o={auth:await n.sign({hash:i.auth}),exec:await n.sign({hash:i.exec})};return await eV(e,{...a,signatures:o})}let{context:n,signatures:r}=t,i=jL(n.account);return await JR(e,{context:n,signatures:r}),i}async function tV(e,t){let{chainId:n,email:r,signature:i,token:a,walletAddress:o}=t;return await YR(e,{chainId:n,email:r,signature:i,token:a,walletAddress:o})}async function nV(e,t){let{address:n}=t,{authorization:r,data:i,to:a}=await RR(e,{address:n});return N_({authorization:{...r,nonce:BigInt(r.nonce),r:BigInt(r.r),s:BigInt(r.s)},data:i,signature:t.signature,to:a})}function rV(e,t){let{tokens:n}=t,r=n.filter(e=>e.interop);return e.map(e=>{if(e.address)return e;let t=r.find(t=>t.symbol===e.symbol);if(!t)throw Error(`interop token not found: ${e.symbol}`);return{address:t.address,value:II(e.value,t.decimals)}})}async function iV(e,t){let{chain:n=e.chain}=t??{};return await zR(e,{chainId:n?.id}).then(e=>e.fees.tokens)}async function aV(e,t){let{addressOrSymbol:n}=t;return(await iV(e,t)).find(aV.predicate(n))}(function(e){function t(e){return t=>e?ag(e)?ig(t.address,e):e===`native`?t.address===Z_:e===t.symbol:!1}e.predicate=t})(aV||={});async function oV(e,t){let{chain:n=e.chain,store:r}=t??{},i=r?.getState()??{},a=t?.addressOrSymbol??i.feeToken;return(await iV(e,{chain:n}).then(e=>e.filter(e=>e.feeToken)))?.find(e=>a?a===`native`&&e.address===`0x0000000000000000000000000000000000000000`||ag(a)&&ig(e.address,a)?!0:a===e.symbol:!1)}If(),ap(),ff();function sV(e={}){let t=e,{mock:n,multichain:r=!0,webAuthn:i}=t,a,o,s=(()=>{if(t.keystoreHost!==`self`&&!(typeof window<`u`&&window.location?.hostname===`localhost`))return t.keystoreHost})();return bB({actions:{async addFunds(){throw new UM},async createAccount(e){let{admins:t,email:r,label:o,permissions:c,internal:l,signInWithEthereum:u}=e,{client:d}=l,f=ML(E_()),p=await iV(d),m=n?hL():await mL({createFn:i?.createFn,label:o||`${f.address.slice(0,8)}\u2026${f.address.slice(-6)}`,rpId:s,userId:mf(f.address)}),h=await DB(c,{chainId:d.chain.id,feeTokens:p}),g=t?.map(e=>_L(e)),_=await eV(d,{account:f,authorizeKeys:[m,...g??[],...h?[h]:[]]});a=f.address,r&&o&&await $B(d,{email:o,walletAddress:_.address});let v=await(async()=>{if(!u)return;let e=await HB(d,u,{address:_.address}),t=await PL(f,{payload:KB(Hf(e))}),n=await nV(d,{address:_.address,signature:t});return{message:e,signature:n}})();return{account:{..._,signInWithEthereum:v}}},async getAccountVersion(e){let{address:t,internal:n}=e,{client:r}=n,{contracts:i}=await zR(r),{accountImplementation:a}=i,o=await qB(r,{account:jL(a)}).then(e=>e.version),s=await qB(r,{account:t}).then(e=>e.version).catch(()=>o);if(!s||!o)throw Error(`version not found.`);return{current:s,latest:o}},async getAssets(e){let{account:t,chainFilter:n,assetFilter:r,assetTypeFilter:i,internal:a}=e,{client:o}=a;return await BR(o,{account:t,assetFilter:r,assetTypeFilter:i,chainFilter:n})},async getCallsStatus(e){let{id:t,internal:n}=e,{client:r}=n,i=await VR(r,{id:t});return{atomic:!0,chainId:L(r.chain.id),id:t,receipts:i.receipts?.map(e=>({blockHash:e.blockHash,blockNumber:L(e.blockNumber),gasUsed:L(e.gasUsed),logs:e.logs,status:e.status,transactionHash:e.transactionHash})),status:i.status,version:`1.0`}},async getCapabilities(e){let{chainIds:t,internal:n}=e,{client:i}=n,a={atomic:{status:`supported`},atomicBatch:{supported:!0},feeToken:{supported:!0,tokens:[]},merchant:{supported:!0},permissions:{supported:!0},requiredFunds:{supported:!!r,tokens:[]}},o=await zR(i,{chainIds:t?t.map(e=>Yf(e)):`all`,raw:!0});return Object.entries(o).reduce((e,[t,n])=>({...e,[t]:{...a,...n,feeToken:{supported:!0,tokens:n.fees.tokens},requiredFunds:{supported:!!r,tokens:r?n.fees.tokens.filter(e=>e.interop):[]}}}),{})},async getKeys(e){let{account:t,chainIds:n,internal:r}=e,{client:i}=r,a=await JB(i,{account:t,chainIds:n});return pN([...a,...t.keys??[]],e=>e.publicKey)},async grantAdmin(e){let{account:t,internal:n}=e,{client:r}=n,a=_L(e.key,{chainId:r.chain.id}),o=await oV(r,{addressOrSymbol:e.feeToken,store:n.store}),{id:s}=await ZB(r,{account:t,authorizeKeys:[a],feeToken:o?.address,webAuthn:i});return await Um(r,{id:s,pollingInterval:500}),{key:a}},async grantPermissions(e){let{account:t,internal:n,permissions:r}=e,{client:i}=n,a=await iV(i),o=await DB(r,{chainId:i.chain.id,feeTokens:a});if(!o)throw Error(`key to authorize not found.`);let s=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!s)throw Error(`admin key not found.`);let{context:c,digest:l}=await YB(i,{account:t,authorizeKeys:[o],key:s,preCalls:!0}),u=await TL(s,{address:null,payload:l});return await QB(i,{context:c,key:s,signature:u}),{key:o}},async loadAccounts(e){let{internal:t,permissions:r,signInWithEthereum:o}=e,{client:c}=t,l=await iV(c),u=await DB(r,{chainId:c.chain.id,feeTokens:l}),{digest:d,digestType:f,message:p}=await(async()=>{if(o&&e.address){let t=await HB(c,o,{address:e.address});return{context:void 0,digest:KB(Hf(t)),digestType:`siwe`,message:t}}return{context:void 0,digest:`0x`,message:void 0}})(),{address:m,credentialId:h,webAuthnSignature:g}=await(async()=>{if(n){if(!a)throw Error(`address_internal not found.`);return{address:a,credentialId:void 0}}if(e.address&&e.key)return{address:e.address,credentialId:e.key.credentialId};let t=await eL({challenge:d,getFn:i?.getFn,rpId:s}),r=t.raw.response,o=Cf(new Uint8Array(r.userHandle)),c=t.raw.id;return{address:o,credentialId:c,webAuthnSignature:t}})(),_=await JB(c,{account:m,chainIds:[c.chain.id]}),v=jL({address:m,keys:[..._,...u?[u]:[]].map((e,t)=>t===0&&e.type===`webauthn-p256`?bL({...e,credential:{id:h,publicKey:Kh(e.publicKey)},id:m,rpId:s}):e)}),y=NL(v,{role:`admin`}),b=await(async()=>{if(d!==`0x`)return g?AL(kL(g),{keyType:`webauthn-p256`,publicKey:y.publicKey}):await TL(y,{address:v.address,payload:d})})();if(u){let{context:e,digest:t}=await YB(c,{account:v,authorizeKeys:[u],preCalls:!0}),n=await TL(y,{address:null,payload:t});await QB(c,{context:e,key:y,signature:n})}let x=await(async()=>{if(o){if(f===`siwe`&&p&&b){let e=await nV(c,{address:v.address,signature:b});return{message:p,signature:e}}{let e=await HB(c,o,{address:v.address}),t=await PL(v,{payload:KB(Hf(e)),role:`admin`}),n=await nV(c,{address:v.address,signature:t});return{message:e,signature:n}}}})();return{accounts:[{...v,signInWithEthereum:x}]}},async prepareCalls(e){let{account:t,calls:n,internal:i,merchantUrl:a}=e,{client:o}=i,s=e.key??await xB({account:t,calls:n});if(!s)throw Error(`cannot find authorized key to sign with.`);let[c,l]=await Promise.all([iV(o),oV(o,{addressOrSymbol:e.feeToken,store:i.store})]),u=rV(e.requiredFunds??[],{tokens:c}),{capabilities:d,context:f,digest:p,typedData:m}=await YB(o,{account:t,calls:n,feeToken:l?.address,key:s,merchantUrl:a,requiredFunds:r?u:void 0}),h=f.quote?.quotes??[],g=h[h.length-1];return{account:t,capabilities:{...d,quote:f.quote},chainId:o.chain.id,context:{...f,account:t,calls:n,nonce:g?.intent.nonce},digest:p,key:s,typedData:m}},async prepareUpgradeAccount(e){let{address:t,email:r,label:a,internal:c,permissions:l}=e,{client:u}=c,[d,f]=await Promise.all([iV(u),oV(u,{store:c.store})]),p=n?hL():await mL({createFn:i?.createFn,label:a||`${t.slice(0,8)}\u2026${t.slice(-6)}`,rpId:s,userId:mf(t)}),m=await DB(l,{chainId:u.chain.id,feeTokens:d}),{context:h,digests:g}=await XB(u,{address:t,authorizeKeys:[p,...m?[m]:[]],feeToken:f?.address});return r&&(o=a),{context:h,digests:g}},async revokeAdmin(e){let{account:t,id:n,internal:r}=e,{client:a}=r,o=t.keys?.find(e=>e.id===n);if(o){if(o.type===`webauthn-p256`&&t.keys?.filter(e=>e.type===`webauthn-p256`).length===1)throw Error(`revoke the only WebAuthn key left.`);try{let n=await oV(a,{addressOrSymbol:e.feeToken,store:r.store}),{id:s}=await ZB(a,{account:t,feeToken:n?.address,revokeKeys:[o],webAuthn:i});await Um(a,{id:s})}catch(e){let t=e;if(t.name===`Rpc.ExecutionError`&&t.abiError?.name===`KeyDoesNotExist`)return;throw e}}},async revokePermissions(e){let{account:t,id:n,internal:r}=e,{client:a}=r,o=t.keys?.find(e=>e.id===n);if(o){if(o.role===`admin`)throw Error(`cannot revoke admins.`);try{let n=await oV(a,{addressOrSymbol:e.feeToken,store:r.store}),{id:s}=await ZB(a,{account:t,feeToken:n?.address,revokeKeys:[o],webAuthn:i});await Um(a,{id:s})}catch(e){let t=e;if(t.name===`Rpc.ExecutionError`&&t.abiError?.name===`KeyDoesNotExist`)return;throw e}}},async sendCalls(e){let{account:t,asTxHash:n,calls:a,chainId:o,internal:s,merchantUrl:c}=e,{client:l}=s,u=await xB({account:t,calls:a,permissionsId:e.permissionsId}),[d,f]=await Promise.all([iV(l),oV(l,{addressOrSymbol:e.feeToken,store:s.store})]),p=rV(e.requiredFunds??[],{tokens:d}),m=await ZB(l,{account:t,calls:a,feeToken:f?.address,key:u,merchantUrl:c,requiredFunds:r?p:void 0,webAuthn:i,...o?{chain:{id:o}}:{}});if(n){let{id:e,receipts:t,status:n}=await Um(l,{id:m.id,pollingInterval:500});if(!t?.[0])throw n===`success`?new XM({message:`Call bundle with id: `+e+` not found.`}):new jM({message:`Transaction failed under call bundle id: `+e+`.`});return{id:t[0].transactionHash}}return m},async sendPreparedCalls(e){let{context:t,key:n,internal:r,signature:i}=e,{client:a}=r,{id:o}=await QB(a,{context:t,key:n,signature:i});return o},async signPersonalMessage(e){let{account:t,data:n,internal:r}=e,{client:a}=r,o=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!o)throw Error(`cannot find admin key to sign with.`);let s=await PL(t,{key:o,payload:KB(n),webAuthn:i});return nV(a,{address:t.address,signature:s})},async signTypedData(e){let{account:t,internal:n}=e,{client:r}=n,a=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!a)throw Error(`cannot find admin key to sign with.`);let o=lf(e.data),s=o.domain?.name===`Orchestrator`,c=await PL(t,{key:a,payload:cI(o),replaySafe:!s,webAuthn:i});return s?c:nV(r,{address:t.address,signature:c})},async upgradeAccount(e){let{account:t,context:n,internal:r,signatures:i}=e,{client:a}=r;return await eV(a,{context:n,signatures:i}),o&&await $B(a,{email:o,walletAddress:t.address}),{account:t}},async verifyEmail(e){let{account:t,chainId:n,email:r,token:a,internal:o,walletAddress:s}=e,{client:c}=o,l=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!l)throw Error(`cannot find admin key to sign with.`);let u=await PL(t,{key:l,payload:Vh(Hf(`${r}${a}`)),webAuthn:i});return await tV(c,{chainId:n,email:r,signature:u,token:a,walletAddress:s})}},config:e,name:`rpc`})}ap();function cV(e={}){let{fallback:t=sV(),host:n=yN.prod,renderer:r=xN(),theme:i,themeController:a}=e,o=new Set,s=SB();function c(e){return tN({async request(t){let n=s.prepare(t);return e.setState(e=>{let t=e.accounts[0],r=t?.keys?.find(e=>e.role===`admin`&&e.type===`webauthn-p256`);return{...e,requestQueue:[...e.requestQueue,{account:t?{address:t.address,key:r?{credentialId:r?.credentialId,publicKey:r.publicKey}:void 0}:void 0,request:n,status:`pending`}]}}),new Promise((t,r)=>{let i=a=>{let s=a.find(e=>e.request.id===n.id);if(!s&&a.length===0){o.delete(i),r(new VM);return}s&&(s.status!==`success`&&s.status!==`error`||(o.delete(i),s.status===`success`?t(s.result):r(nN(s.error)),e.setState(e=>({...e,requestQueue:e.requestQueue.filter(e=>e.request.id!==n.id)}))))};o.add(i)})}},{schema:wB()})}return bB({actions:{async addFunds(e){let{internal:t}=e,{request:n,store:r}=t;if(n.method!==`wallet_addFunds`)throw Error(`Cannot add funds for method: `+n.method);return await c(r).request(n)},async createAccount(e){let{internal:t}=e,{client:n,config:r,request:i,store:a}=t,{storage:o}=r,s=c(a);return{account:await(async()=>{if(i.method===`wallet_connect`){let[{capabilities:e,chainIds:t}]=i._decoded.params??[{}],a=uV(e?.signInWithEthereum?.authUrl??r.authUrl,{storage:o}),c=i.params?.[0]?.capabilities?.signInWithEthereum,l=await DB(e?.grantPermissions,{chainId:n.chain.id}),u=l?fP(TB,EB(l)):void 0,{accounts:d}=await s.request({...i,params:[{capabilities:{...i.params?.[0]?.capabilities,grantPermissions:u,signInWithEthereum:a||c?{...c,authUrl:a}:void 0},chainIds:t?.map(e=>L(e))}]}),[f]=d;if(!f)throw Error(`no account found.`);let p=f.capabilities?.admins?.map(e=>_L(e,{chainId:n.chain.id})).filter(Boolean),m=f.capabilities?.permissions?.map(e=>{try{let t=vz(pP(gz,e));return t.id===l?.id?{...t,...l,permissions:t.permissions}:t}catch{return}}).filter(Boolean),h=await(async()=>{if(!f.capabilities?.signInWithEthereum)return;let{message:e,signature:t}=f.capabilities.signInWithEthereum;if(!a)return{message:e,signature:t};let{token:n}=await VB({address:f.address,authUrl:a,message:e,publicKey:f.capabilities?.admins?.[0]?.publicKey,signature:t});return{message:e,signature:t,token:n}})();return{...jL({address:f.address,keys:[...p??[],...m??[]]}),signInWithEthereum:h}}throw Error(`Account creation not supported on method: ${i.method}`)})()}},async disconnect(e){let{internal:t}=e,{config:n}=t,{storage:r}=n,i=await r.getItem(`porto.authUrl`)||void 0,a=uV(n.authUrl??i,{storage:r});a&&await fetch(a.logout,{credentials:`include`,method:`POST`}).catch(()=>{})},async getAccountVersion(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getAccountVersion`)throw Error(`Cannot get version for method: `+a.method);return r.supportsHeadless?await c(i).request(a):t.actions.getAccountVersion(e)},async getAssets(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getAssets`)throw Error(`Cannot get assets for method: `+a.method);if(!r.supportsHeadless)return t.actions.getAssets(e);let o=await c(i).request(a);return pP(nB.Response,o)},async getCallsStatus(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getCallsStatus`)throw Error(`Cannot get status for method: `+a.method);return r.supportsHeadless?await c(i).request(a):t.actions.getCallsStatus(e)},async getCapabilities(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getCapabilities`)throw Error(`Cannot get capabilities for method: `+a.method);return r.supportsHeadless?await c(i).request(a):t.actions.getCapabilities(e)},async getKeys(e){let{account:n,chainIds:i,internal:a}=e,{store:o}=a,s=await(async()=>{if(!r.supportsHeadless)return t.actions.getKeys(e);let a=await c(o).request({method:`wallet_getKeys`,params:[fP(aB.Parameters,{address:n.address,chainIds:i})]});return pP(aB.Response,a)})();return pN([...s,...n.keys??[]],e=>e.publicKey)},async grantAdmin(e){let{internal:t}=e,{request:n,store:r}=t;if(n.method!==`wallet_grantAdmin`)throw Error(`Cannot authorize admin for method: `+n.method);let[i]=n._decoded.params,a=_L(i.key);if(!a)throw Error(`no key found.`);let o=await lV(t,e);return await c(r).request({method:`wallet_grantAdmin`,params:[{...n.params?.[0],capabilities:{...n.params?.[0]?.capabilities,feeToken:o}}]}),{key:a}},async grantPermissions(e){let{internal:t}=e,{client:n,request:r,store:i}=t;if(r.method!==`wallet_grantPermissions`)throw Error(`Cannot grant permissions for method: `+r.method);let[{address:a,...o}]=r._decoded.params,s=await DB(o,{chainId:n.chain.id});if(!s)throw Error(`no key found.`);let l=fP(TB,EB(s));return await c(i).request({method:`wallet_grantPermissions`,params:[l]}),{key:s}},async loadAccounts(e){let{internal:t}=e,{client:n,config:r,store:i}=t,{storage:a}=r,o=c(i),s=t.request;if(s.method!==`wallet_connect`&&s.method!==`eth_requestAccounts`)throw Error(`Cannot load accounts for method: `+s.method);return{accounts:await(async()=>{let[e]=s._decoded.params??[],{capabilities:t}=e??{},i=uV(t?.signInWithEthereum?.authUrl??r.authUrl,{storage:a}),c=s.params?.[0]?.capabilities?.signInWithEthereum,l=await DB(t?.grantPermissions,{chainId:n.chain.id}),u=l?fP(TB,EB(l)):void 0,{accounts:d}=await o.request({method:`wallet_connect`,params:[{...s.params?.[0],capabilities:{...s.params?.[0]?.capabilities,grantPermissions:u,signInWithEthereum:i||c?{...c,authUrl:i}:void 0}}]});return Promise.all(d.map(async e=>{let t=e.capabilities?.admins?.map(e=>_L(e)).filter(Boolean),n=e.capabilities?.permissions?.map(e=>{try{let t=vz(pP(gz,e));return t.id===l?.id?{...t,...l,permissions:t.permissions}:t}catch{return}}).filter(Boolean),r=await(async()=>{if(!e.capabilities?.signInWithEthereum)return;let{message:t,signature:n}=e.capabilities.signInWithEthereum;if(!i)return{message:t,signature:n};let{token:r}=await VB({address:e.address,authUrl:i,message:t,publicKey:e.capabilities?.admins?.[0]?.publicKey,signature:n});return{message:t,signature:n,token:r}})();return{...jL({address:e.address,keys:[...t??[],...n??[]]}),signInWithEthereum:r}}))})()}},async prepareCalls(e){let{account:n,internal:i}=e,{store:a,request:o}=i;if(o.method!==`wallet_prepareCalls`)throw Error(`Cannot prepare calls for method: `+o.method);if(!r.supportsHeadless)return t.actions.prepareCalls(e);let s=await lV(i,e),l=c(a),u=pP(oB.Response,await l.request({...o,params:[{...o.params?.[0],capabilities:{...o.params?.[0]?.capabilities,feeToken:s}}]}));return{account:n,chainId:Number(u.chainId),context:u.context,digest:u.digest,key:u.key,typedData:u.typedData}},async prepareUpgradeAccount(e){let{internal:n}=e,{client:i,store:a,request:o}=n;if(o.method!==`wallet_prepareUpgradeAccount`)throw Error(`Cannot prepare upgrade for method: `+o.method);if(!r.supportsHeadless)return t.actions.prepareUpgradeAccount(e);let[{capabilities:s}]=o._decoded.params??[{}],l=await DB(s?.grantPermissions,{chainId:i.chain.id}),u=l?fP(TB,EB(l)):void 0,{context:d,digests:f}=await c(a).request({...o,params:[{...o.params?.[0],capabilities:{...o.params?.[0]?.capabilities,grantPermissions:u}}]}),p=d.account.keys?.map(e=>e.id===l?.id?{...e,...l}:e);return{context:{...d,account:{...d.account,keys:p}},digests:f}},async revokeAdmin(e){let{account:t,id:n,internal:r}=e,{store:i,request:a}=r;if(a.method!==`wallet_revokeAdmin`)throw Error(`Cannot revoke admin for method: `+a.method);let o=t.keys?.find(e=>e.id===n);if(!o)return;if(o.type===`webauthn-p256`&&t.keys?.filter(e=>e.type===`webauthn-p256`).length===1)throw Error(`revoke the only WebAuthn key left.`);let s=await lV(r,e);return await c(i).request({...a,params:[{...a.params?.[0],capabilities:{...a.params?.[0]?.capabilities,feeToken:s}}]})},async revokePermissions(e){let{account:t,id:n,internal:r}=e,{store:i,request:a}=r;if(a.method!==`wallet_revokePermissions`)throw Error(`Cannot revoke permissions for method: `+a.method);let o=t.keys?.find(e=>e.id===n);if(o){if(o.role===`admin`)throw Error(`cannot revoke permissions.`);return await c(i).request(a)}},async sendCalls(e){let{account:n,asTxHash:i,calls:a,chainId:o,internal:s,merchantUrl:l,requiredFunds:u}=e,{client:d,store:f,request:p}=s,m=c(f),h=await lV(s,e),g=await xB({account:n,calls:a,permissionsId:e.permissionsId});if(g&&g.role===`session`){if(!r.supportsHeadless)return t.actions.sendCalls(e);try{let e=await m.request(fP(oB.Request,{method:`wallet_prepareCalls`,params:[{calls:a,capabilities:{...p._decoded.method===`wallet_sendCalls`?p._decoded.params?.[0]?.capabilities:void 0,feeToken:h,merchantUrl:l,requiredFunds:u},chainId:o,from:n.address,key:g}]})),t=e.capabilities?.quote?.quotes??[];if(t.some((e,n)=>n===t.length-1&&t.length>1?!1:Jf(e.feeTokenDeficit)>0n))throw Error(`insufficient funds`);let r=await TL(g,{address:null,payload:e.digest,wrap:!1}),s=(await m.request({method:`wallet_sendPreparedCalls`,params:[{...e,signature:r}]}))[0];if(!s)throw Error(`id not found`);if(i){let{id:e,receipts:t,status:n}=await Um(d,{id:s.id,pollingInterval:500});if(!t?.[0])throw n===`success`?new XM({message:`Call bundle with id: `+e+` not found.`}):new jM({message:`Transaction failed under call bundle id: `+e+`.`});return{id:t[0].transactionHash}}return s}catch{}}if(p.method===`eth_sendTransaction`)return{id:await m.request({...p,params:[{...p.params?.[0],capabilities:{feeToken:h,merchantUrl:l},...o?{chainId:L(o)}:{}}]})};if(p.method===`wallet_sendCalls`)return await m.request({method:`wallet_sendCalls`,params:[{...p.params?.[0],capabilities:{...p.params?.[0]?.capabilities,feeToken:h,merchantUrl:l},...o?{chainId:L(o)}:{}}]});throw Error(`Cannot execute for method: `+p.method)},async sendPreparedCalls(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_sendPreparedCalls`)throw Error(`Cannot send prepared calls for method: `+a.method);if(!r.supportsHeadless)return t.actions.sendPreparedCalls(e);let o=(await c(i).request(a))[0]?.id;if(!o)throw Error(`id not found`);return o},async signPersonalMessage(e){let{internal:t}=e,{store:n,request:r}=t;if(r.method!==`personal_sign`)throw Error(`Cannot sign personal message for method: `+r.method);return await c(n).request(r)},async signTypedData(e){let{internal:t}=e,{store:n,request:r}=t;if(r.method!==`eth_signTypedData_v4`)throw Error(`Cannot sign typed data for method: `+r.method);return await c(n).request(r)},async switchChain(e){let{internal:t}=e,{store:n,request:i}=t;if(i.method!==`wallet_switchEthereumChain`)throw Error(`Cannot switch chain for method: `+i.method);if(r.supportsHeadless)return await c(n).request(i)},async upgradeAccount(e){let{account:t,internal:n}=e,{store:r,request:i}=n;if(i.method!==`wallet_upgradeAccount`)throw Error(`Cannot upgrade account for method: `+i.method);return await c(r).request(i),{account:t}},async verifyEmail(e){let{internal:t}=e,{request:n,store:r}=t;if(n.method!==`account_verifyEmail`)throw Error(`Cannot verify email for method: `+n.method);return await c(r).request(n)}},config:e,name:`dialog`,setup(e){let{internal:t}=e,{store:s}=t,c=r.setup({host:n,internal:t,theme:i,themeController:a}),l=s.subscribe(e=>e.requestQueue,e=>{for(let t of o)t(e);let t=e.map(e=>e.status===`pending`?e:void 0).filter(Boolean);c.syncRequests(t).catch(()=>{}),t.length===0&&c.close()});return()=>{l(),c.destroy()}}})}async function lV(e,t){let{config:{feeToken:n}}=e,{feeToken:r}=t??{};return r??n}function uV(e,{storage:t}){if(!e)return;let n=UB(e,typeof window<`u`?window.location.origin:void 0);return n&&t.setItem(`porto.authUrl`,n),n}var dV=new Map,fV=e=>{let t=dV.get(e);return t?Object.fromEntries(Object.entries(t.stores).map(([e,t])=>[e,t.getState()])):{}},pV=(e,t,n)=>{if(e===void 0)return{type:`untracked`,connection:t.connect(n)};let r=dV.get(n.name);if(r)return{type:`tracked`,store:e,...r};let i={connection:t.connect(n),stores:{}};return dV.set(n.name,i),{type:`tracked`,store:e,...i}},mV=(e,t)=>{if(t===void 0)return;let n=dV.get(e);n&&(delete n.stores[t],Object.keys(n.stores).length===0&&dV.delete(e))},hV=e=>{if(!e)return;let t=e.split(` +`),n=t.findIndex(e=>e.includes(`api.setState`));if(n<0)return;let r=t[n+1]?.trim()||``;return/.+ (.+) .+/.exec(r)?.[1]},gV=(e,t={})=>(n,r,i)=>{let{enabled:a,anonymousActionType:o,store:s,...c}=t,l;try{l=(a??!1)&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!l)return e(n,r,i);let{connection:u,...d}=pV(s,l,c),f=!0;i.setState=((e,t,a)=>{let l=n(e,t);if(!f)return l;let d=a===void 0?{type:o||hV(Error().stack)||`anonymous`}:typeof a==`string`?{type:a}:a;return s===void 0?(u?.send(d,r()),l):(u?.send({...d,type:`${s}/${d.type}`},{...fV(c.name),[s]:i.getState()}),l)}),i.devtools={cleanup:()=>{u&&typeof u.unsubscribe==`function`&&u.unsubscribe(),mV(c.name,s)}};let p=(...e)=>{let t=f;f=!1,n(...e),f=t},m=e(i.setState,r,i);if(d.type===`untracked`?u?.init(m):(d.stores[d.store]=i,u?.init(Object.fromEntries(Object.entries(d.stores).map(([e,t])=>[e,e===d.store?m:t.getState()])))),i.dispatchFromDevtools&&typeof i.dispatch==`function`){let e=i.dispatch;i.dispatch=(...t)=>{e(...t)}}return u.subscribe(e=>{switch(e.type){case`ACTION`:if(typeof e.payload!=`string`){console.error(`[zustand devtools middleware] Unsupported action format`);return}return _V(e.payload,e=>{if(e.type===`__setState`){if(s===void 0){p(e.state);return}Object.keys(e.state).length!==1&&console.error(` + [zustand devtools middleware] Unsupported __setState action format. + When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(), + and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } } + `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&p(t);return}i.dispatchFromDevtools&&typeof i.dispatch==`function`&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return p(m),s===void 0?u?.init(i.getState()):u?.init(fV(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(fV(c.name));case`ROLLBACK`:return _V(e.state,e=>{if(s===void 0){p(e),u?.init(i.getState());return}p(e[s]),u?.init(fV(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return _V(e.state,e=>{if(s===void 0){p(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&p(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;p(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),m},_V=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}n!==void 0&&t(n)},vV=e=>(t,n,r)=>{let i=r.subscribe;return r.subscribe=((e,t,n)=>{let a=e;if(t){let i=n?.equalityFn||Object.is,o=e(r.getState());a=n=>{let r=e(n);if(!i(o,r)){let e=o;t(o=r,e)}},n?.fireImmediately&&t(o,o)}return i(a)}),e(t,n,r)};function yV(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var bV=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return bV(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return bV(t)(e)}}}},xV=(e,t)=>(n,r,i)=>{let a={storage:yV(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=new Set,c=new Set,l=a.storage;if(!l)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let u=()=>{let e=a.partialize({...r()});return l.setItem(a.name,{state:e,version:a.version})},d=i.setState;i.setState=(e,t)=>(d(e,t),u());let f=e((...e)=>(n(...e),u()),r,i);i.getInitialState=()=>f;let p,m=()=>{if(!l)return;o=!1,s.forEach(e=>e(r()??f));let e=a.onRehydrateStorage?.call(a,r()??f)||void 0;return bV(l.getItem.bind(l))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(e=>{let[t,i]=e;if(p=a.merge(i,r()??f),n(p,!0),t)return u()}).then(()=>{e?.(p,void 0),p=r(),o=!0,c.forEach(e=>e(p))}).catch(t=>{e?.(void 0,t)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(l=e.storage)},clearStorage:()=>{l?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:e=>(s.add(e),()=>{s.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||m(),p||f},SV=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},CV=(e=>e?SV(e):SV);function wV(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function TV(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=wV(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var EV;function DV(){return EV||=TV(`keyval-store`,`keyval`),EV}function OV(e,t=DV()){return t(`readonly`,t=>wV(t.get(e)))}function kV(e,t,n=DV()){return n(`readwrite`,n=>(n.put(t,e),wV(n.transaction)))}function AV(e,t=DV()){return t(`readwrite`,t=>(t.delete(e),wV(t.transaction)))}function jV(e){return e}function MV(){let e=typeof indexedDB<`u`?TV(`porto`,`store`):void 0;return jV({async getItem(t){let n=await OV(t,e);return n===null?null:n},async removeItem(t){await AV(t,e)},async setItem(t,n){await kV(t,fN(n),e)},sizeLimit:1024*1024*50})}function NV(){let e=new Map;return jV({getItem(t){return e.get(t)??null},removeItem(t){e.delete(t)},setItem(t,n){e.set(t,n)},sizeLimit:1/0})}var PV=typeof window<`u`&&typeof document<`u`;const FV={announceProvider:!0,chains:SM,mode:PV?cV({host:yN.prod}):sV(),relay:Rv(nz.prod.http),storage:PV&&typeof indexedDB<`u`?MV():NV(),storageKey:`porto.store`};function IV(e={}){let t=e.chains??FV.chains,n=Object.fromEntries(t.map(t=>[t.id,e.transports?.[t.id]??Rv()])),r={announceProvider:e.announceProvider??FV.announceProvider,authUrl:e.authUrl,chains:t,feeToken:e.feeToken,merchantUrl:e.merchantUrl,mode:e.mode??FV.mode,relay:e.relay??FV.relay,storage:e.storage??FV.storage,storageKey:e.storageKey??FV.storageKey,transports:n},i=CV(gV(vV(xV(e=>({accounts:[],chainIds:r.chains.map(e=>e.id),feeToken:r.feeToken,requestQueue:[]}),{merge(e,t){let n=e,i=r.chains.find(e=>e.id===n.chainIds[0])?.id??r.chains[0].id,a=[i,...r.chains.map(e=>e.id).filter(e=>e!==i)];return{...t,...n,chainIds:a}},name:r.storageKey,partialize:e=>({accounts:e.accounts.map(e=>fN(e)),chainIds:e.chainIds}),storage:r.storage,version:5})))),a=r.mode,o={config:r,getMode(){return a},id:mN(),setMode(e){return c?.(),a=e,c=e.setup({internal:o}),c},store:i},s=hB(o),c=a===null?()=>{}:a.setup({internal:o});return{_internal:o,config:r,destroy(){c(),s._internal.destroy()},provider:s}}const LV=Object.freeze(Object.values(bM)),RV=e=>LV.find(t=>t.id===e);var zV=e=>{if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e!=`string`)return;let t=e.trim();if(/^0x[0-9a-fA-F]+$/.test(t)){let e=Number.parseInt(t,16);return Number.isNaN(e)?void 0:e}if(/^\d+$/.test(t)){let e=Number.parseInt(t,10);return Number.isNaN(e)?void 0:e}};const BV=(e,t,n)=>{let r=zV(e);t(r),n(r==null?void 0:RV(r))},VV=async(e,t=`GET`,n)=>{let r=await fetch(`http://127.0.0.1:9545${e}`,{method:t,headers:{"Content-Type":`application/json`},body:n===void 0?void 0:JSON.stringify(n)});if(!r.ok)throw Error(`API request failed: ${r.status} ${r.statusText}`);try{return await r.json()}catch{throw Error(`Invalid JSON response`)}},HV=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2),UV=e=>!!e&&e.status===`ok`;var WV=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),GV=u(s(((e,t)=>{t.exports=WV()}))());function KV(){(0,y.useEffect)(()=>{window.__PORTO__||(window.__PORTO__=IV())},[]);let[e,t]=(0,y.useState)([]),[n,r]=(0,y.useState)(null),[i,a]=(0,y.useState)(null),o=e.find(e=>e.info.uuid===i)??null,[s,c]=(0,y.useState)(),[l,u]=(0,y.useState)(),[d,f]=(0,y.useState)(),[p,m]=(0,y.useState)(null),[h,g]=(0,y.useState)(null),_=(0,y.useRef)(null),v=(0,y.useRef)(null),b=(0,y.useRef)(()=>{}),x=(0,y.useMemo)(()=>{if(o)return jv({transport:Nv(o.provider),chain:d??void 0})},[o,d]),S=(0,y.useCallback)(async()=>{try{let e=await VV(`/api/connection`);if(!UV(e))return;let t=!!e.data?.connected,n=(e.data?.account)?.toLowerCase(),r=e.data?.chainId;!s||l==null?t&&await VV(`/api/connection`,`POST`,null):(!t||n!==s.toLowerCase()||r!==l)&&await VV(`/api/connection`,`POST`,[s,l])}catch{}},[s,l]),C=(0,y.useCallback)(async()=>{await S();try{let e=await VV(`/api/transaction/request`);if(!UV(e))n&&(r(null),_.current=null);else{let t=e.data;!_.current||_.current!==t.id?(r(t),_.current=t.id,g(null),m(null)):n||r(t)}}catch{}},[S,n]),w=async()=>{if(!x||!o)return;let e=await _v(x);c(e[0]);try{let e=await o.provider.request({method:`eth_chainId`});BV(e,u,f)}catch{u(void 0),f(void 0)}await S()},ee=async()=>{if(!(!x||!o||!n?.request))try{let e=await o.provider.request({method:`eth_sendTransaction`,params:[n.request]});g(e);let t=await lv(x,{hash:e});m(t),await VV(`/api/transaction/response`,`POST`,{id:n.id,hash:e,error:null}),await C()}catch(e){let t=typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:String(e);console.log(`send failed:`,t);try{await VV(`/api/transaction/response`,`POST`,{id:n.id,hash:null,error:t})}catch{}await C()}},te=(0,y.useCallback)(async()=>{r(null),g(null),m(null),_.current=null,c(void 0),u(void 0),f(void 0);try{await VV(`/api/connection`,`POST`,null)}catch{}},[]);return(0,y.useEffect)(()=>{v.current&&i&&v.current!==i&&te(),v.current=i},[i,te]),(0,y.useEffect)(()=>{e.length===1&&!o&&a(e[0].info.uuid)},[e,o]),(0,y.useEffect)(()=>{let e=e=>{let{info:n,provider:r}=e.detail;t(e=>e.some(e=>e.info.uuid===n.uuid)?e:[...e,{info:n,provider:r}])};return window.addEventListener(`eip6963:announceProvider`,e),window.dispatchEvent(new Event(`eip6963:requestProvider`)),()=>window.removeEventListener(`eip6963:announceProvider`,e)},[]),(0,y.useEffect)(()=>{if(!o)return;let e=e=>c(e[0]??void 0),t=e=>BV(e,u,f);return o.provider.on?.(`accountsChanged`,e),o.provider.on?.(`chainChanged`,t),()=>{o.provider.removeListener?.(`accountsChanged`,e),o.provider.removeListener?.(`chainChanged`,t)}},[o]),(0,y.useEffect)(()=>{(async()=>{if(o){try{let e=await o.provider.request({method:`eth_chainId`});BV(e,u,f)}catch{u(void 0),f(void 0)}if(x)try{let e=await pv(x);c(e?.[0]||void 0)}catch{c(void 0)}}})()},[o,x]),(0,y.useEffect)(()=>{b.current=()=>{C()}},[C]),(0,y.useEffect)(()=>{b.current();let e=window.setInterval(()=>{b.current()},1e3);return()=>{window.clearInterval(e)}},[]),(0,GV.jsx)(`div`,{className:`wrapper`,children:(0,GV.jsxs)(`div`,{className:`container`,children:[(0,GV.jsx)(`img`,{className:`banner`,src:`banner.png`,alt:`Foundry Browser Wallet`}),e.length>1&&(0,GV.jsx)(`div`,{className:`wallet-selector`,children:(0,GV.jsx)(`label`,{children:(0,GV.jsxs)(`select`,{value:i??``,onChange:e=>a(e.target.value||null),children:[(0,GV.jsx)(`option`,{value:``,disabled:!0,children:`Select wallet…`}),e.map(({info:e})=>(0,GV.jsxs)(`option`,{value:e.uuid,children:[e.name,` (`,e.rdns,`)`]},e.uuid))]})})}),e.length===0&&(0,GV.jsx)(`p`,{children:`No wallets found.`}),o&&s&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Connected`}),(0,GV.jsx)(`pre`,{className:`box`,children:`\ +account: ${s} +chain: ${d?`${d.name} (${l})`:l??`unknown`} +rpc: ${d?.rpcUrls?.default?.http?.[0]??d?.rpcUrls?.public?.http?.[0]??`unknown`}`})]}),o&&!s&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-connect`,onClick:w,children:`Connect Wallet`}),o&&s&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`To Sign`}),(0,GV.jsx)(`div`,{className:`box`,children:(0,GV.jsx)(`pre`,{children:n?HV(n):`No pending transaction`})})]}),o&&s&&h&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Transaction Hash`}),(0,GV.jsx)(`pre`,{className:`box`,children:h}),(0,GV.jsxs)(`div`,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Receipt`}),(0,GV.jsx)(`pre`,{className:`box`,children:p?HV(p):`Waiting for receipt...`})]})]}),o&&s&&n&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-send`,onClick:ee,children:`Sign & Send`})]})})}var qV=document.getElementById(`root`);if(qV)(0,v.createRoot)(qV).render((0,GV.jsx)(y.StrictMode,{children:(0,GV.jsx)(KV,{})}));else throw Error(`Root element with id "root" not found`); \ No newline at end of file diff --git a/crates/wallets/src/wallet_browser/app/assets/style.css b/crates/wallets/src/wallet_browser/app/assets/style.css deleted file mode 100644 index 07abeb959d0df..0000000000000 --- a/crates/wallets/src/wallet_browser/app/assets/style.css +++ /dev/null @@ -1,33 +0,0 @@ -html, -body { - font-family: system-ui, sans-serif; - margin: 0; - padding: 2rem; - background: #fafafa; - color: #222; -} - -h1 { - font-size: 1.4rem; - margin-bottom: 1rem; -} - -button { - padding: 0.6rem 1rem; - border-radius: 0.5rem; - border: 1px solid #ccc; - background: white; - cursor: pointer; -} -button:hover { - background: #eee; -} - -pre { - background: #f5f5f5; - border: 1px solid #ddd; - padding: 0.5rem; - border-radius: 0.5rem; - max-height: 300px; - overflow: auto; -} diff --git a/crates/wallets/src/wallet_browser/app/assets/styles.css b/crates/wallets/src/wallet_browser/app/assets/styles.css new file mode 100644 index 0000000000000..14122354092ee --- /dev/null +++ b/crates/wallets/src/wallet_browser/app/assets/styles.css @@ -0,0 +1,2 @@ +*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;color:inherit;letter-spacing:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;color:inherit;letter-spacing:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html,body,#root{color:#f8f8f8;background-color:#13151b;width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}button{color:#f8f8f8;cursor:pointer;background-color:#3a3f51;border:1px solid #e1e4e8;border-radius:4px;padding:8px 12px}button:hover{background-color:#50566e}select{color:#f8f8f8;cursor:pointer;background-color:#1e2026;border:1px solid #e1e4e8;border-radius:8px;margin-bottom:16px;padding:8px}option{color:#f8f8f8;background-color:#1e2026}pre{white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere}.wrapper{flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.container{background-color:#3b3b3b;border-radius:8px;flex-direction:column;align-items:flex-start;max-width:600px;padding:16px;display:flex}.banner{border-radius:8px;width:100%;height:auto}.wallet-selector{align-self:center;margin-top:16px}.wallet-connect,.wallet-send{align-self:center}.title{color:#f8f8f8;margin-bottom:24px;font-size:36px}.section-title{color:#f8f8f8;margin-bottom:16px;font-size:24px}.box{border:1px solid #e1e4e8;border-radius:8px;margin-bottom:16px;padding:8px 12px;font-size:13px} +/*$vite$:1*/ \ No newline at end of file From 1e2ba2361949da9c485a9e79118fe0c7a273bd55 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Wed, 29 Oct 2025 18:16:55 +0100 Subject: [PATCH 27/42] host interface --- crates/wallets/src/wallet_browser/app/mod.rs | 4 +++- crates/wallets/src/wallet_browser/handlers.rs | 16 +++++++++++++++- crates/wallets/src/wallet_browser/router.rs | 9 ++++++--- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/crates/wallets/src/wallet_browser/app/mod.rs b/crates/wallets/src/wallet_browser/app/mod.rs index 966e50e190216..6b1adcdbe47c9 100644 --- a/crates/wallets/src/wallet_browser/app/mod.rs +++ b/crates/wallets/src/wallet_browser/app/mod.rs @@ -1,5 +1,7 @@ pub(crate) mod contents { pub const INDEX_HTML: &str = include_str!("assets/index.html"); - pub const STYLE_CSS: &str = include_str!("assets/style.css"); + pub const STYLES_CSS: &str = include_str!("assets/styles.css"); pub const MAIN_JS: &str = include_str!("assets/main.js"); + pub const BANNER_PNG: &[u8] = include_bytes!("assets/banner.png"); + pub const LOGO_PNG: &[u8] = include_bytes!("assets/logo.png"); } diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index 9a76cab145088..947ed5fdd8382 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -31,7 +31,7 @@ pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { } pub(crate) async fn serve_css() -> impl axum::response::IntoResponse { - let css = contents::STYLE_CSS; + let css = contents::STYLES_CSS; let mut headers = HeaderMap::new(); headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/css; charset=utf-8")); @@ -58,6 +58,20 @@ pub(crate) async fn serve_js() -> impl axum::response::IntoResponse { (headers, js) } +pub(crate) async fn serve_banner_png() -> impl axum::response::IntoResponse { + let mut headers = HeaderMap::new(); + headers.insert(CONTENT_TYPE, HeaderValue::from_static("image/png")); + headers.insert(CACHE_CONTROL, HeaderValue::from_static("public, max-age=31536000, immutable")); + (headers, contents::BANNER_PNG) +} + +pub(crate) async fn serve_logo_png() -> impl axum::response::IntoResponse { + let mut headers = HeaderMap::new(); + headers.insert(CONTENT_TYPE, HeaderValue::from_static("image/png")); + headers.insert(CACHE_CONTROL, HeaderValue::from_static("public, max-age=31536000, immutable")); + (headers, contents::LOGO_PNG) +} + /// Get the next pending transaction request. /// Route: GET /api/transaction/request pub(crate) async fn get_next_transaction_request( diff --git a/crates/wallets/src/wallet_browser/router.rs b/crates/wallets/src/wallet_browser/router.rs index 3cc29439ead2a..eec5d28b92590 100644 --- a/crates/wallets/src/wallet_browser/router.rs +++ b/crates/wallets/src/wallet_browser/router.rs @@ -26,14 +26,14 @@ pub async fn build_router(state: Arc, port: u16) -> Router { "object-src 'none'; ", "base-uri 'none'; ", "frame-ancestors 'none'; ", - "img-src 'none'; ", + "img-src 'self'; ", "font-src 'none'; ", "connect-src 'self'; ", "style-src 'self'; ", "script-src 'self'; ", "form-action 'none'; ", "worker-src 'none'; ", - "frame-src 'none';" + "frame-src https://id.porto.sh;" )), )) .layer(SetResponseHeaderLayer::if_not_present( @@ -48,6 +48,7 @@ pub async fn build_router(state: Arc, port: u16) -> Router { CorsLayer::new() .allow_origin([ format!("http://127.0.0.1:{port}").parse().unwrap(), + // TODO(zerosnacks): Remove this in production. "https://localhost:5173".to_string().parse().unwrap(), ]) .allow_methods([Method::GET, Method::POST, Method::OPTIONS]) @@ -57,8 +58,10 @@ pub async fn build_router(state: Arc, port: u16) -> Router { Router::new() .route("/", get(handlers::serve_index)) - .route("/style.css", get(handlers::serve_css)) + .route("/styles.css", get(handlers::serve_css)) .route("/main.js", get(handlers::serve_js)) + .route("/banner.png", get(handlers::serve_banner_png)) + .route("/logo.png", get(handlers::serve_logo_png)) .nest("/api", api) .layer(security_headers) .with_state(state) From 97330b73b6e7f301447ce6595b629ed062d98c19 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Wed, 29 Oct 2025 18:59:31 +0100 Subject: [PATCH 28/42] ignore build files from typos --- typos.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/typos.toml b/typos.toml index 72676b5b577b9..2e86c7c3aaffe 100644 --- a/typos.toml +++ b/typos.toml @@ -6,6 +6,9 @@ extend-exclude = [ "Cargo.toml", "Cargo.lock", "*.json", + "*.js", + "*.css", + "*.html", "**/tests/**", "**/test/**", "**/*_test.*", From 8d500b92b807b86242fd45963e0df16739e6c8f4 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Thu, 30 Oct 2025 12:20:47 +0100 Subject: [PATCH 29/42] update --- crates/wallets/src/wallet_browser/app/assets/main.js | 8 ++++---- crates/wallets/src/wallet_browser/app/assets/styles.css | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/wallets/src/wallet_browser/app/assets/main.js b/crates/wallets/src/wallet_browser/app/assets/main.js index 9aba740aceff9..de6e34f73c40b 100644 --- a/crates/wallets/src/wallet_browser/app/assets/main.js +++ b/crates/wallets/src/wallet_browser/app/assets/main.js @@ -63,7 +63,7 @@ Resources:`;for(let t of c){if(!LB(t))throw new BB({field:`resources`,metaMessag [zustand devtools middleware] Unsupported __setState action format. When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(), and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } } - `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&p(t);return}i.dispatchFromDevtools&&typeof i.dispatch==`function`&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return p(m),s===void 0?u?.init(i.getState()):u?.init(fV(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(fV(c.name));case`ROLLBACK`:return _V(e.state,e=>{if(s===void 0){p(e),u?.init(i.getState());return}p(e[s]),u?.init(fV(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return _V(e.state,e=>{if(s===void 0){p(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&p(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;p(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),m},_V=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}n!==void 0&&t(n)},vV=e=>(t,n,r)=>{let i=r.subscribe;return r.subscribe=((e,t,n)=>{let a=e;if(t){let i=n?.equalityFn||Object.is,o=e(r.getState());a=n=>{let r=e(n);if(!i(o,r)){let e=o;t(o=r,e)}},n?.fireImmediately&&t(o,o)}return i(a)}),e(t,n,r)};function yV(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var bV=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return bV(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return bV(t)(e)}}}},xV=(e,t)=>(n,r,i)=>{let a={storage:yV(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=new Set,c=new Set,l=a.storage;if(!l)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let u=()=>{let e=a.partialize({...r()});return l.setItem(a.name,{state:e,version:a.version})},d=i.setState;i.setState=(e,t)=>(d(e,t),u());let f=e((...e)=>(n(...e),u()),r,i);i.getInitialState=()=>f;let p,m=()=>{if(!l)return;o=!1,s.forEach(e=>e(r()??f));let e=a.onRehydrateStorage?.call(a,r()??f)||void 0;return bV(l.getItem.bind(l))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(e=>{let[t,i]=e;if(p=a.merge(i,r()??f),n(p,!0),t)return u()}).then(()=>{e?.(p,void 0),p=r(),o=!0,c.forEach(e=>e(p))}).catch(t=>{e?.(void 0,t)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(l=e.storage)},clearStorage:()=>{l?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:e=>(s.add(e),()=>{s.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||m(),p||f},SV=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},CV=(e=>e?SV(e):SV);function wV(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function TV(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=wV(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var EV;function DV(){return EV||=TV(`keyval-store`,`keyval`),EV}function OV(e,t=DV()){return t(`readonly`,t=>wV(t.get(e)))}function kV(e,t,n=DV()){return n(`readwrite`,n=>(n.put(t,e),wV(n.transaction)))}function AV(e,t=DV()){return t(`readwrite`,t=>(t.delete(e),wV(t.transaction)))}function jV(e){return e}function MV(){let e=typeof indexedDB<`u`?TV(`porto`,`store`):void 0;return jV({async getItem(t){let n=await OV(t,e);return n===null?null:n},async removeItem(t){await AV(t,e)},async setItem(t,n){await kV(t,fN(n),e)},sizeLimit:1024*1024*50})}function NV(){let e=new Map;return jV({getItem(t){return e.get(t)??null},removeItem(t){e.delete(t)},setItem(t,n){e.set(t,n)},sizeLimit:1/0})}var PV=typeof window<`u`&&typeof document<`u`;const FV={announceProvider:!0,chains:SM,mode:PV?cV({host:yN.prod}):sV(),relay:Rv(nz.prod.http),storage:PV&&typeof indexedDB<`u`?MV():NV(),storageKey:`porto.store`};function IV(e={}){let t=e.chains??FV.chains,n=Object.fromEntries(t.map(t=>[t.id,e.transports?.[t.id]??Rv()])),r={announceProvider:e.announceProvider??FV.announceProvider,authUrl:e.authUrl,chains:t,feeToken:e.feeToken,merchantUrl:e.merchantUrl,mode:e.mode??FV.mode,relay:e.relay??FV.relay,storage:e.storage??FV.storage,storageKey:e.storageKey??FV.storageKey,transports:n},i=CV(gV(vV(xV(e=>({accounts:[],chainIds:r.chains.map(e=>e.id),feeToken:r.feeToken,requestQueue:[]}),{merge(e,t){let n=e,i=r.chains.find(e=>e.id===n.chainIds[0])?.id??r.chains[0].id,a=[i,...r.chains.map(e=>e.id).filter(e=>e!==i)];return{...t,...n,chainIds:a}},name:r.storageKey,partialize:e=>({accounts:e.accounts.map(e=>fN(e)),chainIds:e.chainIds}),storage:r.storage,version:5})))),a=r.mode,o={config:r,getMode(){return a},id:mN(),setMode(e){return c?.(),a=e,c=e.setup({internal:o}),c},store:i},s=hB(o),c=a===null?()=>{}:a.setup({internal:o});return{_internal:o,config:r,destroy(){c(),s._internal.destroy()},provider:s}}const LV=Object.freeze(Object.values(bM)),RV=e=>LV.find(t=>t.id===e);var zV=e=>{if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e!=`string`)return;let t=e.trim();if(/^0x[0-9a-fA-F]+$/.test(t)){let e=Number.parseInt(t,16);return Number.isNaN(e)?void 0:e}if(/^\d+$/.test(t)){let e=Number.parseInt(t,10);return Number.isNaN(e)?void 0:e}};const BV=(e,t,n)=>{let r=zV(e);t(r),n(r==null?void 0:RV(r))},VV=async(e,t=`GET`,n)=>{let r=await fetch(`http://127.0.0.1:9545${e}`,{method:t,headers:{"Content-Type":`application/json`},body:n===void 0?void 0:JSON.stringify(n)});if(!r.ok)throw Error(`API request failed: ${r.status} ${r.statusText}`);try{return await r.json()}catch{throw Error(`Invalid JSON response`)}},HV=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2),UV=e=>!!e&&e.status===`ok`;var WV=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),GV=u(s(((e,t)=>{t.exports=WV()}))());function KV(){(0,y.useEffect)(()=>{window.__PORTO__||(window.__PORTO__=IV())},[]);let[e,t]=(0,y.useState)([]),[n,r]=(0,y.useState)(null),[i,a]=(0,y.useState)(null),o=e.find(e=>e.info.uuid===i)??null,[s,c]=(0,y.useState)(),[l,u]=(0,y.useState)(),[d,f]=(0,y.useState)(),[p,m]=(0,y.useState)(null),[h,g]=(0,y.useState)(null),_=(0,y.useRef)(null),v=(0,y.useRef)(null),b=(0,y.useRef)(()=>{}),x=(0,y.useMemo)(()=>{if(o)return jv({transport:Nv(o.provider),chain:d??void 0})},[o,d]),S=(0,y.useCallback)(async()=>{try{let e=await VV(`/api/connection`);if(!UV(e))return;let t=!!e.data?.connected,n=(e.data?.account)?.toLowerCase(),r=e.data?.chainId;!s||l==null?t&&await VV(`/api/connection`,`POST`,null):(!t||n!==s.toLowerCase()||r!==l)&&await VV(`/api/connection`,`POST`,[s,l])}catch{}},[s,l]),C=(0,y.useCallback)(async()=>{await S();try{let e=await VV(`/api/transaction/request`);if(!UV(e))n&&(r(null),_.current=null);else{let t=e.data;!_.current||_.current!==t.id?(r(t),_.current=t.id,g(null),m(null)):n||r(t)}}catch{}},[S,n]),w=async()=>{if(!x||!o)return;let e=await _v(x);c(e[0]);try{let e=await o.provider.request({method:`eth_chainId`});BV(e,u,f)}catch{u(void 0),f(void 0)}await S()},ee=async()=>{if(!(!x||!o||!n?.request))try{let e=await o.provider.request({method:`eth_sendTransaction`,params:[n.request]});g(e);let t=await lv(x,{hash:e});m(t),await VV(`/api/transaction/response`,`POST`,{id:n.id,hash:e,error:null}),await C()}catch(e){let t=typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:String(e);console.log(`send failed:`,t);try{await VV(`/api/transaction/response`,`POST`,{id:n.id,hash:null,error:t})}catch{}await C()}},te=(0,y.useCallback)(async()=>{r(null),g(null),m(null),_.current=null,c(void 0),u(void 0),f(void 0);try{await VV(`/api/connection`,`POST`,null)}catch{}},[]);return(0,y.useEffect)(()=>{v.current&&i&&v.current!==i&&te(),v.current=i},[i,te]),(0,y.useEffect)(()=>{e.length===1&&!o&&a(e[0].info.uuid)},[e,o]),(0,y.useEffect)(()=>{let e=e=>{let{info:n,provider:r}=e.detail;t(e=>e.some(e=>e.info.uuid===n.uuid)?e:[...e,{info:n,provider:r}])};return window.addEventListener(`eip6963:announceProvider`,e),window.dispatchEvent(new Event(`eip6963:requestProvider`)),()=>window.removeEventListener(`eip6963:announceProvider`,e)},[]),(0,y.useEffect)(()=>{if(!o)return;let e=e=>c(e[0]??void 0),t=e=>BV(e,u,f);return o.provider.on?.(`accountsChanged`,e),o.provider.on?.(`chainChanged`,t),()=>{o.provider.removeListener?.(`accountsChanged`,e),o.provider.removeListener?.(`chainChanged`,t)}},[o]),(0,y.useEffect)(()=>{(async()=>{if(o){try{let e=await o.provider.request({method:`eth_chainId`});BV(e,u,f)}catch{u(void 0),f(void 0)}if(x)try{let e=await pv(x);c(e?.[0]||void 0)}catch{c(void 0)}}})()},[o,x]),(0,y.useEffect)(()=>{b.current=()=>{C()}},[C]),(0,y.useEffect)(()=>{b.current();let e=window.setInterval(()=>{b.current()},1e3);return()=>{window.clearInterval(e)}},[]),(0,GV.jsx)(`div`,{className:`wrapper`,children:(0,GV.jsxs)(`div`,{className:`container`,children:[(0,GV.jsx)(`img`,{className:`banner`,src:`banner.png`,alt:`Foundry Browser Wallet`}),e.length>1&&(0,GV.jsx)(`div`,{className:`wallet-selector`,children:(0,GV.jsx)(`label`,{children:(0,GV.jsxs)(`select`,{value:i??``,onChange:e=>a(e.target.value||null),children:[(0,GV.jsx)(`option`,{value:``,disabled:!0,children:`Select wallet…`}),e.map(({info:e})=>(0,GV.jsxs)(`option`,{value:e.uuid,children:[e.name,` (`,e.rdns,`)`]},e.uuid))]})})}),e.length===0&&(0,GV.jsx)(`p`,{children:`No wallets found.`}),o&&s&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Connected`}),(0,GV.jsx)(`pre`,{className:`box`,children:`\ -account: ${s} -chain: ${d?`${d.name} (${l})`:l??`unknown`} -rpc: ${d?.rpcUrls?.default?.http?.[0]??d?.rpcUrls?.public?.http?.[0]??`unknown`}`})]}),o&&!s&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-connect`,onClick:w,children:`Connect Wallet`}),o&&s&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`To Sign`}),(0,GV.jsx)(`div`,{className:`box`,children:(0,GV.jsx)(`pre`,{children:n?HV(n):`No pending transaction`})})]}),o&&s&&h&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Transaction Hash`}),(0,GV.jsx)(`pre`,{className:`box`,children:h}),(0,GV.jsxs)(`div`,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Receipt`}),(0,GV.jsx)(`pre`,{className:`box`,children:p?HV(p):`Waiting for receipt...`})]})]}),o&&s&&n&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-send`,onClick:ee,children:`Sign & Send`})]})})}var qV=document.getElementById(`root`);if(qV)(0,v.createRoot)(qV).render((0,GV.jsx)(y.StrictMode,{children:(0,GV.jsx)(KV,{})}));else throw Error(`Root element with id "root" not found`); \ No newline at end of file + `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&p(t);return}i.dispatchFromDevtools&&typeof i.dispatch==`function`&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return p(m),s===void 0?u?.init(i.getState()):u?.init(fV(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(fV(c.name));case`ROLLBACK`:return _V(e.state,e=>{if(s===void 0){p(e),u?.init(i.getState());return}p(e[s]),u?.init(fV(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return _V(e.state,e=>{if(s===void 0){p(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&p(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;p(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),m},_V=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}n!==void 0&&t(n)},vV=e=>(t,n,r)=>{let i=r.subscribe;return r.subscribe=((e,t,n)=>{let a=e;if(t){let i=n?.equalityFn||Object.is,o=e(r.getState());a=n=>{let r=e(n);if(!i(o,r)){let e=o;t(o=r,e)}},n?.fireImmediately&&t(o,o)}return i(a)}),e(t,n,r)};function yV(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var bV=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return bV(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return bV(t)(e)}}}},xV=(e,t)=>(n,r,i)=>{let a={storage:yV(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=new Set,c=new Set,l=a.storage;if(!l)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let u=()=>{let e=a.partialize({...r()});return l.setItem(a.name,{state:e,version:a.version})},d=i.setState;i.setState=(e,t)=>(d(e,t),u());let f=e((...e)=>(n(...e),u()),r,i);i.getInitialState=()=>f;let p,m=()=>{if(!l)return;o=!1,s.forEach(e=>e(r()??f));let e=a.onRehydrateStorage?.call(a,r()??f)||void 0;return bV(l.getItem.bind(l))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(e=>{let[t,i]=e;if(p=a.merge(i,r()??f),n(p,!0),t)return u()}).then(()=>{e?.(p,void 0),p=r(),o=!0,c.forEach(e=>e(p))}).catch(t=>{e?.(void 0,t)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(l=e.storage)},clearStorage:()=>{l?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:e=>(s.add(e),()=>{s.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||m(),p||f},SV=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},CV=(e=>e?SV(e):SV);function wV(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function TV(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=wV(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var EV;function DV(){return EV||=TV(`keyval-store`,`keyval`),EV}function OV(e,t=DV()){return t(`readonly`,t=>wV(t.get(e)))}function kV(e,t,n=DV()){return n(`readwrite`,n=>(n.put(t,e),wV(n.transaction)))}function AV(e,t=DV()){return t(`readwrite`,t=>(t.delete(e),wV(t.transaction)))}function jV(e){return e}function MV(){let e=typeof indexedDB<`u`?TV(`porto`,`store`):void 0;return jV({async getItem(t){let n=await OV(t,e);return n===null?null:n},async removeItem(t){await AV(t,e)},async setItem(t,n){await kV(t,fN(n),e)},sizeLimit:1024*1024*50})}function NV(){let e=new Map;return jV({getItem(t){return e.get(t)??null},removeItem(t){e.delete(t)},setItem(t,n){e.set(t,n)},sizeLimit:1/0})}var PV=typeof window<`u`&&typeof document<`u`;const FV={announceProvider:!0,chains:SM,mode:PV?cV({host:yN.prod}):sV(),relay:Rv(nz.prod.http),storage:PV&&typeof indexedDB<`u`?MV():NV(),storageKey:`porto.store`};function IV(e={}){let t=e.chains??FV.chains,n=Object.fromEntries(t.map(t=>[t.id,e.transports?.[t.id]??Rv()])),r={announceProvider:e.announceProvider??FV.announceProvider,authUrl:e.authUrl,chains:t,feeToken:e.feeToken,merchantUrl:e.merchantUrl,mode:e.mode??FV.mode,relay:e.relay??FV.relay,storage:e.storage??FV.storage,storageKey:e.storageKey??FV.storageKey,transports:n},i=CV(gV(vV(xV(e=>({accounts:[],chainIds:r.chains.map(e=>e.id),feeToken:r.feeToken,requestQueue:[]}),{merge(e,t){let n=e,i=r.chains.find(e=>e.id===n.chainIds[0])?.id??r.chains[0].id,a=[i,...r.chains.map(e=>e.id).filter(e=>e!==i)];return{...t,...n,chainIds:a}},name:r.storageKey,partialize:e=>({accounts:e.accounts.map(e=>fN(e)),chainIds:e.chainIds}),storage:r.storage,version:5})))),a=r.mode,o={config:r,getMode(){return a},id:mN(),setMode(e){return c?.(),a=e,c=e.setup({internal:o}),c},store:i},s=hB(o),c=a===null?()=>{}:a.setup({internal:o});return{_internal:o,config:r,destroy(){c(),s._internal.destroy()},provider:s}}const LV=Object.freeze(Object.values(bM)),RV=e=>LV.find(t=>t.id===e);var zV=e=>{if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e!=`string`)return;let t=e.trim();if(/^0x[0-9a-fA-F]+$/.test(t)){let e=Number.parseInt(t,16);return Number.isNaN(e)?void 0:e}if(/^\d+$/.test(t)){let e=Number.parseInt(t,10);return Number.isNaN(e)?void 0:e}};const BV=(e,t,n)=>{let r=zV(e);t(r),n(r==null?void 0:RV(r))},VV=async(e,t=`GET`,n)=>{let r=await fetch(`http://127.0.0.1:9545${e}`,{method:t,headers:{"Content-Type":`application/json`},body:n===void 0?void 0:JSON.stringify(n)});if(!r.ok)throw Error(`API request failed: ${r.status} ${r.statusText}`);try{return await r.json()}catch{throw Error(`Invalid JSON response`)}},HV=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2),UV=e=>!!e&&e.status===`ok`;var WV=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),GV=u(s(((e,t)=>{t.exports=WV()}))());function KV(){(0,y.useEffect)(()=>{window.__PORTO__||(window.__PORTO__=IV())},[]);let[e,t]=(0,y.useState)([]),[n,r]=(0,y.useState)(!1),[i,a]=(0,y.useState)(null),[o,s]=(0,y.useState)(null),c=e.find(e=>e.info.uuid===o)??null,[l,u]=(0,y.useState)(),[d,f]=(0,y.useState)(),[p,m]=(0,y.useState)(),[h,g]=(0,y.useState)(null),[_,v]=(0,y.useState)(null),b=(0,y.useRef)(null),x=async()=>{if(!c||n)return;let e=await c.provider.request({method:`eth_requestAccounts`});u(e?.[0]??void 0);try{let e=await c.provider.request({method:`eth_chainId`});BV(e,f,m)}catch{f(void 0),m(void 0)}},S=async()=>{if(!(!l||d==null)){try{await VV(`/api/connection`,`POST`,[l,d])}catch{return}r(!0)}},C=async()=>{if(!c||!i?.request)return;let e=jv({transport:Nv(c.provider),chain:p??void 0});try{let t=await c.provider.request({method:`eth_sendTransaction`,params:[i.request]});v(t);let n=await lv(e,{hash:t});g(n),await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:t,error:null}),a(null)}catch(e){let t=typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:String(e);console.log(`send failed:`,t);try{await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:null,error:t})}catch{}a(null)}},w=(0,y.useCallback)(async()=>{a(null),v(null),g(null),u(void 0),f(void 0),m(void 0),r(!1);try{await VV(`/api/connection`,`POST`,null)}catch{}},[]);return(0,y.useEffect)(()=>{b.current&&o&&b.current!==o&&w(),b.current=o},[o,w]),(0,y.useEffect)(()=>{e.length===1&&!c&&s(e[0].info.uuid)},[e,c]),(0,y.useEffect)(()=>{let e=e=>{let{info:n,provider:r}=e.detail;t(e=>e.some(e=>e.info.uuid===n.uuid)?e:[...e,{info:n,provider:r}])};return window.addEventListener(`eip6963:announceProvider`,e),window.dispatchEvent(new Event(`eip6963:requestProvider`)),()=>window.removeEventListener(`eip6963:announceProvider`,e)},[]),(0,y.useEffect)(()=>{if(!c)return;let e=e=>{n||u(e[0]??void 0)},t=e=>{n||BV(e,f,m)};return c.provider.on?.(`accountsChanged`,e),c.provider.on?.(`chainChanged`,t),()=>{c.provider.removeListener?.(`accountsChanged`,e),c.provider.removeListener?.(`chainChanged`,t)}},[c,n]),(0,y.useEffect)(()=>{if(!n||i)return;let e=window.setInterval(async()=>{try{let e=await VV(`/api/transaction/request`);UV(e)&&a(e.data)}catch{}},1e3);return()=>{window.clearInterval(e)}},[n,i]),(0,GV.jsx)(`div`,{className:`wrapper`,children:(0,GV.jsxs)(`div`,{className:`container`,children:[(0,GV.jsx)(`img`,{className:`banner`,src:`banner.png`,alt:`Foundry Browser Wallet`}),e.length>1&&(0,GV.jsx)(`div`,{className:`wallet-selector`,children:(0,GV.jsx)(`label`,{children:(0,GV.jsxs)(`select`,{value:o??``,onChange:e=>s(e.target.value||null),disabled:n,children:[(0,GV.jsx)(`option`,{value:``,disabled:!0,children:`Select wallet…`}),e.map(({info:e})=>(0,GV.jsxs)(`option`,{value:e.uuid,children:[e.name,` (`,e.rdns,`)`]},e.uuid))]})})}),e.length===0&&(0,GV.jsx)(`p`,{children:`No wallets found.`}),c&&!l&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-connect`,onClick:x,disabled:n,children:`Connect Wallet`}),c&&l&&!n&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-confirm`,onClick:S,disabled:!l||d==null,children:`Confirm Connection`}),c&&l&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Connected`}),(0,GV.jsx)(`pre`,{className:`box`,children:`\ +account: ${l} +chain: ${p?`${p.name} (${d})`:d??`unknown`} +rpc: ${p?.rpcUrls?.default?.http?.[0]??p?.rpcUrls?.public?.http?.[0]??`unknown`}`})]}),c&&l&&n&&!_&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`To Sign`}),(0,GV.jsx)(`div`,{className:`box`,children:(0,GV.jsx)(`pre`,{children:i?HV(i):`No pending transaction`})})]}),c&&l&&_&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Transaction Hash`}),(0,GV.jsx)(`pre`,{className:`box`,children:_}),(0,GV.jsxs)(`div`,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Receipt`}),(0,GV.jsx)(`pre`,{className:`box`,children:h?HV(h):`Waiting for receipt...`})]})]}),c&&l&&i&&n&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-send`,onClick:C,children:`Sign & Send`})]})})}var qV=document.getElementById(`root`);if(qV)(0,v.createRoot)(qV).render((0,GV.jsx)(y.StrictMode,{children:(0,GV.jsx)(KV,{})}));else throw Error(`Root element with id "root" not found`); \ No newline at end of file diff --git a/crates/wallets/src/wallet_browser/app/assets/styles.css b/crates/wallets/src/wallet_browser/app/assets/styles.css index 14122354092ee..a0e6ab87b926e 100644 --- a/crates/wallets/src/wallet_browser/app/assets/styles.css +++ b/crates/wallets/src/wallet_browser/app/assets/styles.css @@ -1,2 +1,2 @@ -*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;color:inherit;letter-spacing:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;color:inherit;letter-spacing:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html,body,#root{color:#f8f8f8;background-color:#13151b;width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}button{color:#f8f8f8;cursor:pointer;background-color:#3a3f51;border:1px solid #e1e4e8;border-radius:4px;padding:8px 12px}button:hover{background-color:#50566e}select{color:#f8f8f8;cursor:pointer;background-color:#1e2026;border:1px solid #e1e4e8;border-radius:8px;margin-bottom:16px;padding:8px}option{color:#f8f8f8;background-color:#1e2026}pre{white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere}.wrapper{flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.container{background-color:#3b3b3b;border-radius:8px;flex-direction:column;align-items:flex-start;max-width:600px;padding:16px;display:flex}.banner{border-radius:8px;width:100%;height:auto}.wallet-selector{align-self:center;margin-top:16px}.wallet-connect,.wallet-send{align-self:center}.title{color:#f8f8f8;margin-bottom:24px;font-size:36px}.section-title{color:#f8f8f8;margin-bottom:16px;font-size:24px}.box{border:1px solid #e1e4e8;border-radius:8px;margin-bottom:16px;padding:8px 12px;font-size:13px} +*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;color:inherit;letter-spacing:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;color:inherit;letter-spacing:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html,body,#root{color:#f8f8f8;background-color:#13151b;width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}button{color:#f8f8f8;cursor:pointer;background-color:#3a3f51;border:1px solid #e1e4e8;border-radius:4px;padding:8px 12px}button:hover{background-color:#50566e}select{color:#f8f8f8;cursor:pointer;background-color:#1e2026;border:1px solid #e1e4e8;border-radius:8px;margin-bottom:16px;padding:8px}option{color:#f8f8f8;background-color:#1e2026}pre{white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere}.wrapper{flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.container{background-color:#3b3b3b;border-radius:8px;flex-direction:column;align-items:flex-start;max-width:600px;padding:16px;display:flex}.banner{border-radius:8px;width:100%;height:auto}.wallet-selector,.wallet-connect,.wallet-send,.wallet-confirm{align-self:center;margin-top:16px}.title,.section-title{color:#f8f8f8}.title{margin-bottom:24px;font-size:36px}.section-title{margin-bottom:16px;font-size:24px}.box{border:1px solid #e1e4e8;border-radius:8px;margin-bottom:16px;padding:8px 12px;font-size:13px} /*$vite$:1*/ \ No newline at end of file From ed04e4cc6b5287f67a7c32d3e27653b087508a7b Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Thu, 30 Oct 2025 13:07:22 +0100 Subject: [PATCH 30/42] fix CSP to allow for RPC calls --- crates/wallets/src/wallet_browser/router.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/wallets/src/wallet_browser/router.rs b/crates/wallets/src/wallet_browser/router.rs index eec5d28b92590..e1952a46b140a 100644 --- a/crates/wallets/src/wallet_browser/router.rs +++ b/crates/wallets/src/wallet_browser/router.rs @@ -28,7 +28,7 @@ pub async fn build_router(state: Arc, port: u16) -> Router { "frame-ancestors 'none'; ", "img-src 'self'; ", "font-src 'none'; ", - "connect-src 'self'; ", + "connect-src 'self' https: http: wss: ws:;", "style-src 'self'; ", "script-src 'self'; ", "form-action 'none'; ", From 3dca7dd6da1a9688531e78f49ea0a42cb3b5a02b Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Thu, 30 Oct 2025 13:23:42 +0100 Subject: [PATCH 31/42] update wallet v0.0.0 --- crates/wallets/src/wallet_browser/app/assets/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/wallets/src/wallet_browser/app/assets/main.js b/crates/wallets/src/wallet_browser/app/assets/main.js index de6e34f73c40b..65b45d93ea05c 100644 --- a/crates/wallets/src/wallet_browser/app/assets/main.js +++ b/crates/wallets/src/wallet_browser/app/assets/main.js @@ -63,7 +63,7 @@ Resources:`;for(let t of c){if(!LB(t))throw new BB({field:`resources`,metaMessag [zustand devtools middleware] Unsupported __setState action format. When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(), and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } } - `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&p(t);return}i.dispatchFromDevtools&&typeof i.dispatch==`function`&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return p(m),s===void 0?u?.init(i.getState()):u?.init(fV(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(fV(c.name));case`ROLLBACK`:return _V(e.state,e=>{if(s===void 0){p(e),u?.init(i.getState());return}p(e[s]),u?.init(fV(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return _V(e.state,e=>{if(s===void 0){p(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&p(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;p(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),m},_V=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}n!==void 0&&t(n)},vV=e=>(t,n,r)=>{let i=r.subscribe;return r.subscribe=((e,t,n)=>{let a=e;if(t){let i=n?.equalityFn||Object.is,o=e(r.getState());a=n=>{let r=e(n);if(!i(o,r)){let e=o;t(o=r,e)}},n?.fireImmediately&&t(o,o)}return i(a)}),e(t,n,r)};function yV(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var bV=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return bV(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return bV(t)(e)}}}},xV=(e,t)=>(n,r,i)=>{let a={storage:yV(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=new Set,c=new Set,l=a.storage;if(!l)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let u=()=>{let e=a.partialize({...r()});return l.setItem(a.name,{state:e,version:a.version})},d=i.setState;i.setState=(e,t)=>(d(e,t),u());let f=e((...e)=>(n(...e),u()),r,i);i.getInitialState=()=>f;let p,m=()=>{if(!l)return;o=!1,s.forEach(e=>e(r()??f));let e=a.onRehydrateStorage?.call(a,r()??f)||void 0;return bV(l.getItem.bind(l))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(e=>{let[t,i]=e;if(p=a.merge(i,r()??f),n(p,!0),t)return u()}).then(()=>{e?.(p,void 0),p=r(),o=!0,c.forEach(e=>e(p))}).catch(t=>{e?.(void 0,t)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(l=e.storage)},clearStorage:()=>{l?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:e=>(s.add(e),()=>{s.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||m(),p||f},SV=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},CV=(e=>e?SV(e):SV);function wV(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function TV(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=wV(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var EV;function DV(){return EV||=TV(`keyval-store`,`keyval`),EV}function OV(e,t=DV()){return t(`readonly`,t=>wV(t.get(e)))}function kV(e,t,n=DV()){return n(`readwrite`,n=>(n.put(t,e),wV(n.transaction)))}function AV(e,t=DV()){return t(`readwrite`,t=>(t.delete(e),wV(t.transaction)))}function jV(e){return e}function MV(){let e=typeof indexedDB<`u`?TV(`porto`,`store`):void 0;return jV({async getItem(t){let n=await OV(t,e);return n===null?null:n},async removeItem(t){await AV(t,e)},async setItem(t,n){await kV(t,fN(n),e)},sizeLimit:1024*1024*50})}function NV(){let e=new Map;return jV({getItem(t){return e.get(t)??null},removeItem(t){e.delete(t)},setItem(t,n){e.set(t,n)},sizeLimit:1/0})}var PV=typeof window<`u`&&typeof document<`u`;const FV={announceProvider:!0,chains:SM,mode:PV?cV({host:yN.prod}):sV(),relay:Rv(nz.prod.http),storage:PV&&typeof indexedDB<`u`?MV():NV(),storageKey:`porto.store`};function IV(e={}){let t=e.chains??FV.chains,n=Object.fromEntries(t.map(t=>[t.id,e.transports?.[t.id]??Rv()])),r={announceProvider:e.announceProvider??FV.announceProvider,authUrl:e.authUrl,chains:t,feeToken:e.feeToken,merchantUrl:e.merchantUrl,mode:e.mode??FV.mode,relay:e.relay??FV.relay,storage:e.storage??FV.storage,storageKey:e.storageKey??FV.storageKey,transports:n},i=CV(gV(vV(xV(e=>({accounts:[],chainIds:r.chains.map(e=>e.id),feeToken:r.feeToken,requestQueue:[]}),{merge(e,t){let n=e,i=r.chains.find(e=>e.id===n.chainIds[0])?.id??r.chains[0].id,a=[i,...r.chains.map(e=>e.id).filter(e=>e!==i)];return{...t,...n,chainIds:a}},name:r.storageKey,partialize:e=>({accounts:e.accounts.map(e=>fN(e)),chainIds:e.chainIds}),storage:r.storage,version:5})))),a=r.mode,o={config:r,getMode(){return a},id:mN(),setMode(e){return c?.(),a=e,c=e.setup({internal:o}),c},store:i},s=hB(o),c=a===null?()=>{}:a.setup({internal:o});return{_internal:o,config:r,destroy(){c(),s._internal.destroy()},provider:s}}const LV=Object.freeze(Object.values(bM)),RV=e=>LV.find(t=>t.id===e);var zV=e=>{if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e!=`string`)return;let t=e.trim();if(/^0x[0-9a-fA-F]+$/.test(t)){let e=Number.parseInt(t,16);return Number.isNaN(e)?void 0:e}if(/^\d+$/.test(t)){let e=Number.parseInt(t,10);return Number.isNaN(e)?void 0:e}};const BV=(e,t,n)=>{let r=zV(e);t(r),n(r==null?void 0:RV(r))},VV=async(e,t=`GET`,n)=>{let r=await fetch(`http://127.0.0.1:9545${e}`,{method:t,headers:{"Content-Type":`application/json`},body:n===void 0?void 0:JSON.stringify(n)});if(!r.ok)throw Error(`API request failed: ${r.status} ${r.statusText}`);try{return await r.json()}catch{throw Error(`Invalid JSON response`)}},HV=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2),UV=e=>!!e&&e.status===`ok`;var WV=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),GV=u(s(((e,t)=>{t.exports=WV()}))());function KV(){(0,y.useEffect)(()=>{window.__PORTO__||(window.__PORTO__=IV())},[]);let[e,t]=(0,y.useState)([]),[n,r]=(0,y.useState)(!1),[i,a]=(0,y.useState)(null),[o,s]=(0,y.useState)(null),c=e.find(e=>e.info.uuid===o)??null,[l,u]=(0,y.useState)(),[d,f]=(0,y.useState)(),[p,m]=(0,y.useState)(),[h,g]=(0,y.useState)(null),[_,v]=(0,y.useState)(null),b=(0,y.useRef)(null),x=async()=>{if(!c||n)return;let e=await c.provider.request({method:`eth_requestAccounts`});u(e?.[0]??void 0);try{let e=await c.provider.request({method:`eth_chainId`});BV(e,f,m)}catch{f(void 0),m(void 0)}},S=async()=>{if(!(!l||d==null)){try{await VV(`/api/connection`,`POST`,[l,d])}catch{return}r(!0)}},C=async()=>{if(!c||!i?.request)return;let e=jv({transport:Nv(c.provider),chain:p??void 0});try{let t=await c.provider.request({method:`eth_sendTransaction`,params:[i.request]});v(t);let n=await lv(e,{hash:t});g(n),await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:t,error:null}),a(null)}catch(e){let t=typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:String(e);console.log(`send failed:`,t);try{await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:null,error:t})}catch{}a(null)}},w=(0,y.useCallback)(async()=>{a(null),v(null),g(null),u(void 0),f(void 0),m(void 0),r(!1);try{await VV(`/api/connection`,`POST`,null)}catch{}},[]);return(0,y.useEffect)(()=>{b.current&&o&&b.current!==o&&w(),b.current=o},[o,w]),(0,y.useEffect)(()=>{e.length===1&&!c&&s(e[0].info.uuid)},[e,c]),(0,y.useEffect)(()=>{let e=e=>{let{info:n,provider:r}=e.detail;t(e=>e.some(e=>e.info.uuid===n.uuid)?e:[...e,{info:n,provider:r}])};return window.addEventListener(`eip6963:announceProvider`,e),window.dispatchEvent(new Event(`eip6963:requestProvider`)),()=>window.removeEventListener(`eip6963:announceProvider`,e)},[]),(0,y.useEffect)(()=>{if(!c)return;let e=e=>{n||u(e[0]??void 0)},t=e=>{n||BV(e,f,m)};return c.provider.on?.(`accountsChanged`,e),c.provider.on?.(`chainChanged`,t),()=>{c.provider.removeListener?.(`accountsChanged`,e),c.provider.removeListener?.(`chainChanged`,t)}},[c,n]),(0,y.useEffect)(()=>{if(!n||i)return;let e=window.setInterval(async()=>{try{let e=await VV(`/api/transaction/request`);UV(e)&&a(e.data)}catch{}},1e3);return()=>{window.clearInterval(e)}},[n,i]),(0,GV.jsx)(`div`,{className:`wrapper`,children:(0,GV.jsxs)(`div`,{className:`container`,children:[(0,GV.jsx)(`img`,{className:`banner`,src:`banner.png`,alt:`Foundry Browser Wallet`}),e.length>1&&(0,GV.jsx)(`div`,{className:`wallet-selector`,children:(0,GV.jsx)(`label`,{children:(0,GV.jsxs)(`select`,{value:o??``,onChange:e=>s(e.target.value||null),disabled:n,children:[(0,GV.jsx)(`option`,{value:``,disabled:!0,children:`Select wallet…`}),e.map(({info:e})=>(0,GV.jsxs)(`option`,{value:e.uuid,children:[e.name,` (`,e.rdns,`)`]},e.uuid))]})})}),e.length===0&&(0,GV.jsx)(`p`,{children:`No wallets found.`}),c&&!l&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-connect`,onClick:x,disabled:n,children:`Connect Wallet`}),c&&l&&!n&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-confirm`,onClick:S,disabled:!l||d==null,children:`Confirm Connection`}),c&&l&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Connected`}),(0,GV.jsx)(`pre`,{className:`box`,children:`\ + `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&p(t);return}i.dispatchFromDevtools&&typeof i.dispatch==`function`&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return p(m),s===void 0?u?.init(i.getState()):u?.init(fV(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(fV(c.name));case`ROLLBACK`:return _V(e.state,e=>{if(s===void 0){p(e),u?.init(i.getState());return}p(e[s]),u?.init(fV(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return _V(e.state,e=>{if(s===void 0){p(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&p(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;p(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),m},_V=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}n!==void 0&&t(n)},vV=e=>(t,n,r)=>{let i=r.subscribe;return r.subscribe=((e,t,n)=>{let a=e;if(t){let i=n?.equalityFn||Object.is,o=e(r.getState());a=n=>{let r=e(n);if(!i(o,r)){let e=o;t(o=r,e)}},n?.fireImmediately&&t(o,o)}return i(a)}),e(t,n,r)};function yV(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var bV=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return bV(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return bV(t)(e)}}}},xV=(e,t)=>(n,r,i)=>{let a={storage:yV(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=new Set,c=new Set,l=a.storage;if(!l)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let u=()=>{let e=a.partialize({...r()});return l.setItem(a.name,{state:e,version:a.version})},d=i.setState;i.setState=(e,t)=>(d(e,t),u());let f=e((...e)=>(n(...e),u()),r,i);i.getInitialState=()=>f;let p,m=()=>{if(!l)return;o=!1,s.forEach(e=>e(r()??f));let e=a.onRehydrateStorage?.call(a,r()??f)||void 0;return bV(l.getItem.bind(l))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(e=>{let[t,i]=e;if(p=a.merge(i,r()??f),n(p,!0),t)return u()}).then(()=>{e?.(p,void 0),p=r(),o=!0,c.forEach(e=>e(p))}).catch(t=>{e?.(void 0,t)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(l=e.storage)},clearStorage:()=>{l?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:e=>(s.add(e),()=>{s.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||m(),p||f},SV=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},CV=(e=>e?SV(e):SV);function wV(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function TV(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=wV(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var EV;function DV(){return EV||=TV(`keyval-store`,`keyval`),EV}function OV(e,t=DV()){return t(`readonly`,t=>wV(t.get(e)))}function kV(e,t,n=DV()){return n(`readwrite`,n=>(n.put(t,e),wV(n.transaction)))}function AV(e,t=DV()){return t(`readwrite`,t=>(t.delete(e),wV(t.transaction)))}function jV(e){return e}function MV(){let e=typeof indexedDB<`u`?TV(`porto`,`store`):void 0;return jV({async getItem(t){let n=await OV(t,e);return n===null?null:n},async removeItem(t){await AV(t,e)},async setItem(t,n){await kV(t,fN(n),e)},sizeLimit:1024*1024*50})}function NV(){let e=new Map;return jV({getItem(t){return e.get(t)??null},removeItem(t){e.delete(t)},setItem(t,n){e.set(t,n)},sizeLimit:1/0})}var PV=typeof window<`u`&&typeof document<`u`;const FV={announceProvider:!0,chains:SM,mode:PV?cV({host:yN.prod}):sV(),relay:Rv(nz.prod.http),storage:PV&&typeof indexedDB<`u`?MV():NV(),storageKey:`porto.store`};function IV(e={}){let t=e.chains??FV.chains,n=Object.fromEntries(t.map(t=>[t.id,e.transports?.[t.id]??Rv()])),r={announceProvider:e.announceProvider??FV.announceProvider,authUrl:e.authUrl,chains:t,feeToken:e.feeToken,merchantUrl:e.merchantUrl,mode:e.mode??FV.mode,relay:e.relay??FV.relay,storage:e.storage??FV.storage,storageKey:e.storageKey??FV.storageKey,transports:n},i=CV(gV(vV(xV(e=>({accounts:[],chainIds:r.chains.map(e=>e.id),feeToken:r.feeToken,requestQueue:[]}),{merge(e,t){let n=e,i=r.chains.find(e=>e.id===n.chainIds[0])?.id??r.chains[0].id,a=[i,...r.chains.map(e=>e.id).filter(e=>e!==i)];return{...t,...n,chainIds:a}},name:r.storageKey,partialize:e=>({accounts:e.accounts.map(e=>fN(e)),chainIds:e.chainIds}),storage:r.storage,version:5})))),a=r.mode,o={config:r,getMode(){return a},id:mN(),setMode(e){return c?.(),a=e,c=e.setup({internal:o}),c},store:i},s=hB(o),c=a===null?()=>{}:a.setup({internal:o});return{_internal:o,config:r,destroy(){c(),s._internal.destroy()},provider:s}}const LV=Object.freeze(Object.values(bM)),RV=e=>LV.find(t=>t.id===e);var zV=e=>{if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e!=`string`)return;let t=e.trim();if(/^0x[0-9a-fA-F]+$/.test(t)){let e=Number.parseInt(t,16);return Number.isNaN(e)?void 0:e}if(/^\d+$/.test(t)){let e=Number.parseInt(t,10);return Number.isNaN(e)?void 0:e}};const BV=(e,t,n)=>{let r=zV(e);t(r),n(r==null?void 0:RV(r))},VV=async(e,t=`GET`,n)=>{let r=await fetch(`http://127.0.0.1:9545${e}`,{method:t,headers:{"Content-Type":`application/json`},body:n===void 0?void 0:JSON.stringify(n)});if(!r.ok)throw Error(`API request failed: ${r.status} ${r.statusText}`);try{return await r.json()}catch{throw Error(`Invalid JSON response`)}},HV=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2),UV=e=>!!e&&e.status===`ok`;var WV=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),GV=u(s(((e,t)=>{t.exports=WV()}))());function KV(){(0,y.useEffect)(()=>{window.__PORTO__||(window.__PORTO__=IV())},[]);let[e,t]=(0,y.useState)([]),[n,r]=(0,y.useState)(!1),[i,a]=(0,y.useState)(null),[o,s]=(0,y.useState)(null),c=e.find(e=>e.info.uuid===o)??null,[l,u]=(0,y.useState)(),[d,f]=(0,y.useState)(),[p,m]=(0,y.useState)(),[h,g]=(0,y.useState)(null),[_,v]=(0,y.useState)(null),b=(0,y.useRef)(null),x=(0,y.useRef)(null),S=async()=>{if(!c||n)return;let e=await c.provider.request({method:`eth_requestAccounts`});u(e?.[0]??void 0);try{let e=await c.provider.request({method:`eth_chainId`});BV(e,f,m)}catch{f(void 0),m(void 0)}},C=async()=>{if(!(!l||d==null)){try{await VV(`/api/connection`,`POST`,[l,d])}catch{return}r(!0)}},w=async()=>{if(!c||!i?.request)return;let e=jv({transport:Nv(c.provider),chain:p??void 0});try{let t=await c.provider.request({method:`eth_sendTransaction`,params:[i.request]});v(t),await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:t,error:null}),console.log(`sent tx:`,t);let n=await lv(e,{hash:t});g(n),console.log(`tx receipt:`,n)}catch(e){let t=typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:String(e);console.error(`send failed:`,t);try{await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:null,error:t})}catch{}}},ee=(0,y.useCallback)(()=>{b.current&&=(window.clearInterval(b.current),null),a(null),v(null),g(null),u(void 0),f(void 0),m(void 0),r(!1),VV(`/api/connection`,`POST`,null)},[]);return(0,y.useEffect)(()=>{x.current&&o&&x.current!==o&&ee(),x.current=o},[o,ee]),(0,y.useEffect)(()=>{e.length===1&&!c&&s(e[0].info.uuid)},[e,c]),(0,y.useEffect)(()=>{let e=e=>{let{info:n,provider:r}=e.detail;t(e=>e.some(e=>e.info.uuid===n.uuid)?e:[...e,{info:n,provider:r}])};return window.addEventListener(`eip6963:announceProvider`,e),window.dispatchEvent(new Event(`eip6963:requestProvider`)),()=>window.removeEventListener(`eip6963:announceProvider`,e)},[]),(0,y.useEffect)(()=>{if(!c)return;let e=e=>{n||u(e[0]??void 0)},t=e=>{n||BV(e,f,m)};return c.provider.on?.(`accountsChanged`,e),c.provider.on?.(`chainChanged`,t),()=>{c.provider.removeListener?.(`accountsChanged`,e),c.provider.removeListener?.(`chainChanged`,t)}},[c,n]),(0,y.useEffect)(()=>{if(!n||i)return;let e=!0,t=window.setInterval(async()=>{if(e)try{let n=await VV(`/api/transaction/request`);UV(n)&&(window.clearInterval(t),e&&a(n.data))}catch{}},1e3);return b.current=t,()=>{e=!1,window.clearInterval(t),b.current===t&&(b.current=null)}},[n,i]),(0,GV.jsx)(`div`,{className:`wrapper`,children:(0,GV.jsxs)(`div`,{className:`container`,children:[(0,GV.jsx)(`img`,{className:`banner`,src:`banner.png`,alt:`Foundry Browser Wallet`}),e.length>1&&(0,GV.jsx)(`div`,{className:`wallet-selector`,children:(0,GV.jsx)(`label`,{children:(0,GV.jsxs)(`select`,{value:o??``,onChange:e=>s(e.target.value||null),disabled:n,children:[(0,GV.jsx)(`option`,{value:``,disabled:!0,children:`Select wallet…`}),e.map(({info:e})=>(0,GV.jsxs)(`option`,{value:e.uuid,children:[e.name,` (`,e.rdns,`)`]},e.uuid))]})})}),e.length===0&&(0,GV.jsx)(`p`,{children:`No wallets found.`}),c&&!l&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-connect`,onClick:S,disabled:n,children:`Connect Wallet`}),c&&l&&!n&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-confirm`,onClick:C,disabled:!l||d==null,children:`Confirm Connection`}),c&&l&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Connected`}),(0,GV.jsx)(`pre`,{className:`box`,children:`\ account: ${l} chain: ${p?`${p.name} (${d})`:d??`unknown`} -rpc: ${p?.rpcUrls?.default?.http?.[0]??p?.rpcUrls?.public?.http?.[0]??`unknown`}`})]}),c&&l&&n&&!_&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`To Sign`}),(0,GV.jsx)(`div`,{className:`box`,children:(0,GV.jsx)(`pre`,{children:i?HV(i):`No pending transaction`})})]}),c&&l&&_&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Transaction Hash`}),(0,GV.jsx)(`pre`,{className:`box`,children:_}),(0,GV.jsxs)(`div`,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Receipt`}),(0,GV.jsx)(`pre`,{className:`box`,children:h?HV(h):`Waiting for receipt...`})]})]}),c&&l&&i&&n&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-send`,onClick:C,children:`Sign & Send`})]})})}var qV=document.getElementById(`root`);if(qV)(0,v.createRoot)(qV).render((0,GV.jsx)(y.StrictMode,{children:(0,GV.jsx)(KV,{})}));else throw Error(`Root element with id "root" not found`); \ No newline at end of file +rpc: ${p?.rpcUrls?.default?.http?.[0]??p?.rpcUrls?.public?.http?.[0]??`unknown`}`})]}),c&&l&&n&&!_&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`To Sign`}),(0,GV.jsx)(`div`,{className:`box`,children:(0,GV.jsx)(`pre`,{children:i?HV(i):`No pending transaction`})})]}),c&&l&&_&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Transaction Hash`}),(0,GV.jsx)(`pre`,{className:`box`,children:_}),(0,GV.jsxs)(`div`,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Receipt`}),(0,GV.jsx)(`pre`,{className:`box`,children:h?HV(h):`Waiting for receipt...`})]})]}),c&&l&&i&&n&&!_&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-send`,onClick:w,children:`Sign & Send`})]})})}var qV=document.getElementById(`root`);if(qV)(0,v.createRoot)(qV).render((0,GV.jsx)(y.StrictMode,{children:(0,GV.jsx)(KV,{})}));else throw Error(`Root element with id "root" not found`); \ No newline at end of file From 4aba1e30a3022edd7bf2fa09646748e5e9bd9c94 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Thu, 30 Oct 2025 17:17:00 +0100 Subject: [PATCH 32/42] nits --- crates/wallets/src/wallet_browser/handlers.rs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index 947ed5fdd8382..536baf10c55d9 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -17,8 +17,6 @@ use crate::wallet_browser::{ }; pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { - let html = contents::INDEX_HTML; - let mut headers = HeaderMap::new(); headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/html; charset=utf-8")); headers.insert( @@ -27,12 +25,10 @@ pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { ); headers.insert(PRAGMA, HeaderValue::from_static("no-cache")); headers.insert(EXPIRES, HeaderValue::from_static("0")); - (headers, Html(html)) + (headers, Html(contents::INDEX_HTML)) } pub(crate) async fn serve_css() -> impl axum::response::IntoResponse { - let css = contents::STYLES_CSS; - let mut headers = HeaderMap::new(); headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/css; charset=utf-8")); headers.insert( @@ -41,12 +37,10 @@ pub(crate) async fn serve_css() -> impl axum::response::IntoResponse { ); headers.insert(PRAGMA, HeaderValue::from_static("no-cache")); headers.insert(EXPIRES, HeaderValue::from_static("0")); - (headers, css) + (headers, contents::STYLES_CSS) } pub(crate) async fn serve_js() -> impl axum::response::IntoResponse { - let js = contents::MAIN_JS; - let mut headers = HeaderMap::new(); headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/javascript; charset=utf-8")); headers.insert( @@ -55,7 +49,7 @@ pub(crate) async fn serve_js() -> impl axum::response::IntoResponse { ); headers.insert(PRAGMA, HeaderValue::from_static("no-cache")); headers.insert(EXPIRES, HeaderValue::from_static("0")); - (headers, js) + (headers, contents::MAIN_JS) } pub(crate) async fn serve_banner_png() -> impl axum::response::IntoResponse { From 9b4e449ac2cc5f45e078e622171b1ee1259b779d Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 31 Oct 2025 10:55:04 +0100 Subject: [PATCH 33/42] add development mode to relax certain security restrictions such as origin check, enforce injected session token protected by strict CSP in production --- crates/wallets/src/opts.rs | 15 ++++- crates/wallets/src/signer.rs | 9 +-- crates/wallets/src/wallet_browser/handlers.rs | 9 ++- crates/wallets/src/wallet_browser/mod.rs | 57 +++++++++++-------- crates/wallets/src/wallet_browser/router.rs | 47 +++++++++++++-- crates/wallets/src/wallet_browser/server.rs | 10 +++- crates/wallets/src/wallet_browser/signer.rs | 13 +++-- crates/wallets/src/wallet_browser/state.rs | 25 +++++++- 8 files changed, 140 insertions(+), 45 deletions(-) diff --git a/crates/wallets/src/opts.rs b/crates/wallets/src/opts.rs index 5d9a5effd236f..19a18f8425b08 100644 --- a/crates/wallets/src/opts.rs +++ b/crates/wallets/src/opts.rs @@ -115,6 +115,13 @@ pub struct WalletOpts { requires = "browser" )] pub disable_browser_open: bool, + + /// Enable development mode for the browser wallet. + /// This relaxes certain security features for local development. + /// + /// **WARNING**: This should only be used in a development environment. + #[arg(long, help_heading = "Wallet options - browser", hide = true)] + pub development: bool, } impl WalletOpts { @@ -145,7 +152,12 @@ impl WalletOpts { .map_err(|_| eyre::eyre!("GCP_KEY_VERSION could not be parsed into u64"))?; WalletSigner::from_gcp(project_id, location, keyring, key_name, key_version).await? } else if self.browser { - WalletSigner::from_browser(self.browser_port, !self.disable_browser_open).await? + WalletSigner::from_browser( + self.browser_port, + !self.disable_browser_open, + self.development, + ) + .await? } else if let Some(raw_wallet) = self.raw.signer()? { raw_wallet } else if let Some(path) = utils::maybe_get_keystore_path( @@ -252,6 +264,7 @@ mod tests { browser: false, browser_port: 9545, disable_browser_open: false, + development: false, }; match wallet.signer().await { Ok(_) => { diff --git a/crates/wallets/src/signer.rs b/crates/wallets/src/signer.rs index 39cf3b75a98e2..eec429dfc6f71 100644 --- a/crates/wallets/src/signer.rs +++ b/crates/wallets/src/signer.rs @@ -56,10 +56,11 @@ impl WalletSigner { Ok(Self::Trezor(trezor)) } - pub async fn from_browser(port: u16, open_browser: bool) -> Result { - let browser_signer = BrowserSigner::new(port, open_browser, Duration::from_secs(300)) - .await - .map_err(|e| WalletSignerError::Browser(e.into()))?; + pub async fn from_browser(port: u16, open_browser: bool, development: bool) -> Result { + let browser_signer = + BrowserSigner::new(port, open_browser, Duration::from_secs(300), development) + .await + .map_err(|e| WalletSignerError::Browser(e.into()))?; Ok(Self::Browser(browser_signer)) } diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index 536baf10c55d9..ff7a1c2194cff 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -40,7 +40,12 @@ pub(crate) async fn serve_css() -> impl axum::response::IntoResponse { (headers, contents::STYLES_CSS) } -pub(crate) async fn serve_js() -> impl axum::response::IntoResponse { +pub(crate) async fn serve_js( + State(state): State>, +) -> impl axum::response::IntoResponse { + let token = state.session_token(); + let js = format!("window.__SESSION_TOKEN__ = \"{}\";\n{}", token, contents::MAIN_JS); + let mut headers = HeaderMap::new(); headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/javascript; charset=utf-8")); headers.insert( @@ -49,7 +54,7 @@ pub(crate) async fn serve_js() -> impl axum::response::IntoResponse { ); headers.insert(PRAGMA, HeaderValue::from_static("no-cache")); headers.insert(EXPIRES, HeaderValue::from_static("0")); - (headers, contents::MAIN_JS) + (headers, js) } pub(crate) async fn serve_banner_png() -> impl axum::response::IntoResponse { diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index 00cdc69f83e24..4424b1d14fb2e 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -15,7 +15,7 @@ mod tests { use alloy_primitives::{Address, TxHash, TxKind, U256, address}; use alloy_rpc_types::TransactionRequest; - use axum::http::HeaderMap; + use axum::http::{HeaderMap, HeaderValue}; use tokio::task::JoinHandle; use uuid::Uuid; @@ -29,11 +29,12 @@ mod tests { const BOB: Address = address!("0x70997970C51812dc3A010C7d01b50e0d17dc79C8"); const DEFAULT_TIMEOUT: Duration = Duration::from_secs(1); + const DEFAULT_DEVELOPMENT: bool = false; #[tokio::test] async fn test_setup_server() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); // Check initial state assert!(!server.is_connected()); @@ -52,8 +53,8 @@ mod tests { #[tokio::test] async fn test_connect_disconnect_wallet() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); server.start().await.unwrap(); // Check that the transaction request queue is empty @@ -89,8 +90,8 @@ mod tests { #[tokio::test] async fn test_switch_wallet() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); server.start().await.unwrap(); // Connect Alice, assert connected @@ -112,8 +113,8 @@ mod tests { #[tokio::test] async fn test_transaction_response_both_hash_and_error_rejected() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; @@ -147,8 +148,8 @@ mod tests { #[tokio::test] async fn test_transaction_response_neither_hash_nor_error_rejected() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; @@ -177,8 +178,8 @@ mod tests { #[tokio::test] async fn test_transaction_response_zero_hash_rejected() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; @@ -212,8 +213,8 @@ mod tests { #[tokio::test] async fn test_send_transaction_client_accept() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); server.start().await.unwrap(); // Connect Alice's wallet @@ -255,8 +256,8 @@ mod tests { #[tokio::test] async fn test_send_transaction_client_not_requested() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); server.start().await.unwrap(); // Connect Alice's wallet @@ -293,8 +294,8 @@ mod tests { #[tokio::test] async fn test_send_transaction_invalid_response_format() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); server.start().await.unwrap(); // Connect Alice's wallet @@ -321,8 +322,8 @@ mod tests { #[tokio::test] async fn test_send_transaction_client_reject() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); server.start().await.unwrap(); // Connect Alice's wallet @@ -365,8 +366,8 @@ mod tests { #[tokio::test] async fn test_send_multiple_transaction_requests() { - let mut server = BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT); - let client = client_with_headers(); + let mut server = create_server(); + let client = client_with_token(&server); server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; @@ -474,9 +475,15 @@ mod tests { server.stop().await.unwrap(); } + /// Helper to create a default browser wallet server. + fn create_server() -> BrowserWalletServer { + BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT, DEFAULT_DEVELOPMENT) + } + /// Helper to create a reqwest client with the session token header. - fn client_with_headers() -> reqwest::Client { - let headers = HeaderMap::new(); + fn client_with_token(server: &BrowserWalletServer) -> reqwest::Client { + let mut headers = HeaderMap::new(); + headers.insert("X-Session-Token", HeaderValue::from_str(server.session_token()).unwrap()); reqwest::Client::builder().default_headers(headers).build().unwrap() } diff --git a/crates/wallets/src/wallet_browser/router.rs b/crates/wallets/src/wallet_browser/router.rs index e1952a46b140a..404fee413be5b 100644 --- a/crates/wallets/src/wallet_browser/router.rs +++ b/crates/wallets/src/wallet_browser/router.rs @@ -2,7 +2,10 @@ use std::sync::Arc; use axum::{ Router, - http::{HeaderValue, Method, header}, + extract::{Request, State}, + http::{HeaderValue, Method, StatusCode, header}, + middleware::{self, Next}, + response::Response, routing::{get, post}, }; use tower::ServiceBuilder; @@ -16,8 +19,16 @@ pub async fn build_router(state: Arc, port: u16) -> Router { .route("/transaction/response", post(handlers::post_transaction_response)) .route("/connection", get(handlers::get_connection_info)) .route("/connection", post(handlers::post_connection_update)) + .route_layer(middleware::from_fn_with_state(state.clone(), require_session_token)) .with_state(state.clone()); + let mut origins = vec![format!("http://127.0.0.1:{port}").parse().unwrap()]; + + // Allow default port of 5173 in development mode. + if state.is_development() { + origins.push("https://localhost:5173".to_string().parse().unwrap()); + } + let security_headers = ServiceBuilder::new() .layer(SetResponseHeaderLayer::if_not_present( header::CONTENT_SECURITY_POLICY, @@ -46,11 +57,7 @@ pub async fn build_router(state: Arc, port: u16) -> Router { )) .layer( CorsLayer::new() - .allow_origin([ - format!("http://127.0.0.1:{port}").parse().unwrap(), - // TODO(zerosnacks): Remove this in production. - "https://localhost:5173".to_string().parse().unwrap(), - ]) + .allow_origin(origins) .allow_methods([Method::GET, Method::POST, Method::OPTIONS]) .allow_headers([header::CONTENT_TYPE]) .allow_credentials(false), @@ -66,3 +73,31 @@ pub async fn build_router(state: Arc, port: u16) -> Router { .layer(security_headers) .with_state(state) } + +async fn require_session_token( + State(state): State>, + req: Request, + next: Next, +) -> Result { + if req.method() == Method::OPTIONS { + return Ok(next.run(req).await); + } + + // In development mode, skip session token check. + if state.is_development() { + return Ok(next.run(req).await); + } + + let expected = state.session_token(); + let provided = req + .headers() + .get("X-Session-Token") + .and_then(|v| v.to_str().ok()) + .ok_or(StatusCode::FORBIDDEN)?; + + if provided != expected { + return Err(StatusCode::FORBIDDEN); + } + + Ok(next.run(req).await) +} diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 15129af535719..870c2e9d6ba72 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -9,6 +9,7 @@ use tokio::{ net::TcpListener, sync::{Mutex, oneshot}, }; +use uuid::Uuid; use crate::wallet_browser::{ error::BrowserWalletError, @@ -29,10 +30,10 @@ pub struct BrowserWalletServer { impl BrowserWalletServer { /// Create a new browser wallet server. - pub fn new(port: u16, open_browser: bool, timeout: Duration) -> Self { + pub fn new(port: u16, open_browser: bool, timeout: Duration, development: bool) -> Self { Self { port, - state: Arc::new(BrowserWalletState::new()), + state: Arc::new(BrowserWalletState::new(Uuid::new_v4().to_string(), development)), shutdown_tx: None, open_browser, timeout, @@ -95,6 +96,11 @@ impl BrowserWalletServer { self.timeout } + /// Get the session token. + pub fn session_token(&self) -> &str { + self.state.session_token() + } + /// Check if a wallet is connected. pub fn is_connected(&self) -> bool { self.state.is_connected() diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs index 23d8093a27407..b4549bc2a0137 100644 --- a/crates/wallets/src/wallet_browser/signer.rs +++ b/crates/wallets/src/wallet_browser/signer.rs @@ -25,8 +25,13 @@ pub struct BrowserSigner { } impl BrowserSigner { - pub async fn new(port: u16, open_browser: bool, timeout: Duration) -> Result { - let mut server = BrowserWalletServer::new(port, open_browser, timeout); + pub async fn new( + port: u16, + open_browser: bool, + timeout: Duration, + development: bool, + ) -> Result { + let mut server = BrowserWalletServer::new(port, open_browser, timeout, development); server.start().await.map_err(alloy_signer::Error::other)?; @@ -60,7 +65,7 @@ impl BrowserSigner { && from != self.address { return Err(alloy_signer::Error::other( - "Transaction 'from' address does not match connected wallet address", + "Transaction `from` address does not match connected wallet address", )); } @@ -68,7 +73,7 @@ impl BrowserSigner { && chain_id != self.chain_id { return Err(alloy_signer::Error::other( - "Transaction 'chainId' does not match connected wallet chain ID", + "Transaction `chainId` does not match connected wallet chain ID", )); } diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index 02cd32f496b80..4bf79a82e8191 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -14,17 +14,40 @@ pub(crate) struct BrowserWalletState { connection: Arc>>, /// Request/response queue for transactions. transactions: Arc>>, + /// Unique session token for the wallet browser instance. + /// The CSP on the served page prevents this token from being loaded by other origins. + session_token: String, + /// If true, the server is running in development mode. + /// This relaxes certain security restrictions for local development. + /// + /// **WARNING**: This should only be used in a development environment. + development: bool, } impl BrowserWalletState { /// Create a new browser wallet state. - pub fn new() -> Self { + pub fn new(session_token: String, development: bool) -> Self { Self { connection: Arc::new(Mutex::new(None)), transactions: Arc::new(Mutex::new(RequestQueue::new())), + session_token, + development, } } + /// Get the session token. + pub fn session_token(&self) -> &str { + &self.session_token + } + + /// Check if in development mode. + /// This relaxes certain security restrictions for local development. + /// + /// **WARNING**: This should only be used in a development environment. + pub fn is_development(&self) -> bool { + self.development + } + /// Check if wallet is connected. pub fn is_connected(&self) -> bool { self.connection.lock().is_some() From ca1ab1fd4de0995e904ddaeb3f3e8ee4f6694e53 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 31 Oct 2025 11:12:59 +0100 Subject: [PATCH 34/42] update browser wallet v0.0.0, includes session token support --- crates/wallets/src/opts.rs | 12 ++++++------ crates/wallets/src/signer.rs | 8 ++++++-- crates/wallets/src/wallet_browser/app/assets/main.js | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/crates/wallets/src/opts.rs b/crates/wallets/src/opts.rs index 19a18f8425b08..d9a5bad998526 100644 --- a/crates/wallets/src/opts.rs +++ b/crates/wallets/src/opts.rs @@ -114,14 +114,14 @@ pub struct WalletOpts { default_value_t = false, requires = "browser" )] - pub disable_browser_open: bool, + pub browser_disable_open: bool, /// Enable development mode for the browser wallet. /// This relaxes certain security features for local development. /// /// **WARNING**: This should only be used in a development environment. #[arg(long, help_heading = "Wallet options - browser", hide = true)] - pub development: bool, + pub browser_development: bool, } impl WalletOpts { @@ -154,8 +154,8 @@ impl WalletOpts { } else if self.browser { WalletSigner::from_browser( self.browser_port, - !self.disable_browser_open, - self.development, + !self.browser_disable_open, + self.browser_development, ) .await? } else if let Some(raw_wallet) = self.raw.signer()? { @@ -263,8 +263,8 @@ mod tests { gcp: false, browser: false, browser_port: 9545, - disable_browser_open: false, - development: false, + browser_development: false, + browser_disable_open: false, }; match wallet.signer().await { Ok(_) => { diff --git a/crates/wallets/src/signer.rs b/crates/wallets/src/signer.rs index eec429dfc6f71..b6bd0b2be3812 100644 --- a/crates/wallets/src/signer.rs +++ b/crates/wallets/src/signer.rs @@ -56,9 +56,13 @@ impl WalletSigner { Ok(Self::Trezor(trezor)) } - pub async fn from_browser(port: u16, open_browser: bool, development: bool) -> Result { + pub async fn from_browser( + port: u16, + open_browser: bool, + browser_development: bool, + ) -> Result { let browser_signer = - BrowserSigner::new(port, open_browser, Duration::from_secs(300), development) + BrowserSigner::new(port, open_browser, Duration::from_secs(300), browser_development) .await .map_err(|e| WalletSignerError::Browser(e.into()))?; Ok(Self::Browser(browser_signer)) diff --git a/crates/wallets/src/wallet_browser/app/assets/main.js b/crates/wallets/src/wallet_browser/app/assets/main.js index 65b45d93ea05c..330bf6da0d010 100644 --- a/crates/wallets/src/wallet_browser/app/assets/main.js +++ b/crates/wallets/src/wallet_browser/app/assets/main.js @@ -63,7 +63,7 @@ Resources:`;for(let t of c){if(!LB(t))throw new BB({field:`resources`,metaMessag [zustand devtools middleware] Unsupported __setState action format. When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(), and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } } - `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&p(t);return}i.dispatchFromDevtools&&typeof i.dispatch==`function`&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return p(m),s===void 0?u?.init(i.getState()):u?.init(fV(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(fV(c.name));case`ROLLBACK`:return _V(e.state,e=>{if(s===void 0){p(e),u?.init(i.getState());return}p(e[s]),u?.init(fV(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return _V(e.state,e=>{if(s===void 0){p(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&p(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;p(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),m},_V=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}n!==void 0&&t(n)},vV=e=>(t,n,r)=>{let i=r.subscribe;return r.subscribe=((e,t,n)=>{let a=e;if(t){let i=n?.equalityFn||Object.is,o=e(r.getState());a=n=>{let r=e(n);if(!i(o,r)){let e=o;t(o=r,e)}},n?.fireImmediately&&t(o,o)}return i(a)}),e(t,n,r)};function yV(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var bV=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return bV(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return bV(t)(e)}}}},xV=(e,t)=>(n,r,i)=>{let a={storage:yV(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=new Set,c=new Set,l=a.storage;if(!l)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let u=()=>{let e=a.partialize({...r()});return l.setItem(a.name,{state:e,version:a.version})},d=i.setState;i.setState=(e,t)=>(d(e,t),u());let f=e((...e)=>(n(...e),u()),r,i);i.getInitialState=()=>f;let p,m=()=>{if(!l)return;o=!1,s.forEach(e=>e(r()??f));let e=a.onRehydrateStorage?.call(a,r()??f)||void 0;return bV(l.getItem.bind(l))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(e=>{let[t,i]=e;if(p=a.merge(i,r()??f),n(p,!0),t)return u()}).then(()=>{e?.(p,void 0),p=r(),o=!0,c.forEach(e=>e(p))}).catch(t=>{e?.(void 0,t)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(l=e.storage)},clearStorage:()=>{l?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:e=>(s.add(e),()=>{s.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||m(),p||f},SV=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},CV=(e=>e?SV(e):SV);function wV(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function TV(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=wV(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var EV;function DV(){return EV||=TV(`keyval-store`,`keyval`),EV}function OV(e,t=DV()){return t(`readonly`,t=>wV(t.get(e)))}function kV(e,t,n=DV()){return n(`readwrite`,n=>(n.put(t,e),wV(n.transaction)))}function AV(e,t=DV()){return t(`readwrite`,t=>(t.delete(e),wV(t.transaction)))}function jV(e){return e}function MV(){let e=typeof indexedDB<`u`?TV(`porto`,`store`):void 0;return jV({async getItem(t){let n=await OV(t,e);return n===null?null:n},async removeItem(t){await AV(t,e)},async setItem(t,n){await kV(t,fN(n),e)},sizeLimit:1024*1024*50})}function NV(){let e=new Map;return jV({getItem(t){return e.get(t)??null},removeItem(t){e.delete(t)},setItem(t,n){e.set(t,n)},sizeLimit:1/0})}var PV=typeof window<`u`&&typeof document<`u`;const FV={announceProvider:!0,chains:SM,mode:PV?cV({host:yN.prod}):sV(),relay:Rv(nz.prod.http),storage:PV&&typeof indexedDB<`u`?MV():NV(),storageKey:`porto.store`};function IV(e={}){let t=e.chains??FV.chains,n=Object.fromEntries(t.map(t=>[t.id,e.transports?.[t.id]??Rv()])),r={announceProvider:e.announceProvider??FV.announceProvider,authUrl:e.authUrl,chains:t,feeToken:e.feeToken,merchantUrl:e.merchantUrl,mode:e.mode??FV.mode,relay:e.relay??FV.relay,storage:e.storage??FV.storage,storageKey:e.storageKey??FV.storageKey,transports:n},i=CV(gV(vV(xV(e=>({accounts:[],chainIds:r.chains.map(e=>e.id),feeToken:r.feeToken,requestQueue:[]}),{merge(e,t){let n=e,i=r.chains.find(e=>e.id===n.chainIds[0])?.id??r.chains[0].id,a=[i,...r.chains.map(e=>e.id).filter(e=>e!==i)];return{...t,...n,chainIds:a}},name:r.storageKey,partialize:e=>({accounts:e.accounts.map(e=>fN(e)),chainIds:e.chainIds}),storage:r.storage,version:5})))),a=r.mode,o={config:r,getMode(){return a},id:mN(),setMode(e){return c?.(),a=e,c=e.setup({internal:o}),c},store:i},s=hB(o),c=a===null?()=>{}:a.setup({internal:o});return{_internal:o,config:r,destroy(){c(),s._internal.destroy()},provider:s}}const LV=Object.freeze(Object.values(bM)),RV=e=>LV.find(t=>t.id===e);var zV=e=>{if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e!=`string`)return;let t=e.trim();if(/^0x[0-9a-fA-F]+$/.test(t)){let e=Number.parseInt(t,16);return Number.isNaN(e)?void 0:e}if(/^\d+$/.test(t)){let e=Number.parseInt(t,10);return Number.isNaN(e)?void 0:e}};const BV=(e,t,n)=>{let r=zV(e);t(r),n(r==null?void 0:RV(r))},VV=async(e,t=`GET`,n)=>{let r=await fetch(`http://127.0.0.1:9545${e}`,{method:t,headers:{"Content-Type":`application/json`},body:n===void 0?void 0:JSON.stringify(n)});if(!r.ok)throw Error(`API request failed: ${r.status} ${r.statusText}`);try{return await r.json()}catch{throw Error(`Invalid JSON response`)}},HV=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2),UV=e=>!!e&&e.status===`ok`;var WV=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),GV=u(s(((e,t)=>{t.exports=WV()}))());function KV(){(0,y.useEffect)(()=>{window.__PORTO__||(window.__PORTO__=IV())},[]);let[e,t]=(0,y.useState)([]),[n,r]=(0,y.useState)(!1),[i,a]=(0,y.useState)(null),[o,s]=(0,y.useState)(null),c=e.find(e=>e.info.uuid===o)??null,[l,u]=(0,y.useState)(),[d,f]=(0,y.useState)(),[p,m]=(0,y.useState)(),[h,g]=(0,y.useState)(null),[_,v]=(0,y.useState)(null),b=(0,y.useRef)(null),x=(0,y.useRef)(null),S=async()=>{if(!c||n)return;let e=await c.provider.request({method:`eth_requestAccounts`});u(e?.[0]??void 0);try{let e=await c.provider.request({method:`eth_chainId`});BV(e,f,m)}catch{f(void 0),m(void 0)}},C=async()=>{if(!(!l||d==null)){try{await VV(`/api/connection`,`POST`,[l,d])}catch{return}r(!0)}},w=async()=>{if(!c||!i?.request)return;let e=jv({transport:Nv(c.provider),chain:p??void 0});try{let t=await c.provider.request({method:`eth_sendTransaction`,params:[i.request]});v(t),await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:t,error:null}),console.log(`sent tx:`,t);let n=await lv(e,{hash:t});g(n),console.log(`tx receipt:`,n)}catch(e){let t=typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:String(e);console.error(`send failed:`,t);try{await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:null,error:t})}catch{}}},ee=(0,y.useCallback)(()=>{b.current&&=(window.clearInterval(b.current),null),a(null),v(null),g(null),u(void 0),f(void 0),m(void 0),r(!1),VV(`/api/connection`,`POST`,null)},[]);return(0,y.useEffect)(()=>{x.current&&o&&x.current!==o&&ee(),x.current=o},[o,ee]),(0,y.useEffect)(()=>{e.length===1&&!c&&s(e[0].info.uuid)},[e,c]),(0,y.useEffect)(()=>{let e=e=>{let{info:n,provider:r}=e.detail;t(e=>e.some(e=>e.info.uuid===n.uuid)?e:[...e,{info:n,provider:r}])};return window.addEventListener(`eip6963:announceProvider`,e),window.dispatchEvent(new Event(`eip6963:requestProvider`)),()=>window.removeEventListener(`eip6963:announceProvider`,e)},[]),(0,y.useEffect)(()=>{if(!c)return;let e=e=>{n||u(e[0]??void 0)},t=e=>{n||BV(e,f,m)};return c.provider.on?.(`accountsChanged`,e),c.provider.on?.(`chainChanged`,t),()=>{c.provider.removeListener?.(`accountsChanged`,e),c.provider.removeListener?.(`chainChanged`,t)}},[c,n]),(0,y.useEffect)(()=>{if(!n||i)return;let e=!0,t=window.setInterval(async()=>{if(e)try{let n=await VV(`/api/transaction/request`);UV(n)&&(window.clearInterval(t),e&&a(n.data))}catch{}},1e3);return b.current=t,()=>{e=!1,window.clearInterval(t),b.current===t&&(b.current=null)}},[n,i]),(0,GV.jsx)(`div`,{className:`wrapper`,children:(0,GV.jsxs)(`div`,{className:`container`,children:[(0,GV.jsx)(`img`,{className:`banner`,src:`banner.png`,alt:`Foundry Browser Wallet`}),e.length>1&&(0,GV.jsx)(`div`,{className:`wallet-selector`,children:(0,GV.jsx)(`label`,{children:(0,GV.jsxs)(`select`,{value:o??``,onChange:e=>s(e.target.value||null),disabled:n,children:[(0,GV.jsx)(`option`,{value:``,disabled:!0,children:`Select wallet…`}),e.map(({info:e})=>(0,GV.jsxs)(`option`,{value:e.uuid,children:[e.name,` (`,e.rdns,`)`]},e.uuid))]})})}),e.length===0&&(0,GV.jsx)(`p`,{children:`No wallets found.`}),c&&!l&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-connect`,onClick:S,disabled:n,children:`Connect Wallet`}),c&&l&&!n&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-confirm`,onClick:C,disabled:!l||d==null,children:`Confirm Connection`}),c&&l&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Connected`}),(0,GV.jsx)(`pre`,{className:`box`,children:`\ + `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&p(t);return}i.dispatchFromDevtools&&typeof i.dispatch==`function`&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return p(m),s===void 0?u?.init(i.getState()):u?.init(fV(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(fV(c.name));case`ROLLBACK`:return _V(e.state,e=>{if(s===void 0){p(e),u?.init(i.getState());return}p(e[s]),u?.init(fV(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return _V(e.state,e=>{if(s===void 0){p(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&p(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;p(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),m},_V=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}n!==void 0&&t(n)},vV=e=>(t,n,r)=>{let i=r.subscribe;return r.subscribe=((e,t,n)=>{let a=e;if(t){let i=n?.equalityFn||Object.is,o=e(r.getState());a=n=>{let r=e(n);if(!i(o,r)){let e=o;t(o=r,e)}},n?.fireImmediately&&t(o,o)}return i(a)}),e(t,n,r)};function yV(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var bV=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return bV(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return bV(t)(e)}}}},xV=(e,t)=>(n,r,i)=>{let a={storage:yV(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=new Set,c=new Set,l=a.storage;if(!l)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let u=()=>{let e=a.partialize({...r()});return l.setItem(a.name,{state:e,version:a.version})},d=i.setState;i.setState=(e,t)=>(d(e,t),u());let f=e((...e)=>(n(...e),u()),r,i);i.getInitialState=()=>f;let p,m=()=>{if(!l)return;o=!1,s.forEach(e=>e(r()??f));let e=a.onRehydrateStorage?.call(a,r()??f)||void 0;return bV(l.getItem.bind(l))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(e=>{let[t,i]=e;if(p=a.merge(i,r()??f),n(p,!0),t)return u()}).then(()=>{e?.(p,void 0),p=r(),o=!0,c.forEach(e=>e(p))}).catch(t=>{e?.(void 0,t)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(l=e.storage)},clearStorage:()=>{l?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:e=>(s.add(e),()=>{s.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||m(),p||f},SV=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},CV=(e=>e?SV(e):SV);function wV(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function TV(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=wV(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var EV;function DV(){return EV||=TV(`keyval-store`,`keyval`),EV}function OV(e,t=DV()){return t(`readonly`,t=>wV(t.get(e)))}function kV(e,t,n=DV()){return n(`readwrite`,n=>(n.put(t,e),wV(n.transaction)))}function AV(e,t=DV()){return t(`readwrite`,t=>(t.delete(e),wV(t.transaction)))}function jV(e){return e}function MV(){let e=typeof indexedDB<`u`?TV(`porto`,`store`):void 0;return jV({async getItem(t){let n=await OV(t,e);return n===null?null:n},async removeItem(t){await AV(t,e)},async setItem(t,n){await kV(t,fN(n),e)},sizeLimit:1024*1024*50})}function NV(){let e=new Map;return jV({getItem(t){return e.get(t)??null},removeItem(t){e.delete(t)},setItem(t,n){e.set(t,n)},sizeLimit:1/0})}var PV=typeof window<`u`&&typeof document<`u`;const FV={announceProvider:!0,chains:SM,mode:PV?cV({host:yN.prod}):sV(),relay:Rv(nz.prod.http),storage:PV&&typeof indexedDB<`u`?MV():NV(),storageKey:`porto.store`};function IV(e={}){let t=e.chains??FV.chains,n=Object.fromEntries(t.map(t=>[t.id,e.transports?.[t.id]??Rv()])),r={announceProvider:e.announceProvider??FV.announceProvider,authUrl:e.authUrl,chains:t,feeToken:e.feeToken,merchantUrl:e.merchantUrl,mode:e.mode??FV.mode,relay:e.relay??FV.relay,storage:e.storage??FV.storage,storageKey:e.storageKey??FV.storageKey,transports:n},i=CV(gV(vV(xV(e=>({accounts:[],chainIds:r.chains.map(e=>e.id),feeToken:r.feeToken,requestQueue:[]}),{merge(e,t){let n=e,i=r.chains.find(e=>e.id===n.chainIds[0])?.id??r.chains[0].id,a=[i,...r.chains.map(e=>e.id).filter(e=>e!==i)];return{...t,...n,chainIds:a}},name:r.storageKey,partialize:e=>({accounts:e.accounts.map(e=>fN(e)),chainIds:e.chainIds}),storage:r.storage,version:5})))),a=r.mode,o={config:r,getMode(){return a},id:mN(),setMode(e){return c?.(),a=e,c=e.setup({internal:o}),c},store:i},s=hB(o),c=a===null?()=>{}:a.setup({internal:o});return{_internal:o,config:r,destroy(){c(),s._internal.destroy()},provider:s}}const LV=Object.freeze(Object.values(bM)),RV=e=>LV.find(t=>t.id===e);var zV=e=>{if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e!=`string`)return;let t=e.trim();if(/^0x[0-9a-fA-F]+$/.test(t)){let e=Number.parseInt(t,16);return Number.isNaN(e)?void 0:e}if(/^\d+$/.test(t)){let e=Number.parseInt(t,10);return Number.isNaN(e)?void 0:e}};const BV=(e,t,n)=>{let r=zV(e);t(r),n(r==null?void 0:RV(r))},VV=async(e,t=`GET`,n)=>{let r={"Content-Type":`application/json`},i=typeof window<`u`?window.__SESSION_TOKEN__:void 0;i&&(r[`X-Session-Token`]=i);let a=await fetch(`http://127.0.0.1:9545${e}`,{method:t,headers:r,body:n===void 0?void 0:JSON.stringify(n)});if(!a.ok)throw Error(`API request failed: ${a.status} ${a.statusText}`);try{return await a.json()}catch{throw Error(`Invalid JSON response`)}},HV=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2),UV=e=>!!e&&e.status===`ok`;var WV=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),GV=u(s(((e,t)=>{t.exports=WV()}))());function KV(){(0,y.useEffect)(()=>{window.__PORTO__||(window.__PORTO__=IV())},[]);let[e,t]=(0,y.useState)([]),[n,r]=(0,y.useState)(!1),[i,a]=(0,y.useState)(null),[o,s]=(0,y.useState)(null),c=e.find(e=>e.info.uuid===o)??null,[l,u]=(0,y.useState)(),[d,f]=(0,y.useState)(),[p,m]=(0,y.useState)(),[h,g]=(0,y.useState)(null),[_,v]=(0,y.useState)(null),b=(0,y.useRef)(null),x=(0,y.useRef)(null),S=async()=>{if(!c||n)return;let e=await c.provider.request({method:`eth_requestAccounts`});u(e?.[0]??void 0);try{let e=await c.provider.request({method:`eth_chainId`});BV(e,f,m)}catch{f(void 0),m(void 0)}},C=async()=>{if(!(!l||d==null)){try{await VV(`/api/connection`,`POST`,[l,d])}catch{return}r(!0)}},w=async()=>{if(!c||!i?.request)return;let e=jv({transport:Nv(c.provider),chain:p??void 0});try{let t=await c.provider.request({method:`eth_sendTransaction`,params:[i.request]});v(t),await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:t,error:null}),console.log(`sent tx:`,t);let n=await lv(e,{hash:t});g(n),console.log(`tx receipt:`,n)}catch(e){let t=typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:String(e);console.error(`send failed:`,t);try{await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:null,error:t})}catch{}}},ee=(0,y.useCallback)(()=>{b.current&&=(window.clearInterval(b.current),null),a(null),v(null),g(null),u(void 0),f(void 0),m(void 0),r(!1),VV(`/api/connection`,`POST`,null)},[]);return(0,y.useEffect)(()=>{x.current&&o&&x.current!==o&&ee(),x.current=o},[o,ee]),(0,y.useEffect)(()=>{e.length===1&&!c&&s(e[0].info.uuid)},[e,c]),(0,y.useEffect)(()=>{let e=e=>{let{info:n,provider:r}=e.detail;t(e=>e.some(e=>e.info.uuid===n.uuid)?e:[...e,{info:n,provider:r}])};return window.addEventListener(`eip6963:announceProvider`,e),window.dispatchEvent(new Event(`eip6963:requestProvider`)),()=>window.removeEventListener(`eip6963:announceProvider`,e)},[]),(0,y.useEffect)(()=>{if(!c)return;let e=e=>{n||u(e[0]??void 0)},t=e=>{n||BV(e,f,m)};return c.provider.on?.(`accountsChanged`,e),c.provider.on?.(`chainChanged`,t),()=>{c.provider.removeListener?.(`accountsChanged`,e),c.provider.removeListener?.(`chainChanged`,t)}},[c,n]),(0,y.useEffect)(()=>{if(!n||i)return;let e=!0,t=window.setInterval(async()=>{if(e)try{let n=await VV(`/api/transaction/request`);UV(n)&&(window.clearInterval(t),e&&a(n.data))}catch{}},1e3);return b.current=t,()=>{e=!1,window.clearInterval(t),b.current===t&&(b.current=null)}},[n,i]),(0,GV.jsx)(`div`,{className:`wrapper`,children:(0,GV.jsxs)(`div`,{className:`container`,children:[(0,GV.jsx)(`img`,{className:`banner`,src:`banner.png`,alt:`Foundry Browser Wallet`}),e.length>1&&(0,GV.jsx)(`div`,{className:`wallet-selector`,children:(0,GV.jsx)(`label`,{children:(0,GV.jsxs)(`select`,{value:o??``,onChange:e=>s(e.target.value||null),disabled:n,children:[(0,GV.jsx)(`option`,{value:``,disabled:!0,children:`Select wallet…`}),e.map(({info:e})=>(0,GV.jsxs)(`option`,{value:e.uuid,children:[e.name,` (`,e.rdns,`)`]},e.uuid))]})})}),e.length===0&&(0,GV.jsx)(`p`,{children:`No wallets found.`}),c&&!l&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-connect`,onClick:S,disabled:n,children:`Connect Wallet`}),c&&l&&!n&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-confirm`,onClick:C,disabled:!l||d==null,children:`Confirm Connection`}),c&&l&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Connected`}),(0,GV.jsx)(`pre`,{className:`box`,children:`\ account: ${l} chain: ${p?`${p.name} (${d})`:d??`unknown`} rpc: ${p?.rpcUrls?.default?.http?.[0]??p?.rpcUrls?.public?.http?.[0]??`unknown`}`})]}),c&&l&&n&&!_&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`To Sign`}),(0,GV.jsx)(`div`,{className:`box`,children:(0,GV.jsx)(`pre`,{children:i?HV(i):`No pending transaction`})})]}),c&&l&&_&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Transaction Hash`}),(0,GV.jsx)(`pre`,{className:`box`,children:_}),(0,GV.jsxs)(`div`,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Receipt`}),(0,GV.jsx)(`pre`,{className:`box`,children:h?HV(h):`Waiting for receipt...`})]})]}),c&&l&&i&&n&&!_&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-send`,onClick:w,children:`Sign & Send`})]})})}var qV=document.getElementById(`root`);if(qV)(0,v.createRoot)(qV).render((0,GV.jsx)(y.StrictMode,{children:(0,GV.jsx)(KV,{})}));else throw Error(`Root element with id "root" not found`); \ No newline at end of file From 7d255cc6b0eafa1e89a288345284862dbe68e36a Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 31 Oct 2025 12:46:58 +0100 Subject: [PATCH 35/42] add notice --- crates/wallets/src/wallet_browser/signer.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs index b4549bc2a0137..adbc1d02cef66 100644 --- a/crates/wallets/src/wallet_browser/signer.rs +++ b/crates/wallets/src/wallet_browser/signer.rs @@ -35,6 +35,7 @@ impl BrowserSigner { server.start().await.map_err(alloy_signer::Error::other)?; + let _ = sh_warn!("Browser wallet is still in early development. Use with caution!"); let _ = sh_println!("Opening browser for wallet connection..."); let _ = sh_println!("Waiting for wallet connection..."); From d313ad25b572eb92029d002748d22a68087604cc Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 31 Oct 2025 14:44:44 +0100 Subject: [PATCH 36/42] add signing flow --- Cargo.lock | 1 + crates/wallets/Cargo.toml | 1 + crates/wallets/src/wallet_browser/handlers.rs | 56 +- crates/wallets/src/wallet_browser/mod.rs | 495 ++++++++++++++++-- crates/wallets/src/wallet_browser/queue.rs | 10 +- crates/wallets/src/wallet_browser/router.rs | 2 + crates/wallets/src/wallet_browser/server.rs | 70 ++- crates/wallets/src/wallet_browser/signer.rs | 70 ++- crates/wallets/src/wallet_browser/state.rs | 51 +- crates/wallets/src/wallet_browser/types.rs | 50 +- 10 files changed, 728 insertions(+), 78 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b65de6f59c497..ee480fe24fa34 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5010,6 +5010,7 @@ dependencies = [ "reqwest", "rpassword", "serde", + "serde_json", "thiserror 2.0.17", "tokio", "tower", diff --git a/crates/wallets/Cargo.toml b/crates/wallets/Cargo.toml index 0bb9762f86bc6..78f593844e726 100644 --- a/crates/wallets/Cargo.toml +++ b/crates/wallets/Cargo.toml @@ -29,6 +29,7 @@ alloy-dyn-abi.workspace = true alloy-rpc-types.workspace = true axum.workspace = true foundry-common.workspace = true +serde_json.workspace = true tokio = { workspace = true, features = ["macros"] } parking_lot.workspace = true uuid.workspace = true diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index ff7a1c2194cff..7a4adcfd07353 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -13,9 +13,13 @@ use axum::{ use crate::wallet_browser::{ app::contents, state::BrowserWalletState, - types::{BrowserApiResponse, BrowserTransaction, Connection, TransactionResponse}, + types::{ + BrowserApiResponse, BrowserSignRequest, BrowserSignResponse, BrowserTransactionRequest, + BrowserTransactionResponse, Connection, + }, }; +/// Serve index.html pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { let mut headers = HeaderMap::new(); headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/html; charset=utf-8")); @@ -28,6 +32,7 @@ pub(crate) async fn serve_index() -> impl axum::response::IntoResponse { (headers, Html(contents::INDEX_HTML)) } +/// Serve styles.css pub(crate) async fn serve_css() -> impl axum::response::IntoResponse { let mut headers = HeaderMap::new(); headers.insert(CONTENT_TYPE, HeaderValue::from_static("text/css; charset=utf-8")); @@ -40,6 +45,7 @@ pub(crate) async fn serve_css() -> impl axum::response::IntoResponse { (headers, contents::STYLES_CSS) } +/// Serve main.js with injected session token. pub(crate) async fn serve_js( State(state): State>, ) -> impl axum::response::IntoResponse { @@ -57,6 +63,7 @@ pub(crate) async fn serve_js( (headers, js) } +/// Serve banner.png pub(crate) async fn serve_banner_png() -> impl axum::response::IntoResponse { let mut headers = HeaderMap::new(); headers.insert(CONTENT_TYPE, HeaderValue::from_static("image/png")); @@ -64,6 +71,7 @@ pub(crate) async fn serve_banner_png() -> impl axum::response::IntoResponse { (headers, contents::BANNER_PNG) } +/// Serve logo.png pub(crate) async fn serve_logo_png() -> impl axum::response::IntoResponse { let mut headers = HeaderMap::new(); headers.insert(CONTENT_TYPE, HeaderValue::from_static("image/png")); @@ -75,10 +83,10 @@ pub(crate) async fn serve_logo_png() -> impl axum::response::IntoResponse { /// Route: GET /api/transaction/request pub(crate) async fn get_next_transaction_request( State(state): State>, -) -> Json> { +) -> Json> { match state.read_next_transaction_request() { Some(tx) => Json(BrowserApiResponse::with_data(tx)), - None => Json(BrowserApiResponse::error("No pending transaction")), + None => Json(BrowserApiResponse::error("No pending transaction request")), } } @@ -86,7 +94,7 @@ pub(crate) async fn get_next_transaction_request( /// Route: POST /api/transaction/response pub(crate) async fn post_transaction_response( State(state): State>, - Json(body): Json, + Json(body): Json, ) -> Json { // Ensure that the transaction request exists. if !state.has_transaction_request(&body.id) { @@ -124,6 +132,46 @@ pub(crate) async fn post_transaction_response( Json(BrowserApiResponse::ok()) } +/// Get the next pending signing request. +/// Route: GET /api/signing/request +pub(crate) async fn get_next_signing_request( + State(state): State>, +) -> Json> { + match state.read_next_signing_request() { + Some(req) => Json(BrowserApiResponse::with_data(req)), + None => Json(BrowserApiResponse::error("No pending signing request")), + } +} + +/// Post a signing response (signature or error). +/// Route: POST /api/signing/response +pub(crate) async fn post_signing_response( + State(state): State>, + Json(body): Json, +) -> Json { + // Ensure that the signing request exists. + if !state.has_signing_request(&body.id) { + return Json(BrowserApiResponse::error("Unknown signing request id")); + } + + // Ensure that exactly one of signature or error is provided. + match (&body.signature, &body.error) { + (None, None) => { + return Json(BrowserApiResponse::error("Either signature or error must be provided")); + } + (Some(_), Some(_)) => { + return Json(BrowserApiResponse::error( + "Only one of signature or error can be provided", + )); + } + _ => {} + } + + state.add_signing_response(body); + + Json(BrowserApiResponse::ok()) +} + /// Get current connection information. /// Route: GET /api/connection pub(crate) async fn get_connection_info( diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index 4424b1d14fb2e..e873b4e05b4d8 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -13,7 +13,7 @@ mod types; mod tests { use std::time::Duration; - use alloy_primitives::{Address, TxHash, TxKind, U256, address}; + use alloy_primitives::{Address, Bytes, TxHash, TxKind, U256, address}; use alloy_rpc_types::TransactionRequest; use axum::http::{HeaderMap, HeaderValue}; use tokio::task::JoinHandle; @@ -22,7 +22,10 @@ mod tests { use crate::wallet_browser::{ error::BrowserWalletError, server::BrowserWalletServer, - types::{BrowserApiResponse, BrowserTransaction, Connection, TransactionResponse}, + types::{ + BrowserApiResponse, BrowserSignRequest, BrowserSignResponse, BrowserTransactionRequest, + BrowserTransactionResponse, Connection, SignType, + }, }; const ALICE: Address = address!("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266"); @@ -119,14 +122,14 @@ mod tests { connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Enqueue a tx - let (tx_request_id, tx_request) = create_browser_transaction(); - let _handle = wait_for_signing(&server, tx_request).await; + let (tx_request_id, tx_request) = create_browser_transaction_request(); + let _handle = wait_for_transaction_signing(&server, tx_request).await; check_transaction_request_content(&client, &server, tx_request_id).await; // Wallet posts both hash and error -> should be rejected let resp = client .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { + .json(&BrowserTransactionResponse { id: tx_request_id, hash: Some(TxHash::random()), error: Some("should not have both".into()), @@ -153,14 +156,14 @@ mod tests { server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; - let (tx_request_id, tx_request) = create_browser_transaction(); - let _handle = wait_for_signing(&server, tx_request).await; + let (tx_request_id, tx_request) = create_browser_transaction_request(); + let _handle = wait_for_transaction_signing(&server, tx_request).await; check_transaction_request_content(&client, &server, tx_request_id).await; // Neither hash nor error -> rejected let resp = client .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { id: tx_request_id, hash: None, error: None }) + .json(&BrowserTransactionResponse { id: tx_request_id, hash: None, error: None }) .send() .await .unwrap() @@ -183,15 +186,15 @@ mod tests { server.start().await.unwrap(); connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; - let (tx_request_id, tx_request) = create_browser_transaction(); - let _handle = wait_for_signing(&server, tx_request).await; + let (tx_request_id, tx_request) = create_browser_transaction_request(); + let _handle = wait_for_transaction_signing(&server, tx_request).await; check_transaction_request_content(&client, &server, tx_request_id).await; // Zero hash -> rejected let zero = TxHash::new([0u8; 32]); let resp = client .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { id: tx_request_id, hash: Some(zero), error: None }) + .json(&BrowserTransactionResponse { id: tx_request_id, hash: Some(zero), error: None }) .send() .await .unwrap() @@ -216,23 +219,16 @@ mod tests { let mut server = create_server(); let client = client_with_token(&server); server.start().await.unwrap(); - - // Connect Alice's wallet connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; - // Create a browser transaction request - let (tx_request_id, tx_request) = create_browser_transaction(); - - // Spawn the signing flow in the background - let handle = wait_for_signing(&server, tx_request).await; - - // Check transaction request + let (tx_request_id, tx_request) = create_browser_transaction_request(); + let handle = wait_for_transaction_signing(&server, tx_request).await; check_transaction_request_content(&client, &server, tx_request_id).await; // Simulate the wallet accepting and signing the tx let resp = client .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { + .json(&BrowserTransactionResponse { id: tx_request_id, hash: Some(TxHash::random()), error: None, @@ -259,8 +255,6 @@ mod tests { let mut server = create_server(); let client = client_with_token(&server); server.start().await.unwrap(); - - // Connect Alice's wallet connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Create a random transaction response without a matching request @@ -269,7 +263,7 @@ mod tests { // Simulate the wallet sending a response for an unknown request let resp = client .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { + .json(&BrowserTransactionResponse { id: tx_request_id, hash: Some(TxHash::random()), error: None, @@ -297,8 +291,6 @@ mod tests { let mut server = create_server(); let client = client_with_token(&server); server.start().await.unwrap(); - - // Connect Alice's wallet connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Simulate the wallet sending a response with an invalid UUID @@ -325,15 +317,13 @@ mod tests { let mut server = create_server(); let client = client_with_token(&server); server.start().await.unwrap(); - - // Connect Alice's wallet connect_wallet(&client, &server, Connection(ALICE, 1)).await; // Create a browser transaction request - let (tx_request_id, tx_request) = create_browser_transaction(); + let (tx_request_id, tx_request) = create_browser_transaction_request(); - // Spawn the signing flow in the background - let handle = wait_for_signing(&server, tx_request).await; + // Spawn the transaction signing flow in the background + let handle = wait_for_transaction_signing(&server, tx_request).await; // Check transaction request check_transaction_request_content(&client, &server, tx_request_id).await; @@ -341,7 +331,7 @@ mod tests { // Simulate the wallet rejecting the tx let resp = client .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { + .json(&BrowserTransactionResponse { id: tx_request_id, hash: None, error: Some("User rejected the transaction".into()), @@ -372,12 +362,12 @@ mod tests { connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Create multiple browser transaction requests - let (tx_request_id1, tx_request1) = create_browser_transaction(); - let (tx_request_id2, tx_request2) = create_different_browser_transaction(); + let (tx_request_id1, tx_request1) = create_browser_transaction_request(); + let (tx_request_id2, tx_request2) = create_different_browser_transaction_request(); // Spawn signing flows for both transactions concurrently - let handle1 = wait_for_signing(&server, tx_request1).await; - let handle2 = wait_for_signing(&server, tx_request2).await; + let handle1 = wait_for_transaction_signing(&server, tx_request1.clone()).await; + let handle2 = wait_for_transaction_signing(&server, tx_request2.clone()).await; // Check first transaction request { @@ -388,7 +378,7 @@ mod tests { .unwrap(); let BrowserApiResponse::Ok(pending_tx) = - resp.json::>().await.unwrap() + resp.json::>().await.unwrap() else { panic!("expected BrowserApiResponse::Ok with a pending transaction"); }; @@ -397,15 +387,15 @@ mod tests { pending_tx.id, tx_request_id1, "expected the first transaction to be at the front of the queue" ); - assert_eq!(pending_tx.request.from, Some(ALICE)); - assert_eq!(pending_tx.request.to, Some(TxKind::Call(BOB))); - assert_eq!(pending_tx.request.value, Some(U256::from(1000))); + assert_eq!(pending_tx.request.from, tx_request1.request.from); + assert_eq!(pending_tx.request.to, tx_request1.request.to); + assert_eq!(pending_tx.request.value, tx_request1.request.value); } // Simulate the wallet accepting and signing the first transaction let resp1 = client .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { + .json(&BrowserTransactionResponse { id: tx_request_id1, hash: Some(TxHash::random()), error: None, @@ -432,7 +422,7 @@ mod tests { .unwrap(); let BrowserApiResponse::Ok(pending_tx) = - resp.json::>().await.unwrap() + resp.json::>().await.unwrap() else { panic!("expected BrowserApiResponse::Ok with a pending transaction"); }; @@ -441,15 +431,15 @@ mod tests { pending_tx.id, tx_request_id2, "expected the second transaction to be pending after the first one completed" ); - assert_eq!(pending_tx.request.from, Some(BOB)); - assert_eq!(pending_tx.request.to, Some(TxKind::Call(ALICE))); - assert_eq!(pending_tx.request.value, Some(U256::from(2000))); + assert_eq!(pending_tx.request.from, tx_request2.request.from); + assert_eq!(pending_tx.request.to, tx_request2.request.to); + assert_eq!(pending_tx.request.value, tx_request2.request.value); } // Simulate the wallet rejecting the second transaction let resp2 = client .post(format!("http://localhost:{}/api/transaction/response", server.port())) - .json(&TransactionResponse { + .json(&BrowserTransactionResponse { id: tx_request_id2, hash: None, error: Some("User rejected the transaction".into()), @@ -475,6 +465,316 @@ mod tests { server.stop().await.unwrap(); } + #[tokio::test] + async fn test_send_sign_response_both_signature_and_error_rejected() { + let mut server = create_server(); + let client = client_with_token(&server); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + let (sign_request_id, sign_request) = create_browser_sign_request(); + let _handle = wait_for_message_signing(&server, sign_request).await; + check_sign_request_content(&client, &server, sign_request_id).await; + + // Both signature and error -> should be rejected + let resp = client + .post(format!("http://localhost:{}/api/signing/response", server.port())) + .json(&BrowserSignResponse { + id: sign_request_id, + signature: Some(Bytes::from("Hello World")), + error: Some("Should not have both".into()), + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + + let api: BrowserApiResponse<()> = resp.json().await.unwrap(); + match api { + BrowserApiResponse::Error { message } => { + assert_eq!(message, "Only one of signature or error can be provided"); + } + _ => panic!("expected error response"), + } + } + + #[tokio::test] + async fn test_send_sign_response_neither_hash_nor_error_rejected() { + let mut server = create_server(); + let client = client_with_token(&server); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + let (sign_request_id, sign_request) = create_browser_sign_request(); + let _handle = wait_for_message_signing(&server, sign_request).await; + check_sign_request_content(&client, &server, sign_request_id).await; + + // Neither signature nor error -> rejected + let resp = client + .post(format!("http://localhost:{}/api/signing/response", server.port())) + .json(&BrowserSignResponse { id: sign_request_id, signature: None, error: None }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + + let api: BrowserApiResponse<()> = resp.json().await.unwrap(); + match api { + BrowserApiResponse::Error { message } => { + assert_eq!(message, "Either signature or error must be provided"); + } + _ => panic!("expected error response"), + } + } + + #[tokio::test] + async fn test_send_sign_client_accept() { + let mut server = create_server(); + let client = client_with_token(&server); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + let (sign_request_id, sign_request) = create_browser_sign_request(); + let handle = wait_for_message_signing(&server, sign_request).await; + check_sign_request_content(&client, &server, sign_request_id).await; + + // Simulate the wallet accepting and signing the message + let resp = client + .post(format!("http://localhost:{}/api/signing/response", server.port())) + .json(&BrowserSignResponse { + id: sign_request_id, + signature: Some(Bytes::from("FakeSignature")), + error: None, + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + assert_eq!(resp.status(), reqwest::StatusCode::OK); + + // The join handle should now return the signature + let res = handle.await.expect("task panicked"); + match res { + Ok(signature) => { + assert_eq!(signature, Bytes::from("FakeSignature")); + } + other => panic!("expected success, got {other:?}"), + } + } + + #[tokio::test] + async fn test_send_sign_client_not_requested() { + let mut server = create_server(); + let client = client_with_token(&server); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + // Create a random signing response without a matching request + let sign_request_id = Uuid::new_v4(); + + // Simulate the wallet sending a response for an unknown request + let resp = client + .post(format!("http://localhost:{}/api/signing/response", server.port())) + .json(&BrowserSignResponse { + id: sign_request_id, + signature: Some(Bytes::from("FakeSignature")), + error: None, + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + + assert_eq!(resp.status(), reqwest::StatusCode::OK); + + // Assert that no signing response without a matching request is accepted + let api: BrowserApiResponse<()> = resp.json().await.unwrap(); + match api { + BrowserApiResponse::Error { message } => { + assert_eq!(message, "Unknown signing request id"); + } + _ => panic!("expected error response"), + } + } + + #[tokio::test] + async fn test_send_sign_invalid_response_format() { + let mut server = create_server(); + let client = client_with_token(&server); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + // Simulate the wallet sending a response with an invalid UUID + let resp = client + .post(format!("http://localhost:{}/api/signing/response", server.port())) + .body( + r#"{ + "id": "invalid-uuid", + "signature": "invalid-signature", + "error": null + }"#, + ) + .header("Content-Type", "application/json") + .send() + .await + .unwrap(); + + // The server should respond with a 422 Unprocessable Entity status + assert_eq!(resp.status(), reqwest::StatusCode::UNPROCESSABLE_ENTITY); + } + + #[tokio::test] + async fn test_send_sign_client_reject() { + let mut server = create_server(); + let client = client_with_token(&server); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + let (sign_request_id, sign_request) = create_browser_sign_request(); + let handle = wait_for_message_signing(&server, sign_request).await; + check_sign_request_content(&client, &server, sign_request_id).await; + + // Simulate the wallet rejecting the signing request + let resp = client + .post(format!("http://localhost:{}/api/signing/response", server.port())) + .json(&BrowserSignResponse { + id: sign_request_id, + signature: None, + error: Some("User rejected the signing request".into()), + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + assert_eq!(resp.status(), reqwest::StatusCode::OK); + + // The join handle should now return a rejection error + let res = handle.await.expect("task panicked"); + match res { + Err(BrowserWalletError::Rejected { operation, reason }) => { + assert_eq!(operation, "Signing"); + assert_eq!(reason, "User rejected the signing request"); + } + other => panic!("expected rejection, got {other:?}"), + } + } + + #[tokio::test] + async fn test_send_multiple_sign_requests() { + let mut server = create_server(); + let client = client_with_token(&server); + server.start().await.unwrap(); + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; + + // Create multiple browser sign requests + let (sign_request_id1, sign_request1) = create_browser_sign_request(); + let (sign_request_id2, sign_request2) = create_different_browser_sign_request(); + + // Spawn signing flows for both sign requests concurrently + let handle1 = wait_for_message_signing(&server, sign_request1.clone()).await; + let handle2 = wait_for_message_signing(&server, sign_request2.clone()).await; + + // Check first sign request + { + let resp = client + .get(format!("http://localhost:{}/api/signing/request", server.port())) + .send() + .await + .unwrap(); + + let BrowserApiResponse::Ok(pending_sign) = + resp.json::>().await.unwrap() + else { + panic!("expected BrowserApiResponse::Ok with a pending sign request"); + }; + + assert_eq!( + pending_sign.id, sign_request_id1, + "expected the first sign request to be at the front of the queue" + ); + assert_eq!(pending_sign.address, sign_request1.address); + assert_eq!(pending_sign.message, sign_request1.message); + assert_eq!(pending_sign.sign_type, sign_request1.sign_type); + } + + // Simulate the wallet accepting and signing the first sign request + let resp1 = client + .post(format!("http://localhost:{}/api/signing/response", server.port())) + .json(&BrowserSignResponse { + id: sign_request_id1, + signature: Some(Bytes::from("Signature1")), + error: None, + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + assert_eq!(resp1.status(), reqwest::StatusCode::OK); + + let res1 = handle1.await.expect("first signing flow panicked"); + match res1 { + Ok(signature) => assert_eq!(signature, Bytes::from("Signature1")), + other => panic!("expected success, got {other:?}"), + } + + // Check second sign request + { + let resp = client + .get(format!("http://localhost:{}/api/signing/request", server.port())) + .send() + .await + .unwrap(); + + let BrowserApiResponse::Ok(pending_sign) = + resp.json::>().await.unwrap() + else { + panic!("expected BrowserApiResponse::Ok with a pending sign request"); + }; + + assert_eq!( + pending_sign.id, sign_request_id2, + "expected the second sign request to be pending after the first one completed" + ); + assert_eq!(pending_sign.address, sign_request2.address); + assert_eq!(pending_sign.message, sign_request2.message); + assert_eq!(pending_sign.sign_type, sign_request2.sign_type); + } + + // Simulate the wallet rejecting the second sign request + let resp2 = client + .post(format!("http://localhost:{}/api/signing/response", server.port())) + .json(&BrowserSignResponse { + id: sign_request_id2, + signature: None, + error: Some("User rejected the signing request".into()), + }) + .send() + .await + .unwrap() + .error_for_status() + .unwrap(); + assert_eq!(resp2.status(), reqwest::StatusCode::OK); + + let res2 = handle2.await.expect("second signing flow panicked"); + match res2 { + Err(BrowserWalletError::Rejected { operation, reason }) => { + assert_eq!(operation, "Signing"); + assert_eq!(reason, "User rejected the signing request"); + } + other => panic!("expected BrowserWalletError::Rejected, got {other:?}"), + } + + check_sign_request_queue_empty(&client, &server).await; + + server.stop().await.unwrap(); + } + /// Helper to create a default browser wallet server. fn create_server() -> BrowserWalletServer { BrowserWalletServer::new(0, false, DEFAULT_TIMEOUT, DEFAULT_DEVELOPMENT) @@ -509,10 +809,10 @@ mod tests { assert!(resp.await.is_ok()); } - /// Spawn the signing flow in the background and return the join handle. - async fn wait_for_signing( + /// Spawn the transaction signing flow in the background and return the join handle. + async fn wait_for_transaction_signing( server: &BrowserWalletServer, - tx_request: BrowserTransaction, + tx_request: BrowserTransactionRequest, ) -> JoinHandle> { // Spawn the signing flow in the background let browser_server = server.clone(); @@ -524,10 +824,25 @@ mod tests { join_handle } + /// Spawn the message signing flow in the background and return the join handle. + async fn wait_for_message_signing( + server: &BrowserWalletServer, + sign_request: BrowserSignRequest, + ) -> JoinHandle> { + // Spawn the signing flow in the background + let browser_server = server.clone(); + let join_handle = + tokio::spawn(async move { browser_server.request_signing(sign_request).await }); + tokio::task::yield_now().await; + tokio::time::sleep(Duration::from_millis(100)).await; + + join_handle + } + /// Create a simple browser transaction request. - fn create_browser_transaction() -> (Uuid, BrowserTransaction) { + fn create_browser_transaction_request() -> (Uuid, BrowserTransactionRequest) { let id = Uuid::new_v4(); - let tx = BrowserTransaction { + let tx = BrowserTransactionRequest { id, request: TransactionRequest { from: Some(ALICE), @@ -540,9 +855,9 @@ mod tests { } /// Create a different browser transaction request (from the first one). - fn create_different_browser_transaction() -> (Uuid, BrowserTransaction) { + fn create_different_browser_transaction_request() -> (Uuid, BrowserTransactionRequest) { let id = Uuid::new_v4(); - let tx = BrowserTransaction { + let tx = BrowserTransactionRequest { id, request: TransactionRequest { from: Some(BOB), @@ -554,6 +869,30 @@ mod tests { (id, tx) } + /// Create a simple browser sign request. + fn create_browser_sign_request() -> (Uuid, BrowserSignRequest) { + let id = Uuid::new_v4(); + let req = BrowserSignRequest { + id, + address: ALICE, + message: "Hello, world!".into(), + sign_type: SignType::PersonalSign, + }; + (id, req) + } + + /// Create a different browser sign request (from the first one). + fn create_different_browser_sign_request() -> (Uuid, BrowserSignRequest) { + let id = Uuid::new_v4(); + let req = BrowserSignRequest { + id, + address: BOB, + message: "Different message".into(), + sign_type: SignType::SignTypedDataV4, + }; + (id, req) + } + /// Check that the transaction request queue is empty, if not panic. async fn check_transaction_request_queue_empty( client: &reqwest::Client, @@ -566,12 +905,12 @@ mod tests { .unwrap(); let BrowserApiResponse::Error { message } = - resp.json::>().await.unwrap() + resp.json::>().await.unwrap() else { panic!("expected BrowserApiResponse::Error (no pending transaction), but got Ok"); }; - assert_eq!(message, "No pending transaction"); + assert_eq!(message, "No pending transaction request"); } /// Check that the transaction request matches the expected request ID and fields. @@ -587,7 +926,7 @@ mod tests { .unwrap(); let BrowserApiResponse::Ok(pending_tx) = - resp.json::>().await.unwrap() + resp.json::>().await.unwrap() else { panic!("expected BrowserApiResponse::Ok with a pending transaction"); }; @@ -597,4 +936,48 @@ mod tests { assert_eq!(pending_tx.request.to, Some(TxKind::Call(BOB))); assert_eq!(pending_tx.request.value, Some(U256::from(1000))); } + + /// Check that the sign request queue is empty, if not panic. + async fn check_sign_request_queue_empty( + client: &reqwest::Client, + server: &BrowserWalletServer, + ) { + let resp = client + .get(format!("http://localhost:{}/api/signing/request", server.port())) + .send() + .await + .unwrap(); + + let BrowserApiResponse::Error { message } = + resp.json::>().await.unwrap() + else { + panic!("expected BrowserApiResponse::Error (no pending signing request), but got Ok"); + }; + + assert_eq!(message, "No pending signing request"); + } + + /// Check that the sign request matches the expected request ID and fields. + async fn check_sign_request_content( + client: &reqwest::Client, + server: &BrowserWalletServer, + sign_request_id: Uuid, + ) { + let resp = client + .get(format!("http://localhost:{}/api/signing/request", server.port())) + .send() + .await + .unwrap(); + + let BrowserApiResponse::Ok(pending_req) = + resp.json::>().await.unwrap() + else { + panic!("expected BrowserApiResponse::Ok with a pending signing request"); + }; + + assert_eq!(pending_req.id, sign_request_id); + assert_eq!(pending_req.address, ALICE); + assert_eq!(pending_req.message, "Hello, world!"); + assert_eq!(pending_req.sign_type, SignType::PersonalSign); + } } diff --git a/crates/wallets/src/wallet_browser/queue.rs b/crates/wallets/src/wallet_browser/queue.rs index a7f1343077385..608c7e18dbbde 100644 --- a/crates/wallets/src/wallet_browser/queue.rs +++ b/crates/wallets/src/wallet_browser/queue.rs @@ -2,7 +2,7 @@ use std::collections::{HashMap, VecDeque}; use uuid::Uuid; -use crate::wallet_browser::types::BrowserTransaction; +use crate::wallet_browser::types::{BrowserSignRequest, BrowserTransactionRequest}; #[derive(Debug)] pub(crate) struct RequestQueue { @@ -69,7 +69,13 @@ pub(crate) trait HasId { fn id(&self) -> &Uuid; } -impl HasId for BrowserTransaction { +impl HasId for BrowserTransactionRequest { + fn id(&self) -> &Uuid { + &self.id + } +} + +impl HasId for BrowserSignRequest { fn id(&self) -> &Uuid { &self.id } diff --git a/crates/wallets/src/wallet_browser/router.rs b/crates/wallets/src/wallet_browser/router.rs index 404fee413be5b..f62a5d3977054 100644 --- a/crates/wallets/src/wallet_browser/router.rs +++ b/crates/wallets/src/wallet_browser/router.rs @@ -17,6 +17,8 @@ pub async fn build_router(state: Arc, port: u16) -> Router { let api = Router::new() .route("/transaction/request", get(handlers::get_next_transaction_request)) .route("/transaction/response", post(handlers::post_transaction_response)) + .route("/signing/request", get(handlers::get_next_signing_request)) + .route("/signing/response", post(handlers::post_signing_response)) .route("/connection", get(handlers::get_connection_info)) .route("/connection", post(handlers::post_connection_update)) .route_layer(middleware::from_fn_with_state(state.clone(), require_session_token)) diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 870c2e9d6ba72..f178c4c26dad5 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -4,7 +4,8 @@ use std::{ time::{Duration, Instant}, }; -use alloy_primitives::TxHash; +use alloy_dyn_abi::TypedData; +use alloy_primitives::{Address, Bytes, TxHash}; use tokio::{ net::TcpListener, sync::{Mutex, oneshot}, @@ -15,7 +16,10 @@ use crate::wallet_browser::{ error::BrowserWalletError, router::build_router, state::BrowserWalletState, - types::{BrowserTransaction, Connection}, + types::{ + BrowserSignRequest, BrowserSignTypedDataRequest, BrowserTransactionRequest, Connection, + SignType, + }, }; /// Browser wallet server. @@ -114,7 +118,7 @@ impl BrowserWalletServer { /// Request a transaction to be signed and sent via the browser wallet. pub async fn request_transaction( &self, - request: BrowserTransaction, + request: BrowserTransactionRequest, ) -> Result { if !self.is_connected() { return Err(BrowserWalletError::NotConnected); @@ -150,4 +154,64 @@ impl BrowserWalletServer { tokio::time::sleep(Duration::from_millis(100)).await; } } + + /// Request a message to be signed via the browser wallet. + pub async fn request_signing( + &self, + request: BrowserSignRequest, + ) -> Result { + if !self.is_connected() { + return Err(BrowserWalletError::NotConnected); + } + + let tx_id = request.id; + + self.state.add_signing_request(request); + + let start = Instant::now(); + + loop { + if let Some(response) = self.state.get_signing_response(&tx_id) { + if let Some(signature) = response.signature { + return Ok(signature); + } else if let Some(error) = response.error { + return Err(BrowserWalletError::Rejected { + operation: "Signing", + reason: error, + }); + } else { + return Err(BrowserWalletError::ServerError( + "Signing response missing both signature and error".to_string(), + )); + } + } + + if start.elapsed() > self.timeout { + self.state.remove_signing_request(&tx_id); + return Err(BrowserWalletError::Timeout { operation: "Signing" }); + } + + tokio::time::sleep(Duration::from_millis(100)).await; + } + } + + /// Request EIP-712 typed data signing via the browser wallet. + pub async fn request_typed_data_signing( + &self, + address: Address, + typed_data: TypedData, + ) -> Result { + let request = BrowserSignTypedDataRequest { id: Uuid::new_v4(), address, typed_data }; + + let sign_request = BrowserSignRequest { + id: request.id, + message: serde_json::to_string(&request.typed_data).map_err(|e| { + BrowserWalletError::ServerError(format!("Failed to serialize typed data: {e}")) + })?, + address: request.address, + sign_type: SignType::SignTypedDataV4, + }; + + self.request_signing(sign_request).await + } } diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs index adbc1d02cef66..159e4790af3f8 100644 --- a/crates/wallets/src/wallet_browser/signer.rs +++ b/crates/wallets/src/wallet_browser/signer.rs @@ -4,17 +4,19 @@ use std::{ }; use alloy_consensus::SignableTransaction; +use alloy_dyn_abi::TypedData; use alloy_network::TxSigner; -use alloy_primitives::{Address, B256, ChainId}; +use alloy_primitives::{Address, B256, ChainId, hex}; use alloy_rpc_types::TransactionRequest; -use alloy_signer::{Result, Signature, Signer}; +use alloy_signer::{Result, Signature, Signer, SignerSync}; +use alloy_sol_types::{Eip712Domain, SolStruct}; use async_trait::async_trait; use tokio::sync::Mutex; use uuid::Uuid; use crate::wallet_browser::{ server::BrowserWalletServer, - types::{BrowserTransaction, Connection}, + types::{BrowserSignRequest, BrowserTransactionRequest, Connection, SignType}, }; #[derive(Clone, Debug)] @@ -78,7 +80,7 @@ impl BrowserSigner { )); } - let request = BrowserTransaction { id: Uuid::new_v4(), request: tx_request }; + let request = BrowserTransactionRequest { id: Uuid::new_v4(), request: tx_request }; let server = self.server.lock().await; let tx_hash = @@ -90,6 +92,24 @@ impl BrowserSigner { } } +impl SignerSync for BrowserSigner { + fn sign_hash_sync(&self, _hash: &B256) -> Result { + Err(alloy_signer::Error::other( + "Browser wallets cannot sign raw hashes. Use sign_message or send_transaction instead.", + )) + } + + fn sign_message_sync(&self, _message: &[u8]) -> Result { + Err(alloy_signer::Error::other( + "Browser signer requires async operations. Use sign_message instead.", + )) + } + + fn chain_id_sync(&self) -> Option { + Some(self.chain_id) + } +} + #[async_trait] impl Signer for BrowserSigner { async fn sign_hash(&self, _hash: &B256) -> Result { @@ -98,6 +118,48 @@ impl Signer for BrowserSigner { )) } + async fn sign_typed_data( + &self, + _payload: &T, + _domain: &Eip712Domain, + ) -> Result + where + Self: Sized, + { + // Not directly supported - use sign_dynamic_typed_data instead + Err(alloy_signer::Error::other( + "Browser wallets cannot sign typed data directly. Use sign_dynamic_typed_data instead.", + )) + } + + async fn sign_message(&self, message: &[u8]) -> Result { + let request = BrowserSignRequest { + id: Uuid::new_v4(), + address: self.address, + message: hex::encode_prefixed(message), + sign_type: SignType::PersonalSign, + }; + + let server = self.server.lock().await; + let signature = + server.request_signing(request).await.map_err(alloy_signer::Error::other)?; + + Signature::try_from(signature.as_ref()) + .map_err(|e| alloy_signer::Error::other(format!("Invalid signature: {e}"))) + } + + async fn sign_dynamic_typed_data(&self, payload: &TypedData) -> Result { + let server = self.server.lock().await; + let signature = server + .request_typed_data_signing(self.address, payload.clone()) + .await + .map_err(alloy_signer::Error::other)?; + + // Parse the signature + Signature::try_from(signature.as_ref()) + .map_err(|e| alloy_signer::Error::other(format!("Invalid signature: {e}"))) + } + fn address(&self) -> Address { self.address } diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index 4bf79a82e8191..a88c79932d330 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -5,7 +5,10 @@ use uuid::Uuid; use crate::wallet_browser::{ queue::RequestQueue, - types::{BrowserTransaction, Connection, TransactionResponse}, + types::{ + BrowserSignRequest, BrowserSignResponse, BrowserTransactionRequest, + BrowserTransactionResponse, Connection, + }, }; #[derive(Debug, Clone)] @@ -13,7 +16,9 @@ pub(crate) struct BrowserWalletState { /// Current information about the wallet connection. connection: Arc>>, /// Request/response queue for transactions. - transactions: Arc>>, + transactions: Arc>>, + /// Request/response queue for signings. + signings: Arc>>, /// Unique session token for the wallet browser instance. /// The CSP on the served page prevents this token from being loaded by other origins. session_token: String, @@ -30,6 +35,7 @@ impl BrowserWalletState { Self { connection: Arc::new(Mutex::new(None)), transactions: Arc::new(Mutex::new(RequestQueue::new())), + signings: Arc::new(Mutex::new(RequestQueue::new())), session_token, development, } @@ -64,7 +70,7 @@ impl BrowserWalletState { } /// Add a transaction request. - pub fn add_transaction_request(&self, request: BrowserTransaction) { + pub fn add_transaction_request(&self, request: BrowserTransactionRequest) { self.transactions.lock().add_request(request); } @@ -74,7 +80,7 @@ impl BrowserWalletState { } /// Read the next transaction request. - pub fn read_next_transaction_request(&self) -> Option { + pub fn read_next_transaction_request(&self) -> Option { self.transactions.lock().read_request().cloned() } @@ -84,7 +90,7 @@ impl BrowserWalletState { } /// Add transaction response. - pub fn add_transaction_response(&self, response: TransactionResponse) { + pub fn add_transaction_response(&self, response: BrowserTransactionResponse) { let id = response.id; let mut transactions = self.transactions.lock(); transactions.add_response(id, response); @@ -92,7 +98,40 @@ impl BrowserWalletState { } /// Get transaction response, removing it from the queue. - pub fn get_transaction_response(&self, id: &Uuid) -> Option { + pub fn get_transaction_response(&self, id: &Uuid) -> Option { self.transactions.lock().get_response(id) } + + /// Add a signing request. + pub fn add_signing_request(&self, request: BrowserSignRequest) { + self.signings.lock().add_request(request); + } + + /// Check if a signing request exists. + pub fn has_signing_request(&self, id: &Uuid) -> bool { + self.signings.lock().has_request(id) + } + + /// Read the next signing request. + pub fn read_next_signing_request(&self) -> Option { + self.signings.lock().read_request().cloned() + } + + /// Remove a signing request. + pub fn remove_signing_request(&self, id: &Uuid) { + self.signings.lock().remove_request(id); + } + + /// Add signing response. + pub fn add_signing_response(&self, response: BrowserSignResponse) { + let id = response.id; + let mut signings = self.signings.lock(); + signings.add_response(id, response); + signings.remove_request(&id); + } + + /// Get signing response, removing it from the queue. + pub fn get_signing_response(&self, id: &Uuid) -> Option { + self.signings.lock().get_response(id) + } } diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index a939ec5080b21..d6ab4a0092315 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -1,4 +1,5 @@ -use alloy_primitives::{Address, ChainId, TxHash}; +use alloy_dyn_abi::TypedData; +use alloy_primitives::{Address, Bytes, ChainId, TxHash}; use alloy_rpc_types::TransactionRequest; use serde::{Deserialize, Serialize}; use uuid::Uuid; @@ -36,7 +37,7 @@ impl BrowserApiResponse { /// Represents a transaction request sent to the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(deny_unknown_fields)] -pub struct BrowserTransaction { +pub struct BrowserTransactionRequest { /// The unique identifier for the transaction. pub id: Uuid, /// The transaction request details. @@ -46,7 +47,7 @@ pub struct BrowserTransaction { /// Represents a transaction response sent from the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(deny_unknown_fields)] -pub(crate) struct TransactionResponse { +pub(crate) struct BrowserTransactionResponse { /// The unique identifier for the transaction, must match the request ID sent earlier. pub id: Uuid, /// The transaction hash if the transaction was successful. @@ -55,6 +56,49 @@ pub(crate) struct TransactionResponse { pub error: Option, } +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub enum SignType { + /// Standard personal sign: `eth_sign` / `personal_sign` + PersonalSign, + /// EIP-712 typed data sign: `eth_signTypedData_v4` + SignTypedDataV4, +} + +/// Represents a signing request sent to the browser wallet. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BrowserSignRequest { + /// The unique identifier for the signing request. + pub id: Uuid, + /// The message to be signed. + pub message: String, + /// The address that should sign the message. + pub address: Address, + #[serde(rename = "type")] + pub sign_type: SignType, +} + +/// Represents a typed data signing request sent to the browser wallet. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BrowserSignTypedDataRequest { + /// The unique identifier for the signing request. + pub id: Uuid, + /// The address that should sign the typed data. + pub address: Address, + /// The typed data to be signed. + pub typed_data: TypedData, +} + +/// Represents a signing response sent from the browser wallet. +#[derive(Debug, Clone, Serialize, Deserialize)] +pub(crate) struct BrowserSignResponse { + /// The unique identifier for the signing request, must match the request ID sent earlier. + pub id: Uuid, + /// The signature if the signing was successful. + pub signature: Option, + /// The error message if the signing failed. + pub error: Option, +} + /// Represents an active connection to a browser wallet. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] pub struct Connection(pub Address, pub ChainId); From 5879b32a8713317b32eb70c374bb27ef00e4542d Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 31 Oct 2025 15:08:40 +0100 Subject: [PATCH 37/42] restructure sign message --- crates/wallets/src/wallet_browser/mod.rs | 30 ++++++++------------- crates/wallets/src/wallet_browser/server.rs | 12 +++++---- crates/wallets/src/wallet_browser/signer.rs | 5 ++-- crates/wallets/src/wallet_browser/types.rs | 16 ++++++++--- 4 files changed, 32 insertions(+), 31 deletions(-) diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index e873b4e05b4d8..f980fa5963bfc 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -24,7 +24,7 @@ mod tests { server::BrowserWalletServer, types::{ BrowserApiResponse, BrowserSignRequest, BrowserSignResponse, BrowserTransactionRequest, - BrowserTransactionResponse, Connection, SignType, + BrowserTransactionResponse, Connection, SignRequest, SignType, }, }; @@ -693,13 +693,10 @@ mod tests { panic!("expected BrowserApiResponse::Ok with a pending sign request"); }; - assert_eq!( - pending_sign.id, sign_request_id1, - "expected the first sign request to be at the front of the queue" - ); - assert_eq!(pending_sign.address, sign_request1.address); - assert_eq!(pending_sign.message, sign_request1.message); + assert_eq!(pending_sign.id, sign_request_id1); assert_eq!(pending_sign.sign_type, sign_request1.sign_type); + assert_eq!(pending_sign.request.address, sign_request1.request.address); + assert_eq!(pending_sign.request.message, sign_request1.request.message); } // Simulate the wallet accepting and signing the first sign request @@ -737,13 +734,10 @@ mod tests { panic!("expected BrowserApiResponse::Ok with a pending sign request"); }; - assert_eq!( - pending_sign.id, sign_request_id2, - "expected the second sign request to be pending after the first one completed" - ); - assert_eq!(pending_sign.address, sign_request2.address); - assert_eq!(pending_sign.message, sign_request2.message); + assert_eq!(pending_sign.id, sign_request_id2,); assert_eq!(pending_sign.sign_type, sign_request2.sign_type); + assert_eq!(pending_sign.request.address, sign_request2.request.address); + assert_eq!(pending_sign.request.message, sign_request2.request.message); } // Simulate the wallet rejecting the second sign request @@ -874,9 +868,8 @@ mod tests { let id = Uuid::new_v4(); let req = BrowserSignRequest { id, - address: ALICE, - message: "Hello, world!".into(), sign_type: SignType::PersonalSign, + request: SignRequest { message: "Hello, world!".into(), address: ALICE }, }; (id, req) } @@ -886,9 +879,8 @@ mod tests { let id = Uuid::new_v4(); let req = BrowserSignRequest { id, - address: BOB, - message: "Different message".into(), sign_type: SignType::SignTypedDataV4, + request: SignRequest { message: "Different message".into(), address: BOB }, }; (id, req) } @@ -976,8 +968,8 @@ mod tests { }; assert_eq!(pending_req.id, sign_request_id); - assert_eq!(pending_req.address, ALICE); - assert_eq!(pending_req.message, "Hello, world!"); assert_eq!(pending_req.sign_type, SignType::PersonalSign); + assert_eq!(pending_req.request.address, ALICE); + assert_eq!(pending_req.request.message, "Hello, world!"); } } diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index f178c4c26dad5..7373b9758b6d7 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -18,7 +18,7 @@ use crate::wallet_browser::{ state::BrowserWalletState, types::{ BrowserSignRequest, BrowserSignTypedDataRequest, BrowserTransactionRequest, Connection, - SignType, + SignRequest, SignType, }, }; @@ -205,11 +205,13 @@ impl BrowserWalletServer { let sign_request = BrowserSignRequest { id: request.id, - message: serde_json::to_string(&request.typed_data).map_err(|e| { - BrowserWalletError::ServerError(format!("Failed to serialize typed data: {e}")) - })?, - address: request.address, sign_type: SignType::SignTypedDataV4, + request: SignRequest { + message: serde_json::to_string(&request.typed_data).map_err(|e| { + BrowserWalletError::ServerError(format!("Failed to serialize typed data: {e}")) + })?, + address: request.address, + }, }; self.request_signing(sign_request).await diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs index 159e4790af3f8..bda2dada4f67d 100644 --- a/crates/wallets/src/wallet_browser/signer.rs +++ b/crates/wallets/src/wallet_browser/signer.rs @@ -16,7 +16,7 @@ use uuid::Uuid; use crate::wallet_browser::{ server::BrowserWalletServer, - types::{BrowserSignRequest, BrowserTransactionRequest, Connection, SignType}, + types::{BrowserSignRequest, BrowserTransactionRequest, Connection, SignRequest, SignType}, }; #[derive(Clone, Debug)] @@ -135,9 +135,8 @@ impl Signer for BrowserSigner { async fn sign_message(&self, message: &[u8]) -> Result { let request = BrowserSignRequest { id: Uuid::new_v4(), - address: self.address, - message: hex::encode_prefixed(message), sign_type: SignType::PersonalSign, + request: SignRequest { message: hex::encode_prefixed(message), address: self.address }, }; let server = self.server.lock().await; diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index d6ab4a0092315..91f09561ae52b 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -64,17 +64,25 @@ pub enum SignType { SignTypedDataV4, } +#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +pub struct SignRequest { + /// The message to be signed. + pub message: String, + /// The address that should sign the message. + pub address: Address, +} + /// Represents a signing request sent to the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] pub struct BrowserSignRequest { /// The unique identifier for the signing request. pub id: Uuid, - /// The message to be signed. - pub message: String, - /// The address that should sign the message. - pub address: Address, + /// The type of signing operation. #[serde(rename = "type")] pub sign_type: SignType, + /// The sign request details. + pub request: SignRequest, } /// Represents a typed data signing request sent to the browser wallet. From 5f2e9f80722eb2062b9d2e38da2dbc45c12e122c Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 31 Oct 2025 15:22:02 +0100 Subject: [PATCH 38/42] serialize camelcase --- crates/wallets/src/wallet_browser/types.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index 91f09561ae52b..52e6238bbbc0c 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -57,6 +57,7 @@ pub(crate) struct BrowserTransactionResponse { } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] pub enum SignType { /// Standard personal sign: `eth_sign` / `personal_sign` PersonalSign, @@ -65,6 +66,7 @@ pub enum SignType { } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] pub struct SignRequest { /// The message to be signed. pub message: String, @@ -74,12 +76,11 @@ pub struct SignRequest { /// Represents a signing request sent to the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(deny_unknown_fields)] +#[serde(deny_unknown_fields, rename_all = "camelCase")] pub struct BrowserSignRequest { /// The unique identifier for the signing request. pub id: Uuid, /// The type of signing operation. - #[serde(rename = "type")] pub sign_type: SignType, /// The sign request details. pub request: SignRequest, @@ -87,6 +88,7 @@ pub struct BrowserSignRequest { /// Represents a typed data signing request sent to the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(deny_unknown_fields, rename_all = "camelCase")] pub struct BrowserSignTypedDataRequest { /// The unique identifier for the signing request. pub id: Uuid, @@ -98,6 +100,7 @@ pub struct BrowserSignTypedDataRequest { /// Represents a signing response sent from the browser wallet. #[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(deny_unknown_fields)] pub(crate) struct BrowserSignResponse { /// The unique identifier for the signing request, must match the request ID sent earlier. pub id: Uuid, From 163368d63a53a8512cdf76fc55377142ba73c41a Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Fri, 31 Oct 2025 15:59:52 +0100 Subject: [PATCH 39/42] bump version --- .../src/wallet_browser/app/assets/main.js | 76 +++++++++---------- .../src/wallet_browser/app/assets/styles.css | 2 +- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/crates/wallets/src/wallet_browser/app/assets/main.js b/crates/wallets/src/wallet_browser/app/assets/main.js index 330bf6da0d010..88265ee32ed48 100644 --- a/crates/wallets/src/wallet_browser/app/assets/main.js +++ b/crates/wallets/src/wallet_browser/app/assets/main.js @@ -1,12 +1,12 @@ -var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(e&&(t=e(e=0)),t),s=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),c=e=>{let n={};for(var r in e)t(n,r,{get:e[r],enumerable:!0});return n},l=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},u=(n,r,a)=>(a=n==null?{}:e(i(n)),l(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),d=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},ee=Object.prototype.hasOwnProperty;function te(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ne(e,t){return te(e.type,t,e.props)}function re(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ie(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ae=/\/+/g;function oe(e,t){return typeof e==`object`&&e&&e.key!=null?ie(``+e.key):t.toString(36)}function se(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ce(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ce(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+oe(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(ae,`$&/`)+`/`),ce(o,r,i,``,function(e){return e})):o!=null&&(re(o)&&(o=ne(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ae,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=d()})),p=s((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,re());else{var t=n(l);t!==null&&oe(x,t.startTime-e)}}var S=!1,C=-1,w=5,ee=-1;function te(){return g?!0:!(e.unstable_now()-eet&&te());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&oe(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?re():S=!1}}}var re;if(typeof y==`function`)re=function(){y(ne)};else if(typeof MessageChannel<`u`){var ie=new MessageChannel,ae=ie.port2;ie.port1.onmessage=ne,re=function(){ae.postMessage(null)}}else re=function(){_(ne,0)};function oe(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,oe(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,re()))),r},e.unstable_shouldYield=te,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),m=s(((e,t)=>{t.exports=p()})),h=s((e=>{var t=f();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=s((e=>{var t=m(),n=f(),r=g();function i(e){var t=`https://react.dev/errors/`+e;if(1me||(e.current=pe[me],pe[me]=null,me--)}function _e(e,t){me++,pe[me]=e.current,e.current=t}var ve=he(null),ye=he(null),be=he(null),xe=he(null);function Se(e,t){switch(_e(be,t),_e(ye,e),_e(ve,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?xf(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=xf(t),e=Sf(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}ge(ve),_e(ve,e)}function Ce(){ge(ve),ge(ye),ge(be)}function we(e){e.memoizedState!==null&&_e(xe,e);var t=ve.current,n=Sf(t,e.type);t!==n&&(_e(ye,e),_e(ve,n))}function Te(e){ye.current===e&&(ge(ve),ge(ye)),xe.current===e&&(ge(xe),Ap._currentValue=fe)}var Ee,De;function Oe(e){if(Ee===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ee=t&&t[1]||``,De=-1()=>(e&&(t=e(e=0)),t),s=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),c=e=>{let n={};for(var r in e)t(n,r,{get:e[r],enumerable:!0});return n},l=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},u=(n,r,a)=>(a=n==null?{}:e(i(n)),l(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),d=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},ee=Object.prototype.hasOwnProperty;function te(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ne(e,t){return te(e.type,t,e.props)}function re(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ie(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var ae=/\/+/g;function oe(e,t){return typeof e==`object`&&e&&e.key!=null?ie(``+e.key):t.toString(36)}function se(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function ce(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,ce(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+oe(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(ae,`$&/`)+`/`),ce(o,r,i,``,function(e){return e})):o!=null&&(re(o)&&(o=ne(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(ae,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=d()})),p=s((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,re());else{var t=n(l);t!==null&&oe(x,t.startTime-e)}}var S=!1,C=-1,w=5,ee=-1;function te(){return g?!0:!(e.unstable_now()-eet&&te());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&oe(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?re():S=!1}}}var re;if(typeof y==`function`)re=function(){y(ne)};else if(typeof MessageChannel<`u`){var ie=new MessageChannel,ae=ie.port2;ie.port1.onmessage=ne,re=function(){ae.postMessage(null)}}else re=function(){_(ne,0)};function oe(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,oe(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,re()))),r},e.unstable_shouldYield=te,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),m=s(((e,t)=>{t.exports=p()})),h=s((e=>{var t=f();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=s((e=>{var t=m(),n=f(),r=g();function i(e){var t=`https://react.dev/errors/`+e;if(1me||(e.current=pe[me],pe[me]=null,me--)}function _e(e,t){me++,pe[me]=e.current,e.current=t}var ve=he(null),ye=he(null),be=he(null),xe=he(null);function Se(e,t){switch(_e(be,t),_e(ye,e),_e(ve,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Sf(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Sf(t),e=Cf(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}ge(ve),_e(ve,e)}function Ce(){ge(ve),ge(ye),ge(be)}function we(e){e.memoizedState!==null&&_e(xe,e);var t=ve.current,n=Cf(t,e.type);t!==n&&(_e(ye,e),_e(ve,n))}function Te(e){ye.current===e&&(ge(ve),ge(ye)),xe.current===e&&(ge(xe),jp._currentValue=fe)}var Ee,De;function Oe(e){if(Ee===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ee=t&&t[1]||``,De=-1)`:-1i||c[r]!==l[i]){var u=` `+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{ke=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Oe(n):``}function je(e,t){switch(e.tag){case 26:case 27:case 5:return Oe(e.type);case 16:return Oe(`Lazy`);case 13:return e.child!==t&&t!==null?Oe(`Suspense Fallback`):Oe(`Suspense`);case 19:return Oe(`SuspenseList`);case 0:case 15:return Ae(e.type,!1);case 11:return Ae(e.type.render,!1);case 1:return Ae(e.type,!0);case 31:return Oe(`Activity`);default:return``}}function Me(e){try{var t=``,n=null;do t+=je(e,n),n=e,e=e.return;while(e);return t}catch(e){return` Error generating stack: `+e.message+` -`+e.stack}}var Ne=Object.prototype.hasOwnProperty,Pe=t.unstable_scheduleCallback,Fe=t.unstable_cancelCallback,Ie=t.unstable_shouldYield,Le=t.unstable_requestPaint,Re=t.unstable_now,ze=t.unstable_getCurrentPriorityLevel,Be=t.unstable_ImmediatePriority,Ve=t.unstable_UserBlockingPriority,He=t.unstable_NormalPriority,Ue=t.unstable_LowPriority,We=t.unstable_IdlePriority,Ge=t.log,Ke=t.unstable_setDisableYieldValue,qe=null,Je=null;function Ye(e){if(typeof Ge==`function`&&Ke(e),Je&&typeof Je.setStrictMode==`function`)try{Je.setStrictMode(qe,e)}catch{}}var Xe=Math.clz32?Math.clz32:$e,Ze=Math.log,Qe=Math.LN2;function $e(e){return e>>>=0,e===0?32:31-(Ze(e)/Qe|0)|0}var et=256,tt=262144,nt=4194304;function rt(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function it(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=rt(n))):i=rt(o):i=rt(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=rt(n))):i=rt(o)):i=rt(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function at(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ot(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function st(){var e=nt;return nt<<=1,!(nt&62914560)&&(nt=4194304),e}function ct(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function lt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ut(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),bn=!1;if(yn)try{var xn={};Object.defineProperty(xn,`passive`,{get:function(){bn=!0}}),window.addEventListener(`test`,xn,xn),window.removeEventListener(`test`,xn,xn)}catch{bn=!1}var Sn=null,Cn=null,wn=null;function Tn(){if(wn)return wn;var e,t=Cn,n=t.length,r,i=`value`in Sn?Sn.value:Sn.textContent,a=i.length;for(e=0;e=fr),hr=` `,gr=!1;function _r(e,t){switch(e){case`keyup`:return ur.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function vr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var yr=!1;function br(e,t){switch(e){case`compositionend`:return vr(t);case`keypress`:return t.which===32?(gr=!0,hr):null;case`textInput`:return e=t.data,e===hr&&gr?null:e;default:return null}}function xr(e,t){if(yr)return e===`compositionend`||!dr&&_r(e,t)?(e=Tn(),wn=Cn=Sn=null,yr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Ur(n)}}function Gr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Gr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Kr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Kt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Kt(e.document)}return t}function qr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Jr=yn&&`documentMode`in document&&11>=document.documentMode,Yr=null,Xr=null,Zr=null,Qr=!1;function $r(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Qr||Yr==null||Yr!==Kt(r)||(r=Yr,`selectionStart`in r&&qr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Zr&&Hr(Zr,r)||(Zr=r,r=rf(Xr,`onSelect`),0>=o,i-=o,Gi=1<<32-Xe(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),j&&qi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),j&&qi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return j&&qi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),j&&qi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===re&&qa(l)===r.type){n(e,r.sibling),c=a(r,o.props),eo(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=Mi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=ji(o.type,o.key,o.props,null,e.mode,c),eo(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=Fi(o,e.mode,c),c.return=e,e=c}return s(e);case re:return o=qa(o),b(e,r,o,c)}if(ue(o))return h(e,r,o,c);if(se(o)){if(l=se(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,$a(o),c);if(o.$$typeof===C)return b(e,r,xa(e,o),c);to(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=Ni(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Qa=0;var i=b(e,t,n,r);return Za=null,i}catch(t){if(t===Va||t===Ua)throw t;var a=Di(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var ro=no(!0),io=no(!1),ao=!1;function oo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function co(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function lo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,du&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=wi(e),Ci(e,null,n),t}return bi(e,r,t,n),wi(e)}function uo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ft(e,n)}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var po=!1;function mo(){if(po){var e=Ma;if(e!==null)throw e}}function ho(e,t,n,r){po=!1;var i=e.updateQueue;ao=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,m=f!==s.lane;if(m?(P&f)===f:(r&f)===f){f!==0&&f===ja&&(po=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,f);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,f=typeof h==`function`?h.call(_,d,f):h,f==null)break a;d=p({},d,f);break a;case 2:ao=!0}}f=s.callback,f!==null&&(e.flags|=64,m&&(e.flags|=8192),m=i.callbacks,m===null?i.callbacks=[f]:m.push(f))}else m={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=m,c=d):u=u.next=m,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;m=s,s=m.next,m.next=null,i.lastBaseUpdate=m,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),bu|=o,e.lanes=o,e.memoizedState=d}}function go(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function _o(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=T.T,s={};T.T=s,ic(e,!1,t,n);try{var c=i(),l=T.S;if(l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`){var u=Fa(c,r);rc(e,t,u,Hu(e))}else rc(e,t,r,Hu(e))}catch(n){rc(e,t,{then:function(){},status:`rejected`,reason:n},Hu())}finally{de.p=a,o!==null&&s.types!==null&&(o.types=s.types),T.T=o}}function qs(){}function Js(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Ys(e).queue;Ks(e,a,t,fe,n===null?qs:function(){return Xs(e),n(r)})}function Ys(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:fe,baseState:fe,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rs,lastRenderedState:fe},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:rs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Xs(e){var t=Ys(e);t.next===null&&(t=e.alternate.memoizedState),rc(e,t.next.queue,{},Hu())}function Zs(){return ba(Ap)}function Qs(){return Qo().memoizedState}function $s(){return Qo().memoizedState}function ec(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Hu();e=co(n);var r=lo(t,e,n);r!==null&&(Wu(r,t,n),uo(r,t,n)),t={cache:Da()},e.payload=t;return}t=t.return}}function tc(e,t,n){var r=Hu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},ac(e)?oc(t,n):(n=xi(e,t,n,r),n!==null&&(Wu(n,e,r),sc(n,t,r)))}function nc(e,t,n){var r=Hu();rc(e,t,n,r)}function rc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(ac(e))oc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Vr(s,o))return bi(e,t,i,0),fu===null&&yi(),!1}catch{}if(n=xi(e,t,i,r),n!==null)return Wu(n,e,r),sc(n,t,r),!0}return!1}function ic(e,t,n,r){if(r={lane:2,revertLane:Vd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},ac(e)){if(t)throw Error(i(479))}else t=xi(e,n,r,2),t!==null&&Wu(t,e,2)}function ac(e){var t=e.alternate;return e===M||t!==null&&t===M}function oc(e,t){Io=Fo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function sc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ft(e,n)}}var cc={readContext:ba,use:ts,useCallback:Ho,useContext:Ho,useEffect:Ho,useImperativeHandle:Ho,useLayoutEffect:Ho,useInsertionEffect:Ho,useMemo:Ho,useReducer:Ho,useRef:Ho,useState:Ho,useDebugValue:Ho,useDeferredValue:Ho,useTransition:Ho,useSyncExternalStore:Ho,useId:Ho,useHostTransitionStatus:Ho,useFormState:Ho,useActionState:Ho,useOptimistic:Ho,useMemoCache:Ho,useCacheRefresh:Ho};cc.useEffectEvent=Ho;var lc={readContext:ba,use:ts,useCallback:function(e,t){return Zo().memoizedState=[e,t===void 0?null:t],e},useContext:ba,useEffect:Ns,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),js(4194308,4,zs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return js(4194308,4,e,t)},useInsertionEffect:function(e,t){js(4,2,e,t)},useMemo:function(e,t){var n=Zo();t=t===void 0?null:t;var r=e();if(Lo){Ye(!0);try{e()}finally{Ye(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Zo();if(n!==void 0){var i=n(t);if(Lo){Ye(!0);try{n(t)}finally{Ye(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=tc.bind(null,M,e),[r.memoizedState,e]},useRef:function(e){var t=Zo();return e={current:e},t.memoizedState=e},useState:function(e){e=hs(e);var t=e.queue,n=nc.bind(null,M,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Vs,useDeferredValue:function(e,t){var n=Zo();return Ws(n,e,t)},useTransition:function(){var e=hs(!1);return e=Ks.bind(null,M,e.queue,!0,!1),Zo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=M,a=Zo();if(j){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),fu===null)throw Error(i(349));P&127||us(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Ns(fs.bind(null,r,o,e),[e]),r.flags|=2048,ks(9,{destroy:void 0},ds.bind(null,r,o,n,t),null),n},useId:function(){var e=Zo(),t=fu.identifierPrefix;if(j){var n=Ki,r=Gi;n=(r&~(1<<32-Xe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Ro++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[yt]=t,o[bt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(mf(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&rl(t)}}return cl(t),il(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&rl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=be.current,oa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Qi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[yt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||df(e.nodeValue,n)),e||ra(t,!0)}else e=bf(e).createTextNode(r),e[yt]=t,t.stateNode=e}return cl(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=oa(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[yt]=t}else sa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;cl(t),e=!1}else n=ca(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ko(t),t):(ko(t),null);if(t.flags&128)throw Error(i(558))}return cl(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=oa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[yt]=t}else sa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;cl(t),a=!1}else a=ca(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(ko(t),t):(ko(t),null)}return ko(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),ol(t,t.updateQueue),cl(t),null);case 4:return Ce(),e===null&&$d(t.stateNode.containerInfo),cl(t),null;case 10:return ma(t.type),cl(t),null;case 19:if(ge(Ao),r=t.memoizedState,r===null)return cl(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)sl(r,!1);else{if(yu!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=jo(e),o!==null){for(t.flags|=128,sl(r,!1),e=o.updateQueue,t.updateQueue=e,ol(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ai(n,e),n=n.sibling;return _e(Ao,Ao.current&1|2),j&&qi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Re()>Au&&(t.flags|=128,a=!0,sl(r,!1),t.lanes=4194304)}else{if(!a)if(e=jo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,ol(t,e),sl(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!j)return cl(t),null}else 2*Re()-r.renderingStartTime>Au&&n!==536870912&&(t.flags|=128,a=!0,sl(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(cl(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Re(),e.sibling=null,n=Ao.current,_e(Ao,a?n&1|2:n&1),j&&qi(t,r.treeForkCount),e);case 22:case 23:return ko(t),So(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(cl(t),t.subtreeFlags&6&&(t.flags|=8192)):cl(t),n=t.updateQueue,n!==null&&ol(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&ge(La),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ma(Ea),cl(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function ul(e,t){switch(Xi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ma(Ea),Ce(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Te(t),null;case 31:if(t.memoizedState!==null){if(ko(t),t.alternate===null)throw Error(i(340));sa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ko(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));sa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ge(Ao),null;case 4:return Ce(),null;case 10:return ma(t.type),null;case 22:case 23:return ko(t),So(),e!==null&&ge(La),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ma(Ea),null;case 25:return null;default:return null}}function dl(e,t){switch(Xi(t),t.tag){case 3:ma(Ea),Ce();break;case 26:case 27:case 5:Te(t);break;case 4:Ce();break;case 31:t.memoizedState!==null&&ko(t);break;case 13:ko(t);break;case 19:ge(Ao);break;case 10:ma(t.type);break;case 22:case 23:ko(t),So(),e!==null&&ge(La);break;case 24:ma(Ea)}}function fl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){bd(t,t.return,e)}}function pl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){bd(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){bd(t,t.return,e)}}function ml(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{_o(t,n)}catch(t){bd(e,e.return,t)}}}function hl(e,t,n){n.props=gc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){bd(e,t,n)}}function gl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){bd(e,t,n)}}function _l(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){bd(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){bd(e,t,n)}else n.current=null}function vl(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){bd(e,e.return,t)}}function yl(e,t,n){try{var r=e.stateNode;hf(r,e.type,n,t),r[bt]=t}catch(t){bd(e,e.return,t)}}function bl(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&jf(e.type)||e.tag===4}function xl(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||bl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&jf(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Sl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=un));else if(r!==4&&(r===27&&jf(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Sl(e,t,n),e=e.sibling;e!==null;)Sl(e,t,n),e=e.sibling}function Cl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&jf(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Cl(e,t,n),e=e.sibling;e!==null;)Cl(e,t,n),e=e.sibling}function wl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);mf(t,r,n),t[yt]=e,t[bt]=n}catch(t){bd(e,e.return,t)}}var Tl=!1,El=!1,Dl=!1,Ol=typeof WeakSet==`function`?WeakSet:Set,kl=null;function Al(e,t){if(e=e.containerInfo,vf=zp,e=Kr(e),qr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(yf={focusedElem:e,selectionRange:n},zp=!1,kl=t;kl!==null;)if(t=kl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,kl=e;else for(;kl!==null;){switch(t=kl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),mf(o,r,n),o[yt]=e,jt(o),r=o;break a;case`link`:var s=yp(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Wr(s,h),v=Wr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,T.T=null,n=Ru,Ru=null;var o=Pu,s=Iu;if(Nu=0,Fu=Pu=null,Iu=0,du&6)throw Error(i(331));var c=du;if(du|=4,ou(o.current),Ql(o,o.current,s,n),du=c,Pd(0,!1),Je&&typeof Je.onPostCommitFiberRoot==`function`)try{Je.onPostCommitFiberRoot(qe,o)}catch{}return!0}finally{de.p=a,T.T=r,gd(e,t)}}function yd(e,t,n){t=Li(n,t),t=Sc(e.stateNode,t,2),e=lo(e,t,2),e!==null&&(lt(e,2),Nd(e))}function bd(e,t,n){if(e.tag===3)yd(e,e,n);else for(;t!==null;){if(t.tag===3){yd(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(Mu===null||!Mu.has(r))){e=Li(n,e),n=Cc(2),r=lo(t,n,2),r!==null&&(wc(n,r,t,e),lt(r,2),Nd(r));break}}t=t.return}}function xd(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new uu;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(_u=!0,i.add(n),e=Sd.bind(null,e,t,n),t.then(e,e))}function Sd(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,fu===e&&(P&n)===n&&(yu===4||yu===3&&(P&62914560)===P&&300>Re()-Ou?!(du&2)&&Zu(e,0):Su|=n,wu===P&&(wu=0)),Nd(e)}function Cd(e,t){t===0&&(t=st()),e=Si(e,t),e!==null&&(lt(e,t),Nd(e))}function wd(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Cd(e,n)}function Td(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Cd(e,n)}function Ed(e,t){return Pe(e,t)}var Dd=null,Od=null,kd=!1,Ad=!1,jd=!1,Md=0;function Nd(e){e!==Od&&e.next===null&&(Od===null?Dd=Od=e:Od=Od.next=e),Ad=!0,kd||(kd=!0,Bd())}function Pd(e,t){if(!jd&&Ad){jd=!0;do for(var n=!1,r=Dd;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Xe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,zd(r,a))}else a=P,a=it(r,r===fu?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||at(r,a)||(n=!0,zd(r,a));r=r.next}while(n);jd=!1}}function Fd(){Id()}function Id(){Ad=kd=!1;var e=0;Md!==0&&Tf()&&(e=Md);for(var t=Re(),n=null,r=Dd;r!==null;){var i=r.next,a=Ld(r,t);a===0?(r.next=null,n===null?Dd=i:n.next=i,i===null&&(Od=n)):(n=r,(e!==0||a&3)&&(Ad=!0)),r=i}Nu!==0&&Nu!==5||Pd(e,!1),Md!==0&&(Md=0)}function Ld(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&gf(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function $f(e,t,n){var r=Qf;if(r&&typeof t==`string`&&t){var i=Jt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),qf.has(i)||(qf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),mf(t,`link`,e),jt(t),r.head.appendChild(t)))}}function ep(e){Yf.D(e),$f(`dns-prefetch`,e,null)}function tp(e,t){Yf.C(e,t),$f(`preconnect`,e,t)}function np(e,t,n){Yf.L(e,t,n);var r=Qf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Jt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Jt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Jt(n.imageSizes)+`"]`)):i+=`[href="`+Jt(e)+`"]`;var a=i;switch(t){case`style`:a=cp(e);break;case`script`:a=fp(e)}Kf.has(a)||(e=p({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),Kf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(lp(a))||t===`script`&&r.querySelector(pp(a))||(t=r.createElement(`link`),mf(t,`link`,e),jt(t),r.head.appendChild(t)))}}function rp(e,t){Yf.m(e,t);var n=Qf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Jt(r)+`"][href="`+Jt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=fp(e)}if(!Kf.has(a)&&(e=p({rel:`modulepreload`,href:e},t),Kf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(pp(a)))return}r=n.createElement(`link`),mf(r,`link`,e),jt(r),n.head.appendChild(r)}}}function ip(e,t,n){Yf.S(e,t,n);var r=Qf;if(r&&e){var i=At(r).hoistableStyles,a=cp(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(lp(a)))s.loading=5;else{e=p({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=Kf.get(a))&&gp(e,n);var c=o=r.createElement(`link`);jt(c),mf(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,hp(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function ap(e,t){Yf.X(e,t);var n=Qf;if(n&&e){var r=At(n).hoistableScripts,i=fp(e),a=r.get(i);a||(a=n.querySelector(pp(i)),a||(e=p({src:e,async:!0},t),(t=Kf.get(i))&&_p(e,t),a=n.createElement(`script`),jt(a),mf(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function op(e,t){Yf.M(e,t);var n=Qf;if(n&&e){var r=At(n).hoistableScripts,i=fp(e),a=r.get(i);a||(a=n.querySelector(pp(i)),a||(e=p({src:e,async:!0,type:`module`},t),(t=Kf.get(i))&&_p(e,t),a=n.createElement(`script`),jt(a),mf(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function sp(e,t,n,r){var a=(a=be.current)?Jf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=cp(n.href),n=At(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=cp(n.href);var o=At(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(lp(e)))&&!o._p&&(s.instance=o,s.state.loading=5),Kf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Kf.set(e,n),o||dp(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=fp(n),n=At(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function cp(e){return`href="`+Jt(e)+`"`}function lp(e){return`link[rel="stylesheet"][`+e+`]`}function up(e){return p({},e,{"data-precedence":e.precedence,precedence:null})}function dp(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),mf(t,`link`,n),jt(t),e.head.appendChild(t))}function fp(e){return`[src="`+Jt(e)+`"]`}function pp(e){return`script[async]`+e}function mp(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Jt(n.href)+`"]`);if(r)return t.instance=r,jt(r),r;var a=p({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),jt(r),mf(r,`style`,a),hp(r,n.precedence,e),t.instance=r;case`stylesheet`:a=cp(n.href);var o=e.querySelector(lp(a));if(o)return t.state.loading|=4,t.instance=o,jt(o),o;r=up(n),(a=Kf.get(a))&&gp(r,a),o=(e.ownerDocument||e).createElement(`link`),jt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),mf(o,`link`,r),t.state.loading|=4,hp(o,n.precedence,e),t.instance=o;case`script`:return o=fp(n.src),(a=e.querySelector(pp(o)))?(t.instance=a,jt(a),a):(r=n,(a=Kf.get(o))&&(r=p({},n),_p(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),jt(a),mf(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,hp(r,n.precedence,e));return t.instance}function hp(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function xp(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Sp(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Cp(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=cp(r.href),a=t.querySelector(lp(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Ep.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,jt(a);return}a=t.ownerDocument||t,r=up(r),(i=Kf.get(i))&&gp(r,i),a=a.createElement(`link`),jt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),mf(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Ep.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var wp=0;function Tp(e,t){return e.stylesheets&&e.count===0&&Op(e,e.stylesheets),0wp?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Ep(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Op(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Dp=null;function Op(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Dp=new Map,t.forEach(kp,e),Dp=null,Ep.call(e))}function kp(e,t){if(!(t.state.loading&4)){var n=Dp.get(e);if(n)var r=n.get(null);else{n=new Map,Dp.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=_()}))()),y=u(f()),b,x=o((()=>{b=`1.1.0`})),S,C=o((()=>{x(),S=class e extends Error{constructor(t,n={}){let r=n.cause instanceof e?n.cause.details:n.cause?.message?n.cause.message:n.details,i=n.cause instanceof e&&n.cause.docsPath||n.docsPath,a=[t||`An error occurred.`,``,...n.metaMessages?[...n.metaMessages,``]:[],...i?[`Docs: https://abitype.dev${i}`]:[],...r?[`Details: ${r}`]:[],`Version: abitype@${b}`].join(` +`+e.stack}}var Ne=Object.prototype.hasOwnProperty,Pe=t.unstable_scheduleCallback,Fe=t.unstable_cancelCallback,Ie=t.unstable_shouldYield,Le=t.unstable_requestPaint,Re=t.unstable_now,ze=t.unstable_getCurrentPriorityLevel,Be=t.unstable_ImmediatePriority,Ve=t.unstable_UserBlockingPriority,He=t.unstable_NormalPriority,Ue=t.unstable_LowPriority,We=t.unstable_IdlePriority,Ge=t.log,Ke=t.unstable_setDisableYieldValue,qe=null,Je=null;function Ye(e){if(typeof Ge==`function`&&Ke(e),Je&&typeof Je.setStrictMode==`function`)try{Je.setStrictMode(qe,e)}catch{}}var Xe=Math.clz32?Math.clz32:$e,Ze=Math.log,Qe=Math.LN2;function $e(e){return e>>>=0,e===0?32:31-(Ze(e)/Qe|0)|0}var et=256,tt=262144,nt=4194304;function rt(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function it(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=rt(n))):i=rt(o):i=rt(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=rt(n))):i=rt(o)):i=rt(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function at(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ot(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function st(){var e=nt;return nt<<=1,!(nt&62914560)&&(nt=4194304),e}function ct(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function lt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ut(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),bn=!1;if(yn)try{var xn={};Object.defineProperty(xn,`passive`,{get:function(){bn=!0}}),window.addEventListener(`test`,xn,xn),window.removeEventListener(`test`,xn,xn)}catch{bn=!1}var Sn=null,Cn=null,wn=null;function Tn(){if(wn)return wn;var e,t=Cn,n=t.length,r,i=`value`in Sn?Sn.value:Sn.textContent,a=i.length;for(e=0;e=fr),hr=` `,gr=!1;function _r(e,t){switch(e){case`keyup`:return ur.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function vr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var yr=!1;function br(e,t){switch(e){case`compositionend`:return vr(t);case`keypress`:return t.which===32?(gr=!0,hr):null;case`textInput`:return e=t.data,e===hr&&gr?null:e;default:return null}}function xr(e,t){if(yr)return e===`compositionend`||!dr&&_r(e,t)?(e=Tn(),wn=Cn=Sn=null,yr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Ur(n)}}function Gr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Gr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Kr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Kt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Kt(e.document)}return t}function qr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Jr=yn&&`documentMode`in document&&11>=document.documentMode,Yr=null,Xr=null,Zr=null,Qr=!1;function $r(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Qr||Yr==null||Yr!==Kt(r)||(r=Yr,`selectionStart`in r&&qr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Zr&&Hr(Zr,r)||(Zr=r,r=af(Xr,`onSelect`),0>=o,i-=o,Gi=1<<32-Xe(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),ea&&qi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),ea&&qi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return ea&&qi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),ea&&qi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===re&&Ja(l)===r.type){n(e,r.sibling),c=a(r,o.props),to(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=Mi(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=ji(o.type,o.key,o.props,null,e.mode,c),to(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=Fi(o,e.mode,c),c.return=e,e=c}return s(e);case re:return o=Ja(o),b(e,r,o,c)}if(ue(o))return h(e,r,o,c);if(se(o)){if(l=se(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,eo(o),c);if(o.$$typeof===C)return b(e,r,Sa(e,o),c);no(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=Ni(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{$a=0;var i=b(e,t,n,r);return Qa=null,i}catch(t){if(t===Ha||t===Wa)throw t;var a=Di(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var io=ro(!0),ao=ro(!1),oo=!1;function so(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function co(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function lo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function uo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,fu&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=wi(e),Ci(e,null,n),t}return bi(e,r,t,n),wi(e)}function fo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ft(e,n)}}function po(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var mo=!1;function ho(){if(mo){var e=Na;if(e!==null)throw e}}function go(e,t,n,r){mo=!1;var i=e.updateQueue;oo=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,m=f!==s.lane;if(m?(N&f)===f:(r&f)===f){f!==0&&f===Ma&&(mo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,f);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,f=typeof h==`function`?h.call(_,d,f):h,f==null)break a;d=p({},d,f);break a;case 2:oo=!0}}f=s.callback,f!==null&&(e.flags|=64,m&&(e.flags|=8192),m=i.callbacks,m===null?i.callbacks=[f]:m.push(f))}else m={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=m,c=d):u=u.next=m,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;m=s,s=m.next,m.next=null,i.lastBaseUpdate=m,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),xu|=o,e.lanes=o,e.memoizedState=d}}function _o(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function vo(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=T.T,s={};T.T=s,ac(e,!1,t,n);try{var c=i(),l=T.S;if(l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`){var u=Ia(c,r);ic(e,t,u,Uu(e))}else ic(e,t,r,Uu(e))}catch(n){ic(e,t,{then:function(){},status:`rejected`,reason:n},Uu())}finally{de.p=a,o!==null&&s.types!==null&&(o.types=s.types),T.T=o}}function Js(){}function Ys(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Xs(e).queue;qs(e,a,t,fe,n===null?Js:function(){return Zs(e),n(r)})}function Xs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:fe,baseState:fe,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:os,lastRenderedState:fe},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:os,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Zs(e){var t=Xs(e);t.next===null&&(t=e.alternate.memoizedState),ic(e,t.next.queue,{},Uu())}function Qs(){return xa(jp)}function $s(){return $o().memoizedState}function ec(){return $o().memoizedState}function tc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Uu();e=lo(n);var r=uo(t,e,n);r!==null&&(Gu(r,t,n),fo(r,t,n)),t={cache:Oa()},e.payload=t;return}t=t.return}}function nc(e,t,n){var r=Uu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},oc(e)?sc(t,n):(n=xi(e,t,n,r),n!==null&&(Gu(n,e,r),cc(n,t,r)))}function rc(e,t,n){var r=Uu();ic(e,t,n,r)}function ic(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(oc(e))sc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Vr(s,o))return bi(e,t,i,0),pu===null&&yi(),!1}catch{}if(n=xi(e,t,i,r),n!==null)return Gu(n,e,r),cc(n,t,r),!0}return!1}function ac(e,t,n,r){if(r={lane:2,revertLane:Hd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},oc(e)){if(t)throw Error(i(479))}else t=xi(e,n,r,2),t!==null&&Gu(t,e,2)}function oc(e){var t=e.alternate;return e===j||t!==null&&t===j}function sc(e,t){Lo=Io=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function cc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ft(e,n)}}var lc={readContext:xa,use:ns,useCallback:Uo,useContext:Uo,useEffect:Uo,useImperativeHandle:Uo,useLayoutEffect:Uo,useInsertionEffect:Uo,useMemo:Uo,useReducer:Uo,useRef:Uo,useState:Uo,useDebugValue:Uo,useDeferredValue:Uo,useTransition:Uo,useSyncExternalStore:Uo,useId:Uo,useHostTransitionStatus:Uo,useFormState:Uo,useActionState:Uo,useOptimistic:Uo,useMemoCache:Uo,useCacheRefresh:Uo};lc.useEffectEvent=Uo;var uc={readContext:xa,use:ns,useCallback:function(e,t){return Qo().memoizedState=[e,t===void 0?null:t],e},useContext:xa,useEffect:Ps,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Ms(4194308,4,Bs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ms(4194308,4,e,t)},useInsertionEffect:function(e,t){Ms(4,2,e,t)},useMemo:function(e,t){var n=Qo();t=t===void 0?null:t;var r=e();if(Ro){Ye(!0);try{e()}finally{Ye(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Qo();if(n!==void 0){var i=n(t);if(Ro){Ye(!0);try{n(t)}finally{Ye(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=nc.bind(null,j,e),[r.memoizedState,e]},useRef:function(e){var t=Qo();return e={current:e},t.memoizedState=e},useState:function(e){e=gs(e);var t=e.queue,n=rc.bind(null,j,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Hs,useDeferredValue:function(e,t){var n=Qo();return Gs(n,e,t)},useTransition:function(){var e=gs(!1);return e=qs.bind(null,j,e.queue,!0,!1),Qo().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=j,a=Qo();if(ea){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),pu===null)throw Error(i(349));N&127||ds(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Ps(ps.bind(null,r,o,e),[e]),r.flags|=2048,As(9,{destroy:void 0},fs.bind(null,r,o,n,t),null),n},useId:function(){var e=Qo(),t=pu.identifierPrefix;if(ea){var n=Ki,r=Gi;n=(r&~(1<<32-Xe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=zo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[yt]=t,o[bt]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(hf(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&il(t)}}return ll(t),al(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&il(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=be.current,sa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Qi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[yt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ff(e.nodeValue,n)),e||ia(t,!0)}else e=xf(e).createTextNode(r),e[yt]=t,t.stateNode=e}return ll(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=sa(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[yt]=t}else ca(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;ll(t),e=!1}else n=la(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Ao(t),t):(Ao(t),null);if(t.flags&128)throw Error(i(558))}return ll(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=sa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[yt]=t}else ca(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;ll(t),a=!1}else a=la(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Ao(t),t):(Ao(t),null)}return Ao(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),sl(t,t.updateQueue),ll(t),null);case 4:return Ce(),e===null&&ef(t.stateNode.containerInfo),ll(t),null;case 10:return ha(t.type),ll(t),null;case 19:if(ge(jo),r=t.memoizedState,r===null)return ll(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)cl(r,!1);else{if(bu!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Mo(e),o!==null){for(t.flags|=128,cl(r,!1),e=o.updateQueue,t.updateQueue=e,sl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ai(n,e),n=n.sibling;return _e(jo,jo.current&1|2),ea&&qi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Re()>ju&&(t.flags|=128,a=!0,cl(r,!1),t.lanes=4194304)}else{if(!a)if(e=Mo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,sl(t,e),cl(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!ea)return ll(t),null}else 2*Re()-r.renderingStartTime>ju&&n!==536870912&&(t.flags|=128,a=!0,cl(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(ll(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Re(),e.sibling=null,n=jo.current,_e(jo,a?n&1|2:n&1),ea&&qi(t,r.treeForkCount),e);case 22:case 23:return Ao(t),Co(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(ll(t),t.subtreeFlags&6&&(t.flags|=8192)):ll(t),n=t.updateQueue,n!==null&&sl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&ge(Ra),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ha(Da),ll(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function dl(e,t){switch(Xi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ha(Da),Ce(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Te(t),null;case 31:if(t.memoizedState!==null){if(Ao(t),t.alternate===null)throw Error(i(340));ca()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Ao(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));ca()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ge(jo),null;case 4:return Ce(),null;case 10:return ha(t.type),null;case 22:case 23:return Ao(t),Co(),e!==null&&ge(Ra),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ha(Da),null;case 25:return null;default:return null}}function fl(e,t){switch(Xi(t),t.tag){case 3:ha(Da),Ce();break;case 26:case 27:case 5:Te(t);break;case 4:Ce();break;case 31:t.memoizedState!==null&&Ao(t);break;case 13:Ao(t);break;case 19:ge(jo);break;case 10:ha(t.type);break;case 22:case 23:Ao(t),Co(),e!==null&&ge(Ra);break;case 24:ha(Da)}}function pl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){xd(t,t.return,e)}}function ml(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){xd(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){xd(t,t.return,e)}}function hl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{vo(t,n)}catch(t){xd(e,e.return,t)}}}function gl(e,t,n){n.props=_c(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){xd(e,t,n)}}function _l(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){xd(e,t,n)}}function vl(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){xd(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){xd(e,t,n)}else n.current=null}function yl(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){xd(e,e.return,t)}}function bl(e,t,n){try{var r=e.stateNode;gf(r,e.type,n,t),r[bt]=t}catch(t){xd(e,e.return,t)}}function xl(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Mf(e.type)||e.tag===4}function Sl(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||xl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Mf(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Cl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=un));else if(r!==4&&(r===27&&Mf(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Cl(e,t,n),e=e.sibling;e!==null;)Cl(e,t,n),e=e.sibling}function wl(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Mf(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(wl(e,t,n),e=e.sibling;e!==null;)wl(e,t,n),e=e.sibling}function Tl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);hf(t,r,n),t[yt]=e,t[bt]=n}catch(t){xd(e,e.return,t)}}var El=!1,Dl=!1,Ol=!1,kl=typeof WeakSet==`function`?WeakSet:Set,Al=null;function jl(e,t){if(e=e.containerInfo,yf=Bp,e=Kr(e),qr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(bf={focusedElem:e,selectionRange:n},Bp=!1,Al=t;Al!==null;)if(t=Al,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,Al=e;else for(;Al!==null;){switch(t=Al,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),hf(o,r,n),o[yt]=e,jt(o),r=o;break a;case`link`:var s=bp(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Wr(s,h),v=Wr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,T.T=null,n=zu,zu=null;var o=Fu,s=Lu;if(Pu=0,Iu=Fu=null,Lu=0,fu&6)throw Error(i(331));var c=fu;if(fu|=4,su(o.current),$l(o,o.current,s,n),fu=c,Fd(0,!1),Je&&typeof Je.onPostCommitFiberRoot==`function`)try{Je.onPostCommitFiberRoot(qe,o)}catch{}return!0}finally{de.p=a,T.T=r,_d(e,t)}}function bd(e,t,n){t=Li(n,t),t=Cc(e.stateNode,t,2),e=uo(e,t,2),e!==null&&(lt(e,2),Pd(e))}function xd(e,t,n){if(e.tag===3)bd(e,e,n);else for(;t!==null;){if(t.tag===3){bd(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(Nu===null||!Nu.has(r))){e=Li(n,e),n=wc(2),r=uo(t,n,2),r!==null&&(Tc(n,r,t,e),lt(r,2),Pd(r));break}}t=t.return}}function Sd(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new du;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(vu=!0,i.add(n),e=Cd.bind(null,e,t,n),t.then(e,e))}function Cd(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,pu===e&&(N&n)===n&&(bu===4||bu===3&&(N&62914560)===N&&300>Re()-ku?!(fu&2)&&Qu(e,0):Cu|=n,Tu===N&&(Tu=0)),Pd(e)}function wd(e,t){t===0&&(t=st()),e=Si(e,t),e!==null&&(lt(e,t),Pd(e))}function Td(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),wd(e,n)}function Ed(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),wd(e,n)}function Dd(e,t){return Pe(e,t)}var Od=null,kd=null,Ad=!1,jd=!1,Md=!1,Nd=0;function Pd(e){e!==kd&&e.next===null&&(kd===null?Od=kd=e:kd=kd.next=e),jd=!0,Ad||(Ad=!0,Vd())}function Fd(e,t){if(!Md&&jd){Md=!0;do for(var n=!1,r=Od;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Xe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Bd(r,a))}else a=N,a=it(r,r===pu?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||at(r,a)||(n=!0,Bd(r,a));r=r.next}while(n);Md=!1}}function Id(){Ld()}function Ld(){jd=Ad=!1;var e=0;Nd!==0&&Ef()&&(e=Nd);for(var t=Re(),n=null,r=Od;r!==null;){var i=r.next,a=Rd(r,t);a===0?(r.next=null,n===null?Od=i:n.next=i,i===null&&(kd=n)):(n=r,(e!==0||a&3)&&(jd=!0)),r=i}Pu!==0&&Pu!==5||Fd(e,!1),Nd!==0&&(Nd=0)}function Rd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&_f(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function ep(e,t,n){var r=$f;if(r&&typeof t==`string`&&t){var i=Jt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),Jf.has(i)||(Jf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),hf(t,`link`,e),jt(t),r.head.appendChild(t)))}}function tp(e){Xf.D(e),ep(`dns-prefetch`,e,null)}function np(e,t){Xf.C(e,t),ep(`preconnect`,e,t)}function rp(e,t,n){Xf.L(e,t,n);var r=$f;if(r&&e&&t){var i=`link[rel="preload"][as="`+Jt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Jt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Jt(n.imageSizes)+`"]`)):i+=`[href="`+Jt(e)+`"]`;var a=i;switch(t){case`style`:a=lp(e);break;case`script`:a=pp(e)}qf.has(a)||(e=p({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),qf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(up(a))||t===`script`&&r.querySelector(mp(a))||(t=r.createElement(`link`),hf(t,`link`,e),jt(t),r.head.appendChild(t)))}}function ip(e,t){Xf.m(e,t);var n=$f;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Jt(r)+`"][href="`+Jt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=pp(e)}if(!qf.has(a)&&(e=p({rel:`modulepreload`,href:e},t),qf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(mp(a)))return}r=n.createElement(`link`),hf(r,`link`,e),jt(r),n.head.appendChild(r)}}}function ap(e,t,n){Xf.S(e,t,n);var r=$f;if(r&&e){var i=At(r).hoistableStyles,a=lp(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(up(a)))s.loading=5;else{e=p({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=qf.get(a))&&_p(e,n);var c=o=r.createElement(`link`);jt(c),hf(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,gp(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function op(e,t){Xf.X(e,t);var n=$f;if(n&&e){var r=At(n).hoistableScripts,i=pp(e),a=r.get(i);a||(a=n.querySelector(mp(i)),a||(e=p({src:e,async:!0},t),(t=qf.get(i))&&vp(e,t),a=n.createElement(`script`),jt(a),hf(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function sp(e,t){Xf.M(e,t);var n=$f;if(n&&e){var r=At(n).hoistableScripts,i=pp(e),a=r.get(i);a||(a=n.querySelector(mp(i)),a||(e=p({src:e,async:!0,type:`module`},t),(t=qf.get(i))&&vp(e,t),a=n.createElement(`script`),jt(a),hf(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function cp(e,t,n,r){var a=(a=be.current)?Yf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=lp(n.href),n=At(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=lp(n.href);var o=At(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(up(e)))&&!o._p&&(s.instance=o,s.state.loading=5),qf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},qf.set(e,n),o||fp(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=pp(n),n=At(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function lp(e){return`href="`+Jt(e)+`"`}function up(e){return`link[rel="stylesheet"][`+e+`]`}function dp(e){return p({},e,{"data-precedence":e.precedence,precedence:null})}function fp(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),hf(t,`link`,n),jt(t),e.head.appendChild(t))}function pp(e){return`[src="`+Jt(e)+`"]`}function mp(e){return`script[async]`+e}function hp(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Jt(n.href)+`"]`);if(r)return t.instance=r,jt(r),r;var a=p({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),jt(r),hf(r,`style`,a),gp(r,n.precedence,e),t.instance=r;case`stylesheet`:a=lp(n.href);var o=e.querySelector(up(a));if(o)return t.state.loading|=4,t.instance=o,jt(o),o;r=dp(n),(a=qf.get(a))&&_p(r,a),o=(e.ownerDocument||e).createElement(`link`),jt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),hf(o,`link`,r),t.state.loading|=4,gp(o,n.precedence,e),t.instance=o;case`script`:return o=pp(n.src),(a=e.querySelector(mp(o)))?(t.instance=a,jt(a),a):(r=n,(a=qf.get(o))&&(r=p({},n),vp(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),jt(a),hf(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,gp(r,n.precedence,e));return t.instance}function gp(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Sp(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Cp(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function wp(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=lp(r.href),a=t.querySelector(up(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Dp.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,jt(a);return}a=t.ownerDocument||t,r=dp(r),(i=qf.get(i))&&_p(r,i),a=a.createElement(`link`),jt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),hf(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Dp.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Tp=0;function Ep(e,t){return e.stylesheets&&e.count===0&&kp(e,e.stylesheets),0Tp?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Dp(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)kp(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Op=null;function kp(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Op=new Map,t.forEach(Ap,e),Op=null,Dp.call(e))}function Ap(e,t){if(!(t.state.loading&4)){var n=Op.get(e);if(n)var r=n.get(null);else{n=new Map,Op.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=_()}))()),y=u(f()),b,x=o((()=>{b=`1.1.0`})),S,C=o((()=>{x(),S=class e extends Error{constructor(t,n={}){let r=n.cause instanceof e?n.cause.details:n.cause?.message?n.cause.message:n.details,i=n.cause instanceof e&&n.cause.docsPath||n.docsPath,a=[t||`An error occurred.`,``,...n.metaMessages?[...n.metaMessages,``]:[],...i?[`Docs: https://abitype.dev${i}`]:[],...r?[`Details: ${r}`]:[],`Version: abitype@${b}`].join(` `);super(a),Object.defineProperty(this,`details`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`docsPath`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`metaMessages`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`shortMessage`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`AbiTypeError`}),n.cause&&(this.cause=n.cause),this.details=r,this.docsPath=i,this.metaMessages=n.metaMessages,this.shortMessage=t}}}));function w(e,t){return e.exec(t)?.groups}var ee,te,ne,re=o((()=>{ee=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,te=/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/,ne=/^\(.+?\).*?$/}));function ie(e){let t=e.type;if(ae.test(e.type)&&`components`in e){t=`(`;let n=e.components.length;for(let r=0;r{re(),ae=/^tuple(?(\[(\d*)\])*)$/}));function se(e){let t=``,n=e.length;for(let r=0;r{oe()}));function le(e){return e.type===`function`?`function ${e.name}(${se(e.inputs)})${e.stateMutability&&e.stateMutability!==`nonpayable`?` ${e.stateMutability}`:``}${e.outputs?.length?` returns (${se(e.outputs)})`:``}`:e.type===`event`?`event ${e.name}(${se(e.inputs)})`:e.type===`error`?`error ${e.name}(${se(e.inputs)})`:e.type===`constructor`?`constructor(${se(e.inputs)})${e.stateMutability===`payable`?` payable`:``}`:e.type===`fallback`?`fallback() external${e.stateMutability===`payable`?` payable`:``}`:`receive() external payable`}var ue=o((()=>{ce()}));function T(e){return Ce.test(e)}function de(e){return w(Ce,e)}function fe(e){return we.test(e)}function pe(e){return w(we,e)}function me(e){return Te.test(e)}function he(e){return w(Te,e)}function ge(e){return Ee.test(e)}function _e(e){return w(Ee,e)}function ve(e){return De.test(e)}function ye(e){return w(De,e)}function be(e){return Oe.test(e)}function xe(e){return w(Oe,e)}function Se(e){return ke.test(e)}var Ce,we,Te,Ee,De,Oe,ke,Ae,je,Me,Ne=o((()=>{re(),Ce=/^error (?[a-zA-Z$_][a-zA-Z0-9$_]*)\((?.*?)\)$/,we=/^event (?[a-zA-Z$_][a-zA-Z0-9$_]*)\((?.*?)\)$/,Te=/^function (?[a-zA-Z$_][a-zA-Z0-9$_]*)\((?.*?)\)(?: (?external|public{1}))?(?: (?pure|view|nonpayable|payable{1}))?(?: returns\s?\((?.*?)\))?$/,Ee=/^struct (?[a-zA-Z$_][a-zA-Z0-9$_]*) \{(?.*?)\}$/,De=/^constructor\((?.*?)\)(?:\s(?payable{1}))?$/,Oe=/^fallback\(\) external(?:\s(?payable{1}))?$/,ke=/^receive\(\) external payable$/,Ae=new Set([`memory`,`indexed`,`storage`,`calldata`]),je=new Set([`indexed`]),Me=new Set([`calldata`,`memory`,`storage`])})),Pe,Fe,Ie,Le=o((()=>{C(),Pe=class extends S{constructor({signature:e}){super(`Failed to parse ABI item.`,{details:`parseAbiItem(${JSON.stringify(e,null,2)})`,docsPath:`/api/human#parseabiitem-1`}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidAbiItemError`})}},Fe=class extends S{constructor({type:e}){super(`Unknown type.`,{metaMessages:[`Type "${e}" is not a valid ABI type. Perhaps you forgot to include a struct signature?`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`UnknownTypeError`})}},Ie=class extends S{constructor({type:e}){super(`Unknown type.`,{metaMessages:[`Type "${e}" is not a valid ABI type.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`UnknownSolidityTypeError`})}}})),Re,ze,Be,Ve,He,Ue,We=o((()=>{C(),Re=class extends S{constructor({params:e}){super(`Failed to parse ABI parameters.`,{details:`parseAbiParameters(${JSON.stringify(e,null,2)})`,docsPath:`/api/human#parseabiparameters-1`}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidAbiParametersError`})}},ze=class extends S{constructor({param:e}){super(`Invalid ABI parameter.`,{details:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidParameterError`})}},Be=class extends S{constructor({param:e,name:t}){super(`Invalid ABI parameter.`,{details:e,metaMessages:[`"${t}" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`SolidityProtectedKeywordError`})}},Ve=class extends S{constructor({param:e,type:t,modifier:n}){super(`Invalid ABI parameter.`,{details:e,metaMessages:[`Modifier "${n}" not allowed${t?` in "${t}" type`:``}.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidModifierError`})}},He=class extends S{constructor({param:e,type:t,modifier:n}){super(`Invalid ABI parameter.`,{details:e,metaMessages:[`Modifier "${n}" not allowed${t?` in "${t}" type`:``}.`,`Data location can only be specified for array, struct, or mapping types, but "${n}" was given.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidFunctionModifierError`})}},Ue=class extends S{constructor({abiParameter:e}){super(`Invalid ABI parameter.`,{details:JSON.stringify(e,null,2),metaMessages:[`ABI parameter type is invalid.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidAbiTypeParameterError`})}}})),Ge,Ke,qe,Je=o((()=>{C(),Ge=class extends S{constructor({signature:e,type:t}){super(`Invalid ${t} signature.`,{details:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidSignatureError`})}},Ke=class extends S{constructor({signature:e}){super(`Unknown signature.`,{details:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`UnknownSignatureError`})}},qe=class extends S{constructor({signature:e}){super(`Invalid struct signature.`,{details:e,metaMessages:[`No properties exist.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidStructSignatureError`})}}})),Ye,Xe=o((()=>{C(),Ye=class extends S{constructor({type:e}){super(`Circular reference detected.`,{metaMessages:[`Struct "${e}" is a circular reference.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`CircularReferenceError`})}}})),Ze,Qe=o((()=>{C(),Ze=class extends S{constructor({current:e,depth:t}){super(`Unbalanced parentheses.`,{metaMessages:[`"${e.trim()}" has too many ${t>0?`opening`:`closing`} parentheses.`],details:`Depth "${t}"`}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`InvalidParenthesisError`})}}}));function $e(e,t,n){let r=``;if(n)for(let e of Object.entries(n)){if(!e)continue;let t=``;for(let n of e[1])t+=`[${n.type}${n.name?`:${n.name}`:``}]`;r+=`(${e[0]}{${t}})`}return t?`${t}:${e}${r}`:e}var et,tt=o((()=>{et=new Map([[`address`,{type:`address`}],[`bool`,{type:`bool`}],[`bytes`,{type:`bytes`}],[`bytes32`,{type:`bytes32`}],[`int`,{type:`int256`}],[`int256`,{type:`int256`}],[`string`,{type:`string`}],[`uint`,{type:`uint256`}],[`uint8`,{type:`uint8`}],[`uint16`,{type:`uint16`}],[`uint24`,{type:`uint24`}],[`uint32`,{type:`uint32`}],[`uint64`,{type:`uint64`}],[`uint96`,{type:`uint96`}],[`uint112`,{type:`uint112`}],[`uint160`,{type:`uint160`}],[`uint192`,{type:`uint192`}],[`uint256`,{type:`uint256`}],[`address owner`,{type:`address`,name:`owner`}],[`address to`,{type:`address`,name:`to`}],[`bool approved`,{type:`bool`,name:`approved`}],[`bytes _data`,{type:`bytes`,name:`_data`}],[`bytes data`,{type:`bytes`,name:`data`}],[`bytes signature`,{type:`bytes`,name:`signature`}],[`bytes32 hash`,{type:`bytes32`,name:`hash`}],[`bytes32 r`,{type:`bytes32`,name:`r`}],[`bytes32 root`,{type:`bytes32`,name:`root`}],[`bytes32 s`,{type:`bytes32`,name:`s`}],[`string name`,{type:`string`,name:`name`}],[`string symbol`,{type:`string`,name:`symbol`}],[`string tokenURI`,{type:`string`,name:`tokenURI`}],[`uint tokenId`,{type:`uint256`,name:`tokenId`}],[`uint8 v`,{type:`uint8`,name:`v`}],[`uint256 balance`,{type:`uint256`,name:`balance`}],[`uint256 tokenId`,{type:`uint256`,name:`tokenId`}],[`uint256 value`,{type:`uint256`,name:`value`}],[`event:address indexed from`,{type:`address`,name:`from`,indexed:!0}],[`event:address indexed to`,{type:`address`,name:`to`,indexed:!0}],[`event:uint indexed tokenId`,{type:`uint256`,name:`tokenId`,indexed:!0}],[`event:uint256 indexed tokenId`,{type:`uint256`,name:`tokenId`,indexed:!0}]])}));function nt(e,t={}){if(me(e))return rt(e,t);if(fe(e))return it(e,t);if(T(e))return at(e,t);if(ve(e))return ot(e,t);if(be(e))return st(e);if(Se(e))return{type:`receive`,stateMutability:`payable`};throw new Ke({signature:e})}function rt(e,t={}){let n=he(e);if(!n)throw new Ge({signature:e,type:`function`});let r=lt(n.parameters),i=[],a=r.length;for(let e=0;e{re(),Le(),We(),Je(),Qe(),tt(),Ne(),pt=/^(?[a-zA-Z$_][a-zA-Z0-9$_]*(?:\spayable)?)(?(?:\[\d*?\])+?)?(?:\s(?calldata|indexed|memory|storage{1}))?(?:\s(?[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,mt=/^\((?.+?)\)(?(?:\[\d*?\])+?)?(?:\s(?calldata|indexed|memory|storage{1}))?(?:\s(?[a-zA-Z$_][a-zA-Z0-9$_]*))?$/,ht=/^u?int$/,gt=/^(?:after|alias|anonymous|apply|auto|byte|calldata|case|catch|constant|copyof|default|defined|error|event|external|false|final|function|immutable|implements|in|indexed|inline|internal|let|mapping|match|memory|mutable|null|of|override|partial|private|promise|public|pure|reference|relocatable|return|returns|sizeof|static|storage|struct|super|supports|switch|this|true|try|typedef|typeof|var|view|virtual)$/}));function vt(e){let t={},n=e.length;for(let r=0;r{re(),Le(),We(),Je(),Xe(),Ne(),_t(),bt=/^(?[a-zA-Z$_][a-zA-Z0-9$_]*)(?(?:\[\d*?\])+?)?$/}));function St(e){let t=vt(e),n=[],r=e.length;for(let i=0;i{Ne(),xt(),_t()}));function wt(e){let t;if(typeof e==`string`)t=nt(e);else{let n=vt(e),r=e.length;for(let i=0;i{Le(),Ne(),xt(),_t()}));function Et(e){let t=[];if(typeof e==`string`){let n=lt(e),r=n.length;for(let e=0;e{We(),Ne(),xt(),_t()})),Ot=o((()=>{ue(),ce(),Ct(),Tt(),Dt()}));function E(e,t,n){let r=e[t.name];if(typeof r==`function`)return r;let i=e[n];return typeof i==`function`?i:n=>t(e,n)}function kt(e,{includeName:t=!1}={}){if(e.type!==`function`&&e.type!==`event`&&e.type!==`error`)throw new on(e.type);return`${e.name}(${At(e.inputs,{includeName:t})})`}function At(e,{includeName:t=!1}={}){return e?e.map(e=>jt(e,{includeName:t})).join(t?`, `:`,`):``}function jt(e,{includeName:t}){return e.type.startsWith(`tuple`)?`(${At(e.components,{includeName:t})})${e.type.slice(5)}`:e.type+(t&&e.name?` ${e.name}`:``)}var Mt=o((()=>{sn()}));function Nt(e,{strict:t=!0}={}){return!e||typeof e!=`string`?!1:t?/^0x[0-9a-fA-F]*$/.test(e):e.startsWith(`0x`)}var Pt=o((()=>{}));function Ft(e){return Nt(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}var It=o((()=>{Pt()})),Lt,Rt=o((()=>{Lt=`2.38.3`}));function zt(e,t){return t?.(e)?e:e&&typeof e==`object`&&`cause`in e&&e.cause!==void 0?zt(e.cause,t):t?null:e}var Bt,D,O=o((()=>{Rt(),Bt={getDocsUrl:({docsBaseUrl:e,docsPath:t=``,docsSlug:n})=>t?`${e??`https://viem.sh`}${t}${n?`#${n}`:``}`:void 0,version:`viem@${Lt}`},D=class e extends Error{constructor(t,n={}){let r=(()=>n.cause instanceof e?n.cause.details:n.cause?.message?n.cause.message:n.details)(),i=(()=>n.cause instanceof e&&n.cause.docsPath||n.docsPath)(),a=Bt.getDocsUrl?.({...n,docsPath:i}),o=[t||`An error occurred.`,``,...n.metaMessages?[...n.metaMessages,``]:[],...a?[`Docs: ${a}`]:[],...r?[`Details: ${r}`]:[],...Bt.version?[`Version: ${Bt.version}`]:[]].join(` `);super(o,n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,`details`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`docsPath`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`metaMessages`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`shortMessage`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`version`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`BaseError`}),this.details=r,this.docsPath=i,this.metaMessages=n.metaMessages,this.name=n.name??this.name,this.shortMessage=t,this.version=Lt}walk(e){return zt(this,e)}}})),Vt,Ht,Ut,Wt,Gt,Kt,qt,Jt,Yt,Xt,Zt,Qt,$t,en,tn,nn,rn,an,on,sn=o((()=>{Mt(),It(),O(),Vt=class extends D{constructor({docsPath:e}){super([`A constructor was not found on the ABI.`,`Make sure you are using the correct ABI and that the constructor exists on it.`].join(` `),{docsPath:e,name:`AbiConstructorNotFoundError`})}},Ht=class extends D{constructor({docsPath:e}){super(["Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.","Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists."].join(` @@ -23,47 +23,47 @@ Error generating stack: `+e.message+` `),{docsPath:t,name:`InvalidAbiEncodingType`})}},rn=class extends D{constructor(e,{docsPath:t}){super([`Type "${e}" is not a valid decoding type.`,`Please provide a valid ABI type.`].join(` `),{docsPath:t,name:`InvalidAbiDecodingType`})}},an=class extends D{constructor(e){super([`Value "${e}" is not a valid array.`].join(` `),{name:`InvalidArrayError`})}},on=class extends D{constructor(e){super([`"${e}" is not a valid definition type.`,`Valid types: "function", "event", "error"`].join(` -`),{name:`InvalidDefinitionTypeError`})}}})),cn,ln,un,dn=o((()=>{O(),cn=class extends D{constructor({offset:e,position:t,size:n}){super(`Slice ${t===`start`?`starting`:`ending`} at offset "${e}" is out-of-bounds (size: ${n}).`,{name:`SliceOffsetOutOfBoundsError`})}},ln=class extends D{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (${e}) exceeds padding size (${t}).`,{name:`SizeExceedsPaddingSizeError`})}},un=class extends D{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} is expected to be ${t} ${n} long, but is ${e} ${n} long.`,{name:`InvalidBytesLengthError`})}}}));function fn(e,{dir:t,size:n=32}={}){return typeof e==`string`?pn(e,{dir:t,size:n}):mn(e,{dir:t,size:n})}function pn(e,{dir:t,size:n=32}={}){if(n===null)return e;let r=e.replace(`0x`,``);if(r.length>n*2)throw new ln({size:Math.ceil(r.length/2),targetSize:n,type:`hex`});return`0x${r[t===`right`?`padEnd`:`padStart`](n*2,`0`)}`}function mn(e,{dir:t,size:n=32}={}){if(n===null)return e;if(e.length>n)throw new ln({size:e.length,targetSize:n,type:`bytes`});let r=new Uint8Array(n);for(let i=0;i{dn()})),gn,_n,vn,yn,bn=o((()=>{O(),gn=class extends D{constructor({max:e,min:t,signed:n,size:r,value:i}){super(`Number "${i}" is not in safe ${r?`${r*8}-bit ${n?`signed`:`unsigned`} `:``}integer range ${e?`(${t} to ${e})`:`(above ${t})`}`,{name:`IntegerOutOfRangeError`})}},_n=class extends D{constructor(e){super(`Bytes value "${e}" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`,{name:`InvalidBytesBooleanError`})}},vn=class extends D{constructor(e){super(`Hex value "${e}" is not a valid boolean. The hex value must be "0x0" (false) or "0x1" (true).`,{name:`InvalidHexBooleanError`})}},yn=class extends D{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed ${t} bytes. Given size: ${e} bytes.`,{name:`SizeOverflowError`})}}}));function xn(e,{dir:t=`left`}={}){let n=typeof e==`string`?e.replace(`0x`,``):e,r=0;for(let e=0;e{}));function Cn(e,{size:t}){if(Ft(e)>t)throw new yn({givenSize:Ft(e),maxSize:t})}function wn(e,t={}){let{signed:n}=t;t.size&&Cn(e,{size:t.size});let r=BigInt(e);if(!n)return r;let i=(e.length-2)/2,a=(1n<{bn(),It(),Sn()}));function On(e,t={}){return typeof e==`number`||typeof e==`bigint`?k(e,t):typeof e==`string`?jn(e,t):typeof e==`boolean`?kn(e,t):An(e,t)}function kn(e,t={}){let n=`0x${Number(e)}`;return typeof t.size==`number`?(Cn(n,{size:t.size}),fn(n,{size:t.size})):n}function An(e,t={}){let n=``;for(let t=0;ta||i{bn(),hn(),Dn(),Mn=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`)),Nn=new TextEncoder}));function Pn(e,t={}){return typeof e==`number`||typeof e==`bigint`?Rn(e,t):typeof e==`boolean`?Fn(e,t):Nt(e)?Ln(e,t):zn(e,t)}function Fn(e,t={}){let n=new Uint8Array(1);return n[0]=Number(e),typeof t.size==`number`?(Cn(n,{size:t.size}),fn(n,{size:t.size})):n}function In(e){if(e>=Vn.zero&&e<=Vn.nine)return e-Vn.zero;if(e>=Vn.A&&e<=Vn.F)return e-(Vn.A-10);if(e>=Vn.a&&e<=Vn.f)return e-(Vn.a-10)}function Ln(e,t={}){let n=e;t.size&&(Cn(n,{size:t.size}),n=fn(n,{dir:`right`,size:t.size}));let r=n.slice(2);r.length%2&&(r=`0${r}`);let i=r.length/2,a=new Uint8Array(i);for(let e=0,t=0;e{O(),Pt(),hn(),Dn(),A(),Bn=new TextEncoder,Vn={zero:48,nine:57,A:65,F:70,a:97,f:102}}));function Un(e,t=!1){return t?{h:Number(e&Kn),l:Number(e>>qn&Kn)}:{h:Number(e>>qn&Kn)|0,l:Number(e&Kn)|0}}function Wn(e,t=!1){let n=e.length,r=new Uint32Array(n),i=new Uint32Array(n);for(let a=0;a>>0)+(r>>>0);return{h:e+n+(i/2**32|0)|0,l:i|0}}var Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr,ir,ar,or,sr,cr,lr,ur=o((()=>{Kn=BigInt(2**32-1),qn=BigInt(32),Jn=(e,t,n)=>e>>>n,Yn=(e,t,n)=>e<<32-n|t>>>n,Xn=(e,t,n)=>e>>>n|t<<32-n,Zn=(e,t,n)=>e<<32-n|t>>>n,Qn=(e,t,n)=>e<<64-n|t>>>n-32,$n=(e,t,n)=>e>>>n-32|t<<64-n,er=(e,t,n)=>e<>>32-n,tr=(e,t,n)=>t<>>32-n,nr=(e,t,n)=>t<>>64-n,rr=(e,t,n)=>e<>>64-n,ir=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0),ar=(e,t,n,r)=>t+n+r+(e/2**32|0)|0,or=(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0),sr=(e,t,n,r,i)=>t+n+r+i+(e/2**32|0)|0,cr=(e,t,n,r,i)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(i>>>0),lr=(e,t,n,r,i,a)=>t+n+r+i+a+(e/2**32|0)|0})),dr,fr=o((()=>{dr=typeof globalThis==`object`&&`crypto`in globalThis?globalThis.crypto:void 0}));function pr(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function mr(e){if(!Number.isSafeInteger(e)||e<0)throw Error(`positive integer expected, got `+e)}function hr(e,...t){if(!pr(e))throw Error(`Uint8Array expected`);if(t.length>0&&!t.includes(e.length))throw Error(`Uint8Array expected of length `+t+`, got length=`+e.length)}function gr(e){if(typeof e!=`function`||typeof e.create!=`function`)throw Error(`Hash should be wrapped by utils.createHasher`);mr(e.outputLen),mr(e.blockLen)}function _r(e,t=!0){if(e.destroyed)throw Error(`Hash instance has been destroyed`);if(t&&e.finished)throw Error(`Hash#digest() has already been called`)}function vr(e,t){hr(e);let n=t.outputLen;if(e.length>>t}function Cr(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function wr(e){for(let t=0;te().update(Er(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function kr(e=32){if(dr&&typeof dr.getRandomValues==`function`)return dr.getRandomValues(new Uint8Array(e));if(dr&&typeof dr.randomBytes==`function`)return Uint8Array.from(dr.randomBytes(e));throw Error(`crypto.getRandomValues must be defined`)}var Ar,jr,Mr,Nr=o((()=>{fr(),Ar=(()=>new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68)(),jr=Ar?e=>e:wr,Mr=class{}}));function Pr(e,t=24){let n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let r=(t+8)%10,i=(t+2)%10,a=n[i],o=n[i+1],s=qr(a,o,1)^n[r],c=Jr(a,o,1)^n[r+1];for(let n=0;n<50;n+=10)e[t+n]^=s,e[t+n+1]^=c}let t=e[2],i=e[3];for(let n=0;n<24;n++){let r=Hr[n],a=qr(t,i,r),o=Jr(t,i,r),s=Vr[n];t=e[s],i=e[s+1],e[s]=a,e[s+1]=o}for(let t=0;t<50;t+=10){for(let r=0;r<10;r++)n[r]=e[t+r];for(let r=0;r<10;r++)e[t+r]^=~n[(r+2)%10]&n[(r+4)%10]}e[0]^=Gr[r],e[1]^=Kr[r]}br(n)}var Fr,Ir,Lr,Rr,zr,Br,Vr,Hr,Ur,Wr,Gr,Kr,qr,Jr,Yr,Xr,Zr,Qr=o((()=>{ur(),Nr(),Fr=BigInt(0),Ir=BigInt(1),Lr=BigInt(2),Rr=BigInt(7),zr=BigInt(256),Br=BigInt(113),Vr=[],Hr=[],Ur=[];for(let e=0,t=Ir,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Vr.push(2*(5*r+n)),Hr.push((e+1)*(e+2)/2%64);let i=Fr;for(let e=0;e<7;e++)t=(t<>Rr)*Br)%zr,t&Lr&&(i^=Ir<<(Ir<n>32?nr(e,t,n):er(e,t,n),Jr=(e,t,n)=>n>32?rr(e,t,n):tr(e,t,n),Yr=class e extends Mr{constructor(e,t,n,r=!1,i=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.rounds=i,mr(n),!(0=n&&this.keccak();let a=Math.min(n-this.posOut,i-r);e.set(t.subarray(this.posOut,this.posOut+a),r),this.posOut+=a,r+=a}return e}xofInto(e){if(!this.enableXOF)throw Error(`XOF is not possible for this instance`);return this.writeInto(e)}xof(e){return mr(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(vr(e,this),this.finished)throw Error(`digest() was already called`);return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,br(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:i,rounds:a,enableXOF:o}=this;return t||=new e(n,r,i,o,a),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=r,t.outputLen=i,t.enableXOF=o,t.destroyed=this.destroyed,t}},Xr=(e,t,n)=>Or(()=>new Yr(t,e,n)),Zr=(()=>Xr(1,136,256/8))()}));function $r(e,t){let n=t||`hex`,r=Zr(Nt(e,{strict:!1})?Pn(e):e);return n===`bytes`?r:On(r)}var ei=o((()=>{Qr(),Pt(),Hn(),A()}));function ti(e){return ni(e)}var ni,ri=o((()=>{Hn(),ei(),ni=e=>$r(Pn(e))}));function ii(e){let t=!0,n=``,r=0,i=``,a=!1;for(let o=0;o{O()})),oi,si=o((()=>{Ot(),ai(),oi=e=>{let t=(()=>typeof e==`string`?e:le(e))();return ii(t)}}));function ci(e){return ti(oi(e))}var li=o((()=>{ri(),si()})),ui,di=o((()=>{li(),ui=ci})),fi,pi=o((()=>{O(),fi=class extends D{constructor({address:e}){super(`Address "${e}" is invalid.`,{metaMessages:[`- Address must be a hex value of 20 bytes (40 hex characters).`,`- Address must match its checksum counterpart.`],name:`InvalidAddressError`})}}})),mi,hi=o((()=>{mi=class extends Map{constructor(e){super(),Object.defineProperty(this,`maxSize`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&t!==void 0&&(this.delete(e),super.set(e,t)),t}set(e,t){if(super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=this.keys().next().value;e&&this.delete(e)}return this}}}));function gi(e,t){if(vi.has(`${e}.${t}`))return vi.get(`${e}.${t}`);let n=t?`${t}${e.toLowerCase()}`:e.substring(2).toLowerCase(),r=$r(zn(n),`bytes`),i=(t?n.substring(`${t}0x`.length):n).split(``);for(let e=0;e<40;e+=2)r[e>>1]>>4>=8&&i[e]&&(i[e]=i[e].toUpperCase()),(r[e>>1]&15)>=8&&i[e+1]&&(i[e+1]=i[e+1].toUpperCase());let a=`0x${i.join(``)}`;return vi.set(`${e}.${t}`,a),a}function _i(e,t){if(!bi(e,{strict:!1}))throw new fi({address:e});return gi(e,t)}var vi,yi=o((()=>{pi(),Hn(),ei(),hi(),Ci(),vi=new mi(8192)}));function bi(e,t){let{strict:n=!0}=t??{},r=`${e}.${n}`;if(Si.has(r))return Si.get(r);let i=(()=>xi.test(e)?e.toLowerCase()===e?!0:n?gi(e)===e:!0:!1)();return Si.set(r,i),i}var xi,Si,Ci=o((()=>{hi(),yi(),xi=/^0x[a-fA-F0-9]{40}$/,Si=new mi(8192)}));function wi(e){return typeof e[0]==`string`?Ei(e):Ti(e)}function Ti(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function Ei(e){return`0x${e.reduce((e,t)=>e+t.replace(`0x`,``),``)}`}var Di=o((()=>{}));function Oi(e,t,n,{strict:r}={}){return Nt(e,{strict:!1})?Mi(e,t,n,{strict:r}):ji(e,t,n,{strict:r})}function ki(e,t){if(typeof t==`number`&&t>0&&t>Ft(e)-1)throw new cn({offset:t,position:`start`,size:Ft(e)})}function Ai(e,t,n){if(typeof t==`number`&&typeof n==`number`&&Ft(e)!==n-t)throw new cn({offset:n,position:`end`,size:Ft(e)})}function ji(e,t,n,{strict:r}={}){ki(e,t);let i=e.slice(t,n);return r&&Ai(i,t,n),i}function Mi(e,t,n,{strict:r}={}){ki(e,t);let i=`0x${e.replace(`0x`,``).slice((t??0)*2,(n??e.length)*2)}`;return r&&Ai(i,t,n),i}var Ni=o((()=>{dn(),Pt(),It()})),Pi,Fi,Ii=o((()=>{Pi=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,Fi=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/}));function Li(e,t){if(e.length!==t.length)throw new qt({expectedLength:e.length,givenLength:t.length});let n=Ri({params:e,values:t}),r=Bi(n);return r.length===0?`0x`:r}function Ri({params:e,values:t}){let n=[];for(let r=0;r0?wi([t,e]):t}}if(i)return{dynamic:!0,encoded:e}}return{dynamic:!1,encoded:wi(a.map(({encoded:e})=>e))}}function Ui(e,{param:t}){let[,n]=t.type.split(`bytes`),r=Ft(e);if(!n){let t=e;return r%32!=0&&(t=pn(t,{dir:`right`,size:Math.ceil((e.length-2)/2/32)*32})),{dynamic:!0,encoded:wi([pn(k(r,{size:32})),t])}}if(r!==Number.parseInt(n,10))throw new Kt({expectedSize:Number.parseInt(n,10),value:e});return{dynamic:!1,encoded:pn(e,{dir:`right`})}}function Wi(e){if(typeof e!=`boolean`)throw new D(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:pn(kn(e))}}function Gi(e,{signed:t,size:n=256}){if(typeof n==`number`){let r=2n**(BigInt(n)-(t?1n:0n))-1n,i=t?-r-1n:0n;if(e>r||ee))}}function Ji(e){let t=e.match(/^(.*)\[(\d+)?\]$/);return t?[t[2]?Number(t[2]):null,t[1]]:void 0}var Yi=o((()=>{sn(),pi(),O(),bn(),Ci(),Di(),hn(),It(),Ni(),A(),Ii()})),Xi,Zi=o((()=>{Ni(),li(),Xi=e=>Oi(ci(e),0,4)}));function Qi(e){let{abi:t,args:n=[],name:r}=e,i=Nt(r,{strict:!1}),a=t.filter(e=>i?e.type===`function`?Xi(e)===r:e.type===`event`?ui(e)===r:!1:`name`in e&&e.name===r);if(a.length===0)return;if(a.length===1)return a[0];let o;for(let e of a)if(`inputs`in e){if(!n||n.length===0){if(!e.inputs||e.inputs.length===0)return e;continue}if(e.inputs&&e.inputs.length!==0&&e.inputs.length===n.length&&n.every((t,n)=>{let r=`inputs`in e&&e.inputs[n];return r?$i(t,r):!1})){if(o&&`inputs`in o&&o.inputs){let t=j(e.inputs,o.inputs,n);if(t)throw new en({abiItem:e,type:t[0]},{abiItem:o,type:t[1]})}o=e}}return o||a[0]}function $i(e,t){let n=typeof e,r=t.type;switch(r){case`address`:return bi(e,{strict:!1});case`bool`:return n===`boolean`;case`function`:return n===`string`;case`string`:return n===`string`;default:return r===`tuple`&&`components`in t?Object.values(t.components).every((t,n)=>$i(Object.values(e)[n],t)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(r)?n===`number`||n===`bigint`:/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(r)?n===`string`||e instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(r)?Array.isArray(e)&&e.every(e=>$i(e,{...t,type:r.replace(/(\[[0-9]{0,}\])$/,``)})):!1}}function j(e,t,n){for(let r in e){let i=e[r],a=t[r];if(i.type===`tuple`&&a.type===`tuple`&&`components`in i&&`components`in a)return j(i.components,a.components,n[r]);let o=[i.type,a.type];if((()=>o.includes(`address`)&&o.includes(`bytes20`)?!0:o.includes(`address`)&&o.includes(`string`)||o.includes(`address`)&&o.includes(`bytes`)?bi(n[r],{strict:!1}):!1)())return o}}var ea=o((()=>{sn(),Pt(),Ci(),di(),Zi()}));function ta(e){return typeof e==`string`?{address:e,type:`json-rpc`}:e}var na=o((()=>{}));function ra(e){let{abi:t,args:n,functionName:r}=e,i=t[0];if(r){let e=Qi({abi:t,args:n,name:r});if(!e)throw new Zt(r,{docsPath:ia});i=e}if(i.type!==`function`)throw new Zt(void 0,{docsPath:ia});return{abi:[i],functionName:Xi(kt(i))}}var ia,aa=o((()=>{sn(),Zi(),Mt(),ea(),ia=`/docs/contract/encodeFunctionData`}));function oa(e){let{args:t}=e,{abi:n,functionName:r}=(()=>e.abi.length===1&&e.functionName?.startsWith(`0x`)?e:ra(e))(),i=n[0],a=r,o=`inputs`in i&&i.inputs?Li(i.inputs,t??[]):void 0;return Ei([a,o??`0x`])}var sa=o((()=>{Di(),Yi(),aa()})),ca,la,ua,da=o((()=>{ca={1:"An `assert` condition failed.",17:`Arithmetic operation resulted in underflow or overflow.`,18:"Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).",33:`Attempted to convert to an invalid type.`,34:`Attempted to access a storage byte array that is incorrectly encoded.`,49:"Performed `.pop()` on an empty array",50:`Array index is out of bounds.`,65:`Allocated too much memory or created an array which is too large.`,81:`Attempted to call a zero-initialized variable of internal function type.`},la={inputs:[{name:`message`,type:`string`}],name:`Error`,type:`error`},ua={inputs:[{name:`reason`,type:`uint256`}],name:`Panic`,type:`error`}})),fa,pa,ma,ha=o((()=>{O(),fa=class extends D{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`,{name:`NegativeOffsetError`})}},pa=class extends D{constructor({length:e,position:t}){super(`Position \`${t}\` is out of bounds (\`0 < position < ${e}\`).`,{name:`PositionOutOfBoundsError`})}},ma=class extends D{constructor({count:e,limit:t}){super(`Recursive read limit of \`${t}\` exceeded (recursive read count: \`${e}\`).`,{name:`RecursiveReadLimitExceededError`})}}}));function ga(e,{recursiveReadLimit:t=8192}={}){let n=Object.create(_a);return n.bytes=e,n.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}var _a,va=o((()=>{ha(),_a={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:1/0,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new ma({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new pa({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new fa({offset:e});let t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new fa({offset:e});let t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){let n=t??this.position;return this.assertPosition(n+e-1),this.bytes.subarray(n,n+e)},inspectUint8(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){let t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){let t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){let t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,e&255),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();let e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();let n=this.inspectBytes(e);return this.position+=t??e,n},readUint8(){this.assertReadLimit(),this._touch();let e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();let e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();let e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();let e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){let t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===1/0)return;let e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}}}));function ya(e,t={}){t.size!==void 0&&Cn(e,{size:t.size});let n=An(e,t);return wn(n,t)}function ba(e,t={}){let n=e;if(t.size!==void 0&&(Cn(n,{size:t.size}),n=xn(n)),n.length>1||n[0]>1)throw new _n(n);return!!n[0]}function xa(e,t={}){t.size!==void 0&&Cn(e,{size:t.size});let n=An(e,t);return En(n,t)}function Sa(e,t={}){let n=e;return t.size!==void 0&&(Cn(n,{size:t.size}),n=xn(n,{dir:`right`})),new TextDecoder().decode(n)}var Ca=o((()=>{bn(),Sn(),Dn(),A()}));function wa(e,t){let n=typeof t==`string`?Ln(t):t,r=ga(n);if(Ft(n)===0&&e.length>0)throw new Wt;if(Ft(t)&&Ft(t)<32)throw new Ut({data:typeof t==`string`?t:An(t),params:e,size:Ft(t)});let i=0,a=[];for(let t=0;t48?ya(i,{signed:n}):xa(i,{signed:n}),32]}function ja(e,t,{staticPosition:n}){let r=t.components.length===0||t.components.some(({name:e})=>!e),i=r?[]:{},a=0;if(Na(t)){let o=xa(e.readBytes(Fa)),s=n+o;for(let n=0;n{sn(),yi(),va(),It(),Ni(),Sn(),Ca(),Hn(),A(),Yi(),Pa=32,Fa=32}));function La(e){let{abi:t,data:n}=e,r=Oi(n,0,4);if(r===`0x`)throw new Wt;let i=[...t||[],la,ua].find(e=>e.type===`error`&&r===Xi(kt(e)));if(!i)throw new Xt(r,{docsPath:`/docs/contract/decodeErrorResult`});return{abiItem:i,args:`inputs`in i&&i.inputs&&i.inputs.length>0?wa(i.inputs,Oi(n,4)):void 0,errorName:i.name}}var Ra=o((()=>{da(),sn(),Ni(),Zi(),Ia(),Mt()})),za,Ba=o((()=>{za=(e,t,n)=>JSON.stringify(e,(e,n)=>{let r=typeof n==`bigint`?n.toString():n;return typeof t==`function`?t(e,r):r},n)}));function Va({abiItem:e,args:t,includeFunctionName:n=!0,includeName:r=!1}){if(`name`in e&&`inputs`in e&&e.inputs)return`${n?e.name:``}(${e.inputs.map((e,n)=>`${r&&e.name?`${e.name}: `:``}${typeof t[n]==`object`?za(t[n]):t[n]}`).join(`, `)})`}var Ha=o((()=>{Ba()})),Ua,Wa,Ga=o((()=>{Ua={gwei:9,wei:18},Wa={ether:-9,wei:9}}));function Ka(e,t){let n=e.toString(),r=n.startsWith(`-`);r&&(n=n.slice(1)),n=n.padStart(t,`0`);let[i,a]=[n.slice(0,n.length-t),n.slice(n.length-t)];return a=a.replace(/(0+)$/,``),`${r?`-`:``}${i||`0`}${a?`.${a}`:``}`}var qa=o((()=>{}));function Ja(e,t=`wei`){return Ka(e,Ua[t])}var Ya=o((()=>{Ga(),qa()}));function Xa(e,t=`wei`){return Ka(e,Wa[t])}var Za=o((()=>{Ga(),qa()}));function Qa(e){return e.reduce((e,{slot:t,value:n})=>`${e} ${t}: ${n}\n`,``)}function $a(e){return e.reduce((e,{address:t,...n})=>{let r=`${e} ${t}:\n`;return n.nonce&&(r+=` nonce: ${n.nonce}\n`),n.balance&&(r+=` balance: ${n.balance}\n`),n.code&&(r+=` code: ${n.code}\n`),n.state&&(r+=` state: -`,r+=Qa(n.state)),n.stateDiff&&(r+=` stateDiff: -`,r+=Qa(n.stateDiff)),r},` State Override: -`).slice(0,-1)}var eo,to,no=o((()=>{O(),eo=class extends D{constructor({address:e}){super(`State for account "${e}" is set multiple times.`,{name:`AccountStateConflictError`})}},to=class extends D{constructor(){super(`state and stateDiff are set on the same account.`,{name:`StateAssignmentConflictError`})}}}));function ro(e){let t=Object.entries(e).map(([e,t])=>t===void 0||t===!1?null:[e,t]).filter(Boolean),n=t.reduce((e,[t])=>Math.max(e,t.length),0);return t.map(([e,t])=>` ${`${e}:`.padEnd(n+1)} ${t}`).join(` -`)}var io,ao,oo,so,co,lo,uo,fo,po,mo=o((()=>{Ya(),Za(),O(),io=class extends D{constructor(){super(["Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.","Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."].join(` -`),{name:`FeeConflictError`})}},ao=class extends D{constructor({v:e}){super(`Invalid \`v\` value "${e}". Expected 27 or 28.`,{name:`InvalidLegacyVError`})}},oo=class extends D{constructor({transaction:e}){super(`Cannot infer a transaction type from provided transaction.`,{metaMessages:[`Provided Transaction:`,`{`,ro(e),`}`,``,`To infer the type, either provide:`,"- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:`InvalidSerializableTransactionError`})}},so=class extends D{constructor({storageKey:e}){super(`Size for storage key "${e}" is invalid. Expected 32 bytes. Got ${Math.floor((e.length-2)/2)} bytes.`,{name:`InvalidStorageKeySizeError`})}},co=class extends D{constructor(e,{account:t,docsPath:n,chain:r,data:i,gas:a,gasPrice:o,maxFeePerGas:s,maxPriorityFeePerGas:c,nonce:l,to:u,value:d}){let f=ro({chain:r&&`${r?.name} (id: ${r?.id})`,from:t?.address,to:u,value:d!==void 0&&`${Ja(d)} ${r?.nativeCurrency?.symbol||`ETH`}`,data:i,gas:a,gasPrice:o!==void 0&&`${Xa(o)} gwei`,maxFeePerGas:s!==void 0&&`${Xa(s)} gwei`,maxPriorityFeePerGas:c!==void 0&&`${Xa(c)} gwei`,nonce:l});super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],`Request Arguments:`,f].filter(Boolean),name:`TransactionExecutionError`}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}},lo=class extends D{constructor({blockHash:e,blockNumber:t,blockTag:n,hash:r,index:i}){let a=`Transaction`;n&&i!==void 0&&(a=`Transaction at block time "${n}" at index "${i}"`),e&&i!==void 0&&(a=`Transaction at block hash "${e}" at index "${i}"`),t&&i!==void 0&&(a=`Transaction at block number "${t}" at index "${i}"`),r&&(a=`Transaction with hash "${r}"`),super(`${a} could not be found.`,{name:`TransactionNotFoundError`})}},uo=class extends D{constructor({hash:e}){super(`Transaction receipt with hash "${e}" could not be found. The Transaction may not be processed on a block yet.`,{name:`TransactionReceiptNotFoundError`})}},fo=class extends D{constructor({receipt:e}){super(`Transaction with hash "${e.transactionHash}" reverted.`,{metaMessages:[`The receipt marked the transaction as "reverted". This could mean that the function on the contract you are trying to call threw an error.`,` `,`You can attempt to extract the revert reason by:`,"- calling the `simulateContract` or `simulateCalls` Action with the `abi` and `functionName` of the contract","- using the `call` Action with raw `data`"],name:`TransactionReceiptRevertedError`}),Object.defineProperty(this,`receipt`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.receipt=e}},po=class extends D{constructor({hash:e}){super(`Timed out while waiting for transaction with hash "${e}" to be confirmed.`,{name:`WaitForTransactionReceiptTimeoutError`})}}})),ho,go,_o=o((()=>{ho=e=>e,go=e=>e})),vo,yo,bo,xo,So,Co,wo=o((()=>{na(),da(),Ra(),Mt(),Ha(),ea(),Ya(),Za(),sn(),O(),no(),mo(),_o(),vo=class extends D{constructor(e,{account:t,docsPath:n,chain:r,data:i,gas:a,gasPrice:o,maxFeePerGas:s,maxPriorityFeePerGas:c,nonce:l,to:u,value:d,stateOverride:f}){let p=t?ta(t):void 0,m=ro({from:p?.address,to:u,value:d!==void 0&&`${Ja(d)} ${r?.nativeCurrency?.symbol||`ETH`}`,data:i,gas:a,gasPrice:o!==void 0&&`${Xa(o)} gwei`,maxFeePerGas:s!==void 0&&`${Xa(s)} gwei`,maxPriorityFeePerGas:c!==void 0&&`${Xa(c)} gwei`,nonce:l});f&&(m+=`\n${$a(f)}`),super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],`Raw Call Arguments:`,m].filter(Boolean),name:`CallExecutionError`}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}},yo=class extends D{constructor(e,{abi:t,args:n,contractAddress:r,docsPath:i,functionName:a,sender:o}){let s=Qi({abi:t,args:n,name:a}),c=s?Va({abiItem:s,args:n,includeFunctionName:!1,includeName:!1}):void 0,l=s?kt(s,{includeName:!0}):void 0,u=ro({address:r&&ho(r),function:l,args:c&&c!==`()`&&`${[...Array(a?.length??0).keys()].map(()=>` `).join(``)}${c}`,sender:o});super(e.shortMessage||`An unknown error occurred while executing the contract function "${a}".`,{cause:e,docsPath:i,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],u&&`Contract Call:`,u].filter(Boolean),name:`ContractFunctionExecutionError`}),Object.defineProperty(this,`abi`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`args`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`contractAddress`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`formattedArgs`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`functionName`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`sender`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abi=t,this.args=n,this.cause=e,this.contractAddress=r,this.functionName=a,this.sender=o}},bo=class extends D{constructor({abi:e,data:t,functionName:n,message:r}){let i,a,o,s;if(t&&t!==`0x`)try{a=La({abi:e,data:t});let{abiItem:n,errorName:r,args:i}=a;if(r===`Error`)s=i[0];else if(r===`Panic`){let[e]=i;s=ca[e]}else{let e=n?kt(n,{includeName:!0}):void 0,t=n&&i?Va({abiItem:n,args:i,includeFunctionName:!1,includeName:!1}):void 0;o=[e?`Error: ${e}`:``,t&&t!==`()`?` ${[...Array(r?.length??0).keys()].map(()=>` `).join(``)}${t}`:``]}}catch(e){i=e}else r&&(s=r);let c;i instanceof Xt&&(c=i.signature,o=[`Unable to decode signature "${c}" as it was not found on the provided ABI.`,`Make sure you are using the correct ABI and that the error exists on it.`,`You can look up the decoded signature here: https://openchain.xyz/signatures?query=${c}.`]),super(s&&s!==`execution reverted`||c?[`The contract function "${n}" reverted with the following ${c?`signature`:`reason`}:`,s||c].join(` -`):`The contract function "${n}" reverted.`,{cause:i,metaMessages:o,name:`ContractFunctionRevertedError`}),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`raw`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`reason`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`signature`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=a,this.raw=t,this.reason=s,this.signature=c}},xo=class extends D{constructor({functionName:e}){super(`The contract function "${e}" returned no data ("0x").`,{metaMessages:[`This could be due to any of the following:`,` - The contract does not have the function "${e}",`,` - The parameters passed to the contract function may be invalid, or`,` - The address is not a contract.`],name:`ContractFunctionZeroDataError`})}},So=class extends D{constructor({factory:e}){super(`Deployment for counterfactual contract call failed${e?` for factory "${e}".`:``}`,{metaMessages:[`Please ensure:`,"- The `factory` is a valid contract deployment factory (ie. Create2 Factory, ERC-4337 Factory, etc).","- The `factoryData` is a valid encoded function call for contract deployment function on the factory."],name:`CounterfactualDeploymentFailedError`})}},Co=class extends D{constructor({data:e,message:t}){super(t||``,{name:`RawContractError`}),Object.defineProperty(this,`code`,{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=e}}})),To,Eo,Do,Oo=o((()=>{Ba(),O(),_o(),To=class extends D{constructor({body:e,cause:t,details:n,headers:r,status:i,url:a}){super(`HTTP request failed.`,{cause:t,details:n,metaMessages:[i&&`Status: ${i}`,`URL: ${go(a)}`,e&&`Request body: ${za(e)}`].filter(Boolean),name:`HttpRequestError`}),Object.defineProperty(this,`body`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`headers`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`status`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`url`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.body=e,this.headers=r,this.status=i,this.url=a}},Eo=class extends D{constructor({body:e,error:t,url:n}){super(`RPC Request failed.`,{cause:t,details:t.message,metaMessages:[`URL: ${go(n)}`,`Request body: ${za(e)}`],name:`RpcRequestError`}),Object.defineProperty(this,`code`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=t.code,this.data=t.data}},Do=class extends D{constructor({body:e,url:t}){super(`The request took too long to respond.`,{details:`The request timed out.`,metaMessages:[`URL: ${go(t)}`,`Request body: ${za(e)}`],name:`TimeoutError`})}}})),ko,Ao,jo,Mo,M,No,Po,Fo,Io,Lo,Ro,zo,Bo,Vo,Ho,Uo,Wo,Go,Ko,qo,Jo,Yo,Xo,Zo,Qo,$o,es,ts,ns,rs=o((()=>{O(),Oo(),ko=-1,Ao=class extends D{constructor(e,{code:t,docsPath:n,metaMessages:r,name:i,shortMessage:a}){super(a,{cause:e,docsPath:n,metaMessages:r||e?.metaMessages,name:i||`RpcError`}),Object.defineProperty(this,`code`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=i||e.name,this.code=e instanceof Eo?e.code:t??ko}},jo=class extends Ao{constructor(e,t){super(e,t),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=t.data}},Mo=class e extends Ao{constructor(t){super(t,{code:e.code,name:`ParseRpcError`,shortMessage:`Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.`})}},Object.defineProperty(Mo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32700}),M=class e extends Ao{constructor(t){super(t,{code:e.code,name:`InvalidRequestRpcError`,shortMessage:`JSON is not a valid request object.`})}},Object.defineProperty(M,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32600}),No=class e extends Ao{constructor(t,{method:n}={}){super(t,{code:e.code,name:`MethodNotFoundRpcError`,shortMessage:`The method${n?` "${n}"`:``} does not exist / is not available.`})}},Object.defineProperty(No,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32601}),Po=class e extends Ao{constructor(t){super(t,{code:e.code,name:`InvalidParamsRpcError`,shortMessage:[`Invalid parameters were provided to the RPC method.`,`Double check you have provided the correct parameters.`].join(` -`)})}},Object.defineProperty(Po,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32602}),Fo=class e extends Ao{constructor(t){super(t,{code:e.code,name:`InternalRpcError`,shortMessage:`An internal error was received.`})}},Object.defineProperty(Fo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32603}),Io=class e extends Ao{constructor(t){super(t,{code:e.code,name:`InvalidInputRpcError`,shortMessage:[`Missing or invalid parameters.`,`Double check you have provided the correct parameters.`].join(` -`)})}},Object.defineProperty(Io,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32e3}),Lo=class e extends Ao{constructor(t){super(t,{code:e.code,name:`ResourceNotFoundRpcError`,shortMessage:`Requested resource not found.`}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`ResourceNotFoundRpcError`})}},Object.defineProperty(Lo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32001}),Ro=class e extends Ao{constructor(t){super(t,{code:e.code,name:`ResourceUnavailableRpcError`,shortMessage:`Requested resource not available.`})}},Object.defineProperty(Ro,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32002}),zo=class e extends Ao{constructor(t){super(t,{code:e.code,name:`TransactionRejectedRpcError`,shortMessage:`Transaction creation failed.`})}},Object.defineProperty(zo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32003}),Bo=class e extends Ao{constructor(t,{method:n}={}){super(t,{code:e.code,name:`MethodNotSupportedRpcError`,shortMessage:`Method${n?` "${n}"`:``} is not supported.`})}},Object.defineProperty(Bo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32004}),Vo=class e extends Ao{constructor(t){super(t,{code:e.code,name:`LimitExceededRpcError`,shortMessage:`Request exceeds defined limit.`})}},Object.defineProperty(Vo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32005}),Ho=class e extends Ao{constructor(t){super(t,{code:e.code,name:`JsonRpcVersionUnsupportedError`,shortMessage:`Version of JSON-RPC protocol is not supported.`})}},Object.defineProperty(Ho,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32006}),Uo=class e extends jo{constructor(t){super(t,{code:e.code,name:`UserRejectedRequestError`,shortMessage:`User rejected the request.`})}},Object.defineProperty(Uo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4001}),Wo=class e extends jo{constructor(t){super(t,{code:e.code,name:`UnauthorizedProviderError`,shortMessage:`The requested method and/or account has not been authorized by the user.`})}},Object.defineProperty(Wo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4100}),Go=class e extends jo{constructor(t,{method:n}={}){super(t,{code:e.code,name:`UnsupportedProviderMethodError`,shortMessage:`The Provider does not support the requested method${n?` " ${n}"`:``}.`})}},Object.defineProperty(Go,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4200}),Ko=class e extends jo{constructor(t){super(t,{code:e.code,name:`ProviderDisconnectedError`,shortMessage:`The Provider is disconnected from all chains.`})}},Object.defineProperty(Ko,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4900}),qo=class e extends jo{constructor(t){super(t,{code:e.code,name:`ChainDisconnectedError`,shortMessage:`The Provider is not connected to the requested chain.`})}},Object.defineProperty(qo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4901}),Jo=class e extends jo{constructor(t){super(t,{code:e.code,name:`SwitchChainError`,shortMessage:`An error occurred when attempting to switch chain.`})}},Object.defineProperty(Jo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4902}),Yo=class e extends jo{constructor(t){super(t,{code:e.code,name:`UnsupportedNonOptionalCapabilityError`,shortMessage:`This Wallet does not support a capability that was not marked as optional.`})}},Object.defineProperty(Yo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5700}),Xo=class e extends jo{constructor(t){super(t,{code:e.code,name:`UnsupportedChainIdError`,shortMessage:`This Wallet does not support the requested chain ID.`})}},Object.defineProperty(Xo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5710}),Zo=class e extends jo{constructor(t){super(t,{code:e.code,name:`DuplicateIdError`,shortMessage:`There is already a bundle submitted with this ID.`})}},Object.defineProperty(Zo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5720}),Qo=class e extends jo{constructor(t){super(t,{code:e.code,name:`UnknownBundleIdError`,shortMessage:`This bundle id is unknown / has not been submitted`})}},Object.defineProperty(Qo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5730}),$o=class e extends jo{constructor(t){super(t,{code:e.code,name:`BundleTooLargeError`,shortMessage:`The call bundle is too large for the Wallet to process.`})}},Object.defineProperty($o,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5740}),es=class e extends jo{constructor(t){super(t,{code:e.code,name:`AtomicReadyWalletRejectedUpgradeError`,shortMessage:`The Wallet can support atomicity after an upgrade, but the user rejected the upgrade.`})}},Object.defineProperty(es,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5750}),ts=class e extends jo{constructor(t){super(t,{code:e.code,name:`AtomicityNotSupportedError`,shortMessage:`The wallet does not support atomic execution but the request requires it.`})}},Object.defineProperty(ts,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5760}),ns=class extends Ao{constructor(e){super(e,{name:`UnknownRpcError`,shortMessage:`An unknown RPC error occurred.`})}}}));sn(),O(),wo(),Oo(),rs();var os=3;function ss(e,{abi:t,address:n,args:r,docsPath:i,functionName:a,sender:o}){let s=e instanceof Co?e:e instanceof D?e.walk(e=>`data`in e)||e.walk():{},{code:c,data:l,details:u,message:d,shortMessage:f}=s,p=(()=>e instanceof Wt?new xo({functionName:a}):[os,Fo.code].includes(c)&&(l||u||d||f)?new bo({abi:t,data:typeof l==`object`?l.data:l,functionName:a,message:s instanceof Eo?u:f??d}):e)();return new yo(p,{abi:t,args:r,contractAddress:n,docsPath:i,functionName:a,sender:o})}yi(),ei();function cs(e){let t=$r(`0x${e.substring(4)}`).substring(26);return gi(`0x${t}`)}var ls,us,ds,fs,ps=o((()=>{ls=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),us=function(e){return`/`+e},ds={},fs=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=us(t,n),t in ds)return;ds[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:ls,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})}}));function ms(e,t,n,r){if(typeof e.setBigUint64==`function`)return e.setBigUint64(t,n,r);let i=BigInt(32),a=BigInt(4294967295),o=Number(n>>i&a),s=Number(n&a),c=r?4:0,l=r?0:4;e.setUint32(t+c,o,r),e.setUint32(t+l,s,r)}function hs(e,t,n){return e&t^~e&n}function gs(e,t,n){return e&t^e&n^t&n}var _s,vs,ys,bs,xs=o((()=>{Nr(),_s=class extends Mr{constructor(e,t,n,r){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.buffer=new Uint8Array(e),this.view=xr(this.buffer)}update(e){_r(this),e=Er(e),hr(e);let{view:t,buffer:n,blockLen:r}=this,i=e.length;for(let a=0;ar-a&&(this.process(n,0),a=0);for(let e=a;el.length)throw Error(`_sha2: outputLen bigger than state`);for(let e=0;e{xs(),ur(),Nr(),Ss=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Cs=new Uint32Array(64),ws=class extends _s{constructor(e=32){super(64,e,8,!1),this.A=vs[0]|0,this.B=vs[1]|0,this.C=vs[2]|0,this.D=vs[3]|0,this.E=vs[4]|0,this.F=vs[5]|0,this.G=vs[6]|0,this.H=vs[7]|0}get(){let{A:e,B:t,C:n,D:r,E:i,F:a,G:o,H:s}=this;return[e,t,n,r,i,a,o,s]}set(e,t,n,r,i,a,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0,this.F=a|0,this.G=o|0,this.H=s|0}process(e,t){for(let n=0;n<16;n++,t+=4)Cs[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){let t=Cs[e-15],n=Cs[e-2],r=Sr(t,7)^Sr(t,18)^t>>>3;Cs[e]=(Sr(n,17)^Sr(n,19)^n>>>10)+Cs[e-7]+r+Cs[e-16]|0}let{A:n,B:r,C:i,D:a,E:o,F:s,G:c,H:l}=this;for(let e=0;e<64;e++){let t=Sr(o,6)^Sr(o,11)^Sr(o,25),u=l+t+hs(o,s,c)+Ss[e]+Cs[e]|0,d=(Sr(n,2)^Sr(n,13)^Sr(n,22))+gs(n,r,i)|0;l=c,c=s,s=o,o=a+u|0,a=i,i=r,r=n,n=u+d|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,a=a+this.D|0,o=o+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,i,a,o,s,c,l)}roundClean(){br(Cs)}destroy(){this.set(0,0,0,0,0,0,0,0),br(this.buffer)}},Ts=(()=>Wn(`0x428a2f98d728ae22.0x7137449123ef65cd.0xb5c0fbcfec4d3b2f.0xe9b5dba58189dbbc.0x3956c25bf348b538.0x59f111f1b605d019.0x923f82a4af194f9b.0xab1c5ed5da6d8118.0xd807aa98a3030242.0x12835b0145706fbe.0x243185be4ee4b28c.0x550c7dc3d5ffb4e2.0x72be5d74f27b896f.0x80deb1fe3b1696b1.0x9bdc06a725c71235.0xc19bf174cf692694.0xe49b69c19ef14ad2.0xefbe4786384f25e3.0x0fc19dc68b8cd5b5.0x240ca1cc77ac9c65.0x2de92c6f592b0275.0x4a7484aa6ea6e483.0x5cb0a9dcbd41fbd4.0x76f988da831153b5.0x983e5152ee66dfab.0xa831c66d2db43210.0xb00327c898fb213f.0xbf597fc7beef0ee4.0xc6e00bf33da88fc2.0xd5a79147930aa725.0x06ca6351e003826f.0x142929670a0e6e70.0x27b70a8546d22ffc.0x2e1b21385c26c926.0x4d2c6dfc5ac42aed.0x53380d139d95b3df.0x650a73548baf63de.0x766a0abb3c77b2a8.0x81c2c92e47edaee6.0x92722c851482353b.0xa2bfe8a14cf10364.0xa81a664bbc423001.0xc24b8b70d0f89791.0xc76c51a30654be30.0xd192e819d6ef5218.0xd69906245565a910.0xf40e35855771202a.0x106aa07032bbd1b8.0x19a4c116b8d2d0c8.0x1e376c085141ab53.0x2748774cdf8eeb99.0x34b0bcb5e19b48a8.0x391c0cb3c5c95a63.0x4ed8aa4ae3418acb.0x5b9cca4f7763e373.0x682e6ff3d6b2b8a3.0x748f82ee5defb2fc.0x78a5636f43172f60.0x84c87814a1f0ab72.0x8cc702081a6439ec.0x90befffa23631e28.0xa4506cebde82bde9.0xbef9a3f7b2c67915.0xc67178f2e372532b.0xca273eceea26619c.0xd186b8c721c0c207.0xeada7dd6cde0eb1e.0xf57d4f7fee6ed178.0x06f067aa72176fba.0x0a637dc5a2c898a6.0x113f9804bef90dae.0x1b710b35131c471b.0x28db77f523047d84.0x32caab7b40c72493.0x3c9ebe0a15c9bebc.0x431d67c49c100d4c.0x4cc5d4becb3e42b6.0x597f299cfc657e2a.0x5fcb6fab3ad6faec.0x6c44198c4a475817`.split(`.`).map(e=>BigInt(e))))(),Es=(()=>Ts[0])(),Ds=(()=>Ts[1])(),Os=new Uint32Array(80),ks=new Uint32Array(80),As=class extends _s{constructor(e=64){super(128,e,16,!1),this.Ah=bs[0]|0,this.Al=bs[1]|0,this.Bh=bs[2]|0,this.Bl=bs[3]|0,this.Ch=bs[4]|0,this.Cl=bs[5]|0,this.Dh=bs[6]|0,this.Dl=bs[7]|0,this.Eh=bs[8]|0,this.El=bs[9]|0,this.Fh=bs[10]|0,this.Fl=bs[11]|0,this.Gh=bs[12]|0,this.Gl=bs[13]|0,this.Hh=bs[14]|0,this.Hl=bs[15]|0}get(){let{Ah:e,Al:t,Bh:n,Bl:r,Ch:i,Cl:a,Dh:o,Dl:s,Eh:c,El:l,Fh:u,Fl:d,Gh:f,Gl:p,Hh:m,Hl:h}=this;return[e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h]}set(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=r|0,this.Ch=i|0,this.Cl=a|0,this.Dh=o|0,this.Dl=s|0,this.Eh=c|0,this.El=l|0,this.Fh=u|0,this.Fl=d|0,this.Gh=f|0,this.Gl=p|0,this.Hh=m|0,this.Hl=h|0}process(e,t){for(let n=0;n<16;n++,t+=4)Os[n]=e.getUint32(t),ks[n]=e.getUint32(t+=4);for(let e=16;e<80;e++){let t=Os[e-15]|0,n=ks[e-15]|0,r=Xn(t,n,1)^Xn(t,n,8)^Jn(t,n,7),i=Zn(t,n,1)^Zn(t,n,8)^Yn(t,n,7),a=Os[e-2]|0,o=ks[e-2]|0,s=Xn(a,o,19)^Qn(a,o,61)^Jn(a,o,6),c=Zn(a,o,19)^$n(a,o,61)^Yn(a,o,6),l=or(i,c,ks[e-7],ks[e-16]);Os[e]=sr(l,r,s,Os[e-7],Os[e-16])|0,ks[e]=l|0}let{Ah:n,Al:r,Bh:i,Bl:a,Ch:o,Cl:s,Dh:c,Dl:l,Eh:u,El:d,Fh:f,Fl:p,Gh:m,Gl:h,Hh:g,Hl:_}=this;for(let e=0;e<80;e++){let t=Xn(u,d,14)^Xn(u,d,18)^Qn(u,d,41),v=Zn(u,d,14)^Zn(u,d,18)^$n(u,d,41),y=u&f^~u&m,b=d&p^~d&h,x=cr(_,v,b,Ds[e],ks[e]),S=lr(x,g,t,y,Es[e],Os[e]),C=x|0,w=Xn(n,r,28)^Qn(n,r,34)^Qn(n,r,39),ee=Zn(n,r,28)^$n(n,r,34)^$n(n,r,39),te=n&i^n&o^i&o,ne=r&a^r&s^a&s;g=m|0,_=h|0,m=f|0,h=p|0,f=u|0,p=d|0,{h:u,l:d}=Gn(c|0,l|0,S|0,C|0),c=o|0,l=s|0,o=i|0,s=a|0,i=n|0,a=r|0;let re=ir(C,ee,ne);n=ar(re,S,w,te),r=re|0}({h:n,l:r}=Gn(this.Ah|0,this.Al|0,n|0,r|0)),{h:i,l:a}=Gn(this.Bh|0,this.Bl|0,i|0,a|0),{h:o,l:s}=Gn(this.Ch|0,this.Cl|0,o|0,s|0),{h:c,l}=Gn(this.Dh|0,this.Dl|0,c|0,l|0),{h:u,l:d}=Gn(this.Eh|0,this.El|0,u|0,d|0),{h:f,l:p}=Gn(this.Fh|0,this.Fl|0,f|0,p|0),{h:m,l:h}=Gn(this.Gh|0,this.Gl|0,m|0,h|0),{h:g,l:_}=Gn(this.Hh|0,this.Hl|0,g|0,_|0),this.set(n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)}roundClean(){br(Os,ks)}destroy(){br(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},js=class extends As{constructor(){super(48),this.Ah=ys[0]|0,this.Al=ys[1]|0,this.Bh=ys[2]|0,this.Bl=ys[3]|0,this.Ch=ys[4]|0,this.Cl=ys[5]|0,this.Dh=ys[6]|0,this.Dl=ys[7]|0,this.Eh=ys[8]|0,this.El=ys[9]|0,this.Fh=ys[10]|0,this.Fl=ys[11]|0,this.Gh=ys[12]|0,this.Gl=ys[13]|0,this.Hh=ys[14]|0,this.Hl=ys[15]|0}},Ms=Or(()=>new ws),Ns=Or(()=>new As),Ps=Or(()=>new js)})),Is,Ls,Rs=o((()=>{Nr(),Is=class extends Mr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,gr(e);let n=Er(t);if(this.iHash=e.create(),typeof this.iHash.update!=`function`)throw Error(`Expected instance of class which extends utils.Hash`);this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let r=this.blockLen,i=new Uint8Array(r);i.set(n.length>r?e.create().update(n).digest():n);for(let e=0;enew Is(e,t).update(n).digest(),Ls.create=(e,t)=>new Is(e,t)}));function zs(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function Bs(e){if(!zs(e))throw Error(`Uint8Array expected`)}function Vs(e,t){if(typeof t!=`boolean`)throw Error(e+` boolean expected, got `+t)}function Hs(e){let t=e.toString(16);return t.length&1?`0`+t:t}function Us(e){if(typeof e!=`string`)throw Error(`hex string expected, got `+typeof e);return e===``?oc:BigInt(`0x`+e)}function Ws(e){if(Bs(e),cc)return e.toHex();let t=``;for(let n=0;n=uc._0&&e<=uc._9)return e-uc._0;if(e>=uc.A&&e<=uc.F)return e-(uc.A-10);if(e>=uc.a&&e<=uc.f)return e-(uc.a-10)}function Ks(e){if(typeof e!=`string`)throw Error(`hex string expected, got `+typeof e);if(cc)return Uint8Array.fromHex(e);let t=e.length,n=t/2;if(t%2)throw Error(`hex string expected, got unpadded hex of length `+t);let r=new Uint8Array(n);for(let t=0,i=0;toc;e>>=sc,t+=1);return t}function rc(e,t,n){if(typeof e!=`number`||e<2)throw Error(`hashLen must be a number`);if(typeof t!=`number`||t<2)throw Error(`qByteLen must be a number`);if(typeof n!=`function`)throw Error(`hmacFn must be a function`);let r=pc(e),i=pc(e),a=0,o=()=>{r.fill(1),i.fill(0),a=0},s=(...e)=>n(i,r,...e),c=(e=pc(0))=>{i=s(mc([0]),e),r=s(),e.length!==0&&(i=s(mc([1]),e),r=s())},l=()=>{if(a++>=1e3)throw Error(`drbg: tried 1000 values`);let e=0,n=[];for(;e{o(),c(e);let n;for(;!(n=t(l()));)c();return o(),n}}function ic(e,t,n={}){let r=(t,n,r)=>{let i=hc[n];if(typeof i!=`function`)throw Error(`invalid validator function`);let a=e[t];if(!(r&&a===void 0)&&!i(a,e))throw Error(`param `+String(t)+` is invalid. Expected `+n+`, got `+a)};for(let[e,n]of Object.entries(t))r(e,n,!1);for(let[e,t]of Object.entries(n))r(e,t,!0);return e}function ac(e){let t=new WeakMap;return(n,...r)=>{let i=t.get(n);if(i!==void 0)return i;let a=e(n,...r);return t.set(n,a),a}}var oc,sc,cc,lc,uc,dc,fc,pc,mc,hc,gc=o((()=>{oc=BigInt(0),sc=BigInt(1),cc=typeof Uint8Array.from([]).toHex==`function`&&typeof Uint8Array.fromHex==`function`,lc=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`)),uc={_0:48,_9:57,A:65,F:70,a:97,f:102},dc=e=>typeof e==`bigint`&&oc<=e,fc=e=>(sc<new Uint8Array(e),mc=e=>Uint8Array.from(e),hc={bigint:e=>typeof e==`bigint`,function:e=>typeof e==`function`,boolean:e=>typeof e==`boolean`,string:e=>typeof e==`string`,stringOrUint8Array:e=>typeof e==`string`||zs(e),isSafeInteger:e=>Number.isSafeInteger(e),array:e=>Array.isArray(e),field:(e,t)=>t.Fp.isValid(e),hash:e=>typeof e==`function`&&Number.isSafeInteger(e.outputLen)}}));function _c(e,t){let n=e%t;return n>=Nc?n:t+n}function vc(e,t,n){let r=e;for(;t-- >Nc;)r*=r,r%=n;return r}function yc(e,t){if(e===Nc)throw Error(`invert: expected non-zero number`);if(t<=Nc)throw Error(`invert: expected positive modulus, got `+t);let n=_c(e,t),r=t,i=Nc,a=Pc,o=Pc,s=Nc;for(;n!==Nc;){let e=r/n,t=r%n,c=i-o*e,l=a-s*e;r=n,n=t,i=o,a=s,o=c,s=l}if(r!==Pc)throw Error(`invert: does not exist`);return _c(i,t)}function bc(e,t){let n=(e.ORDER+Pc)/Lc,r=e.pow(t,n);if(!e.eql(e.sqr(r),t))throw Error(`Cannot find square root`);return r}function xc(e,t){let n=(e.ORDER-Rc)/zc,r=e.mul(t,Fc),i=e.pow(r,n),a=e.mul(t,i),o=e.mul(e.mul(a,Fc),i),s=e.mul(a,e.sub(o,e.ONE));if(!e.eql(e.sqr(s),t))throw Error(`Cannot find square root`);return s}function Sc(e){if(e1e3)throw Error(`Cannot find square root: probably non-prime P`);if(n===1)return bc;let a=i.pow(r,t),o=(t+Pc)/Fc;return function(e,r){if(e.is0(r))return r;if(Dc(e,r)!==1)throw Error(`Cannot find square root`);let i=n,s=e.mul(e.ONE,a),c=e.pow(r,t),l=e.pow(r,o);for(;!e.eql(c,e.ONE);){if(e.is0(c))return e.ZERO;let t=1,n=e.sqr(c);for(;!e.eql(n,e.ONE);)if(t++,n=e.sqr(n),t===i)throw Error(`Cannot find square root`);let r=Pc<(e[t]=`function`,e),{ORDER:`bigint`,MASK:`bigint`,BYTES:`isSafeInteger`,BITS:`isSafeInteger`});return ic(e,t)}function Tc(e,t,n){if(nNc;)n&Pc&&(r=e.mul(r,i)),i=e.sqr(i),n>>=Pc;return r}function Ec(e,t,n=!1){let r=Array(t.length).fill(n?e.ZERO:void 0),i=t.reduce((t,n,i)=>e.is0(n)?t:(r[i]=t,e.mul(t,n)),e.ONE),a=e.inv(i);return t.reduceRight((t,n,i)=>e.is0(n)?t:(r[i]=e.mul(t,r[i]),e.mul(t,n)),a),r}function Dc(e,t){let n=(e.ORDER-Pc)/Fc,r=e.pow(t,n),i=e.eql(r,e.ONE),a=e.eql(r,e.ZERO),o=e.eql(r,e.neg(e.ONE));if(!i&&!a&&!o)throw Error(`invalid Legendre symbol result`);return i?1:a?0:-1}function Oc(e,t){t!==void 0&&mr(t);let n=t===void 0?e.toString(2).length:t,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function kc(e,t,n=!1,r={}){if(e<=Nc)throw Error(`invalid field: expected ORDER > 0, got `+e);let{nBitLength:i,nByteLength:a}=Oc(e,t);if(a>2048)throw Error(`invalid field: expected ORDER of <= 2048 bytes`);let o,s=Object.freeze({ORDER:e,isLE:n,BITS:i,BYTES:a,MASK:fc(i),ZERO:Nc,ONE:Pc,create:t=>_c(t,e),isValid:t=>{if(typeof t!=`bigint`)throw Error(`invalid field element: expected bigint, got `+typeof t);return Nc<=t&&te===Nc,isOdd:e=>(e&Pc)===Pc,neg:t=>_c(-t,e),eql:(e,t)=>e===t,sqr:t=>_c(t*t,e),add:(t,n)=>_c(t+n,e),sub:(t,n)=>_c(t-n,e),mul:(t,n)=>_c(t*n,e),pow:(e,t)=>Tc(s,e,t),div:(t,n)=>_c(t*yc(n,e),e),sqrN:e=>e*e,addN:(e,t)=>e+t,subN:(e,t)=>e-t,mulN:(e,t)=>e*t,inv:t=>yc(t,e),sqrt:r.sqrt||(t=>(o||=Cc(e),o(s,t))),toBytes:e=>n?Xs(e,a):Ys(e,a),fromBytes:e=>{if(e.length!==a)throw Error(`Field.fromBytes: expected `+a+` bytes, got `+e.length);return n?Js(e):qs(e)},invertBatch:e=>Ec(s,e),cmov:(e,t,n)=>n?t:e});return Object.freeze(s)}function Ac(e){if(typeof e!=`bigint`)throw Error(`field order must be bigint`);let t=e.toString(2).length;return Math.ceil(t/8)}function jc(e){let t=Ac(e);return t+Math.ceil(t/2)}function Mc(e,t,n=!1){let r=e.length,i=Ac(t),a=jc(t);if(r<16||r1024)throw Error(`expected `+a+`-1024 bytes of input, got `+r);let o=n?Js(e):qs(e),s=_c(o,t-Pc)+Pc;return n?Xs(s,i):Ys(s,i)}var Nc,Pc,Fc,Ic,Lc,Rc,zc,Bc,Vc=o((()=>{Nr(),gc(),Nc=BigInt(0),Pc=BigInt(1),Fc=BigInt(2),Ic=BigInt(3),Lc=BigInt(4),Rc=BigInt(5),zc=BigInt(8),Bc=[`create`,`isValid`,`is0`,`neg`,`inv`,`sqrt`,`sqr`,`eql`,`add`,`sub`,`mul`,`pow`,`div`,`addN`,`subN`,`mulN`,`sqrN`]}));function Hc(e,t){let n=t.negate();return e?n:t}function Uc(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw Error(`invalid window size, expected [1..`+t+`], got W=`+e)}function Wc(e,t){Uc(e,t);let n=Math.ceil(t/e)+1,r=2**(e-1),i=2**e,a=fc(e),o=BigInt(e);return{windows:n,windowSize:r,mask:a,maxNumber:i,shiftBy:o}}function Gc(e,t,n){let{windowSize:r,mask:i,maxNumber:a,shiftBy:o}=n,s=Number(e&i),c=e>>o;s>r&&(s-=a,c+=$c);let l=t*r,u=l+Math.abs(s)-1,d=s===0,f=s<0,p=t%2!=0;return{nextN:c,offset:u,isZero:d,isNeg:f,isNegF:p,offsetF:l}}function Kc(e,t){if(!Array.isArray(e))throw Error(`array expected`);e.forEach((e,n)=>{if(!(e instanceof t))throw Error(`invalid point at index `+n)})}function qc(e,t){if(!Array.isArray(e))throw Error(`array of scalars expected`);e.forEach((e,n)=>{if(!t.isValid(e))throw Error(`invalid scalar at index `+n)})}function Jc(e){return tl.get(e)||1}function Yc(e,t){return{constTimeNegate:Hc,hasPrecomputes(e){return Jc(e)!==1},unsafeLadder(t,n,r=e.ZERO){let i=t;for(;n>Qc;)n&$c&&(r=r.add(i)),i=i.double(),n>>=$c;return r},precomputeWindow(e,n){let{windows:r,windowSize:i}=Wc(n,t),a=[],o=e,s=o;for(let e=0;e12?c=s-3:s>4?c=s-2:s>0&&(c=2);let l=fc(c),u=Array(Number(l)+1).fill(o),d=Math.floor((t.BITS-1)/c)*c,f=o;for(let e=d;e>=0;e-=c){u.fill(o);for(let t=0;t>BigInt(e)&l);u[a]=u[a].add(n[t])}let t=o;for(let e=u.length-1,n=o;e>0;e--)n=n.add(u[e]),t=t.add(n);if(f=f.add(t),e!==0)for(let e=0;e{Vc(),gc(),Qc=BigInt(0),$c=BigInt(1),el=new WeakMap,tl=new WeakMap}));function rl(e){e.lowS!==void 0&&Vs(`lowS`,e.lowS),e.prehash!==void 0&&Vs(`prehash`,e.prehash)}function il(e){let t=Zc(e);ic(t,{a:`field`,b:`field`},{allowInfinityPoint:`boolean`,allowedPrivateKeyLengths:`array`,clearCofactor:`function`,fromBytes:`function`,isTorsionFree:`function`,toBytes:`function`,wrapPrivateKey:`boolean`});let{endo:n,Fp:r,a:i}=t;if(n){if(!r.eql(i,r.ZERO))throw Error(`invalid endo: CURVE.a must be 0`);if(typeof n!=`object`||typeof n.beta!=`bigint`||typeof n.splitScalar!=`function`)throw Error(`invalid endo: expected "beta": bigint and "splitScalar": function`)}return Object.freeze({...t})}function al(e,t){return Ws(Ys(e,t))}function ol(e){let t=il(e),{Fp:n}=t,r=kc(t.n,t.nBitLength),i=t.toBytes||((e,t,r)=>{let i=t.toAffine();return Qs(Uint8Array.from([4]),n.toBytes(i.x),n.toBytes(i.y))}),a=t.fromBytes||(e=>{let t=e.subarray(1),r=n.fromBytes(t.subarray(0,n.BYTES)),i=n.fromBytes(t.subarray(n.BYTES,2*n.BYTES));return{x:r,y:i}});function o(e){let{a:r,b:i}=t,a=n.sqr(e),o=n.mul(a,e);return n.add(n.add(o,n.mul(e,r)),i)}function s(e,t){let r=n.sqr(t),i=o(e);return n.eql(r,i)}if(!s(t.Gx,t.Gy))throw Error(`bad curve params: generator point`);let c=n.mul(n.pow(t.a,gl),_l),l=n.mul(n.sqr(t.b),BigInt(27));if(n.is0(n.add(c,l)))throw Error(`bad curve params: a or b`);function u(e){return ec(e,ml,t.n)}function d(e){let{allowedPrivateKeyLengths:n,nByteLength:r,wrapPrivateKey:i,n:a}=t;if(n&&typeof e!=`bigint`){if(zs(e)&&(e=Ws(e)),typeof e!=`string`||!n.includes(e.length))throw Error(`invalid private key`);e=e.padStart(r*2,`0`)}let o;try{o=typeof e==`bigint`?e:qs(Zs(`private key`,e,r))}catch{throw Error(`invalid private key, expected hex or `+r+` bytes, got `+typeof e)}return i&&(o=_c(o,a)),tc(`private key`,o,ml,a),o}function f(e){if(!(e instanceof h))throw Error(`ProjectivePoint expected`)}let p=ac((e,t)=>{let{px:r,py:i,pz:a}=e;if(n.eql(a,n.ONE))return{x:r,y:i};let o=e.is0();t??=o?n.ONE:n.inv(a);let s=n.mul(r,t),c=n.mul(i,t),l=n.mul(a,t);if(o)return{x:n.ZERO,y:n.ZERO};if(!n.eql(l,n.ONE))throw Error(`invZ was invalid`);return{x:s,y:c}}),m=ac(e=>{if(e.is0()){if(t.allowInfinityPoint&&!n.is0(e.py))return;throw Error(`bad point: ZERO`)}let{x:r,y:i}=e.toAffine();if(!n.isValid(r)||!n.isValid(i))throw Error(`bad point: x or y not FE`);if(!s(r,i))throw Error(`bad point: equation left != right`);if(!e.isTorsionFree())throw Error(`bad point: not in prime-order subgroup`);return!0});class h{constructor(e,t,r){if(e==null||!n.isValid(e))throw Error(`x required`);if(t==null||!n.isValid(t)||n.is0(t))throw Error(`y required`);if(r==null||!n.isValid(r))throw Error(`z required`);this.px=e,this.py=t,this.pz=r,Object.freeze(this)}static fromAffine(e){let{x:t,y:r}=e||{};if(!e||!n.isValid(t)||!n.isValid(r))throw Error(`invalid affine point`);if(e instanceof h)throw Error(`projective point not allowed`);let i=e=>n.eql(e,n.ZERO);return i(t)&&i(r)?h.ZERO:new h(t,r,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(e){let t=Ec(n,e.map(e=>e.pz));return e.map((e,n)=>e.toAffine(t[n])).map(h.fromAffine)}static fromHex(e){let t=h.fromAffine(a(Zs(`pointHex`,e)));return t.assertValidity(),t}static fromPrivateKey(e){return h.BASE.multiply(d(e))}static msm(e,t){return Xc(h,r,e,t)}_setWindowSize(e){v.setWindowSize(this,e)}assertValidity(){m(this)}hasEvenY(){let{y:e}=this.toAffine();if(n.isOdd)return!n.isOdd(e);throw Error(`Field doesn't support isOdd`)}equals(e){f(e);let{px:t,py:r,pz:i}=this,{px:a,py:o,pz:s}=e,c=n.eql(n.mul(t,s),n.mul(a,i)),l=n.eql(n.mul(r,s),n.mul(o,i));return c&&l}negate(){return new h(this.px,n.neg(this.py),this.pz)}double(){let{a:e,b:r}=t,i=n.mul(r,gl),{px:a,py:o,pz:s}=this,c=n.ZERO,l=n.ZERO,u=n.ZERO,d=n.mul(a,a),f=n.mul(o,o),p=n.mul(s,s),m=n.mul(a,o);return m=n.add(m,m),u=n.mul(a,s),u=n.add(u,u),c=n.mul(e,u),l=n.mul(i,p),l=n.add(c,l),c=n.sub(f,l),l=n.add(f,l),l=n.mul(c,l),c=n.mul(m,c),u=n.mul(i,u),p=n.mul(e,p),m=n.sub(d,p),m=n.mul(e,m),m=n.add(m,u),u=n.add(d,d),d=n.add(u,d),d=n.add(d,p),d=n.mul(d,m),l=n.add(l,d),p=n.mul(o,s),p=n.add(p,p),d=n.mul(p,m),c=n.sub(c,d),u=n.mul(p,f),u=n.add(u,u),u=n.add(u,u),new h(c,l,u)}add(e){f(e);let{px:r,py:i,pz:a}=this,{px:o,py:s,pz:c}=e,l=n.ZERO,u=n.ZERO,d=n.ZERO,p=t.a,m=n.mul(t.b,gl),g=n.mul(r,o),_=n.mul(i,s),v=n.mul(a,c),y=n.add(r,i),b=n.add(o,s);y=n.mul(y,b),b=n.add(g,_),y=n.sub(y,b),b=n.add(r,a);let x=n.add(o,c);return b=n.mul(b,x),x=n.add(g,v),b=n.sub(b,x),x=n.add(i,a),l=n.add(s,c),x=n.mul(x,l),l=n.add(_,v),x=n.sub(x,l),d=n.mul(p,b),l=n.mul(m,v),d=n.add(l,d),l=n.sub(_,d),d=n.add(_,d),u=n.mul(l,d),_=n.add(g,g),_=n.add(_,g),v=n.mul(p,v),b=n.mul(m,b),_=n.add(_,v),v=n.sub(g,v),v=n.mul(p,v),b=n.add(b,v),g=n.mul(_,b),u=n.add(u,g),g=n.mul(x,b),l=n.mul(y,l),l=n.sub(l,g),g=n.mul(y,_),d=n.mul(x,d),d=n.add(d,g),new h(l,u,d)}subtract(e){return this.add(e.negate())}is0(){return this.equals(h.ZERO)}wNAF(e){return v.wNAFCached(this,e,h.normalizeZ)}multiplyUnsafe(e){let{endo:r,n:i}=t;tc(`scalar`,e,pl,i);let a=h.ZERO;if(e===pl)return a;if(this.is0()||e===ml)return this;if(!r||v.hasPrecomputes(this))return v.wNAFCachedUnsafe(this,e,h.normalizeZ);let{k1neg:o,k1:s,k2neg:c,k2:l}=r.splitScalar(e),u=a,d=a,f=this;for(;s>pl||l>pl;)s&ml&&(u=u.add(f)),l&ml&&(d=d.add(f)),f=f.double(),s>>=ml,l>>=ml;return o&&(u=u.negate()),c&&(d=d.negate()),d=new h(n.mul(d.px,r.beta),d.py,d.pz),u.add(d)}multiply(e){let{endo:r,n:i}=t;tc(`scalar`,e,ml,i);let a,o;if(r){let{k1neg:t,k1:i,k2neg:s,k2:c}=r.splitScalar(e),{p:l,f:u}=this.wNAF(i),{p:d,f}=this.wNAF(c);l=v.constTimeNegate(t,l),d=v.constTimeNegate(s,d),d=new h(n.mul(d.px,r.beta),d.py,d.pz),a=l.add(d),o=u.add(f)}else{let{p:t,f:n}=this.wNAF(e);a=t,o=n}return h.normalizeZ([a,o])[0]}multiplyAndAddUnsafe(e,t,n){let r=h.BASE,i=(e,t)=>t===pl||t===ml||!e.equals(r)?e.multiplyUnsafe(t):e.multiply(t),a=i(this,t).add(i(e,n));return a.is0()?void 0:a}toAffine(e){return p(this,e)}isTorsionFree(){let{h:e,isTorsionFree:n}=t;if(e===ml)return!0;if(n)return n(h,this);throw Error(`isTorsionFree() has not been declared for the elliptic curve`)}clearCofactor(){let{h:e,clearCofactor:n}=t;return e===ml?this:n?n(h,this):this.multiplyUnsafe(t.h)}toRawBytes(e=!0){return Vs(`isCompressed`,e),this.assertValidity(),i(h,this,e)}toHex(e=!0){return Vs(`isCompressed`,e),Ws(this.toRawBytes(e))}}h.BASE=new h(t.Gx,t.Gy,n.ONE),h.ZERO=new h(n.ZERO,n.ONE,n.ZERO);let{endo:g,nBitLength:_}=t,v=Yc(h,g?Math.ceil(_/2):_);return{CURVE:t,ProjectivePoint:h,normPrivateKeyToScalar:d,weierstrassEquation:o,isWithinCurveOrder:u}}function sl(e){let t=Zc(e);return ic(t,{hash:`hash`,hmac:`function`,randomBytes:`function`},{bits2int:`function`,bits2int_modN:`function`,lowS:`boolean`}),Object.freeze({lowS:!0,...t})}function cl(e){let t=sl(e),{Fp:n,n:r,nByteLength:i,nBitLength:a}=t,o=n.BYTES+1,s=2*n.BYTES+1;function c(e){return _c(e,r)}function l(e){return yc(e,r)}let{ProjectivePoint:u,normPrivateKeyToScalar:d,weierstrassEquation:f,isWithinCurveOrder:p}=ol({...t,toBytes(e,t,r){let i=t.toAffine(),a=n.toBytes(i.x),o=Qs;return Vs(`isCompressed`,r),r?o(Uint8Array.from([t.hasEvenY()?2:3]),a):o(Uint8Array.from([4]),a,n.toBytes(i.y))},fromBytes(e){let t=e.length,r=e[0],i=e.subarray(1);if(t===o&&(r===2||r===3)){let e=qs(i);if(!ec(e,ml,n.ORDER))throw Error(`Point is not on curve`);let t=f(e),a;try{a=n.sqrt(t)}catch(e){let t=e instanceof Error?`: `+e.message:``;throw Error(`Point is not on curve`+t)}let o=(a&ml)===ml;return(r&1)==1!==o&&(a=n.neg(a)),{x:e,y:a}}else if(t===s&&r===4){let e=n.fromBytes(i.subarray(0,n.BYTES)),t=n.fromBytes(i.subarray(n.BYTES,2*n.BYTES));return{x:e,y:t}}else{let e=o,n=s;throw Error(`invalid Point, expected length of `+e+`, or uncompressed `+n+`, got `+t)}}});function m(e){let t=r>>ml;return e>t}function h(e){return m(e)?c(-e):e}let g=(e,t,n)=>qs(e.slice(t,n));class _{constructor(e,t,n){tc(`r`,e,ml,r),tc(`s`,t,ml,r),this.r=e,this.s=t,n!=null&&(this.recovery=n),Object.freeze(this)}static fromCompact(e){let t=i;return e=Zs(`compactSignature`,e,t*2),new _(g(e,0,t),g(e,t,2*t))}static fromDER(e){let{r:t,s:n}=fl.toSig(Zs(`DER`,e));return new _(t,n)}assertValidity(){}addRecoveryBit(e){return new _(this.r,this.s,e)}recoverPublicKey(e){let{r,s:i,recovery:a}=this,o=C(Zs(`msgHash`,e));if(a==null||![0,1,2,3].includes(a))throw Error(`recovery id invalid`);let s=a===2||a===3?r+t.n:r;if(s>=n.ORDER)throw Error(`recovery id 2 or 3 invalid`);let d=a&1?`03`:`02`,f=u.fromHex(d+al(s,n.BYTES)),p=l(s),m=c(-o*p),h=c(i*p),g=u.BASE.multiplyAndAddUnsafe(f,m,h);if(!g)throw Error(`point at infinify`);return g.assertValidity(),g}hasHighS(){return m(this.s)}normalizeS(){return this.hasHighS()?new _(this.r,c(-this.s),this.recovery):this}toDERRawBytes(){return Ks(this.toDERHex())}toDERHex(){return fl.hexFromSig(this)}toCompactRawBytes(){return Ks(this.toCompactHex())}toCompactHex(){let e=i;return al(this.r,e)+al(this.s,e)}}let v={isValidPrivateKey(e){try{return d(e),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{let e=jc(t.n);return Mc(t.randomBytes(e),t.n)},precompute(e=8,t=u.BASE){return t._setWindowSize(e),t.multiply(BigInt(3)),t}};function y(e,t=!0){return u.fromPrivateKey(e).toRawBytes(t)}function b(e){if(typeof e==`bigint`)return!1;if(e instanceof u)return!0;let r=Zs(`key`,e).length,a=n.BYTES,o=a+1,s=2*a+1;if(!(t.allowedPrivateKeyLengths||i===o))return r===o||r===s}function x(e,t,n=!0){if(b(e)===!0)throw Error(`first arg must be private key`);if(b(t)===!1)throw Error(`second arg must be public key`);return u.fromHex(t).multiply(d(e)).toRawBytes(n)}let S=t.bits2int||function(e){if(e.length>8192)throw Error(`input is too large`);let t=qs(e),n=e.length*8-a;return n>0?t>>BigInt(n):t},C=t.bits2int_modN||function(e){return c(S(e))},w=fc(a);function ee(e){return tc(`num < 2^`+a,e,pl,w),Ys(e,i)}function te(e,r,i=ne){if([`recovered`,`canonical`].some(e=>e in i))throw Error(`sign() legacy options not supported`);let{hash:a,randomBytes:o}=t,{lowS:s,prehash:f,extraEntropy:g}=i;s??=!0,e=Zs(`msgHash`,e),rl(i),f&&(e=Zs(`prehashed msgHash`,a(e)));let v=C(e),y=d(r),b=[ee(y),ee(v)];if(g!=null&&g!==!1){let e=g===!0?o(n.BYTES):g;b.push(Zs(`extraEntropy`,e))}let x=Qs(...b),w=v;function te(e){let t=S(e);if(!p(t))return;let n=l(t),r=u.BASE.multiply(t).toAffine(),i=c(r.x);if(i===pl)return;let a=c(n*c(w+i*y));if(a===pl)return;let o=(r.x===i?0:2)|Number(r.y&ml),d=a;return s&&m(a)&&(d=h(a),o^=1),new _(i,d,o)}return{seed:x,k2sig:te}}let ne={lowS:t.lowS,prehash:!1},re={lowS:t.lowS,prehash:!1};function ie(e,n,r=ne){let{seed:i,k2sig:a}=te(e,n,r),o=t;return rc(o.hash.outputLen,o.nByteLength,o.hmac)(i,a)}u.BASE._setWindowSize(8);function ae(e,n,r,i=re){let a=e;n=Zs(`msgHash`,n),r=Zs(`publicKey`,r);let{lowS:o,prehash:s,format:d}=i;if(rl(i),`strict`in i)throw Error(`options.strict was renamed to lowS`);if(d!==void 0&&d!==`compact`&&d!==`der`)throw Error(`format must be compact or der`);let f=typeof a==`string`||zs(a),p=!f&&!d&&typeof a==`object`&&!!a&&typeof a.r==`bigint`&&typeof a.s==`bigint`;if(!f&&!p)throw Error(`invalid signature, expected Uint8Array, hex string or Signature instance`);let m,h;try{if(p&&(m=new _(a.r,a.s)),f){try{d!==`compact`&&(m=_.fromDER(a))}catch(e){if(!(e instanceof fl.Err))throw e}!m&&d!==`der`&&(m=_.fromCompact(a))}h=u.fromHex(r)}catch{return!1}if(!m||o&&m.hasHighS())return!1;s&&(n=t.hash(n));let{r:g,s:v}=m,y=C(n),b=l(v),x=c(y*b),S=c(g*b),w=u.BASE.multiplyAndAddUnsafe(h,x,S)?.toAffine();return w?c(w.x)===g:!1}return{CURVE:t,getPublicKey:y,getSharedSecret:x,sign:ie,verify:ae,ProjectivePoint:u,Signature:_,utils:v}}function ll(e,t){let n=e.ORDER,r=pl;for(let e=n-ml;e%hl===pl;e/=hl)r+=ml;let i=r,a=hl<{let r=d,a=e.pow(n,l),o=e.sqr(a);o=e.mul(o,n);let s=e.mul(t,o);s=e.pow(s,c),s=e.mul(s,a),a=e.mul(s,n),o=e.mul(s,t);let p=e.mul(o,a);s=e.pow(p,u);let m=e.eql(s,e.ONE);a=e.mul(o,f),s=e.mul(p,r),o=e.cmov(a,o,m),p=e.cmov(s,p,m);for(let t=i;t>ml;t--){let n=t-hl;n=hl<{let a=e.sqr(i),o=e.mul(t,i);a=e.mul(a,o);let s=e.pow(a,n);s=e.mul(s,o);let c=e.mul(s,r),l=e.mul(e.sqr(s),i),u=e.eql(l,t),d=e.cmov(c,s,u);return{isValid:u,value:d}}}return p}function ul(e,t){if(wc(e),!e.isValid(t.A)||!e.isValid(t.B)||!e.isValid(t.Z))throw Error(`mapToCurveSimpleSWU: invalid opts`);let n=ll(e,t.Z);if(!e.isOdd)throw Error(`Fp.isOdd is not implemented!`);return r=>{let i,a,o,s,c,l,u,d;i=e.sqr(r),i=e.mul(i,t.Z),a=e.sqr(i),a=e.add(a,i),o=e.add(a,e.ONE),o=e.mul(o,t.B),s=e.cmov(t.Z,e.neg(a),!e.eql(a,e.ZERO)),s=e.mul(s,t.A),a=e.sqr(o),l=e.sqr(s),c=e.mul(l,t.A),a=e.add(a,c),a=e.mul(a,o),l=e.mul(l,s),c=e.mul(l,t.B),a=e.add(a,c),u=e.mul(i,o);let{isValid:f,value:p}=n(a,l);d=e.mul(i,r),d=e.mul(d,p),u=e.cmov(u,o,f),d=e.cmov(d,p,f);let m=e.isOdd(r)===e.isOdd(d);d=e.cmov(e.neg(d),d,m);let h=Ec(e,[s],!0)[0];return u=e.mul(u,h),{x:u,y:d}}}var dl,fl,pl,ml,hl,gl,_l,vl=o((()=>{nl(),Vc(),gc(),dl=class extends Error{constructor(e=``){super(e)}},fl={Err:dl,_tlv:{encode:(e,t)=>{let{Err:n}=fl;if(e<0||e>256)throw new n(`tlv.encode: wrong tag`);if(t.length&1)throw new n(`tlv.encode: unpadded data`);let r=t.length/2,i=Hs(r);if(i.length/2&128)throw new n(`tlv.encode: long form length too big`);let a=r>127?Hs(i.length/2|128):``;return Hs(e)+a+i+t},decode(e,t){let{Err:n}=fl,r=0;if(e<0||e>256)throw new n(`tlv.encode: wrong tag`);if(t.length<2||t[r++]!==e)throw new n(`tlv.decode: wrong tlv`);let i=t[r++],a=!!(i&128),o=0;if(!a)o=i;else{let e=i&127;if(!e)throw new n(`tlv.decode(long): indefinite length not supported`);if(e>4)throw new n(`tlv.decode(long): byte length is too big`);let a=t.subarray(r,r+e);if(a.length!==e)throw new n(`tlv.decode: length bytes not complete`);if(a[0]===0)throw new n(`tlv.decode(long): zero leftmost byte`);for(let e of a)o=o<<8|e;if(r+=e,o<128)throw new n(`tlv.decode(long): not minimal encoding`)}let s=t.subarray(r,r+o);if(s.length!==o)throw new n(`tlv.decode: wrong value length`);return{v:s,l:t.subarray(r+o)}}},_int:{encode(e){let{Err:t}=fl;if(eLs(e,t,Dr(...n)),randomBytes:kr}}function bl(e,t){let n=t=>cl({...e,...yl(t)});return{...n(t),create:n}}var xl=o((()=>{Rs(),Nr(),vl()}));function Sl(e,t){if(wl(e),wl(t),e<0||e>=1<<8*t)throw Error(`invalid I2OSP input: `+e);let n=Array.from({length:t}).fill(0);for(let r=t-1;r>=0;r--)n[r]=e&255,e>>>=8;return new Uint8Array(n)}function Cl(e,t){let n=new Uint8Array(e.length);for(let r=0;r255&&(t=r(Qs($s(`H2C-OVERSIZE-DST-`),t)));let{outputLen:i,blockLen:a}=r,o=Math.ceil(n/i);if(n>65535||o>255)throw Error(`expand_message_xmd: invalid lenInBytes`);let s=Qs(t,Sl(t.length,1)),c=Sl(0,a),l=Sl(n,2),u=Array(o),d=r(Qs(c,e,l,Sl(0,1),s));u[0]=r(Qs(d,Sl(1,1),s));for(let e=1;e<=o;e++){let t=[Cl(d,u[e-1]),Sl(e+1,1),s];u[e]=r(Qs(...t))}return Qs(...u).slice(0,n)}function El(e,t,n,r,i){if(Bs(e),Bs(t),wl(n),t.length>255){let e=Math.ceil(2*r/8);t=i.create({dkLen:e}).update($s(`H2C-OVERSIZE-DST-`)).update(t).digest()}if(n>65535||t.length>255)throw Error(`expand_message_xof: invalid lenInBytes`);return i.create({dkLen:n}).update(e).update(Sl(n,2)).update(t).update(Sl(t.length,1)).digest()}function Dl(e,t,n){ic(n,{DST:`stringOrUint8Array`,p:`bigint`,m:`isSafeInteger`,k:`isSafeInteger`,hash:`hash`});let{p:r,k:i,m:a,hash:o,expand:s,DST:c}=n;Bs(e),wl(t);let l=typeof c==`string`?$s(c):c,u=r.toString(2).length,d=Math.ceil((u+i)/8),f=t*a*d,p;if(s===`xmd`)p=Tl(e,l,f,o);else if(s===`xof`)p=El(e,l,f,i,o);else if(s===`_internal_pass`)p=e;else throw Error(`expand must be "xmd" or "xof"`);let m=Array(t);for(let e=0;eArray.from(e).reverse());return(t,r)=>{let[i,a,o,s]=n.map(n=>n.reduce((n,r)=>e.add(e.mul(n,t),r))),[c,l]=Ec(e,[a,s],!0);return t=e.mul(i,c),r=e.mul(r,e.mul(o,l)),{x:t,y:r}}}function kl(e,t,n){if(typeof t!=`function`)throw Error(`mapToCurve() must be defined`);function r(n){return e.fromAffine(t(n))}function i(t){let n=t.clearCofactor();return n.equals(e.ZERO)?e.ZERO:(n.assertValidity(),n)}return{defaults:n,hashToCurve(e,t){let a=Dl(e,2,{...n,DST:n.DST,...t}),o=r(a[0]),s=r(a[1]);return i(o.add(s))},encodeToCurve(e,t){let a=Dl(e,1,{...n,DST:n.encodeDST,...t});return i(r(a[0]))},mapToCurve(e){if(!Array.isArray(e))throw Error(`expected array of bigints`);for(let t of e)if(typeof t!=`bigint`)throw Error(`expected array of bigints`);return i(r(e))}}}var Al,jl=o((()=>{Vc(),gc(),Al=qs})),Ml=c({encodeToCurve:()=>cu,hashToCurve:()=>su,schnorr:()=>ru,secp256k1:()=>Jl,secp256k1_hasher:()=>ou});function Nl(e){let t=Vl,n=BigInt(3),r=BigInt(6),i=BigInt(11),a=BigInt(22),o=BigInt(23),s=BigInt(44),c=BigInt(88),l=e*e*e%t,u=l*l*e%t,d=vc(u,n,t)*u%t,f=vc(d,n,t)*u%t,p=vc(f,Gl,t)*l%t,m=vc(p,i,t)*p%t,h=vc(m,a,t)*m%t,g=vc(h,s,t)*h%t,_=vc(g,c,t)*g%t,v=vc(_,s,t)*h%t,y=vc(v,n,t)*u%t,b=vc(y,o,t)*m%t,x=vc(b,r,t)*l%t,S=vc(x,Gl,t);if(!ql.eql(ql.sqr(S),e))throw Error(`Cannot find square root`);return S}function Pl(e,...t){let n=Yl[e];if(n===void 0){let t=Ms(Uint8Array.from(e,e=>e.charCodeAt(0)));n=Qs(t,t),Yl[e]=n}return Ms(Qs(n,...t))}function Fl(e){let t=Jl.utils.normPrivateKeyToScalar(e),n=eu.fromPrivateKey(t);return{scalar:n.hasEvenY()?t:$l(-t),bytes:Xl(n)}}function Il(e){tc(`x`,e,Wl,Vl);let t=Ql(e*e),n=Ql(t*e+BigInt(7)),r=Nl(n);r%Gl!==Ul&&(r=Ql(-r));let i=new eu(e,r,Wl);return i.assertValidity(),i}function Ll(...e){return $l(nu(Pl(`BIP0340/challenge`,...e)))}function Rl(e){return Fl(e).bytes}function zl(e,t,n=kr(32)){let r=Zs(`message`,e),{bytes:i,scalar:a}=Fl(t),o=Zs(`auxRand`,n,32),s=Zl(a^nu(Pl(`BIP0340/aux`,o))),c=Pl(`BIP0340/nonce`,s,i,r),l=$l(nu(c));if(l===Ul)throw Error(`sign failed: k is zero`);let{bytes:u,scalar:d}=Fl(l),f=Ll(u,i,r),p=new Uint8Array(64);if(p.set(u,0),p.set(Zl($l(d+f*a)),32),!Bl(p,r,i))throw Error(`sign: Invalid signature produced`);return p}function Bl(e,t,n){let r=Zs(`signature`,e,64),i=Zs(`message`,t),a=Zs(`publicKey`,n,32);try{let e=Il(nu(a)),t=nu(r.subarray(0,32));if(!ec(t,Wl,Vl))return!1;let n=nu(r.subarray(32,64));if(!ec(n,Wl,Hl))return!1;let o=Ll(Zl(t),Xl(e),i),s=tu(e,n,$l(-o));return!(!s||!s.hasEvenY()||s.toAffine().x!==t)}catch{return!1}}var Vl,Hl,Ul,Wl,Gl,Kl,ql,Jl,Yl,Xl,Zl,Ql,$l,eu,tu,nu,ru,iu,au,ou,su,cu,lu=o((()=>{Fs(),Nr(),xl(),jl(),Vc(),gc(),vl(),Vl=BigInt(`0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f`),Hl=BigInt(`0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141`),Ul=BigInt(0),Wl=BigInt(1),Gl=BigInt(2),Kl=(e,t)=>(e+t/Gl)/t,ql=kc(Vl,void 0,void 0,{sqrt:Nl}),Jl=bl({a:Ul,b:BigInt(7),Fp:ql,n:Hl,Gx:BigInt(`55066263022277343669578718895168534326250603453777594175500187360389116729240`),Gy:BigInt(`32670510020758816978083085130507043184471273380659243275938904335757337482424`),h:BigInt(1),lowS:!0,endo:{beta:BigInt(`0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee`),splitScalar:e=>{let t=Hl,n=BigInt(`0x3086d221a7d46bcde86c90e49284eb15`),r=-Wl*BigInt(`0xe4437ed6010e88286f547fa90abfe4c3`),i=BigInt(`0x114ca50f7a8e2f3f657c1108d9d44cfd8`),a=n,o=BigInt(`0x100000000000000000000000000000000`),s=Kl(a*e,t),c=Kl(-r*e,t),l=_c(e-s*n-c*i,t),u=_c(-s*r-c*a,t),d=l>o,f=u>o;if(d&&(l=t-l),f&&(u=t-u),l>o||u>o)throw Error(`splitScalar: Endomorphism failed, k=`+e);return{k1neg:d,k1:l,k2neg:f,k2:u}}}},Ms),Yl={},Xl=e=>e.toRawBytes(!0).slice(1),Zl=e=>Ys(e,32),Ql=e=>_c(e,Vl),$l=e=>_c(e,Hl),eu=(()=>Jl.ProjectivePoint)(),tu=(e,t,n)=>eu.BASE.multiplyAndAddUnsafe(e,t,n),nu=qs,ru=(()=>({getPublicKey:Rl,sign:zl,verify:Bl,utils:{randomPrivateKey:Jl.utils.randomPrivateKey,lift_x:Il,pointToBytes:Xl,numberToBytesBE:Ys,bytesToNumberBE:qs,taggedHash:Pl,mod:_c}}))(),iu=(()=>Ol(ql,[[`0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7`,`0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581`,`0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262`,`0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c`],[`0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b`,`0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14`,`0x0000000000000000000000000000000000000000000000000000000000000001`],[`0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c`,`0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3`,`0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931`,`0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84`],[`0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b`,`0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573`,`0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f`,`0x0000000000000000000000000000000000000000000000000000000000000001`]].map(e=>e.map(e=>BigInt(e)))))(),au=(()=>ul(ql,{A:BigInt(`0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533`),B:BigInt(`1771`),Z:ql.create(BigInt(`-11`))}))(),ou=(()=>kl(Jl.ProjectivePoint,e=>{let{x:t,y:n}=au(ql.create(e[0]));return iu(t,n)},{DST:`secp256k1_XMD:SHA-256_SSWU_RO_`,encodeDST:`secp256k1_XMD:SHA-256_SSWU_NU_`,p:ql.ORDER,m:1,k:128,expand:`xmd`,hash:Ms}))(),su=(()=>ou.hashToCurve)(),cu=(()=>ou.encodeToCurve)()}));Pt(),It(),Dn(),A(),ps();async function uu({hash:e,signature:t}){let n=Nt(e)?e:On(e),{secp256k1:r}=await fs(async()=>{let{secp256k1:e}=await Promise.resolve().then(()=>(lu(),Ml));return{secp256k1:e}},void 0);return`0x${(()=>{if(typeof t==`object`&&`r`in t&&`s`in t){let{r:e,s:n,v:i,yParity:a}=t,o=du(Number(a??i));return new r.Signature(wn(e),wn(n)).addRecoveryBit(o)}let e=Nt(t)?t:On(t);if(Ft(e)!==65)throw Error(`invalid signature length`);let n=En(`0x${e.slice(130)}`),i=du(n);return r.Signature.fromCompact(e.substring(2,130)).addRecoveryBit(i)})().recoverPublicKey(n.substring(2)).toHex(!1)}`}function du(e){if(e===0||e===1)return e;if(e===27)return 0;if(e===28)return 1;throw Error(`Invalid yParityOrV value`)}async function fu({hash:e,signature:t}){return cs(await uu({hash:e,signature:t}))}O(),va(),Hn(),A();function N(e,t=`hex`){let n=P(e),r=ga(new Uint8Array(n.length));return n.encode(r),t===`hex`?An(r.bytes):r.bytes}function P(e){return Array.isArray(e)?pu(e.map(e=>P(e))):mu(e)}function pu(e){let t=e.reduce((e,t)=>e+t.length,0),n=hu(t);return{length:(()=>t<=55?1+t:1+n+t)(),encode(r){t<=55?r.pushByte(192+t):(r.pushByte(247+n),n===1?r.pushUint8(t):n===2?r.pushUint16(t):n===3?r.pushUint24(t):r.pushUint32(t));for(let{encode:t}of e)t(r)}}}function mu(e){let t=typeof e==`string`?Ln(e):e,n=hu(t.length);return{length:(()=>t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+n+t.length)(),encode(e){t.length===1&&t[0]<128?e.pushBytes(t):t.length<=55?(e.pushByte(128+t.length),e.pushBytes(t)):(e.pushByte(183+n),n===1?e.pushUint8(t.length):n===2?e.pushUint16(t.length):n===3?e.pushUint24(t.length):e.pushUint32(t.length),e.pushBytes(t))}}}function hu(e){if(e<2**8)return 1;if(e<2**16)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new D(`Length is too large.`)}Di(),Hn(),A(),ei();function gu(e){let{chainId:t,nonce:n,to:r}=e,i=e.contractAddress??e.address,a=$r(Ei([`0x05`,N([t?k(t):`0x`,i,n?k(n):`0x`])]));return r===`bytes`?Ln(a):a}async function _u(e){let{authorization:t,signature:n}=e;return fu({hash:gu(t),signature:n??t})}Ya(),Za(),O(),mo();var vu=class extends D{constructor(e,{account:t,docsPath:n,chain:r,data:i,gas:a,gasPrice:o,maxFeePerGas:s,maxPriorityFeePerGas:c,nonce:l,to:u,value:d}){let f=ro({from:t?.address,to:u,value:d!==void 0&&`${Ja(d)} ${r?.nativeCurrency?.symbol||`ETH`}`,data:i,gas:a,gasPrice:o!==void 0&&`${Xa(o)} gwei`,maxFeePerGas:s!==void 0&&`${Xa(s)} gwei`,maxPriorityFeePerGas:c!==void 0&&`${Xa(c)} gwei`,nonce:l});super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],`Estimate Gas Arguments:`,f].filter(Boolean),name:`EstimateGasExecutionError`}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}},yu,bu,xu,Su,Cu,wu,Tu,Eu,Du,Ou,ku,Au,ju=o((()=>{Za(),O(),yu=class extends D{constructor({cause:e,message:t}={}){let n=t?.replace(`execution reverted: `,``)?.replace(`execution reverted`,``);super(`Execution reverted ${n?`with reason: ${n}`:`for an unknown reason`}.`,{cause:e,name:`ExecutionRevertedError`})}},Object.defineProperty(yu,`code`,{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(yu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/}),bu=class extends D{constructor({cause:e,maxFeePerGas:t}={}){super(`The fee cap (\`maxFeePerGas\`${t?` = ${Xa(t)} gwei`:``}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:e,name:`FeeCapTooHighError`})}},Object.defineProperty(bu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/}),xu=class extends D{constructor({cause:e,maxFeePerGas:t}={}){super(`The fee cap (\`maxFeePerGas\`${t?` = ${Xa(t)}`:``} gwei) cannot be lower than the block base fee.`,{cause:e,name:`FeeCapTooLowError`})}},Object.defineProperty(xu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/}),Su=class extends D{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:``}is higher than the next one expected.`,{cause:e,name:`NonceTooHighError`})}},Object.defineProperty(Su,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/}),Cu=class extends D{constructor({cause:e,nonce:t}={}){super([`Nonce provided for the transaction ${t?`(${t}) `:``}is lower than the current nonce of the account.`,"Try increasing the nonce or find the latest nonce with `getTransactionCount`."].join(` -`),{cause:e,name:`NonceTooLowError`})}},Object.defineProperty(Cu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/}),wu=class extends D{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:``}exceeds the maximum allowed nonce.`,{cause:e,name:`NonceMaxValueError`})}},Object.defineProperty(wu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/}),Tu=class extends D{constructor({cause:e}={}){super([`The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.`].join(` -`),{cause:e,metaMessages:[`This error could arise when the account does not have enough funds to:`,` - pay for the total gas fee,`,` - pay for the value to send.`,` `,"The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:`InsufficientFundsError`})}},Object.defineProperty(Tu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/}),Eu=class extends D{constructor({cause:e,gas:t}={}){super(`The amount of gas ${t?`(${t}) `:``}provided for the transaction exceeds the limit allowed for the block.`,{cause:e,name:`IntrinsicGasTooHighError`})}},Object.defineProperty(Eu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/}),Du=class extends D{constructor({cause:e,gas:t}={}){super(`The amount of gas ${t?`(${t}) `:``}provided for the transaction is too low.`,{cause:e,name:`IntrinsicGasTooLowError`})}},Object.defineProperty(Du,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/}),Ou=class extends D{constructor({cause:e}){super(`The transaction type is not supported for this chain.`,{cause:e,name:`TransactionTypeNotSupportedError`})}},Object.defineProperty(Ou,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/}),ku=class extends D{constructor({cause:e,maxPriorityFeePerGas:t,maxFeePerGas:n}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${t?` = ${Xa(t)} gwei`:``}) cannot be higher than the fee cap (\`maxFeePerGas\`${n?` = ${Xa(n)} gwei`:``}).`].join(` -`),{cause:e,name:`TipAboveFeeCapError`})}},Object.defineProperty(ku,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/}),Au=class extends D{constructor({cause:e}){super(`An error occurred while executing: ${e?.shortMessage}`,{cause:e,name:`UnknownNodeError`})}}}));function Mu(e,t){let n=(e.details||``).toLowerCase(),r=e instanceof D?e.walk(e=>e?.code===yu.code):e;return r instanceof D?new yu({cause:e,message:r.details}):yu.nodeMessage.test(n)?new yu({cause:e,message:e.details}):bu.nodeMessage.test(n)?new bu({cause:e,maxFeePerGas:t?.maxFeePerGas}):xu.nodeMessage.test(n)?new xu({cause:e,maxFeePerGas:t?.maxFeePerGas}):Su.nodeMessage.test(n)?new Su({cause:e,nonce:t?.nonce}):Cu.nodeMessage.test(n)?new Cu({cause:e,nonce:t?.nonce}):wu.nodeMessage.test(n)?new wu({cause:e,nonce:t?.nonce}):Tu.nodeMessage.test(n)?new Tu({cause:e}):Eu.nodeMessage.test(n)?new Eu({cause:e,gas:t?.gas}):Du.nodeMessage.test(n)?new Du({cause:e,gas:t?.gas}):Ou.nodeMessage.test(n)?new Ou({cause:e}):ku.nodeMessage.test(n)?new ku({cause:e,maxFeePerGas:t?.maxFeePerGas,maxPriorityFeePerGas:t?.maxPriorityFeePerGas}):new Au({cause:e})}var Nu=o((()=>{O(),ju()}));ju(),Nu();function Pu(e,{docsPath:t,...n}){let r=(()=>{let t=Mu(e,n);return t instanceof Au?e:t})();return new vu(r,{docsPath:t,...n})}function Fu(e,{format:t}){if(!t)return{};let n={};function r(t){let i=Object.keys(t);for(let a of i)a in e&&(n[a]=e[a]),t[a]&&typeof t[a]==`object`&&!Array.isArray(t[a])&&r(t[a])}let i=t(e||{});return r(i),n}var Iu=o((()=>{}));function Lu(e,t){return({exclude:n,format:r})=>({exclude:n,format:(e,i)=>{let a=t(e,i);if(n)for(let e of n)delete a[e];return{...a,...r(e,i)}},type:e})}var Ru=o((()=>{}));function zu(e,t){let n={};return e.authorizationList!==void 0&&(n.authorizationList=Bu(e.authorizationList)),e.accessList!==void 0&&(n.accessList=e.accessList),e.blobVersionedHashes!==void 0&&(n.blobVersionedHashes=e.blobVersionedHashes),e.blobs!==void 0&&(typeof e.blobs[0]==`string`?n.blobs=e.blobs:n.blobs=e.blobs.map(e=>An(e))),e.data!==void 0&&(n.data=e.data),e.from!==void 0&&(n.from=e.from),e.gas!==void 0&&(n.gas=k(e.gas)),e.gasPrice!==void 0&&(n.gasPrice=k(e.gasPrice)),e.maxFeePerBlobGas!==void 0&&(n.maxFeePerBlobGas=k(e.maxFeePerBlobGas)),e.maxFeePerGas!==void 0&&(n.maxFeePerGas=k(e.maxFeePerGas)),e.maxPriorityFeePerGas!==void 0&&(n.maxPriorityFeePerGas=k(e.maxPriorityFeePerGas)),e.nonce!==void 0&&(n.nonce=k(e.nonce)),e.to!==void 0&&(n.to=e.to),e.type!==void 0&&(n.type=Vu[e.type]),e.value!==void 0&&(n.value=k(e.value)),n}function Bu(e){return e.map(e=>({address:e.address,r:e.r?k(BigInt(e.r)):e.r,s:e.s?k(BigInt(e.s)):e.s,chainId:k(e.chainId),nonce:k(e.nonce),...e.yParity===void 0?{}:{yParity:k(e.yParity)},...e.v!==void 0&&e.yParity===void 0?{v:k(e.v)}:{}}))}var Vu,Hu,Uu=o((()=>{A(),Ru(),Vu={legacy:`0x0`,eip2930:`0x1`,eip1559:`0x2`,eip4844:`0x3`,eip7702:`0x4`},Hu=Lu(`transactionRequest`,zu)}));function Wu(e){if(!(!e||e.length===0))return e.reduce((e,{slot:t,value:n})=>{if(t.length!==66)throw new un({size:t.length,targetSize:66,type:`hex`});if(n.length!==66)throw new un({size:n.length,targetSize:66,type:`hex`});return e[t]=n,e},{})}function Gu(e){let{balance:t,nonce:n,state:r,stateDiff:i,code:a}=e,o={};if(a!==void 0&&(o.code=a),t!==void 0&&(o.balance=k(t)),n!==void 0&&(o.nonce=k(n)),r!==void 0&&(o.state=Wu(r)),i!==void 0){if(o.state)throw new to;o.stateDiff=Wu(i)}return o}function Ku(e){if(!e)return;let t={};for(let{address:n,...r}of e){if(!bi(n,{strict:!1}))throw new fi({address:n});if(t[n])throw new eo({address:n});t[n]=Gu(r)}return t}var qu=o((()=>{pi(),dn(),no(),Ci(),A()})),Ju,Yu,Xu=o((()=>{2n**(8n-1n)-1n,2n**(16n-1n)-1n,2n**(24n-1n)-1n,2n**(32n-1n)-1n,2n**(40n-1n)-1n,2n**(48n-1n)-1n,2n**(56n-1n)-1n,2n**(64n-1n)-1n,2n**(72n-1n)-1n,2n**(80n-1n)-1n,2n**(88n-1n)-1n,2n**(96n-1n)-1n,2n**(104n-1n)-1n,2n**(112n-1n)-1n,2n**(120n-1n)-1n,2n**(128n-1n)-1n,2n**(136n-1n)-1n,2n**(144n-1n)-1n,2n**(152n-1n)-1n,2n**(160n-1n)-1n,2n**(168n-1n)-1n,2n**(176n-1n)-1n,2n**(184n-1n)-1n,2n**(192n-1n)-1n,2n**(200n-1n)-1n,2n**(208n-1n)-1n,2n**(216n-1n)-1n,2n**(224n-1n)-1n,2n**(232n-1n)-1n,2n**(240n-1n)-1n,2n**(248n-1n)-1n,2n**(256n-1n)-1n,-(2n**(8n-1n)),-(2n**(16n-1n)),-(2n**(24n-1n)),-(2n**(32n-1n)),-(2n**(40n-1n)),-(2n**(48n-1n)),-(2n**(56n-1n)),-(2n**(64n-1n)),-(2n**(72n-1n)),-(2n**(80n-1n)),-(2n**(88n-1n)),-(2n**(96n-1n)),-(2n**(104n-1n)),-(2n**(112n-1n)),-(2n**(120n-1n)),-(2n**(128n-1n)),-(2n**(136n-1n)),-(2n**(144n-1n)),-(2n**(152n-1n)),-(2n**(160n-1n)),-(2n**(168n-1n)),-(2n**(176n-1n)),-(2n**(184n-1n)),-(2n**(192n-1n)),-(2n**(200n-1n)),-(2n**(208n-1n)),-(2n**(216n-1n)),-(2n**(224n-1n)),-(2n**(232n-1n)),-(2n**(240n-1n)),-(2n**(248n-1n)),-(2n**(256n-1n)),Ju=2n**16n-1n,Yu=2n**256n-1n}));function Zu(e){let{account:t,gasPrice:n,maxFeePerGas:r,maxPriorityFeePerGas:i,to:a}=e,o=t?ta(t):void 0;if(o&&!bi(o.address))throw new fi({address:o.address});if(a&&!bi(a))throw new fi({address:a});if(n!==void 0&&(r!==void 0||i!==void 0))throw new io;if(r&&r>Yu)throw new bu({maxFeePerGas:r});if(i&&r&&i>r)throw new ku({maxFeePerGas:r,maxPriorityFeePerGas:i})}var Qu=o((()=>{na(),Xu(),pi(),ju(),mo(),Ci()}));Za(),O();var $u=class extends D{constructor(){super("`baseFeeMultiplier` must be greater than 1.",{name:`BaseFeeScalarError`})}},ed=class extends D{constructor(){super(`Chain does not support EIP-1559 fees.`,{name:`Eip1559FeesNotSupportedError`})}},td=class extends D{constructor({maxPriorityFeePerGas:e}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${Xa(e)} gwei).`,{name:`MaxFeePerGasTooLowError`})}};O();var nd=class extends D{constructor({blockHash:e,blockNumber:t}){let n=`Block`;e&&(n=`Block at hash "${e}"`),t&&(n=`Block at number "${t}"`),super(`${n} could not be found.`,{name:`BlockNotFoundError`})}};Dn(),Ru();const rd={"0x0":`legacy`,"0x1":`eip2930`,"0x2":`eip1559`,"0x3":`eip4844`,"0x4":`eip7702`};function id(e,t){let n={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?En(e.chainId):void 0,gas:e.gas?BigInt(e.gas):void 0,gasPrice:e.gasPrice?BigInt(e.gasPrice):void 0,maxFeePerBlobGas:e.maxFeePerBlobGas?BigInt(e.maxFeePerBlobGas):void 0,maxFeePerGas:e.maxFeePerGas?BigInt(e.maxFeePerGas):void 0,maxPriorityFeePerGas:e.maxPriorityFeePerGas?BigInt(e.maxPriorityFeePerGas):void 0,nonce:e.nonce?En(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?rd[e.type]:void 0,typeHex:e.type?e.type:void 0,value:e.value?BigInt(e.value):void 0,v:e.v?BigInt(e.v):void 0};return e.authorizationList&&(n.authorizationList=od(e.authorizationList)),n.yParity=(()=>{if(e.yParity)return Number(e.yParity);if(typeof n.v==`bigint`){if(n.v===0n||n.v===27n)return 0;if(n.v===1n||n.v===28n)return 1;if(n.v>=35n)return n.v%2n==0n?1:0}})(),n.type===`legacy`&&(delete n.accessList,delete n.maxFeePerBlobGas,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.yParity),n.type===`eip2930`&&(delete n.maxFeePerBlobGas,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas),n.type===`eip1559`&&delete n.maxFeePerBlobGas,n}const ad=Lu(`transaction`,id);function od(e){return e.map(e=>({address:e.address,chainId:Number(e.chainId),nonce:Number(e.nonce),r:e.r,s:e.s,yParity:Number(e.yParity)}))}Ru();function sd(e,t){let n=(e.transactions??[]).map(e=>typeof e==`string`?e:id(e));return{...e,baseFeePerGas:e.baseFeePerGas?BigInt(e.baseFeePerGas):null,blobGasUsed:e.blobGasUsed?BigInt(e.blobGasUsed):void 0,difficulty:e.difficulty?BigInt(e.difficulty):void 0,excessBlobGas:e.excessBlobGas?BigInt(e.excessBlobGas):void 0,gasLimit:e.gasLimit?BigInt(e.gasLimit):void 0,gasUsed:e.gasUsed?BigInt(e.gasUsed):void 0,hash:e.hash?e.hash:null,logsBloom:e.logsBloom?e.logsBloom:null,nonce:e.nonce?e.nonce:null,number:e.number?BigInt(e.number):null,size:e.size?BigInt(e.size):void 0,timestamp:e.timestamp?BigInt(e.timestamp):void 0,transactions:n,totalDifficulty:e.totalDifficulty?BigInt(e.totalDifficulty):null}}const cd=Lu(`block`,sd);A();async function ld(e,{blockHash:t,blockNumber:n,blockTag:r=e.experimental_blockTag??`latest`,includeTransactions:i}={}){let a=i??!1,o=n===void 0?void 0:k(n),s=null;if(s=t?await e.request({method:`eth_getBlockByHash`,params:[t,a]},{dedupe:!0}):await e.request({method:`eth_getBlockByNumber`,params:[o||r,a]},{dedupe:!!o}),!s)throw new nd({blockHash:t,blockNumber:n});return(e.chain?.formatters?.block?.format||sd)(s,`getBlock`)}async function ud(e){let t=await e.request({method:`eth_gasPrice`});return BigInt(t)}Dn();async function dd(e,t){let{block:n,chain:r=e.chain,request:i}=t||{};try{let t=r?.fees?.maxPriorityFeePerGas??r?.fees?.defaultPriorityFee;if(typeof t==`function`){let r=n||await E(e,ld,`getBlock`)({}),a=await t({block:r,client:e,request:i});if(a===null)throw Error();return a}if(t!==void 0)return t;let a=await e.request({method:`eth_maxPriorityFeePerGas`});return wn(a)}catch{let[t,r]=await Promise.all([n?Promise.resolve(n):E(e,ld,`getBlock`)({}),E(e,ud,`getGasPrice`)({})]);if(typeof t.baseFeePerGas!=`bigint`)throw new ed;let i=r-t.baseFeePerGas;return i<0n?0n:i}}async function fd(e,t){let{block:n,chain:r=e.chain,request:i,type:a=`eip1559`}=t||{},o=await(async()=>typeof r?.fees?.baseFeeMultiplier==`function`?r.fees.baseFeeMultiplier({block:n,client:e,request:i}):r?.fees?.baseFeeMultiplier??1.2)();if(o<1)throw new $u;let s=10**(o.toString().split(`.`)[1]?.length??0),c=e=>e*BigInt(Math.ceil(o*s))/BigInt(s),l=n||await E(e,ld,`getBlock`)({});if(typeof r?.fees?.estimateFeesPerGas==`function`){let t=await r.fees.estimateFeesPerGas({block:n,client:e,multiply:c,request:i,type:a});if(t!==null)return t}if(a===`eip1559`){if(typeof l.baseFeePerGas!=`bigint`)throw new ed;let t=typeof i?.maxPriorityFeePerGas==`bigint`?i.maxPriorityFeePerGas:await dd(e,{block:l,chain:r,request:i}),n=c(l.baseFeePerGas);return{maxFeePerGas:i?.maxFeePerGas??n+t,maxPriorityFeePerGas:t}}return{gasPrice:i?.gasPrice??c(await E(e,ud,`getGasPrice`)({}))}}Dn(),A();async function pd(e,{address:t,blockTag:n=`latest`,blockNumber:r}){let i=await e.request({method:`eth_getTransactionCount`,params:[t,typeof r==`bigint`?k(r):n]},{dedupe:!!r});return En(i)}Uu(),Hn(),A();function md(e){let{kzg:t}=e,n=e.to??(typeof e.blobs[0]==`string`?`hex`:`bytes`),r=typeof e.blobs[0]==`string`?e.blobs.map(e=>Ln(e)):e.blobs,i=[];for(let e of r)i.push(Uint8Array.from(t.blobToKzgCommitment(e)));return n===`bytes`?i:i.map(e=>An(e))}Hn(),A();function hd(e){let{kzg:t}=e,n=e.to??(typeof e.blobs[0]==`string`?`hex`:`bytes`),r=typeof e.blobs[0]==`string`?e.blobs.map(e=>Ln(e)):e.blobs,i=typeof e.commitments[0]==`string`?e.commitments.map(e=>Ln(e)):e.commitments,a=[];for(let e=0;eAn(e))}Fs();const gd=Ms;Pt(),Hn(),A();function _d(e,t){let n=t||`hex`,r=gd(Nt(e,{strict:!1})?Pn(e):e);return n===`bytes`?r:On(r)}A();function vd(e){let{commitment:t,version:n=1}=e,r=e.to??(typeof t==`string`?`hex`:`bytes`),i=_d(t,`bytes`);return i.set([n],0),r===`bytes`?i:An(i)}function yd(e){let{commitments:t,version:n}=e,r=e.to??(typeof t[0]==`string`?`hex`:`bytes`),i=[];for(let e of t)i.push(vd({commitment:e,to:r,version:n}));return i}var bd=6;const xd=4096,Sd=32*xd,Cd=Sd*bd-1-1*xd*bd;O();var wd=class extends D{constructor({maxSize:e,size:t}){super(`Blob size is too large.`,{metaMessages:[`Max: ${e} bytes`,`Given: ${t} bytes`],name:`BlobSizeTooLargeError`})}},Td=class extends D{constructor(){super(`Blob data must not be empty.`,{name:`EmptyBlobError`})}},Ed=class extends D{constructor({hash:e,size:t}){super(`Versioned hash "${e}" size is invalid.`,{metaMessages:[`Expected: 32`,`Received: ${t}`],name:`InvalidVersionedHashSizeError`})}},Dd=class extends D{constructor({hash:e,version:t}){super(`Versioned hash "${e}" version is invalid.`,{metaMessages:[`Expected: 1`,`Received: ${t}`],name:`InvalidVersionedHashVersionError`})}};va(),It(),Hn(),A();function Od(e){let t=e.to??(typeof e.data==`string`?`hex`:`bytes`),n=typeof e.data==`string`?Ln(e.data):e.data,r=Ft(n);if(!r)throw new Td;if(r>761855)throw new wd({maxSize:Cd,size:r});let i=[],a=!0,o=0;for(;a;){let e=ga(new Uint8Array(Sd)),t=0;for(;te.bytes):i.map(e=>An(e.bytes))}function kd(e){let{data:t,kzg:n,to:r}=e,i=e.blobs??Od({data:t,to:r}),a=e.commitments??md({blobs:i,kzg:n,to:r}),o=e.proofs??hd({blobs:i,commitments:a,kzg:n,to:r}),s=[];for(let e=0;e{if(v.to)return v.to;if(i&&i.length>0)return await _u({authorization:i[0]}).catch(()=>{throw new D("`to` is required. Could not infer from `authorizationList`")})})();Zu(t);let S=e.chain?.formatters?.transactionRequest?.format,C=(S||zu)({...Fu(v,{format:S}),from:r?.address,accessList:n,authorizationList:i,blobs:a,blobVersionedHashes:o,data:l,gas:u,gasPrice:d,maxFeePerBlobGas:f,maxFeePerGas:p,maxPriorityFeePerGas:m,nonce:h,to:x,value:g},`estimateGas`);return BigInt(await e.request({method:`eth_estimateGas`,params:b?[C,y??e.experimental_blockTag??`latest`,b]:y?[C,y]:[C]}))}catch(n){throw Pu(n,{...t,account:r,chain:e.chain})}}function Id(e,t){if(!bi(e,{strict:!1}))throw new fi({address:e});if(!bi(t,{strict:!1}))throw new fi({address:t});return e.toLowerCase()===t.toLowerCase()}var Ld=o((()=>{pi(),Ci()}));function Rd(e,{args:t,eventName:n}={}){return{...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,logIndex:e.logIndex?Number(e.logIndex):null,transactionHash:e.transactionHash?e.transactionHash:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,...n?{args:t,eventName:n}:{}}}function zd(e){let{abi:t,args:n,functionName:r,data:i}=e,a=t[0];if(r){let e=Qi({abi:t,args:n,name:r});if(!e)throw new Zt(r,{docsPath:Bd});a=e}if(a.type!==`function`)throw new Zt(void 0,{docsPath:Bd});if(!a.outputs)throw new Qt(a.name,{docsPath:Bd});let o=wa(a.outputs,i);if(o&&o.length>1)return o;if(o&&o.length===1)return o[0]}var Bd,Vd=o((()=>{sn(),Ia(),ea(),Bd=`/docs/contract/decodeFunctionResult`})),Hd,Ud=o((()=>{Hd=`0.1.1`}));function Wd(){return Hd}var Gd=o((()=>{Ud()}));function Kd(e,t){return t?.(e)?e:e&&typeof e==`object`&&`cause`in e&&e.cause?Kd(e.cause,t):t?null:e}var F,qd=o((()=>{Gd(),F=class e extends Error{constructor(t,n={}){let r=(()=>{if(n.cause instanceof e){if(n.cause.details)return n.cause.details;if(n.cause.shortMessage)return n.cause.shortMessage}return n.cause&&`details`in n.cause&&typeof n.cause.details==`string`?n.cause.details:n.cause?.message?n.cause.message:n.details})(),i=(()=>n.cause instanceof e&&n.cause.docsPath||n.docsPath)(),a=`https://oxlib.sh${i??``}`,o=[t||`An error occurred.`,...n.metaMessages?[``,...n.metaMessages]:[],...r||i?[``,r?`Details: ${r}`:void 0,i?`See: ${a}`:void 0]:[]].filter(e=>typeof e==`string`).join(` -`);super(o,n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,`details`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`docs`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`docsPath`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`shortMessage`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`BaseError`}),Object.defineProperty(this,`version`,{enumerable:!0,configurable:!0,writable:!0,value:`ox@${Wd()}`}),this.cause=n.cause,this.details=r,this.docs=a,this.docsPath=i,this.shortMessage=t}walk(e){return Kd(this,e)}}}));function Jd(e,t){if(yf(e)>t)throw new Nf({givenSize:yf(e),maxSize:t})}function Yd(e,t){if(typeof t==`number`&&t>0&&t>yf(e)-1)throw new Pf({offset:t,position:`start`,size:yf(e)})}function Xd(e,t,n){if(typeof t==`number`&&typeof n==`number`&&yf(e)!==n-t)throw new Pf({offset:n,position:`end`,size:yf(e)})}function I(e){if(e>=$d.zero&&e<=$d.nine)return e-$d.zero;if(e>=$d.A&&e<=$d.F)return e-($d.A-10);if(e>=$d.a&&e<=$d.f)return e-($d.a-10)}function Zd(e,t={}){let{dir:n,size:r=32}=t;if(r===0)return e;if(e.length>r)throw new Ff({size:e.length,targetSize:r,type:`Bytes`});let i=new Uint8Array(r);for(let t=0;t{If(),$d={zero:48,nine:57,A:65,F:70,a:97,f:102}}));function tf(e,t){if(Kf(e)>t)throw new np({givenSize:Kf(e),maxSize:t})}function nf(e,t){if(typeof t==`number`&&t>0&&t>Kf(e)-1)throw new rp({offset:t,position:`start`,size:Kf(e)})}function rf(e,t,n){if(typeof t==`number`&&typeof n==`number`&&Kf(e)!==n-t)throw new rp({offset:n,position:`end`,size:Kf(e)})}function af(e,t={}){let{dir:n,size:r=32}=t;if(r===0)return e;let i=e.replace(`0x`,``);if(i.length>r*2)throw new ip({size:Math.ceil(i.length/2),targetSize:r,type:`Hex`});return`0x${i[n===`right`?`padEnd`:`padStart`](r*2,`0`)}`}function sf(e,t={}){let{dir:n=`left`}=t,r=e.replace(`0x`,``),i=0;for(let e=0;e{ap()}));function lf(e,t){return JSON.parse(e,(e,n)=>{let r=n;return typeof r==`string`&&r.endsWith(df)?BigInt(r.slice(0,-9)):typeof t==`function`?t(e,r):r})}function uf(e,t,n){return JSON.stringify(e,(e,n)=>typeof t==`function`?t(e,n):typeof n==`bigint`?n.toString()+df:n,n)}var df,ff=o((()=>{df=`#__bigint`}));function pf(e){if(!(e instanceof Uint8Array)&&(!e||typeof e!=`object`||!(`BYTES_PER_ELEMENT`in e)||e.BYTES_PER_ELEMENT!==1||e.constructor.name!==`Uint8Array`))throw new Mf(e)}function mf(e){return e instanceof Uint8Array?e:typeof e==`string`?gf(e):hf(e)}function hf(e){return e instanceof Uint8Array?e:new Uint8Array(e)}function gf(e,t={}){let{size:n}=t,r=e;n&&(tf(e,n),r=Wf(e,n));let i=r.slice(2);i.length%2&&(i=`0${i}`);let a=i.length/2,o=new Uint8Array(a);for(let e=0,t=0;e1||r[0]>1)throw new jf(r);return!!r[0]}function Cf(e,t={}){return Vf(e,t)}function wf(e,t={}){let{size:n}=t;n!==void 0&&Jd(e,n);let r=Vf(e,t);return Yf(r,t)}function Tf(e,t={}){let{size:n}=t,r=e;return n!==void 0&&(Jd(r,n),r=Df(r)),kf.decode(r)}function Ef(e){return Qd(e,{dir:`left`})}function Df(e){return Qd(e,{dir:`right`})}function Of(e){try{return pf(e),!0}catch{return!1}}var kf,Af,jf,Mf,Nf,Pf,Ff,If=o((()=>{qd(),ap(),ef(),cf(),ff(),kf=new TextDecoder,Af=new TextEncoder,jf=class extends F{constructor(e){super(`Bytes value \`${e}\` is not a valid boolean.`,{metaMessages:["The bytes array must contain a single byte of either a `0` or `1` value."]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.InvalidBytesBooleanError`})}},Mf=class extends F{constructor(e){super(`Value \`${typeof e==`object`?uf(e):e}\` of type \`${typeof e}\` is an invalid Bytes value.`,{metaMessages:["Bytes values must be of type `Bytes`."]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.InvalidBytesTypeError`})}},Nf=class extends F{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed \`${t}\` bytes. Given size: \`${e}\` bytes.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.SizeOverflowError`})}},Pf=class extends F{constructor({offset:e,position:t,size:n}){super(`Slice ${t===`start`?`starting`:`ending`} at offset \`${e}\` is out-of-bounds (size: \`${n}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.SliceOffsetOutOfBoundsError`})}},Ff=class extends F{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${e}\`) exceeds padding size (\`${t}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.SizeExceedsPaddingSizeError`})}}}));function Lf(e,t={}){let{strict:n=!1}=t;if(!e||typeof e!=`string`)throw new ep(e);if(n&&!/^0x[0-9a-fA-F]*$/.test(e)||!e.startsWith(`0x`))throw new tp(e)}function Rf(...e){return`0x${e.reduce((e,t)=>e+t.replace(`0x`,``),``)}`}function zf(e){return e instanceof Uint8Array?Vf(e):Array.isArray(e)?Vf(new Uint8Array(e)):e}function Bf(e,t={}){let n=`0x${Number(e)}`;return typeof t.size==`number`?(tf(n,t.size),Uf(n,t.size)):n}function Vf(e,t={}){let n=``;for(let t=0;ta||i>1n;return r<=o?r:r-a-1n}function Yf(e,t={}){let{signed:n,size:r}=t;return!n&&!r?Number(e):Number(Jf(e,t))}function Xf(e,t={}){let{strict:n=!1}=t;try{return Lf(e,{strict:n}),!0}catch{return!1}}var Zf,Qf,$f,ep,tp,np,rp,ip,ap=o((()=>{qd(),cf(),ff(),Zf=new TextEncoder,Qf=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`)),$f=class extends F{constructor({max:e,min:t,signed:n,size:r,value:i}){super(`Number \`${i}\` is not in safe${r?` ${r*8}-bit`:``}${n?` signed`:` unsigned`} integer range ${e?`(\`${t}\` to \`${e}\`)`:`(above \`${t}\`)`}`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.IntegerOutOfRangeError`})}},ep=class extends F{constructor(e){super(`Value \`${typeof e==`object`?uf(e):e}\` of type \`${typeof e}\` is an invalid hex type.`,{metaMessages:['Hex types must be represented as `"0x${string}"`.']}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.InvalidHexTypeError`})}},tp=class extends F{constructor(e){super(`Value \`${e}\` is an invalid hex value.`,{metaMessages:['Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).']}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.InvalidHexValueError`})}},np=class extends F{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed \`${t}\` bytes. Given size: \`${e}\` bytes.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.SizeOverflowError`})}},rp=class extends F{constructor({offset:e,position:t,size:n}){super(`Slice ${t===`start`?`starting`:`ending`} at offset \`${e}\` is out-of-bounds (size: \`${n}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.SliceOffsetOutOfBoundsError`})}},ip=class extends F{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${e}\`) exceeds padding size (\`${t}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.SizeExceedsPaddingSizeError`})}}}));function op(e){return{address:e.address,amount:L(e.amount),index:L(e.index),validatorIndex:L(e.validatorIndex)}}var sp=o((()=>{ap()}));function cp(e){return{...typeof e.baseFeePerGas==`bigint`&&{baseFeePerGas:L(e.baseFeePerGas)},...typeof e.blobBaseFee==`bigint`&&{blobBaseFee:L(e.blobBaseFee)},...typeof e.feeRecipient==`string`&&{feeRecipient:e.feeRecipient},...typeof e.gasLimit==`bigint`&&{gasLimit:L(e.gasLimit)},...typeof e.number==`bigint`&&{number:L(e.number)},...typeof e.prevRandao==`bigint`&&{prevRandao:L(e.prevRandao)},...typeof e.time==`bigint`&&{time:L(e.time)},...e.withdrawals&&{withdrawals:e.withdrawals.map(op)}}}var lp=o((()=>{ap(),sp()})),up,dp,fp,pp,mp,hp=o((()=>{up=[{inputs:[{components:[{name:`target`,type:`address`},{name:`allowFailure`,type:`bool`},{name:`callData`,type:`bytes`}],name:`calls`,type:`tuple[]`}],name:`aggregate3`,outputs:[{components:[{name:`success`,type:`bool`},{name:`returnData`,type:`bytes`}],name:`returnData`,type:`tuple[]`}],stateMutability:`view`,type:`function`},{inputs:[],name:`getCurrentBlockTimestamp`,outputs:[{internalType:`uint256`,name:`timestamp`,type:`uint256`}],stateMutability:`view`,type:`function`}],dp=[{name:`query`,type:`function`,stateMutability:`view`,inputs:[{type:`tuple[]`,name:`queries`,components:[{type:`address`,name:`sender`},{type:`string[]`,name:`urls`},{type:`bytes`,name:`data`}]}],outputs:[{type:`bool[]`,name:`failures`},{type:`bytes[]`,name:`responses`}]},{name:`HttpError`,type:`error`,inputs:[{type:`uint16`,name:`status`},{type:`string`,name:`message`}]}],fp=[{inputs:[{name:`dns`,type:`bytes`}],name:`DNSDecodingFailed`,type:`error`},{inputs:[{name:`ens`,type:`string`}],name:`DNSEncodingFailed`,type:`error`},{inputs:[],name:`EmptyAddress`,type:`error`},{inputs:[{name:`status`,type:`uint16`},{name:`message`,type:`string`}],name:`HttpError`,type:`error`},{inputs:[],name:`InvalidBatchGatewayResponse`,type:`error`},{inputs:[{name:`errorData`,type:`bytes`}],name:`ResolverError`,type:`error`},{inputs:[{name:`name`,type:`bytes`},{name:`resolver`,type:`address`}],name:`ResolverNotContract`,type:`error`},{inputs:[{name:`name`,type:`bytes`}],name:`ResolverNotFound`,type:`error`},{inputs:[{name:`primary`,type:`string`},{name:`primaryAddress`,type:`bytes`}],name:`ReverseAddressMismatch`,type:`error`},{inputs:[{internalType:`bytes4`,name:`selector`,type:`bytes4`}],name:`UnsupportedResolverProfile`,type:`error`}],[...fp],[...fp],pp=[{name:`isValidSignature`,type:`function`,stateMutability:`view`,inputs:[{name:`hash`,type:`bytes32`},{name:`signature`,type:`bytes`}],outputs:[{name:``,type:`bytes4`}]}],mp=[{inputs:[{name:`_signer`,type:`address`},{name:`_hash`,type:`bytes32`},{name:`_signature`,type:`bytes`}],stateMutability:`nonpayable`,type:`constructor`},{inputs:[{name:`_signer`,type:`address`},{name:`_hash`,type:`bytes32`},{name:`_signature`,type:`bytes`}],outputs:[{type:`bool`}],stateMutability:`nonpayable`,type:`function`,name:`isValidSig`}]})),gp=o((()=>{})),_p,vp,yp,bp,xp=o((()=>{_p=`0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe`,vp=`0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe`,yp=`0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572`,bp=`0x608060405234801561001057600080fd5b506115b9806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e14610325578063bce38bd714610350578063c3077fa914610380578063ee82ac5e146103b2576100f3565b80634d2301cc1461026257806372425d9d1461029f57806382ad56cb146102ca57806386d516e8146102fa576100f3565b80633408e470116100c65780633408e470146101af578063399542e9146101da5780633e64a6961461020c57806342cbb15c14610237576100f3565b80630f28c97d146100f8578063174dea7114610123578063252dba421461015357806327e86d6e14610184575b600080fd5b34801561010457600080fd5b5061010d6103ef565b60405161011a9190610c0a565b60405180910390f35b61013d60048036038101906101389190610c94565b6103f7565b60405161014a9190610e94565b60405180910390f35b61016d60048036038101906101689190610f0c565b610615565b60405161017b92919061101b565b60405180910390f35b34801561019057600080fd5b506101996107ab565b6040516101a69190611064565b60405180910390f35b3480156101bb57600080fd5b506101c46107b7565b6040516101d19190610c0a565b60405180910390f35b6101f460048036038101906101ef91906110ab565b6107bf565b6040516102039392919061110b565b60405180910390f35b34801561021857600080fd5b506102216107e1565b60405161022e9190610c0a565b60405180910390f35b34801561024357600080fd5b5061024c6107e9565b6040516102599190610c0a565b60405180910390f35b34801561026e57600080fd5b50610289600480360381019061028491906111a7565b6107f1565b6040516102969190610c0a565b60405180910390f35b3480156102ab57600080fd5b506102b4610812565b6040516102c19190610c0a565b60405180910390f35b6102e460048036038101906102df919061122a565b61081a565b6040516102f19190610e94565b60405180910390f35b34801561030657600080fd5b5061030f6109e4565b60405161031c9190610c0a565b60405180910390f35b34801561033157600080fd5b5061033a6109ec565b6040516103479190611286565b60405180910390f35b61036a600480360381019061036591906110ab565b6109f4565b6040516103779190610e94565b60405180910390f35b61039a60048036038101906103959190610f0c565b610ba6565b6040516103a99392919061110b565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d491906112cd565b610bca565b6040516103e69190611064565b60405180910390f35b600042905090565b60606000808484905090508067ffffffffffffffff81111561041c5761041b6112fa565b5b60405190808252806020026020018201604052801561045557816020015b610442610bd5565b81526020019060019003908161043a5790505b5092503660005b828110156105c957600085828151811061047957610478611329565b5b6020026020010151905087878381811061049657610495611329565b5b90506020028101906104a89190611367565b925060008360400135905080860195508360000160208101906104cb91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16818580606001906104f2919061138f565b604051610500929190611431565b60006040518083038185875af1925050503d806000811461053d576040519150601f19603f3d011682016040523d82523d6000602084013e610542565b606091505b5083600001846020018290528215151515815250505081516020850135176105bc577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b826001019250505061045c565b5082341461060c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610603906114a7565b60405180910390fd5b50505092915050565b6000606043915060008484905090508067ffffffffffffffff81111561063e5761063d6112fa565b5b60405190808252806020026020018201604052801561067157816020015b606081526020019060019003908161065c5790505b5091503660005b828110156107a157600087878381811061069557610694611329565b5b90506020028101906106a791906114c7565b92508260000160208101906106bc91906111a7565b73ffffffffffffffffffffffffffffffffffffffff168380602001906106e2919061138f565b6040516106f0929190611431565b6000604051808303816000865af19150503d806000811461072d576040519150601f19603f3d011682016040523d82523d6000602084013e610732565b606091505b5086848151811061074657610745611329565b5b60200260200101819052819250505080610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c9061153b565b60405180910390fd5b81600101915050610678565b5050509250929050565b60006001430340905090565b600046905090565b6000806060439250434091506107d68686866109f4565b905093509350939050565b600048905090565b600043905090565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b600044905090565b606060008383905090508067ffffffffffffffff81111561083e5761083d6112fa565b5b60405190808252806020026020018201604052801561087757816020015b610864610bd5565b81526020019060019003908161085c5790505b5091503660005b828110156109db57600084828151811061089b5761089a611329565b5b602002602001015190508686838181106108b8576108b7611329565b5b90506020028101906108ca919061155b565b92508260000160208101906108df91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060400190610905919061138f565b604051610913929190611431565b6000604051808303816000865af19150503d8060008114610950576040519150601f19603f3d011682016040523d82523d6000602084013e610955565b606091505b5082600001836020018290528215151515815250505080516020840135176109cf577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b8160010191505061087e565b50505092915050565b600045905090565b600041905090565b606060008383905090508067ffffffffffffffff811115610a1857610a176112fa565b5b604051908082528060200260200182016040528015610a5157816020015b610a3e610bd5565b815260200190600190039081610a365790505b5091503660005b82811015610b9c576000848281518110610a7557610a74611329565b5b60200260200101519050868683818110610a9257610a91611329565b5b9050602002810190610aa491906114c7565b9250826000016020810190610ab991906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060200190610adf919061138f565b604051610aed929190611431565b6000604051808303816000865af19150503d8060008114610b2a576040519150601f19603f3d011682016040523d82523d6000602084013e610b2f565b606091505b508260000183602001829052821515151581525050508715610b90578060000151610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b869061153b565b60405180910390fd5b5b81600101915050610a58565b5050509392505050565b6000806060610bb7600186866107bf565b8093508194508295505050509250925092565b600081409050919050565b6040518060400160405280600015158152602001606081525090565b6000819050919050565b610c0481610bf1565b82525050565b6000602082019050610c1f6000830184610bfb565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610c5457610c53610c2f565b5b8235905067ffffffffffffffff811115610c7157610c70610c34565b5b602083019150836020820283011115610c8d57610c8c610c39565b5b9250929050565b60008060208385031215610cab57610caa610c25565b5b600083013567ffffffffffffffff811115610cc957610cc8610c2a565b5b610cd585828601610c3e565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60008115159050919050565b610d2281610d0d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d62578082015181840152602081019050610d47565b83811115610d71576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d9382610d28565b610d9d8185610d33565b9350610dad818560208601610d44565b610db681610d77565b840191505092915050565b6000604083016000830151610dd96000860182610d19565b5060208301518482036020860152610df18282610d88565b9150508091505092915050565b6000610e0a8383610dc1565b905092915050565b6000602082019050919050565b6000610e2a82610ce1565b610e348185610cec565b935083602082028501610e4685610cfd565b8060005b85811015610e825784840389528151610e638582610dfe565b9450610e6e83610e12565b925060208a01995050600181019050610e4a565b50829750879550505050505092915050565b60006020820190508181036000830152610eae8184610e1f565b905092915050565b60008083601f840112610ecc57610ecb610c2f565b5b8235905067ffffffffffffffff811115610ee957610ee8610c34565b5b602083019150836020820283011115610f0557610f04610c39565b5b9250929050565b60008060208385031215610f2357610f22610c25565b5b600083013567ffffffffffffffff811115610f4157610f40610c2a565b5b610f4d85828601610eb6565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000610f918383610d88565b905092915050565b6000602082019050919050565b6000610fb182610f59565b610fbb8185610f64565b935083602082028501610fcd85610f75565b8060005b858110156110095784840389528151610fea8582610f85565b9450610ff583610f99565b925060208a01995050600181019050610fd1565b50829750879550505050505092915050565b60006040820190506110306000830185610bfb565b81810360208301526110428184610fa6565b90509392505050565b6000819050919050565b61105e8161104b565b82525050565b60006020820190506110796000830184611055565b92915050565b61108881610d0d565b811461109357600080fd5b50565b6000813590506110a58161107f565b92915050565b6000806000604084860312156110c4576110c3610c25565b5b60006110d286828701611096565b935050602084013567ffffffffffffffff8111156110f3576110f2610c2a565b5b6110ff86828701610eb6565b92509250509250925092565b60006060820190506111206000830186610bfb565b61112d6020830185611055565b818103604083015261113f8184610e1f565b9050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061117482611149565b9050919050565b61118481611169565b811461118f57600080fd5b50565b6000813590506111a18161117b565b92915050565b6000602082840312156111bd576111bc610c25565b5b60006111cb84828501611192565b91505092915050565b60008083601f8401126111ea576111e9610c2f565b5b8235905067ffffffffffffffff81111561120757611206610c34565b5b60208301915083602082028301111561122357611222610c39565b5b9250929050565b6000806020838503121561124157611240610c25565b5b600083013567ffffffffffffffff81111561125f5761125e610c2a565b5b61126b858286016111d4565b92509250509250929050565b61128081611169565b82525050565b600060208201905061129b6000830184611277565b92915050565b6112aa81610bf1565b81146112b557600080fd5b50565b6000813590506112c7816112a1565b92915050565b6000602082840312156112e3576112e2610c25565b5b60006112f1848285016112b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b60008235600160800383360303811261138357611382611358565b5b80830191505092915050565b600080833560016020038436030381126113ac576113ab611358565b5b80840192508235915067ffffffffffffffff8211156113ce576113cd61135d565b5b6020830192506001820236038313156113ea576113e9611362565b5b509250929050565b600081905092915050565b82818337600083830152505050565b600061141883856113f2565b93506114258385846113fd565b82840190509392505050565b600061143e82848661140c565b91508190509392505050565b600082825260208201905092915050565b7f4d756c746963616c6c333a2076616c7565206d69736d61746368000000000000600082015250565b6000611491601a8361144a565b915061149c8261145b565b602082019050919050565b600060208201905081810360008301526114c081611484565b9050919050565b6000823560016040038336030381126114e3576114e2611358565b5b80830191505092915050565b7f4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000600082015250565b600061152560178361144a565b9150611530826114ef565b602082019050919050565b6000602082019050818103600083015261155481611518565b9050919050565b60008235600160600383360303811261157757611576611358565b5b8083019150509291505056fea264697066735822122020c1bc9aacf8e4a6507193432a895a8e77094f45a1395583f07b24e860ef06cd64736f6c634300080c0033`})),Sp,Cp,wp,Tp,Ep,Dp=o((()=>{O(),Sp=class extends D{constructor({blockNumber:e,chain:t,contract:n}){super(`Chain "${t.name}" does not support contract "${n.name}".`,{metaMessages:[`This could be due to any of the following:`,...e&&n.blockCreated&&n.blockCreated>e?[`- The contract "${n.name}" was not deployed until block ${n.blockCreated} (current block ${e}).`]:[`- The chain does not have the contract "${n.name}" configured.`]],name:`ChainDoesNotSupportContract`})}},Cp=class extends D{constructor({chain:e,currentChainId:t}){super(`The current chain of the wallet (id: ${t}) does not match the target chain for the transaction (id: ${e.id} – ${e.name}).`,{metaMessages:[`Current Chain ID: ${t}`,`Expected Chain ID: ${e.id} – ${e.name}`],name:`ChainMismatchError`})}},wp=class extends D{constructor(){super([`No chain was provided to the request.`,"Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient."].join(` -`),{name:`ChainNotFoundError`})}},Tp=class extends D{constructor(){super(`No chain was provided to the Client.`,{name:`ClientChainNotConfiguredError`})}},Ep=class extends D{constructor({chainId:e}){super(typeof e==`number`?`Chain ID "${e}" is invalid.`:`Chain ID is invalid.`,{name:`InvalidChainIdError`})}}}));function Op(e){let{abi:t,args:n,bytecode:r}=e;if(!n||n.length===0)return r;let i=t.find(e=>`type`in e&&e.type===`constructor`);if(!i)throw new Vt({docsPath:kp});if(!(`inputs`in i)||!i.inputs||i.inputs.length===0)throw new Ht({docsPath:kp});let a=Li(i.inputs,n);return Ei([r,a])}var kp,Ap=o((()=>{sn(),Di(),Yi(),kp=`/docs/contract/encodeDeployData`}));function jp({blockNumber:e,chain:t,contract:n}){let r=t?.contracts?.[n];if(!r)throw new Sp({chain:t,contract:{name:n}});if(e&&r.blockCreated&&r.blockCreated>e)throw new Sp({blockNumber:e,chain:t,contract:{name:n,blockCreated:r.blockCreated}});return r.address}var Mp=o((()=>{Dp()}));function Np(e,{docsPath:t,...n}){let r=(()=>{let t=Mu(e,n);return t instanceof Au?e:t})();return new vo(r,{docsPath:t,...n})}var Pp=o((()=>{wo(),ju(),Nu()}));function Fp(){let e=()=>void 0,t=()=>void 0;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var Ip=o((()=>{}));function Lp({fn:e,id:t,shouldSplitBatch:n,wait:r=0,sort:i}){let a=async()=>{let t=c();o();let n=t.map(({args:e})=>e);n.length!==0&&e(n).then(e=>{i&&Array.isArray(e)&&e.sort(i);for(let n=0;n{for(let n=0;nRp.delete(t),s=()=>c().map(({args:e})=>e),c=()=>Rp.get(t)||[],l=e=>Rp.set(t,[...c(),e]);return{flush:o,async schedule(e){let{promise:t,resolve:i,reject:o}=Fp();return n?.([...s(),e])&&a(),c().length>0?(l({args:e,resolve:i,reject:o}),t):(l({args:e,resolve:i,reject:o}),setTimeout(a,r),t)}}}var Rp,zp=o((()=>{Ip(),Rp=new Map})),Bp,Vp,Hp,Up=o((()=>{Ba(),O(),_o(),Bp=class extends D{constructor({callbackSelector:e,cause:t,data:n,extraData:r,sender:i,urls:a}){super(t.shortMessage||`An error occurred while fetching for an offchain result.`,{cause:t,metaMessages:[...t.metaMessages||[],t.metaMessages?.length?``:[],`Offchain Gateway Call:`,a&&[` Gateway URL(s):`,...a.map(e=>` ${go(e)}`)],` Sender: ${i}`,` Data: ${n}`,` Callback selector: ${e}`,` Extra data: ${r}`].flat(),name:`OffchainLookupError`})}},Vp=class extends D{constructor({result:e,url:t}){super(`Offchain gateway response is malformed. Response data must be a hex value.`,{metaMessages:[`Gateway URL: ${go(t)}`,`Response: ${za(e)}`],name:`OffchainLookupResponseMalformedError`})}},Hp=class extends D{constructor({sender:e,to:t}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${t}`,`OffchainLookup sender address: ${e}`],name:`OffchainLookupSenderMismatchError`})}}}));function Wp(e){let{abi:t,data:n}=e,r=Oi(n,0,4),i=t.find(e=>e.type===`function`&&r===Xi(kt(e)));if(!i)throw new $t(r,{docsPath:`/docs/contract/decodeFunctionData`});return{functionName:i.name,args:`inputs`in i&&i.inputs&&i.inputs.length>0?wa(i.inputs,Oi(n,4)):void 0}}var Gp=o((()=>{sn(),Ni(),Zi(),Ia(),Mt()}));function Kp(e){let{abi:t,errorName:n,args:r}=e,i=t[0];if(n){let e=Qi({abi:t,args:r,name:n});if(!e)throw new Yt(n,{docsPath:qp});i=e}if(i.type!==`error`)throw new Yt(void 0,{docsPath:qp});let a=kt(i),o=Xi(a),s=`0x`;if(r&&r.length>0){if(!i.inputs)throw new Jt(i.name,{docsPath:qp});s=Li(i.inputs,r)}return Ei([o,s])}var qp,Jp=o((()=>{sn(),Di(),Zi(),Yi(),Mt(),ea(),qp=`/docs/contract/encodeErrorResult`}));function Yp(e){let{abi:t,functionName:n,result:r}=e,i=t[0];if(n){let e=Qi({abi:t,name:n});if(!e)throw new Zt(n,{docsPath:Xp});i=e}if(i.type!==`function`)throw new Zt(void 0,{docsPath:Xp});if(!i.outputs)throw new Qt(i.name,{docsPath:Xp});let a=(()=>{if(i.outputs.length===0)return[];if(i.outputs.length===1)return[r];if(Array.isArray(r))return r;throw new an(r)})();return Li(i.outputs,a)}var Xp,Zp=o((()=>{sn(),Yi(),ea(),Xp=`/docs/contract/encodeFunctionResult`}));async function Qp(e){let{data:t,ccipRequest:n}=e,{args:[r]}=Wp({abi:dp,data:t}),i=[],a=[];return await Promise.all(r.map(async(e,t)=>{try{a[t]=e.urls.includes(`x-batch-gateway:true`)?await Qp({data:e.data,ccipRequest:n}):await n(e),i[t]=!1}catch(e){i[t]=!0,a[t]=$p(e)}})),Yp({abi:dp,functionName:`query`,result:[i,a]})}function $p(e){return e.name===`HttpRequestError`&&e.status?Kp({abi:dp,errorName:`HttpError`,args:[e.status,e.shortMessage]}):Kp({abi:[la],errorName:`Error`,args:[`shortMessage`in e?e.shortMessage:e.message]})}var em=o((()=>{hp(),da(),Gp(),Jp(),Zp()})),tm=c({ccipRequest:()=>rm,offchainLookup:()=>nm,offchainLookupAbiItem:()=>am,offchainLookupSignature:()=>im});async function nm(e,{blockNumber:t,blockTag:n,data:r,to:i}){let{args:a}=La({data:r,abi:[am]}),[o,s,c,l,u]=a,{ccipRead:d}=e,f=d&&typeof d?.request==`function`?d.request:rm;try{if(!Id(i,o))throw new Hp({sender:o,to:i});let r=s.includes(`x-batch-gateway:true`)?await Qp({data:c,ccipRequest:f}):await f({data:c,sender:o,urls:s}),{data:a}=await sm(e,{blockNumber:t,blockTag:n,data:wi([l,Li([{type:`bytes`},{type:`bytes`}],[r,u])]),to:i});return a}catch(e){throw new Bp({callbackSelector:l,cause:e,data:r,extraData:u,sender:o,urls:s})}}async function rm({data:e,sender:t,urls:n}){let r=Error(`An unknown error occurred.`);for(let i=0;i{pm(),Up(),Oo(),Ra(),Yi(),Ld(),Di(),Pt(),em(),Ba(),im=`0x556f1830`,am={name:`OffchainLookup`,type:`error`,inputs:[{name:`sender`,type:`address`},{name:`urls`,type:`string[]`},{name:`callData`,type:`bytes`},{name:`callbackFunction`,type:`bytes4`},{name:`extraData`,type:`bytes`}]}}));async function sm(e,t){let{account:n=e.account,authorizationList:r,batch:i=!!e.batch?.multicall,blockNumber:a,blockTag:o=e.experimental_blockTag??`latest`,accessList:s,blobs:c,blockOverrides:l,code:u,data:d,factory:f,factoryData:p,gas:m,gasPrice:h,maxFeePerBlobGas:g,maxFeePerGas:_,maxPriorityFeePerGas:v,nonce:y,to:b,value:x,stateOverride:S,...C}=t,w=n?ta(n):void 0;if(u&&(f||p))throw new D("Cannot provide both `code` & `factory`/`factoryData` as parameters.");if(u&&b)throw new D("Cannot provide both `code` & `to` as parameters.");let ee=u&&d,te=f&&p&&b&&d,ne=ee||te,re=(()=>ee?um({code:u,data:d}):te?dm({data:d,factory:f,factoryData:p,to:b}):d)();try{Zu(t);let n=(typeof a==`bigint`?k(a):void 0)||o,u=l?cp(l):void 0,d=Ku(S),f=e.chain?.formatters?.transactionRequest?.format,p=(f||zu)({...Fu(C,{format:f}),from:w?.address,accessList:s,authorizationList:r,blobs:c,data:re,gas:m,gasPrice:h,maxFeePerBlobGas:g,maxFeePerGas:_,maxPriorityFeePerGas:v,nonce:y,to:ne?void 0:b,value:x},`call`);if(i&&cm({request:p})&&!d&&!u)try{return await lm(e,{...p,blockNumber:a,blockTag:o})}catch(e){if(!(e instanceof Tp)&&!(e instanceof Sp))throw e}let ee=(()=>{let e=[p,n];return d&&u?[...e,d,u]:d?[...e,d]:u?[...e,{},u]:e})(),te=await e.request({method:`eth_call`,params:ee});return te===`0x`?{data:void 0}:{data:te}}catch(n){let r=fm(n),{offchainLookup:i,offchainLookupSignature:a}=await fs(async()=>{let{offchainLookup:e,offchainLookupSignature:t}=await Promise.resolve().then(()=>(om(),tm));return{offchainLookup:e,offchainLookupSignature:t}},void 0);if(e.ccipRead!==!1&&r?.slice(0,10)===a&&b)return{data:await i(e,{data:r,to:b})};throw ne&&r?.slice(0,10)===`0x101bb98d`?new So({factory:f}):Np(n,{...t,account:w,chain:e.chain})}}function cm({request:e}){let{data:t,to:n,...r}=e;return!(!t||t.startsWith(`0x82ad56cb`)||!n||Object.values(r).filter(e=>e!==void 0).length>0)}async function lm(e,t){let{batchSize:n=1024,deployless:r=!1,wait:i=0}=typeof e.batch?.multicall==`object`?e.batch.multicall:{},{blockNumber:a,blockTag:o=e.experimental_blockTag??`latest`,data:s,to:c}=t,l=(()=>{if(r)return null;if(t.multicallAddress)return t.multicallAddress;if(e.chain)return jp({blockNumber:a,chain:e.chain,contract:`multicall3`});throw new Tp})(),u=(typeof a==`bigint`?k(a):void 0)||o,{schedule:d}=Lp({id:`${e.uid}.${u}`,wait:i,shouldSplitBatch(e){return e.reduce((e,{data:t})=>e+(t.length-2),0)>n*2},fn:async t=>{let n=t.map(e=>({allowFailure:!0,callData:e.data,target:e.to})),r=oa({abi:up,args:[n],functionName:`aggregate3`}),i=await e.request({method:`eth_call`,params:[{...l===null?{data:um({code:bp,data:r})}:{to:l,data:r}},u]});return zd({abi:up,args:[n],functionName:`aggregate3`,data:i||`0x`})}}),[{returnData:f,success:p}]=await d({data:s,to:c});if(!p)throw new Co({data:f});return f===`0x`?{data:void 0}:{data:f}}function um(e){let{code:t,data:n}=e;return Op({abi:St([`constructor(bytes, bytes)`]),bytecode:_p,args:[t,n]})}function dm(e){let{data:t,factory:n,factoryData:r,to:i}=e;return Op({abi:St([`constructor(address, bytes, address, bytes)`]),bytecode:vp,args:[i,t,n,r]})}function fm(e){if(!(e instanceof D))return;let t=e.walk();return typeof t?.data==`object`?t.data?.data:t.data}var pm=o((()=>{Ot(),lp(),na(),hp(),gp(),xp(),O(),Dp(),wo(),Vd(),Ap(),sa(),Mp(),A(),Pp(),Iu(),Uu(),zp(),qu(),Qu(),ps()}));Vd(),sa(),pm();async function mm(e,t){let{abi:n,address:r,args:i,functionName:a,...o}=t,s=oa({abi:n,args:i,functionName:a});try{let{data:t}=await E(e,sm,`call`)({...o,data:s,to:r});return zd({abi:n,args:i,functionName:a,data:t||`0x`})}catch(e){throw ss(e,{abi:n,address:r,args:i,docsPath:`/docs/contract/readContract`,functionName:a})}}const hm=new Map,gm=new Map;var _m=0;function vm(e,t,n){let r=++_m,i=()=>hm.get(e)||[],a=()=>{let t=i();hm.set(e,t.filter(e=>e.id!==r))},o=()=>{let t=i();if(!t.some(e=>e.id===r))return;let n=gm.get(e);if(t.length===1&&n){let e=n();e instanceof Promise&&e.catch(()=>{})}a()},s=i();if(hm.set(e,[...s,{id:r,fns:t}]),s&&s.length>0)return o;let c={};for(let e in t)c[e]=((...t)=>{let n=i();if(n.length!==0)for(let r of n)r.fns[e]?.(...t)});let l=n(c);return typeof l==`function`&&gm.set(e,l),o}async function ym(e){return new Promise(t=>setTimeout(t,e))}function bm(e,{emitOnBegin:t,initialWaitTime:n,interval:r}){let i=!0,a=()=>i=!1;return(async()=>{let o;t&&(o=await e({unpoll:a}));let s=await n?.(o)??r;await ym(s);let c=async()=>{i&&(await e({unpoll:a}),await ym(r),c())};c()})(),a}const xm=new Map,Sm=new Map;function Cm(e){let t=(e,t)=>({clear:()=>t.delete(e),get:()=>t.get(e),set:n=>t.set(e,n)}),n=t(e,xm),r=t(e,Sm);return{clear:()=>{n.clear(),r.clear()},promise:n,response:r}}async function wm(e,{cacheKey:t,cacheTime:n=1/0}){let r=Cm(t),i=r.response.get();if(i&&n>0&&Date.now()-i.created.getTime()`blockNumber.${e}`;async function Em(e,{cacheTime:t=e.cacheTime}={}){let n=await wm(()=>e.request({method:`eth_blockNumber`}),{cacheKey:Tm(e.uid),cacheTime:t});return BigInt(n)}O();var Dm=class extends D{constructor({docsPath:e}={}){super([`Could not find an Account to execute with this Action.`,"Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."].join(` -`),{docsPath:e,docsSlug:`account`,name:`AccountNotFoundError`})}},Om=class extends D{constructor({docsPath:e,metaMessages:t,type:n}){super(`Account type "${n}" is not supported.`,{docsPath:e,metaMessages:t,name:`AccountTypeNotSupportedError`})}};Dp();function km({chain:e,currentChainId:t}){if(!e)throw new wp;if(t!==e.id)throw new Cp({chain:e,currentChainId:t})}ju(),mo(),Nu();function Am(e,{docsPath:t,...n}){let r=(()=>{let t=Mu(e,n);return t instanceof Au?e:t})();return new co(r,{docsPath:t,...n})}async function jm(e,{serializedTransaction:t}){return e.request({method:`eth_sendRawTransaction`,params:[t]},{retryCount:0})}na(),O(),Iu(),Uu(),hi(),Qu();var Mm=new mi(128);async function Nm(e,t){let{account:n=e.account,chain:r=e.chain,accessList:i,authorizationList:a,blobs:o,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,type:m,value:h,...g}=t;if(n===void 0)throw new Dm({docsPath:`/docs/actions/wallet/sendTransaction`});let _=n?ta(n):null;try{Zu(t);let n=await(async()=>{if(t.to)return t.to;if(t.to!==null&&a&&a.length>0)return await _u({authorization:a[0]}).catch(()=>{throw new D("`to` is required. Could not infer from `authorizationList`.")})})();if(_?.type===`json-rpc`||_===null){let t;r!==null&&(t=await E(e,jd,`getChainId`)({}),km({currentChainId:t,chain:r}));let v=e.chain?.formatters?.transactionRequest?.format,y=(v||zu)({...Fu(g,{format:v}),accessList:i,authorizationList:a,blobs:o,chainId:t,data:s,from:_?.address,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,to:n,type:m,value:h},`sendTransaction`),b=Mm.get(e.uid),x=b?`wallet_sendTransaction`:`eth_sendTransaction`;try{return await e.request({method:x,params:[y]},{retryCount:0})}catch(t){if(b===!1)throw t;let n=t;if(n.name===`InvalidInputRpcError`||n.name===`InvalidParamsRpcError`||n.name===`MethodNotFoundRpcError`||n.name===`MethodNotSupportedRpcError`)return await e.request({method:`wallet_sendTransaction`,params:[y]},{retryCount:0}).then(t=>(Mm.set(e.uid,!0),t)).catch(t=>{let r=t;throw r.name===`MethodNotFoundRpcError`||r.name===`MethodNotSupportedRpcError`?(Mm.set(e.uid,!1),n):r});throw n}}if(_?.type===`local`){let t=await E(e,Pd,`prepareTransactionRequest`)({account:_,accessList:i,authorizationList:a,blobs:o,chain:r,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,nonceManager:_.nonceManager,parameters:[...Md,`sidecars`],type:m,value:h,...g,to:n}),v=r?.serializers?.transaction,y=await _.signTransaction(t,{serializer:v});return await E(e,jm,`sendRawTransaction`)({serializedTransaction:y})}throw _?.type===`smart`?new Om({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:`/docs/actions/bundler/sendUserOperation`,type:`smart`}):new Om({docsPath:`/docs/actions/wallet/sendTransaction`,type:_?.type})}catch(e){throw e instanceof Om?e:Am(e,{...t,account:_,chain:t.chain||void 0})}}na(),sa();async function Pm(e,t){return Pm.internal(e,Nm,`sendTransaction`,t)}(function(e){async function t(e,t,n,r){let{abi:i,account:a=e.account,address:o,args:s,dataSuffix:c,functionName:l,...u}=r;if(a===void 0)throw new Dm({docsPath:`/docs/contract/writeContract`});let d=a?ta(a):null,f=oa({abi:i,args:s,functionName:l});try{return await E(e,t,n)({data:`${f}${c?c.replace(`0x`,``):``}`,to:o,account:d,...u})}catch(e){throw ss(e,{abi:i,address:o,args:s,docsPath:`/docs/contract/writeContract`,functionName:l,sender:d?.address})}}e.internal=t})(Pm||={}),O();var Fm=class extends D{constructor(e){super(`Call bundle failed with status: ${e.statusCode}`,{name:`BundleFailedError`}),Object.defineProperty(this,`result`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.result=e}};function Im(e,{delay:t=100,retryCount:n=2,shouldRetry:r=()=>!0}={}){return new Promise((i,a)=>{let o=async({count:s=0}={})=>{let c=async({error:e})=>{let n=typeof t==`function`?t({count:s,error:e}):t;n&&await ym(n),o({count:s+1})};try{let t=await e();i(t)}catch(e){if(sRd(e)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?En(e.transactionIndex):null,status:e.status?Lm[e.status]:null,type:e.type?rd[e.type]||e.type:null};return e.blobGasPrice&&(n.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(n.blobGasUsed=BigInt(e.blobGasUsed)),n}const zm=Lu(`transactionReceipt`,Rm);na(),O(),rs(),sa(),Di(),Dn(),A();const Bm=k(0,{size:32});async function Vm(e,t){let{account:n=e.account,capabilities:r,chain:i=e.chain,experimental_fallback:a,experimental_fallbackDelay:o=32,forceAtomic:s=!1,id:c,version:l=`2.0.0`}=t,u=n?ta(n):null,d=t.calls.map(e=>{let t=e,n=t.abi?oa({abi:t.abi,functionName:t.functionName,args:t.args}):t.data;return{data:t.dataSuffix&&n?wi([n,t.dataSuffix]):n,to:t.to,value:t.value?k(t.value):void 0}});try{let t=await e.request({method:`wallet_sendCalls`,params:[{atomicRequired:s,calls:d,capabilities:r,chainId:k(i.id),from:u?.address,id:c,version:l}]},{retryCount:0});return typeof t==`string`?{id:t}:t}catch(n){let c=n;if(a&&(c.name===`MethodNotFoundRpcError`||c.name===`MethodNotSupportedRpcError`||c.name===`UnknownRpcError`||c.details.toLowerCase().includes(`does not exist / is not available`)||c.details.toLowerCase().includes(`missing or invalid. request()`)||c.details.toLowerCase().includes(`did not match any variant of untagged enum`)||c.details.toLowerCase().includes(`account upgraded to unsupported contract`)||c.details.toLowerCase().includes(`eip-7702 not supported`)||c.details.toLowerCase().includes(`unsupported wc_ method`)||c.details.toLowerCase().includes(`feature toggled misconfigured`)||c.details.toLowerCase().includes(`jsonrpcengine: response has no error or result for request`))){if(r&&Object.values(r).some(e=>!e.optional)){let e="non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.";throw new Yo(new D(e,{details:e}))}if(s&&d.length>1){let e="`forceAtomic` is not supported on fallback to `eth_sendTransaction`.";throw new ts(new D(e,{details:e}))}let t=[];for(let n of d){let r=Nm(e,{account:u,chain:i,data:n.data,to:n.to,value:n.value?wn(n.value):void 0});t.push(r),o>0&&await new Promise(e=>setTimeout(e,o))}let n=await Promise.allSettled(t);if(n.every(e=>e.status===`rejected`))throw n[0].reason;let a=n.map(e=>e.status===`fulfilled`?e.value:Bm);return{id:wi([...a,k(i.id,{size:32}),`0x5792579257925792579257925792579257925792579257925792579257925792`])}}throw Am(n,{...t,account:u,chain:t.chain})}}Ni(),Sn(),Dn();async function Hm(e,t){async function n(t){if(t.endsWith(`5792579257925792579257925792579257925792579257925792579257925792`)){let n=xn(Mi(t,-64,-32)),r=Mi(t,0,-64).slice(2).match(/.{1,64}/g),i=await Promise.all(r.map(t=>Bm.slice(2)===t?void 0:e.request({method:`eth_getTransactionReceipt`,params:[`0x${t}`]},{dedupe:!0}))),a=(()=>i.some(e=>e===null)?100:i.every(e=>e?.status===`0x1`)?200:i.every(e=>e?.status===`0x0`)?500:600)();return{atomic:!1,chainId:En(n),receipts:i.filter(Boolean),status:a,version:`2.0.0`}}return e.request({method:`wallet_getCallsStatus`,params:[t]})}let{atomic:r=!1,chainId:i,receipts:a,version:o=`2.0.0`,...s}=await n(t.id),[c,l]=(()=>{let e=s.status;return e>=100&&e<200?[`pending`,e]:e>=200&&e<300?[`success`,e]:e>=300&&e<700?[`failure`,e]:e===`CONFIRMED`?[`success`,200]:e===`PENDING`?[`pending`,100]:[void 0,e]})();return{...s,atomic:r,chainId:i?En(i):void 0,receipts:a?.map(e=>({...e,blockNumber:wn(e.blockNumber),gasUsed:wn(e.gasUsed),status:Lm[e.status]}))??[],statusCode:l,status:c,version:o}}O(),Ip(),Ba();async function Um(e,t){let{id:n,pollingInterval:r=e.pollingInterval,status:i=({statusCode:e})=>e===200||e>=300,retryCount:a=4,retryDelay:o=({count:e})=>~~(1<{let s=bm(async()=>{let r=e=>{clearTimeout(p),s(),e(),m()};try{let s=await Im(async()=>{let t=await E(e,Hm,`getCallsStatus`)({id:n});if(c&&t.status===`failure`)throw new Fm(t);return t},{retryCount:a,delay:o});if(!i(s))return;r(()=>t.resolve(s))}catch(e){r(()=>t.reject(e))}},{interval:r,emitOnBegin:!0});return s});return p=s?setTimeout(()=>{m(),clearTimeout(p),f(new Wm({id:n}))},s):void 0,await u}var Wm=class extends D{constructor({id:e}){super(`Timed out while waiting for call bundle with id "${e}" to be confirmed.`,{name:`WaitForCallsStatusTimeoutError`})}},Gm=256,Km=Gm,qm;function Jm(e=11){if(!qm||Km+e>Gm*2){qm=``,Km=0;for(let e=0;e{let n=t(e);for(let e in _)delete n[e];let r={...e,...n};return Object.assign(r,{extend:v(r)})}}return Object.assign(_,{extend:v(_)})}A();async function Xm(e,{address:t,blockNumber:n,blockTag:r=`latest`}){let i=n===void 0?void 0:k(n),a=await e.request({method:`eth_getCode`,params:[t,i||r]},{dedupe:!!i});if(a!==`0x`)return a}O();var Zm=class extends D{constructor({address:e}){super(`No EIP-712 domain found on contract "${e}".`,{metaMessages:[`Ensure that:`,`- The contract is deployed at the address "${e}".`,"- `eip712Domain()` function exists on the contract.","- `eip712Domain()` function matches signature to ERC-5267 specification."],name:`Eip712DomainNotFoundError`})}};async function Qm(e,t){let{address:n,factory:r,factoryData:i}=t;try{let[t,a,o,s,c,l,u]=await E(e,mm,`readContract`)({abi:$m,address:n,functionName:`eip712Domain`,factory:r,factoryData:i});return{domain:{name:a,version:o,chainId:Number(s),verifyingContract:c,salt:l},extensions:u,fields:t}}catch(e){let t=e;throw t.name===`ContractFunctionExecutionError`&&t.cause.name===`ContractFunctionZeroDataError`?new Zm({address:n}):t}}var $m=[{inputs:[],name:`eip712Domain`,outputs:[{name:`fields`,type:`bytes1`},{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`},{name:`salt`,type:`bytes32`},{name:`extensions`,type:`uint256[]`}],stateMutability:`view`,type:`function`}];Xu(),pi(),O(),Dp(),ju(),Ci(),It(),Ni(),Dn();function eh(e){let{authorizationList:t}=e;if(t)for(let e of t){let{chainId:t}=e,n=e.address;if(!bi(n))throw new fi({address:n});if(t<0)throw new Ep({chainId:t})}nh(e)}function th(e){let{blobVersionedHashes:t}=e;if(t){if(t.length===0)throw new Td;for(let e of t){let t=Ft(e),n=En(Oi(e,0,1));if(t!==32)throw new Ed({hash:e,size:t});if(n!==1)throw new Dd({hash:e,version:n})}}nh(e)}function nh(e){let{chainId:t,maxPriorityFeePerGas:n,maxFeePerGas:r,to:i}=e;if(t<=0)throw new Ep({chainId:t});if(i&&!bi(i))throw new fi({address:i});if(r&&r>Yu)throw new bu({maxFeePerGas:r});if(n&&r&&n>r)throw new ku({maxFeePerGas:r,maxPriorityFeePerGas:n})}function rh(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:r,maxFeePerGas:i,to:a}=e;if(t<=0)throw new Ep({chainId:t});if(a&&!bi(a))throw new fi({address:a});if(n||i)throw new D("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(r&&r>Yu)throw new bu({maxFeePerGas:r})}function ih(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:r,maxFeePerGas:i,to:a}=e;if(a&&!bi(a))throw new fi({address:a});if(t!==void 0&&t<=0)throw new Ep({chainId:t});if(n||i)throw new D("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(r&&r>Yu)throw new bu({maxFeePerGas:r})}pi(),mo(),Ci();function ah(e){if(!e||e.length===0)return[];let t=[];for(let n=0;nAn(e)),n=e.kzg,r=md({blobs:t,kzg:n});if(f===void 0&&(f=yd({commitments:r})),p===void 0){let e=hd({blobs:t,commitments:r,kzg:n});p=kd({blobs:t,commitments:r,proofs:e})}}let m=ah(u),h=[k(n),i?k(i):`0x`,l?k(l):`0x`,c?k(c):`0x`,r?k(r):`0x`,a??`0x`,o?k(o):`0x`,d??`0x`,m,s?k(s):`0x`,f??[],...fh(e,t)],g=[],_=[],v=[];if(p)for(let e=0;e{if(t.v>=35n)return(t.v-35n)/2n>0?t.v:27n+(t.v===35n?0n:1n);if(n>0)return BigInt(n*2)+BigInt(35n+t.v-27n);let e=27n+(t.v===27n?0n:1n);if(t.v!==e)throw new ao({v:t.v});return e})(),r=xn(t.r),i=xn(t.s);l=[...l,k(e),r===`0x00`?`0x`:r,i===`0x00`?`0x`:i]}else n>0&&(l=[...l,k(n),`0x`,`0x`]);return N(l)}function fh(e,t){let n=t??e,{v:r,yParity:i}=n;if(n.r===void 0||n.s===void 0||r===void 0&&i===void 0)return[];let a=xn(n.r),o=xn(n.s);return[(()=>typeof i==`number`?i?k(1):`0x`:r===0n?`0x`:r===1n?k(1):r===27n?`0x`:k(1))(),a===`0x00`?`0x`:a,o===`0x00`?`0x`:o]}A();function ph(e){if(!e||e.length===0)return[];let t=[];for(let n of e){let{chainId:e,nonce:r,...i}=n,a=n.address;t.push([e?On(e):`0x`,a,r?On(r):`0x`,...fh({},i)])}return t}yi(),Ld();async function mh({address:e,authorization:t,signature:n}){return Id(_i(e),await _u({authorization:t,signature:n}))}hi();const hh=new mi(8192);function gh(e,{enabled:t=!0,id:n}){if(!t||!n)return e();if(hh.get(n))return hh.get(n);let r=e().finally(()=>hh.delete(n));return hh.set(n,r),r}O(),Oo(),rs(),A(),Ba();function _h(e,t={}){return async(n,r={})=>{let{dedupe:i=!1,methods:a,retryDelay:o=150,retryCount:s=3,uid:c}={...t,...r},{method:l}=n;if(a?.exclude?.includes(l)||a?.include&&!a.include.includes(l))throw new Bo(Error(`method not supported`),{method:l});let u=i?jn(`${c}.${za(n)}`):void 0;return gh(()=>Im(async()=>{try{return await e(n)}catch(e){let t=e;switch(t.code){case Mo.code:throw new Mo(t);case M.code:throw new M(t);case No.code:throw new No(t,{method:n.method});case Po.code:throw new Po(t);case Fo.code:throw new Fo(t);case Io.code:throw new Io(t);case Lo.code:throw new Lo(t);case Ro.code:throw new Ro(t);case zo.code:throw new zo(t);case Bo.code:throw new Bo(t,{method:n.method});case Vo.code:throw new Vo(t);case Ho.code:throw new Ho(t);case Uo.code:throw new Uo(t);case Wo.code:throw new Wo(t);case Go.code:throw new Go(t);case Ko.code:throw new Ko(t);case qo.code:throw new qo(t);case Jo.code:throw new Jo(t);case Yo.code:throw new Yo(t);case Xo.code:throw new Xo(t);case Zo.code:throw new Zo(t);case Qo.code:throw new Qo(t);case $o.code:throw new $o(t);case es.code:throw new es(t);case ts.code:throw new ts(t);case 5e3:throw new Uo(t);default:throw e instanceof D?e:new ns(t)}}},{delay:({count:e,error:t})=>{if(t&&t instanceof To){let e=t?.headers?.get(`Retry-After`);if(e?.match(/\d/))return Number.parseInt(e,10)*1e3}return~~(1<vh(e)}),{enabled:i,id:u})}}function vh(e){return`code`in e&&typeof e.code==`number`?e.code===-1||e.code===Vo.code||e.code===Fo.code:e instanceof To&&e.status?e.status===403||e.status===408||e.status===413||e.status===429||e.status===500||e.status===502||e.status===503||e.status===504:!0}function R(e){return{formatters:void 0,fees:void 0,serializers:void 0,...e}}function yh(e,{errorInstance:t=Error(`timed out`),timeout:n,signal:r}){return new Promise((i,a)=>{(async()=>{let o;try{let s=new AbortController;n>0&&(o=setTimeout(()=>{r?s.abort():a(t)},n)),i(await e({signal:s?.signal||null}))}catch(e){e?.name===`AbortError`&&a(t),a(e)}finally{clearTimeout(o)}})()})}function bh(){return{current:0,take(){return this.current++},reset(){this.current=0}}}const xh=bh();Oo(),Ba();function Sh(e,t={}){return{async request(n){let{body:r,fetchFn:i=t.fetchFn??fetch,onRequest:a=t.onRequest,onResponse:o=t.onResponse,timeout:s=t.timeout??1e4}=n,c={...t.fetchOptions??{},...n.fetchOptions??{}},{headers:l,method:u,signal:d}=c;try{let t=await yh(async({signal:t})=>{let n={...c,body:za(Array.isArray(r)?r.map(e=>({jsonrpc:`2.0`,id:e.id??xh.take(),...e})):{jsonrpc:`2.0`,id:r.id??xh.take(),...r}),headers:{"Content-Type":`application/json`,...l},method:u||`POST`,signal:d||(s>0?t:null)},o=new Request(e,n),f=await a?.(o,n)??{...n,url:e};return await i(f.url??e,f)},{errorInstance:new Do({body:r,url:e}),timeout:s,signal:!0});o&&await o(t);let n;if(t.headers.get(`Content-Type`)?.startsWith(`application/json`))n=await t.json();else{n=await t.text();try{n=JSON.parse(n||`{}`)}catch(e){if(t.ok)throw e;n={error:n}}}if(!t.ok)throw new To({body:r,details:za(n.error)||t.statusText,headers:t.headers,status:t.status,url:e});return n}catch(t){throw t instanceof To||t instanceof Do?t:new To({body:r,cause:t,url:e})}}}}Di(),It(),A();function Ch(e){let t=(()=>typeof e==`string`?jn(e):typeof e.raw==`string`?e.raw:An(e.raw))(),n=jn(`Ethereum Signed Message: -${Ft(t)}`);return wi([n,t])}ei();function wh(e,t){return $r(Ch(e),t)}Ba(),O();var Th=class extends D{constructor({domain:e}){super(`Invalid domain "${za(e)}".`,{metaMessages:[`Must be a valid EIP-712 domain.`]})}},Eh=class extends D{constructor({primaryType:e,types:t}){super(`Invalid primary type \`${e}\` must be one of \`${JSON.stringify(Object.keys(t))}\`.`,{docsPath:`/api/glossary/Errors#typeddatainvalidprimarytypeerror`,metaMessages:["Check that the primary type is a key in `types`."]})}},Dh=class extends D{constructor({type:e}){super(`Struct type "${e}" is invalid.`,{metaMessages:[`Struct type must not be a Solidity type.`],name:`InvalidStructTypeError`})}};sn(),pi(),Ci(),It(),A(),Ii(),Ba();function Oh(e){let{domain:t,message:n,primaryType:r,types:i}=e,a=(e,t)=>{let n={...t};for(let t of e){let{name:e,type:r}=t;r===`address`&&(n[e]=n[e].toLowerCase())}return n},o=(()=>!i.EIP712Domain||!t?{}:a(i.EIP712Domain,t))(),s=(()=>{if(r!==`EIP712Domain`)return a(i[r],n)})();return za({domain:o,message:s,primaryType:r,types:i})}function kh(e){let{domain:t,message:n,primaryType:r,types:i}=e,a=(e,t)=>{for(let n of e){let{name:e,type:r}=n,o=t[e],s=r.match(Fi);if(s&&(typeof o==`number`||typeof o==`bigint`)){let[e,t,n]=s;k(o,{signed:t===`int`,size:Number.parseInt(n,10)/8})}if(r===`address`&&typeof o==`string`&&!bi(o))throw new fi({address:o});let c=r.match(Pi);if(c){let[e,t]=c;if(t&&Ft(o)!==Number.parseInt(t,10))throw new tn({expectedSize:Number.parseInt(t,10),givenSize:Ft(o)})}let l=i[r];l&&(jh(r),a(l,o))}};if(i.EIP712Domain&&t){if(typeof t!=`object`)throw new Th({domain:t});a(i.EIP712Domain,t)}if(r!==`EIP712Domain`)if(i[r])a(i[r],n);else throw new Eh({primaryType:r,types:i})}function Ah({domain:e}){return[typeof e?.name==`string`&&{name:`name`,type:`string`},e?.version&&{name:`version`,type:`string`},(typeof e?.chainId==`number`||typeof e?.chainId==`bigint`)&&{name:`chainId`,type:`uint256`},e?.verifyingContract&&{name:`verifyingContract`,type:`address`},e?.salt&&{name:`salt`,type:`bytes32`}].filter(Boolean)}function jh(e){if(e===`address`||e===`bool`||e===`string`||e.startsWith(`bytes`)||e.startsWith(`uint`)||e.startsWith(`int`))throw new Dh({type:e})}Yi(),Di(),A(),ei();function Mh(e){let{domain:t={},message:n,primaryType:r}=e,i={EIP712Domain:Ah({domain:t}),...e.types};kh({domain:t,message:n,primaryType:r,types:i});let a=[`0x1901`];return t&&a.push(Nh({domain:t,types:i})),r!==`EIP712Domain`&&a.push(Ph({data:n,primaryType:r,types:i})),$r(wi(a))}function Nh({domain:e,types:t}){return Ph({data:e,primaryType:`EIP712Domain`,types:t})}function Ph({data:e,primaryType:t,types:n}){let r=Fh({data:e,primaryType:t,types:n});return $r(r)}function Fh({data:e,primaryType:t,types:n}){let r=[{type:`bytes32`}],i=[Ih({primaryType:t,types:n})];for(let a of n[t]){let[t,o]=zh({types:n,name:a.name,type:a.type,value:e[a.name]});r.push(t),i.push(o)}return Li(r,i)}function Ih({primaryType:e,types:t}){let n=On(Lh({primaryType:e,types:t}));return $r(n)}function Lh({primaryType:e,types:t}){let n=``,r=Rh({primaryType:e,types:t});r.delete(e);let i=[e,...Array.from(r).sort()];for(let e of i)n+=`${e}(${t[e].map(({name:e,type:t})=>`${t} ${e}`).join(`,`)})`;return n}function Rh({primaryType:e,types:t},n=new Set){let r=e.match(/^\w*/u)?.[0];if(n.has(r)||t[r]===void 0)return n;n.add(r);for(let e of t[r])Rh({primaryType:e.type,types:t},n);return n}function zh({types:e,name:t,type:n,value:r}){if(e[n]!==void 0)return[{type:`bytes32`},$r(Fh({data:r,primaryType:n,types:e}))];if(n===`bytes`)return r=`0x${(r.length%2?`0`:``)+r.slice(2)}`,[{type:`bytes32`},$r(r)];if(n===`string`)return[{type:`bytes32`},$r(On(r))];if(n.lastIndexOf(`]`)===n.length-1){let i=n.slice(0,n.lastIndexOf(`[`)),a=r.map(n=>zh({name:t,type:i,types:e,value:n}));return[{type:`bytes32`},$r(Li(a.map(([e])=>e),a.map(([,e])=>e)))]}return[{type:n},r]}const Bh={checksum:new class extends Map{constructor(e){super(),Object.defineProperty(this,`maxSize`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&t!==void 0&&(this.delete(e),super.set(e,t)),t}set(e,t){if(super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=this.keys().next().value;e&&this.delete(e)}return this}}(8192)}.checksum;Qr(),If(),ap();function Vh(e,t={}){let{as:n=typeof e==`string`?`Hex`:`Bytes`}=t,r=Zr(mf(e));return n===`Bytes`?r:Vf(r)}function Hh(e,t={}){let{as:n=typeof e==`string`?`Hex`:`Bytes`}=t,r=gd(mf(e));return n===`Bytes`?r:Vf(r)}If(),qd(),ap(),ff();function Uh(e,t={}){let{compressed:n}=t,{prefix:r,x:i,y:a}=e;if(n===!1||typeof i==`bigint`&&typeof a==`bigint`){if(r!==4)throw new Yh({prefix:r,cause:new Zh});return}if(n===!0||typeof i==`bigint`&&a===void 0){if(r!==3&&r!==2)throw new Yh({prefix:r,cause:new Xh});return}throw new Jh({publicKey:e})}function Wh(e){let t=(()=>{if(Xf(e))return Kh(e);if(Of(e))return Gh(e);let{prefix:t,x:n,y:r}=e;return typeof n==`bigint`&&typeof r==`bigint`?{prefix:t??4,x:n,y:r}:{prefix:t,x:n}})();return Uh(t),t}function Gh(e){return Kh(Vf(e))}function Kh(e){if(e.length!==132&&e.length!==130&&e.length!==68)throw new Qh({publicKey:e});if(e.length===130){let t=BigInt(Gf(e,0,32)),n=BigInt(Gf(e,32,64));return{prefix:4,x:t,y:n}}if(e.length===132){let t=Number(Gf(e,0,1)),n=BigInt(Gf(e,1,33)),r=BigInt(Gf(e,33,65));return{prefix:t,x:n,y:r}}let t=Number(Gf(e,0,1)),n=BigInt(Gf(e,1,33));return{prefix:t,x:n}}function qh(e,t={}){Uh(e);let{prefix:n,x:r,y:i}=e,{includePrefix:a=!0}=t;return Rf(a?L(n,{size:1}):`0x`,L(r,{size:32}),typeof i==`bigint`?L(i,{size:32}):`0x`)}var Jh=class extends F{constructor({publicKey:e}){super(`Value \`${uf(e)}\` is not a valid public key.`,{metaMessages:[`Public key must contain:`,"- an `x` and `prefix` value (compressed)","- an `x`, `y`, and `prefix` value (uncompressed)"]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidError`})}},Yh=class extends F{constructor({prefix:e,cause:t}){super(`Prefix "${e}" is invalid.`,{cause:t}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidPrefixError`})}},Xh=class extends F{constructor(){super(`Prefix must be 2 or 3 for compressed public keys.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidCompressedPrefixError`})}},Zh=class extends F{constructor(){super(`Prefix must be 4 for uncompressed public keys.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidUncompressedPrefixError`})}},Qh=class extends F{constructor({publicKey:e}){super(`Value \`${e}\` is an invalid public key size.`,{metaMessages:[`Expected: 33 bytes (compressed + prefix), 64 bytes (uncompressed) or 65 bytes (uncompressed + prefix).`,`Received ${Kf(zf(e))} bytes.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidSerializedSizeError`})}};If(),qd();var $h=/^0x[a-fA-F0-9]{40}$/;function eg(e,t={}){let{strict:n=!0}=t;if(!$h.test(e))throw new og({address:e,cause:new sg});if(n){if(e.toLowerCase()===e)return;if(tg(e)!==e)throw new og({address:e,cause:new cg})}}function tg(e){if(Bh.has(e))return Bh.get(e);eg(e,{strict:!1});let t=e.substring(2).toLowerCase(),n=Vh(_f(t),{as:`Bytes`}),r=t.split(``);for(let e=0;e<40;e+=2)n[e>>1]>>4>=8&&r[e]&&(r[e]=r[e].toUpperCase()),(n[e>>1]&15)>=8&&r[e+1]&&(r[e+1]=r[e+1].toUpperCase());let i=`0x${r.join(``)}`;return Bh.set(e,i),i}function ng(e,t={}){let{checksum:n=!1}=t;return eg(e),n?tg(e):e}function rg(e,t={}){let n=Vh(`0x${qh(e).slice(4)}`).substring(26);return ng(`0x${n}`,t)}function ig(e,t){return eg(e,{strict:!1}),eg(t,{strict:!1}),e.toLowerCase()===t.toLowerCase()}function ag(e,t={}){let{strict:n=!0}=t??{};try{return eg(e,{strict:n}),!0}catch{return!1}}var og=class extends F{constructor({address:e,cause:t}){super(`Address "${e}" is invalid.`,{cause:t}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Address.InvalidAddressError`})}},sg=class extends F{constructor(){super(`Address is not a 20 byte (40 hexadecimal character) value.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Address.InvalidInputError`})}},cg=class extends F{constructor(){super(`Address does not match its checksum counterpart.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Address.InvalidChecksumError`})}};const lg=/^(.*)\[([0-9]*)\]$/,ug=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,dg=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;2n**(8n-1n)-1n,2n**(16n-1n)-1n,2n**(24n-1n)-1n,2n**(32n-1n)-1n,2n**(40n-1n)-1n,2n**(48n-1n)-1n,2n**(56n-1n)-1n,2n**(64n-1n)-1n,2n**(72n-1n)-1n,2n**(80n-1n)-1n,2n**(88n-1n)-1n,2n**(96n-1n)-1n,2n**(104n-1n)-1n,2n**(112n-1n)-1n,2n**(120n-1n)-1n,2n**(128n-1n)-1n,2n**(136n-1n)-1n,2n**(144n-1n)-1n,2n**(152n-1n)-1n,2n**(160n-1n)-1n,2n**(168n-1n)-1n,2n**(176n-1n)-1n,2n**(184n-1n)-1n,2n**(192n-1n)-1n,2n**(200n-1n)-1n,2n**(208n-1n)-1n,2n**(216n-1n)-1n,2n**(224n-1n)-1n,2n**(232n-1n)-1n,2n**(240n-1n)-1n,2n**(248n-1n)-1n,2n**(256n-1n)-1n,-(2n**(8n-1n)),-(2n**(16n-1n)),-(2n**(24n-1n)),-(2n**(32n-1n)),-(2n**(40n-1n)),-(2n**(48n-1n)),-(2n**(56n-1n)),-(2n**(64n-1n)),-(2n**(72n-1n)),-(2n**(80n-1n)),-(2n**(88n-1n)),-(2n**(96n-1n)),-(2n**(104n-1n)),-(2n**(112n-1n)),-(2n**(120n-1n)),-(2n**(128n-1n)),-(2n**(136n-1n)),-(2n**(144n-1n)),-(2n**(152n-1n)),-(2n**(160n-1n)),-(2n**(168n-1n)),-(2n**(176n-1n)),-(2n**(184n-1n)),-(2n**(192n-1n)),-(2n**(200n-1n)),-(2n**(208n-1n)),-(2n**(216n-1n)),-(2n**(224n-1n)),-(2n**(232n-1n)),-(2n**(240n-1n)),-(2n**(248n-1n)),-(2n**(256n-1n));const fg=2n**256n-1n;If(),qd(),ap();function pg(e,t,n){let{checksumAddress:r,staticPosition:i}=n,a=Ng(t.type);if(a){let[n,o]=a;return _g(e,{...t,type:o},{checksumAddress:r,length:n,staticPosition:i})}if(t.type===`tuple`)return xg(e,t,{checksumAddress:r,staticPosition:i});if(t.type===`address`)return gg(e,{checksum:r});if(t.type===`bool`)return vg(e);if(t.type.startsWith(`bytes`))return yg(e,t,{staticPosition:i});if(t.type.startsWith(`uint`)||t.type.startsWith(`int`))return bg(e,t);if(t.type===`string`)return Sg(e,{staticPosition:i});throw new Xg(t.type)}var mg=32,hg=32;function gg(e,t={}){let{checksum:n=!1}=t,r=e.readBytes(32);return[(e=>n?tg(e):e)(Vf(bf(r,-20))),32]}function _g(e,t,n){let{checksumAddress:r,length:i,staticPosition:a}=n;if(!i){let n=wf(e.readBytes(hg)),i=a+n,o=i+mg;e.setPosition(i);let s=wf(e.readBytes(mg)),c=Pg(t),l=0,u=[];for(let n=0;n48?xf(i,{signed:n}):wf(i,{signed:n}),32]}function xg(e,t,n){let{checksumAddress:r,staticPosition:i}=n,a=t.components.length===0||t.components.some(({name:e})=>!e),o=a?[]:{},s=0;if(Pg(t)){let n=wf(e.readBytes(hg)),c=i+n;for(let n=0;n0?Rf(t,e):t}}if(o)return{dynamic:!0,encoded:e}}return{dynamic:!1,encoded:Rf(...s.map(({encoded:e})=>e))}}function Og(e,{type:t}){let[,n]=t.split(`bytes`),r=Kf(e);if(!n){let t=e;return r%32!=0&&(t=Wf(t,Math.ceil((e.length-2)/2/32)*32)),{dynamic:!0,encoded:Rf(Uf(L(r,{size:32})),t)}}if(r!==Number.parseInt(n,10))throw new qg({expectedSize:Number.parseInt(n,10),value:e});return{dynamic:!1,encoded:Wf(e)}}function kg(e){if(typeof e!=`boolean`)throw new F(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:Uf(Bf(e))}}function Ag(e,{signed:t,size:n}){if(typeof n==`number`){let r=2n**(BigInt(n)-(t?1n:0n))-1n,i=t?-r-1n:0n;if(e>r||ee))}}function Ng(e){let t=e.match(/^(.*)\[(\d+)?\]$/);return t?[t[2]?Number(t[2]):null,t[1]]:void 0}function Pg(e){let{type:t}=e;if(t===`string`||t===`bytes`||t.endsWith(`[]`))return!0;if(t===`tuple`)return e.components?.some(Pg);let n=Ng(e.type);return!!(n&&Pg({...e,type:n[1]}))}qd();var Fg={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:1/0,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new zg({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new Rg({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new Lg({offset:e});let t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new Lg({offset:e});let t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){let n=t??this.position;return this.assertPosition(n+e-1),this.bytes.subarray(n,n+e)},inspectUint8(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){let t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){let t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){let t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,e&255),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();let e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();let n=this.inspectBytes(e);return this.position+=t??e,n},readUint8(){this.assertReadLimit(),this._touch();let e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();let e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();let e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();let e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){let t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===1/0)return;let e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}};function Ig(e,{recursiveReadLimit:t=8192}={}){let n=Object.create(Fg);return n.bytes=e,n.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}var Lg=class extends F{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Cursor.NegativeOffsetError`})}},Rg=class extends F{constructor({length:e,position:t}){super(`Position \`${t}\` is out of bounds (\`0 < position < ${e}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Cursor.PositionOutOfBoundsError`})}},zg=class extends F{constructor({count:e,limit:t}){super(`Recursive read limit of \`${t}\` exceeded (recursive read count: \`${e}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Cursor.RecursiveReadLimitExceededError`})}};Ot(),If(),qd(),ap();function Bg(e,t,n={}){let{as:r=`Array`,checksumAddress:i=!1}=n,a=typeof t==`string`?gf(t):t,o=Ig(a);if(yf(a)===0&&e.length>0)throw new Gg;if(yf(a)&&yf(a)<32)throw new Wg({data:typeof t==`string`?t:Vf(t),parameters:e,size:yf(a)});let s=0,c=r===`Array`?[]:{};for(let t=0;t$g(e))):t_(e)}function e_(e){let t=e.reduce((e,t)=>e+t.length,0),n=n_(t);return{length:(()=>t<=55?1+t:1+n+t)(),encode(r){t<=55?r.pushByte(192+t):(r.pushByte(247+n),n===1?r.pushUint8(t):n===2?r.pushUint16(t):n===3?r.pushUint24(t):r.pushUint32(t));for(let{encode:t}of e)t(r)}}}function t_(e){let t=typeof e==`string`?gf(e):e,n=n_(t.length);return{length:(()=>t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+n+t.length)(),encode(e){t.length===1&&t[0]<128?e.pushBytes(t):t.length<=55?(e.pushByte(128+t.length),e.pushBytes(t)):(e.pushByte(183+n),n===1?e.pushUint8(t.length):n===2?e.pushUint16(t.length):n===3?e.pushUint24(t.length):e.pushUint32(t.length),e.pushBytes(t))}}}function n_(e){if(e<2**8)return 1;if(e<2**16)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new F(`Length is too large.`)}qd(),ap(),ff();function r_(e,t={}){let{recovered:n}=t;if(e.r===void 0||e.s===void 0||n&&e.yParity===void 0)throw new h_({signature:e});if(e.r<0n||e.r>fg)throw new g_({value:e.r});if(e.s<0n||e.s>fg)throw new __({value:e.s});if(typeof e.yParity==`number`&&e.yParity!==0&&e.yParity!==1)throw new v_({value:e.yParity})}function i_(e){return a_(Vf(e))}function a_(e){if(e.length!==130&&e.length!==132)throw new m_({signature:e});let t=BigInt(Gf(e,0,32)),n=BigInt(Gf(e,32,64)),r=(()=>{let t=Number(`0x${e.slice(130)}`);if(!Number.isNaN(t))try{return f_(t)}catch{throw new v_({value:t})}})();return r===void 0?{r:t,s:n}:{r:t,s:n,yParity:r}}function o_(e){if(e.r!==void 0&&e.s!==void 0)return s_(e)}function s_(e){let t=(()=>typeof e==`string`?a_(e):e instanceof Uint8Array?i_(e):typeof e.r==`string`?l_(e):e.v?c_(e):{r:e.r,s:e.s,...e.yParity===void 0?{}:{yParity:e.yParity}})();return r_(t),t}function c_(e){return{r:e.r,s:e.s,yParity:f_(e.v)}}function l_(e){let t=(()=>{let t=e.v?Number(e.v):void 0,n=e.yParity?Number(e.yParity):void 0;if(typeof t==`number`&&typeof n!=`number`&&(n=f_(t)),typeof n!=`number`)throw new v_({value:e.yParity});return n})();return{r:BigInt(e.r),s:BigInt(e.s),yParity:t}}function u_(e){r_(e);let t=e.r,n=e.s;return Rf(L(t,{size:32}),L(n,{size:32}),typeof e.yParity==`number`?L(p_(e.yParity),{size:1}):`0x`)}function d_(e){let{r:t,s:n,yParity:r}=e;return[r?`0x01`:`0x`,t===0n?`0x`:qf(L(t)),n===0n?`0x`:qf(L(n))]}function f_(e){if(e===0||e===27)return 0;if(e===1||e===28)return 1;if(e>=35)return e%2==0?1:0;throw new y_({value:e})}function p_(e){if(e===0)return 27;if(e===1)return 28;throw new v_({value:e})}var m_=class extends F{constructor({signature:e}){super(`Value \`${e}\` is an invalid signature size.`,{metaMessages:[`Expected: 64 bytes or 65 bytes.`,`Received ${Kf(zf(e))} bytes.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidSerializedSizeError`})}},h_=class extends F{constructor({signature:e}){super(`Signature \`${uf(e)}\` is missing either an \`r\`, \`s\`, or \`yParity\` property.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.MissingPropertiesError`})}},g_=class extends F{constructor({value:e}){super(`Value \`${e}\` is an invalid r value. r must be a positive integer less than 2^256.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidRError`})}},__=class extends F{constructor({value:e}){super(`Value \`${e}\` is an invalid s value. s must be a positive integer less than 2^256.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidSError`})}},v_=class extends F{constructor({value:e}){super(`Value \`${e}\` is an invalid y-parity value. Y-parity must be 0 or 1.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidYParityError`})}},y_=class extends F{constructor({value:e}){super(`Value \`${e}\` is an invalid v value. v must be 27, 28 or >=35.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidVError`})}};ap();function b_(e,t={}){return typeof e.chainId==`string`?x_(e):{...e,...t.signature}}function x_(e){let{address:t,chainId:n,nonce:r}=e,i=o_(e);return{address:t,chainId:Number(n),nonce:BigInt(r),...i}}function S_(e){return C_(e,{presign:!0})}function C_(e,t={}){let{presign:n}=t;return Vh(Rf(`0x05`,Qg(w_(n?{address:e.address,chainId:e.chainId,nonce:e.nonce}:e))))}function w_(e){let{address:t,chainId:n,nonce:r}=e,i=o_(e);return[n?L(n):`0x`,t,r?L(r):`0x`,...i?d_(i):[]]}lu(),If(),ap();function T_(e){let{privateKey:t}=e,n=Jl.ProjectivePoint.fromPrivateKey(zf(t).slice(2));return Wh(n)}function E_(e={}){let{as:t=`Hex`}=e,n=Jl.utils.randomPrivateKey();return t===`Hex`?Vf(n):n}function D_(e){return rg(O_(e))}function O_(e){let{payload:t,signature:n}=e,{r,s:i,yParity:a}=n,o=new Jl.Signature(BigInt(r),BigInt(i)).addRecoveryBit(a).recoverPublicKey(zf(t).substring(2));return Wh(o)}function k_(e){let{extraEntropy:t=!1,hash:n,payload:r,privateKey:i}=e,{r:a,s:o,recovery:s}=Jl.sign(mf(r),mf(i),{extraEntropy:typeof t==`boolean`?t:zf(t).slice(2),lowS:!0,...n?{prehash:!0}:{}});return{r:a,s:o,yParity:s}}qd(),ap();const A_=Ug(`(uint256 chainId, address delegation, uint256 nonce, uint8 yParity, uint256 r, uint256 s), address to, bytes data`);function j_(e){if(typeof e==`string`){if(Gf(e,-32)!==`0x8010801080108010801080108010801080108010801080108010801080108010`)throw new F_(e)}else r_(e.authorization)}function M_(e){j_(e);let t=Yf(Gf(e,-64,-32)),n=Gf(e,-t-64,-64),r=Gf(e,0,-t-64),[i,a,o]=Bg(A_,n);return{authorization:b_({address:i.delegation,chainId:Number(i.chainId),nonce:i.nonce,yParity:i.yParity,r:i.r,s:i.s}),signature:r,...o&&o!==`0x`?{data:o,to:a}:{}}}function N_(e){let{data:t,signature:n}=e;j_(e);let r=D_({payload:S_(e.authorization),signature:s_(e.authorization)}),i=Vg(A_,[{...e.authorization,delegation:e.authorization.address,chainId:BigInt(e.authorization.chainId)},e.to??r,t??`0x`]),a=L(Kf(i),{size:32});return Rf(n,i,a,`0x8010801080108010801080108010801080108010801080108010801080108010`)}function P_(e){try{return j_(e),!0}catch{return!1}}var F_=class extends F{constructor(e){super(`Value \`${e}\` is an invalid ERC-8010 wrapped signature.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`SignatureErc8010.InvalidWrappedSignatureError`})}};mo(),A();async function I_(e,{blockHash:t,blockNumber:n,blockTag:r,hash:i,index:a}){let o=r||`latest`,s=n===void 0?void 0:k(n),c=null;if(i?c=await e.request({method:`eth_getTransactionByHash`,params:[i]},{dedupe:!0}):t?c=await e.request({method:`eth_getTransactionByBlockHashAndIndex`,params:[t,k(a)]},{dedupe:!0}):(s||o)&&(c=await e.request({method:`eth_getTransactionByBlockNumberAndIndex`,params:[s||o,k(a)]},{dedupe:!!s})),!c)throw new lo({blockHash:t,blockNumber:n,blockTag:o,hash:i,index:a});return(e.chain?.formatters?.transaction?.format||id)(c,`getTransaction`)}mo();async function L_(e,{hash:t}){let n=await e.request({method:`eth_getTransactionReceipt`,params:[t]},{dedupe:!0});if(!n)throw new uo({hash:t});return(e.chain?.formatters?.transactionReceipt?.format||Rm)(n,`getTransactionReceipt`)}qd();function R_(e){let t=!0,n=``,r=0,i=``,a=!1;for(let o=0;oz_(Object.values(e)[n],t)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(r)?n===`number`||n===`bigint`:/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(r)?n===`string`||e instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(r)?Array.isArray(e)&&e.every(e=>z_(e,{...t,type:r.replace(/(\[[0-9]{0,}\])$/,``)})):!1}}function B_(e,t,n){for(let r in e){let i=e[r],a=t[r];if(i.type===`tuple`&&a.type===`tuple`&&`components`in i&&`components`in a)return B_(i.components,a.components,n[r]);let o=[i.type,a.type];if((()=>o.includes(`address`)&&o.includes(`bytes20`)?!0:o.includes(`address`)&&o.includes(`string`)||o.includes(`address`)&&o.includes(`bytes`)?ag(n[r],{strict:!1}):!1)())return o}}Ot(),qd(),ap();function V_(e,t={}){let{prepare:n=!0}=t,r=(()=>Array.isArray(e)||typeof e==`string`?wt(e):e)();return{...r,...n?{hash:G_(r)}:{}}}function H_(e,t,n){let{args:r=[],prepare:i=!0}=n??{},a=Xf(t,{strict:!1}),o=e.filter(e=>a?e.type===`function`||e.type===`error`?U_(e)===Gf(t,0,4):e.type===`event`?G_(e)===t:!1:`name`in e&&e.name===t);if(o.length===0)throw new q_({name:t});if(o.length===1)return{...o[0],...i?{hash:G_(o[0])}:{}};let s;for(let e of o)if(`inputs`in e){if(!r||r.length===0){if(!e.inputs||e.inputs.length===0)return{...e,...i?{hash:G_(e)}:{}};continue}if(e.inputs&&e.inputs.length!==0&&e.inputs.length===r.length&&r.every((t,n)=>{let r=`inputs`in e&&e.inputs[n];return r?z_(t,r):!1})){if(s&&`inputs`in s&&s.inputs){let t=B_(e.inputs,s.inputs,r);if(t)throw new K_({abiItem:e,type:t[0]},{abiItem:s,type:t[1]})}s=e}}let c=(()=>{if(s)return s;let[e,...t]=o;return{...e,overloads:t}})();if(!c)throw new q_({name:t});return{...c,...i?{hash:G_(c)}:{}}}function U_(...e){let t=(()=>{if(Array.isArray(e[0])){let[t,n]=e;return H_(t,n)}return e[0]})();return Gf(G_(t),0,4)}function W_(...e){let t=(()=>{if(Array.isArray(e[0])){let[t,n]=e;return H_(t,n)}return e[0]})(),n=(()=>typeof t==`string`?t:le(t))();return R_(n)}function G_(...e){let t=(()=>{if(Array.isArray(e[0])){let[t,n]=e;return H_(t,n)}return e[0]})();return typeof t!=`string`&&`hash`in t&&t.hash?t.hash:Vh(Hf(W_(t)))}var K_=class extends F{constructor(e,t){super(`Found ambiguous types in overloaded ABI Items.`,{metaMessages:[`\`${e.type}\` in \`${R_(le(e.abiItem))}\`, and`,`\`${t.type}\` in \`${R_(le(t.abiItem))}\``,``,`These types encode differently and cannot be distinguished at runtime.`,`Remove one of the ambiguous items in the ABI.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`AbiItem.AmbiguityError`})}},q_=class extends F{constructor({name:e,data:t,type:n=`item`}){let r=(()=>e?` with name "${e}"`:t?` with data "${t}"`:``)();super(`ABI ${n}${r} not found.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`AbiItem.NotFoundError`})}};ap();function J_(...e){let[t,n=[]]=(()=>{if(Array.isArray(e[0])){let[t,n,r]=e;return[Y_(t,n,{args:r}),r]}let[t,n]=e;return[t,n]})(),{overloads:r}=t,i=r?Y_([t,...r],t.name,{args:n}):t,a=X_(i),o=n.length>0?Vg(i.inputs,n):void 0;return o?Rf(a,o):a}function Y_(e,t,n){let r=H_(e,t,n);if(r.type!==`function`)throw new q_({name:t,type:`function`});return r}function X_(e){return U_(e)}const Z_=`0x0000000000000000000000000000000000000000`;qd(),ap();function Q_(e){if(Gf(e,-32)!==`0x6492649264926492649264926492649264926492649264926492649264926492`)throw new tv(e)}function $_(e){let{data:t,signature:n,to:r}=e;return Rf(Vg(Ug(`address, bytes, bytes`),[r,t,n]),`0x6492649264926492649264926492649264926492649264926492649264926492`)}function ev(e){try{return Q_(e),!0}catch{return!1}}var tv=class extends F{constructor(e){super(`Value \`${e}\` is an invalid ERC-6492 wrapped signature.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`SignatureErc6492.InvalidWrappedSignatureError`})}};lu(),Dn(),Hn();function nv({r:e,s:t,to:n=`hex`,v:r,yParity:i}){let a=(()=>{if(i===0||i===1)return i;if(r&&(r===27n||r===28n||r>=35n))return r%2n==0n?1:0;throw Error("Invalid `v` or `yParity` value")})(),o=`0x${new Jl.Signature(wn(e),wn(t)).toCompactHex()}${a===0?`1b`:`1c`}`;return n===`hex`?o:Ln(o)}hp(),xp(),wo(),Ap(),sa(),yi(),Ld(),Di(),Pt(),Dn(),A(),pm();async function rv(e,t){let{address:n,hash:r,erc6492VerifierAddress:i=t.universalSignatureVerifierAddress??e.chain?.contracts?.erc6492Verifier?.address,multicallAddress:a=t.multicallAddress??e.chain?.contracts?.multicall3?.address}=t,o=(()=>{let e=t.signature;return Nt(e)?e:typeof e==`object`&&`r`in e&&`s`in e?nv(e):An(e)})();try{return P_(o)?await iv(e,{...t,multicallAddress:a,signature:o}):await av(e,{...t,verifierAddress:i,signature:o})}catch(e){try{if(Id(_i(n),await fu({hash:r,signature:o})))return!0}catch{}if(e instanceof sv)return!1;throw e}}async function iv(e,t){let{address:n,blockNumber:r,blockTag:i,hash:a,multicallAddress:o}=t,{authorization:s,data:c,signature:l,to:u}=M_(t.signature);if(await Xm(e,{address:n,blockNumber:r,blockTag:i})===Ei([`0xef0100`,s.address]))return await ov(e,{address:n,blockNumber:r,blockTag:i,hash:a,signature:l});let d={address:s.address,chainId:Number(s.chainId),nonce:Number(s.nonce),r:k(s.r,{size:32}),s:k(s.s,{size:32}),yParity:s.yParity};if(!await mh({address:n,authorization:d}))throw new sv;let f=await E(e,mm,`readContract`)({...o?{address:o}:{code:bp},authorizationList:[d],abi:up,blockNumber:r,blockTag:`pending`,functionName:`aggregate3`,args:[[...c?[{allowFailure:!0,target:u??n,callData:c}]:[],{allowFailure:!0,target:n,callData:oa({abi:pp,functionName:`isValidSignature`,args:[a,l]})}]]});if((f[f.length-1]?.returnData)?.startsWith(`0x1626ba7e`))return!0;throw new sv}async function av(e,t){let{address:n,factory:r,factoryData:i,hash:a,signature:o,verifierAddress:s,...c}=t,l=await(async()=>!r&&!i||ev(o)?o:$_({data:i,signature:o,to:r}))(),u=s?{to:s,data:oa({abi:mp,functionName:`isValidSig`,args:[n,a,l]}),...c}:{data:Op({abi:mp,args:[n,a,l],bytecode:yp}),...c},{data:d}=await E(e,sm,`call`)(u).catch(e=>{throw e instanceof vo?new sv:e});if(Tn(d??`0x0`))return!0;throw new sv}async function ov(e,t){let{address:n,blockNumber:r,blockTag:i,hash:a,signature:o}=t;if((await E(e,mm,`readContract`)({address:n,abi:pp,args:[a,o],blockNumber:r,blockTag:i,functionName:`isValidSignature`}).catch(e=>{throw e instanceof yo?new sv:e})).startsWith(`0x1626ba7e`))return!0;throw new sv}var sv=class extends Error{};Dn(),Ba();function cv(e,{emitOnBegin:t=!1,emitMissed:n=!1,onBlockNumber:r,onError:i,poll:a,pollingInterval:o=e.pollingInterval}){let s=(()=>a===void 0?!(e.transport.type===`webSocket`||e.transport.type===`ipc`||e.transport.type===`fallback`&&(e.transport.transports[0].config.type===`webSocket`||e.transport.transports[0].config.type===`ipc`)):a)(),c;return s?(()=>{let a=za([`watchBlockNumber`,e.uid,t,n,o]);return vm(a,{onBlockNumber:r,onError:i},r=>bm(async()=>{try{let t=await E(e,Em,`getBlockNumber`)({cacheTime:0});if(c!==void 0){if(t===c)return;if(t-c>1&&n)for(let e=c+1n;ec)&&(r.onBlockNumber(t,c),c=t)}catch(e){r.onError?.(e)}},{emitOnBegin:t,interval:o}))})():(()=>{let a=za([`watchBlockNumber`,e.uid,t,n]);return vm(a,{onBlockNumber:r,onError:i},t=>{let n=!0,r=()=>n=!1;return(async()=>{try{let{unsubscribe:i}=await(()=>{if(e.transport.type===`fallback`){let t=e.transport.transports.find(e=>e.config.type===`webSocket`||e.config.type===`ipc`);return t?t.value:e.transport}return e.transport})().subscribe({params:[`newHeads`],onData(e){if(!n)return;let r=wn(e.result?.number);t.onBlockNumber(r,c),c=r},onError(e){t.onError?.(e)}});r=i,n||r()}catch(e){i?.(e)}})(),()=>r()})})()}mo(),Ip(),Ba();async function lv(e,t){let{checkReplacement:n=!0,confirmations:r=1,hash:i,onReplaced:a,retryCount:o=6,retryDelay:s=({count:e})=>~~(1<t.pollingInterval?t.pollingInterval:e.chain?.experimental_preconfirmationTime?e.chain.experimental_preconfirmationTime:e.pollingInterval)(),d,f,p,m=!1,h,g,{promise:_,resolve:v,reject:y}=Fp(),b=c?setTimeout(()=>{g?.(),h?.(),y(new po({hash:i}))},c):void 0;return h=vm(l,{onReplaced:a,resolve:v,reject:y},async t=>{if(p=await E(e,L_,`getTransactionReceipt`)({hash:i}).catch(()=>void 0),p&&r<=1){clearTimeout(b),t.resolve(p),h?.();return}g=E(e,cv,`watchBlockNumber`)({emitMissed:!0,emitOnBegin:!0,poll:!0,pollingInterval:u,async onBlockNumber(a){let c=e=>{clearTimeout(b),g?.(),e(),h?.()},l=a;if(!m)try{if(p){if(r>1&&(!p.blockNumber||l-p.blockNumber+1nt.resolve(p));return}if(n&&!d&&(m=!0,await Im(async()=>{d=await E(e,I_,`getTransaction`)({hash:i}),d.blockNumber&&(l=d.blockNumber)},{delay:s,retryCount:o}),m=!1),p=await E(e,L_,`getTransactionReceipt`)({hash:i}),r>1&&(!p.blockNumber||l-p.blockNumber+1nt.resolve(p))}catch(n){if(n instanceof lo||n instanceof uo){if(!d){m=!1;return}try{f=d,m=!0;let n=await Im(()=>E(e,ld,`getBlock`)({blockNumber:l,includeTransactions:!0}),{delay:s,retryCount:o,shouldRetry:({error:e})=>e instanceof nd});m=!1;let i=n.transactions.find(({from:e,nonce:t})=>e===f.from&&t===f.nonce);if(!i||(p=await E(e,L_,`getTransactionReceipt`)({hash:i.hash}),r>1&&(!p.blockNumber||l-p.blockNumber+1n{t.onReplaced?.({reason:a,replacedTransaction:f,transaction:i,transactionReceipt:p}),t.resolve(p)})}catch(e){c(()=>t.reject(e))}}else c(()=>t.reject(n))}}})}),_}mo();async function uv(e,{serializedTransaction:t,throwOnReceiptRevert:n,timeout:r}){let i=await e.request({method:`eth_sendRawTransactionSync`,params:r?[t,k(r)]:[t]},{retryCount:0}),a=(e.chain?.formatters?.transactionReceipt?.format||Rm)(i);if(a.status===`reverted`&&n)throw new fo({receipt:a});return a}A();async function dv(e,{chain:t}){let{id:n,name:r,nativeCurrency:i,rpcUrls:a,blockExplorers:o}=t;await e.request({method:`wallet_addEthereumChain`,params:[{chainId:k(n),chainName:r,nativeCurrency:i,rpcUrls:a.default.http,blockExplorerUrls:o?Object.values(o).map(({url:e})=>e):void 0}]},{dedupe:!0,retryCount:0})}Ap();function fv(e,t){let{abi:n,args:r,bytecode:i,...a}=t,o=Op({abi:n,args:r,bytecode:i});return Nm(e,{...a,...a.authorizationList?{to:null}:{},data:o})}yi();async function pv(e){return e.account?.type===`local`?[e.account.address]:(await e.request({method:`eth_accounts`},{dedupe:!0})).map(e=>gi(e))}na(),A();async function mv(e,t={}){let{account:n=e.account,chainId:r}=t,i=n?ta(n):void 0,a=r?[i?.address,[k(r)]]:[i?.address],o=await e.request({method:`wallet_getCapabilities`,params:a}),s={};for(let[e,t]of Object.entries(o)){s[Number(e)]={};for(let[n,r]of Object.entries(t))n===`addSubAccount`&&(n=`unstable_addSubAccount`),s[Number(e)][n]=r}return typeof r==`number`?s[r]:s}async function hv(e){return await e.request({method:`wallet_getPermissions`},{dedupe:!0})}na(),Ld();async function gv(e,t){let{account:n=e.account,chainId:r,nonce:i}=t;if(!n)throw new Dm({docsPath:`/docs/eip7702/prepareAuthorization`});let a=ta(n),o=(()=>{if(t.executor)return t.executor===`self`?t.executor:ta(t.executor)})(),s={address:t.contractAddress??t.address,chainId:r,nonce:i};return s.chainId===void 0&&(s.chainId=e.chain?.id??await E(e,jd,`getChainId`)({})),s.nonce===void 0&&(s.nonce=await E(e,pd,`getTransactionCount`)({address:a.address,blockTag:`pending`}),(o===`self`||o?.address&&Id(o.address,a.address))&&(s.nonce+=1)),s}yi();async function _v(e){return(await e.request({method:`eth_requestAccounts`},{dedupe:!0,retryCount:0})).map(e=>_i(e))}async function vv(e,t){return e.request({method:`wallet_requestPermissions`,params:[t]},{retryCount:0})}async function yv(e,t){let{chain:n=e.chain}=t,r=t.timeout??Math.max((n?.blockTime??0)*3,5e3),i=await Vm(e,t);return await Um(e,{...t,id:i.id,timeout:r})}na(),O(),mo(),Iu(),Uu(),hi(),Qu();var bv=new mi(128);async function xv(e,t){let{account:n=e.account,chain:r=e.chain,accessList:i,authorizationList:a,blobs:o,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,pollingInterval:m,throwOnReceiptRevert:h,type:g,value:_,...v}=t,y=t.timeout??Math.max((r?.blockTime??0)*3,5e3);if(n===void 0)throw new Dm({docsPath:`/docs/actions/wallet/sendTransactionSync`});let b=n?ta(n):null;try{Zu(t);let n=await(async()=>{if(t.to)return t.to;if(t.to!==null&&a&&a.length>0)return await _u({authorization:a[0]}).catch(()=>{throw new D("`to` is required. Could not infer from `authorizationList`.")})})();if(b?.type===`json-rpc`||b===null){let t;r!==null&&(t=await E(e,jd,`getChainId`)({}),km({currentChainId:t,chain:r}));let x=e.chain?.formatters?.transactionRequest?.format,S=(x||zu)({...Fu(v,{format:x}),accessList:i,authorizationList:a,blobs:o,chainId:t,data:s,from:b?.address,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,to:n,type:g,value:_},`sendTransaction`),C=bv.get(e.uid),w=C?`wallet_sendTransaction`:`eth_sendTransaction`,ee=await(async()=>{try{return await e.request({method:w,params:[S]},{retryCount:0})}catch(t){if(C===!1)throw t;let n=t;if(n.name===`InvalidInputRpcError`||n.name===`InvalidParamsRpcError`||n.name===`MethodNotFoundRpcError`||n.name===`MethodNotSupportedRpcError`)return await e.request({method:`wallet_sendTransaction`,params:[S]},{retryCount:0}).then(t=>(bv.set(e.uid,!0),t)).catch(t=>{let r=t;throw r.name===`MethodNotFoundRpcError`||r.name===`MethodNotSupportedRpcError`?(bv.set(e.uid,!1),n):r});throw n}})(),te=await E(e,lv,`waitForTransactionReceipt`)({checkReplacement:!1,hash:ee,pollingInterval:m,timeout:y});if(h&&te.status===`reverted`)throw new fo({receipt:te});return te}if(b?.type===`local`){let t=await E(e,Pd,`prepareTransactionRequest`)({account:b,accessList:i,authorizationList:a,blobs:o,chain:r,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,nonceManager:b.nonceManager,parameters:[...Md,`sidecars`],type:g,value:_,...v,to:n}),m=r?.serializers?.transaction,y=await b.signTransaction(t,{serializer:m});return await E(e,uv,`sendRawTransactionSync`)({serializedTransaction:y,throwOnReceiptRevert:h})}throw b?.type===`smart`?new Om({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:`/docs/actions/bundler/sendUserOperation`,type:`smart`}):new Om({docsPath:`/docs/actions/wallet/sendTransactionSync`,type:b?.type})}catch(e){throw e instanceof Om?e:Am(e,{...t,account:b,chain:t.chain||void 0})}}async function Sv(e,t){let{id:n}=t;await e.request({method:`wallet_showCallsStatus`,params:[n]})}na();async function Cv(e,t){let{account:n=e.account}=t;if(!n)throw new Dm({docsPath:`/docs/eip7702/signAuthorization`});let r=ta(n);if(!r.signAuthorization)throw new Om({docsPath:`/docs/eip7702/signAuthorization`,metaMessages:["The `signAuthorization` Action does not support JSON-RPC Accounts."],type:r.type});let i=await gv(e,t);return r.signAuthorization(i)}na(),A();async function wv(e,{account:t=e.account,message:n}){if(!t)throw new Dm({docsPath:`/docs/actions/wallet/signMessage`});let r=ta(t);if(r.signMessage)return r.signMessage({message:n});let i=(()=>typeof n==`string`?jn(n):n.raw instanceof Uint8Array?On(n.raw):n.raw)();return e.request({method:`personal_sign`,params:[i,r.address]},{retryCount:0})}na(),A(),Uu(),Qu();async function Tv(e,t){let{account:n=e.account,chain:r=e.chain,...i}=t;if(!n)throw new Dm({docsPath:`/docs/actions/wallet/signTransaction`});let a=ta(n);Zu({account:a,...t});let o=await E(e,jd,`getChainId`)({});r!==null&&km({currentChainId:o,chain:r});let s=(r?.formatters||e.chain?.formatters)?.transactionRequest?.format||zu;return a.signTransaction?a.signTransaction({...i,chainId:o},{serializer:e.chain?.serializers?.transaction}):await e.request({method:`eth_signTransaction`,params:[{...s(i,`signTransaction`),chainId:k(o),from:a.address}]},{retryCount:0})}na();async function Ev(e,t){let{account:n=e.account,domain:r,message:i,primaryType:a}=t;if(!n)throw new Dm({docsPath:`/docs/actions/wallet/signTypedData`});let o=ta(n),s={EIP712Domain:Ah({domain:r}),...t.types};if(kh({domain:r,message:i,primaryType:a,types:s}),o.signTypedData)return o.signTypedData({domain:r,message:i,primaryType:a,types:s});let c=Oh({domain:r,message:i,primaryType:a,types:s});return e.request({method:`eth_signTypedData_v4`,params:[o.address,c]},{retryCount:0})}A();async function Dv(e,{id:t}){await e.request({method:`wallet_switchEthereumChain`,params:[{chainId:k(t)}]},{retryCount:0})}async function Ov(e,t){return await e.request({method:`wallet_watchAsset`,params:t},{retryCount:0})}async function kv(e,t){return Pm.internal(e,xv,`sendTransactionSync`,t)}function Av(e){return{addChain:t=>dv(e,t),deployContract:t=>fv(e,t),getAddresses:()=>pv(e),getCallsStatus:t=>Hm(e,t),getCapabilities:t=>mv(e,t),getChainId:()=>jd(e),getPermissions:()=>hv(e),prepareAuthorization:t=>gv(e,t),prepareTransactionRequest:t=>Pd(e,t),requestAddresses:()=>_v(e),requestPermissions:t=>vv(e,t),sendCalls:t=>Vm(e,t),sendCallsSync:t=>yv(e,t),sendRawTransaction:t=>jm(e,t),sendRawTransactionSync:t=>uv(e,t),sendTransaction:t=>Nm(e,t),sendTransactionSync:t=>xv(e,t),showCallsStatus:t=>Sv(e,t),signAuthorization:t=>Cv(e,t),signMessage:t=>wv(e,t),signTransaction:t=>Tv(e,t),signTypedData:t=>Ev(e,t),switchChain:t=>Dv(e,t),waitForCallsStatus:t=>Um(e,t),watchAsset:t=>Ov(e,t),writeContract:t=>Pm(e,t),writeContractSync:t=>kv(e,t)}}function jv(e){let{key:t=`wallet`,name:n=`Wallet Client`,transport:r}=e;return Ym({...e,key:t,name:n,transport:r,type:`walletClient`}).extend(Av)}function Mv({key:e,methods:t,name:n,request:r,retryCount:i=3,retryDelay:a=150,timeout:o,type:s},c){let l=Jm();return{config:{key:e,methods:t,name:n,request:r,retryCount:i,retryDelay:a,timeout:o,type:s},request:_h(r,{methods:t,retryCount:i,retryDelay:a,uid:l}),value:c}}function Nv(e,t={}){let{key:n=`custom`,methods:r,name:i=`Custom Provider`,retryDelay:a}=t;return({retryCount:o})=>Mv({key:n,methods:r,name:i,request:e.request.bind(e),retryCount:t.retryCount??o,retryDelay:a,type:`custom`})}ju(),rs();function Pv(e,t={}){let{key:n=`fallback`,name:r=`Fallback`,rank:i=!1,shouldThrow:a=Fv,retryCount:o,retryDelay:s}=t;return(({chain:t,pollingInterval:c=4e3,timeout:l,...u})=>{let d=e,f=()=>{},p=Mv({key:n,name:r,async request({method:e,params:n}){let r,i=async(o=0)=>{let s=d[o]({...u,chain:t,retryCount:0,timeout:l});try{let t=await s.request({method:e,params:n});return f({method:e,params:n,response:t,transport:s,status:`success`}),t}catch(c){if(f({error:c,method:e,params:n,transport:s,status:`error`}),a(c)||o===d.length-1||(r??=d.slice(o+1).some(n=>{let{include:r,exclude:i}=n({chain:t}).config.methods||{};return r?r.includes(e):i?!i.includes(e):!0}),!r))throw c;return i(o+1)}};return i()},retryCount:o,retryDelay:s,type:`fallback`},{onResponse:e=>f=e,transports:d.map(e=>e({chain:t,retryCount:0}))});if(i){let e=typeof i==`object`?i:{};Iv({chain:t,interval:e.interval??c,onTransports:e=>d=e,ping:e.ping,sampleCount:e.sampleCount,timeout:e.timeout,transports:d,weights:e.weights})}return p})}function Fv(e){return!!(`code`in e&&typeof e.code==`number`&&(e.code===zo.code||e.code===Uo.code||yu.nodeMessage.test(e.message)||e.code===5e3))}function Iv({chain:e,interval:t=4e3,onTransports:n,ping:r,sampleCount:i=10,timeout:a=1e3,transports:o,weights:s={}}){let{stability:c=.7,latency:l=.3}=s,u=[],d=async()=>{let s=await Promise.all(o.map(async t=>{let n=t({chain:e,retryCount:0,timeout:a}),i=Date.now(),o,s;try{await(r?r({transport:n}):n.request({method:`net_listening`})),s=1}catch{s=0}finally{o=Date.now()}return{latency:o-i,success:s}}));u.push(s),u.length>i&&u.shift();let f=Math.max(...u.map(e=>Math.max(...e.map(({latency:e})=>e)))),p=o.map((e,t)=>{let n=u.map(e=>e[t].latency),r=1-n.reduce((e,t)=>e+t,0)/n.length/f,i=u.map(e=>e[t].success),a=i.reduce((e,t)=>e+t,0)/i.length;return a===0?[0,t]:[l*r+c*a,t]}).sort((e,t)=>t[0]-e[0]);n(p.map(([,e])=>o[e])),await ym(t),d()};d()}O();var Lv=class extends D{constructor(){super(`No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.`,{docsPath:`/docs/clients/intro`,name:`UrlRequiredError`})}};Oo(),zp();function Rv(e,t={}){let{batch:n,fetchFn:r,fetchOptions:i,key:a=`http`,methods:o,name:s=`HTTP JSON-RPC`,onFetchRequest:c,onFetchResponse:l,retryDelay:u,raw:d}=t;return({chain:f,retryCount:p,timeout:m})=>{let{batchSize:h=1e3,wait:g=0}=typeof n==`object`?n:{},_=t.retryCount??p,v=m??t.timeout??1e4,y=e||f?.rpcUrls.default.http[0];if(!y)throw new Lv;let b=Sh(y,{fetchFn:r,fetchOptions:i,onRequest:c,onResponse:l,timeout:v});return Mv({key:a,methods:o,name:s,async request({method:e,params:t}){let r={method:e,params:t},{schedule:i}=Lp({id:y,wait:g,shouldSplitBatch(e){return e.length>h},fn:e=>b.request({body:e}),sort:(e,t)=>e.id-t.id}),[{error:a,result:o}]=await(async e=>n?i(e):[await b.request({body:e})])(r);if(d)return{error:a,result:o};if(a)throw new Eo({body:r,error:a,url:y});return o},retryCount:_,retryDelay:u,timeout:v,type:`http`},{fetchOptions:i,url:y})}}const zv=R({id:16600,name:`0G Newton Testnet`,nativeCurrency:{name:`A0GI`,symbol:`A0GI`,decimals:18},rpcUrls:{default:{http:[`https://evmrpc-testnet.0g.ai`]}},blockExplorers:{default:{name:`0G BlockChain Explorer`,url:`https://chainscan-newton.0g.ai`}},testnet:!0}),Bv=R({id:16601,name:`0G Galileo Testnet`,nativeCurrency:{name:`A0GI`,symbol:`A0GI`,decimals:18},rpcUrls:{default:{http:[`https://evmrpc-testnet.0g.ai`]}},blockExplorers:{default:{name:`0G BlockChain Explorer`,url:`https://chainscan-galileo.0g.ai`}},testnet:!0}),Vv=R({id:16661,name:`0G Mainnet`,nativeCurrency:{name:`0G`,symbol:`0G`,decimals:18},rpcUrls:{default:{http:[`https://evmrpc.0g.ai`]}},blockExplorers:{default:{name:`0G BlockChain Explorer`,url:`https://chainscan.0g.ai`}},testnet:!1}),Hv=R({id:995,name:`5ireChain`,nativeCurrency:{name:`5ire Token`,symbol:`5IRE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.5ire.network`]}},blockExplorers:{default:{name:`5ireChain Mainnet Explorer`,url:`https://5irescan.io/`}},testnet:!1}),Uv=R({id:179,name:`ABEY Mainnet`,nativeCurrency:{name:`ABEY`,symbol:`ABEY`,decimals:18},rpcUrls:{default:{http:[`https://rpc.abeychain.com`]}},blockExplorers:{default:{name:`Abey Scan`,url:`https://abeyscan.com`}},testnet:!1});Xu();const Wv=50000n,Gv=Ju*32n;Dn(),Hn(),A(),Uu();const Kv={block:cd({format(e){let t=e.transactions?.map(e=>{if(typeof e==`string`)return e;let t=Kv.transaction?.format(e);return t.typeHex===`0x71`?t.type=`eip712`:t.typeHex===`0xff`&&(t.type=`priority`),t});return{l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,l1BatchTimestamp:e.l1BatchTimestamp?wn(e.l1BatchTimestamp):null,transactions:t}}}),transaction:ad({format(e){let t={};return e.type===`0x71`?t.type=`eip712`:e.type===`0xff`&&(t.type=`priority`),{...t,l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,l1BatchTxIndex:e.l1BatchTxIndex?wn(e.l1BatchTxIndex):null}}}),transactionReceipt:zm({format(e){return{l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,l1BatchTxIndex:e.l1BatchTxIndex?wn(e.l1BatchTxIndex):null,logs:e.logs.map(e=>({...Rd(e),l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,transactionLogIndex:En(e.transactionLogIndex),logType:e.logType})),l2ToL1Logs:e.l2ToL1Logs.map(e=>({blockNumber:wn(e.blockHash),blockHash:e.blockHash,l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,transactionIndex:wn(e.transactionIndex),shardId:wn(e.shardId),isService:e.isService,sender:e.sender,key:e.key,value:e.value,transactionHash:e.transactionHash,logIndex:wn(e.logIndex)}))}}}),transactionRequest:Hu({exclude:[`customSignature`,`factoryDeps`,`gasPerPubdata`,`paymaster`,`paymasterInput`],format(e){return e.gasPerPubdata||e.paymaster&&e.paymasterInput||e.factoryDeps||e.customSignature?{eip712Meta:{...e.gasPerPubdata?{gasPerPubdata:On(e.gasPerPubdata)}:{gasPerPubdata:On(Wv)},...e.paymaster&&e.paymasterInput?{paymasterParams:{paymaster:e.paymaster,paymasterInput:Array.from(Ln(e.paymasterInput))}}:{},...e.factoryDeps?{factoryDeps:e.factoryDeps.map(e=>Array.from(Ln(e)))}:{},...e.customSignature?{customSignature:Array.from(Ln(e.customSignature))}:{}},type:`0x71`}:{}}})};O();var qv=class extends D{constructor(){super([`Transaction is not an EIP712 transaction.`,``,`Transaction must:`,' - include `type: "eip712"`'," - include one of the following: `customSignature`, `paymaster`, `paymasterInput`, `gasPerPubdata`, `factoryDeps`"].join(` -`),{name:`InvalidEip712TransactionError`})}};function Jv(e){return!!(e.type===`eip712`||`customSignature`in e&&e.customSignature||`paymaster`in e&&e.paymaster||`paymasterInput`in e&&e.paymasterInput||`gasPerPubdata`in e&&typeof e.gasPerPubdata==`bigint`||`factoryDeps`in e&&e.factoryDeps)}pi(),O(),Dp(),Ci();function Yv(e){let{chainId:t,to:n,from:r,paymaster:i,paymasterInput:a}=e;if(!Jv(e))throw new qv;if(!t||t<=0)throw new Ep({chainId:t});if(n&&!bi(n))throw new fi({address:n});if(r&&!bi(r))throw new fi({address:r});if(i&&!bi(i))throw new fi({address:i});if(i&&!a)throw new D("`paymasterInput` must be provided when `paymaster` is defined");if(!i&&a)throw new D("`paymaster` must be provided when `paymasterInput` is defined")}Di(),A();function Xv(e,t){return Jv(e)?Qv(e):oh(e,t)}const Zv={transaction:Xv};function Qv(e){let{chainId:t,gas:n,nonce:r,to:i,from:a,value:o,maxFeePerGas:s,maxPriorityFeePerGas:c,customSignature:l,factoryDeps:u,paymaster:d,paymasterInput:f,gasPerPubdata:p,data:m}=e;Yv(e);let h=[r?On(r):`0x`,c?On(c):`0x`,s?On(s):`0x`,n?On(n):`0x`,i??`0x`,o?On(o):`0x`,m??`0x`,On(t),On(``),On(``),On(t),a??`0x`,On(p||Wv),u??[],l??`0x`,d&&f?[d,f]:[]];return Ei([`0x71`,N(h)])}O();var $v=class extends D{constructor({givenLength:e,maxBytecodeSize:t}){super(`Bytecode cannot be longer than ${t} bytes. Given length: ${e}`,{name:`BytecodeLengthExceedsMaxSizeError`})}},ey=class extends D{constructor({givenLengthInWords:e}){super(`Bytecode length in 32-byte words must be odd. Given length in words: ${e}`,{name:`BytecodeLengthInWordsMustBeOddError`})}},ty=class extends D{constructor({givenLength:e}){super(`The bytecode length in bytes must be divisible by 32. Given length: ${e}`,{name:`BytecodeLengthMustBeDivisibleBy32Error`})}};hn(),Hn();function ny(e){let t=Pn(e);if(t.length%32!=0)throw new ty({givenLength:t.length});if(t.length>Gv)throw new $v({givenLength:t.length,maxBytecodeSize:Gv});let n=_d(t),r=Pn(n),i=t.length/32;if(i%2==0)throw new ey({givenLengthInWords:i});let a=Pn(i),o=fn(a,{size:2}),s=new Uint8Array([1,0]);return r.set(s,0),r.set(o,2),r}A();const ry=e=>{Yv(e);let t=iy(e);return{domain:{name:`zkSync`,version:`2`,chainId:e.chainId},types:{Transaction:[{name:`txType`,type:`uint256`},{name:`from`,type:`uint256`},{name:`to`,type:`uint256`},{name:`gasLimit`,type:`uint256`},{name:`gasPerPubdataByteLimit`,type:`uint256`},{name:`maxFeePerGas`,type:`uint256`},{name:`maxPriorityFeePerGas`,type:`uint256`},{name:`paymaster`,type:`uint256`},{name:`nonce`,type:`uint256`},{name:`value`,type:`uint256`},{name:`data`,type:`bytes`},{name:`factoryDeps`,type:`bytes32[]`},{name:`paymasterInput`,type:`bytes`}]},primaryType:`Transaction`,message:t}};function iy(e){let{gas:t,nonce:n,to:r,from:i,value:a,maxFeePerGas:o,maxPriorityFeePerGas:s,factoryDeps:c,paymaster:l,paymasterInput:u,gasPerPubdata:d,data:f}=e;return{txType:113n,from:BigInt(i),to:r?BigInt(r):0n,gasLimit:t??0n,gasPerPubdataByteLimit:d??50000n,maxFeePerGas:o??0n,maxPriorityFeePerGas:s??0n,paymaster:l?BigInt(l):0n,nonce:n?BigInt(n):0n,value:a??0n,data:f??`0x`,factoryDeps:c?.map(e=>On(ny(e)))??[],paymasterInput:u||`0x`}}const ay={blockTime:1e3,formatters:Kv,serializers:Zv,custom:{getEip712Domain:ry}},oy=R({...ay,id:2741,name:`Abstract`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.mainnet.abs.xyz`],webSocket:[`wss://api.mainnet.abs.xyz/ws`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://abscan.org`},native:{name:`Abstract Explorer`,url:`https://explorer.mainnet.abs.xyz`}},contracts:{multicall3:{address:`0xAa4De41dba0Ca5dCBb288b7cC6b708F3aaC759E7`,blockCreated:5288},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:5263}}}),sy=R({...ay,id:11124,name:`Abstract Testnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.testnet.abs.xyz`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia.abscan.org`},native:{name:`Abstract Explorer`,url:`https://explorer.testnet.abs.xyz`}},testnet:!0,contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`,blockCreated:358349},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:431682}}}),cy=R({id:787,name:`Acala`,network:`acala`,nativeCurrency:{name:`Acala`,symbol:`ACA`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-acala.aca-api.network`],webSocket:[`wss://eth-rpc-acala.aca-api.network`]}},blockExplorers:{default:{name:`Acala Blockscout`,url:`https://blockscout.acala.network`,apiUrl:`https://blockscout.acala.network/api`}},testnet:!1}),ly=R({id:47,name:`Acria IntelliChain`,nativeCurrency:{decimals:18,name:`ACRIA`,symbol:`ACRIA`},rpcUrls:{default:{http:[`https://aic.acria.ai`]}},blockExplorers:{default:{name:`Acria Explorer`,url:`https://explorer.acria.ai`}},testnet:!1}),uy=R({id:1215,name:`ADF Chain`,nativeCurrency:{name:`ADDFILL`,symbol:`ADF`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.adftechnology.com`]}},blockExplorers:{default:{name:`ADF Mainnet Explorer`,url:`https://explorer.adftechnology.com`}},testnet:!1}),dy=R({id:9990,name:`Agung Network`,nativeCurrency:{decimals:18,name:`Agung`,symbol:`AGNG`},rpcUrls:{default:{http:[`https://wss-async.agung.peaq.network`],webSocket:[`wss://wss-async.agung.peaq.network`]}},blockExplorers:{default:{name:`Subscan`,url:`https://agung-testnet.subscan.io`}},testnet:!0}),fy=R({id:168,name:`AIOZ Network`,nativeCurrency:{decimals:18,name:`AIOZ`,symbol:`AIOZ`},rpcUrls:{default:{http:[`https://eth-dataseed.aioz.network`]}},blockExplorers:{default:{name:`AIOZ Explorer`,url:`https://explorer.aioz.network`}},testnet:!1}),py=R({id:41455,name:`Aleph Zero`,nativeCurrency:{name:`Aleph Zero`,symbol:`AZERO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.alephzero.raas.gelato.cloud`]}},blockExplorers:{default:{name:`Aleph Zero EVM Explorer`,url:`https://evm-explorer.alephzero.org`,apiUrl:`https://evm-explorer.alephzero.org/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4603377}}}),my=R({id:2039,name:`Aleph Zero Testnet`,nativeCurrency:{name:`TZERO`,symbol:`TZERO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.alephzero-testnet.gelato.digital`],webSocket:[`wss://ws.alephzero-testnet.gelato.digital`]}},blockExplorers:{default:{name:`Aleph Zero EVM Testnet explorer`,url:`https://evm-explorer-testnet.alephzero.org`,apiUrl:`https://evm-explorer-testnet.alephzero.org/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2861745}},testnet:!0}),hy=R({id:10241024,name:`AlienX Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.alienxchain.io/http`]}},blockExplorers:{default:{name:`AlienX Explorer`,url:`https://explorer.alienxchain.io`}},testnet:!1}),gy=R({id:10241025,name:`ALIENX Hal Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://hal-rpc.alienxchain.io/http`]}},blockExplorers:{default:{name:`AlienX Explorer`,url:`https://hal-explorer.alienxchain.io`}},testnet:!0}),_y={gasPriceOracle:{address:`0x420000000000000000000000000000000000000F`},l1Block:{address:`0x4200000000000000000000000000000000000015`},l2CrossDomainMessenger:{address:`0x4200000000000000000000000000000000000007`},l2Erc721Bridge:{address:`0x4200000000000000000000000000000000000014`},l2StandardBridge:{address:`0x4200000000000000000000000000000000000010`},l2ToL1MessagePasser:{address:`0x4200000000000000000000000000000000000016`}};Dn();const vy={block:cd({format(e){return{transactions:e.transactions?.map(e=>{if(typeof e==`string`)return e;let t=id(e);return t.typeHex===`0x7e`&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?wn(e.mint):void 0,t.sourceHash=e.sourceHash,t.type=`deposit`),t}),stateRoot:e.stateRoot}}}),transaction:ad({format(e){let t={};return e.type===`0x7e`&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?wn(e.mint):void 0,t.sourceHash=e.sourceHash,t.type=`deposit`),t}}),transactionReceipt:zm({format(e){return{l1GasPrice:e.l1GasPrice?wn(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?wn(e.l1GasUsed):null,l1Fee:e.l1Fee?wn(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null}}})};pi(),Ci(),Di(),A();function yy(e,t){return Sy(e)?xy(e):oh(e,t)}const by={transaction:yy};function xy(e){Cy(e);let{sourceHash:t,data:n,from:r,gas:i,isSystemTx:a,mint:o,to:s,value:c}=e,l=[t,r,s??`0x`,o?On(o):`0x`,c?On(c):`0x`,i?On(i):`0x`,a?`0x1`:`0x`,n??`0x`];return Ei([`0x7e`,N(l)])}function Sy(e){return e.type===`deposit`||e.sourceHash!==void 0}function Cy(e){let{from:t,to:n}=e;if(t&&!bi(t))throw new fi({address:t});if(n&&!bi(n))throw new fi({address:n})}const z={blockTime:2e3,contracts:_y,formatters:vy,serializers:by};var wy=1;const Ty=R({...z,id:888888888,name:`Ancient8`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.ancient8.gg`]}},blockExplorers:{default:{name:`Ancient8 explorer`,url:`https://scan.ancient8.gg`,apiUrl:`https://scan.ancient8.gg/api`}},contracts:{...z.contracts,l2OutputOracle:{[wy]:{address:`0xB09DC08428C8b4EFB4ff9C0827386CDF34277996`}},portal:{[wy]:{address:`0x639F2AECE398Aa76b07e59eF6abe2cFe32bacb68`,blockCreated:19070571}},l1StandardBridge:{[wy]:{address:`0xd5e3eDf5b68135D559D572E26bF863FBC1950033`,blockCreated:19070571}}},sourceId:wy});var Ey=11155111;const Dy=R({...z,id:28122024,name:`Ancient8 Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpcv2-testnet.ancient8.gg`]}},blockExplorers:{default:{name:`Ancient8 Celestia Testnet explorer`,url:`https://scanv2-testnet.ancient8.gg`,apiUrl:`https://scanv2-testnet.ancient8.gg/api`}},contracts:{...z.contracts,l2OutputOracle:{[Ey]:{address:`0x942fD5017c0F60575930D8574Eaca13BEcD6e1bB`}},portal:{[Ey]:{address:`0xfa1d9E26A6aCD7b22115D27572c1221B9803c960`,blockCreated:4972908}},l1StandardBridge:{[Ey]:{address:`0xF6Bc0146d3c74D48306e79Ae134A260E418C9335`,blockCreated:4972908}}},sourceId:Ey}),Oy=R({id:31337,name:`Anvil`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`],webSocket:[`ws://127.0.0.1:8545`]}}}),ky=R({id:33139,name:`Ape Chain`,nativeCurrency:{name:`ApeCoin`,symbol:`APE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.apechain.com/http`],webSocket:[`wss://rpc.apechain.com/ws`]}},blockExplorers:{default:{name:`Apescan`,url:`https://apescan.io`,apiUrl:`https://api.apescan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:20889}},sourceId:42161}),Ay=R({id:3993,name:`APEX Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.apexlayer.xyz`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp-testnet.apexlayer.xyz`,apiUrl:`https://exp-testnet.apexlayer.xyz/api`}},contracts:{multicall3:{address:`0xf7642be33a6b18D16a995657adb5a68CD0438aE2`,blockCreated:283775}},testnet:!0}),jy=R({id:42161,name:`Arbitrum One`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:250,rpcUrls:{default:{http:[`https://arb1.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://arbiscan.io`,apiUrl:`https://api.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7654707}}}),My=R({id:421613,name:`Arbitrum Goerli`,nativeCurrency:{name:`Arbitrum Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://goerli-rollup.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://goerli.arbiscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:88114}},testnet:!0}),Ny=R({id:42170,name:`Arbitrum Nova`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://nova.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://nova.arbiscan.io`,apiUrl:`https://api-nova.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1746963}}}),Py=R({id:421614,name:`Arbitrum Sepolia`,blockTime:250,nativeCurrency:{name:`Arbitrum Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rollup.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://sepolia.arbiscan.io`,apiUrl:`https://api-sepolia.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:81930}},testnet:!0}),Fy=R({id:7897,name:`Arena-Z`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.arena-z.gg`]}},blockExplorers:{default:{name:`Arena-Z Explorer`,url:`https://explorer.arena-z.gg`,apiUrl:`https://explorer.arena-z.gg`}}}),Iy=R({id:463,name:`Areon Network`,nativeCurrency:{decimals:18,name:`AREA`,symbol:`AREA`},rpcUrls:{default:{http:[`https://mainnet-rpc.areon.network`],webSocket:[`wss://mainnet-ws.areon.network`]}},blockExplorers:{default:{name:`Areonscan`,url:`https://areonscan.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:353286}},testnet:!1}),Ly=R({id:462,name:`Areon Network Testnet`,nativeCurrency:{decimals:18,name:`TAREA`,symbol:`TAREA`},rpcUrls:{default:{http:[`https://testnet-rpc.areon.network`],webSocket:[`wss://testnet-ws.areon.network`]}},blockExplorers:{default:{name:`Areonscan`,url:`https://areonscan.com`}},testnet:!0}),Ry=R({id:463,name:`Areum`,nativeCurrency:{decimals:18,name:`AREA`,symbol:`AREA`},rpcUrls:{default:{http:[`https://mainnet-rpc.areum.network`],webSocket:[`wss://mainnet-ws.areum.network`]}},blockExplorers:{default:{name:`Areum Explorer`,url:`https://explorer.areum.network`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:353286}},testnet:!1}),zy=R({id:11822,name:`Artela Testnet`,nativeCurrency:{name:`ART`,symbol:`ART`,decimals:18},rpcUrls:{default:{http:[`https://betanet-rpc1.artela.network`]}},blockExplorers:{default:{name:`Artela`,url:`https://betanet-scan.artela.network`,apiUrl:`https://betanet-scan.artela.network/api`}},contracts:{multicall3:{address:`0xd07c8635f76e8745Ee7092fbb6e8fbc5FeF09DD7`,blockCreated:7001871}},testnet:!0}),By=R({id:10242,name:`Arthera`,nativeCurrency:{name:`Arthera`,symbol:`AA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.arthera.net`]}},blockExplorers:{default:{name:`Arthera EVM Explorer`,url:`https://explorer.arthera.net`,apiUrl:`https://explorer.arthera.net/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4502791}}}),Vy=R({id:10243,name:`Arthera Testnet`,nativeCurrency:{name:`Arthera`,symbol:`AA`,decimals:18},rpcUrls:{default:{http:[`https://rpc-test.arthera.net`]}},blockExplorers:{default:{name:`Arthera EVM Explorer`,url:`https://explorer-test.arthera.net`,apiUrl:`https://explorer-test.arthera.net/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:22051}}}),Hy=R({id:42420,name:`AssetChain Mainnet`,nativeCurrency:{decimals:18,name:`Real World Asset`,symbol:`RWA`},rpcUrls:{default:{http:[`https://mainnet-rpc.assetchain.org`]}},blockExplorers:{default:{name:`Asset Chain Explorer`,url:`https://scan.assetchain.org`,apiUrl:`https://scan.assetchain.org/api`}},testnet:!1,contracts:{}}),Uy=R({id:42421,name:`AssetChain Testnet`,nativeCurrency:{decimals:18,name:`Real World Asset`,symbol:`RWA`},rpcUrls:{default:{http:[`https://enugu-rpc.assetchain.org`]}},blockExplorers:{default:{name:`Asset Chain Testnet Explorer`,url:`https://scan-testnet.assetchain.org`,apiUrl:`https://scan-testnet.assetchain.org/api`}},testnet:!0,contracts:{multicall3:{address:`0x989F832D35988cb5e3eB001Fa2Fe789469EC31Ea`,blockCreated:17177}}}),Wy=R({id:592,name:`Astar`,network:`astar-mainnet`,nativeCurrency:{name:`Astar`,symbol:`ASTR`,decimals:18},rpcUrls:{default:{http:[`https://astar.api.onfinality.io/public`]}},blockExplorers:{default:{name:`Astar Subscan`,url:`https://astar.subscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:761794}},testnet:!1}),Gy=R({id:3776,name:`Astar zkEVM`,network:`AstarZkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-zkevm.astar.network`]}},blockExplorers:{default:{name:`Astar zkEVM Explorer`,url:`https://astar-zkevm.explorer.startale.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:93528}},testnet:!1}),Ky=R({id:6038361,name:`Astar zkEVM Testnet zKyoto`,network:`zKyoto`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.startale.com/zkyoto`]}},blockExplorers:{default:{name:`zKyoto Explorer`,url:`https://zkyoto.explorer.startale.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:196153}},testnet:!0}),qy=R({id:2340,name:`Atleta Olympia`,nativeCurrency:{decimals:18,name:`Atla`,symbol:`ATLA`},rpcUrls:{default:{http:[`https://testnet-rpc.atleta.network:9944`,`https://testnet-rpc.atleta.network`],ws:[`wss://testnet-rpc.atleta.network:9944`]}},blockExplorers:{default:{name:`Atleta Olympia Explorer`,url:`https://blockscout.atleta.network`,apiUrl:`https://blockscout.atleta.network/api`}},contracts:{multicall3:{address:`0x1472ec6392180fb84F345d2455bCC75B26577115`,blockCreated:1076473}},testnet:!0}),Jy=R({id:1313161554,name:`Aurora`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.aurora.dev`]}},blockExplorers:{default:{name:`Aurorascan`,url:`https://aurorascan.dev`,apiUrl:`https://aurorascan.dev/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:62907816}}}),Yy=R({id:1313161555,name:`Aurora Testnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://testnet.aurora.dev`]}},blockExplorers:{default:{name:`Aurorascan`,url:`https://testnet.aurorascan.dev`,apiUrl:`https://testnet.aurorascan.dev/api`}},testnet:!0}),Xy=R({id:205205,name:`Auroria Testnet`,network:`auroria`,nativeCurrency:{name:`Auroria Stratis`,symbol:`tSTRAX`,decimals:18},rpcUrls:{default:{http:[`https://auroria.rpc.stratisevm.com`]}},blockExplorers:{default:{name:`Auroria Testnet Explorer`,url:`https://auroria.explorer.stratisevm.com`}},testnet:!0}),Zy=R({id:785,name:`Autheo Testnet`,nativeCurrency:{decimals:18,name:`Autheo`,symbol:`THEO`},rpcUrls:{default:{http:[`https://testnet-rpc1.autheo.com`,`https://testnet-rpc2.autheo.com`]}},blockExplorers:{default:{name:`Autheo Testnet Block Explorer`,url:`https://testnet-explorer.autheo.com/`}}}),Qy=R({id:43114,name:`Avalanche`,blockTime:1700,nativeCurrency:{decimals:18,name:`Avalanche`,symbol:`AVAX`},rpcUrls:{default:{http:[`https://api.avax.network/ext/bc/C/rpc`]}},blockExplorers:{default:{name:`SnowTrace`,url:`https://snowtrace.io`,apiUrl:`https://api.snowtrace.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:11907934}}}),$y=R({id:43113,name:`Avalanche Fuji`,nativeCurrency:{decimals:18,name:`Avalanche Fuji`,symbol:`AVAX`},rpcUrls:{default:{http:[`https://api.avax-test.network/ext/bc/C/rpc`]}},blockExplorers:{default:{name:`SnowTrace`,url:`https://testnet.snowtrace.io`,apiUrl:`https://api-testnet.snowtrace.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7096959}},testnet:!0}),eb=R({id:8333,name:`B3`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.b3.fun/http`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.b3.fun`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}},sourceId:8453}),tb=R({id:1993,name:`B3 Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.b3.fun/http`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia.explorer.b3.fun`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}},testnet:!0,sourceId:168587773}),nb=R({id:5165,network:`bahamut`,name:`Bahamut`,nativeCurrency:{name:`Fasttoken`,symbol:`FTN`,decimals:18},rpcUrls:{default:{http:[`https://rpc1.bahamut.io`,`https://bahamut-rpc.publicnode.com`,`https://rpc2.bahamut.io`],webSocket:[`wss://ws1.sahara.bahamutchain.com`,`wss://bahamut-rpc.publicnode.com`,`wss://ws2.sahara.bahamutchain.com`]}},blockExplorers:{default:{name:`Ftnscan`,url:`https://www.ftnscan.com`,apiUrl:`https://www.ftnscan.com/api`}}});var rb=1;const ib=R({...z,id:8453,name:`Base`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.base.org`]}},blockExplorers:{default:{name:`Basescan`,url:`https://basescan.org`,apiUrl:`https://api.basescan.org/api`}},contracts:{...z.contracts,disputeGameFactory:{[rb]:{address:`0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e`}},l2OutputOracle:{[rb]:{address:`0x56315b90c40730925ec5485cf004d835058518A0`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:5022},portal:{[rb]:{address:`0x49048044D57e1C92A77f79988d21Fa8fAF74E97e`,blockCreated:17482143}},l1StandardBridge:{[rb]:{address:`0x3154Cf16ccdb4C6d922629664174b904d80F2C35`,blockCreated:17482143}}},sourceId:rb}),ab=R({...ib,experimental_preconfirmationTime:200,rpcUrls:{default:{http:[`https://mainnet-preconf.base.org`]}}}),ob=R({id:123420001114,name:`Basecamp Testnet`,nativeCurrency:{decimals:18,name:`Camp`,symbol:`CAMP`},rpcUrls:{default:{http:[`https://rpc.basecamp.t.raas.gelato.cloud`]}},blockExplorers:{default:{name:`basecamp`,url:`https://basecamp.cloud.blockscout.com`}},testnet:!0});var sb=5;const cb=R({...z,id:84531,name:`Base Goerli`,nativeCurrency:{name:`Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://goerli.base.org`]}},blockExplorers:{default:{name:`Basescan`,url:`https://goerli.basescan.org`,apiUrl:`https://goerli.basescan.org/api`}},contracts:{...z.contracts,l2OutputOracle:{[sb]:{address:`0x2A35891ff30313CcFa6CE88dcf3858bb075A2298`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1376988},portal:{[sb]:{address:`0xe93c8cD0D409341205A592f8c4Ac1A5fe5585cfA`}},l1StandardBridge:{[sb]:{address:`0xfA6D8Ee5BE770F84FC001D098C4bD604Fe01284a`}}},testnet:!0,sourceId:sb});var lb=11155111;const ub=R({...z,id:84532,network:`base-sepolia`,name:`Base Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.base.org`]}},blockExplorers:{default:{name:`Basescan`,url:`https://sepolia.basescan.org`,apiUrl:`https://api-sepolia.basescan.org/api`}},contracts:{...z.contracts,disputeGameFactory:{[lb]:{address:`0xd6E6dBf4F7EA0ac412fD8b65ED297e64BB7a06E1`}},l2OutputOracle:{[lb]:{address:`0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254`}},portal:{[lb]:{address:`0x49f53e41452c74589e85ca1677426ba426459e85`,blockCreated:4446677}},l1StandardBridge:{[lb]:{address:`0xfd0Bf71F60660E2f608ed56e1659C450eB113120`,blockCreated:4446677}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1059647}},testnet:!0,sourceId:lb}),db=R({...ub,experimental_preconfirmationTime:200,rpcUrls:{default:{http:[`https://sepolia-preconf.base.org`]}}}),fb=R({id:4337,name:`Beam`,network:`beam`,nativeCurrency:{decimals:18,name:`Beam`,symbol:`BEAM`},rpcUrls:{default:{http:[`https://build.onbeam.com/rpc`],webSocket:[`wss://build.onbeam.com/ws`]}},blockExplorers:{default:{name:`Beam Explorer`,url:`https://subnets.avax.network/beam`}},contracts:{multicall3:{address:`0x4956f15efdc3dc16645e90cc356eafa65ffc65ec`,blockCreated:1}}}),pb=R({id:13337,name:`Beam Testnet`,network:`beam`,nativeCurrency:{decimals:18,name:`Beam`,symbol:`BEAM`},rpcUrls:{default:{http:[`https://build.onbeam.com/rpc/testnet`],webSocket:[`wss://build.onbeam.com/ws/testnet`]}},blockExplorers:{default:{name:`Beam Explorer`,url:`https://subnets-test.avax.network/beam`}},contracts:{multicall3:{address:`0x9bf49b704ee2a095b95c1f2d4eb9010510c41c9e`,blockCreated:3}},testnet:!0}),mb=R({id:641230,name:`Bear Network Chain Mainnet`,nativeCurrency:{decimals:18,name:`BearNetworkChain`,symbol:`BRNKC`},rpcUrls:{default:{http:[`https://brnkc-mainnet.bearnetwork.net`]}},blockExplorers:{default:{name:`BrnkScan`,url:`https://brnkscan.bearnetwork.net`,apiUrl:`https://brnkscan.bearnetwork.net/api`}}}),hb=R({id:751230,name:`Bear Network Chain Testnet`,nativeCurrency:{decimals:18,name:`tBRNKC`,symbol:`tBRNKC`},rpcUrls:{default:{http:[`https://brnkc-test.bearnetwork.net`]}},blockExplorers:{default:{name:`BrnkTestScan`,url:`https://brnktest-scan.bearnetwork.net`,apiUrl:`https://brnktest-scan.bearnetwork.net/api`}},testnet:!0}),gb=R({id:80094,name:`Berachain`,blockTime:2e3,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},ensRegistry:{address:`0x5b22280886a2f5e09a49bea7e320eab0e5320e28`,blockCreated:877007},ensUniversalResolver:{address:`0x4D41762915F83c76EcaF6776d9b08076aA32b492`,blockCreated:9310021}},rpcUrls:{default:{http:[`https://rpc.berachain.com`]}},blockExplorers:{default:{name:`Berascan`,url:`https://berascan.com`}},ensTlds:[`.bera`],testnet:!1}),_b=R({id:80069,blockTime:2e3,name:`Berachain Bepolia`,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},rpcUrls:{default:{http:[`https://bepolia.rpc.berachain.com`]}},blockExplorers:{default:{name:`Berascan`,url:`https://bepolia.beratrail.io`}},testnet:!0}),vb=R({id:80085,name:`Berachain Artio`,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},rpcUrls:{default:{http:[`https://artio.rpc.berachain.com`]}},blockExplorers:{default:{name:`Berachain`,url:`https://artio.beratrail.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:866924}},testnet:!0}),yb=R({id:80084,name:`Berachain bArtio`,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:109269},ensRegistry:{address:`0xB0eef18971290b333450586D33dcA6cE122651D2`,blockCreated:7736794},ensUniversalResolver:{address:`0x41692Ef1EA0C79E6b73077E4A67572D2BDbD7057`,blockCreated:7736795}},ensTlds:[`.bera`],rpcUrls:{default:{http:[`https://bartio.rpc.berachain.com`]}},blockExplorers:{default:{name:`Berachain bArtio Beratrail`,url:`https://bartio.beratrail.io`}},testnet:!0}),bb=R({id:11501,name:`BEVM Mainnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet-1.bevm.io`]}},blockExplorers:{default:{name:`Bevmscan`,url:`https://scan-mainnet.bevm.io`,apiUrl:`https://scan-mainnet-api.bevm.io/api`}}}),xb=R({id:3068,name:`Bifrost Mainnet`,nativeCurrency:{name:`BFC`,symbol:`BFC`,decimals:18},rpcUrls:{default:{http:[`https://public-01.mainnet.bifrostnetwork.com/rpc`]}},blockExplorers:{default:{name:`Bifrost Blockscout`,url:`https://explorer.mainnet.bifrostnetwork.com`}},testnet:!1}),Sb=R({id:53456,name:`BirdLayer`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.birdlayer.xyz`,`https://rpc1.birdlayer.xyz`],webSocket:[`wss://rpc.birdlayer.xyz/ws`]}},blockExplorers:{default:{name:`BirdLayer Explorer`,url:`https://scan.birdlayer.xyz`}}}),Cb=R({id:32520,name:`Bitgert Mainnet`,nativeCurrency:{decimals:18,name:`Brise`,symbol:`Brise`},rpcUrls:{default:{http:[`https://rpc-bitgert.icecreamswap.com`]}},blockExplorers:{default:{name:`Bitgert Scan`,url:`https://brisescan.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2118034}},testnet:!1}),wb=R({id:96,name:`KUB Mainnet`,nativeCurrency:{name:`KUB Coin`,symbol:`KUB`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bitkubchain.io`]}},blockExplorers:{default:{name:`KUB Chain Mainnet Explorer`,url:`https://www.bkcscan.com`,apiUrl:`https://www.bkcscan.com/api`}}}),Tb=R({id:25925,name:`Bitkub Testnet`,network:`Bitkub Testnet`,nativeCurrency:{name:`Bitkub Test`,symbol:`tKUB`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.bitkubchain.io`]}},blockExplorers:{default:{name:`Bitkub Chain Testnet Explorer`,url:`https://testnet.bkcscan.com`,apiUrl:`https://testnet.bkcscan.com/api`}},testnet:!0}),Eb=R({id:200901,name:`Bitlayer Mainnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bitlayer.org`],webSocket:[`wss://ws.bitlayer.org`]}},blockExplorers:{default:{name:`bitlayer mainnet scan`,url:`https://www.btrscan.com`}},contracts:{multicall3:{address:`0x5B256fE9e993902eCe49D138a5b1162cBb529474`,blockCreated:2421963}}}),Db=R({id:200810,name:`Bitlayer Testnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.bitlayer.org`],webSocket:[`wss://testnet-ws.bitlayer.org`]}},blockExplorers:{default:{name:`bitlayer testnet scan`,url:`https://testnet.btrscan.com`}},contracts:{multicall3:{address:`0x5B256fE9e993902eCe49D138a5b1162cBb529474`,blockCreated:4135671}},testnet:!0}),Ob=R({id:7171,name:`Bitrock Mainnet`,nativeCurrency:{name:`BROCK`,symbol:`BROCK`,decimals:18},rpcUrls:{default:{http:[`https://brockrpc.io`]}},blockExplorers:{default:{name:`Bitrock Explorer`,url:`https://explorer.bit-rock.io`}},testnet:!1}),kb=R({id:199,name:`BitTorrent`,network:`bittorrent-chain-mainnet`,nativeCurrency:{name:`BitTorrent`,symbol:`BTT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bittorrentchain.io`]}},blockExplorers:{default:{name:`Bttcscan`,url:`https://bttcscan.com`,apiUrl:`https://api.bttcscan.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:31078552}}}),Ab=R({id:1028,name:`BitTorrent Chain Testnet`,network:`bittorrent-chain-testnet`,nativeCurrency:{name:`BitTorrent`,symbol:`BTT`,decimals:18},rpcUrls:{default:{http:[`https://testrpc.bittorrentchain.io`]}},blockExplorers:{default:{name:`Bttcscan`,url:`https://testnet.bttcscan.com`,apiUrl:`https://testnet.bttcscan.com/api`}},testnet:!0});var jb=1;const Mb=R({...z,id:81457,name:`Blast`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.blast.io`]}},blockExplorers:{default:{name:`Blastscan`,url:`https://blastscan.io`,apiUrl:`https://api.blastscan.io/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:212929},l2OutputOracle:{[jb]:{address:`0x826D1B0D4111Ad9146Eb8941D7Ca2B6a44215c76`,blockCreated:19300358}},portal:{[jb]:{address:`0x0Ec68c5B10F21EFFb74f2A5C61DFe6b08C0Db6Cb`,blockCreated:19300357}},l1StandardBridge:{[jb]:{address:`0x697402166Fbf2F22E970df8a6486Ef171dbfc524`,blockCreated:19300360}}},sourceId:jb}),Nb=R({id:168587773,name:`Blast Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.blast.io`]}},blockExplorers:{default:{name:`Blastscan`,url:`https://sepolia.blastscan.io`,apiUrl:`https://api-sepolia.blastscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:756690}},testnet:!0,sourceId:11155111});var Pb=1;const Fb=R({...z,id:60808,name:`BOB`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.gobob.xyz`],webSocket:[`wss://rpc.gobob.xyz`]}},blockExplorers:{default:{name:`BOB Explorer`,url:`https://explorer.gobob.xyz`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:23131},l2OutputOracle:{[Pb]:{address:`0xdDa53E23f8a32640b04D7256e651C1db98dB11C1`,blockCreated:4462615}},portal:{[Pb]:{address:`0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E`,blockCreated:4462615}}},sourceId:Pb}),Ib=R({id:288,name:`Boba Network`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.boba.network`]}},blockExplorers:{default:{name:`BOBAScan`,url:`https://bobascan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:446859}}}),Lb=R({id:28882,name:`Boba Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.boba.network`]}},blockExplorers:{default:{name:`BOBAScan`,url:`https://testnet.bobascan.com`}},testnet:!0});var Rb=11155111;const zb=R({...z,id:808813,name:`BOB Sepolia`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://bob-sepolia.rpc.gobob.xyz`],webSocket:[`wss://bob-sepolia.rpc.gobob.xyz`]}},blockExplorers:{default:{name:`BOB Sepolia Explorer`,url:`https://bob-sepolia.explorer.gobob.xyz`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:35677},l2OutputOracle:{[Rb]:{address:`0x14D0069452b4AE2b250B395b8adAb771E4267d2f`,blockCreated:4462615}},portal:{[Rb]:{address:`0x867B1Aa872b9C8cB5E9F7755feDC45BB24Ad0ae4`,blockCreated:4462615}}},testnet:!0,sourceId:Rb}),Bb=R({id:11100,name:`Bool Beta Mainnet`,nativeCurrency:{decimals:18,name:`BOL`,symbol:`BOL`},rpcUrls:{default:{http:[`https://beta-rpc-node-http.bool.network`]}},blockExplorers:{default:{name:`BoolScan`,url:`https://beta-mainnet.boolscan.com/`}},testnet:!1}),Vb=R({id:3637,name:`Botanix`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.botanixlabs.com`],webSocket:[`wss://rpc.botanixlabs.com/ws`]}},blockExplorers:{default:{name:`Botanixscan`,url:`https://botanixscan.io`}}}),Hb=R({id:3636,name:`Botanix Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://node.botanixlabs.dev`]}},blockExplorers:{default:{name:`Botanix Testnet Explorer`,url:`https://testnet.botanixscan.io`}},testnet:!0}),Ub=R({id:6001,name:`BounceBit Mainnet`,nativeCurrency:{name:`BounceBit`,symbol:`BB`,decimals:18},rpcUrls:{default:{http:[`https://fullnode-mainnet.bouncebitapi.com`]}},blockExplorers:{default:{name:`BB Scan`,url:`https://bbscan.io`}},testnet:!1}),Wb=R({id:6e3,name:`BounceBit Testnet`,nativeCurrency:{name:`BounceBit`,symbol:`BB`,decimals:18},rpcUrls:{default:{http:[`https://fullnode-testnet.bouncebitapi.com`]}},blockExplorers:{default:{name:`BB Scan`,url:`https://testnet.bbscan.io`}},testnet:!0}),Gb=R({id:1039,name:`Bronos`,nativeCurrency:{decimals:18,name:`BRO`,symbol:`BRO`},rpcUrls:{default:{http:[`https://evm.bronos.org`]}},blockExplorers:{default:{name:`BronoScan`,url:`https://broscan.bronos.org`}}}),Kb=R({id:1038,name:`Bronos Testnet`,nativeCurrency:{decimals:18,name:`Bronos Coin`,symbol:`tBRO`},rpcUrls:{default:{http:[`https://evm-testnet.bronos.org`]}},blockExplorers:{default:{name:`BronoScan`,url:`https://tbroscan.bronos.org`}},testnet:!0}),qb=R({id:56,name:`BNB Smart Chain`,blockTime:750,nativeCurrency:{decimals:18,name:`BNB`,symbol:`BNB`},rpcUrls:{default:{http:[`https://56.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`BscScan`,url:`https://bscscan.com`,apiUrl:`https://api.bscscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:15921452}}}),Jb=R({id:1017,name:`BNB Greenfield Chain`,nativeCurrency:{decimals:18,name:`BNB`,symbol:`BNB`},rpcUrls:{default:{http:[`https://greenfield-chain.bnbchain.org`]}},blockExplorers:{default:{name:`BNB Greenfield Mainnet Scan`,url:`https://greenfieldscan.com`}},testnet:!1}),Yb=R({id:97,name:`BNB Smart Chain Testnet`,nativeCurrency:{decimals:18,name:`BNB`,symbol:`tBNB`},rpcUrls:{default:{http:[`https://data-seed-prebsc-1-s1.bnbchain.org:8545`]}},blockExplorers:{default:{name:`BscScan`,url:`https://testnet.bscscan.com`,apiUrl:`https://api-testnet.bscscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:17422483}},testnet:!0}),Xb=R({id:223,name:`B2`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bsquared.network`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.bsquared.network`}}}),Zb=R({id:1123,name:`B2 Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.bsquared.network`]}},blockExplorers:{default:{name:`blockscout`,url:`https://testnet-explorer.bsquared.network`}},testnet:!0}),Qb=R({id:200901,name:`Bitlayer`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bitlayer.org`,`https://rpc.bitlayer-rpc.com`],webSocket:[`wss://ws.bitlayer.org`,`wss://ws.bitlayer-rpc.com`]}},blockExplorers:{default:{name:`Bitlayer(BTR) Scan`,url:`https://www.btrscan.com`}}}),$b=R({id:200810,name:`Bitlayer Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.bitlayer.org`],webSocket:[`wss://testnet-ws.bitlayer.org`,`wss://testnet-ws.bitlayer-rpc.com`]}},blockExplorers:{default:{name:`Bitlayer(BTR) Scan`,url:`https://testnet.btrscan.com`}},testnet:!0}),ex=R({id:4999,name:`BlackFort Exchange Network`,nativeCurrency:{name:`BlackFort Token`,symbol:`BXN`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.blackfort.network/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.blackfort.network`,apiUrl:`https://explorer.blackfort.network/api`}}}),tx=R({id:4777,name:`BlackFort Exchange Network Testnet`,nativeCurrency:{name:`BlackFort Testnet Token`,symbol:`TBXN`,decimals:18},rpcUrls:{default:{http:[`https://testnet.blackfort.network/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer.blackfort.network`,apiUrl:`https://testnet-explorer.blackfort.network/api`}},testnet:!0}),nx=R({id:13370,name:`Cannon`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`]}}}),rx=R({id:7700,name:`Canto`,nativeCurrency:{decimals:18,name:`Canto`,symbol:`CANTO`},rpcUrls:{default:{http:[`https://canto.gravitychain.io`]}},blockExplorers:{default:{name:`Tuber.Build (Blockscout)`,url:`https://tuber.build`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2905789}}}),ix={estimateFeesPerGas:async e=>{if(!e.request?.feeCurrency)return null;let[t,n]=await Promise.all([ax(e.client,e.request.feeCurrency),ox(e.client,e.request.feeCurrency)]);return{maxFeePerGas:e.multiply(t-n)+n,maxPriorityFeePerGas:n}}};async function ax(e,t){let n=await e.request({method:`eth_gasPrice`,params:[t]});return BigInt(n)}async function ox(e,t){let n=await e.request({method:`eth_maxPriorityFeePerGas`,params:[t]});return BigInt(n)}Sn();function sx(e){return e===0||e===0n||e==null||e===`0`||e===``||typeof e==`string`&&(xn(e).toLowerCase()===`0x`||xn(e).toLowerCase()===`0x00`)}function cx(e){return!sx(e)}function lx(e){return e.maxFeePerGas!==void 0&&e.maxPriorityFeePerGas!==void 0}function ux(e){return e.type===`cip64`?!0:lx(e)&&cx(e.feeCurrency)}Dn(),Uu();const dx={block:cd({format(e){return{transactions:e.transactions?.map(e=>typeof e==`string`?e:{...id(e),...e.gatewayFee?{gatewayFee:wn(e.gatewayFee),gatewayFeeRecipient:e.gatewayFeeRecipient}:{},feeCurrency:e.feeCurrency})}}}),transaction:ad({format(e){if(e.type===`0x7e`)return{isSystemTx:e.isSystemTx,mint:e.mint?wn(e.mint):void 0,sourceHash:e.sourceHash,type:`deposit`};let t={feeCurrency:e.feeCurrency};return e.type===`0x7b`?t.type=`cip64`:(e.type===`0x7c`&&(t.type=`cip42`),t.gatewayFee=e.gatewayFee?wn(e.gatewayFee):null,t.gatewayFeeRecipient=e.gatewayFeeRecipient),t}}),transactionRequest:Hu({format(e){let t={};return e.feeCurrency&&(t.feeCurrency=e.feeCurrency),ux(e)&&(t.type=`0x7b`),t}})};Xu(),pi(),O(),Dp(),ju(),Ci(),Di(),A();function fx(e,t){return ux(e)?mx(e,t):yy(e,t)}const px={transaction:fx};function mx(e,t){gx(e);let{chainId:n,gas:r,nonce:i,to:a,value:o,maxFeePerGas:s,maxPriorityFeePerGas:c,accessList:l,feeCurrency:u,data:d}=e,f=[On(n),i?On(i):`0x`,c?On(c):`0x`,s?On(s):`0x`,r?On(r):`0x`,a??`0x`,o?On(o):`0x`,d??`0x`,ah(l),u,...fh(e,t)];return Ei([`0x7b`,N(f)])}var hx=Yu;function gx(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:r,maxFeePerGas:i,to:a,feeCurrency:o}=e;if(t<=0)throw new Ep({chainId:t});if(a&&!bi(a))throw new fi({address:a});if(r)throw new D("`gasPrice` is not a valid CIP-64 Transaction attribute.");if(cx(i)&&i>hx)throw new bu({maxFeePerGas:i});if(cx(n)&&cx(i)&&n>i)throw new ku({maxFeePerGas:i,maxPriorityFeePerGas:n});if(cx(o)&&!bi(o))throw new D("`feeCurrency` MUST be a token address for CIP-64 transactions.");if(sx(o))throw new D("`feeCurrency` must be provided for CIP-64 transactions.")}const _x={blockTime:1e3,contracts:_y,formatters:dx,serializers:px,fees:ix},vx=R({..._x,id:42220,name:`Celo`,nativeCurrency:{decimals:18,name:`CELO`,symbol:`CELO`},rpcUrls:{default:{http:[`https://forno.celo.org`]}},blockExplorers:{default:{name:`Celo Explorer`,url:`https://celoscan.io`,apiUrl:`https://api.celoscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:13112599}},testnet:!1});var yx=17e3;const bx=R({..._x,id:44787,name:`Alfajores`,nativeCurrency:{decimals:18,name:`CELO`,symbol:`A-CELO`},rpcUrls:{default:{http:[`https://alfajores-forno.celo-testnet.org`]}},blockExplorers:{default:{name:`Celo Alfajores Explorer`,url:`https://celo-alfajores.blockscout.com`,apiUrl:`https://celo-alfajores.blockscout.com/api`}},contracts:{..._x.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:14569001},portal:{[yx]:{address:`0x82527353927d8D069b3B452904c942dA149BA381`,blockCreated:2411324}},disputeGameFactory:{[yx]:{address:`0xE28AAdcd9883746c0e5068F58f9ea06027b214cb`,blockCreated:2411324}},l2OutputOracle:{[yx]:{address:`0x4a2635e9e4f6e45817b1D402ac4904c1d1752438`,blockCreated:2411324}},l1StandardBridge:{[yx]:{address:`0xD1B0E0581973c9eB7f886967A606b9441A897037`,blockCreated:2411324}}},testnet:!0});var xx=11155111;const Sx=R({..._x,id:11142220,name:`Celo Sepolia Testnet`,nativeCurrency:{decimals:18,name:`CELO`,symbol:`S-CELO`},rpcUrls:{default:{http:[`https://forno.celo-sepolia.celo-testnet.org`]}},blockExplorers:{default:{name:`Celo Sepolia Explorer`,url:`https://celo-sepolia.blockscout.com/`,apiUrl:`https://celo-sepolia.blockscout.com/api`}},contracts:{..._x.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1},portal:{[xx]:{address:`0x44ae3d41a335a7d05eb533029917aad35662dcc2`,blockCreated:8825790}},disputeGameFactory:{[xx]:{address:`0x57c45d82d1a995f1e135b8d7edc0a6bb5211cfaa`,blockCreated:8825790}},l1StandardBridge:{[xx]:{address:`0xec18a3c30131a0db4246e785355fbc16e2eaf408`,blockCreated:8825790}}},testnet:!0}),Cx=R({id:5858,name:`Chang Chain Foundation Mainnet`,nativeCurrency:{decimals:18,name:`CTH`,symbol:`CTH`},rpcUrls:{default:{http:[`https://rpc.cthscan.com`]}},blockExplorers:{default:{name:`Chang Chain explorer`,url:`https://cthscan.com`}}}),wx=R({id:88888,name:`Chiliz Chain`,network:`chiliz-chain`,nativeCurrency:{decimals:18,name:`CHZ`,symbol:`CHZ`},rpcUrls:{default:{http:[`https://rpc.chiliz.com`]}},blockExplorers:{default:{name:`Chiliz Explorer`,url:`https://scan.chiliz.com`,apiUrl:`https://scan.chiliz.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:8080847}}}),Tx=R({id:2882,name:`Chips Network`,network:`CHIPS`,nativeCurrency:{decimals:18,name:`IOTA`,symbol:`IOTA`},rpcUrls:{default:{http:[`https://node.chips.ooo/wasp/api/v1/chains/iota1pp3d3mnap3ufmgqnjsnw344sqmf5svjh26y2khnmc89sv6788y3r207a8fn/evm`]}}}),Ex=R({id:5115,name:`Citrea Testnet`,nativeCurrency:{name:`cBTC`,symbol:`cBTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.citrea.xyz`]}},blockExplorers:{default:{name:`Citrea Explorer`,url:`https://explorer.testnet.citrea.xyz`,apiUrl:`https://explorer.testnet.citrea.xyz/api`}},testnet:!0}),Dx=R({id:61,name:`Ethereum Classic`,nativeCurrency:{decimals:18,name:`ETC`,symbol:`ETC`},rpcUrls:{default:{http:[`https://etc.rivet.link`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.com/etc/mainnet`}}}),Ox=R({id:112,name:`Coinbit Mainnet`,nativeCurrency:{name:`GIDR`,symbol:`GIDR`,decimals:18},rpcUrls:{default:{http:[`https://coinbit-rpc-mainnet.chain.sbcrypto.app`]}},blockExplorers:{default:{name:`Coinbit Explorer`,url:`https://coinbit-explorer.chain.sbcrypto.app`}},testnet:!1}),kx=R({id:52,name:`CoinEx Mainnet`,nativeCurrency:{name:`cet`,symbol:`cet`,decimals:18},rpcUrls:{default:{http:[`https://rpc.coinex.net`]}},blockExplorers:{default:{name:`CoinEx Explorer`,url:`https://www.coinex.net`}},testnet:!1}),Ax=R({id:1030,name:`Conflux eSpace`,nativeCurrency:{name:`Conflux`,symbol:`CFX`,decimals:18},rpcUrls:{default:{http:[`https://evm.confluxrpc.com`],webSocket:[`wss://evm.confluxrpc.com/ws`]}},blockExplorers:{default:{name:`ConfluxScan`,url:`https://evm.confluxscan.org`}},contracts:{multicall3:{address:`0xEFf0078910f638cd81996cc117bccD3eDf2B072F`,blockCreated:68602935}}}),jx=R({id:71,name:`Conflux eSpace Testnet`,network:`cfx-espace-testnet`,testnet:!0,nativeCurrency:{name:`Conflux`,symbol:`CFX`,decimals:18},rpcUrls:{default:{http:[`https://evmtestnet.confluxrpc.com`],webSocket:[`wss://evmtestnet.confluxrpc.com/ws`]}},blockExplorers:{default:{name:`ConfluxScan`,url:`https://evmtestnet.confluxscan.org`}},contracts:{multicall3:{address:`0xEFf0078910f638cd81996cc117bccD3eDf2B072F`,blockCreated:117499050}}}),Mx=R({id:1116,name:`Core Dao`,nativeCurrency:{decimals:18,name:`Core`,symbol:`CORE`},rpcUrls:{default:{http:[`https://rpc.coredao.org`]}},blockExplorers:{default:{name:`CoreDao`,url:`https://scan.coredao.org`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:11907934}},testnet:!1}),Nx=R({id:1115,name:`Core Testnet`,nativeCurrency:{decimals:18,name:`tCore`,symbol:`TCORE`},rpcUrls:{default:{http:[`https://rpc.test.btcs.network`]}},blockExplorers:{default:{name:`Core Testnet`,url:`https://scan.test.btcs.network`,apiUrl:`https://api.test.btcs.network/api`}},contracts:{multicall3:{address:`0xCcddF20A1932537123C2E48Bd8e00b108B8f7569`,blockCreated:29350509}},testnet:!0}),Px=R({id:1114,name:`Core Testnet2`,nativeCurrency:{decimals:18,name:`tCore2`,symbol:`TCORE2`},rpcUrls:{default:{http:[`https://rpc.test2.btcs.network`]}},blockExplorers:{default:{name:`Core Testnet2`,url:`https://scan.test2.btcs.network`,apiUrl:`https://api.test2.btcs.network/api`}},contracts:{multicall3:{address:`0x3CB285ff3Cd5C7C7e570b1E7DE3De17A0f985e56`,blockCreated:3838600}},testnet:!0}),Fx=R({id:21e6,name:`Corn`,nativeCurrency:{decimals:18,name:`Bitcorn`,symbol:`BTCN`},rpcUrls:{default:{http:[`https://21000000.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Corn Explorer`,url:`https://cornscan.io`,apiUrl:`https://api.routescan.io/v2/network/mainnet/evm/21000000/etherscan/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3228}},sourceId:1}),Ix=R({id:21000001,name:`Corn Testnet`,nativeCurrency:{decimals:18,name:`Bitcorn`,symbol:`BTCN`},rpcUrls:{default:{http:[`https://21000001.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Corn Testnet Explorer`,url:`https://testnet.cornscan.io`,apiUrl:`https://api.routescan.io/v2/network/testnet/evm/21000001/etherscan/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4886}},testnet:!0,sourceId:11155111}),Lx=R({id:44,name:`Crab Network`,nativeCurrency:{decimals:18,name:`Crab Network Native Token`,symbol:`CRAB`},rpcUrls:{default:{http:[`https://crab-rpc.darwinia.network`],webSocket:[`wss://crab-rpc.darwinia.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://crab-scan.darwinia.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3032593}}}),Rx=R({id:66665,name:`Creator`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.creatorchain.io`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.creatorchain.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},testnet:!0}),zx=R({id:102032,name:`Creditcoin Devnet`,nativeCurrency:{name:`Devnet CTC`,symbol:`devCTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.cc3-devnet.creditcoin.network`],webSocket:[`wss://rpc.cc3-devnet.creditcoin.network/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://creditcoin-devnet.blockscout.com`,apiUrl:`https://creditcoin3-dev.subscan.io`}},testnet:!0}),Bx=R({id:102030,name:`Creditcoin`,nativeCurrency:{name:`Creditcoin`,symbol:`CTC`,decimals:18},rpcUrls:{default:{http:[`https://mainnet3.creditcoin.network`],webSocket:[`wss://mainnet3.creditcoin.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://creditcoin.blockscout.com`,apiUrl:`https://creditcoin.blockscout.com/api`}},testnet:!1}),Vx=R({id:102031,name:`Creditcoin Testnet`,nativeCurrency:{name:`Creditcoin Testnet`,symbol:`tCTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.cc3-testnet.creditcoin.network`],webSocket:[`wss://rpc.cc3-testnet.creditcoin.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://creditcoin-testnet.blockscout.com`,apiUrl:`https://creditcoin-testnet.blockscout.com/api`}},testnet:!0}),Hx=R({id:25,name:`Cronos Mainnet`,nativeCurrency:{decimals:18,name:`Cronos`,symbol:`CRO`},rpcUrls:{default:{http:[`https://evm.cronos.org`]}},blockExplorers:{default:{name:`Cronos Explorer`,url:`https://explorer.cronos.org`,apiUrl:`https://explorer-api.cronos.org/mainnet/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1963112}}}),Ux=R({id:338,name:`Cronos Testnet`,nativeCurrency:{decimals:18,name:`CRO`,symbol:`tCRO`},rpcUrls:{default:{http:[`https://evm-t3.cronos.org`]}},blockExplorers:{default:{name:`Cronos Explorer (Testnet)`,url:`https://explorer.cronos.org/testnet`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:10191251}},testnet:!0}),Wx=R({id:388,name:`Cronos zkEVM Mainnet`,nativeCurrency:{decimals:18,name:`Cronos zkEVM CRO`,symbol:`zkCRO`},rpcUrls:{default:{http:[`https://mainnet.zkevm.cronos.org`]}},blockExplorers:{default:{name:`Cronos zkEVM (Mainnet) Chain Explorer`,url:`https://explorer.zkevm.cronos.org`}},contracts:{multicall3:{address:`0x06f4487d7c4a5983d2660db965cc6d2565e4cfaa`,blockCreated:72}}}),Gx=R({id:282,name:`Cronos zkEVM Testnet`,nativeCurrency:{decimals:18,name:`Cronos zkEVM Test Coin`,symbol:`zkTCRO`},rpcUrls:{default:{http:[`https://testnet.zkevm.cronos.org`]}},blockExplorers:{default:{name:`Cronos zkEVM Testnet Explorer`,url:`https://explorer.zkevm.cronos.org/testnet`}},testnet:!0}),Kx=R({id:3737,name:`Crossbell`,nativeCurrency:{decimals:18,name:`CSB`,symbol:`CSB`},rpcUrls:{default:{http:[`https://rpc.crossbell.io`]}},blockExplorers:{default:{name:`CrossScan`,url:`https://scan.crossbell.io`,apiUrl:`https://scan.crossbell.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:38246031}}}),qx=R({id:4158,name:`CrossFi Mainnet`,nativeCurrency:{decimals:18,name:`CrossFi`,symbol:`XFI`},rpcUrls:{default:{http:[`https://rpc.mainnet.ms`]}},blockExplorers:{default:{name:`CrossFi Blockchain Explorer`,url:`https://xfiscan.com`}},testnet:!1}),Jx=R({id:33111,name:`Curtis`,nativeCurrency:{name:`ApeCoin`,symbol:`APE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.curtis.apechain.com`]}},blockExplorers:{default:{name:`Curtis Explorer`,url:`https://explorer.curtis.apechain.com`}},testnet:!0}),Yx=R({id:7560,name:`Cyber`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://cyber.alt.technology`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://cyberscan.co`,apiUrl:`https://cyberscan.co/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),Xx=R({id:111557560,name:`Cyber Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://cyber-testnet.alt.technology`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet.cyberscan.co`,apiUrl:`https://testnet.cyberscan.co/api`}},contracts:{multicall3:{address:`0xffc391F0018269d4758AEA1a144772E8FB99545E`,blockCreated:304545}},testnet:!0}),Zx=R({id:824,name:`Daily Network Mainnet`,nativeCurrency:{decimals:18,name:`Daily`,symbol:`DLY`},rpcUrls:{default:{http:[`https://rpc.mainnet.dailycrypto.net`]}},blockExplorers:{default:{name:`Daily Mainnet Explorer`,url:`https://explorer.mainnet.dailycrypto.net`}},testnet:!1}),Qx=R({id:825,name:`Daily Network Testnet`,nativeCurrency:{decimals:18,name:`Daily`,symbol:`DLY`},rpcUrls:{default:{http:[`https://rpc.testnet.dailycrypto.net`]}},blockExplorers:{default:{name:`Daily Testnet Explorer`,url:`https://explorer.testnet.dailycrypto.net`}},testnet:!0}),$x=R({id:46,name:`Darwinia Network`,nativeCurrency:{decimals:18,name:`RING`,symbol:`RING`},rpcUrls:{default:{http:[`https://rpc.darwinia.network`],webSocket:[`wss://rpc.darwinia.network`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.darwinia.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:69420}}}),eS=R({id:20240603,name:`DBK chain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.dbkchain.io`]}},blockExplorers:{default:{name:`DBK Chain Explorer`,url:`https://scan.dbkchain.io`}},testnet:!1}),tS=R({...z,id:0x9a697f88076c8,name:`Dchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://dchain-2716446429837000-1.jsonrpc.sagarpc.io`]}},blockExplorers:{default:{name:`Dchain Explorer`,url:`https://dchain-2716446429837000-1.sagaexplorer.io`,apiUrl:`https://api-dchain-2716446429837000-1.sagaexplorer.io/api`}},contracts:{...z.contracts}}),nS=R({...z,id:0x9a379ba03cf10,name:`Dchain Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://dchaintestnet-2713017997578000-1.jsonrpc.testnet.sagarpc.io`]}},blockExplorers:{default:{name:`Dchain Explorer`,url:`https://dchaintestnet-2713017997578000-1.testnet.sagaexplorer.io`,apiUrl:`https://api-dchaintestnet-2713017997578000-1.testnet.sagaexplorer.io/api`}},contracts:{...z.contracts}}),rS=R({id:1130,network:`defichain-evm`,name:`DeFiChain EVM Mainnet`,nativeCurrency:{name:`DeFiChain`,symbol:`DFI`,decimals:18},rpcUrls:{default:{http:[`https://eth.mainnet.ocean.jellyfishsdk.com`]}},blockExplorers:{default:{name:`DeFiScan`,url:`https://meta.defiscan.live`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:137852}}}),iS=R({id:1131,network:`defichain-evm-testnet`,name:`DeFiChain EVM Testnet`,nativeCurrency:{name:`DeFiChain`,symbol:`DFI`,decimals:18},rpcUrls:{default:{http:[`https://eth.testnet.ocean.jellyfishsdk.com`]}},blockExplorers:{default:{name:`DeFiScan`,url:`https://meta.defiscan.live/?network=TestNet`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:156462}},testnet:!0}),aS=R({id:666666666,name:`Degen`,nativeCurrency:{decimals:18,name:`Degen`,symbol:`DEGEN`},rpcUrls:{default:{http:[`https://rpc.degen.tips`],webSocket:[`wss://rpc.degen.tips`]}},blockExplorers:{default:{name:`Degen Chain Explorer`,url:`https://explorer.degen.tips`,apiUrl:`https://explorer.degen.tips/api/v2`}}}),oS=R({id:53935,name:`DFK Chain`,nativeCurrency:{decimals:18,name:`Jewel`,symbol:`JEWEL`},rpcUrls:{default:{http:[`https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc`]}},blockExplorers:{default:{name:`DFKSubnetScan`,url:`https://subnets.avax.network/defi-kingdoms`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14790551}}}),sS=R({id:15,name:`Diode Prenet`,nativeCurrency:{decimals:18,name:`DIODE`,symbol:`DIODE`},rpcUrls:{default:{http:[`https://prenet.diode.io:8443`],webSocket:[`wss://prenet.diode.io:8443/ws`]}},blockExplorers:{default:{name:`Diode Explorer`,url:`https://diode.io/prenet`}},testnet:!1}),cS=R({id:513100,name:`DisChain`,nativeCurrency:{decimals:18,name:`DIS`,symbol:`DIS`},rpcUrls:{default:{http:[`https://rpc.dischain.xyz`]}},blockExplorers:{default:{name:`DisChain Explorer`,url:`https://www.oklink.com/dis`}}}),lS=R({id:53457,name:`DODOchain Testnet`,nativeCurrency:{decimals:18,name:`DODO`,symbol:`DODO`},rpcUrls:{default:{http:[`https://dodochain-testnet.alt.technology`],webSocket:[`wss://dodochain-testnet.alt.technology/ws`]}},blockExplorers:{default:{name:`DODOchain Testnet (Sepolia) Explorer`,url:`https://testnet-scan.dodochain.com`}},testnet:!0}),uS=R({id:2e3,name:`Dogechain`,nativeCurrency:{decimals:18,name:`Wrapped Dogecoin`,symbol:`WDOGE`},rpcUrls:{default:{http:[`https://rpc.dogechain.dog`]}},blockExplorers:{default:{name:`DogeChainExplorer`,url:`https://explorer.dogechain.dog`,apiUrl:`https://explorer.dogechain.dog/api`}},contracts:{multicall3:{address:`0x68a8609a60a008EFA633dfdec592c03B030cC508`,blockCreated:25384031}}}),dS=R({id:97476,name:`Doma Testnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc-testnet.doma.xyz`]}},blockExplorers:{default:{name:`Doma Testnet Explorer`,url:`https://explorer-testnet.doma.xyz`}},testnet:!0}),fS=R({id:42026,name:`Donatuz`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.donatuz.com`]}},blockExplorers:{default:{name:`Donatuz Explorer`,url:`https://explorer.donatuz.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}}}),pS=R({id:7979,name:`DOS Chain`,nativeCurrency:{decimals:18,name:`DOS Chain`,symbol:`DOS`},rpcUrls:{default:{http:[`https://main.doschain.com`]}},blockExplorers:{default:{name:`DOS Chain Explorer`,url:`https://doscan.io`,apiUrl:`https://api.doscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:161908}}}),mS=R({id:3939,name:`DOS Chain Testnet`,nativeCurrency:{decimals:18,name:`DOS Chain Testnet`,symbol:`DOS`},rpcUrls:{default:{http:[`https://test.doschain.com`]}},blockExplorers:{default:{name:`DOS Chain Testnet Explorer`,url:`https://test.doscan.io`,apiUrl:`https://api-test.doscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:69623}},testnet:!0}),hS=R({id:23451,name:`DreyerX Mainnet`,nativeCurrency:{name:`DreyerX`,symbol:`DRX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.dreyerx.com`]}},blockExplorers:{default:{name:`DreyerX Scan`,url:`https://scan.dreyerx.com`}}}),gS=R({id:23452,name:`DreyerX Testnet`,nativeCurrency:{name:`DreyerX`,symbol:`DRX`,decimals:18},rpcUrls:{default:{http:[`http://testnet-rpc.dreyerx.com`]}},blockExplorers:{default:{name:`DreyerX Testnet Scan`,url:`https://testnet-scan.dreyerx.com`}},testnet:!0}),_S=R({id:555888,name:`DustBoy IoT`,nativeCurrency:{name:`Ether`,symbol:`DST`,decimals:18},rpcUrls:{default:{http:[`https://dustboy-rpc.jibl2.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://dustboy.jibl2.com`,apiUrl:`https://dustboy.jibl2.com/api`}},contracts:{multicall3:{address:`0xFFD34aa2C62B2D52E00A361e466C229788f4eD6a`,blockCreated:526569}},testnet:!1}),vS=R({id:1100,name:`Dymension`,nativeCurrency:{name:`DYM`,symbol:`DYM`,decimals:18},rpcUrls:{default:{http:[`https://dymension-evm-rpc.publicnode.com`],webSocket:[`wss://dymension-evm-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Dym FYI`,url:`https://dym.fyi`}},testnet:!1}),yS=R({id:5424,name:`edeXa`,nativeCurrency:{name:`edeXa`,symbol:`EDX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.edexa.network`]}},blockExplorers:{default:{name:`edeXa Explorer`,url:`https://explorer.edexa.network`,apiUrl:`https://explorer.edexa.network/api/v2`}}}),bS=R({id:1995,name:`edeXa Testnet`,nativeCurrency:{name:`edeXa`,symbol:`tEDX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.edexa.network`]}},blockExplorers:{default:{name:`edeXa Testnet Explorer`,url:`https://explorer.testnet.edexa.network`,apiUrl:`https://explorer.testnet.edexa.network/api/v2`}},testnet:!0}),xS=R({id:2026,name:`Edgeless Network`,nativeCurrency:{name:`Edgeless Wrapped ETH`,symbol:`EwETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.edgeless.network/http`],webSocket:[`wss://rpc.edgeless.network/ws`]}},blockExplorers:{default:{name:`Edgeless Explorer`,url:`https://explorer.edgeless.network`}}}),SS=R({id:202,name:`Edgeless Testnet`,nativeCurrency:{name:`Edgeless Wrapped ETH`,symbol:`EwETH`,decimals:18},rpcUrls:{default:{http:[`https://edgeless-testnet.rpc.caldera.xyz/http`],webSocket:[`wss://edgeless-testnet.rpc.caldera.xyz/ws`]}},blockExplorers:{default:{name:`Edgeless Testnet Explorer`,url:`https://testnet.explorer.edgeless.network`}}}),CS=R({id:2021,name:`Edgeware EdgeEVM Mainnet`,nativeCurrency:{decimals:18,name:`Edgeware`,symbol:`EDG`},rpcUrls:{default:{http:[`https://edgeware-evm.jelliedowl.net`]}},blockExplorers:{default:{name:`Edgscan by Bharathcoorg`,url:`https://edgscan.live`,apiUrl:`https://edgscan.live/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:18117872}}}),wS=R({id:2022,name:`Beresheet BereEVM Testnet`,nativeCurrency:{decimals:18,name:`Testnet EDG`,symbol:`tEDG`},rpcUrls:{default:{http:[`https://beresheet-evm.jelliedowl.net`]}},blockExplorers:{default:{name:`Edgscan by Bharathcoorg`,url:`https://testnet.edgscan.live`,apiUrl:`https://testnet.edgscan.live/api`}}}),TS=R({id:41923,name:`EDU Chain`,nativeCurrency:{decimals:18,name:`EDU`,symbol:`EDU`},rpcUrls:{default:{http:[`https://rpc.edu-chain.raas.gelato.cloud`]}},blockExplorers:{default:{name:`EDU Chain Explorer`,url:`https://educhain.blockscout.com/`}},testnet:!1}),ES=R({id:656476,name:`EDU Chain Testnet`,nativeCurrency:{decimals:18,name:`EDU`,symbol:`EDU`},rpcUrls:{default:{http:[`https://rpc.open-campus-codex.gelato.digital/`],webSocket:[`wss://ws.open-campus-codex.gelato.digital`]}},blockExplorers:{default:{name:`EDU Chain Testnet Explorer`,url:`https://opencampus-codex.blockscout.com`,apiUrl:`https://opencampus-codex.blockscout.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:15514133}},testnet:!0}),DS=R({id:1994,name:`Ekta`,nativeCurrency:{decimals:18,name:`EKTA`,symbol:`EKTA`},rpcUrls:{default:{http:[`https://main.ekta.io`]}},blockExplorers:{default:{name:`Ektascan`,url:`https://ektascan.io`,apiUrl:`https://ektascan.io/api`}}}),OS=R({id:1004,name:`Ekta Testnet`,nativeCurrency:{decimals:18,name:`EKTA`,symbol:`EKTA`},rpcUrls:{default:{http:[`https://test.ekta.io:8545`]}},blockExplorers:{default:{name:`Test Ektascan`,url:`https://test.ektascan.io`,apiUrl:`https://test.ektascan.io/api`}},testnet:!0}),kS=R({id:20,name:`Elastos Smart Chain`,nativeCurrency:{name:`ELA`,symbol:`ELA`,decimals:18},rpcUrls:{default:{http:[`https://api2.elastos.io/eth`]}},blockExplorers:{default:{name:`Elastos Explorer`,url:`https://esc.elastos.io`}},testnet:!1}),AS=R({id:21,name:`Elastos Smart Chain Testnet`,nativeCurrency:{name:`tELA`,symbol:`tELA`,decimals:18},rpcUrls:{default:{http:[`https://api-testnet.elastos.io/eth`]}},blockExplorers:{default:{name:`Elastos Explorer`,url:`https://esc-testnet.elastos.io`}},testnet:!0}),jS=R({id:52014,name:`Electroneum Mainnet`,nativeCurrency:{name:`ETN`,symbol:`ETN`,decimals:18},rpcUrls:{default:{http:[`https://rpc.electroneum.com`]}},blockExplorers:{default:{name:`Electroneum Block Explorer`,url:`https://blockexplorer.electroneum.com`}},testnet:!1}),MS=R({id:5201420,name:`Electroneum Testnet`,nativeCurrency:{name:`ETN`,symbol:`ETN`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.electroneum.com`]}},blockExplorers:{default:{name:`Electroneum Block Explorer`,url:`https://blockexplorer.thesecurityteam.rocks`}},testnet:!0}),NS=R({...z,id:1338,name:`Elysium Testnet`,nativeCurrency:{decimals:18,name:`LAVA`,symbol:`LAVA`},rpcUrls:{default:{http:[`https://elysium-test-rpc.vulcanforged.com`]}},blockExplorers:{default:{name:`Elysium testnet explorer`,url:`https://elysium-explorer.vulcanforged.com`}},testnet:!0}),PS=R({id:246,name:`Energy Mainnet`,nativeCurrency:{name:`EWT`,symbol:`EWT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.energyweb.org`]}},blockExplorers:{default:{name:`EnergyWeb Explorer`,url:`https://explorer.energyweb.org`}},testnet:!1}),FS=R({id:173,name:`ENI Mainnet`,nativeCurrency:{decimals:18,name:`ENI`,symbol:`ENI`},rpcUrls:{default:{http:[`https://rpc.eniac.network`]}},blockExplorers:{default:{name:`ENI Explorer`,url:`https://scan.eniac.network`}},testnet:!1}),IS=R({id:6912115,name:`ENI Testnet`,nativeCurrency:{decimals:18,name:`ENI Testnet Token`,symbol:`ENI`},rpcUrls:{default:{http:[`https://rpc-testnet.eniac.network`]}},blockExplorers:{default:{name:`ENI Testnet Explorer`,url:`https://scan-testnet.eniac.network`}},testnet:!0}),LS=R({id:119,name:`ENULS Mainnet`,nativeCurrency:{decimals:18,name:`NULS`,symbol:`NULS`},rpcUrls:{default:{http:[`https://evmapi2.nuls.io`]}},blockExplorers:{default:{name:`ENULS Explorer`,url:`https://evmscan.nuls.io`}},testnet:!1}),RS=R({id:7332,name:`Horizen EON`,nativeCurrency:{decimals:18,name:`ZEN`,symbol:`ZEN`},rpcUrls:{default:{http:[`https://eon-rpc.horizenlabs.io/ethv1`]}},blockExplorers:{default:{name:`EON Explorer`,url:`https://eon-explorer.horizenlabs.io`}},contracts:{}}),zS=R({id:17777,name:`EOS EVM`,nativeCurrency:{decimals:18,name:`EOS`,symbol:`EOS`},rpcUrls:{default:{http:[`https://api.evm.eosnetwork.com`]}},blockExplorers:{default:{name:`EOS EVM Explorer`,url:`https://explorer.evm.eosnetwork.com`,apiUrl:`https://explorer.evm.eosnetwork.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7943933}}}),BS=R({id:15557,name:`EOS EVM Testnet`,nativeCurrency:{decimals:18,name:`EOS`,symbol:`EOS`},rpcUrls:{default:{http:[`https://api.testnet.evm.eosnetwork.com`]}},blockExplorers:{default:{name:`EOS EVM Testnet Explorer`,url:`https://explorer.testnet.evm.eosnetwork.com`,apiUrl:`https://explorer.testnet.evm.eosnetwork.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:9067940}},testnet:!0}),VS=R({id:140,name:`Eteria`,nativeCurrency:{name:`Eteria`,symbol:`ERA`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.eteria.io/v1`]}},blockExplorers:{default:{name:`Eteria Explorer`,url:`https://explorer.eteria.io`,apiUrl:`https://explorer.eteria.io/api`}}}),HS=R({id:42793,name:`Etherlink`,blockTime:4830,nativeCurrency:{decimals:18,name:`Tez`,symbol:`XTZ`},rpcUrls:{default:{http:[`https://node.mainnet.etherlink.com`]}},blockExplorers:{default:{name:`Etherlink`,url:`https://explorer.etherlink.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:33899}}}),US=R({id:128123,name:`Etherlink Testnet`,nativeCurrency:{decimals:18,name:`Tez`,symbol:`XTZ`},rpcUrls:{default:{http:[`https://node.ghostnet.etherlink.com`]}},blockExplorers:{default:{name:`Etherlink Testnet`,url:`https://testnet.explorer.etherlink.com`}},testnet:!0}),WS=R({id:183,name:`Ethernity`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.ethernitychain.io`]}},blockExplorers:{default:{name:`Ethernity Explorer`,url:`https://ernscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},testnet:!1}),GS=R({id:20256789,name:`ETP Mainnet`,nativeCurrency:{decimals:18,name:`ETP Chain Native Token`,symbol:`ETP`},rpcUrls:{default:{http:[`https://rpc.etpscan.xyz`]}},blockExplorers:{default:{name:`ETP Scan`,url:`https://etpscan.xyz`}}}),KS=R({id:9001,name:`Evmos`,nativeCurrency:{decimals:18,name:`Evmos`,symbol:`EVMOS`},rpcUrls:{default:{http:[`https://eth.bd.evmos.org:8545`]}},blockExplorers:{default:{name:`Evmos Block Explorer`,url:`https://escan.live`}}}),qS=R({id:9e3,name:`Evmos Testnet`,nativeCurrency:{decimals:18,name:`Evmos`,symbol:`EVMOS`},rpcUrls:{default:{http:[`https://eth.bd.evmos.dev:8545`]}},blockExplorers:{default:{name:`Evmos Testnet Block Explorer`,url:`https://evm.evmos.dev/`}}}),JS=R({id:22052002,name:`Excelon Mainnet`,network:`XLON`,nativeCurrency:{decimals:18,name:`Excelon`,symbol:`xlon`},rpcUrls:{default:{http:[`https://edgewallet1.xlon.org`]}},blockExplorers:{default:{name:`Excelon explorer`,url:`https://explorer.excelon.io`}}}),YS=R({id:2,name:`Expanse Network`,nativeCurrency:{decimals:18,name:`EXP`,symbol:`EXP`},rpcUrls:{default:{http:[`https://node.expanse.tech`]}},blockExplorers:{default:{name:`Expanse Explorer`,url:`https://explorer.expanse.tech`}},testnet:!1}),XS=R({id:7200,name:`exSat Network`,nativeCurrency:{decimals:18,name:`BTC`,symbol:`BTC`},rpcUrls:{default:{http:[`https://evm.exsat.network`]}},blockExplorers:{default:{name:`exSat Explorer`,url:`https://scan.exsat.network`,apiUrl:`https://scan.exsat.network/api`}}}),ZS=R({id:839999,name:`exSat Testnet`,nativeCurrency:{decimals:18,name:`BTC`,symbol:`BTC`},rpcUrls:{default:{http:[`https://evm-tst3.exsat.network`]}},blockExplorers:{default:{name:`exSat Explorer`,url:`https://scan-testnet.exsat.network`,apiUrl:`https://scan-testnet.exsat.network/api`}}}),QS=R({id:250,name:`Fantom`,nativeCurrency:{decimals:18,name:`Fantom`,symbol:`FTM`},rpcUrls:{default:{http:[`https://250.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`FTMScan`,url:`https://ftmscan.com`,apiUrl:`https://api.ftmscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:33001987}}}),$S=R({id:64240,name:`Fantom Sonic Open Testnet`,network:`fantom-sonic-testnet`,nativeCurrency:{decimals:18,name:`Fantom`,symbol:`FTM`},rpcUrls:{default:{http:[`https://rpcapi.sonic.fantom.network`]}},blockExplorers:{default:{name:`Fantom Sonic Open Testnet Explorer`,url:`https://public-sonic.fantom.network`}},testnet:!0}),eC=R({id:4002,name:`Fantom Testnet`,nativeCurrency:{decimals:18,name:`Fantom`,symbol:`FTM`},rpcUrls:{default:{http:[`https://rpc.testnet.fantom.network`]}},blockExplorers:{default:{name:`FTMScan`,url:`https://testnet.ftmscan.com`,apiUrl:`https://testnet.ftmscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:8328688}},testnet:!0}),tC=R({id:12306,name:`Fibo Chain`,nativeCurrency:{decimals:18,name:`fibo`,symbol:`FIBO`},rpcUrls:{default:{http:[`https://network.hzroc.art`]}},blockExplorers:{default:{name:`FiboScan`,url:`https://scan.fibochain.org`}}}),nC=R({id:314,name:`Filecoin Mainnet`,nativeCurrency:{decimals:18,name:`filecoin`,symbol:`FIL`},rpcUrls:{default:{http:[`https://api.node.glif.io/rpc/v1`]}},blockExplorers:{default:{name:`Filfox`,url:`https://filfox.info/en`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3328594}}}),rC=R({id:314159,name:`Filecoin Calibration`,nativeCurrency:{decimals:18,name:`testnet filecoin`,symbol:`tFIL`},rpcUrls:{default:{http:[`https://api.calibration.node.glif.io/rpc/v1`]}},blockExplorers:{default:{name:`Filscan`,url:`https://calibration.filscan.io`}},testnet:!0}),iC=R({id:3141,name:`Filecoin Hyperspace`,nativeCurrency:{decimals:18,name:`testnet filecoin`,symbol:`tFIL`},rpcUrls:{default:{http:[`https://api.hyperspace.node.glif.io/rpc/v1`]}},blockExplorers:{default:{name:`Filfox`,url:`https://hyperspace.filfox.info/en`}},testnet:!0}),aC=R({id:253368190,name:`Flame`,network:`flame`,nativeCurrency:{symbol:`TIA`,name:`TIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.flame.astria.org`],webSocket:[`wss://ws.flame.astria.org`]}},blockExplorers:{default:{name:`Flame Explorer`,url:`https://explorer.flame.astria.org`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:6829148}}}),oC=R({id:14,name:`Flare Mainnet`,nativeCurrency:{decimals:18,name:`Flare`,symbol:`FLR`},rpcUrls:{default:{http:[`https://flare-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Flare Explorer`,url:`https://flare-explorer.flare.network`,apiUrl:`https://flare-explorer.flare.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3002461}}}),sC=R({id:114,name:`Flare Testnet Coston2`,nativeCurrency:{decimals:18,name:`Coston2 Flare`,symbol:`C2FLR`},rpcUrls:{default:{http:[`https://coston2-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Coston2 Explorer`,url:`https://coston2-explorer.flare.network`,apiUrl:`https://coston2-explorer.flare.network/api`}},testnet:!0}),cC=R({id:747,name:`Flow EVM Mainnet`,nativeCurrency:{decimals:18,name:`Flow`,symbol:`FLOW`},rpcUrls:{default:{http:[`https://mainnet.evm.nodes.onflow.org`]}},blockExplorers:{default:{name:`Mainnet Explorer`,url:`https://evm.flowscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6205}},blockTime:800}),lC=R({id:646,name:`Flow EVM Previewnet`,nativeCurrency:{decimals:18,name:`Flow`,symbol:`FLOW`},rpcUrls:{default:{http:[`https://previewnet.evm.nodes.onflow.org`]}},blockExplorers:{default:{name:`Previewnet Explorer`,url:`https://previewnet.flowdiver.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6205}}}),uC=R({id:545,name:`Flow EVM Testnet`,nativeCurrency:{decimals:18,name:`Flow`,symbol:`FLOW`},rpcUrls:{default:{http:[`https://testnet.evm.nodes.onflow.org`]}},blockExplorers:{default:{name:`Flow Diver`,url:`https://evm-testnet.flowscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:137518}},testnet:!0,blockTime:800}),dC=R({id:9999999,name:`Fluence`,nativeCurrency:{name:`FLT`,symbol:`FLT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.fluence.dev`],webSocket:[`wss://ws.mainnet.fluence.dev`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.mainnet.fluence.dev`,apiUrl:`https://blockscout.mainnet.fluence.dev/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:207583}}}),fC=R({id:123420000220,name:`Fluence Stage`,nativeCurrency:{name:`tFLT`,symbol:`tFLT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.stage.fluence.dev`],webSocket:[`wss://ws.stage.fluence.dev`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.stage.fluence.dev`,apiUrl:`https://blockscout.stage.fluence.dev/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:83227}},testnet:!0}),pC=R({id:52164803,name:`Fluence Testnet`,nativeCurrency:{name:`tFLT`,symbol:`tFLT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.fluence.dev`],webSocket:[`wss://ws.testnet.fluence.dev`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.testnet.fluence.dev`,apiUrl:`https://blockscout.testnet.fluence.dev/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:96424}},testnet:!0}),mC=R({id:20993,name:`Fluent Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.dev.gblend.xyz`]}},blockExplorers:{default:{name:`Fluent Explorer`,url:`https://blockscout.dev.gblend.xyz`}},testnet:!0});var hC=1;const gC=R({id:478,name:`Form Network`,nativeCurrency:{decimals:18,name:`Ethereum`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.form.network/http`],webSocket:[`wss://rpc.form.network/ws`]}},blockExplorers:{default:{name:`Form Explorer`,url:`https://explorer.form.network`}},contracts:{...z.contracts,addressManager:{[hC]:{address:`0x15c249E46A2F924C2dB3A1560CF86729bAD1f07B`}},l1CrossDomainMessenger:{[hC]:{address:`0xF333158DCCad1dF6C3F0a3aEe8BC31fA94d9eD5c`}},l2OutputOracle:{[hC]:{address:`0x4ccAAF69F41c5810cA875183648B577CaCf1F67E`}},portal:{[hC]:{address:`0x4E259Ee5F4136408908160dD32295A5031Fa426F`}},l1StandardBridge:{[hC]:{address:`0xdc20aA63D3DE59574E065957190D8f24e0F7B8Ba`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},sourceId:hC}),_C=R({id:984122,name:`Forma`,network:`forma`,nativeCurrency:{symbol:`TIA`,name:`TIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.forma.art`],webSocket:[`wss://ws.forma.art`]}},blockExplorers:{default:{name:`Forma Explorer`,url:`https://explorer.forma.art`}},contracts:{multicall3:{address:`0xd53C6FFB123F7349A32980F87faeD8FfDc9ef079`,blockCreated:252705}}});var vC=11155111;const yC=R({id:132902,name:`Form Testnet`,nativeCurrency:{decimals:18,name:`Ethereum`,symbol:`ETH`},rpcUrls:{default:{http:[`https://sepolia-rpc.form.network/http`],webSocket:[`wss://sepolia-rpc.form.network/ws`]}},blockExplorers:{default:{name:`Form Testnet Explorer`,url:`https://sepolia-explorer.form.network`}},contracts:{...z.contracts,addressManager:{[vC]:{address:`0xd5C38fa934f7fd7477D4800F4f38a1c5BFdF1373`}},l1CrossDomainMessenger:{[vC]:{address:`0x37A68565c4BE9700b3E3Ec60cC4416cAC3052FAa`}},l2OutputOracle:{[vC]:{address:`0x9eA2239E65a59EC9C7F1ED4C116dD58Da71Fc1e2`}},portal:{[vC]:{address:`0x60377e3cE15dF4CCA24c4beF076b60314240b032`}},l1StandardBridge:{[vC]:{address:`0xD4531f633942b2725896F47cD2aFd260b44Ab1F7`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},testnet:!0,sourceId:vC}),bC=R({id:80931,name:`Forta Chain`,nativeCurrency:{symbol:`FORT`,name:`FORT`,decimals:18},rpcUrls:{default:{http:[`https://rpc-forta-chain-8gj1qndmfc.t.conduit.xyz`]}},blockExplorers:{default:{name:`Forta Explorer`,url:`https://explorer.forta.org`}}}),xC=R({id:31337,name:`Foundry`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`],webSocket:[`ws://127.0.0.1:8545`]}}});var SC=1;const CC=R({...z,id:252,name:`Fraxtal`,nativeCurrency:{name:`Frax`,symbol:`FRAX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.frax.com`]}},blockExplorers:{default:{name:`fraxscan`,url:`https://fraxscan.com`,apiUrl:`https://api.fraxscan.com/api`}},contracts:{...z.contracts,l2OutputOracle:{[SC]:{address:`0x66CC916Ed5C6C2FA97014f7D1cD141528Ae171e4`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[SC]:{address:`0x36cb65c1967A0Fb0EEE11569C51C2f2aA1Ca6f6D`,blockCreated:19135323}},l1StandardBridge:{[SC]:{address:`0x34C0bD5877A5Ee7099D0f5688D65F4bB9158BDE2`,blockCreated:19135323}}},sourceId:SC});var wC=17e3;const TC=R({...z,id:2522,name:`Fraxtal Testnet`,nativeCurrency:{name:`Frax`,symbol:`FRAX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.frax.com`]}},blockExplorers:{default:{name:`fraxscan testnet`,url:`https://holesky.fraxscan.com`,apiUrl:`https://api-holesky.fraxscan.com/api`}},contracts:{...z.contracts,l2OutputOracle:{[wC]:{address:`0x715EA64DA13F4d0831ece4Ad3E8c1aa013167F32`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[wC]:{address:`0xB9c64BfA498d5b9a8398Ed6f46eb76d90dE5505d`,blockCreated:318416}},l1StandardBridge:{[wC]:{address:`0x0BaafC217162f64930909aD9f2B27125121d6332`,blockCreated:318416}}},sourceId:wC});var EC=1;const DC=R({...z,id:33979,name:`Funki`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.funkichain.com`]}},blockExplorers:{default:{name:`Funki Mainnet Explorer`,url:`https://funkiscan.io`}},contracts:{...z.contracts},sourceId:EC});var OC=11155111;const kC=R({...z,id:3397901,network:`funkiSepolia`,name:`Funki Sepolia Sandbox`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://funki-testnet.alt.technology`]}},blockExplorers:{default:{name:`Funki Sepolia Sandbox Explorer`,url:`https://sepolia-sandbox.funkichain.com/`}},testnet:!0,contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1620204}},sourceId:OC}),AC=R({id:122,name:`Fuse`,nativeCurrency:{name:`Fuse`,symbol:`FUSE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.fuse.io`]}},blockExplorers:{default:{name:`Fuse Explorer`,url:`https://explorer.fuse.io`,apiUrl:`https://explorer.fuse.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:16146628}}}),jC=R({id:123,name:`Fuse Sparknet`,nativeCurrency:{name:`Spark`,symbol:`SPARK`,decimals:18},rpcUrls:{default:{http:[`https://rpc.fusespark.io`]}},blockExplorers:{default:{name:`Sparkent Explorer`,url:`https://explorer.fusespark.io`,apiUrl:`https://explorer.fusespark.io/api`}}}),MC=R({id:32659,name:`Fusion Mainnet`,nativeCurrency:{name:`Fusion`,symbol:`FSN`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.fusionnetwork.io`],webSocket:[`wss://mainnet.fusionnetwork.io`]}},blockExplorers:{default:{name:`FSNscan`,url:`https://fsnscan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:10441605}},testnet:!1}),NC=R({id:46688,name:`Fusion Testnet`,nativeCurrency:{name:`Fusion`,symbol:`FSN`,decimals:18},rpcUrls:{default:{http:[`https://testnet.fusionnetwork.io`],webSocket:[`wss://testnet.fusionnetwork.io`]}},blockExplorers:{default:{name:`FSNscan`,url:`https://testnet.fsnscan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:10428309}},testnet:!0});var PC=17e3;const FC=R({...z,name:`Garnet Testnet`,testnet:!0,id:17069,sourceId:PC,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.garnetchain.com`],webSocket:[`wss://rpc.garnetchain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.garnetchain.com`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[PC]:{address:`0x57ee40586fbE286AfC75E67cb69511A6D9aF5909`,blockCreated:1274684}},l2OutputOracle:{[PC]:{address:`0xCb8E7AC561b8EF04F2a15865e9fbc0766FEF569B`,blockCreated:1274684}},l1StandardBridge:{[PC]:{address:`0x09bcDd311FE398F80a78BE37E489f5D440DB95DE`,blockCreated:1274684}}}}),IC=R({id:63157,name:`Geist Mainnet`,nativeCurrency:{decimals:18,name:`Aavegotchi GHST Token`,symbol:`GHST`},rpcUrls:{default:{http:[`https://geist-mainnet.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://geist-mainnet.explorer.alchemy.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:660735}}}),LC=R({id:16507,name:`Genesys Mainnet`,nativeCurrency:{decimals:18,name:`GSYS`,symbol:`GSYS`},rpcUrls:{default:{http:[`https://rpc.genesys.network`]}},blockExplorers:{default:{name:`Genesys Explorer`,url:`https://gchainexplorer.genesys.network`}},testnet:!1});var RC=11155111;const zC=R({...z,id:91342,network:`giwa-sepolia`,name:`GIWA Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},blockTime:1e3,rpcUrls:{default:{http:[`https://sepolia-rpc.giwa.io`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia-explorer.giwa.io`,apiUrl:`https://sepolia-explorer.giwa.io/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},disputeGameFactory:{[RC]:{address:`0x37347caB2afaa49B776372279143D71ad1f354F6`}},portal:{[RC]:{address:`0x956962C34687A954e611A83619ABaA37Ce6bC78A`}},l1StandardBridge:{[RC]:{address:`0x77b2ffc0F57598cAe1DB76cb398059cF5d10A7E7`}}},testnet:!0,sourceId:RC}),BC=R({id:251,name:`Glide L1 Protocol XP`,nativeCurrency:{name:`GLXP`,symbol:`GLXP`,decimals:18},rpcUrls:{default:{http:[`https://rpc-api.glideprotocol.xyz/l1-rpc`],webSocket:[`wss://rpc-api.glideprotocol.xyz/l1-rpc`]}},blockExplorers:{default:{name:`Glide Protocol Explore`,url:`https://blockchain-explorer.glideprotocol.xyz`}},testnet:!1}),VC=R({id:253,name:`Glide L2 Protocol XP`,nativeCurrency:{name:`GLXP`,symbol:`GLXP`,decimals:18},rpcUrls:{default:{http:[`https://rpc-api.glideprotocol.xyz/l2-rpc`],webSocket:[`wss://rpc-api.glideprotocol.xyz/l2-rpc`]}},blockExplorers:{default:{name:`Glide Protocol Explore`,url:`https://blockchain-explorer.glideprotocol.xyz`}},testnet:!1}),HC=R({id:100,name:`Gnosis`,nativeCurrency:{decimals:18,name:`xDAI`,symbol:`XDAI`},blockTime:5e3,rpcUrls:{default:{http:[`https://rpc.gnosischain.com`],webSocket:[`wss://rpc.gnosischain.com/wss`]}},blockExplorers:{default:{name:`Gnosisscan`,url:`https://gnosisscan.io`,apiUrl:`https://api.gnosisscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:21022491}}}),UC=R({id:10200,name:`Gnosis Chiado`,nativeCurrency:{decimals:18,name:`Gnosis`,symbol:`xDAI`},blockTime:5e3,rpcUrls:{default:{http:[`https://rpc.chiadochain.net`],webSocket:[`wss://rpc.chiadochain.net/wss`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.chiadochain.net`,apiUrl:`https://blockscout.chiadochain.net/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4967313}},testnet:!0}),WC=R({id:2345,name:`GOAT`,nativeCurrency:{decimals:18,name:`Bitcoin`,symbol:`BTC`},rpcUrls:{default:{http:[`https://rpc.goat.network`]}},blockExplorers:{default:{name:`Goat Explorer`,url:`https://explorer.goat.network`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),GC=R({id:1663,name:`Horizen Gobi Testnet`,nativeCurrency:{decimals:18,name:`Test ZEN`,symbol:`tZEN`},rpcUrls:{default:{http:[`https://gobi-testnet.horizenlabs.io/ethv1`]}},blockExplorers:{default:{name:`Gobi Explorer`,url:`https://gobi-explorer.horizen.io`}},contracts:{},testnet:!0}),KC=R({id:60,name:`GoChain`,nativeCurrency:{decimals:18,name:`GO`,symbol:`GO`},rpcUrls:{default:{http:[`https://rpc.gochain.io`]}},blockExplorers:{default:{name:`GoChain Explorer`,url:`https://explorer.gochain.io`}},testnet:!1}),qC=R({id:71402,name:`Godwoken Mainnet`,nativeCurrency:{decimals:18,name:`pCKB`,symbol:`pCKB`},rpcUrls:{default:{http:[`https://v1.mainnet.godwoken.io/rpc`]}},blockExplorers:{default:{name:`GW Scan`,url:`https://v1.gwscan.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:15034}},testnet:!1}),JC=R({id:5,name:`Goerli`,nativeCurrency:{name:`Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://5.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli.etherscan.io`,apiUrl:`https://api-goerli.etherscan.io/api`}},contracts:{ensRegistry:{address:`0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e`},ensUniversalResolver:{address:`0xfc4AC75C46C914aF5892d6d3eFFcebD7917293F1`,blockCreated:10339206},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6507670}},testnet:!0}),YC=R({id:440017,name:`Graphite Network`,nativeCurrency:{name:`Graphite`,symbol:`@G`,decimals:18},rpcUrls:{default:{http:[`https://anon-entrypoint-1.atgraphite.com`],webSocket:[`wss://ws-anon-entrypoint-1.atgraphite.com`]}},blockExplorers:{default:{name:`Graphite Spectre`,url:`https://main.atgraphite.com`,apiUrl:`https://api.main.atgraphite.com/api`}},testnet:!1}),XC=R({id:54170,name:`Graphite Network Testnet`,nativeCurrency:{name:`Graphite`,symbol:`@G`,decimals:18},rpcUrls:{default:{http:[`https://anon-entrypoint-test-1.atgraphite.com`],webSocket:[`wss://ws-anon-entrypoint-test-1.atgraphite.com`]}},blockExplorers:{default:{name:`Graphite Testnet Spectre`,url:`https://test.atgraphite.com`,apiUrl:`https://api.test.atgraphite.com/api`}},testnet:!0}),ZC=R({id:1625,name:`Gravity Alpha Mainnet`,nativeCurrency:{name:`G`,symbol:`G`,decimals:18},rpcUrls:{default:{http:[`https://rpc.gravity.xyz`]}},blockExplorers:{default:{name:`Gravity Explorer`,url:`https://explorer.gravity.xyz`,apiUrl:`https://explorer.gravity.xyz/api`}},contracts:{multicall3:{address:`0xf8ac4BEB2F75d2cFFb588c63251347fdD629B92c`,blockCreated:16851}}}),QC=R({id:43419,name:`Gunz Mainnet`,nativeCurrency:{name:`GUN`,symbol:`GUN`,decimals:18},rpcUrls:{default:{http:[`https://rpc.gunzchain.io/ext/bc/2M47TxWHGnhNtq6pM5zPXdATBtuqubxn5EPFgFmEawCQr9WFML/rpc`]}},blockExplorers:{default:{name:`Gunz Explorer`,url:`https://gunzscan.io/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:70502}}}),$C=R({id:260,name:`Guru Network Mainnet`,nativeCurrency:{name:`GURU Token`,symbol:`GURU`,decimals:18},rpcUrls:{default:{http:[`https://rpc-main.gurunetwork.ai`,`https://rpc.gurunetwork.ai/archive/260`]}},blockExplorers:{default:{name:`Guruscan`,url:`https://scan.gurunetwork.ai`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:271691}},testnet:!1}),ew=R({id:261,name:`Guru Network Testnet`,nativeCurrency:{name:`tGURU Token`,symbol:`tGURU`,decimals:18},rpcUrls:{default:{http:[`https://rpc-test.gurunetwork.ai`,`https://rpc.gurunetwork.ai/archive/261`]}},blockExplorers:{default:{name:`Guruscan`,url:`https://sepolia.gurunetwork.ai`}},testnet:!0}),tw=R({id:5112,name:`Ham`,nativeCurrency:{decimals:18,name:`Ham`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.ham.fun`],webSocket:[`wss://rpc.ham.fun`]}},blockExplorers:{default:{name:`Ham Chain Explorer`,url:`https://explorer.ham.fun`,apiUrl:`https://explorer.ham.fun/api/v2`}}}),nw=R({id:216,name:`Happychain Testnet`,nativeCurrency:{symbol:`HAPPY`,name:`HAPPY`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.happy.tech/http`],webSocket:[`wss://rpc.testnet.happy.tech/ws`]}},blockExplorers:{default:{name:`Happy Chain Testnet Explorer`,url:`https://explorer.testnet.happy.tech`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1}},testnet:!0}),rw=R({id:11235,name:`HAQQ Mainnet`,nativeCurrency:{decimals:18,name:`Islamic Coin`,symbol:`ISLM`},rpcUrls:{default:{http:[`https://rpc.eth.haqq.network`]}},blockExplorers:{default:{name:`HAQQ Explorer`,url:`https://explorer.haqq.network`,apiUrl:`https://explorer.haqq.network/api`}}}),iw=R({id:54211,name:`HAQQ Testedge 2`,nativeCurrency:{decimals:18,name:`Islamic Coin`,symbol:`ISLMT`},rpcUrls:{default:{http:[`https://rpc.eth.testedge2.haqq.network`]}},blockExplorers:{default:{name:`HAQQ Explorer`,url:`https://explorer.testedge2.haqq.network`,apiUrl:`https://explorer.testedge2.haqq.network/api`}}}),aw=R({id:31337,name:`Hardhat`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`]}}}),ow=R({id:16666e5,name:`Harmony One`,nativeCurrency:{name:`Harmony`,symbol:`ONE`,decimals:18},rpcUrls:{default:{http:[`https://1666600000.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Harmony Explorer`,url:`https://explorer.harmony.one`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:24185753}}}),sw=R({id:177,name:`HashKey Chain`,nativeCurrency:{decimals:18,name:`HashKey EcoPoints`,symbol:`HSK`},rpcUrls:{default:{http:[`https://mainnet.hsk.xyz`]}},blockExplorers:{default:{name:`HashKey Chain Explorer`,url:`https://hashkey.blockscout.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}}}),cw=R({id:133,name:`HashKey Chain Testnet`,nativeCurrency:{decimals:18,name:`HashKey EcoPoints`,symbol:`HSK`},rpcUrls:{default:{http:[`https://hashkeychain-testnet.alt.technology`]}},blockExplorers:{default:{name:`HashKey Chain Explorer`,url:`https://hashkeychain-testnet-explorer.alt.technology`}},testnet:!0}),lw=R({id:1523903251,name:`Haust Network Testnet`,nativeCurrency:{decimals:18,name:`HAUST`,symbol:`HAUST`},rpcUrls:{default:{http:[`https://rpc-testnet.haust.app`]}},blockExplorers:{default:{name:`Haust Network Testnet Explorer`,url:`https://explorer-testnet.haust.app`}},testnet:!0}),uw=R({id:295,name:`Hedera Mainnet`,network:`hedera-mainnet`,nativeCurrency:{symbol:`HBAR`,name:`HBAR`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.hashio.io/api`]}},blockExplorers:{default:{name:`Hashscan`,url:`https://hashscan.io/mainnet`}},testnet:!1}),dw=R({id:297,name:`Hedera Previewnet`,network:`hedera-previewnet`,nativeCurrency:{symbol:`HBAR`,name:`HBAR`,decimals:18},rpcUrls:{default:{http:[`https://previewnet.hashio.io/api`]}},blockExplorers:{default:{name:`Hashscan`,url:`https://hashscan.io/previewnet`}},testnet:!0}),fw=R({id:296,name:`Hedera Testnet`,network:`hedera-testnet`,nativeCurrency:{symbol:`HBAR`,name:`HBAR`,decimals:18},rpcUrls:{default:{http:[`https://testnet.hashio.io/api`]}},blockExplorers:{default:{name:`Hashscan`,url:`https://hashscan.io/testnet`}},testnet:!0}),pw=R({id:8668,name:`Hela Mainnet`,nativeCurrency:{name:`HLUSD`,symbol:`HLUSD`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.helachain.com`]}},blockExplorers:{default:{name:`Hela explorer`,url:`https://mainnet-blockexplorer.helachain.com`}},testnet:!1}),mw=R({id:43111,name:`Hemi`,network:`Hemi`,blockTime:12e3,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hemi.network/rpc`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.hemi.xyz`}},testnet:!1}),hw=R({id:743111,name:`Hemi Sepolia`,network:`Hemi Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.rpc.hemi.network/rpc`]}},blockExplorers:{default:{name:`Hemi Sepolia explorer`,url:`https://testnet.explorer.hemi.xyz`}},testnet:!0}),gw=R({id:17e3,name:`Holesky`,nativeCurrency:{name:`Holesky Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://ethereum-holesky-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://holesky.etherscan.io`,apiUrl:`https://api-holesky.etherscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:77},ensUniversalResolver:{address:`0xeeeeeeee14d718c2b47d9923deab1335e144eeee`,blockCreated:4295055}},testnet:!0}),_w=R({id:560048,name:`Hoodi`,nativeCurrency:{name:`Hoodi Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hoodi.ethpandaops.io`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://hoodi.etherscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2589}},testnet:!0}),vw=R({id:269,name:`High Performance Blockchain`,nativeCurrency:{name:`HPB`,symbol:`HPB`,decimals:18},rpcUrls:{default:{http:[`https://hpbnode.com`]}},blockExplorers:{default:{name:`hpbScan`,url:`https://hscan.org`}},testnet:!1}),yw=R({id:12323,name:`Huddle01 dRTC Chain`,nativeCurrency:{name:`Ethereum`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://huddle01.calderachain.xyz/http`],webSocket:[`wss://huddle01.calderachain.xyz/ws`]}},blockExplorers:{default:{name:`Huddle01 Caldera Explorer`,url:`https://huddle01.calderaexplorer.xyz`,apiUrl:`https://huddle01.calderaexplorer.xyz/api`}},sourceId:42161}),bw=R({id:2524852,name:`Huddle01 dRTC Chain Testnet`,nativeCurrency:{name:`Ethereum`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://huddle-testnet.rpc.caldera.xyz/http`],webSocket:[`wss://huddle-testnet.rpc.caldera.xyz/ws`]}},blockExplorers:{default:{name:`Huddle01 Caldera Explorer`,url:`https://huddle-testnet.explorer.caldera.xyz`,apiUrl:`https://huddle-testnet.explorer.caldera.xyz/api`}},sourceId:421614}),xw=R({id:6985385,name:`Humanity`,nativeCurrency:{name:`H`,symbol:`H`,decimals:18},rpcUrls:{default:{http:[`https://humanity-mainnet.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Humanity Mainnet Explorer`,url:`https://humanity-mainnet.explorer.alchemy.com`,apiUrl:`https://humanity-mainnet.explorer.alchemy.com/api`}},testnet:!1}),Sw=R({id:7080969,name:`Humanity Testnet`,nativeCurrency:{name:`tHP`,symbol:`tHP`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.humanity.org`]}},blockExplorers:{default:{name:`Humanity Testnet Explorer`,url:`https://humanity-testnet.explorer.alchemy.com`,apiUrl:`https://humanity-testnet.explorer.alchemy.com/api`}},testnet:!0}),Cw=R({id:5234,name:`Humanode`,nativeCurrency:{name:`HMND`,symbol:`HMND`,decimals:18},rpcUrls:{default:{http:[`https://explorer-rpc-http.mainnet.stages.humanode.io`],webSocket:[`wss://explorer-rpc-ws.mainnet.stages.humanode.io`]}},blockExplorers:{default:{name:`Subscan`,url:`https://humanode.subscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4413097}}}),ww=R({id:14853,name:`Humanode Testnet 5`,nativeCurrency:{name:`HMND`,symbol:`HMND`,decimals:18},rpcUrls:{default:{http:[`https://explorer-rpc-http.testnet5.stages.humanode.io`],webSocket:[`wss://explorer-rpc-ws.testnet5.stages.humanode.io`]}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}}}),Tw=R({id:2911,name:`HYCHAIN`,nativeCurrency:{name:`HYTOPIA`,symbol:`TOPIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hychain.com/http`]}},blockExplorers:{default:{name:`HYCHAIN Explorer`,url:`https://explorer.hychain.com`}},testnet:!1}),Ew=R({id:29112,name:`HYCHAIN Testnet`,nativeCurrency:{name:`HYTOPIA`,symbol:`TOPIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hychain.com/http`]}},blockExplorers:{default:{name:`HYCHAIN Explorer`,url:`https://testnet-rpc.hychain.com/http`}},testnet:!0}),Dw=R({id:998,name:`Hyperliquid EVM Testnet`,nativeCurrency:{name:`HYPE`,symbol:`HYPE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hyperliquid-testnet.xyz/evm`]}},testnet:!0}),Ow=R({id:73115,name:`ICB Network`,nativeCurrency:{decimals:18,name:`ICB Native Token`,symbol:`ICBX`},rpcUrls:{default:{http:[`https://rpc1-mainnet.icbnetwork.info`]}},blockExplorers:{default:{name:`ICB Explorer`,url:`https://icbscan.io`,apiUrl:`https://icbscan.io/api`}},testnet:!1}),kw=R({id:74,name:`IDChain Mainnet`,nativeCurrency:{decimals:18,name:`EIDI`,symbol:`EIDI`},rpcUrls:{default:{http:[`https://idchain.one/rpc`],webSocket:[`wss://idchain.one/ws`]}},blockExplorers:{default:{name:`IDChain Explorer`,url:`https://explorer.idchain.one`}},testnet:!1}),Aw=R({id:13371,name:`Immutable zkEVM`,nativeCurrency:{decimals:18,name:`Immutable Coin`,symbol:`IMX`},rpcUrls:{default:{http:[`https://rpc.immutable.com`]}},blockExplorers:{default:{name:`Immutable Explorer`,url:`https://explorer.immutable.com`,apiUrl:`https://explorer.immutable.com/api`}},contracts:{multicall3:{address:`0x236bdA4589e44e6850f5aC6a74BfCa398a86c6c0`,blockCreated:4335972}}}),jw=R({id:13473,name:`Immutable zkEVM Testnet`,nativeCurrency:{decimals:18,name:`Immutable Coin`,symbol:`IMX`},rpcUrls:{default:{http:[`https://rpc.testnet.immutable.com`]}},blockExplorers:{default:{name:`Immutable Testnet Explorer`,url:`https://explorer.testnet.immutable.com/`}},contracts:{multicall3:{address:`0x2CC787Ed364600B0222361C4188308Fa8E68bA60`,blockCreated:5977391}},testnet:!0}),Mw=R({id:2525,name:`inEVM Mainnet`,nativeCurrency:{decimals:18,name:`Injective`,symbol:`INJ`},rpcUrls:{default:{http:[`https://mainnet.rpc.inevm.com/http`]}},blockExplorers:{default:{name:`inEVM Explorer`,url:`https://inevm.calderaexplorer.xyz`,apiUrl:`https://inevm.calderaexplorer.xyz/api/v2`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:118606}}}),Nw=R({id:7233,name:`InitVerse Mainnet`,nativeCurrency:{decimals:18,name:`InitVerse`,symbol:`INI`},rpcUrls:{default:{http:[`https://rpc-mainnet.inichain.com`]}},blockExplorers:{default:{name:`InitVerseScan`,url:`https://www.iniscan.com`,apiUrl:`https://explorer-api.inichain.com/api`}},contracts:{multicall3:{address:`0x83466BE48A067115FFF91f7b892Ed1726d032e47`,blockCreated:2318}}}),Pw=R({id:7234,name:`InitVerse Genesis Testnet`,nativeCurrency:{decimals:18,name:`InitVerse`,symbol:`INI`},rpcUrls:{default:{http:[`https://rpc-testnet.inichain.com`]}},blockExplorers:{default:{name:`InitVerseGenesisScan`,url:`https://genesis-testnet.iniscan.com`,apiUrl:`https://explorer-testnet-api.inichain.com/api`}},contracts:{multicall3:{address:`0x0cF32CBDd6c437331EA4f85ed2d881A5379B5a6F`,blockCreated:16361}},testnet:!0}),Fw=R({id:1776,name:`Injective`,nativeCurrency:{decimals:18,name:`Injective`,symbol:`INJ`},rpcUrls:{default:{http:[`https://sentry.evm-rpc.injective.network`],webSocket:[`wss://sentry.evm-ws.injective.network`]}},blockExplorers:{default:{name:`Injective Explorer`,url:`https://blockscout.injective.network`,apiUrl:`https://blockscout.injective.network/api`}},testnet:!1}),Iw=R({id:1439,name:`Injective Testnet`,nativeCurrency:{decimals:18,name:`Injective`,symbol:`INJ`},rpcUrls:{default:{http:[`https://k8s.testnet.json-rpc.injective.network`],webSocket:[`wss://k8s.testnet.ws.injective.network`]}},blockExplorers:{default:{name:`Injective Explorer`,url:`https://testnet.blockscout.injective.network`,apiUrl:`https://testnet.blockscout.injective.network/api`}},testnet:!0});var Lw=1;const Rw=R({...z,id:57073,name:`Ink`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-gel.inkonchain.com`,`https://rpc-qnd.inkonchain.com`],webSocket:[`wss://rpc-gel.inkonchain.com`,`wss://rpc-qnd.inkonchain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.inkonchain.com`,apiUrl:`https://explorer.inkonchain.com/api/v2`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},...z.contracts,disputeGameFactory:{[Lw]:{address:`0x10d7b35078d3baabb96dd45a9143b94be65b12cd`}},portal:{[Lw]:{address:`0x5d66c1782664115999c47c9fa5cd031f495d3e4f`}},l1StandardBridge:{[Lw]:{address:`0x88ff1e5b602916615391f55854588efcbb7663f0`}}},testnet:!1,sourceId:Lw});var zw=11155111;const Bw=R({...z,id:763373,name:`Ink Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-gel-sepolia.inkonchain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer-sepolia.inkonchain.com/`,apiUrl:`https://explorer-sepolia.inkonchain.com/api/v2`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},disputeGameFactory:{[zw]:{address:`0x860e626c700af381133d9f4af31412a2d1db3d5d`}},portal:{[zw]:{address:`0x5c1d29c6c9c8b0800692acc95d700bcb4966a1d7`}},l1StandardBridge:{[zw]:{address:`0x33f60714bbd74d62b66d79213c348614de51901c`}}},testnet:!0,sourceId:zw}),Vw=R({id:8822,name:`IOTA EVM`,network:`iotaevm`,nativeCurrency:{decimals:18,name:`IOTA`,symbol:`IOTA`},rpcUrls:{default:{http:[`https://json-rpc.evm.iotaledger.net`],webSocket:[`wss://ws.json-rpc.evm.iotaledger.net`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.evm.iota.org`,apiUrl:`https://explorer.evm.iota.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:25022}}}),Hw=R({id:1075,name:`IOTA EVM Testnet`,network:`iotaevm-testnet`,nativeCurrency:{decimals:18,name:`IOTA`,symbol:`IOTA`},rpcUrls:{default:{http:[`https://json-rpc.evm.testnet.iotaledger.net`],webSocket:[`wss://ws.json-rpc.evm.testnet.iotaledger.net`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.evm.testnet.iotaledger.net`,apiUrl:`https://explorer.evm.testnet.iotaledger.net/api`}},testnet:!0}),Uw=R({id:4689,name:`IoTeX`,nativeCurrency:{decimals:18,name:`IoTeX`,symbol:`IOTX`},rpcUrls:{default:{http:[`https://babel-api.mainnet.iotex.io`],webSocket:[`wss://babel-api.mainnet.iotex.io`]}},blockExplorers:{default:{name:`IoTeXScan`,url:`https://iotexscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:22163670}}}),Ww=R({id:4690,name:`IoTeX Testnet`,nativeCurrency:{decimals:18,name:`IoTeX`,symbol:`IOTX`},rpcUrls:{default:{http:[`https://babel-api.testnet.iotex.io`],webSocket:[`wss://babel-api.testnet.iotex.io`]}},blockExplorers:{default:{name:`IoTeXScan`,url:`https://testnet.iotexscan.io`}},contracts:{multicall3:{address:`0xb5cecD6894c6f473Ec726A176f1512399A2e355d`,blockCreated:24347592}},testnet:!0}),Gw=R({id:8017,name:`iSunCoin Mainnet`,nativeCurrency:{decimals:18,name:`ISC`,symbol:`ISC`},rpcUrls:{default:{http:[`https://mainnet.isuncoin.com`]}},blockExplorers:{default:{name:`iSunCoin Explorer`,url:`https://baifa.io/app/chains/8017`}}}),Kw=R({id:8899,name:`JB Chain`,network:`jbc`,nativeCurrency:{name:`JBC`,symbol:`JBC`,decimals:18},rpcUrls:{default:{http:[`https://rpc-l1.jibchain.net`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp-l1.jibchain.net`,apiUrl:`https://exp-l1.jibchain.net/api`}},contracts:{multicall3:{address:`0xc0C8C486D1466C57Efe13C2bf000d4c56F47CBdC`,blockCreated:2299048}},testnet:!1}),qw=R({id:88991,name:`Jibchain Testnet`,nativeCurrency:{name:`tJBC`,symbol:`tJBC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.jibchain.net`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp.testnet.jibchain.net`,apiUrl:`https://exp.testnet.jibchain.net/api`}},contracts:{multicall3:{address:`0xa1a858ad9041B4741e620355a3F96B3c78e70ecE`,blockCreated:32848}},testnet:!0}),Jw=R({id:81,name:`Japan Open Chain Mainnet`,nativeCurrency:{decimals:18,name:`Japan Open Chain Token`,symbol:`JOC`},rpcUrls:{default:{http:[`https://rpc-1.japanopenchain.org:8545`,`https://rpc-2.japanopenchain.org:8545`,`https://rpc-3.japanopenchain.org`]}},blockExplorers:{default:{name:`Block Explorer`,url:`https://explorer.japanopenchain.org`}},testnet:!1}),Yw=R({id:10081,name:`Japan Open Chain Testnet`,nativeCurrency:{decimals:18,name:`Japan Open Chain Testnet Token`,symbol:`JOCT`},rpcUrls:{default:{http:[`https://rpc-1.testnet.japanopenchain.org:8545`,`https://rpc-2.testnet.japanopenchain.org:8545`,`https://rpc-3.testnet.japanopenchain.org`]}},blockExplorers:{default:{name:`Testnet Block Explorer`,url:`https://explorer.testnet.japanopenchain.org`}},testnet:!0}),Xw=R({id:5734951,name:`Jovay Mainnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.zan.top/public/jovay-mainnet`]}},blockExplorers:{default:{name:`Jovay Explorer`,url:`https://explorer.jovay.io`}},testnet:!1}),Zw=R({id:2019775,name:`Jovay Sepolia Testnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.zan.top/public/jovay-testnet`]}},blockExplorers:{default:{name:`Jovay Testnet Explorer`,url:`https://sepolia-explorer.jovay.io/l2`}},testnet:!0}),Qw=R({id:45003,name:`Juneo JUNE-Chain`,nativeCurrency:{decimals:18,name:`JUNE-Chain`,symbol:`JUNE`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/JUNE/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/2`,apiUrl:`https://juneoscan.io/chain/2/api`}}}),$w=R({id:45013,name:`Juneo BCH1-Chain`,nativeCurrency:{decimals:18,name:`Juneo BCH1-Chain`,symbol:`BCH1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/BCH1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/12`,apiUrl:`https://juneoscan.io/chain/12/api`}}}),eT=R({id:45004,name:`Juneo DAI1-Chain`,nativeCurrency:{decimals:18,name:`Juneo DAI1-Chain`,symbol:`DAI1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/DAI1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/5`,apiUrl:`https://juneoscan.io/chain/5/api`}}}),tT=R({id:45010,name:`Juneo DOGE1-Chain`,nativeCurrency:{decimals:18,name:`Juneo DOGE1-Chain`,symbol:`DOGE1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/DOGE1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/10`,apiUrl:`https://juneoscan.io/chain/10/api`}}}),nT=R({id:45011,name:`Juneo EUR1-Chain`,nativeCurrency:{decimals:18,name:`Juneo EUR1-Chain`,symbol:`EUR1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/EUR1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/6`,apiUrl:`https://juneoscan.io/chain/6/api`}}}),rT=R({id:45008,name:`Juneo GLD1-Chain`,nativeCurrency:{decimals:18,name:`Juneo GLD1-Chain`,symbol:`GLD1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/GLD1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/8`,apiUrl:`https://juneoscan.io/chain/8/api`}}}),iT=R({id:45014,name:`Juneo LINK1-Chain`,nativeCurrency:{decimals:18,name:`Juneo LINK1-Chain`,symbol:`LINK1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/LINK1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/13`,apiUrl:`https://juneoscan.io/chain/13/api`}}}),aT=R({id:45009,name:`Juneo LTC1-Chain`,nativeCurrency:{decimals:18,name:`Juneo LTC1-Chain`,symbol:`LTC1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/LTC1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/11`,apiUrl:`https://juneoscan.io/chain/11/api`}}}),oT=R({id:45007,name:`Juneo mBTC1-Chain`,nativeCurrency:{decimals:18,name:`Juneo mBTC1-Chain`,symbol:`mBTC1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/mBTC1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/9`,apiUrl:`https://juneoscan.io/chain/9/api`}}}),sT=R({id:45012,name:`Juneo SGD1-Chain`,nativeCurrency:{decimals:18,name:`Juneo SGD1-Chain`,symbol:`SGD1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/SGD1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/7`,apiUrl:`https://juneoscan.io/chain/7/api`}}}),cT=R({id:101003,name:`Socotra JUNE-Chain`,nativeCurrency:{decimals:18,name:`Socotra JUNE-Chain`,symbol:`JUNE`},rpcUrls:{default:{http:[`https://rpc.socotra-testnet.network/ext/bc/JUNE/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://socotra.juneoscan.io/chain/2`,apiUrl:`https://socotra.juneoscan.io/chain/2/api`}},testnet:!0}),lT=R({id:45006,name:`Juneo USD1-Chain`,nativeCurrency:{decimals:18,name:`Juneo USD1-Chain`,symbol:`USD1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/USD1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/4`,apiUrl:`https://juneoscan.io/chain/4/api`}}}),uT=R({id:45005,name:`Juneo USDT1-Chain`,nativeCurrency:{decimals:18,name:`Juneo USDT1-Chain`,symbol:`USDT1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/USDT1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/3`,apiUrl:`https://juneoscan.io/chain/3/api`}}}),dT=R({id:8217,name:`Kaia`,nativeCurrency:{decimals:18,name:`Kaia`,symbol:`KAIA`},rpcUrls:{default:{http:[`https://public-en.node.kaia.io`]}},blockExplorers:{default:{name:`KaiaScan`,url:`https://kaiascan.io`,apiUrl:`https://api-cypress.klaytnscope.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:96002415}}}),fT=R({id:1001,name:`Kairos Testnet`,network:`kairos`,nativeCurrency:{decimals:18,name:`Kairos KAIA`,symbol:`KAIA`},rpcUrls:{default:{http:[`https://public-en-kairos.node.kaia.io`]}},blockExplorers:{default:{name:`KaiaScan`,url:`https://kairos.kaiascan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:123390593}},testnet:!0}),pT=R({id:1802203764,name:`Kakarot Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rpc.kakarot.org`]}},blockExplorers:{default:{name:`Kakarot Scan`,url:`https://sepolia.kakarotscan.org`}},testnet:!0}),mT=R({id:920637907288165,name:`Kakarot Starknet Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rpc.kakarot.org`]}},blockExplorers:{default:{name:`Kakarot Scan`,url:`https://sepolia.kakarotscan.org`}},testnet:!0}),hT=R({id:24,name:`KardiaChain Mainnet`,nativeCurrency:{name:`KAI`,symbol:`KAI`,decimals:18},rpcUrls:{default:{http:[`https://rpc.kardiachain.io`]}},blockExplorers:{default:{name:`KardiaChain Explorer`,url:`https://explorer.kardiachain.io`}},testnet:!1}),gT=R({id:686,name:`Karura`,network:`karura`,nativeCurrency:{name:`Karura`,symbol:`KAR`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-karura.aca-api.network`],webSocket:[`wss://eth-rpc-karura.aca-api.network`]}},blockExplorers:{default:{name:`Karura Blockscout`,url:`https://blockscout.karura.network`,apiUrl:`https://blockscout.karura.network/api`}},testnet:!1}),_T=R({id:747474,name:`Katana`,network:`katana`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.katana.network`]}},blockExplorers:{default:{name:`katana explorer`,url:`https://explorer.katanarpc.com`}},testnet:!1}),vT=R({id:2222,name:`Kava EVM`,network:`kava-mainnet`,nativeCurrency:{name:`Kava`,symbol:`KAVA`,decimals:18},rpcUrls:{default:{http:[`https://evm.kava.io`]}},blockExplorers:{default:{name:`Kava EVM Explorer`,url:`https://kavascan.com`,apiUrl:`https://kavascan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3661165}},testnet:!1}),yT=R({id:2221,name:`Kava EVM Testnet`,network:`kava-testnet`,nativeCurrency:{name:`Kava`,symbol:`KAVA`,decimals:18},rpcUrls:{default:{http:[`https://evm.testnet.kava.io`]}},blockExplorers:{default:{name:`Kava EVM Testnet Explorer`,url:`https://testnet.kavascan.com/`,apiUrl:`https://testnet.kavascan.com/api`}},contracts:{multicall3:{address:`0xDf1D724A7166261eEB015418fe8c7679BBEa7fd6`,blockCreated:7242179}},testnet:!0}),bT=R({id:321,name:`KCC Mainnet`,network:`KCC Mainnet`,nativeCurrency:{decimals:18,name:`KCS`,symbol:`KCS`},rpcUrls:{default:{http:[`https://kcc-rpc.com`]}},blockExplorers:{default:{name:`KCC Explorer`,url:`https://explorer.kcc.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:11760430}},testnet:!1}),xT=R({id:1336,name:`Kii Testnet Oro`,network:`kii-testnet-oro`,nativeCurrency:{name:`Kii`,symbol:`KII`,decimals:18},rpcUrls:{default:{http:[`https://json-rpc.uno.sentry.testnet.v3.kiivalidator.com`]}},blockExplorers:{default:{name:`KiiExplorer`,url:`https://explorer.kiichain.io/testnet`}},testnet:!0}),ST=R({id:7887,name:`Kinto Mainnet`,network:`Kinto Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.kinto.xyz/http`]}},blockExplorers:{default:{name:`Kinto Explorer`,url:`https://explorer.kinto.xyz`}},testnet:!1}),CT=R({id:8217,name:`Klaytn`,nativeCurrency:{decimals:18,name:`Klaytn`,symbol:`KLAY`},rpcUrls:{default:{http:[`https://public-en-cypress.klaytn.net`]}},blockExplorers:{default:{name:`KlaytnScope`,url:`https://scope.klaytn.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:96002415}}}),wT=R({id:1001,name:`Klaytn Baobab Testnet`,network:`klaytn-baobab`,nativeCurrency:{decimals:18,name:`Baobab Klaytn`,symbol:`KLAY`},rpcUrls:{default:{http:[`https://public-en-baobab.klaytn.net`]}},blockExplorers:{default:{name:`KlaytnScope`,url:`https://baobab.klaytnscope.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:123390593}},testnet:!0}),TT=R({id:701,name:`Koi Network`,nativeCurrency:{decimals:18,name:`Koi Network Native Token`,symbol:`KRING`},rpcUrls:{default:{http:[`https://koi-rpc.darwinia.network`],webSocket:[`wss://koi-rpc.darwinia.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://koi-scan.darwinia.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:180001}},testnet:!0}),ET=R({id:255,name:`Kroma`,nativeCurrency:{name:`ETH`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://api.kroma.network`]}},blockExplorers:{default:{name:`Kroma Explorer`,url:`https://blockscout.kroma.network`,apiUrl:`https://blockscout.kroma.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:16054868}},testnet:!1}),DT=R({id:2358,name:`Kroma Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://api.sepolia.kroma.network`]}},blockExplorers:{default:{name:`Kroma Sepolia Explorer`,url:`https://blockscout.sepolia.kroma.network`,apiUrl:`https://blockscout.sepolia.kroma.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:8900914}},testnet:!0}),OT=R({id:12324,name:`L3X Protocol`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.l3x.com`],webSocket:[`wss://rpc-mainnet.l3x.com`]}},blockExplorers:{default:{name:`L3X Mainnet Explorer`,url:`https://explorer.l3x.com`,apiUrl:`https://explorer.l3x.com/api/v2`}},testnet:!1}),kT=R({id:12325,name:`L3X Protocol Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.l3x.com`],webSocket:[`wss://rpc-testnet.l3x.com`]}},blockExplorers:{default:{name:`L3X Testnet Explorer`,url:`https://explorer-testnet.l3x.com`,apiUrl:`https://explorer-testnet.l3x.com/api/v2`}},testnet:!0}),AT=R({id:360890,name:`LAVITA Mainnet`,nativeCurrency:{name:`vTFUEL`,symbol:`vTFUEL`,decimals:18},rpcUrls:{default:{http:[`https://tsub360890-eth-rpc.thetatoken.org/rpc`]}},blockExplorers:{default:{name:`LAVITA Explorer`,url:`https://tsub360890-explorer.thetatoken.org`}},testnet:!1}),jT=R({id:232,name:`Lens`,nativeCurrency:{name:`GHO`,symbol:`GHO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.lens.xyz`]}},blockExplorers:{default:{name:`Lens Block Explorer`,url:`https://explorer.lens.xyz`,apiUrl:`https://explorer.lens.xyz/api`}}}),MT=R({id:37111,name:`Lens Testnet`,nativeCurrency:{name:`GRASS`,symbol:`GRASS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.lens.dev`],webSocket:[`wss://rpc.testnet.lens.dev/ws`]}},blockExplorers:{default:{name:`Lens Block Explorer`,url:`https://block-explorer.testnet.lens.dev`,apiUrl:`https://block-explorer-api.staging.lens.dev/api`}},testnet:!0}),NT=R({id:21363,name:`Lestnet`,nativeCurrency:{name:`Lestnet Ether`,symbol:`LETH`,decimals:18},rpcUrls:{default:{http:[`https://service.lestnet.org`]}},blockExplorers:{default:{name:`Lestnet Explorer`,url:`https://explore.lestnet.org`}},testnet:!0}),PT=R({id:1891,name:`LightLink Pegasus Testnet`,network:`lightlink-pegasus`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://replicator.pegasus.lightlink.io/rpc/v1`]}},blockExplorers:{default:{name:`LightLink Pegasus Explorer`,url:`https://pegasus.lightlink.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:127188532}},testnet:!0}),FT=R({id:1890,name:`LightLink Phoenix Mainnet`,network:`lightlink-phoenix`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://replicator.phoenix.lightlink.io/rpc/v1`]}},blockExplorers:{default:{name:`LightLink Phoenix Explorer`,url:`https://phoenix.lightlink.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:125499184}},testnet:!1});na(),A(),Pp(),Iu(),Uu(),Qu();async function IT(e,t){let{account:n=e.account}=t;if(!n)throw new Dm;let r=ta(n);try{let{accessList:n,blockNumber:i,blockTag:a,data:o,gas:s,gasPrice:c,maxFeePerGas:l,maxPriorityFeePerGas:u,nonce:d,to:f,value:p,...m}=t,h=(typeof i==`bigint`?k(i):void 0)||a;Zu(t);let g=e.chain?.formatters?.transactionRequest?.format,_=(g||zu)({...Fu(m,{format:g}),from:r?.address,accessList:n,data:o,gas:s,gasPrice:c,maxFeePerGas:l,maxPriorityFeePerGas:u,nonce:d,to:f,value:p},`estimateGas`),{baseFeePerGas:v,gasLimit:y,priorityFeePerGas:b}=await e.request({method:`linea_estimateGas`,params:h?[_,h]:[_]});return{baseFeePerGas:BigInt(v),gasLimit:BigInt(y),priorityFeePerGas:BigInt(b)}}catch(n){throw Np(n,{...t,account:r,chain:e.chain})}}const LT={fees:{estimateFeesPerGas:RT,async maxPriorityFeePerGas({block:e,client:t,request:n}){let r=await RT({block:e,client:t,multiply:e=>e,request:n,type:`eip1559`});return r?.maxPriorityFeePerGas?r.maxPriorityFeePerGas:null}}};async function RT({client:e,multiply:t,request:n,type:r}){try{let i=await IT(e,{...n,account:n?.account}),{priorityFeePerGas:a}=i,o=t(BigInt(i.baseFeePerGas))+a;return r===`legacy`?{gasPrice:o}:{maxFeePerGas:o,maxPriorityFeePerGas:a}}catch{return null}}const zT=R({...LT,id:59144,name:`Linea Mainnet`,blockTime:2e3,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.linea.build`],webSocket:[`wss://rpc.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://lineascan.build`,apiUrl:`https://api.lineascan.build/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:42},ensRegistry:{address:`0x50130b669B28C339991d8676FA73CF122a121267`,blockCreated:6682888},ensUniversalResolver:{address:`0x4D41762915F83c76EcaF6776d9b08076aA32b492`,blockCreated:22222151}},ensTlds:[`.linea.eth`],testnet:!1}),BT=R({id:59140,name:`Linea Goerli Testnet`,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.goerli.linea.build`],webSocket:[`wss://rpc.goerli.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli.lineascan.build`,apiUrl:`https://api-goerli.lineascan.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:498623}},testnet:!0}),VT=R({...LT,id:59141,name:`Linea Sepolia Testnet`,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.sepolia.linea.build`],webSocket:[`wss://rpc.sepolia.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia.lineascan.build`,apiUrl:`https://api-sepolia.lineascan.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:227427},ensRegistry:{address:`0x5B2636F0f2137B4aE722C01dd5122D7d3e9541f7`,blockCreated:2395094},ensUniversalResolver:{address:`0x4D41762915F83c76EcaF6776d9b08076aA32b492`,blockCreated:17168484}},ensTlds:[`.linea.eth`],testnet:!0}),HT=R({id:59140,name:`Linea Goerli Testnet`,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.goerli.linea.build`],webSocket:[`wss://rpc.goerli.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli.lineascan.build`,apiUrl:`https://goerli.lineascan.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:498623}},testnet:!0});var UT=1;const WT=R({...z,id:1135,name:`Lisk`,network:`lisk`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.api.lisk.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.lisk.com`,apiUrl:`https://blockscout.lisk.com/api`}},contracts:{...z.contracts,multicall3:{address:`0xA9d71E1dd7ca26F26e656E66d6AA81ed7f745bf0`},l2OutputOracle:{[UT]:{address:`0x113cB99283AF242Da0A0C54347667edF531Aa7d6`}},portal:{[UT]:{address:`0x26dB93F8b8b4f7016240af62F7730979d353f9A7`}},l1StandardBridge:{[UT]:{address:`0x2658723Bf70c7667De6B25F99fcce13A16D25d08`}}},sourceId:UT});var GT=11155111;const KT=R({...z,id:4202,network:`lisk-sepolia`,name:`Lisk Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.sepolia-api.lisk.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia-blockscout.lisk.com`,apiUrl:`https://sepolia-blockscout.lisk.com/api`}},contracts:{...z.contracts,l2OutputOracle:{[GT]:{address:`0xA0E35F56C318DE1bD5D9ca6A94Fe7e37C5663348`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[GT]:{address:`0xe3d90F21490686Ec7eF37BE788E02dfC12787264`}},l1StandardBridge:{[GT]:{address:`0x1Fb30e446eA791cd1f011675E5F3f5311b70faF5`}}},testnet:!0,sourceId:GT}),qT=R({id:9496,name:`Load Alphanet`,nativeCurrency:{name:`Testnet LOAD`,symbol:`tLOAD`,decimals:18},rpcUrls:{default:{http:[`https://alphanet.load.network`]}},blockExplorers:{default:{name:`Load Alphanet Explorer`,url:`https://explorer.load.network`}},testnet:!0}),JT=R({id:1337,name:`Localhost`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`]}}}),YT=R({id:15551,name:`LoopNetwork Mainnet`,nativeCurrency:{name:`LOOP`,symbol:`LOOP`,decimals:18},rpcUrls:{default:{http:[`https://api.mainnetloop.com`]}},blockExplorers:{default:{name:`LoopNetwork Blockchain Explorer`,url:`https://explorer.mainnetloop.com/`}},testnet:!1}),XT=R({id:42,network:`lukso`,name:`LUKSO`,nativeCurrency:{name:`LUKSO`,symbol:`LYX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.lukso.network`],webSocket:[`wss://ws-rpc.mainnet.lukso.network`]}},blockExplorers:{default:{name:`LUKSO Mainnet Explorer`,url:`https://explorer.execution.mainnet.lukso.network`,apiUrl:`https://api.explorer.execution.mainnet.lukso.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:468183}}}),ZT=R({id:4201,name:`LUKSO Testnet`,nativeCurrency:{decimals:18,name:`LUKSO Testnet`,symbol:`LYXt`},rpcUrls:{default:{http:[`https://rpc.testnet.lukso.network`],webSocket:[`wss://ws-rpc.testnet.lukso.network`]}},blockExplorers:{default:{name:`LUKSO Testnet Explorer`,url:`https://explorer.execution.testnet.lukso.network`,apiUrl:`https://api.explorer.execution.testnet.lukso.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:605348}},testnet:!0}),QT=R({id:994873017,name:`Lumia Mainnet`,network:`LumiaMainnet`,nativeCurrency:{name:`Lumia`,symbol:`LUMIA`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.lumia.org`]}},blockExplorers:{default:{name:`Lumia Explorer`,url:`https://explorer.lumia.org/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3975939}},testnet:!1}),$T=R({id:1952959480,name:`Lumia Testnet`,network:`LumiaTestnet`,nativeCurrency:{name:`Lumia`,symbol:`LUMIA`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.lumia.org`]}},blockExplorers:{default:{name:`Lumia Testnet Explorer`,url:`https://testnet-explorer.lumia.org/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2235063}},testnet:!0}),eE=R({id:96370,name:`Lumoz`,nativeCurrency:{decimals:18,name:`Lumoz Token`,symbol:`MOZ`},rpcUrls:{default:{http:[`https://rpc.lumoz.org`]}},blockExplorers:{default:{name:`Lumoz Scan`,url:`https://scan.lumoz.info`}},testnet:!1}),tE=R({id:105363,name:`Lumoz Testnet`,nativeCurrency:{decimals:18,name:`Lumoz Testnet Token`,symbol:`MOZ`},rpcUrls:{default:{http:[`https://testnet-rpc.lumoz.org`]}},testnet:!0}),nE=R({id:721,name:`Lycan`,nativeCurrency:{decimals:18,name:`Lycan`,symbol:`LYC`},rpcUrls:{default:{http:[`https://rpc.lycanchain.com`,`https://us-east.lycanchain.com`,`https://us-west.lycanchain.com`,`https://eu-north.lycanchain.com`,`https://eu-west.lycanchain.com`,`https://asia-southeast.lycanchain.com`],webSocket:[`wss://rpc.lycanchain.com`,`wss://us-east.lycanchain.com`,`wss://us-west.lycanchain.com`,`wss://eu-north.lycanchain.com`,`wss://eu-west.lycanchain.com`,`wss://asia-southeast.lycanchain.com`]}},blockExplorers:{default:{name:`Lycan Explorer`,url:`https://explorer.lycanchain.com`}}}),rE=R({id:957,name:`Lyra Chain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.lyra.finance`]}},blockExplorers:{default:{name:`Lyra Explorer`,url:`https://explorer.lyra.finance`,apiUrl:`https://explorer.lyra.finance/api/v2`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1935198}}}),iE=R({id:1,name:`Ethereum`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:12e3,rpcUrls:{default:{http:[`https://eth.merkle.io`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://etherscan.io`,apiUrl:`https://api.etherscan.io/api`}},contracts:{ensUniversalResolver:{address:`0xeeeeeeee14d718c2b47d9923deab1335e144eeee`,blockCreated:23085558},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14353601}}}),aE=R({id:595,name:`Mandala TC9`,network:`mandala`,nativeCurrency:{name:`Mandala`,symbol:`mACA`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-tc9.aca-staging.network`],webSocket:[`wss://eth-rpc-tc9.aca-staging.network`]}},blockExplorers:{default:{name:`Mandala Blockscout`,url:`https://blockscout.mandala.aca-staging.network`,apiUrl:`https://blockscout.mandala.aca-staging.network/api`}},testnet:!0}),oE=R({id:169,name:`Manta Pacific Mainnet`,network:`manta`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://pacific-rpc.manta.network/http`]}},blockExplorers:{default:{name:`Manta Explorer`,url:`https://pacific-explorer.manta.network`,apiUrl:`https://pacific-explorer.manta.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:332890}}}),sE=R({id:3441006,name:`Manta Pacific Sepolia Testnet`,network:`manta-sepolia`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://pacific-rpc.sepolia-testnet.manta.network/http`]}},blockExplorers:{default:{name:`Manta Sepolia Testnet Explorer`,url:`https://pacific-explorer.sepolia-testnet.manta.network`,apiUrl:`https://pacific-explorer.sepolia-testnet.manta.network/api`}},contracts:{multicall3:{address:`0xca54918f7B525C8df894668846506767412b53E3`,blockCreated:479584}},testnet:!0}),cE=R({id:3441005,name:`Manta Pacific Testnet`,network:`manta-testnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://manta-testnet.calderachain.xyz/http`]}},blockExplorers:{default:{name:`Manta Testnet Explorer`,url:`https://pacific-explorer.testnet.manta.network`,apiUrl:`https://pacific-explorer.testnet.manta.network/api`}},contracts:{multicall3:{address:`0x211B1643b95Fe76f11eD8880EE810ABD9A4cf56C`,blockCreated:419915}},testnet:!0}),lE=R({id:5e3,name:`Mantle`,nativeCurrency:{decimals:18,name:`MNT`,symbol:`MNT`},rpcUrls:{default:{http:[`https://rpc.mantle.xyz`]}},blockExplorers:{default:{name:`Mantle Explorer`,url:`https://mantlescan.xyz/`,apiUrl:`https://api.mantlescan.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:304717}}}),uE=R({id:5003,name:`Mantle Sepolia Testnet`,nativeCurrency:{decimals:18,name:`MNT`,symbol:`MNT`},rpcUrls:{default:{http:[`https://rpc.sepolia.mantle.xyz`]}},blockExplorers:{default:{name:`Mantle Testnet Explorer`,url:`https://explorer.sepolia.mantle.xyz/`,apiUrl:`https://explorer.sepolia.mantle.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4584012}},testnet:!0}),dE=R({id:5001,name:`Mantle Testnet`,nativeCurrency:{decimals:18,name:`MNT`,symbol:`MNT`},rpcUrls:{default:{http:[`https://rpc.testnet.mantle.xyz`]}},blockExplorers:{default:{name:`Mantle Testnet Explorer`,url:`https://explorer.testnet.mantle.xyz`,apiUrl:`https://explorer.testnet.mantle.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:561333}},testnet:!0}),fE=R({id:5887,name:`MANTRA DuKong EVM Testnet`,nativeCurrency:{decimals:18,name:`OM`,symbol:`OM`},rpcUrls:{default:{http:[`https://evm.dukong.mantrachain.io`]}},blockExplorers:{default:{name:`MANTRAScan`,url:`https://mantrascan.io/dukong`}},testnet:!0}),pE=R({id:5888,name:`MANTRA EVM`,nativeCurrency:{decimals:18,name:`OM`,symbol:`OM`},rpcUrls:{default:{http:[`https://evm.mantrachain.io`],webSocket:[`https://evm.mantrachain.io/ws`]}},blockExplorers:{default:{name:`MANTRA Scan`,url:`https://mantrascan.io/mainnet`}}}),mE=R({id:22776,name:`MAP Protocol`,nativeCurrency:{decimals:18,name:`MAPO`,symbol:`MAPO`},rpcUrls:{default:{http:[`https://rpc.maplabs.io`]}},blockExplorers:{default:{name:`MAPO Scan`,url:`https://maposcan.io`}},testnet:!1}),hE=R({id:698,name:`Matchain`,nativeCurrency:{name:`BNB`,symbol:`BNB`,decimals:18},rpcUrls:{default:{http:[`https://rpc.matchain.io`]}},blockExplorers:{default:{name:`Matchain Scan`,url:`https://matchscan.io`}}}),gE=R({id:699,name:`Matchain Testnet`,nativeCurrency:{name:`BNB`,symbol:`BNB`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.matchain.io`]}},blockExplorers:{default:{name:`Matchain Scan`,url:`https://testnet.matchscan.io`}},testnet:!0}),_E=R({id:29548,name:`MCH Verse`,nativeCurrency:{name:`Oasys`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.oasys.mycryptoheroes.net`]}},blockExplorers:{default:{name:`MCH Verse Explorer`,url:`https://explorer.oasys.mycryptoheroes.net`,apiUrl:`https://explorer.oasys.mycryptoheroes.net/api`}},testnet:!1}),vE=R({id:6342,blockTime:1e3,name:`MegaETH Testnet`,nativeCurrency:{name:`MegaETH Testnet Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://carrot.megaeth.com/rpc`],webSocket:[`wss://carrot.megaeth.com/ws`]}},blockExplorers:{default:{name:`MegaETH Testnet Explorer`,url:`https://www.megaexplorer.xyz/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},testnet:!0}),yE=R({id:7078815900,name:`Mekong Pectra Devnet`,nativeCurrency:{name:`eth`,symbol:`eth`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mekong.ethpandaops.io`]}},blockExplorers:{default:{name:`Block Explorer`,url:`https://explorer.mekong.ethpandaops.io`}},testnet:!0}),bE=R({id:333000333,name:`Meld`,nativeCurrency:{decimals:18,name:`Meld`,symbol:`MELD`},rpcUrls:{default:{http:[`https://rpc-1.meld.com`]}},blockExplorers:{default:{name:`MELDscan`,url:`https://meldscan.io`}},contracts:{multicall3:{address:`0x769ee5a8e82c15c1b6e358f62ac8eb6e3abe8dc5`,blockCreated:360069}}}),xE=R({id:4352,name:`MemeCore`,nativeCurrency:{decimals:18,name:`M`,symbol:`M`},rpcUrls:{default:{http:[`https://rpc.memecore.net`],webSocket:[`wss://ws.memecore.net`]}},blockExplorers:{default:{name:`MemeCore Explorer`,url:`https://memecorescan.io`,apiUrl:`https://api.memecorescan.io/api`},okx:{name:`MemeCore Explorer`,url:`https://web3.okx.com/explorer/memecore`},memecore:{name:`MemeCore Explorer`,url:`https://blockscout.memecore.com`,apiUrl:`https://blockscout.memecore.com/api`}}}),SE=R({id:43521,name:`Formicarium`,nativeCurrency:{decimals:18,name:`M`,symbol:`M`},rpcUrls:{default:{http:[`https://rpc.formicarium.memecore.net`],webSocket:[`wss://ws.formicarium.memecore.net`]}},blockExplorers:{default:{name:`MemeCore Testnet Explorer`,url:`https://formicarium.memecorescan.io`},okx:{name:`MemeCore Testnet Explorer`,url:`https://web3.okx.com/explorer/formicarium-testnet`},memecore:{name:`MemeCore Testnet Explorer`,url:`https://formicarium.blockscout.memecore.com`,apiUrl:`https://formicarium.blockscout.memecore.com/api`}},testnet:!0}),CE=R({id:4200,name:`Merlin`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.merlinchain.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://scan.merlinchain.io`,apiUrl:`https://scan.merlinchain.io/api`}}}),wE=R({id:4203,name:`Merlin Erigon Testnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-erigon-rpc.merlinchain.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://testnet-erigon-scan.merlinchain.io`,apiUrl:`https://testnet-erigon-scan.merlinchain.io/api`}},testnet:!0}),TE=R({id:571,name:`MetaChain Mainnet`,nativeCurrency:{name:`Metatime Coin`,symbol:`MTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.metatime.com`]}},blockExplorers:{default:{name:`MetaExplorer`,url:`https://explorer.metatime.com`}},contracts:{multicall3:{address:`0x0000000000000000000000000000000000003001`,blockCreated:0}}}),EE=R({id:1453,name:`MetaChain Istanbul`,nativeCurrency:{name:`Metatime Coin`,symbol:`MTC`,decimals:18},rpcUrls:{default:{http:[`https://istanbul-rpc.metachain.dev`]}},blockExplorers:{default:{name:`MetaExplorer`,url:`https://istanbul-explorer.metachain.dev`}},contracts:{multicall3:{address:`0x0000000000000000000000000000000000003001`,blockCreated:0}},testnet:!0}),DE=R({id:11,name:`Metadium Network`,nativeCurrency:{decimals:18,name:`META`,symbol:`META`},rpcUrls:{default:{http:[`https://api.metadium.com/prod`]}},blockExplorers:{default:{name:`Metadium Explorer`,url:`https://explorer.metadium.com`}},testnet:!1});var OE=1;const kE=R({...z,id:1750,name:`Metal L2`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.metall2.com`],webSocket:[`wss://rpc.metall2.com`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.metall2.com`,apiUrl:`https://explorer.metall2.com/api`}},contracts:{...z.contracts,l2OutputOracle:{[OE]:{address:`0x3B1F7aDa0Fcc26B13515af752Dd07fB1CAc11426`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},portal:{[OE]:{address:`0x3F37aBdE2C6b5B2ed6F8045787Df1ED1E3753956`}},l1StandardBridge:{[OE]:{address:`0x6d0f65D59b55B0FEC5d2d15365154DcADC140BF3`}}},sourceId:OE}),AE=R({id:82,name:`Meter`,nativeCurrency:{decimals:18,name:`MTR`,symbol:`MTR`},rpcUrls:{default:{http:[`https://rpc.meter.io`]}},blockExplorers:{default:{name:`MeterScan`,url:`https://scan.meter.io`}}}),jE=R({id:83,name:`Meter Testnet`,nativeCurrency:{decimals:18,name:`MTR`,symbol:`MTR`},rpcUrls:{default:{http:[`https://rpctest.meter.io`]}},blockExplorers:{default:{name:`MeterTestnetScan`,url:`https://scan-warringstakes.meter.io`}}}),ME=R({id:1088,name:`Metis`,nativeCurrency:{decimals:18,name:`Metis`,symbol:`METIS`},rpcUrls:{default:{http:[`https://metis.rpc.hypersync.xyz`,`https://metis-pokt.nodies.app`,`https://api.blockeden.xyz/metis/67nCBdZQSH9z3YqDDjdm`,`https://metis-andromeda.rpc.thirdweb.com`,`https://metis-andromeda.gateway.tenderly.co`,`https://metis.api.onfinality.io/public`,`https://andromeda.metis.io/?owner=1088`,`https://metis-mainnet.public.blastapi.io`],webSocket:[`wss://metis-rpc.publicnode.com`,`wss://metis.drpc.org`]}},blockExplorers:{default:{name:`Metis Explorer`,url:`https://explorer.metis.io`,apiUrl:`https://api.routescan.io/v2/network/mainnet/evm/1088/etherscan/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2338552}}}),NE=R({id:599,name:`Metis Goerli`,nativeCurrency:{decimals:18,name:`Metis Goerli`,symbol:`METIS`},rpcUrls:{default:{http:[`https://goerli.gateway.metisdevops.link`]}},blockExplorers:{default:{name:`Metis Goerli Explorer`,url:`https://goerli.explorer.metisdevops.link`,apiUrl:`https://goerli.explorer.metisdevops.link/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1006207}}}),PE=R({id:59902,name:`Metis Sepolia`,nativeCurrency:{decimals:18,name:`Test Metis`,symbol:`tMETIS`},rpcUrls:{default:{http:[`https://sepolia.metisdevops.link`,`https://metis-sepolia-rpc.publicnode.com`,`https://metis-sepolia.gateway.tenderly.co`],webSocket:[`wss://metis-sepolia-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Metis Sepolia Explorer`,url:`https://sepolia-explorer.metisdevops.link`,apiUrl:`https://sepolia-explorer.metisdevops.link/api-docs`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:224185}}}),FE=R({id:7518,name:`MEVerse Chain Mainnet`,nativeCurrency:{decimals:18,name:`MEVerse`,symbol:`MEV`},rpcUrls:{default:{http:[`https://rpc.meversemainnet.io`]}},blockExplorers:{default:{name:`Explorer`,url:`https://www.meversescan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:86881340}}}),IE=R({id:4759,name:`MEVerse Chain Testnet`,nativeCurrency:{decimals:18,name:`MEVerse`,symbol:`MEV`},rpcUrls:{default:{http:[`https://rpc.meversetestnet.io`]}},blockExplorers:{default:{name:`Explorer`,url:`https://testnet.meversescan.io/`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:64371115}},testnet:!0}),LE=R({id:185,name:`Mint Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mintchain.io`]}},blockExplorers:{default:{name:`Mintchain explorer`,url:`https://explorer.mintchain.io`}},testnet:!1}),RE=R({id:1686,name:`Mint Sepolia Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.mintchain.io`]}},blockExplorers:{default:{name:`Mintchain Testnet explorer`,url:`https://testnet-explorer.mintchain.io`}},testnet:!0}),zE=R({id:124832,name:`Mitosis Testnet`,nativeCurrency:{name:`MITO`,symbol:`MITO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.mitosis.org`]}},blockExplorers:{default:{name:`Mitosis testnet explorer`,url:`https://testnet.mitosiscan.xyz`}},testnet:!0});var BE=1;const VE=R({...z,id:34443,name:`Mode Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.mode.network`]}},blockExplorers:{default:{name:`Modescan`,url:`https://modescan.io`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2465882},l2OutputOracle:{[BE]:{address:`0x4317ba146D4933D889518a3e5E11Fe7a53199b04`}},portal:{[BE]:{address:`0x8B34b14c7c7123459Cf3076b8Cb929BE097d0C07`}},l1StandardBridge:{[BE]:{address:`0x735aDBbE72226BD52e818E7181953f42E3b0FF21`}}},sourceId:BE});var HE=11155111;const UE=R({...z,id:919,name:`Mode Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.mode.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia.explorer.mode.network`,apiUrl:`https://sepolia.explorer.mode.network/api`}},contracts:{...z.contracts,l2OutputOracle:{[HE]:{address:`0x2634BD65ba27AB63811c74A63118ACb312701Bfa`,blockCreated:3778393}},portal:{[HE]:{address:`0x320e1580effF37E008F1C92700d1eBa47c1B23fD`,blockCreated:3778395}},l1StandardBridge:{[HE]:{address:`0xbC5C679879B2965296756CD959C3C739769995E2`,blockCreated:3778392}},multicall3:{address:`0xBAba8373113Fb7a68f195deF18732e01aF8eDfCF`,blockCreated:3019007}},testnet:!0,sourceId:HE}),WE=R({id:10143,name:`Monad Testnet`,blockTime:400,nativeCurrency:{name:`Testnet MON Token`,symbol:`MON`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.monad.xyz`]}},blockExplorers:{default:{name:`Monad Testnet explorer`,url:`https://testnet.monadexplorer.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:251449}},testnet:!0}),GE=R({id:1287,name:`Moonbase Alpha`,nativeCurrency:{decimals:18,name:`DEV`,symbol:`DEV`},rpcUrls:{default:{http:[`https://rpc.api.moonbase.moonbeam.network`],webSocket:[`wss://wss.api.moonbase.moonbeam.network`]}},blockExplorers:{default:{name:`Moonscan`,url:`https://moonbase.moonscan.io`,apiUrl:`https://moonbase.moonscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1850686}},testnet:!0}),KE=R({id:1284,name:`Moonbeam`,nativeCurrency:{decimals:18,name:`GLMR`,symbol:`GLMR`},rpcUrls:{default:{http:[`https://moonbeam.public.blastapi.io`],webSocket:[`wss://moonbeam.public.blastapi.io`]}},blockExplorers:{default:{name:`Moonscan`,url:`https://moonscan.io`,apiUrl:`https://api-moonbeam.moonscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:609002}},testnet:!1}),qE=R({id:1281,name:`Moonbeam Development Node`,nativeCurrency:{decimals:18,name:`DEV`,symbol:`DEV`},rpcUrls:{default:{http:[`http://127.0.0.1:9944`],webSocket:[`wss://127.0.0.1:9944`]}}}),JE=R({id:1285,name:`Moonriver`,nativeCurrency:{decimals:18,name:`MOVR`,symbol:`MOVR`},rpcUrls:{default:{http:[`https://moonriver.public.blastapi.io`],webSocket:[`wss://moonriver.public.blastapi.io`]}},blockExplorers:{default:{name:`Moonscan`,url:`https://moonriver.moonscan.io`,apiUrl:`https://api-moonriver.moonscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1597904}},testnet:!1}),YE=R({id:2818,name:`Morph`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.morphl2.io`],webSocket:[`wss://rpc.morphl2.io:8443`]}},blockExplorers:{default:{name:`Morph Explorer`,url:`https://explorer.morphl2.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3654913}},testnet:!1}),XE=R({id:2810,name:`Morph Holesky`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-quicknode-holesky.morphl2.io`],webSocket:[`wss://rpc-quicknode-holesky.morphl2.io`]}},blockExplorers:{default:{name:`Morph Holesky Explorer`,url:`https://explorer-holesky.morphl2.io`,apiUrl:`https://explorer-api-holesky.morphl2.io/api?`}},testnet:!0}),ZE=R({id:2710,name:`Morph Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.morphl2.io`]}},blockExplorers:{default:{name:`Morph Testnet Explorer`,url:`https://explorer-testnet.morphl2.io`,apiUrl:`https://explorer-api-testnet.morphl2.io/api`}},testnet:!0}),QE=R({id:5551,name:`Nahmii 2 Mainnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://l2.nahmii.io`]}},blockExplorers:{default:{name:`Nahmii 2 Explorer`,url:`https://explorer.n2.nahmii.io`}},testnet:!1}),$E=R({id:22222,name:`Nautilus Mainnet`,nativeCurrency:{name:`ZBC`,symbol:`ZBC`,decimals:9},rpcUrls:{default:{http:[`https://api.nautilus.nautchain.xyz`]}},blockExplorers:{default:{name:`NautScan`,url:`https://nautscan.com`}}}),eD=R({id:397,name:`NEAR Protocol`,nativeCurrency:{decimals:18,name:`NEAR`,symbol:`NEAR`},rpcUrls:{default:{http:[`https://eth-rpc.mainnet.near.org`]}},blockExplorers:{default:{name:`NEAR Explorer`,url:`https://eth-explorer.near.org`}},testnet:!1}),tD=R({id:398,name:`NEAR Protocol Testnet`,nativeCurrency:{decimals:18,name:`NEAR`,symbol:`NEAR`},rpcUrls:{default:{http:[`https://eth-rpc.testnet.near.org`]}},blockExplorers:{default:{name:`NEAR Explorer`,url:`https://eth-explorer-testnet.near.org`}},testnet:!0}),nD=R({id:245022926,name:`Neon EVM DevNet`,nativeCurrency:{name:`NEON`,symbol:`NEON`,decimals:18},rpcUrls:{default:{http:[`https://devnet.neonevm.org`]}},blockExplorers:{default:{name:`Neonscan`,url:`https://devnet.neonscan.org`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:205206112}},testnet:!0}),rD=R({id:245022934,network:`neonMainnet`,name:`Neon EVM MainNet`,nativeCurrency:{name:`NEON`,symbol:`NEON`,decimals:18},rpcUrls:{default:{http:[`https://neon-proxy-mainnet.solana.p2p.org`]}},blockExplorers:{default:{name:`Neonscan`,url:`https://neonscan.org`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:206545524}},testnet:!1}),iD=R({id:47763,name:`Neo X Mainnet`,nativeCurrency:{name:`Gas`,symbol:`GAS`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-1.rpc.banelabs.org`,`https://mainnet-2.rpc.banelabs.org`]}},blockExplorers:{default:{name:`Neo X - Explorer`,url:`https://xexplorer.neo.org`}},testnet:!1}),aD=R({id:12227332,name:`Neo X Testnet T4`,nativeCurrency:{name:`Gas`,symbol:`GAS`,decimals:18},rpcUrls:{default:{http:[`https://testnet.rpc.banelabs.org/`]}},blockExplorers:{default:{name:`neox-scan`,url:`https://xt4scan.ngd.network`}},testnet:!0}),oD=R({id:1012,name:`Newton`,nativeCurrency:{name:`Newton`,symbol:`NEW`,decimals:18},rpcUrls:{default:{http:[`https://global.rpc.mainnet.newtonproject.org`]}},blockExplorers:{default:{name:`NewFi explorer`,url:`https://explorer.newtonproject.org/`}},testnet:!1}),sD=R({id:4242,name:`Nexi`,nativeCurrency:{name:`Nexi`,symbol:`NEXI`,decimals:18},rpcUrls:{default:{http:[`https://rpc.chain.nexi.technology`]}},blockExplorers:{default:{name:`NexiScan`,url:`https://www.nexiscan.com`,apiUrl:`https://www.nexiscan.com/api`}},contracts:{multicall3:{address:`0x0277A46Cc69A57eE3A6C8c158bA874832F718B8E`,blockCreated:25770160}}}),cD=R({id:240,name:`Nexilix Smart Chain`,nativeCurrency:{decimals:18,name:`Nexilix`,symbol:`NEXILIX`},rpcUrls:{default:{http:[`https://rpcurl.pos.nexilix.com`]}},blockExplorers:{default:{name:`NexilixScan`,url:`https://scan.nexilix.com`}},contracts:{multicall3:{address:`0x58381c8e2BF9d0C2C4259cA14BdA9Afe02831244`,blockCreated:74448}}}),lD=R({id:6900,name:`Nibiru`,nativeCurrency:{decimals:18,name:`NIBI`,symbol:`NIBI`},rpcUrls:{default:{http:[`https://evm-rpc.nibiru.fi`]}},blockExplorers:{default:{name:`NibiScan`,url:`https://nibiscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:19587573}}}),uD=R({id:200024,name:`Nitrograph Testnet`,testnet:!0,rpcUrls:{default:{http:[`https://rpc-testnet.nitrograph.foundation`]}},nativeCurrency:{name:`Nitro`,symbol:`NOS`,decimals:18},blockExplorers:{default:{url:`https://explorer-testnet.nitrograph.foundation`,name:`Nitrograph Explorer`}}}),dD=R({id:4090,network:`oasis-testnet`,name:`Oasis Testnet`,nativeCurrency:{name:`Fasttoken`,symbol:`FTN`,decimals:18},rpcUrls:{default:{http:[`https://rpc1.oasis.bahamutchain.com`]}},blockExplorers:{default:{name:`Ftnscan`,url:`https://oasis.ftnscan.com`,apiUrl:`https://oasis.ftnscan.com/api`}},testnet:!0}),fD=R({id:248,name:`Oasys`,nativeCurrency:{name:`Oasys`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.oasys.games`]}},blockExplorers:{default:{name:`OasysScan`,url:`https://scan.oasys.games`,apiUrl:`https://scan.oasys.games/api`}}}),pD=R({id:911867,name:`Odyssey Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://odyssey.ithaca.xyz`]}},blockExplorers:{default:{name:`Odyssey Explorer`,url:`https://odyssey-explorer.ithaca.xyz`,apiUrl:`https://odyssey-explorer.ithaca.xyz/api`}},testnet:!0}),mD=R({id:66,name:`OKC`,nativeCurrency:{decimals:18,name:`OKT`,symbol:`OKT`},rpcUrls:{default:{http:[`https://exchainrpc.okex.org`]}},blockExplorers:{default:{name:`oklink`,url:`https://www.oklink.com/okc`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:10364792}}}),hD=R({id:311,name:`Omax Mainnet`,nativeCurrency:{decimals:18,name:`OMAX`,symbol:`OMAX`},rpcUrls:{default:{http:[`https://mainapi.omaxray.com`]}},blockExplorers:{default:{name:`Omax Explorer`,url:`https://omaxscan.com`}},testnet:!1}),gD=R({id:166,name:`Omni`,nativeCurrency:{name:`Omni`,symbol:`OMNI`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.omni.network`],webSocket:[`wss://mainnet.omni.network`]}},blockExplorers:{default:{name:`OmniScan`,url:`https://omniscan.network`}},testnet:!1}),_D=R({id:164,name:`Omni Omega`,nativeCurrency:{name:`Omni`,symbol:`OMNI`,decimals:18},rpcUrls:{default:{http:[`https://omega.omni.network`],webSocket:[`wss://omega.omni.network`]}},blockExplorers:{default:{name:`Omega OmniScan`,url:`https://omega.omniscan.network/`}},testnet:!0}),vD=R({id:309075,name:`One World Chain Mainnet`,nativeCurrency:{decimals:18,name:`OWCT`,symbol:`OWCT`},rpcUrls:{default:{http:[`https://mainnet-rpc.oneworldchain.org`]}},blockExplorers:{default:{name:`One World Explorer`,url:`https://mainnet.oneworldchain.org`}},testnet:!1}),yD=R({id:9700,name:`OORT MainnetDev`,nativeCurrency:{decimals:18,name:`OORT`,symbol:`OORT`},rpcUrls:{default:{http:[`https://dev-rpc.oortech.com`]}},blockExplorers:{default:{name:`OORT MainnetDev Explorer`,url:`https://dev-scan.oortech.com`}}});var bD=56;const xD=R({id:204,name:`opBNB`,nativeCurrency:{name:`BNB`,symbol:`BNB`,decimals:18},rpcUrls:{default:{http:[`https://opbnb-mainnet-rpc.bnbchain.org`]}},blockExplorers:{default:{name:`opBNB (BSCScan)`,url:`https://opbnb.bscscan.com`,apiUrl:`https://api-opbnb.bscscan.com/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:512881},l2OutputOracle:{[bD]:{address:`0x153CAB79f4767E2ff862C94aa49573294B13D169`}},portal:{[bD]:{address:`0x1876EA7702C0ad0C6A2ae6036DE7733edfBca519`}},l1StandardBridge:{[bD]:{address:`0xF05F0e4362859c3331Cb9395CBC201E3Fa6757Ea`}}},sourceId:bD});var SD=97;const CD=R({id:5611,name:`opBNB Testnet`,nativeCurrency:{decimals:18,name:`tBNB`,symbol:`tBNB`},rpcUrls:{default:{http:[`https://opbnb-testnet-rpc.bnbchain.org`]}},blockExplorers:{default:{name:`opbnbscan`,url:`https://testnet.opbnbscan.com`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3705108},l2OutputOracle:{[SD]:{address:`0xFf2394Bb843012562f4349C6632a0EcB92fC8810`}},portal:{[SD]:{address:`0x4386C8ABf2009aC0c263462Da568DD9d46e52a31`}},l1StandardBridge:{[SD]:{address:`0x677311Fd2cCc511Bbc0f581E8d9a07B033D5E840`}}},testnet:!0,sourceId:SD}),wD=R({id:1612,name:`OpenLedger`,nativeCurrency:{name:`Open`,symbol:`OPEN`,decimals:18},rpcUrls:{default:{http:[`https://rpc.openledger.xyz`]}},blockExplorers:{default:{name:`OpenLedger Explorer`,url:`https://scan.openledger.xyz`}},testnet:!1});var TD=1;const ED=R({...z,id:10,name:`OP Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.optimism.io`]}},blockExplorers:{default:{name:`Optimism Explorer`,url:`https://optimistic.etherscan.io`,apiUrl:`https://api-optimistic.etherscan.io/api`}},contracts:{...z.contracts,disputeGameFactory:{[TD]:{address:`0xe5965Ab5962eDc7477C8520243A95517CD252fA9`}},l2OutputOracle:{[TD]:{address:`0xdfe97868233d1aa22e815a266982f2cf17685a27`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4286263},portal:{[TD]:{address:`0xbEb5Fc579115071764c7423A4f12eDde41f106Ed`}},l1StandardBridge:{[TD]:{address:`0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1`}}},sourceId:TD});var DD=5;const OD=R({...z,id:420,name:`Optimism Goerli`,nativeCurrency:{name:`Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://goerli.optimism.io`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli-optimism.etherscan.io`,apiUrl:`https://goerli-optimism.etherscan.io/api`}},contracts:{...z.contracts,l2OutputOracle:{[DD]:{address:`0xE6Dfba0953616Bacab0c9A8ecb3a9BBa77FC15c0`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:49461},portal:{[DD]:{address:`0x5b47E1A08Ea6d985D6649300584e6722Ec4B1383`}},l1StandardBridge:{[DD]:{address:`0x636Af16bf2f682dD3109e60102b8E1A089FedAa8`}}},testnet:!0,sourceId:DD});var kD=11155111;const AD=R({...z,id:11155420,name:`OP Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.optimism.io`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://optimism-sepolia.blockscout.com`,apiUrl:`https://optimism-sepolia.blockscout.com/api`}},contracts:{...z.contracts,disputeGameFactory:{[kD]:{address:`0x05F9613aDB30026FFd634f38e5C4dFd30a197Fa1`}},l2OutputOracle:{[kD]:{address:`0x90E9c4f8a994a250F6aEfd61CAFb4F2e895D458F`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1620204},portal:{[kD]:{address:`0x16Fc5058F25648194471939df75CF27A2fdC48BC`}},l1StandardBridge:{[kD]:{address:`0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1`}}},testnet:!0,sourceId:kD}),jD=R({id:62050,name:`Optopia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.optopia.ai`]}},blockExplorers:{default:{name:`Optopia Explorer`,url:`https://scan.optopia.ai`}},testnet:!1}),MD=R({id:62049,name:`Optopia Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.optopia.ai`]}},blockExplorers:{default:{name:`Optopia Explorer`,url:`https://scan-testnet.optopia.ai`}},testnet:!0}),ND=R({id:291,name:`Orderly`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.orderly.network`]}},blockExplorers:{default:{name:`Orderly Explorer`,url:`https://explorer.orderly.network`}},testnet:!1}),PD=R({id:4460,name:`Orderly Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://l2-orderly-l2-4460-sepolia-8tc3sd7dvy.t.conduit.xyz`]}},blockExplorers:{default:{name:`Orderly Explorer`,url:`https://explorerl2new-orderly-l2-4460-sepolia-8tc3sd7dvy.t.conduit.xyz`}},testnet:!0}),FD=R({id:41144114,name:`Otim Devnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`http://devnet.otim.xyz`]}},contracts:{batchInvoker:{address:`0x5FbDB2315678afecb367f032d93F642f64180aa3`}}}),ID=R({id:11297108109,name:`Palm`,nativeCurrency:{decimals:18,name:`PALM`,symbol:`PALM`},rpcUrls:{default:{http:[`https://palm-mainnet.public.blastapi.io`],webSocket:[`wss://palm-mainnet.public.blastapi.io`]}},blockExplorers:{default:{name:`Chainlens`,url:`https://palm.chainlens.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:15429248}}}),LD=R({id:11297108099,name:`Palm Testnet`,nativeCurrency:{decimals:18,name:`PALM`,symbol:`PALM`},rpcUrls:{default:{http:[`https://palm-mainnet.public.blastapi.io`],webSocket:[`wss://palm-mainnet.public.blastapi.io`]}},blockExplorers:{default:{name:`Chainlens`,url:`https://palm.chainlens.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:15429248}},testnet:!0}),RD=R({id:3338,name:`Peaq`,nativeCurrency:{decimals:18,name:`peaq`,symbol:`PEAQ`},rpcUrls:{default:{http:[`https://quicknode1.peaq.xyz`,`https://quicknode2.peaq.xyz`,`https://quicknode3.peaq.xyz`],webSocket:[`wss://quicknode1.peaq.xyz`,`wss://quicknode2.peaq.xyz`,`wss://quicknode3.peaq.xyz`]}},blockExplorers:{default:{name:`Subscan`,url:`https://peaq.subscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3566354}}});var zD=1;const BD=R({id:424,network:`pgn`,name:`PGN`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.publicgoods.network`]}},blockExplorers:{default:{name:`PGN Explorer`,url:`https://explorer.publicgoods.network`,apiUrl:`https://explorer.publicgoods.network/api`}},contracts:{l2OutputOracle:{[zD]:{address:`0x9E6204F750cD866b299594e2aC9eA824E2e5f95c`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3380209},portal:{[zD]:{address:`0xb26Fd985c5959bBB382BAFdD0b879E149e48116c`}},l1StandardBridge:{[zD]:{address:`0xD0204B9527C1bA7bD765Fa5CCD9355d38338272b`}}},formatters:vy,sourceId:zD});var VD=11155111;const HD=R({id:58008,network:`pgn-testnet`,name:`PGN `,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.publicgoods.network`]}},blockExplorers:{default:{name:`PGN Testnet Explorer`,url:`https://explorer.sepolia.publicgoods.network`,apiUrl:`https://explorer.sepolia.publicgoods.network/api`}},contracts:{l2OutputOracle:{[VD]:{address:`0xD5bAc3152ffC25318F848B3DD5dA6C85171BaEEe`}},portal:{[VD]:{address:`0xF04BdD5353Bb0EFF6CA60CfcC78594278eBfE179`}},l1StandardBridge:{[VD]:{address:`0xFaE6abCAF30D23e233AC7faF747F2fC3a5a6Bfa3`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3754925}},formatters:vy,sourceId:VD,testnet:!0}),UD=R({id:13381,name:`Phoenix Blockchain`,nativeCurrency:{name:`Phoenix`,symbol:`PHX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.phoenixplorer.com`]}},blockExplorers:{default:{name:`Phoenixplorer`,url:`https://phoenixplorer.com`,apiUrl:`https://phoenixplorer.com/api`}},contracts:{multicall3:{address:`0x498cF757a575cFF2c2Ed9f532f56Efa797f86442`,blockCreated:5620192}}}),WD=R({id:7070,name:`Planq Mainnet`,nativeCurrency:{decimals:18,name:`PLQ`,symbol:`PLQ`},rpcUrls:{default:{http:[`https://planq-rpc.nodies.app`,`https://evm-rpc.planq.network`,`https://jsonrpc.planq.nodestake.top`]}},blockExplorers:{default:{name:`Planq Explorer`,url:`https://evm.planq.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:8470015}},testnet:!1}),GD=R({id:9745,name:`Plasma`,blockTime:1e3,nativeCurrency:{name:`Plasma`,symbol:`XPL`,decimals:18},rpcUrls:{default:{http:[`https://rpc.plasma.to`]}},blockExplorers:{default:{name:`PlasmaScan`,url:`https://plasmascan.to`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),KD=R({id:9747,name:`Plasma Devnet`,nativeCurrency:{name:`Devnet Plasma`,symbol:`XPL`,decimals:18},rpcUrls:{default:{http:[`https://devnet-rpc.plasma.to`]}},testnet:!0,contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),qD=R({id:9746,name:`Plasma Testnet`,nativeCurrency:{name:`Testnet Plasma`,symbol:`XPL`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.plasma.to`]}},blockExplorers:{default:{name:`RouteScan`,url:`https://testnet.plasmascan.to`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},testnet:!0}),JD=R({...ay,id:1612127,name:`PlayFi Albireo Testnet`,network:`albireo`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://albireo-rpc.playfi.ai`],webSocket:[`wss://albireo-rpc-ws.playfi.ai/ws`]}},blockExplorers:{default:{name:`PlayFi Albireo Explorer`,url:`https://albireo-explorer.playfi.ai`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`}},testnet:!0}),YD=R({id:242,name:`Plinga`,nativeCurrency:{name:`Plinga`,symbol:`PLINGA`,decimals:18},rpcUrls:{default:{http:[`https://rpcurl.mainnet.plgchain.com`]}},blockExplorers:{default:{name:`Plgscan`,url:`https://www.plgscan.com`}},contracts:{multicall3:{address:`0x0989576160f2e7092908BB9479631b901060b6e4`,blockCreated:204489}}}),XD=R({id:98865,name:`Plume (Legacy)`,nativeCurrency:{name:`Plume Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.plumenetwork.xyz`],webSocket:[`wss://rpc.plumenetwork.xyz`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.plumenetwork.xyz`,apiUrl:`https://explorer.plumenetwork.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:48577}},sourceId:1}),ZD=R({id:98864,name:`Plume Devnet (Legacy)`,nativeCurrency:{name:`Plume Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://test-rpc.plumenetwork.xyz`],webSocket:[`wss://test-rpc.plumenetwork.xyz`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://test-explorer.plumenetwork.xyz`,apiUrl:`https://test-explorer.plumenetwork.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:481948}},testnet:!0,sourceId:11155111}),QD=R({id:98866,name:`Plume`,nativeCurrency:{name:`Plume`,symbol:`PLUME`,decimals:18},rpcUrls:{default:{http:[`https://rpc.plume.org`],webSocket:[`wss://rpc.plume.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.plume.org`,apiUrl:`https://explorer.plume.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:39679}},sourceId:1}),$D=R({id:98867,name:`Plume Testnet`,nativeCurrency:{name:`Plume`,symbol:`PLUME`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.plume.org`],webSocket:[`wss://testnet-rpc.plume.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer.plume.org`,apiUrl:`https://testnet-explorer.plume.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:199712}},testnet:!0,sourceId:11155111}),eO=R({id:161221135,name:`Plume Testnet (Legacy)`,nativeCurrency:{name:`Plume Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.plumenetwork.xyz/http`],webSocket:[`wss://testnet-rpc.plumenetwork.xyz/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer.plumenetwork.xyz`,apiUrl:`https://testnet-explorer.plumenetwork.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:6022332}},testnet:!0,sourceId:11155111}),tO=R({id:631571,name:`Polter Testnet`,nativeCurrency:{decimals:18,name:`Polter GHST`,symbol:`GHST`},rpcUrls:{default:{http:[`https://geist-polter.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://polter-testnet.explorer.alchemy.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:11245}},testnet:!0}),nO=R({id:137,name:`Polygon`,blockTime:2e3,nativeCurrency:{name:`POL`,symbol:`POL`,decimals:18},rpcUrls:{default:{http:[`https://polygon-rpc.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://polygonscan.com`,apiUrl:`https://api.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:25770160}}}),rO=R({id:80002,name:`Polygon Amoy`,nativeCurrency:{name:`POL`,symbol:`POL`,decimals:18},rpcUrls:{default:{http:[`https://rpc-amoy.polygon.technology`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://amoy.polygonscan.com`,apiUrl:`https://api-amoy.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3127388}},testnet:!0}),iO=R({id:80001,name:`Polygon Mumbai`,nativeCurrency:{name:`MATIC`,symbol:`MATIC`,decimals:18},rpcUrls:{default:{http:[`https://80001.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://mumbai.polygonscan.com`,apiUrl:`https://api-testnet.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:25770160}},testnet:!0}),aO=R({id:1101,name:`Polygon zkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://zkevm-rpc.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://zkevm.polygonscan.com`,apiUrl:`https://api-zkevm.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:57746}}}),oO=R({id:2442,name:`Polygon zkEVM Cardona`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.cardona.zkevm-rpc.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://cardona-zkevm.polygonscan.com`,apiUrl:`https://cardona-zkevm.polygonscan.com/api`}},testnet:!0,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:114091}}}),sO=R({id:1442,name:`Polygon zkEVM Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.public.zkevm-test.net`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://testnet-zkevm.polygonscan.com`,apiUrl:`https://testnet-zkevm.polygonscan.com/api`}},testnet:!0,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:525686}}}),cO=R({id:8008,name:`Polynomial`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.polynomial.fi`]}},blockExplorers:{default:{name:`Polynomial Scan`,url:`https://polynomialscan.io`}},testnet:!1,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}}}),lO=R({id:80008,name:`Polynomia Sepolia`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.sepolia.polynomial.fi`]}},blockExplorers:{default:{name:`Polynomial Scan`,url:`https://sepolia.polynomialscan.io`}},testnet:!0,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}}}),uO=R({id:23023,name:`PremiumBlock Testnet`,nativeCurrency:{name:`Premium Block`,symbol:`PBLK`,decimals:18},rpcUrls:{default:{http:[`https://rpc.premiumblock.org`]}},blockExplorers:{default:{name:`PremiumBlocks Explorer`,url:`https://scan.premiumblock.org`}},testnet:!0}),dO=R({id:369,name:`PulseChain`,nativeCurrency:{name:`Pulse`,symbol:`PLS`,decimals:18},testnet:!1,blockTime:1e4,rpcUrls:{default:{http:[`https://rpc.pulsechain.com`],webSocket:[`wss://ws.pulsechain.com`]}},blockExplorers:{default:{name:`PulseScan`,url:`https://ipfs.scan.pulsechain.com`,apiUrl:`https://api.scan.pulsechain.com/api`}},contracts:{ensRegistry:{address:`0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e`},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14353601}}}),fO=R({id:943,name:`PulseChain V4`,testnet:!0,nativeCurrency:{name:`V4 Pulse`,symbol:`v4PLS`,decimals:18},blockTime:1e4,rpcUrls:{default:{http:[`https://rpc.v4.testnet.pulsechain.com`],webSocket:[`wss://ws.v4.testnet.pulsechain.com`]}},blockExplorers:{default:{name:`PulseScan`,url:`https://scan.v4.testnet.pulsechain.com`,apiUrl:`https://scan.v4.testnet.pulsechain.com/api`}},contracts:{ensRegistry:{address:`0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e`},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14353601}}}),pO=R({id:490092,name:`Pumpfi Testnet`,nativeCurrency:{decimals:18,name:`PMPT`,symbol:`PMPT`},rpcUrls:{default:{http:[`https://rpc1testnet.pumpfi.me`]}},blockExplorers:{default:{name:`Pumpfi Testnet Scan`,url:`https://testnetscan.pumpfi.me`}},testnet:!0});var mO=11155111;const hO=R({...z,name:`Pyrope Testnet`,testnet:!0,id:695569,sourceId:mO,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.pyropechain.com`],webSocket:[`wss://rpc.pyropechain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://pyrope.blockscout.com`}},contracts:{...z.contracts,l1StandardBridge:{[mO]:{address:`0xC24932c31D9621aE9e792576152B7ef010cFC2F8`}}}}),gO=R({id:766,name:`QL1`,nativeCurrency:{decimals:18,name:`QOM`,symbol:`QOM`},rpcUrls:{default:{http:[`https://rpc.qom.one`]}},blockExplorers:{default:{name:`Ql1 Explorer`,url:`https://scan.qom.one`}},contracts:{multicall3:{address:`0x7A52370716ea730585884F5BDB0f6E60C39b8C64`}},testnet:!1}),_O=R({id:35441,name:`Q Mainnet`,nativeCurrency:{decimals:18,name:`Q`,symbol:`Q`},rpcUrls:{default:{http:[`https://rpc.q.org`]}},blockExplorers:{default:{name:`Q Mainnet Explorer`,url:`https://explorer.q.org`,apiUrl:`https://explorer.q.org/api`}}}),vO=R({id:35443,name:`Q Testnet`,nativeCurrency:{decimals:18,name:`Q`,symbol:`Q`},rpcUrls:{default:{http:[`https://rpc.qtestnet.org`]}},blockExplorers:{default:{name:`Q Testnet Explorer`,url:`https://explorer.qtestnet.org`,apiUrl:`https://explorer.qtestnet.org/api`}},testnet:!0}),yO=R({id:111188,name:`re.al`,nativeCurrency:{name:`reETH`,decimals:18,symbol:`reETH`},rpcUrls:{default:{http:[`https://rpc.realforreal.gelato.digital`]}},blockExplorers:{default:{name:`re.al Explorer`,url:`https://explorer.re.al`,apiUrl:`https://explorer.re.al/api/v2`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:695}}}),bO=R({id:151,name:`Redbelly Network Mainnet`,nativeCurrency:{name:`Redbelly Native Coin`,symbol:`RBNT`,decimals:18},rpcUrls:{default:{http:[`https://governors.mainnet.redbelly.network`]}},blockExplorers:{default:{name:`Routescan`,url:`https://redbelly.routescan.io`,apiUrl:`https://api.routescan.io/v2/network/mainnet/evm/151/etherscan/api`}},testnet:!1}),xO=R({id:153,name:`Redbelly Network Testnet`,nativeCurrency:{name:`Redbelly Native Coin`,symbol:`RBNT`,decimals:18},rpcUrls:{default:{http:[`https://governors.testnet.redbelly.network`]}},blockExplorers:{default:{name:`Routescan`,url:`https://redbelly.testnet.routescan.io`,apiUrl:`https://api.routescan.io/v2/network/testnet/evm/153_2/etherscan/api`}},testnet:!0}),SO=R({id:50342,name:`Reddio`,nativeCurrency:{name:`Reddio`,symbol:`RED`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.reddio.com/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://reddio.cloud.blockscout.com`,apiUrl:`https://reddio.cloud.blockscout.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:848849}},testnet:!1}),CO=R({id:50341,name:`Reddio Sepolia`,nativeCurrency:{name:`Reddio`,symbol:`RED`,decimals:18},rpcUrls:{default:{http:[`https://reddio-dev.reddio.com`]}},blockExplorers:{default:{name:`Reddioscan`,url:`https://reddio-devnet.l2scan.co`,apiUrl:`https://reddio-devnet.l2scan.co/api`}},testnet:!0});var wO=1;const TO=R({...z,name:`Redstone`,id:690,sourceId:wO,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.redstonechain.com`],webSocket:[`wss://rpc.redstonechain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.redstone.xyz`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[wO]:{address:`0xC7bCb0e8839a28A1cFadd1CF716de9016CdA51ae`,blockCreated:19578329}},l2OutputOracle:{[wO]:{address:`0xa426A052f657AEEefc298b3B5c35a470e4739d69`,blockCreated:19578337}},l1StandardBridge:{[wO]:{address:`0xc473ca7E02af24c129c2eEf51F2aDf0411c1Df69`,blockCreated:19578331}}}}),EO=R({id:47805,name:`REI Mainnet`,nativeCurrency:{decimals:18,name:`REI`,symbol:`REI`},rpcUrls:{default:{http:[`https://rpc.rei.network`],webSocket:[`wss://rpc.rei.network`]}},blockExplorers:{default:{name:`REI Scan`,url:`https://scan.rei.network`}},testnet:!1}),DO=R({id:1729,name:`Reya Network`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.reya.network`],webSocket:[`wss://ws.reya.network`]}},blockExplorers:{default:{name:`Reya Network Explorer`,url:`https://explorer.reya.network`}},testnet:!1}),OO=R({id:11155931,name:`RISE Testnet`,nativeCurrency:{name:`RISE Testnet Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.riselabs.xyz`],webSocket:[`wss://testnet.riselabs.xyz/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.testnet.riselabs.xyz/`,apiUrl:`https://explorer.testnet.riselabs.xyz/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}},testnet:!0}),kO=R({id:753,name:`Rivalz`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rivalz.calderachain.xyz/http`]}},blockExplorers:{default:{name:`Rivalz Caldera Explorer`,url:`https://rivalz.calderaexplorer.xyz`}},testnet:!1}),AO=R({id:570,name:`Rollux Mainnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc.rollux.com`],webSocket:[`wss://rpc.rollux.com/wss`]}},blockExplorers:{default:{name:`RolluxExplorer`,url:`https://explorer.rollux.com`,apiUrl:`https://explorer.rollux.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:119222}}}),jO=R({id:57e3,name:`Rollux Testnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc-tanenbaum.rollux.com/`],webSocket:[`wss://rpc-tanenbaum.rollux.com/wss`]}},blockExplorers:{default:{name:`RolluxTestnetExplorer`,url:`https://rollux.tanenbaum.io`,apiUrl:`https://rollux.tanenbaum.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1813675}}}),MO=R({id:2020,name:`Ronin`,nativeCurrency:{name:`RON`,symbol:`RON`,decimals:18},rpcUrls:{default:{http:[`https://api.roninchain.com/rpc`]}},blockExplorers:{default:{name:`Ronin Explorer`,url:`https://app.roninchain.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:26023535}}}),NO=R({id:7668,name:`The Root Network`,nativeCurrency:{decimals:18,name:`XRP`,symbol:`XRP`},rpcUrls:{default:{http:[`https://root.rootnet.live/archive`],webSocket:[`wss://root.rootnet.live/archive/ws`]}},blockExplorers:{default:{name:`Rootscan`,url:`https://rootscan.io`}},contracts:{multicall3:{address:`0xc9C2E2429AeC354916c476B30d729deDdC94988d`,blockCreated:9218338}}}),PO=R({id:7672,name:`The Root Network - Porcini`,nativeCurrency:{decimals:18,name:`XRP`,symbol:`XRP`},rpcUrls:{default:{http:[`https://porcini.rootnet.app/archive`],webSocket:[`wss://porcini.rootnet.app/archive/ws`]}},blockExplorers:{default:{name:`Rootscan`,url:`https://porcini.rootscan.io`}},contracts:{multicall3:{address:`0xc9C2E2429AeC354916c476B30d729deDdC94988d`,blockCreated:10555692}},testnet:!0}),FO=R({id:30,name:`Rootstock Mainnet`,network:`rootstock`,nativeCurrency:{decimals:18,name:`Rootstock Bitcoin`,symbol:`RBTC`},rpcUrls:{default:{http:[`https://public-node.rsk.co`]}},blockExplorers:{default:{name:`RSK Explorer`,url:`https://explorer.rsk.co`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4249540}}}),IO=R({id:31,name:`Rootstock Testnet`,network:`rootstock`,nativeCurrency:{decimals:18,name:`Rootstock Bitcoin`,symbol:`tRBTC`},rpcUrls:{default:{http:[`https://public-node.testnet.rsk.co`]}},blockExplorers:{default:{name:`RSK Explorer`,url:`https://explorer.testnet.rootstock.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2771150}},testnet:!0});var LO=1;const RO=R({...z,id:12553,name:`RSS3 VSL Mainnet`,nativeCurrency:{name:`RSS3`,symbol:`RSS3`,decimals:18},rpcUrls:{default:{http:[`https://rpc.rss3.io`]}},blockExplorers:{default:{name:`RSS3 VSL Mainnet Scan`,url:`https://scan.rss3.io`,apiUrl:`https://scan.rss3.io/api`}},contracts:{...z.contracts,l2OutputOracle:{[LO]:{address:`0xE6f24d2C32B3109B18ed33cF08eFb490b1e09C10`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14193},portal:{[LO]:{address:`0x6A12432491bbbE8d3babf75F759766774C778Db4`,blockCreated:19387057}},l1StandardBridge:{[LO]:{address:`0x4cbab69108Aa72151EDa5A3c164eA86845f18438`}}},sourceId:LO});var zO=11155111;const BO=R({...z,id:2331,name:`RSS3 VSL Sepolia Testnet`,nativeCurrency:{name:`RSS3`,symbol:`RSS3`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.rss3.io`]}},blockExplorers:{default:{name:`RSS3 VSL Sepolia Testnet Scan`,url:`https://scan.testnet.rss3.io`,apiUrl:`https://scan.testnet.rss3.io/api`}},contracts:{...z.contracts,l2OutputOracle:{[zO]:{address:`0xDb5c46C3Eaa6Ed6aE8b2379785DF7dd029C0dC81`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:55697},portal:{[zO]:{address:`0xcBD77E8E1E7F06B25baDe67142cdE82652Da7b57`,blockCreated:5345035}},l1StandardBridge:{[zO]:{address:`0xdDD29bb63B0839FB1cE0eE439Ff027738595D07B`}}},testnet:!0,sourceId:zO}),VO=R({id:7225878,name:`Saakuru Mainnet`,nativeCurrency:{name:`OAS`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.saakuru.network`]}},blockExplorers:{default:{name:`Saakuru Explorer`,url:`https://explorer.saakuru.network`}},testnet:!1}),HO=R({id:5464,name:`Saga`,network:`saga`,nativeCurrency:{decimals:18,name:`gas`,symbol:`GAS`},rpcUrls:{default:{http:[`https://sagaevm.jsonrpc.sagarpc.io`]}},blockExplorers:{default:{name:`Saga Explorer`,url:`https://sagaevm.sagaexplorer.io`}},contracts:{multicall3:{address:`0x864DDc9B50B9A0dF676d826c9B9EDe9F8913a160`,blockCreated:467530}}}),UO=R({id:2021,name:`Saigon Testnet`,nativeCurrency:{name:`RON`,symbol:`RON`,decimals:18},rpcUrls:{default:{http:[`https://saigon-testnet.roninchain.com/rpc`]}},blockExplorers:{default:{name:`Saigon Explorer`,url:`https://saigon-app.roninchain.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:18736871}},testnet:!0}),WO=R({id:1996,name:`Sanko`,nativeCurrency:{name:`DMT`,symbol:`DMT`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.sanko.xyz`]}},blockExplorers:{default:{name:`Sanko Explorer`,url:`https://explorer.sanko.xyz`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:37}},testnet:!1}),GO=R({id:23294,name:`Oasis Sapphire`,network:`sapphire`,nativeCurrency:{name:`Sapphire Rose`,symbol:`ROSE`,decimals:18},rpcUrls:{default:{http:[`https://sapphire.oasis.io`],webSocket:[`wss://sapphire.oasis.io/ws`]}},blockExplorers:{default:{name:`Oasis Explorer`,url:`https://explorer.oasis.io/mainnet/sapphire`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:734531}}}),KO=R({id:23295,name:`Oasis Sapphire Testnet`,network:`sapphire-testnet`,nativeCurrency:{name:`Sapphire Test Rose`,symbol:`TEST`,decimals:18},rpcUrls:{default:{http:[`https://testnet.sapphire.oasis.dev`],webSocket:[`wss://testnet.sapphire.oasis.dev/ws`]}},blockExplorers:{default:{name:`Oasis Explorer`,url:`https://explorer.oasis.io/testnet/sapphire`}},testnet:!0}),qO=R({id:3109,name:`SatoshiVM Alpha Mainnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://alpha-rpc-node-http.svmscan.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://svmscan.io`,apiUrl:`https://svmscan.io/api`}}}),JO=R({id:3110,name:`SatoshiVM Testnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://test-rpc-node-http.svmscan.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://testnet.svmscan.io`,apiUrl:`https://testnet.svmscan.io/api`}},testnet:!0}),YO=R({id:534352,name:`Scroll`,blockTime:3e3,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.scroll.io`],webSocket:[`wss://wss-rpc.scroll.io/ws`]}},blockExplorers:{default:{name:`Scrollscan`,url:`https://scrollscan.com`,apiUrl:`https://api.scrollscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14}},testnet:!1}),XO=R({id:534351,name:`Scroll Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rpc.scroll.io`]}},blockExplorers:{default:{name:`Scrollscan`,url:`https://sepolia.scrollscan.com`,apiUrl:`https://api-sepolia.scrollscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:9473}},testnet:!0}),ZO=R({id:1329,name:`Sei Network`,nativeCurrency:{name:`Sei`,symbol:`SEI`,decimals:18},rpcUrls:{default:{http:[`https://evm-rpc.sei-apis.com/`],webSocket:[`wss://evm-ws.sei-apis.com/`]}},blockExplorers:{default:{name:`Seitrace`,url:`https://seitrace.com`,apiUrl:`https://seitrace.com/pacific-1/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}}}),QO=R({id:713715,name:`Sei Devnet`,nativeCurrency:{name:`Sei`,symbol:`SEI`,decimals:18},rpcUrls:{default:{http:[`https://evm-rpc-arctic-1.sei-apis.com`]}},blockExplorers:{default:{name:`Seitrace`,url:`https://seitrace.com`}},testnet:!0}),$O=R({id:5124,name:`Seismic Devnet`,nativeCurrency:{name:`Seismic Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://node-2.seismicdev.net/rpc`]}},blockExplorers:{default:{name:`Seismic Devnet Explorer`,url:`https://explorer-2.seismicdev.net`}},testnet:!0}),ek=R({id:1328,name:`Sei Testnet`,nativeCurrency:{name:`Sei`,symbol:`SEI`,decimals:18},rpcUrls:{default:{http:[`https://evm-rpc-testnet.sei-apis.com`],webSocket:[`wss://evm-ws-testnet.sei-apis.com`]}},blockExplorers:{default:{name:`Seitrace`,url:`https://seitrace.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:98697651}},testnet:!0}),tk=R({id:11155111,name:`Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.drpc.org`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia.etherscan.io`,apiUrl:`https://api-sepolia.etherscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:751532},ensUniversalResolver:{address:`0xeeeeeeee14d718c2b47d9923deab1335e144eeee`,blockCreated:8928790}},testnet:!0});var nk=1;const rk=R({...z,id:360,name:`Shape`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.shape.network`]}},blockExplorers:{default:{name:`shapescan`,url:`https://shapescan.xyz`,apiUrl:`https://shapescan.xyz/api`}},contracts:{...z.contracts,l2OutputOracle:{[nk]:{address:`0x6Ef8c69CfE4635d866e3E02732068022c06e724D`,blockCreated:20369940}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1},portal:{[nk]:{address:`0xEB06fFa16011B5628BaB98E29776361c83741dd3`,blockCreated:20369933}},l1StandardBridge:{[nk]:{address:`0x62Edd5f4930Ea92dCa3fB81689bDD9b9d076b57B`,blockCreated:20369935}}},sourceId:nk});var ik=11155111;const ak=R({...z,id:11011,name:`Shape Sepolia Testnet`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.shape.network`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer-sepolia.shape.network/`,apiUrl:`https://explorer-sepolia.shape.network/api/v2`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1}},testnet:!0,sourceId:ik}),ok=R({id:8118,name:`Shardeum`,nativeCurrency:{name:`Shardeum`,symbol:`SHM`,decimals:18},rpcUrls:{default:{http:[`https://api.shardeum.org`]}},blockExplorers:{default:{name:`Shardeum Explorer`,url:`https://explorer.shardeum.org`}},testnet:!1}),sk=R({id:8082,name:`Shardeum Sphinx`,nativeCurrency:{name:`SHARDEUM`,symbol:`SHM`,decimals:18},rpcUrls:{default:{http:[`https://sphinx.shardeum.org`]}},blockExplorers:{default:{name:`Shardeum Explorer`,url:`https://explorer-sphinx.shardeum.org`}},testnet:!0}),ck=R({id:109,name:`Shibarium`,network:`shibarium`,nativeCurrency:{name:`Bone`,symbol:`BONE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.shibrpc.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://shibariumscan.io`}},contracts:{multicall3:{address:`0x864Bf681ADD6052395188A89101A1B37d3B4C961`,blockCreated:265900}}}),lk=R({id:157,name:`Puppynet Shibarium`,nativeCurrency:{decimals:18,name:`Bone`,symbol:`BONE`},rpcUrls:{default:{http:[`https://puppynet.shibrpc.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://puppyscan.shib.io`,apiUrl:`https://puppyscan.shib.io/api`}},contracts:{multicall3:{address:`0xA4029b74FBA366c926eDFA7Dd10B21C621170a4c`,blockCreated:3035769}},testnet:!0}),uk=R({id:336,name:`Shiden`,nativeCurrency:{decimals:18,name:`SDN`,symbol:`SDN`},rpcUrls:{default:{http:[`https://shiden.public.blastapi.io`],webSocket:[`wss://shiden-rpc.dwellir.com`]}},blockExplorers:{default:{name:`Shiden Scan`,url:`https://shiden.subscan.io`}},testnet:!1}),dk=R({id:148,name:`Shimmer`,network:`shimmer`,nativeCurrency:{decimals:18,name:`Shimmer`,symbol:`SMR`},rpcUrls:{default:{http:[`https://json-rpc.evm.shimmer.network`]}},blockExplorers:{default:{name:`Shimmer Network Explorer`,url:`https://explorer.evm.shimmer.network`,apiUrl:`https://explorer.evm.shimmer.network/api`}}}),fk=R({id:1073,name:`Shimmer Testnet`,network:`shimmer-testnet`,nativeCurrency:{decimals:18,name:`Shimmer`,symbol:`SMR`},rpcUrls:{default:{http:[`https://json-rpc.evm.testnet.shimmer.network`]}},blockExplorers:{default:{name:`Shimmer Network Explorer`,url:`https://explorer.evm.testnet.shimmer.network`,apiUrl:`https://explorer.evm.testnet.shimmer.network/api`}},testnet:!0}),pk=R({id:97453,name:`Sidra Chain`,nativeCurrency:{decimals:18,name:`Sidra Digital Asset`,symbol:`SDA`},rpcUrls:{default:{http:[`https://node.sidrachain.com`]}},blockExplorers:{default:{name:`Sidra Chain Explorer`,url:`https://ledger.sidrachain.com`}}}),mk=R({id:2355,name:`Silicon zkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.silicon.network`,`https://silicon-mainnet.nodeinfra.com`]}},blockExplorers:{default:{name:`SiliconScope`,url:`https://scope.silicon.network`}}}),hk=R({id:1722641160,name:`Silicon Sepolia zkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-sepolia.silicon.network`,`https://silicon-testnet.nodeinfra.com`]}},blockExplorers:{default:{name:`SiliconSepoliaScope`,url:`https://scope-sepolia.silicon.network`}},testnet:!0}),gk=R({id:98,name:`Six Protocol`,nativeCurrency:{decimals:18,name:`SIX`,symbol:`SIX`},rpcUrls:{default:{http:[`https://sixnet-rpc-evm.sixprotocol.net`]}},blockExplorers:{default:{name:`Six Protocol Scan`,url:`https://sixscan.io/sixnet`}},testnet:!1}),_k=R({id:391845894,name:`SKALE | Block Brawlers`,nativeCurrency:{name:`BRAWL`,symbol:`BRAWL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/frayed-decent-antares`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/frayed-decent-antares`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://frayed-decent-antares.explorer.mainnet.skalenodes.com`}},contracts:{}}),vk=R({id:1564830818,name:`SKALE Calypso Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/honorable-steel-rasalhague`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/honorable-steel-rasalhague`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://honorable-steel-rasalhague.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3107626}}}),yk=R({id:974399131,name:`SKALE Calypso Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/giant-half-dual-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/giant-half-dual-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://giant-half-dual-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:103220}},testnet:!0}),bk=R({id:1026062157,name:`SKALE | CryptoBlades`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/affectionate-immediate-pollux`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/affectionate-immediate-pollux`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://affectionate-immediate-pollux.explorer.mainnet.skalenodes.com`}},contracts:{}}),xk=R({id:1032942172,name:`SKALE | Crypto Colosseum`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/haunting-devoted-deneb`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/haunting-devoted-deneb`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://haunting-devoted-deneb.explorer.mainnet.skalenodes.com`}},contracts:{}}),Sk=R({id:2046399126,name:`SKALE Europa Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/elated-tan-skat`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/elated-tan-skat`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://elated-tan-skat.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3113495}}}),Ck=R({id:1444673419,name:`SKALE Europa Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/juicy-low-small-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/juicy-low-small-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://juicy-low-small-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:110858}},testnet:!0}),wk=R({id:2139927552,name:`Exorde Network`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/light-vast-diphda`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/light-vast-diphda`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://light-vast-diphda.explorer.mainnet.skalenodes.com`}},contracts:{}}),Tk=R({id:1273227453,name:`SKALE | Human Protocol`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/wan-red-ain`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/wan-red-ain`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://wan-red-ain.explorer.mainnet.skalenodes.com`}},contracts:{}}),Ek=R({id:1482601649,name:`SKALE Nebula Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/green-giddy-denebola`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/green-giddy-denebola`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://green-giddy-denebola.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2372986}}}),Dk=R({id:37084624,name:`SKALE Nebula Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/lanky-ill-funny-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/lanky-ill-funny-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://lanky-ill-funny-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:105141}},testnet:!0}),Ok=R({id:278611351,name:`SKALE | Razor Network`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/turbulent-unique-scheat`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/turbulent-unique-scheat`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://turbulent-unique-scheat.explorer.mainnet.skalenodes.com`}},contracts:{}}),kk=R({id:1350216234,name:`SKALE Titan Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/parallel-stormy-spica`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/parallel-stormy-spica`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://parallel-stormy-spica.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2076458}}}),Ak=R({id:1020352220,name:`SKALE Titan Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/aware-fake-trim-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/aware-fake-trim-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://aware-fake-trim-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:104072}},testnet:!0}),jk=R({id:984123,name:`Forma Sketchpad`,network:`sketchpad`,nativeCurrency:{symbol:`TIA`,name:`TIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.sketchpad-1.forma.art`],webSocket:[`wss://ws.sketchpad-1.forma.art`]}},blockExplorers:{default:{name:`Sketchpad Explorer`,url:`https://explorer.sketchpad-1.forma.art`}},testnet:!0});var Mk=1;const Nk=R({...z,id:2192,network:`snaxchain-mainnet`,name:`SnaxChain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.snaxchain.io`]}},blockExplorers:{default:{name:`Snax Explorer`,url:`https://explorer.snaxchain.io`,apiUrl:`https://explorer.snaxchain.io/api`}},contracts:{...z.contracts,disputeGameFactory:{[Mk]:{address:`0x472562Fcf26D6b2793f8E0b0fB660ba0E5e08A46`}},l2OutputOracle:{[Mk]:{address:`0x2172e492Fc807F5d5645D0E3543f139ECF539294`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[Mk]:{address:`0x79f446D024d74D0Bb6E699C131c703463c5D65E9`}},l1StandardBridge:{[Mk]:{address:`0x6534Bdb6b5c060d3e6aa833433333135eFE8E0aA`}}},sourceId:Mk});var Pk=11155111;const Fk=R({...z,id:13001,network:`snaxchain-testnet`,name:`SnaxChain Testnet`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.snaxchain.io`]}},blockExplorers:{default:{name:`Snax Explorer`,url:`https://testnet-explorer.snaxchain.io`,apiUrl:`https://testnet-explorer.snaxchain.io/api`}},contracts:{...z.contracts,disputeGameFactory:{[Pk]:{address:`0x206a75d89d45F146C54020F132FF93bEDD09f55E`}},l2OutputOracle:{[Pk]:{address:`0x60e3A368a4cdCEf85ffB964e372726F56A46221e`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[Pk]:{address:`0xb5afdd0E8dDF081Ef90e8A3e0c7b5798e66E954E`}},l1StandardBridge:{[Pk]:{address:`0xbd37E1a59D4C00C9A46F75018dffd84061bC5f74`}}},testnet:!0,sourceId:Pk}),Ik=R({id:50312,name:`Somnia Testnet`,nativeCurrency:{name:`STT`,symbol:`STT`,decimals:18},rpcUrls:{default:{http:[`https://dream-rpc.somnia.network`]}},blockExplorers:{default:{name:`Somnia Testnet Explorer`,url:`https://shannon-explorer.somnia.network/`,apiUrl:`https://shannon-explorer.somnia.network/api`}},contracts:{multicall3:{address:`0x841b8199E6d3Db3C6f264f6C2bd8848b3cA64223`,blockCreated:71314235}},testnet:!0});var Lk=1;const Rk=R({...z,id:1868,name:`Soneium Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.soneium.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://soneium.blockscout.com`,apiUrl:`https://soneium.blockscout.com/api`}},contracts:{...z.contracts,disputeGameFactory:{[Lk]:{address:`0x512a3d2c7a43bd9261d2b8e8c9c70d4bd4d503c0`}},l2OutputOracle:{[Lk]:{address:`0x0000000000000000000000000000000000000000`}},portal:{[Lk]:{address:`0x88e529a6ccd302c948689cd5156c83d4614fae92`,blockCreated:7061266}},l1StandardBridge:{[Lk]:{address:`0xeb9bf100225c214efc3e7c651ebbadcf85177607`,blockCreated:7061266}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}},sourceId:Lk});var zk=11155111;const Bk=R({...z,id:1946,name:`Soneium Minato Testnet`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.minato.soneium.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://soneium-minato.blockscout.com`,apiUrl:`https://soneium-minato.blockscout.com/api`}},contracts:{...z.contracts,disputeGameFactory:{[zk]:{address:`0xB3Ad2c38E6e0640d7ce6aA952AB3A60E81bf7a01`}},l2OutputOracle:{[zk]:{address:`0x710e5286C746eC38beeB7538d0146f60D27be343`}},portal:{[zk]:{address:`0x65ea1489741A5D72fFdD8e6485B216bBdcC15Af3`,blockCreated:6466136}},l1StandardBridge:{[zk]:{address:`0x5f5a404A5edabcDD80DB05E8e54A78c9EBF000C2`,blockCreated:6466136}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}},testnet:!0,sourceId:zk}),Vk=R({id:19,name:`Songbird Canary-Network`,nativeCurrency:{decimals:18,name:`Songbird`,symbol:`SGB`},rpcUrls:{default:{http:[`https://songbird-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Songbird Explorer`,url:`https://songbird-explorer.flare.network`,apiUrl:`https://songbird-explorer.flare.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:13382504}}}),Hk=R({id:16,name:`Songbird Testnet Coston`,nativeCurrency:{decimals:18,name:`Coston Flare`,symbol:`CFLR`},rpcUrls:{default:{http:[`https://coston-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Coston Explorer`,url:`https://coston-explorer.flare.network`,apiUrl:`https://coston-explorer.flare.network/api`}},testnet:!0}),Uk=R({id:146,name:`Sonic`,blockTime:630,nativeCurrency:{decimals:18,name:`Sonic`,symbol:`S`},rpcUrls:{default:{http:[`https://rpc.soniclabs.com`]}},blockExplorers:{default:{name:`Sonic Explorer`,url:`https://sonicscan.org`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:60}},testnet:!1}),Wk=R({id:57054,name:`Sonic Blaze Testnet`,nativeCurrency:{decimals:18,name:`Sonic`,symbol:`S`},rpcUrls:{default:{http:[`https://rpc.blaze.soniclabs.com`]}},blockExplorers:{default:{name:`Sonic Blaze Testnet Explorer`,url:`https://testnet.sonicscan.org`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1100}},testnet:!0}),Gk=R({id:64165,name:`Sonic Testnet`,nativeCurrency:{decimals:18,name:`Sonic`,symbol:`S`},rpcUrls:{default:{http:[`https://rpc.testnet.soniclabs.com`]}},blockExplorers:{default:{name:`Sonic Testnet Explorer`,url:`https://testnet.soniclabs.com/`}},testnet:!0}),Kk=R({...ay,id:50104,name:`Sophon`,nativeCurrency:{decimals:18,name:`Sophon`,symbol:`SOPH`},rpcUrls:{default:{http:[`https://rpc.sophon.xyz`],webSocket:[`wss://rpc.sophon.xyz/ws`]}},blockExplorers:{default:{name:`Sophon Block Explorer`,url:`https://explorer.sophon.xyz`}},contracts:{multicall3:{address:`0x5f4867441d2416cA88B1b3fd38f21811680CD2C8`,blockCreated:116}},testnet:!1}),qk=R({...ay,id:531050104,name:`Sophon Testnet`,nativeCurrency:{decimals:18,name:`Sophon`,symbol:`SOPH`},rpcUrls:{default:{http:[`https://rpc.testnet.sophon.xyz`],webSocket:[`wss://rpc.testnet.sophon.xyz/ws`]}},blockExplorers:{default:{name:`Sophon Block Explorer`,url:`https://explorer.testnet.sophon.xyz`}},contracts:{multicall3:{address:`0x83c04d112adedA2C6D9037bb6ecb42E7f0b108Af`,blockCreated:15642}},testnet:!0}),Jk=R({id:100021,name:`Sova`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.sova.io`]}},blockExplorers:{default:{name:`Sova Block Explorer`,url:`hhttps://explorer.sova.io`}},testnet:!1}),Yk=R({id:120893,name:`Sova Network Sepolia`,nativeCurrency:{decimals:18,name:`Sepolia Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.testnet.sova.io`]}},blockExplorers:{default:{name:`Sova Sepolia Explorer`,url:`https://explorer.testnet.sova.io`}},testnet:!0}),Xk=R({id:88882,name:`Chiliz Spicy Testnet`,network:`chiliz-spicy-Testnet`,nativeCurrency:{decimals:18,name:`CHZ`,symbol:`CHZ`},rpcUrls:{default:{http:[`https://spicy-rpc.chiliz.com`,`https://chiliz-spicy-rpc.publicnode.com`],webSocket:[`wss://spicy-rpc-ws.chiliz.com`,`wss://chiliz-spicy-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Chiliz Explorer`,url:`http://spicy-explorer.chiliz.com`,apiUrl:`http://spicy-explorer.chiliz.com/api`}},testnet:!0}),Zk=R({...LT,id:1660990954,name:`Status Network Sepolia`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://public.sepolia.rpc.status.network`],webSocket:[`wss://public.sepolia.rpc.status.network/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepoliascan.status.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1578364}},testnet:!0}),Qk=R({id:1234,name:`Step Network`,nativeCurrency:{name:`FITFI`,symbol:`FITFI`,decimals:18},rpcUrls:{default:{http:[`https://rpc.step.network`]}},blockExplorers:{default:{name:`Step Scan`,url:`https://stepscan.io`}},testnet:!1}),$k=R({id:1514,name:`Story`,nativeCurrency:{decimals:18,name:`IP Token`,symbol:`IP`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:340998},ensRegistry:{address:`0x5dc881dda4e4a8d312be3544ad13118d1a04cb17`,blockCreated:648924},ensUniversalResolver:{address:`0xddfb18888a9466688235887dec2a10c4f5effee9`,blockCreated:649114}},rpcUrls:{default:{http:[`https://mainnet.storyrpc.io`]}},blockExplorers:{default:{name:`Story explorer`,url:`https://storyscan.io`,apiUrl:`https://storyscan.io/api/v2`}},ensTlds:[`.ip`],testnet:!1}),eA=R({id:1315,name:`Story Aeneid`,network:`story-aeneid`,nativeCurrency:{decimals:18,name:`IP`,symbol:`IP`},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1792},ensRegistry:{address:`0x5dC881dDA4e4a8d312be3544AD13118D1a04Cb17`,blockCreated:1322033},ensUniversalResolver:{address:`0x6D3B3F99177FB2A5de7F9E928a9BD807bF7b5BAD`,blockCreated:1322097}},rpcUrls:{default:{http:[`https://aeneid.storyrpc.io`]}},blockExplorers:{default:{name:`Story Aeneid Explorer`,url:`https://aeneid.storyscan.io`,apiUrl:`https://aeneid.storyscan.io/api/v2`}},ensTlds:[`.ip`],testnet:!0}),tA=R({id:1516,name:`Story Odyssey`,nativeCurrency:{decimals:18,name:`IP`,symbol:`IP`},rpcUrls:{default:{http:[`https://rpc.odyssey.storyrpc.io`]}},blockExplorers:{default:{name:`Story Odyssey Explorer`,url:`https://odyssey.storyscan.xyz`}},testnet:!0}),nA=R({id:1513,name:`Story Testnet`,nativeCurrency:{decimals:18,name:`IP`,symbol:`IP`},rpcUrls:{default:{http:[`https://testnet.storyrpc.io`]}},blockExplorers:{default:{name:`Story Testnet Explorer`,url:`https://testnet.storyscan.xyz`}},testnet:!0}),rA=R({id:105105,name:`Stratis Mainnet`,network:`stratis`,nativeCurrency:{name:`Stratis`,symbol:`STRAX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.stratisevm.com`]}},blockExplorers:{default:{name:`Stratis Explorer`,url:`https://explorer.stratisevm.com`}}}),iA=R({id:8866,name:`SuperLumio`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.lumio.io`]}},blockExplorers:{default:{name:`Lumio explorer`,url:`https://explorer.lumio.io`}},testnet:!1}),aA=R({id:55244,name:`Superposition`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.superposition.so`]}},blockExplorers:{default:{name:`Superposition Explorer`,url:`https://explorer.superposition.so`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:39}},testnet:!1});var oA=1;const sA=R({...z,id:5330,name:`Superseed`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.superseed.xyz`]}},blockExplorers:{default:{name:`Superseed Explorer`,url:`https://explorer.superseed.xyz`,apiUrl:`https://explorer.superseed.xyz/api/v2`}},contracts:{...z.contracts,disputeGameFactory:{[oA]:{address:`0x8b097CF1f9BbD9cbFD0DD561858a1FCbC8857Be0`,blockCreated:20737481}},l2OutputOracle:{[oA]:{address:`0x693A0F8854F458D282DE3C5b69E8eE5EEE8aA949`,blockCreated:20737481}},portal:{[oA]:{address:`0x2c2150aa5c75A24fB93d4fD2F2a895D618054f07`,blockCreated:20737481}},l1StandardBridge:{[oA]:{address:`0x8b0576E39F1233679109F9b40cFcC2a7E0901Ede`,blockCreated:20737481}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},sourceId:oA});var cA=11155111;const lA=R({...z,id:53302,name:`Superseed Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.superseed.xyz`]}},blockExplorers:{default:{name:`Superseed Sepolia Explorer`,url:`https://sepolia-explorer.superseed.xyz`,apiUrl:`https://sepolia-explorer.superseed.xyz/api/v2`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`},portal:{[cA]:{address:`0x7A0db8C51432d2C3eb4e8f360a2EeB26FF2809fB`,blockCreated:5523438}},l1StandardBridge:{[cA]:{address:`0x2B227A603fAAdB3De0ED050b63ADD232B5f2c28C`,blockCreated:5523442}}},testnet:!0,sourceId:cA}),uA=R({id:763375,name:`Surge Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://l2-rpc.hoodi.surge.wtf`],webSocket:[`wss://l2-ws.hoodi.surge.wtf`]}},blockExplorers:{default:{name:`Surge Testnet Blockscout`,url:`https://explorer.hoodi.surge.wtf`}},testnet:!0}),dA=R({id:254,name:`Swan Chain Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.swanchain.org`]}},blockExplorers:{default:{name:`Swan Explorer`,url:`https://swanscan.io`}},testnet:!1}),fA=R({id:20241133,name:`Swan Proxima Testnet`,nativeCurrency:{name:`Swan Ether`,symbol:`sETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-proxima.swanchain.io`]}},blockExplorers:{default:{name:`Swan Explorer`,url:`https://proxima-explorer.swanchain.io`}},testnet:!0}),pA=R({id:2024,name:`Swan Saturn Testnet`,nativeCurrency:{name:`Swan Ether`,symbol:`sETH`,decimals:18},rpcUrls:{default:{http:[`https://saturn-rpc.swanchain.io`]}},blockExplorers:{default:{name:`Swan Explorer`,url:`https://saturn-explorer.swanchain.io`}},testnet:!0}),mA=R({...z,id:1923,name:`Swellchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://swell-mainnet.alt.technology`]}},blockExplorers:{default:{name:`Swell Explorer`,url:`https://explorer.swellnetwork.io`,apiUrl:`https://explorer.swellnetwork.io/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}}}),hA=R({...z,id:1924,name:`Swellchain Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://swell-testnet.alt.technology`]}},blockExplorers:{default:{name:`Swellchain Testnet Explorer`,url:`https://swell-testnet-explorer.alt.technology`,apiUrl:`https://swell-testnet-explorer.alt.technology/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}}}),gA=R({id:94,name:`SwissDLT Mainnet`,nativeCurrency:{decimals:18,name:`BCTS`,symbol:`BCTS`},rpcUrls:{default:{http:[`https://rpc.swissdlt.ch`]}},blockExplorers:{default:{name:`SwissDLT Explorer`,url:`https://explorer.swissdlt.ch`}},testnet:!1}),_A=R({id:57,name:`Syscoin Mainnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc.syscoin.org`],webSocket:[`wss://rpc.syscoin.org/wss`]}},blockExplorers:{default:{name:`SyscoinExplorer`,url:`https://explorer.syscoin.org`,apiUrl:`https://explorer.syscoin.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:287139}}}),vA=R({id:5700,name:`Syscoin Tanenbaum Testnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc.tanenbaum.io`],webSocket:[`wss://rpc.tanenbaum.io/wss`]}},blockExplorers:{default:{name:`SyscoinTestnetExplorer`,url:`https://tanenbaum.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:271288}}}),yA=R({id:239,name:`TAC`,nativeCurrency:{name:`TAC`,symbol:`TAC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.ankr.com/tac`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://tac.blockscout.com`,apiUrl:`https://tac.blockscout.com/api`},native:{name:`TAC Explorer`,url:`https://explorer.tac.build`,apiUrl:`https://explorer.tac.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}}}),bA=R({id:2391,name:`TAC SPB Testnet`,nativeCurrency:{name:`TAC`,symbol:`TAC`,decimals:18},rpcUrls:{default:{http:[`https://spb.rpc.tac.build`]}},blockExplorers:{default:{name:`TAC`,url:`https://spb.explorer.tac.build`,apiUrl:`https://spb.explorer.tac.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:471429}},testnet:!0}),xA=R({id:167e3,name:`Taiko Mainnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.mainnet.taiko.xyz`],webSocket:[`wss://ws.mainnet.taiko.xyz`]}},blockExplorers:{default:{name:`Taikoscan`,url:`https://taikoscan.io`,apiUrl:`https://api.taikoscan.io/api`}},contracts:{multicall3:{address:`0xcb2436774C3e191c85056d248EF4260ce5f27A9D`}}}),SA=R({id:167009,name:`Taiko Hekla L2`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hekla.taiko.xyz`]}},blockExplorers:{default:{name:`Taikoscan`,url:`https://hekla.taikoscan.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:59757}},testnet:!0}),CA=R({id:167007,name:`Taiko Jolnir (Alpha-5 Testnet)`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.jolnir.taiko.xyz`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.jolnir.taiko.xyz`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:732706}},testnet:!0}),wA=R({id:167008,name:`Taiko Katla (Alpha-6 Testnet)`,network:`tko-katla`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.katla.taiko.xyz`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.katla.taiko.xyz`}}}),TA=R({id:167005,name:`Taiko (Alpha-3 Testnet)`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.test.taiko.xyz`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.test.taiko.xyz`}}}),EA=R({id:841,name:`Taraxa Mainnet`,nativeCurrency:{name:`Tara`,symbol:`TARA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.taraxa.io`]}},blockExplorers:{default:{name:`Taraxa Explorer`,url:`https://explorer.mainnet.taraxa.io`}}}),DA=R({id:842,name:`Taraxa Testnet`,nativeCurrency:{name:`Tara`,symbol:`TARA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.taraxa.io`]}},blockExplorers:{default:{name:`Taraxa Explorer`,url:`https://explorer.testnet.taraxa.io`}},testnet:!0}),OA=R({id:10218,name:`Tea Sepolia`,nativeCurrency:{name:`Sepolia Tea`,symbol:`TEA`,decimals:18},rpcUrls:{default:{http:[`https://tea-sepolia.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Tea Sepolia Explorer`,url:`https://sepolia.tea.xyz`}},testnet:!0}),kA=R({id:2017,name:`Telcoin Adiri Testnet`,nativeCurrency:{name:`Telcoin`,symbol:`TEL`,decimals:18},rpcUrls:{default:{http:[`https://rpc.telcoin.network`]}},blockExplorers:{default:{name:`telscan`,url:`https://telscan.io`}},testnet:!0}),AA=R({id:40,name:`Telos`,nativeCurrency:{decimals:18,name:`Telos`,symbol:`TLOS`},rpcUrls:{default:{http:[`https://rpc.telos.net`]}},blockExplorers:{default:{name:`Teloscan`,url:`https://www.teloscan.io/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:246530709}}}),jA=R({id:41,name:`Telos`,nativeCurrency:{decimals:18,name:`Telos`,symbol:`TLOS`},rpcUrls:{default:{http:[`https://rpc.testnet.telos.net`]}},blockExplorers:{default:{name:`Teloscan (testnet)`,url:`https://testnet.teloscan.io/`}},testnet:!0}),MA=R({id:1559,name:`Tenet`,network:`tenet-mainnet`,nativeCurrency:{name:`TENET`,symbol:`TENET`,decimals:18},rpcUrls:{default:{http:[`https://rpc.tenet.org`]}},blockExplorers:{default:{name:`TenetScan Mainnet`,url:`https://tenetscan.io`,apiUrl:`https://tenetscan.io/api`}},testnet:!1}),NA=R({id:752025,name:`Ternoa`,nativeCurrency:{name:`Capsule Coin`,symbol:`CAPS`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.zkevm.ternoa.network`]}},blockExplorers:{default:{name:`Ternoa Explorer`,url:`https://explorer-mainnet.zkevm.ternoa.network`}},testnet:!1}),PA=R({id:7,name:`ThaiChain`,nativeCurrency:{name:`TCH`,symbol:`TCH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.thaichain.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp.thaichain.org`,apiUrl:`https://exp.thaichain.org/api`}},contracts:{multicall3:{address:`0x0DaD6130e832c21719C5CE3bae93454E16A84826`,blockCreated:4806386}},testnet:!1}),FA=R({id:8428,name:`THAT Mainnet`,nativeCurrency:{name:`THAT`,symbol:`THAT`,decimals:18},rpcUrls:{default:{http:[`https://api.thatchain.io/mainnet`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://that.blockscout.com`}},testnet:!1}),IA=R({id:361,name:`Theta Mainnet`,nativeCurrency:{name:`TFUEL`,symbol:`TFUEL`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-api.thetatoken.org/rpc`]}},blockExplorers:{default:{name:`Theta Explorer`,url:`https://explorer.thetatoken.org`}},testnet:!1}),LA=R({id:365,name:`Theta Testnet`,nativeCurrency:{name:`TFUEL`,symbol:`TFUEL`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-api-testnet.thetatoken.org/rpc`]}},blockExplorers:{default:{name:`Theta Explorer`,url:`https://testnet-explorer.thetatoken.org`}},testnet:!0}),RA=R({id:108,name:`ThunderCore Mainnet`,nativeCurrency:{name:`TT`,symbol:`TT`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.thundercore.com`]}},blockExplorers:{default:{name:`ThunderCore Explorer`,url:`https://explorer-mainnet.thundercore.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},testnet:!1}),zA=R({id:997,name:`5ireChain Thunder Testnet`,nativeCurrency:{name:`5ire Token`,symbol:`5IRE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.5ire.network`]}},blockExplorers:{default:{name:`5ireChain Thunder Explorer`,url:`https://testnet.5irescan.io/`}},testnet:!0}),BA=R({id:62092,name:`TikTrix Testnet`,nativeCurrency:{name:`tTTX`,symbol:`tTTX`,decimals:18},rpcUrls:{default:{http:[`https://tiktrix-rpc.xyz`]}},blockExplorers:{default:{name:`TikTrix Testnet Explorer`,url:`https://tiktrix.xyz`}},testnet:!0}),VA=R({id:6969,name:`Tomb Mainnet`,nativeCurrency:{name:`TOMB`,symbol:`TOMB`,decimals:18},rpcUrls:{default:{http:[`https://rpc.tombchain.com`]}},blockExplorers:{default:{name:`Tomb Explorer`,url:`https://tombscout.com`}},testnet:!1}),HA=R({...ay,id:61166,name:`Treasure`,nativeCurrency:{decimals:18,name:`MAGIC`,symbol:`MAGIC`},rpcUrls:{default:{http:[`https://rpc.treasure.lol`],webSocket:[`wss://rpc.treasure.lol/ws`]}},blockExplorers:{default:{name:`Treasure Block Explorer`,url:`https://treasurescan.io`}},contracts:{multicall3:{address:`0x2e29fe39496a56856D8698bD43e1dF4D0CE6266a`,blockCreated:101}},testnet:!1}),UA=R({...ay,id:978658,name:`Treasure Topaz Testnet`,nativeCurrency:{decimals:18,name:`MAGIC`,symbol:`MAGIC`},rpcUrls:{default:{http:[`https://rpc.topaz.treasure.lol`],webSocket:[`wss://rpc.topaz.treasure.lol/ws`]}},blockExplorers:{default:{name:`Treasure Topaz Block Explorer`,url:`https://topaz.treasurescan.io`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`,blockCreated:108112}},testnet:!0}),WA=R({id:728126428,name:`Tron`,nativeCurrency:{name:`TRON`,symbol:`TRX`,decimals:6},rpcUrls:{default:{http:[`https://api.trongrid.io/jsonrpc`]}},blockExplorers:{default:{name:`Tronscan`,url:`https://tronscan.org`,apiUrl:`https://apilist.tronscanapi.com/api`}}}),GA=R({id:3448148188,name:`Tron Nile`,nativeCurrency:{name:`TRON`,symbol:`TRX`,decimals:6},rpcUrls:{default:{http:[`https://nile.trongrid.io/jsonrpc`]}},blockExplorers:{default:{name:`Tronscan`,url:`https://nile.tronscan.org`}},testnet:!0}),KA=R({id:2494104990,name:`Tron Shasta`,nativeCurrency:{name:`TRON`,symbol:`TRX`,decimals:6},rpcUrls:{default:{http:[`https://api.shasta.trongrid.io/jsonrpc`]}},blockExplorers:{default:{name:`Tronscan`,url:`https://shasta.tronscan.org`}},testnet:!0}),qA=R({id:8,name:`Ubiq Mainnet`,nativeCurrency:{name:`UBQ`,symbol:`UBQ`,decimals:18},rpcUrls:{default:{http:[`https://pyrus2.ubiqscan.io`]}},blockExplorers:{default:{name:`Ubiq Scan`,url:`https://ubiqscan.io`}},testnet:!1}),JA=R({id:19991,name:`Ultra EVM`,nativeCurrency:{decimals:18,name:`Ultra Token`,symbol:`UOS`},rpcUrls:{default:{http:[`https://evm.ultra.eosusa.io`]}},blockExplorers:{default:{name:`Ultra EVM Explorer`,url:`https://evmexplorer.ultra.io`}}}),YA=R({id:18881,name:`Ultra EVM Testnet`,nativeCurrency:{decimals:18,name:`Ultra Token`,symbol:`UOS`},rpcUrls:{default:{http:[`https://evm.test.ultra.eosusa.io`]}},blockExplorers:{default:{name:`Ultra EVM Testnet Explorer`,url:`https://evmexplorer.testnet.ultra.io`}},testnet:!0}),XA=R({id:1231,name:`Ultron Mainnet`,nativeCurrency:{name:`ULX`,symbol:`ULX`,decimals:18},rpcUrls:{default:{http:[`https://ultron-rpc.net`]}},blockExplorers:{default:{name:`Ultron Scan`,url:`https://ulxscan.com`}},testnet:!1}),ZA=R({id:1230,name:`Ultron Testnet`,nativeCurrency:{name:`ULX`,symbol:`ULX`,decimals:18},rpcUrls:{default:{http:[`https://ultron-dev.io`]}},blockExplorers:{default:{name:`Ultron Scan`,url:`https://explorer.ultron-dev.io`}},testnet:!0});var QA=1;const $A=R({...z,id:130,name:`Unichain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:1e3,rpcUrls:{default:{http:[`https://mainnet.unichain.org/`]}},blockExplorers:{default:{name:`Uniscan`,url:`https://uniscan.xyz`,apiUrl:`https://api.uniscan.xyz/api`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},disputeGameFactory:{[QA]:{address:`0x2F12d621a16e2d3285929C9996f478508951dFe4`}},portal:{[QA]:{address:`0x0bd48f6B86a26D3a217d0Fa6FfE2B491B956A7a2`}},l1StandardBridge:{[QA]:{address:`0x81014F44b0a345033bB2b3B21C7a1A308B35fEeA`}}},sourceId:QA});var ej=11155111;const tj=R({...z,id:1301,name:`Unichain Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:1e3,rpcUrls:{default:{http:[`https://sepolia.unichain.org`]}},blockExplorers:{default:{name:`Uniscan`,url:`https://sepolia.uniscan.xyz`,apiUrl:`https://api-sepolia.uniscan.xyz/api`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},portal:{[ej]:{address:`0x0d83dab629f0e0F9d36c0Cbc89B69a489f0751bD`}},l1StandardBridge:{[ej]:{address:`0xea58fcA6849d79EAd1f26608855c2D6407d54Ce2`}},disputeGameFactory:{[ej]:{address:`0xeff73e5aa3B9AEC32c659Aa3E00444d20a84394b`}}},testnet:!0,sourceId:ej}),nj=R({id:8880,name:`Unique Mainnet`,nativeCurrency:{decimals:18,name:`UNQ`,symbol:`UNQ`},rpcUrls:{default:{http:[`https://rpc.unique.network`]}},blockExplorers:{default:{name:`Unique Subscan`,url:`https://unique.subscan.io/`}}}),rj=R({id:8882,name:`Opal Testnet`,nativeCurrency:{decimals:18,name:`OPL`,symbol:`OPL`},rpcUrls:{default:{http:[`https://rpc-opal.unique.network`]}},blockExplorers:{default:{name:`Opal Subscan`,url:`https://opal.subscan.io/`}},testnet:!0}),ij=R({id:8881,name:`Quartz Mainnet`,nativeCurrency:{decimals:18,name:`QTZ`,symbol:`QTZ`},rpcUrls:{default:{http:[`https://rpc-quartz.unique.network`]}},blockExplorers:{default:{name:`Quartz Subscan`,url:`https://quartz.subscan.io/`}}}),aj=R({id:18233,name:`Unreal`,nativeCurrency:{name:`reETH`,decimals:18,symbol:`reETH`},rpcUrls:{default:{http:[`https://rpc.unreal-orbit.gelato.digital`]}},blockExplorers:{default:{name:`Unreal Explorer`,url:`https://unreal.blockscout.com`,apiUrl:`https://unreal.blockscout.com/api/v2`}},testnet:!0,contracts:{multicall3:{address:`0x8b6B0e60D8CD84898Ea8b981065A12F876eA5677`,blockCreated:1745}}}),oj=R({id:1480,name:`Vana`,blockTime:6e3,nativeCurrency:{decimals:18,name:`Vana`,symbol:`VANA`},rpcUrls:{default:{http:[`https://rpc.vana.org/`]}},blockExplorers:{default:{name:`Vana Block Explorer`,url:`https://vanascan.io`,apiUrl:`https://vanascan.io/api`}},contracts:{multicall3:{address:`0xD8d2dFca27E8797fd779F8547166A2d3B29d360E`,blockCreated:716763}}}),sj=R({id:14800,name:`Vana Moksha Testnet`,blockTime:6e3,nativeCurrency:{decimals:18,name:`Vana`,symbol:`VANA`},rpcUrls:{default:{http:[`https://rpc.moksha.vana.org`]}},blockExplorers:{default:{name:`Vana Moksha Testnet`,url:`https://moksha.vanascan.io`,apiUrl:`https://moksha.vanascan.io/api`}},contracts:{multicall3:{address:`0xD8d2dFca27E8797fd779F8547166A2d3B29d360E`,blockCreated:732283}},testnet:!0}),cj=R({id:2040,name:`Vanar Mainnet`,nativeCurrency:{name:`VANRY`,symbol:`VANRY`,decimals:18},rpcUrls:{default:{http:[`https://rpc.vanarchain.com`]}},blockExplorers:{default:{name:`Vanar Mainnet Explorer`,url:`https://explorer.vanarchain.com/`}},testnet:!1}),lj=R({id:100009,name:`Vechain`,nativeCurrency:{name:`VeChain`,symbol:`VET`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.vechain.org`]}},blockExplorers:{default:{name:`Vechain Explorer`,url:`https://explore.vechain.org`},vechainStats:{name:`Vechain Stats`,url:`https://vechainstats.com`}}}),uj=R({id:106,name:`Velas EVM Mainnet`,nativeCurrency:{name:`VLX`,symbol:`VLX`,decimals:18},rpcUrls:{default:{http:[`https://evmexplorer.velas.com/rpc`]}},blockExplorers:{default:{name:`Velas Explorer`,url:`https://evmexplorer.velas.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:55883577}},testnet:!1}),dj=R({id:88,name:`Viction`,nativeCurrency:{name:`Viction`,symbol:`VIC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.viction.xyz`]}},blockExplorers:{default:{name:`VIC Scan`,url:`https://vicscan.xyz`}},testnet:!1}),fj=R({id:89,name:`Viction Testnet`,nativeCurrency:{name:`Viction`,symbol:`VIC`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.viction.xyz`]}},blockExplorers:{default:{name:`VIC Scan`,url:`https://testnet.vicscan.xyz`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:12170179}},testnet:!0}),pj=R({id:888888,name:`Vision`,nativeCurrency:{name:`VISION`,symbol:`VS`,decimals:18},rpcUrls:{default:{http:[`https://infragrid.v.network/ethereum/compatible`]}},blockExplorers:{default:{name:`Vision Scan`,url:`https://visionscan.org`}},testnet:!1}),mj=R({id:666666,name:`Vision Testnet`,nativeCurrency:{name:`VISION`,symbol:`VS`,decimals:18},rpcUrls:{default:{http:[`https://vpioneer.infragrid.v.network/ethereum/compatible`]}},blockExplorers:{default:{name:`Vision Scan`,url:`https://visionscan.org/?chain=vpioneer`}},testnet:!0}),hj=R({id:888,name:`Wanchain`,nativeCurrency:{name:`WANCHAIN`,symbol:`WAN`,decimals:18},rpcUrls:{default:{http:[`https://gwan-ssl.wandevs.org:56891`,`https://gwan2-ssl.wandevs.org`]}},blockExplorers:{default:{name:`WanScan`,url:`https://wanscan.org`}},contracts:{multicall3:{address:`0xcDF6A1566e78EB4594c86Fe73Fcdc82429e97fbB`,blockCreated:25312390}}}),gj=R({id:999,name:`Wanchain Testnet`,nativeCurrency:{name:`WANCHAIN`,symbol:`WANt`,decimals:18},rpcUrls:{default:{http:[`https://gwan-ssl.wandevs.org:46891`]}},blockExplorers:{default:{name:`WanScanTest`,url:`https://wanscan.org`}},contracts:{multicall3:{address:`0x11c89bF4496c39FB80535Ffb4c92715839CC5324`,blockCreated:24743448}},testnet:!0}),_j=R({id:9496,name:`WeaveVM Alphanet`,nativeCurrency:{name:`Testnet WeaveVM`,symbol:`tWVM`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.wvm.dev`]}},blockExplorers:{default:{name:`WeaveVM Alphanet Explorer`,url:`https://explorer.wvm.dev`}},testnet:!0}),vj=R({id:1111,name:`WEMIX`,network:`wemix-mainnet`,nativeCurrency:{name:`WEMIX`,symbol:`WEMIX`,decimals:18},rpcUrls:{default:{http:[`https://api.wemix.com`]}},blockExplorers:{default:{name:`wemixExplorer`,url:`https://explorer.wemix.com`}}}),yj=R({id:1112,name:`WEMIX Testnet`,network:`wemix-testnet`,nativeCurrency:{name:`WEMIX`,symbol:`tWEMIX`,decimals:18},rpcUrls:{default:{http:[`https://api.test.wemix.com`]}},blockExplorers:{default:{name:`wemixExplorer`,url:`https://testnet.wemixscan.com`,apiUrl:`https://testnet.wemixscan.com/api`}},testnet:!0}),bj=R({id:420420421,name:`Westend Asset Hub`,nativeCurrency:{decimals:18,name:`Westies`,symbol:`WND`},rpcUrls:{default:{http:[`https://westend-asset-hub-eth-rpc.polkadot.io`]}},blockExplorers:{default:{name:`subscan`,url:`https://westend-asset-hub-eth-explorer.parity.io`}},testnet:!0}),xj=R({testnet:!1,name:`Whitechain`,blockExplorers:{default:{name:`Whitechain Explorer`,url:`https://explorer.whitechain.io`}},id:1875,rpcUrls:{default:{http:[`https://rpc.whitechain.io`]}},nativeCurrency:{decimals:18,name:`WhiteBIT Coin`,symbol:`WBT`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:25212237}}}),Sj=R({testnet:!0,name:`Whitechain Testnet`,blockExplorers:{default:{name:`Whitechain Explorer`,url:`https://testnet.whitechain.io`}},id:2625,rpcUrls:{default:{http:[`https://rpc-testnet.whitechain.io`]}},nativeCurrency:{decimals:18,name:`WhiteBIT Coin`,symbol:`WBT`}}),Cj=R({id:42070,name:`WMC Testnet`,nativeCurrency:{name:`WMTx`,symbol:`WMTx`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet-base.worldmobile.net`]}},blockExplorers:{default:{name:`WMC Explorer`,url:`https://explorer2-base-testnet.worldmobile.net`}},testnet:!0});var wj=1;const Tj=R({...z,id:480,name:`World Chain`,network:`worldchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://worldchain-mainnet.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Worldscan`,url:`https://worldscan.org`,apiUrl:`https://api.worldscan.org/api`},blockscout:{name:`Blockscout`,url:`https://worldchain-mainnet.explorer.alchemy.com`,apiUrl:`https://worldchain-mainnet.explorer.alchemy.com/api`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},disputeGameFactory:{[wj]:{address:`0x069c4c579671f8c120b1327a73217D01Ea2EC5ea`}},l2OutputOracle:{[wj]:{address:`0x19A6d1E9034596196295CF148509796978343c5D`}},portal:{[wj]:{address:`0xd5ec14a83B7d95BE1E2Ac12523e2dEE12Cbeea6C`}},l1StandardBridge:{[wj]:{address:`0x470458C91978D2d929704489Ad730DC3E3001113`}}},testnet:!1,sourceId:wj});var Ej=11155111;const Dj=R({...z,id:4801,name:`World Chain Sepolia`,network:`worldchain-sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://worldchain-sepolia.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Worldscan Sepolia`,url:`https://sepolia.worldscan.org`,apiUrl:`https://api-sepolia.worldscan.org/api`},blockscout:{name:`Blockscout`,url:`https://worldchain-sepolia.explorer.alchemy.com`,apiUrl:`https://worldchain-sepolia.explorer.alchemy.com/api`}},contracts:{...z.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},disputeGameFactory:{[Ej]:{address:`0x8Ec1111f67Dad6b6A93B3F42DfBC92D81c98449A`}},l2OutputOracle:{[Ej]:{address:`0xc8886f8BAb6Eaeb215aDB5f1c686BF699248300e`}},portal:{[Ej]:{address:`0xFf6EBa109271fe6d4237EeeD4bAb1dD9A77dD1A4`}},l1StandardBridge:{[Ej]:{address:`0xd7DF54b3989855eb66497301a4aAEc33Dbb3F8DE`}}},testnet:!0,sourceId:Ej}),Oj=R({id:103,name:`WorldLand Mainnet`,nativeCurrency:{decimals:18,name:`WLC`,symbol:`WLC`},rpcUrls:{default:{http:[`https://seoul.worldland.foundation`]}},blockExplorers:{default:{name:`WorldLand Scan`,url:`https://scan.worldland.foundation`}},testnet:!1}),kj=R({id:660279,name:`Xai Mainnet`,nativeCurrency:{name:`Xai`,symbol:`XAI`,decimals:18},rpcUrls:{default:{http:[`https://xai-chain.net/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.xai-chain.net`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:222549}},testnet:!1}),Aj=R({id:37714555429,name:`Xai Testnet`,nativeCurrency:{name:`sXai`,symbol:`sXAI`,decimals:18},rpcUrls:{default:{http:[`https://testnet-v2.xai-chain.net/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer-v2.xai-chain.net`}},testnet:!0}),jj=R({id:50,name:`XDC Network`,nativeCurrency:{decimals:18,name:`XDC`,symbol:`XDC`},rpcUrls:{default:{http:[`https://rpc.xdcrpc.com`]}},blockExplorers:{default:{name:`XDCScan`,url:`https://xdcscan.com`}},contracts:{multicall3:{address:`0x0B1795ccA8E4eC4df02346a082df54D437F8D9aF`,blockCreated:75884020}}}),Mj=R({id:51,name:`Apothem Network`,nativeCurrency:{decimals:18,name:`TXDC`,symbol:`TXDC`},rpcUrls:{default:{http:[`https://erpc.apothem.network`]}},blockExplorers:{default:{name:`XDCScan`,url:`https://testnet.xdcscan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:59765389}}}),Nj=R({id:196,name:`X Layer Mainnet`,nativeCurrency:{decimals:18,name:`OKB`,symbol:`OKB`},rpcUrls:{default:{http:[`https://rpc.xlayer.tech`]}},blockExplorers:{default:{name:`OKLink`,url:`https://www.oklink.com/xlayer`,apiUrl:`https://www.oklink.com/api/v5/explorer/xlayer/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:47416}}}),Pj=R({id:195,name:`X1 Testnet`,nativeCurrency:{decimals:18,name:`OKB`,symbol:`OKB`},rpcUrls:{default:{http:[`https://xlayertestrpc.okx.com`]}},blockExplorers:{default:{name:`OKLink`,url:`https://www.oklink.com/xlayer-test`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:624344}},testnet:!0}),Fj=R({id:20250217,name:`Xphere Mainnet`,nativeCurrency:{decimals:18,name:`XP`,symbol:`XP`},rpcUrls:{default:{http:[`https://en-bkk.x-phere.com`]}},blockExplorers:{default:{name:`Xphere Tamsa Explorer`,url:`https://xp.tamsa.io`}},testnet:!1}),Ij=R({id:1998991,name:`Xphere Testnet`,nativeCurrency:{decimals:18,name:`XPT`,symbol:`XPT`},rpcUrls:{default:{http:[`http://testnet.x-phere.com`]}},blockExplorers:{default:{name:`Xphere Tamsa Explorer`,url:`https://xpt.tamsa.io`}},testnet:!0}),Lj=R({id:273,name:`XR One`,nativeCurrency:{decimals:18,name:`XR1`,symbol:`XR1`},rpcUrls:{default:{http:[`https://xr1.calderachain.xyz/http`],webSocket:[`wss://xr1.calderachain.xyz/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://xr1.calderaexplorer.xyz`}},testnet:!1}),Rj=R({id:1440002,name:`XRPL EVM Devnet`,nativeCurrency:{name:`XRP`,symbol:`XRP`,decimals:18},rpcUrls:{default:{http:[`https://rpc.xrplevm.org/`]},public:{http:[`https://rpc.xrplevm.org/`]}},blockExplorers:{default:{name:`XRPLEVM Devnet Explorer`,url:`https://explorer.xrplevm.org/`}},contracts:{multicall3:{address:`0x82Cc144D7d0AD4B1c27cb41420e82b82Ad6e9B31`,blockCreated:15237286}},testnet:!0}),zj=R({id:1449e3,name:`XRPL EVM Testnet`,nativeCurrency:{name:`XRP`,symbol:`XRP`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.xrplevm.org`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.testnet.xrplevm.org`,apiUrl:`https://explorer.testnet.xrplevm.org/api/v2`}},contracts:{multicall3:{address:`0x82Cc144D7d0AD4B1c27cb41420e82b82Ad6e9B31`,blockCreated:492302}},testnet:!0}),Bj=R({id:2730,name:`XR Sepolia`,nativeCurrency:{decimals:18,name:`tXR`,symbol:`tXR`},rpcUrls:{default:{http:[`https://xr-sepolia-testnet.rpc.caldera.xyz/http`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://xr-sepolia-testnet.explorer.caldera.xyz`}},testnet:!0}),Vj=R({id:50005,name:`Yooldo Verse`,nativeCurrency:{name:`OAS`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.yooldo-verse.xyz`]}},blockExplorers:{default:{name:`Yooldo Verse Explorer`,url:`https://explorer.yooldo-verse.xyz`}}}),Hj=R({id:50006,name:`Yooldo Verse Testnet`,nativeCurrency:{name:`OAS`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.yooldo-verse.xyz`]}},blockExplorers:{default:{name:`Yooldo Verse Testnet Explorer`,url:`https://explorer.testnet.yooldo-verse.xyz`}},testnet:!0}),Uj=R({id:8408,name:`ZenChain Testnet`,nativeCurrency:{decimals:18,name:`ZTC`,symbol:`ZTC`},rpcUrls:{default:{http:[`https://zenchain-testnet.api.onfinality.io/public`],webSocket:[`wss://zenchain-testnet.api.onfinality.io/public-ws`]}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:230019}},blockExplorers:{default:{name:`Zentrace`,url:`https://zentrace.io`}},testnet:!0}),Wj=R({id:383414847825,name:`Zeniq Mainnet`,nativeCurrency:{name:`ZENIQ`,symbol:`ZENIQ`,decimals:18},rpcUrls:{default:{http:[`https://api.zeniq.network`]}},blockExplorers:{default:{name:`Zeniq Explorer`,url:`https://zeniqscan.com`}},testnet:!1}),Gj=R({id:543210,name:`Zero Network`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.zerion.io/v1/zero`]}},blockExplorers:{default:{name:`Zero Network Explorer`,url:`https://explorer.zero.network`}},testnet:!1}),Kj=R({id:7e3,name:`ZetaChain`,nativeCurrency:{decimals:18,name:`Zeta`,symbol:`ZETA`},rpcUrls:{default:{http:[`https://zetachain-evm.blockpi.network/v1/rpc/public`]}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1632781}},blockExplorers:{default:{name:`ZetaScan`,url:`https://zetascan.com`}},testnet:!1}),qj=R({id:7001,name:`ZetaChain Athens Testnet`,nativeCurrency:{decimals:18,name:`Zeta`,symbol:`aZETA`},rpcUrls:{default:{http:[`https://zetachain-athens-evm.blockpi.network/v1/rpc/public`]}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2715217}},blockExplorers:{default:{name:`ZetaScan`,url:`https://testnet.zetascan.com`}},testnet:!0}),Jj=R({id:1337803,name:`Zhejiang`,nativeCurrency:{name:`Zhejiang Ether`,symbol:`ZhejETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.zhejiang.ethpandaops.io`]}},blockExplorers:{default:{name:`Beaconchain`,url:`https://zhejiang.beaconcha.in`}},testnet:!0}),Yj=R({id:32769,name:`Zilliqa`,network:`zilliqa`,nativeCurrency:{name:`Zilliqa`,symbol:`ZIL`,decimals:18},rpcUrls:{default:{http:[`https://api.zilliqa.com`]}},blockExplorers:{default:{name:`Ethernal`,url:`https://evmx.zilliqa.com`}},testnet:!1}),Xj=R({id:33101,name:`Zilliqa Testnet`,network:`zilliqa-testnet`,nativeCurrency:{name:`Zilliqa`,symbol:`ZIL`,decimals:18},rpcUrls:{default:{http:[`https://dev-api.zilliqa.com`]}},blockExplorers:{default:{name:`Ethernal`,url:`https://evmx.testnet.zilliqa.com`}},testnet:!0});var Zj=1;const Qj=R({...z,id:48900,name:`Zircuit Mainnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.zircuit.com`,`https://zircuit1-mainnet.liquify.com`,`https://zircuit1-mainnet.p2pify.com`,`https://zircuit-mainnet.drpc.org`]}},blockExplorers:{default:{name:`Zircuit Explorer`,url:`https://explorer.zircuit.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`},l2OutputOracle:{[Zj]:{address:`0x92Ef6Af472b39F1b363da45E35530c24619245A4`}},portal:{[Zj]:{address:`0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1`}},l1StandardBridge:{[Zj]:{address:`0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8`}}},testnet:!1});var $j=11155111;const eM=R({...z,id:48898,name:`Zircuit Garfield Testnet`,nativeCurrency:{name:`ETH`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://garfield-testnet.zircuit.com/`]}},blockExplorers:{default:{name:`Zircuit Garfield Testnet Explorer`,url:`https://explorer.garfield-testnet.zircuit.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`},l2OutputOracle:{[$j]:{address:`0xd69D3AC5CA686cCF94b258291772bc520FEAf211`}},portal:{[$j]:{address:`0x4E21A71Ac3F7607Da5c06153A17B1DD20E702c21`}},l1StandardBridge:{[$j]:{address:`0x87a7E2bCA9E35BA49282E832a28A6023904460D8`}}},testnet:!0});var tM=11155111;const nM=R({...z,id:48899,name:`Zircuit Testnet`,nativeCurrency:{name:`ETH`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.zircuit.com`,`https://zircuit1-testnet.p2pify.com`,`https://zircuit1-testnet.liquify.com`]}},blockExplorers:{default:{name:`Zircuit Testnet Explorer`,url:`https://explorer.testnet.zircuit.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:6040287},l2OutputOracle:{[tM]:{address:`0x740C2dac453aEf7140809F80b72bf0e647af8148`}},portal:{[tM]:{address:`0x787f1C8c5924178689E0560a43D848bF8E54b23e`}},l1StandardBridge:{[tM]:{address:`0x0545c5fe980098C16fcD0eCB5E79753afa6d9af9`}}},testnet:!0}),rM=R({id:42766,name:`ZKFair Mainnet`,network:`zkfair-mainnet`,nativeCurrency:{decimals:18,name:`USD Coin`,symbol:`USDC`},rpcUrls:{default:{http:[`https://rpc.zkfair.io`]}},blockExplorers:{default:{name:`zkFair Explorer`,url:`https://scan.zkfair.io`,apiUrl:`https://scan.zkfair.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6090959}},testnet:!1}),iM=R({id:43851,name:`ZKFair Testnet`,network:`zkfair-testnet`,nativeCurrency:{decimals:18,name:`USD Coin`,symbol:`USDC`},rpcUrls:{default:{http:[`https://testnet-rpc.zkfair.io`]}},blockExplorers:{default:{name:`zkFair Explorer`,url:`https://testnet-scan.zkfair.io`}},testnet:!0}),aM=R({id:810180,name:`zkLink Nova`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.zklink.io`]}},blockExplorers:{default:{name:`zkLink Nova Block Explorer`,url:`https://explorer.zklink.io`}}}),oM=R({id:810181,name:`zkLink Nova Sepolia Testnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://sepolia.rpc.zklink.io`]}},blockExplorers:{default:{name:`zkLink Nova Block Explorer`,url:`https://sepolia.explorer.zklink.io`}}}),sM=R({...ay,id:324,name:`ZKsync Era`,network:`zksync-era`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.era.zksync.io`],webSocket:[`wss://mainnet.era.zksync.io/ws`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://era.zksync.network/`,apiUrl:`https://api-era.zksync.network/api`},native:{name:`ZKsync Explorer`,url:`https://explorer.zksync.io/`,apiUrl:`https://block-explorer-api.mainnet.zksync.io/api`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:45659388}}}),cM=R({...ay,id:260,name:`ZKsync InMemory Node`,network:`zksync-in-memory-node`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:8011`]}},testnet:!0}),lM=R({...ay,id:272,name:`ZKsync CLI Local Custom Hyperchain`,nativeCurrency:{name:`BAT`,symbol:`BAT`,decimals:18},rpcUrls:{default:{http:[`http://localhost:15200`],webSocket:[`ws://localhost:15201`]}},blockExplorers:{default:{name:`ZKsync explorer`,url:`http://localhost:15005/`,apiUrl:`http://localhost:15005/api`}},testnet:!0}),uM=R({...ay,id:270,name:`ZKsync CLI Local Hyperchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:15100`],webSocket:[`ws://localhost:15101`]}},blockExplorers:{default:{name:`ZKsync explorer`,url:`http://localhost:15005/`,apiUrl:`http://localhost:15005/api`}},testnet:!0}),dM=R({id:9,name:`ZKsync CLI Local Hyperchain L1`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:15045`]}},blockExplorers:{default:{name:`Blockscout`,url:`http://localhost:15001/`,apiUrl:`http://localhost:15001/api/v2`}},testnet:!0}),fM=R({...ay,id:270,name:`ZKsync CLI Local Node`,network:`zksync-cli-local-node`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:3050`]}},testnet:!0}),pM=R({...ay,id:300,name:`ZKsync Sepolia Testnet`,network:`zksync-sepolia-testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.era.zksync.dev`],webSocket:[`wss://sepolia.era.zksync.dev/ws`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia-era.zksync.network/`,apiUrl:`https://api-sepolia-era.zksync.network/api`},native:{name:`ZKsync Explorer`,url:`https://sepolia.explorer.zksync.io/`,blockExplorerApi:`https://block-explorer-api.sepolia.zksync.dev/api`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:3855712}},testnet:!0});var mM=1;const hM=R({...z,id:7777777,name:`Zora`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.zora.energy`],webSocket:[`wss://rpc.zora.energy`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.zora.energy`,apiUrl:`https://explorer.zora.energy/api`}},contracts:{...z.contracts,l2OutputOracle:{[mM]:{address:`0x9E6204F750cD866b299594e2aC9eA824E2e5f95c`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:5882},portal:{[mM]:{address:`0x1a0ad011913A150f69f6A19DF447A0CfD9551054`}},l1StandardBridge:{[mM]:{address:`0x3e2Ea9B92B7E48A52296fD261dc26fd995284631`}}},sourceId:mM});var gM=11155111;const _M=R({...z,id:999999999,name:`Zora Sepolia`,network:`zora-sepolia`,nativeCurrency:{decimals:18,name:`Zora Sepolia`,symbol:`ETH`},rpcUrls:{default:{http:[`https://sepolia.rpc.zora.energy`],webSocket:[`wss://sepolia.rpc.zora.energy`]}},blockExplorers:{default:{name:`Zora Sepolia Explorer`,url:`https://sepolia.explorer.zora.energy/`,apiUrl:`https://sepolia.explorer.zora.energy/api`}},contracts:{...z.contracts,l2OutputOracle:{[gM]:{address:`0x2615B481Bd3E5A1C0C7Ca3Da1bdc663E8615Ade9`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:83160},portal:{[gM]:{address:`0xeffE2C6cA9Ab797D418f0D91eA60807713f3536f`}},l1StandardBridge:{[gM]:{address:`0x5376f1D543dcbB5BD416c56C189e4cB7399fCcCB`}}},sourceId:gM,testnet:!0});var vM=5;const yM=R({...z,id:999,name:`Zora Goerli Testnet`,nativeCurrency:{decimals:18,name:`Zora Goerli`,symbol:`ETH`},rpcUrls:{default:{http:[`https://testnet.rpc.zora.energy`],webSocket:[`wss://testnet.rpc.zora.energy`]}},blockExplorers:{default:{name:`Explorer`,url:`https://testnet.explorer.zora.energy`,apiUrl:`https://testnet.explorer.zora.energy/api`}},contracts:{...z.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:189123},portal:{[vM]:{address:`0xDb9F51790365e7dc196e7D072728df39Be958ACe`}}},sourceId:vM,testnet:!0});var bM=c({abey:()=>Uv,abstract:()=>oy,abstractTestnet:()=>sy,acala:()=>cy,acria:()=>ly,adf:()=>uy,agungTestnet:()=>dy,aioz:()=>fy,alephZero:()=>py,alephZeroTestnet:()=>my,alienx:()=>hy,alienxHalTestnet:()=>gy,ancient8:()=>Ty,ancient8Sepolia:()=>Dy,anvil:()=>Oy,apeChain:()=>ky,apexTestnet:()=>Ay,arbitrum:()=>jy,arbitrumGoerli:()=>My,arbitrumNova:()=>Ny,arbitrumSepolia:()=>Py,arenaz:()=>Fy,areonNetwork:()=>Iy,areonNetworkTestnet:()=>Ly,areum:()=>Ry,artelaTestnet:()=>zy,arthera:()=>By,artheraTestnet:()=>Vy,assetChain:()=>Hy,assetChainTestnet:()=>Uy,astar:()=>Wy,astarZkEVM:()=>Gy,astarZkyoto:()=>Ky,atletaOlympia:()=>qy,aurora:()=>Jy,auroraTestnet:()=>Yy,auroria:()=>Xy,autheoTestnet:()=>Zy,avalanche:()=>Qy,avalancheFuji:()=>$y,b3:()=>eb,b3Sepolia:()=>tb,bahamut:()=>nb,base:()=>ib,baseGoerli:()=>cb,basePreconf:()=>ab,baseSepolia:()=>ub,baseSepoliaPreconf:()=>db,basecampTestnet:()=>ob,beam:()=>fb,beamTestnet:()=>pb,bearNetworkChainMainnet:()=>mb,bearNetworkChainTestnet:()=>hb,berachain:()=>gb,berachainBepolia:()=>_b,berachainTestnet:()=>vb,berachainTestnetbArtio:()=>yb,bevmMainnet:()=>bb,bifrost:()=>xb,birdlayer:()=>Sb,bitTorrent:()=>kb,bitTorrentTestnet:()=>Ab,bitgert:()=>Cb,bitkub:()=>wb,bitkubTestnet:()=>Tb,bitlayer:()=>Eb,bitlayerTestnet:()=>Db,bitrock:()=>Ob,blast:()=>Mb,blastSepolia:()=>Nb,bob:()=>Fb,bobSepolia:()=>zb,boba:()=>Ib,bobaSepolia:()=>Lb,boolBetaMainnet:()=>Bb,botanix:()=>Vb,botanixTestnet:()=>Hb,bounceBit:()=>Ub,bounceBitTestnet:()=>Wb,bronos:()=>Gb,bronosTestnet:()=>Kb,bsc:()=>qb,bscGreenfield:()=>Jb,bscTestnet:()=>Yb,bsquared:()=>Xb,bsquaredTestnet:()=>Zb,btr:()=>Qb,btrTestnet:()=>$b,bxn:()=>ex,bxnTestnet:()=>tx,cannon:()=>nx,canto:()=>rx,celo:()=>vx,celoAlfajores:()=>bx,celoSepolia:()=>Sx,chang:()=>Cx,chiliz:()=>wx,chips:()=>Tx,citreaTestnet:()=>Ex,classic:()=>Dx,coinbit:()=>Ox,coinex:()=>kx,confluxESpace:()=>Ax,confluxESpaceTestnet:()=>jx,coreDao:()=>Mx,coreTestnet1:()=>Nx,coreTestnet2:()=>Px,corn:()=>Fx,cornTestnet:()=>Ix,crab:()=>Lx,creatorTestnet:()=>Rx,creditCoin3Devnet:()=>zx,creditCoin3Mainnet:()=>Bx,creditCoin3Testnet:()=>Vx,cronos:()=>Hx,cronosTestnet:()=>Ux,cronoszkEVM:()=>Wx,cronoszkEVMTestnet:()=>Gx,crossbell:()=>Kx,crossfi:()=>qx,curtis:()=>Jx,cyber:()=>Yx,cyberTestnet:()=>Xx,dailyNetwork:()=>Zx,dailyNetworkTestnet:()=>Qx,darwinia:()=>$x,dbkchain:()=>eS,dchain:()=>tS,dchainTestnet:()=>nS,defichainEvm:()=>rS,defichainEvmTestnet:()=>iS,degen:()=>aS,dfk:()=>oS,diode:()=>sS,disChain:()=>cS,dodochainTestnet:()=>lS,dogechain:()=>uS,domaTestnet:()=>dS,donatuz:()=>fS,dosChain:()=>pS,dosChainTestnet:()=>mS,dreyerxMainnet:()=>hS,dreyerxTestnet:()=>gS,dustboyIoT:()=>_S,dymension:()=>vS,edexa:()=>yS,edexaTestnet:()=>bS,edgeless:()=>xS,edgelessTestnet:()=>SS,edgeware:()=>CS,edgewareTestnet:()=>wS,eduChain:()=>TS,eduChainTestnet:()=>ES,ekta:()=>DS,ektaTestnet:()=>OS,elastos:()=>kS,elastosTestnet:()=>AS,electroneum:()=>jS,electroneumTestnet:()=>MS,elysiumTestnet:()=>NS,energy:()=>PS,eni:()=>FS,eniTestnet:()=>IS,enuls:()=>LS,eon:()=>RS,eos:()=>zS,eosTestnet:()=>BS,eteria:()=>VS,etherlink:()=>HS,etherlinkTestnet:()=>US,ethernity:()=>WS,etp:()=>GS,evmos:()=>KS,evmosTestnet:()=>qS,excelonMainnet:()=>JS,expanse:()=>YS,exsat:()=>XS,exsatTestnet:()=>ZS,fantom:()=>QS,fantomSonicTestnet:()=>$S,fantomTestnet:()=>eC,fibo:()=>tC,filecoin:()=>nC,filecoinCalibration:()=>rC,filecoinHyperspace:()=>iC,fireChain:()=>Hv,flame:()=>aC,flare:()=>oC,flareTestnet:()=>sC,flowMainnet:()=>cC,flowPreviewnet:()=>lC,flowTestnet:()=>uC,fluence:()=>dC,fluenceStage:()=>fC,fluenceTestnet:()=>pC,fluentTestnet:()=>mC,form:()=>gC,formTestnet:()=>yC,forma:()=>_C,formicarium:()=>SE,forta:()=>bC,foundry:()=>xC,fraxtal:()=>CC,fraxtalTestnet:()=>TC,funkiMainnet:()=>DC,funkiSepolia:()=>kC,fuse:()=>AC,fuseSparknet:()=>jC,fusion:()=>MC,fusionTestnet:()=>NC,garnet:()=>FC,geist:()=>IC,genesys:()=>LC,giwaSepolia:()=>zC,glideL1Protocol:()=>BC,glideL2Protocol:()=>VC,gnosis:()=>HC,gnosisChiado:()=>UC,goChain:()=>KC,goat:()=>WC,gobi:()=>GC,godwoken:()=>qC,goerli:()=>JC,graphite:()=>YC,graphiteTestnet:()=>XC,gravity:()=>ZC,gunz:()=>QC,guruNetwork:()=>$C,guruTestnet:()=>ew,ham:()=>tw,happychainTestnet:()=>nw,haqqMainnet:()=>rw,haqqTestedge2:()=>iw,hardhat:()=>aw,harmonyOne:()=>ow,hashkey:()=>sw,hashkeyTestnet:()=>cw,haustTestnet:()=>lw,hedera:()=>uw,hederaPreviewnet:()=>dw,hederaTestnet:()=>fw,hela:()=>pw,hemi:()=>mw,hemiSepolia:()=>hw,holesky:()=>gw,hoodi:()=>_w,hpb:()=>vw,huddle01Mainnet:()=>yw,huddle01Testnet:()=>bw,humanity:()=>xw,humanityTestnet:()=>Sw,humanode:()=>Cw,humanodeTestnet5:()=>ww,hychain:()=>Tw,hychainTestnet:()=>Ew,hyperliquidEvmTestnet:()=>Dw,iSunCoin:()=>Gw,icbNetwork:()=>Ow,idchain:()=>kw,immutableZkEvm:()=>Aw,immutableZkEvmTestnet:()=>jw,inEVM:()=>Mw,initVerse:()=>Nw,initVerseGenesis:()=>Pw,injective:()=>Fw,injectiveTestnet:()=>Iw,ink:()=>Rw,inkSepolia:()=>Bw,iota:()=>Vw,iotaTestnet:()=>Hw,iotex:()=>Uw,iotexTestnet:()=>Ww,jbc:()=>Kw,jbcTestnet:()=>qw,jocMainnet:()=>Jw,jocTestnet:()=>Yw,jovay:()=>Xw,jovaySepolia:()=>Zw,juneo:()=>Qw,juneoBCH1Chain:()=>$w,juneoDAI1Chain:()=>eT,juneoDOGE1Chain:()=>tT,juneoEUR1Chain:()=>nT,juneoGLD1Chain:()=>rT,juneoLINK1Chain:()=>iT,juneoLTC1Chain:()=>aT,juneoSGD1Chain:()=>sT,juneoSocotraTestnet:()=>cT,juneoUSD1Chain:()=>lT,juneoUSDT1Chain:()=>uT,juneomBTC1Chain:()=>oT,kaia:()=>dT,kairos:()=>fT,kakarotSepolia:()=>pT,kakarotStarknetSepolia:()=>mT,kardiaChain:()=>hT,karura:()=>gT,katana:()=>_T,kava:()=>vT,kavaTestnet:()=>yT,kcc:()=>bT,kiiTestnetOro:()=>xT,kinto:()=>ST,klaytn:()=>CT,klaytnBaobab:()=>wT,koi:()=>TT,kroma:()=>ET,kromaSepolia:()=>DT,l3x:()=>OT,l3xTestnet:()=>kT,lavita:()=>AT,lens:()=>jT,lensTestnet:()=>MT,lestnet:()=>NT,lightlinkPegasus:()=>PT,lightlinkPhoenix:()=>FT,linea:()=>zT,lineaGoerli:()=>BT,lineaSepolia:()=>VT,lineaTestnet:()=>HT,lisk:()=>WT,liskSepolia:()=>KT,loadAlphanet:()=>qT,localhost:()=>JT,loop:()=>YT,lukso:()=>XT,luksoTestnet:()=>ZT,lumiaMainnet:()=>QT,lumiaTestnet:()=>$T,lumoz:()=>eE,lumozTestnet:()=>tE,lycan:()=>nE,lyra:()=>rE,mainnet:()=>iE,mandala:()=>aE,manta:()=>oE,mantaSepoliaTestnet:()=>sE,mantaTestnet:()=>cE,mantle:()=>lE,mantleSepoliaTestnet:()=>uE,mantleTestnet:()=>dE,mantraDuKongEVMTestnet:()=>fE,mantraEVM:()=>pE,mapProtocol:()=>mE,matchain:()=>hE,matchainTestnet:()=>gE,mchVerse:()=>_E,megaethTestnet:()=>vE,mekong:()=>yE,meld:()=>bE,memecore:()=>xE,merlin:()=>CE,merlinErigonTestnet:()=>wE,metachain:()=>TE,metachainIstanbul:()=>EE,metadium:()=>DE,metalL2:()=>kE,meter:()=>AE,meterTestnet:()=>jE,metis:()=>ME,metisGoerli:()=>NE,metisSepolia:()=>PE,mev:()=>FE,mevTestnet:()=>IE,mint:()=>LE,mintSepoliaTestnet:()=>RE,mitosisTestnet:()=>zE,mode:()=>VE,modeTestnet:()=>UE,monadTestnet:()=>WE,moonbaseAlpha:()=>GE,moonbeam:()=>KE,moonbeamDev:()=>qE,moonriver:()=>JE,morph:()=>YE,morphHolesky:()=>XE,morphSepolia:()=>ZE,nahmii:()=>QE,nautilus:()=>$E,near:()=>eD,nearTestnet:()=>tD,neonDevnet:()=>nD,neonMainnet:()=>rD,neoxMainnet:()=>iD,neoxT4:()=>aD,newton:()=>oD,nexi:()=>sD,nexilix:()=>cD,nibiru:()=>lD,nitrographTestnet:()=>uD,oasisTestnet:()=>dD,oasys:()=>fD,odysseyTestnet:()=>pD,okc:()=>mD,omax:()=>hD,omni:()=>gD,omniOmega:()=>_D,oneWorld:()=>vD,oortMainnetDev:()=>yD,opBNB:()=>xD,opBNBTestnet:()=>CD,openledger:()=>wD,optimism:()=>ED,optimismGoerli:()=>OD,optimismSepolia:()=>AD,optopia:()=>jD,optopiaTestnet:()=>MD,orderly:()=>ND,orderlySepolia:()=>PD,otimDevnet:()=>FD,palm:()=>ID,palmTestnet:()=>LD,peaq:()=>RD,pgn:()=>BD,pgnTestnet:()=>HD,phoenix:()=>UD,planq:()=>WD,plasma:()=>GD,plasmaDevnet:()=>KD,plasmaTestnet:()=>qD,playfiAlbireo:()=>JD,plinga:()=>YD,plume:()=>XD,plumeDevnet:()=>ZD,plumeMainnet:()=>QD,plumeSepolia:()=>$D,plumeTestnet:()=>eO,polterTestnet:()=>tO,polygon:()=>nO,polygonAmoy:()=>rO,polygonMumbai:()=>iO,polygonZkEvm:()=>aO,polygonZkEvmCardona:()=>oO,polygonZkEvmTestnet:()=>sO,polynomial:()=>cO,polynomialSepolia:()=>lO,premiumBlockTestnet:()=>uO,pulsechain:()=>dO,pulsechainV4:()=>fO,pumpfiTestnet:()=>pO,pyrope:()=>hO,qMainnet:()=>_O,qTestnet:()=>vO,ql1:()=>gO,real:()=>yO,redbellyMainnet:()=>bO,redbellyTestnet:()=>xO,reddio:()=>SO,reddioSepolia:()=>CO,redstone:()=>TO,rei:()=>EO,reyaNetwork:()=>DO,riseTestnet:()=>OO,rivalz:()=>kO,rollux:()=>AO,rolluxTestnet:()=>jO,ronin:()=>MO,root:()=>NO,rootPorcini:()=>PO,rootstock:()=>FO,rootstockTestnet:()=>IO,rss3:()=>RO,rss3Sepolia:()=>BO,saakuru:()=>VO,saga:()=>HO,saigon:()=>UO,sanko:()=>WO,sapphire:()=>GO,sapphireTestnet:()=>KO,satoshiVM:()=>qO,satoshiVMTestnet:()=>JO,scroll:()=>YO,scrollSepolia:()=>XO,sei:()=>ZO,seiDevnet:()=>QO,seiTestnet:()=>ek,seismicDevnet:()=>$O,sepolia:()=>tk,shape:()=>rk,shapeSepolia:()=>ak,shardeum:()=>ok,shardeumSphinx:()=>sk,shibarium:()=>ck,shibariumTestnet:()=>lk,shiden:()=>uk,shimmer:()=>dk,shimmerTestnet:()=>fk,sidraChain:()=>pk,silicon:()=>mk,siliconSepolia:()=>hk,sixProtocol:()=>gk,skaleBlockBrawlers:()=>_k,skaleCalypso:()=>vk,skaleCalypsoTestnet:()=>yk,skaleCryptoBlades:()=>bk,skaleCryptoColosseum:()=>xk,skaleEuropa:()=>Sk,skaleEuropaTestnet:()=>Ck,skaleExorde:()=>wk,skaleHumanProtocol:()=>Tk,skaleNebula:()=>Ek,skaleNebulaTestnet:()=>Dk,skaleRazor:()=>Ok,skaleTitan:()=>kk,skaleTitanTestnet:()=>Ak,sketchpad:()=>jk,snax:()=>Nk,snaxTestnet:()=>Fk,somniaTestnet:()=>Ik,soneium:()=>Rk,soneiumMinato:()=>Bk,songbird:()=>Vk,songbirdTestnet:()=>Hk,sonic:()=>Uk,sonicBlazeTestnet:()=>Wk,sonicTestnet:()=>Gk,sophon:()=>Kk,sophonTestnet:()=>qk,sova:()=>Jk,sovaSepolia:()=>Yk,spicy:()=>Xk,statusNetworkSepolia:()=>Zk,statusSepolia:()=>Zk,step:()=>Qk,story:()=>$k,storyAeneid:()=>eA,storyOdyssey:()=>tA,storyTestnet:()=>nA,stratis:()=>rA,superlumio:()=>iA,superposition:()=>aA,superseed:()=>sA,superseedSepolia:()=>lA,surgeTestnet:()=>uA,swan:()=>dA,swanProximaTestnet:()=>fA,swanSaturnTestnet:()=>pA,swellchain:()=>mA,swellchainTestnet:()=>hA,swissdlt:()=>gA,syscoin:()=>_A,syscoinTestnet:()=>vA,tac:()=>yA,tacSPB:()=>bA,taiko:()=>xA,taikoHekla:()=>SA,taikoJolnir:()=>CA,taikoKatla:()=>wA,taikoTestnetSepolia:()=>TA,taraxa:()=>EA,taraxaTestnet:()=>DA,teaSepolia:()=>OA,telcoinTestnet:()=>kA,telos:()=>AA,telosTestnet:()=>jA,tenet:()=>MA,ternoa:()=>NA,thaiChain:()=>PA,that:()=>FA,theta:()=>IA,thetaTestnet:()=>LA,thunderCore:()=>RA,thunderTestnet:()=>zA,tiktrixTestnet:()=>BA,tomb:()=>VA,treasure:()=>HA,treasureTopaz:()=>UA,tron:()=>WA,tronNile:()=>GA,tronShasta:()=>KA,ubiq:()=>qA,ultra:()=>JA,ultraTestnet:()=>YA,ultron:()=>XA,ultronTestnet:()=>ZA,unichain:()=>$A,unichainSepolia:()=>tj,unique:()=>nj,uniqueOpal:()=>rj,uniqueQuartz:()=>ij,unreal:()=>aj,vana:()=>oj,vanaMoksha:()=>sj,vanar:()=>cj,vechain:()=>lj,velas:()=>uj,viction:()=>dj,victionTestnet:()=>fj,vision:()=>pj,visionTestnet:()=>mj,wanchain:()=>hj,wanchainTestnet:()=>gj,weaveVMAlphanet:()=>_j,wemix:()=>vj,wemixTestnet:()=>yj,westendAssetHub:()=>bj,whitechain:()=>xj,whitechainTestnet:()=>Sj,wmcTestnet:()=>Cj,worldLand:()=>Oj,worldchain:()=>Tj,worldchainSepolia:()=>Dj,x1Testnet:()=>Pj,xLayer:()=>Nj,xLayerTestnet:()=>Pj,xai:()=>kj,xaiTestnet:()=>Aj,xdc:()=>jj,xdcTestnet:()=>Mj,xphereMainnet:()=>Fj,xphereTestnet:()=>Ij,xrOne:()=>Lj,xrSepolia:()=>Bj,xrplevmDevnet:()=>Rj,xrplevmTestnet:()=>zj,yooldoVerse:()=>Vj,yooldoVerseTestnet:()=>Hj,zenchainTestnet:()=>Uj,zeniq:()=>Wj,zeroG:()=>zv,zeroGGalileoTestnet:()=>Bv,zeroGMainnet:()=>Vv,zeroNetwork:()=>Gj,zetachain:()=>Kj,zetachainAthensTestnet:()=>qj,zhejiang:()=>Jj,zilliqa:()=>Yj,zilliqaTestnet:()=>Xj,zircuit:()=>Qj,zircuitGarfieldTestnet:()=>eM,zircuitTestnet:()=>nM,zkFair:()=>rM,zkFairTestnet:()=>iM,zkLinkNova:()=>aM,zkLinkNovaSepoliaTestnet:()=>oM,zkSync:()=>sM,zkSyncInMemoryNode:()=>cM,zkSyncLocalNode:()=>fM,zkSyncSepoliaTestnet:()=>pM,zksync:()=>sM,zksyncInMemoryNode:()=>cM,zksyncLocalCustomHyperchain:()=>lM,zksyncLocalHyperchain:()=>uM,zksyncLocalHyperchainL1:()=>dM,zksyncLocalNode:()=>fM,zksyncSepoliaTestnet:()=>pM,zora:()=>hM,zoraSepolia:()=>_M,zoraTestnet:()=>yM}),xM=c({arbitrum:()=>jy,arbitrumSepolia:()=>Py,base:()=>ib,baseSepolia:()=>ub,berachain:()=>gb,berachainBepolia:()=>_b,bsc:()=>qb,celo:()=>vx,gnosis:()=>HC,hoodi:()=>_w,katana:()=>_T,mainnet:()=>iE,optimism:()=>ED,optimismSepolia:()=>AD,polygon:()=>nO,sepolia:()=>tk});const SM=[ib,...Object.values(xM).filter(e=>e&&e.id!==ib.id)],CM=Oy;({...CM}),{...CM};var wM=u(s(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i`IntersectionObserver`in window&&`IntersectionObserverEntry`in window&&`intersectionRatio`in IntersectionObserverEntry.prototype&&`isVisible`in IntersectionObserverEntry.prototype;function aN(e={}){let{prefix:t=`[Porto]`}=e,n=new Set;return{error:sN(console.error,{prefix:t}),errorOnce:sN(console.error,{memo:n,prefix:t}),log:sN(console.log,{prefix:t}),logOnce:sN(console.log,{memo:n,prefix:t}),warn:sN(console.warn,{prefix:t}),warnOnce:sN(console.warn,{memo:n,prefix:t})}}const oN=aN();function sN(e,t={}){let{memo:n,prefix:r}=t;return(...t)=>{let i=t.join(` `);n?.has(i)||(n?.add(i),e(`${r} ${i}`))}}function cN(){let e=navigator.userAgent.toLowerCase();return e.includes(`safari`)&&!e.includes(`chrome`)}function lN(){let e=navigator.userAgent.toLowerCase();return(e.includes(`firefox`)||e.includes(`fxios`))&&!e.includes(`seamonkey`)}function uN(){return window.navigator?.userAgentData?.mobile?!0:navigator.maxTouchPoints>1||/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(navigator.userAgent)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(navigator.userAgent.slice(0,4))}function dN(){let e=()=>void 0,t=()=>void 0;return{promise:new Promise((n,r)=>{e=n,t=r}),reject:t,resolve:e}}function fN(e){if(Array.isArray(e))return e.map(fN);if(typeof e==`function`)return;if(typeof e!=`object`||!e)return e;if(Object.getPrototypeOf(e)!==Object.prototype)try{return structuredClone(e)}catch{return}let t={};for(let[n,r]of Object.entries(e))t[n]=fN(r);return t}function pN(e,t){let n=[],r=new Set;for(let i of e){let e=t(i);r.has(e)||(r.add(e),n.push(i))}return n}function mN(){return typeof globalThis<`u`&&`crypto`in globalThis?globalThis.crypto.randomUUID():crypto.randomUUID()}function hN(e,{enabled:t=!0,id:n}){if(!t||!n)return e();if(hN.cache.get(n))return hN.cache.get(n);let r=e().finally(()=>hN.cache.delete(n));return hN.cache.set(n,r),r}(function(e){e.cache=new Map})(hN||={});function gN(e){return e}function _N(e,t={}){let{targetOrigin:n}=t,r=new Map;return gN({destroy(){for(let t of r.values())e.removeEventListener(`message`,t)},on(t,i,a){function o(e){e.data.topic===t&&(a&&e.data.id!==a||n&&e.origin!==n||i(e.data.payload,e))}return e.addEventListener(`message`,o),r.set(t,o),()=>e.removeEventListener(`message`,o)},async send(t,r,i){let a=mN();return e.postMessage(fN({id:a,payload:r,topic:t}),i??n??`*`),{id:a,payload:r,topic:t}},async sendAsync(e,t,n){let{id:r}=await this.send(e,t,n);return new Promise(t=>this.on(e,t,r))}})}function vN(e){let{from:t,to:n,waitForReady:r=!1}=e,i=!1,a=dN();t.on(`ready`,a.resolve);let o=gN({destroy(){t.destroy(),n.destroy(),i&&a.reject()},on(e,n,r){return t.on(e,n,r)},async send(e,t){return i=!0,r&&await a.promise.finally(()=>i=!1),n.send(e,t)},async sendAsync(e,t){return i=!0,r&&await a.promise.finally(()=>i=!1),n.sendAsync(e,t)}});return{...o,ready(e){o.send(`ready`,e)},waitForReady(){return a.promise}}}const yN={local:`http://localhost:5175/dialog/`,prod:`https://id.porto.sh/dialog`,stg:`https://stg.id.porto.sh/dialog`};function bN(e){return e}function xN(e={}){let{skipProtocolCheck:t,skipUnsupported:n}=e,r=e=>!n&&cN()&&e?.some(e=>[`wallet_connect`,`eth_requestAccounts`].includes(e.method));return typeof window>`u`?CN():bN({name:`iframe`,setup(e){let{host:n,internal:i,theme:a,themeController:o}=e,{store:s}=i,c=SN().setup(e),l=!1,u=new URL(n),d=document.createElement(`dialog`);d.dataset.porto=``,d.setAttribute(`role`,`dialog`),d.setAttribute(`aria-closed`,`true`),d.setAttribute(`aria-label`,`Porto Wallet`),d.setAttribute(`hidden`,`until-found`),Object.assign(d.style,{background:`transparent`,border:`0`,outline:`0`,padding:`0`,position:`fixed`}),document.body.appendChild(d);let f=document.createElement(`iframe`);f.setAttribute(`data-testid`,`porto`);let p=[`payment`,`publickey-credentials-get ${u.origin}`,`publickey-credentials-create ${u.origin}`];lN()||p.push(`clipboard-write`),f.setAttribute(`allow`,p.join(`; `)),f.setAttribute(`tabindex`,`0`),f.setAttribute(`sandbox`,`allow-forms allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox`),f.setAttribute(`src`,kN(n)),f.setAttribute(`title`,`Porto`),Object.assign(f.style,{backgroundColor:`transparent`,border:`0`,colorScheme:`light dark`,height:`100%`,left:`0`,position:`fixed`,top:`0`,width:`100%`});let m=document.createElement(`style`);m.innerHTML=` +`),{name:`InvalidDefinitionTypeError`})}}})),cn,ln,un,dn=o((()=>{O(),cn=class extends D{constructor({offset:e,position:t,size:n}){super(`Slice ${t===`start`?`starting`:`ending`} at offset "${e}" is out-of-bounds (size: ${n}).`,{name:`SliceOffsetOutOfBoundsError`})}},ln=class extends D{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (${e}) exceeds padding size (${t}).`,{name:`SizeExceedsPaddingSizeError`})}},un=class extends D{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} is expected to be ${t} ${n} long, but is ${e} ${n} long.`,{name:`InvalidBytesLengthError`})}}}));function fn(e,{dir:t,size:n=32}={}){return typeof e==`string`?pn(e,{dir:t,size:n}):mn(e,{dir:t,size:n})}function pn(e,{dir:t,size:n=32}={}){if(n===null)return e;let r=e.replace(`0x`,``);if(r.length>n*2)throw new ln({size:Math.ceil(r.length/2),targetSize:n,type:`hex`});return`0x${r[t===`right`?`padEnd`:`padStart`](n*2,`0`)}`}function mn(e,{dir:t,size:n=32}={}){if(n===null)return e;if(e.length>n)throw new ln({size:e.length,targetSize:n,type:`bytes`});let r=new Uint8Array(n);for(let i=0;i{dn()})),gn,_n,vn,yn,bn=o((()=>{O(),gn=class extends D{constructor({max:e,min:t,signed:n,size:r,value:i}){super(`Number "${i}" is not in safe ${r?`${r*8}-bit ${n?`signed`:`unsigned`} `:``}integer range ${e?`(${t} to ${e})`:`(above ${t})`}`,{name:`IntegerOutOfRangeError`})}},_n=class extends D{constructor(e){super(`Bytes value "${e}" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`,{name:`InvalidBytesBooleanError`})}},vn=class extends D{constructor(e){super(`Hex value "${e}" is not a valid boolean. The hex value must be "0x0" (false) or "0x1" (true).`,{name:`InvalidHexBooleanError`})}},yn=class extends D{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed ${t} bytes. Given size: ${e} bytes.`,{name:`SizeOverflowError`})}}}));function xn(e,{dir:t=`left`}={}){let n=typeof e==`string`?e.replace(`0x`,``):e,r=0;for(let e=0;e{}));function Cn(e,{size:t}){if(Ft(e)>t)throw new yn({givenSize:Ft(e),maxSize:t})}function wn(e,t={}){let{signed:n}=t;t.size&&Cn(e,{size:t.size});let r=BigInt(e);if(!n)return r;let i=(e.length-2)/2,a=(1n<{bn(),It(),Sn()}));function On(e,t={}){return typeof e==`number`||typeof e==`bigint`?k(e,t):typeof e==`string`?jn(e,t):typeof e==`boolean`?kn(e,t):An(e,t)}function kn(e,t={}){let n=`0x${Number(e)}`;return typeof t.size==`number`?(Cn(n,{size:t.size}),fn(n,{size:t.size})):n}function An(e,t={}){let n=``;for(let t=0;ta||i{bn(),hn(),Dn(),Mn=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`)),Nn=new TextEncoder}));function Pn(e,t={}){return typeof e==`number`||typeof e==`bigint`?Rn(e,t):typeof e==`boolean`?Fn(e,t):Nt(e)?Ln(e,t):zn(e,t)}function Fn(e,t={}){let n=new Uint8Array(1);return n[0]=Number(e),typeof t.size==`number`?(Cn(n,{size:t.size}),fn(n,{size:t.size})):n}function In(e){if(e>=Vn.zero&&e<=Vn.nine)return e-Vn.zero;if(e>=Vn.A&&e<=Vn.F)return e-(Vn.A-10);if(e>=Vn.a&&e<=Vn.f)return e-(Vn.a-10)}function Ln(e,t={}){let n=e;t.size&&(Cn(n,{size:t.size}),n=fn(n,{dir:`right`,size:t.size}));let r=n.slice(2);r.length%2&&(r=`0${r}`);let i=r.length/2,a=new Uint8Array(i);for(let e=0,t=0;e{O(),Pt(),hn(),Dn(),A(),Bn=new TextEncoder,Vn={zero:48,nine:57,A:65,F:70,a:97,f:102}}));function Un(e,t=!1){return t?{h:Number(e&Kn),l:Number(e>>qn&Kn)}:{h:Number(e>>qn&Kn)|0,l:Number(e&Kn)|0}}function Wn(e,t=!1){let n=e.length,r=new Uint32Array(n),i=new Uint32Array(n);for(let a=0;a>>0)+(r>>>0);return{h:e+n+(i/2**32|0)|0,l:i|0}}var Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr,ir,ar,or,sr,cr,lr,ur=o((()=>{Kn=BigInt(2**32-1),qn=BigInt(32),Jn=(e,t,n)=>e>>>n,Yn=(e,t,n)=>e<<32-n|t>>>n,Xn=(e,t,n)=>e>>>n|t<<32-n,Zn=(e,t,n)=>e<<32-n|t>>>n,Qn=(e,t,n)=>e<<64-n|t>>>n-32,$n=(e,t,n)=>e>>>n-32|t<<64-n,er=(e,t,n)=>e<>>32-n,tr=(e,t,n)=>t<>>32-n,nr=(e,t,n)=>t<>>64-n,rr=(e,t,n)=>e<>>64-n,ir=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0),ar=(e,t,n,r)=>t+n+r+(e/2**32|0)|0,or=(e,t,n,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0),sr=(e,t,n,r,i)=>t+n+r+i+(e/2**32|0)|0,cr=(e,t,n,r,i)=>(e>>>0)+(t>>>0)+(n>>>0)+(r>>>0)+(i>>>0),lr=(e,t,n,r,i,a)=>t+n+r+i+a+(e/2**32|0)|0})),dr,fr=o((()=>{dr=typeof globalThis==`object`&&`crypto`in globalThis?globalThis.crypto:void 0}));function pr(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function mr(e){if(!Number.isSafeInteger(e)||e<0)throw Error(`positive integer expected, got `+e)}function hr(e,...t){if(!pr(e))throw Error(`Uint8Array expected`);if(t.length>0&&!t.includes(e.length))throw Error(`Uint8Array expected of length `+t+`, got length=`+e.length)}function gr(e){if(typeof e!=`function`||typeof e.create!=`function`)throw Error(`Hash should be wrapped by utils.createHasher`);mr(e.outputLen),mr(e.blockLen)}function _r(e,t=!0){if(e.destroyed)throw Error(`Hash instance has been destroyed`);if(t&&e.finished)throw Error(`Hash#digest() has already been called`)}function vr(e,t){hr(e);let n=t.outputLen;if(e.length>>t}function Cr(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function wr(e){for(let t=0;te().update(Er(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}function kr(e=32){if(dr&&typeof dr.getRandomValues==`function`)return dr.getRandomValues(new Uint8Array(e));if(dr&&typeof dr.randomBytes==`function`)return Uint8Array.from(dr.randomBytes(e));throw Error(`crypto.getRandomValues must be defined`)}var Ar,jr,Mr,Nr=o((()=>{fr(),Ar=(()=>new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68)(),jr=Ar?e=>e:wr,Mr=class{}}));function Pr(e,t=24){let n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let r=(t+8)%10,i=(t+2)%10,a=n[i],o=n[i+1],s=qr(a,o,1)^n[r],c=Jr(a,o,1)^n[r+1];for(let n=0;n<50;n+=10)e[t+n]^=s,e[t+n+1]^=c}let t=e[2],i=e[3];for(let n=0;n<24;n++){let r=Hr[n],a=qr(t,i,r),o=Jr(t,i,r),s=Vr[n];t=e[s],i=e[s+1],e[s]=a,e[s+1]=o}for(let t=0;t<50;t+=10){for(let r=0;r<10;r++)n[r]=e[t+r];for(let r=0;r<10;r++)e[t+r]^=~n[(r+2)%10]&n[(r+4)%10]}e[0]^=Gr[r],e[1]^=Kr[r]}br(n)}var Fr,Ir,Lr,Rr,zr,Br,Vr,Hr,Ur,Wr,Gr,Kr,qr,Jr,Yr,Xr,Zr,Qr=o((()=>{ur(),Nr(),Fr=BigInt(0),Ir=BigInt(1),Lr=BigInt(2),Rr=BigInt(7),zr=BigInt(256),Br=BigInt(113),Vr=[],Hr=[],Ur=[];for(let e=0,t=Ir,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Vr.push(2*(5*r+n)),Hr.push((e+1)*(e+2)/2%64);let i=Fr;for(let e=0;e<7;e++)t=(t<>Rr)*Br)%zr,t&Lr&&(i^=Ir<<(Ir<n>32?nr(e,t,n):er(e,t,n),Jr=(e,t,n)=>n>32?rr(e,t,n):tr(e,t,n),Yr=class e extends Mr{constructor(e,t,n,r=!1,i=24){if(super(),this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,this.enableXOF=!1,this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.rounds=i,mr(n),!(0=n&&this.keccak();let a=Math.min(n-this.posOut,i-r);e.set(t.subarray(this.posOut,this.posOut+a),r),this.posOut+=a,r+=a}return e}xofInto(e){if(!this.enableXOF)throw Error(`XOF is not possible for this instance`);return this.writeInto(e)}xof(e){return mr(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(vr(e,this),this.finished)throw Error(`digest() was already called`);return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,br(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:i,rounds:a,enableXOF:o}=this;return t||=new e(n,r,i,o,a),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=r,t.outputLen=i,t.enableXOF=o,t.destroyed=this.destroyed,t}},Xr=(e,t,n)=>Or(()=>new Yr(t,e,n)),Zr=(()=>Xr(1,136,256/8))()}));function $r(e,t){let n=t||`hex`,r=Zr(Nt(e,{strict:!1})?Pn(e):e);return n===`bytes`?r:On(r)}var ei=o((()=>{Qr(),Pt(),Hn(),A()}));function ti(e){return ni(e)}var ni,ri=o((()=>{Hn(),ei(),ni=e=>$r(Pn(e))}));function ii(e){let t=!0,n=``,r=0,i=``,a=!1;for(let o=0;o{O()})),oi,si=o((()=>{Ot(),ai(),oi=e=>{let t=(()=>typeof e==`string`?e:le(e))();return ii(t)}}));function ci(e){return ti(oi(e))}var li=o((()=>{ri(),si()})),ui,di=o((()=>{li(),ui=ci})),fi,pi=o((()=>{O(),fi=class extends D{constructor({address:e}){super(`Address "${e}" is invalid.`,{metaMessages:[`- Address must be a hex value of 20 bytes (40 hex characters).`,`- Address must match its checksum counterpart.`],name:`InvalidAddressError`})}}})),mi,hi=o((()=>{mi=class extends Map{constructor(e){super(),Object.defineProperty(this,`maxSize`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&t!==void 0&&(this.delete(e),super.set(e,t)),t}set(e,t){if(super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=this.keys().next().value;e&&this.delete(e)}return this}}}));function gi(e,t){if(vi.has(`${e}.${t}`))return vi.get(`${e}.${t}`);let n=t?`${t}${e.toLowerCase()}`:e.substring(2).toLowerCase(),r=$r(zn(n),`bytes`),i=(t?n.substring(`${t}0x`.length):n).split(``);for(let e=0;e<40;e+=2)r[e>>1]>>4>=8&&i[e]&&(i[e]=i[e].toUpperCase()),(r[e>>1]&15)>=8&&i[e+1]&&(i[e+1]=i[e+1].toUpperCase());let a=`0x${i.join(``)}`;return vi.set(`${e}.${t}`,a),a}function _i(e,t){if(!bi(e,{strict:!1}))throw new fi({address:e});return gi(e,t)}var vi,yi=o((()=>{pi(),Hn(),ei(),hi(),Ci(),vi=new mi(8192)}));function bi(e,t){let{strict:n=!0}=t??{},r=`${e}.${n}`;if(Si.has(r))return Si.get(r);let i=(()=>xi.test(e)?e.toLowerCase()===e?!0:n?gi(e)===e:!0:!1)();return Si.set(r,i),i}var xi,Si,Ci=o((()=>{hi(),yi(),xi=/^0x[a-fA-F0-9]{40}$/,Si=new mi(8192)}));function wi(e){return typeof e[0]==`string`?Ei(e):Ti(e)}function Ti(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function Ei(e){return`0x${e.reduce((e,t)=>e+t.replace(`0x`,``),``)}`}var Di=o((()=>{}));function Oi(e,t,n,{strict:r}={}){return Nt(e,{strict:!1})?Mi(e,t,n,{strict:r}):ji(e,t,n,{strict:r})}function ki(e,t){if(typeof t==`number`&&t>0&&t>Ft(e)-1)throw new cn({offset:t,position:`start`,size:Ft(e)})}function Ai(e,t,n){if(typeof t==`number`&&typeof n==`number`&&Ft(e)!==n-t)throw new cn({offset:n,position:`end`,size:Ft(e)})}function ji(e,t,n,{strict:r}={}){ki(e,t);let i=e.slice(t,n);return r&&Ai(i,t,n),i}function Mi(e,t,n,{strict:r}={}){ki(e,t);let i=`0x${e.replace(`0x`,``).slice((t??0)*2,(n??e.length)*2)}`;return r&&Ai(i,t,n),i}var Ni=o((()=>{dn(),Pt(),It()})),Pi,Fi,Ii=o((()=>{Pi=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,Fi=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/}));function Li(e,t){if(e.length!==t.length)throw new qt({expectedLength:e.length,givenLength:t.length});let n=Ri({params:e,values:t}),r=Bi(n);return r.length===0?`0x`:r}function Ri({params:e,values:t}){let n=[];for(let r=0;r0?wi([t,e]):t}}if(i)return{dynamic:!0,encoded:e}}return{dynamic:!1,encoded:wi(a.map(({encoded:e})=>e))}}function Ui(e,{param:t}){let[,n]=t.type.split(`bytes`),r=Ft(e);if(!n){let t=e;return r%32!=0&&(t=pn(t,{dir:`right`,size:Math.ceil((e.length-2)/2/32)*32})),{dynamic:!0,encoded:wi([pn(k(r,{size:32})),t])}}if(r!==Number.parseInt(n,10))throw new Kt({expectedSize:Number.parseInt(n,10),value:e});return{dynamic:!1,encoded:pn(e,{dir:`right`})}}function Wi(e){if(typeof e!=`boolean`)throw new D(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:pn(kn(e))}}function Gi(e,{signed:t,size:n=256}){if(typeof n==`number`){let r=2n**(BigInt(n)-(t?1n:0n))-1n,i=t?-r-1n:0n;if(e>r||ee))}}function Ji(e){let t=e.match(/^(.*)\[(\d+)?\]$/);return t?[t[2]?Number(t[2]):null,t[1]]:void 0}var Yi=o((()=>{sn(),pi(),O(),bn(),Ci(),Di(),hn(),It(),Ni(),A(),Ii()})),Xi,Zi=o((()=>{Ni(),li(),Xi=e=>Oi(ci(e),0,4)}));function Qi(e){let{abi:t,args:n=[],name:r}=e,i=Nt(r,{strict:!1}),a=t.filter(e=>i?e.type===`function`?Xi(e)===r:e.type===`event`?ui(e)===r:!1:`name`in e&&e.name===r);if(a.length===0)return;if(a.length===1)return a[0];let o;for(let e of a)if(`inputs`in e){if(!n||n.length===0){if(!e.inputs||e.inputs.length===0)return e;continue}if(e.inputs&&e.inputs.length!==0&&e.inputs.length===n.length&&n.every((t,n)=>{let r=`inputs`in e&&e.inputs[n];return r?$i(t,r):!1})){if(o&&`inputs`in o&&o.inputs){let t=ea(e.inputs,o.inputs,n);if(t)throw new en({abiItem:e,type:t[0]},{abiItem:o,type:t[1]})}o=e}}return o||a[0]}function $i(e,t){let n=typeof e,r=t.type;switch(r){case`address`:return bi(e,{strict:!1});case`bool`:return n===`boolean`;case`function`:return n===`string`;case`string`:return n===`string`;default:return r===`tuple`&&`components`in t?Object.values(t.components).every((t,n)=>$i(Object.values(e)[n],t)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(r)?n===`number`||n===`bigint`:/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(r)?n===`string`||e instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(r)?Array.isArray(e)&&e.every(e=>$i(e,{...t,type:r.replace(/(\[[0-9]{0,}\])$/,``)})):!1}}function ea(e,t,n){for(let r in e){let i=e[r],a=t[r];if(i.type===`tuple`&&a.type===`tuple`&&`components`in i&&`components`in a)return ea(i.components,a.components,n[r]);let o=[i.type,a.type];if((()=>o.includes(`address`)&&o.includes(`bytes20`)?!0:o.includes(`address`)&&o.includes(`string`)||o.includes(`address`)&&o.includes(`bytes`)?bi(n[r],{strict:!1}):!1)())return o}}var ta=o((()=>{sn(),Pt(),Ci(),di(),Zi()}));function na(e){return typeof e==`string`?{address:e,type:`json-rpc`}:e}var ra=o((()=>{}));function ia(e){let{abi:t,args:n,functionName:r}=e,i=t[0];if(r){let e=Qi({abi:t,args:n,name:r});if(!e)throw new Zt(r,{docsPath:aa});i=e}if(i.type!==`function`)throw new Zt(void 0,{docsPath:aa});return{abi:[i],functionName:Xi(kt(i))}}var aa,oa=o((()=>{sn(),Zi(),Mt(),ta(),aa=`/docs/contract/encodeFunctionData`}));function sa(e){let{args:t}=e,{abi:n,functionName:r}=(()=>e.abi.length===1&&e.functionName?.startsWith(`0x`)?e:ia(e))(),i=n[0],a=r,o=`inputs`in i&&i.inputs?Li(i.inputs,t??[]):void 0;return Ei([a,o??`0x`])}var ca=o((()=>{Di(),Yi(),oa()})),la,ua,da,fa=o((()=>{la={1:"An `assert` condition failed.",17:`Arithmetic operation resulted in underflow or overflow.`,18:"Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).",33:`Attempted to convert to an invalid type.`,34:`Attempted to access a storage byte array that is incorrectly encoded.`,49:"Performed `.pop()` on an empty array",50:`Array index is out of bounds.`,65:`Allocated too much memory or created an array which is too large.`,81:`Attempted to call a zero-initialized variable of internal function type.`},ua={inputs:[{name:`message`,type:`string`}],name:`Error`,type:`error`},da={inputs:[{name:`reason`,type:`uint256`}],name:`Panic`,type:`error`}})),pa,ma,ha,ga=o((()=>{O(),pa=class extends D{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`,{name:`NegativeOffsetError`})}},ma=class extends D{constructor({length:e,position:t}){super(`Position \`${t}\` is out of bounds (\`0 < position < ${e}\`).`,{name:`PositionOutOfBoundsError`})}},ha=class extends D{constructor({count:e,limit:t}){super(`Recursive read limit of \`${t}\` exceeded (recursive read count: \`${e}\`).`,{name:`RecursiveReadLimitExceededError`})}}}));function _a(e,{recursiveReadLimit:t=8192}={}){let n=Object.create(va);return n.bytes=e,n.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}var va,ya=o((()=>{ga(),va={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:1/0,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new ha({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new ma({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new pa({offset:e});let t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new pa({offset:e});let t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){let n=t??this.position;return this.assertPosition(n+e-1),this.bytes.subarray(n,n+e)},inspectUint8(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){let t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){let t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){let t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,e&255),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();let e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();let n=this.inspectBytes(e);return this.position+=t??e,n},readUint8(){this.assertReadLimit(),this._touch();let e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();let e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();let e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();let e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){let t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===1/0)return;let e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}}}));function ba(e,t={}){t.size!==void 0&&Cn(e,{size:t.size});let n=An(e,t);return wn(n,t)}function xa(e,t={}){let n=e;if(t.size!==void 0&&(Cn(n,{size:t.size}),n=xn(n)),n.length>1||n[0]>1)throw new _n(n);return!!n[0]}function Sa(e,t={}){t.size!==void 0&&Cn(e,{size:t.size});let n=An(e,t);return En(n,t)}function Ca(e,t={}){let n=e;return t.size!==void 0&&(Cn(n,{size:t.size}),n=xn(n,{dir:`right`})),new TextDecoder().decode(n)}var wa=o((()=>{bn(),Sn(),Dn(),A()}));function Ta(e,t){let n=typeof t==`string`?Ln(t):t,r=_a(n);if(Ft(n)===0&&e.length>0)throw new Wt;if(Ft(t)&&Ft(t)<32)throw new Ut({data:typeof t==`string`?t:An(t),params:e,size:Ft(t)});let i=0,a=[];for(let t=0;t48?ba(i,{signed:n}):Sa(i,{signed:n}),32]}function Ma(e,t,{staticPosition:n}){let r=t.components.length===0||t.components.some(({name:e})=>!e),i=r?[]:{},a=0;if(Pa(t)){let o=Sa(e.readBytes(Ia)),s=n+o;for(let n=0;n{sn(),yi(),ya(),It(),Ni(),Sn(),wa(),Hn(),A(),Yi(),Fa=32,Ia=32}));function Ra(e){let{abi:t,data:n}=e,r=Oi(n,0,4);if(r===`0x`)throw new Wt;let i=[...t||[],ua,da].find(e=>e.type===`error`&&r===Xi(kt(e)));if(!i)throw new Xt(r,{docsPath:`/docs/contract/decodeErrorResult`});return{abiItem:i,args:`inputs`in i&&i.inputs&&i.inputs.length>0?Ta(i.inputs,Oi(n,4)):void 0,errorName:i.name}}var za=o((()=>{fa(),sn(),Ni(),Zi(),La(),Mt()})),Ba,Va=o((()=>{Ba=(e,t,n)=>JSON.stringify(e,(e,n)=>{let r=typeof n==`bigint`?n.toString():n;return typeof t==`function`?t(e,r):r},n)}));function Ha({abiItem:e,args:t,includeFunctionName:n=!0,includeName:r=!1}){if(`name`in e&&`inputs`in e&&e.inputs)return`${n?e.name:``}(${e.inputs.map((e,n)=>`${r&&e.name?`${e.name}: `:``}${typeof t[n]==`object`?Ba(t[n]):t[n]}`).join(`, `)})`}var Ua=o((()=>{Va()})),Wa,Ga,Ka=o((()=>{Wa={gwei:9,wei:18},Ga={ether:-9,wei:9}}));function qa(e,t){let n=e.toString(),r=n.startsWith(`-`);r&&(n=n.slice(1)),n=n.padStart(t,`0`);let[i,a]=[n.slice(0,n.length-t),n.slice(n.length-t)];return a=a.replace(/(0+)$/,``),`${r?`-`:``}${i||`0`}${a?`.${a}`:``}`}var Ja=o((()=>{}));function Ya(e,t=`wei`){return qa(e,Wa[t])}var Xa=o((()=>{Ka(),Ja()}));function Za(e,t=`wei`){return qa(e,Ga[t])}var Qa=o((()=>{Ka(),Ja()}));function $a(e){return e.reduce((e,{slot:t,value:n})=>`${e} ${t}: ${n}\n`,``)}function eo(e){return e.reduce((e,{address:t,...n})=>{let r=`${e} ${t}:\n`;return n.nonce&&(r+=` nonce: ${n.nonce}\n`),n.balance&&(r+=` balance: ${n.balance}\n`),n.code&&(r+=` code: ${n.code}\n`),n.state&&(r+=` state: +`,r+=$a(n.state)),n.stateDiff&&(r+=` stateDiff: +`,r+=$a(n.stateDiff)),r},` State Override: +`).slice(0,-1)}var to,no,ro=o((()=>{O(),to=class extends D{constructor({address:e}){super(`State for account "${e}" is set multiple times.`,{name:`AccountStateConflictError`})}},no=class extends D{constructor(){super(`state and stateDiff are set on the same account.`,{name:`StateAssignmentConflictError`})}}}));function io(e){let t=Object.entries(e).map(([e,t])=>t===void 0||t===!1?null:[e,t]).filter(Boolean),n=t.reduce((e,[t])=>Math.max(e,t.length),0);return t.map(([e,t])=>` ${`${e}:`.padEnd(n+1)} ${t}`).join(` +`)}var ao,oo,so,co,lo,uo,fo,po,mo,ho=o((()=>{Xa(),Qa(),O(),ao=class extends D{constructor(){super(["Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.","Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."].join(` +`),{name:`FeeConflictError`})}},oo=class extends D{constructor({v:e}){super(`Invalid \`v\` value "${e}". Expected 27 or 28.`,{name:`InvalidLegacyVError`})}},so=class extends D{constructor({transaction:e}){super(`Cannot infer a transaction type from provided transaction.`,{metaMessages:[`Provided Transaction:`,`{`,io(e),`}`,``,`To infer the type, either provide:`,"- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:`InvalidSerializableTransactionError`})}},co=class extends D{constructor({storageKey:e}){super(`Size for storage key "${e}" is invalid. Expected 32 bytes. Got ${Math.floor((e.length-2)/2)} bytes.`,{name:`InvalidStorageKeySizeError`})}},lo=class extends D{constructor(e,{account:t,docsPath:n,chain:r,data:i,gas:a,gasPrice:o,maxFeePerGas:s,maxPriorityFeePerGas:c,nonce:l,to:u,value:d}){let f=io({chain:r&&`${r?.name} (id: ${r?.id})`,from:t?.address,to:u,value:d!==void 0&&`${Ya(d)} ${r?.nativeCurrency?.symbol||`ETH`}`,data:i,gas:a,gasPrice:o!==void 0&&`${Za(o)} gwei`,maxFeePerGas:s!==void 0&&`${Za(s)} gwei`,maxPriorityFeePerGas:c!==void 0&&`${Za(c)} gwei`,nonce:l});super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],`Request Arguments:`,f].filter(Boolean),name:`TransactionExecutionError`}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}},uo=class extends D{constructor({blockHash:e,blockNumber:t,blockTag:n,hash:r,index:i}){let a=`Transaction`;n&&i!==void 0&&(a=`Transaction at block time "${n}" at index "${i}"`),e&&i!==void 0&&(a=`Transaction at block hash "${e}" at index "${i}"`),t&&i!==void 0&&(a=`Transaction at block number "${t}" at index "${i}"`),r&&(a=`Transaction with hash "${r}"`),super(`${a} could not be found.`,{name:`TransactionNotFoundError`})}},fo=class extends D{constructor({hash:e}){super(`Transaction receipt with hash "${e}" could not be found. The Transaction may not be processed on a block yet.`,{name:`TransactionReceiptNotFoundError`})}},po=class extends D{constructor({receipt:e}){super(`Transaction with hash "${e.transactionHash}" reverted.`,{metaMessages:[`The receipt marked the transaction as "reverted". This could mean that the function on the contract you are trying to call threw an error.`,` `,`You can attempt to extract the revert reason by:`,"- calling the `simulateContract` or `simulateCalls` Action with the `abi` and `functionName` of the contract","- using the `call` Action with raw `data`"],name:`TransactionReceiptRevertedError`}),Object.defineProperty(this,`receipt`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.receipt=e}},mo=class extends D{constructor({hash:e}){super(`Timed out while waiting for transaction with hash "${e}" to be confirmed.`,{name:`WaitForTransactionReceiptTimeoutError`})}}})),go,_o,vo=o((()=>{go=e=>e,_o=e=>e})),yo,bo,xo,So,Co,wo,To=o((()=>{ra(),fa(),za(),Mt(),Ua(),ta(),Xa(),Qa(),sn(),O(),ro(),ho(),vo(),yo=class extends D{constructor(e,{account:t,docsPath:n,chain:r,data:i,gas:a,gasPrice:o,maxFeePerGas:s,maxPriorityFeePerGas:c,nonce:l,to:u,value:d,stateOverride:f}){let p=t?na(t):void 0,m=io({from:p?.address,to:u,value:d!==void 0&&`${Ya(d)} ${r?.nativeCurrency?.symbol||`ETH`}`,data:i,gas:a,gasPrice:o!==void 0&&`${Za(o)} gwei`,maxFeePerGas:s!==void 0&&`${Za(s)} gwei`,maxPriorityFeePerGas:c!==void 0&&`${Za(c)} gwei`,nonce:l});f&&(m+=`\n${eo(f)}`),super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],`Raw Call Arguments:`,m].filter(Boolean),name:`CallExecutionError`}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}},bo=class extends D{constructor(e,{abi:t,args:n,contractAddress:r,docsPath:i,functionName:a,sender:o}){let s=Qi({abi:t,args:n,name:a}),c=s?Ha({abiItem:s,args:n,includeFunctionName:!1,includeName:!1}):void 0,l=s?kt(s,{includeName:!0}):void 0,u=io({address:r&&go(r),function:l,args:c&&c!==`()`&&`${[...Array(a?.length??0).keys()].map(()=>` `).join(``)}${c}`,sender:o});super(e.shortMessage||`An unknown error occurred while executing the contract function "${a}".`,{cause:e,docsPath:i,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],u&&`Contract Call:`,u].filter(Boolean),name:`ContractFunctionExecutionError`}),Object.defineProperty(this,`abi`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`args`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`contractAddress`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`formattedArgs`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`functionName`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`sender`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abi=t,this.args=n,this.cause=e,this.contractAddress=r,this.functionName=a,this.sender=o}},xo=class extends D{constructor({abi:e,data:t,functionName:n,message:r}){let i,a,o,s;if(t&&t!==`0x`)try{a=Ra({abi:e,data:t});let{abiItem:n,errorName:r,args:i}=a;if(r===`Error`)s=i[0];else if(r===`Panic`){let[e]=i;s=la[e]}else{let e=n?kt(n,{includeName:!0}):void 0,t=n&&i?Ha({abiItem:n,args:i,includeFunctionName:!1,includeName:!1}):void 0;o=[e?`Error: ${e}`:``,t&&t!==`()`?` ${[...Array(r?.length??0).keys()].map(()=>` `).join(``)}${t}`:``]}}catch(e){i=e}else r&&(s=r);let c;i instanceof Xt&&(c=i.signature,o=[`Unable to decode signature "${c}" as it was not found on the provided ABI.`,`Make sure you are using the correct ABI and that the error exists on it.`,`You can look up the decoded signature here: https://openchain.xyz/signatures?query=${c}.`]),super(s&&s!==`execution reverted`||c?[`The contract function "${n}" reverted with the following ${c?`signature`:`reason`}:`,s||c].join(` +`):`The contract function "${n}" reverted.`,{cause:i,metaMessages:o,name:`ContractFunctionRevertedError`}),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`raw`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`reason`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`signature`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=a,this.raw=t,this.reason=s,this.signature=c}},So=class extends D{constructor({functionName:e}){super(`The contract function "${e}" returned no data ("0x").`,{metaMessages:[`This could be due to any of the following:`,` - The contract does not have the function "${e}",`,` - The parameters passed to the contract function may be invalid, or`,` - The address is not a contract.`],name:`ContractFunctionZeroDataError`})}},Co=class extends D{constructor({factory:e}){super(`Deployment for counterfactual contract call failed${e?` for factory "${e}".`:``}`,{metaMessages:[`Please ensure:`,"- The `factory` is a valid contract deployment factory (ie. Create2 Factory, ERC-4337 Factory, etc).","- The `factoryData` is a valid encoded function call for contract deployment function on the factory."],name:`CounterfactualDeploymentFailedError`})}},wo=class extends D{constructor({data:e,message:t}){super(t||``,{name:`RawContractError`}),Object.defineProperty(this,`code`,{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=e}}})),Eo,Do,Oo,ko=o((()=>{Va(),O(),vo(),Eo=class extends D{constructor({body:e,cause:t,details:n,headers:r,status:i,url:a}){super(`HTTP request failed.`,{cause:t,details:n,metaMessages:[i&&`Status: ${i}`,`URL: ${_o(a)}`,e&&`Request body: ${Ba(e)}`].filter(Boolean),name:`HttpRequestError`}),Object.defineProperty(this,`body`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`headers`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`status`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`url`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.body=e,this.headers=r,this.status=i,this.url=a}},Do=class extends D{constructor({body:e,error:t,url:n}){super(`RPC Request failed.`,{cause:t,details:t.message,metaMessages:[`URL: ${_o(n)}`,`Request body: ${Ba(e)}`],name:`RpcRequestError`}),Object.defineProperty(this,`code`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=t.code,this.data=t.data}},Oo=class extends D{constructor({body:e,url:t}){super(`The request took too long to respond.`,{details:`The request timed out.`,metaMessages:[`URL: ${_o(t)}`,`Request body: ${Ba(e)}`],name:`TimeoutError`})}}})),Ao,jo,Mo,No,j,Po,Fo,Io,Lo,Ro,zo,Bo,Vo,Ho,Uo,Wo,Go,Ko,qo,Jo,Yo,Xo,Zo,Qo,$o,es,ts,ns,rs,os=o((()=>{O(),ko(),Ao=-1,jo=class extends D{constructor(e,{code:t,docsPath:n,metaMessages:r,name:i,shortMessage:a}){super(a,{cause:e,docsPath:n,metaMessages:r||e?.metaMessages,name:i||`RpcError`}),Object.defineProperty(this,`code`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=i||e.name,this.code=e instanceof Do?e.code:t??Ao}},Mo=class extends jo{constructor(e,t){super(e,t),Object.defineProperty(this,`data`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=t.data}},No=class e extends jo{constructor(t){super(t,{code:e.code,name:`ParseRpcError`,shortMessage:`Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.`})}},Object.defineProperty(No,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32700}),j=class e extends jo{constructor(t){super(t,{code:e.code,name:`InvalidRequestRpcError`,shortMessage:`JSON is not a valid request object.`})}},Object.defineProperty(j,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32600}),Po=class e extends jo{constructor(t,{method:n}={}){super(t,{code:e.code,name:`MethodNotFoundRpcError`,shortMessage:`The method${n?` "${n}"`:``} does not exist / is not available.`})}},Object.defineProperty(Po,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32601}),Fo=class e extends jo{constructor(t){super(t,{code:e.code,name:`InvalidParamsRpcError`,shortMessage:[`Invalid parameters were provided to the RPC method.`,`Double check you have provided the correct parameters.`].join(` +`)})}},Object.defineProperty(Fo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32602}),Io=class e extends jo{constructor(t){super(t,{code:e.code,name:`InternalRpcError`,shortMessage:`An internal error was received.`})}},Object.defineProperty(Io,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32603}),Lo=class e extends jo{constructor(t){super(t,{code:e.code,name:`InvalidInputRpcError`,shortMessage:[`Missing or invalid parameters.`,`Double check you have provided the correct parameters.`].join(` +`)})}},Object.defineProperty(Lo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32e3}),Ro=class e extends jo{constructor(t){super(t,{code:e.code,name:`ResourceNotFoundRpcError`,shortMessage:`Requested resource not found.`}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`ResourceNotFoundRpcError`})}},Object.defineProperty(Ro,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32001}),zo=class e extends jo{constructor(t){super(t,{code:e.code,name:`ResourceUnavailableRpcError`,shortMessage:`Requested resource not available.`})}},Object.defineProperty(zo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32002}),Bo=class e extends jo{constructor(t){super(t,{code:e.code,name:`TransactionRejectedRpcError`,shortMessage:`Transaction creation failed.`})}},Object.defineProperty(Bo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32003}),Vo=class e extends jo{constructor(t,{method:n}={}){super(t,{code:e.code,name:`MethodNotSupportedRpcError`,shortMessage:`Method${n?` "${n}"`:``} is not supported.`})}},Object.defineProperty(Vo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32004}),Ho=class e extends jo{constructor(t){super(t,{code:e.code,name:`LimitExceededRpcError`,shortMessage:`Request exceeds defined limit.`})}},Object.defineProperty(Ho,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32005}),Uo=class e extends jo{constructor(t){super(t,{code:e.code,name:`JsonRpcVersionUnsupportedError`,shortMessage:`Version of JSON-RPC protocol is not supported.`})}},Object.defineProperty(Uo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:-32006}),Wo=class e extends Mo{constructor(t){super(t,{code:e.code,name:`UserRejectedRequestError`,shortMessage:`User rejected the request.`})}},Object.defineProperty(Wo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4001}),Go=class e extends Mo{constructor(t){super(t,{code:e.code,name:`UnauthorizedProviderError`,shortMessage:`The requested method and/or account has not been authorized by the user.`})}},Object.defineProperty(Go,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4100}),Ko=class e extends Mo{constructor(t,{method:n}={}){super(t,{code:e.code,name:`UnsupportedProviderMethodError`,shortMessage:`The Provider does not support the requested method${n?` " ${n}"`:``}.`})}},Object.defineProperty(Ko,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4200}),qo=class e extends Mo{constructor(t){super(t,{code:e.code,name:`ProviderDisconnectedError`,shortMessage:`The Provider is disconnected from all chains.`})}},Object.defineProperty(qo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4900}),Jo=class e extends Mo{constructor(t){super(t,{code:e.code,name:`ChainDisconnectedError`,shortMessage:`The Provider is not connected to the requested chain.`})}},Object.defineProperty(Jo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4901}),Yo=class e extends Mo{constructor(t){super(t,{code:e.code,name:`SwitchChainError`,shortMessage:`An error occurred when attempting to switch chain.`})}},Object.defineProperty(Yo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:4902}),Xo=class e extends Mo{constructor(t){super(t,{code:e.code,name:`UnsupportedNonOptionalCapabilityError`,shortMessage:`This Wallet does not support a capability that was not marked as optional.`})}},Object.defineProperty(Xo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5700}),Zo=class e extends Mo{constructor(t){super(t,{code:e.code,name:`UnsupportedChainIdError`,shortMessage:`This Wallet does not support the requested chain ID.`})}},Object.defineProperty(Zo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5710}),Qo=class e extends Mo{constructor(t){super(t,{code:e.code,name:`DuplicateIdError`,shortMessage:`There is already a bundle submitted with this ID.`})}},Object.defineProperty(Qo,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5720}),$o=class e extends Mo{constructor(t){super(t,{code:e.code,name:`UnknownBundleIdError`,shortMessage:`This bundle id is unknown / has not been submitted`})}},Object.defineProperty($o,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5730}),es=class e extends Mo{constructor(t){super(t,{code:e.code,name:`BundleTooLargeError`,shortMessage:`The call bundle is too large for the Wallet to process.`})}},Object.defineProperty(es,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5740}),ts=class e extends Mo{constructor(t){super(t,{code:e.code,name:`AtomicReadyWalletRejectedUpgradeError`,shortMessage:`The Wallet can support atomicity after an upgrade, but the user rejected the upgrade.`})}},Object.defineProperty(ts,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5750}),ns=class e extends Mo{constructor(t){super(t,{code:e.code,name:`AtomicityNotSupportedError`,shortMessage:`The wallet does not support atomic execution but the request requires it.`})}},Object.defineProperty(ns,`code`,{enumerable:!0,configurable:!0,writable:!0,value:5760}),rs=class extends jo{constructor(e){super(e,{name:`UnknownRpcError`,shortMessage:`An unknown RPC error occurred.`})}}}));sn(),O(),To(),ko(),os();var ss=3;function cs(e,{abi:t,address:n,args:r,docsPath:i,functionName:a,sender:o}){let s=e instanceof wo?e:e instanceof D?e.walk(e=>`data`in e)||e.walk():{},{code:c,data:l,details:u,message:d,shortMessage:f}=s,p=(()=>e instanceof Wt?new So({functionName:a}):[ss,Io.code].includes(c)&&(l||u||d||f)?new xo({abi:t,data:typeof l==`object`?l.data:l,functionName:a,message:s instanceof Do?u:f??d}):e)();return new bo(p,{abi:t,args:r,contractAddress:n,docsPath:i,functionName:a,sender:o})}yi(),ei();function ls(e){let t=$r(`0x${e.substring(4)}`).substring(26);return gi(`0x${t}`)}var us,ds,fs,ps,ms=o((()=>{us=(function(){let e=typeof document<`u`&&document.createElement(`link`).relList;return e&&e.supports&&e.supports(`modulepreload`)?`modulepreload`:`preload`})(),ds=function(e){return`/`+e},fs={},ps=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=ds(t,n),t in fs)return;fs[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:us,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})}}));function hs(e,t,n,r){if(typeof e.setBigUint64==`function`)return e.setBigUint64(t,n,r);let i=BigInt(32),a=BigInt(4294967295),o=Number(n>>i&a),s=Number(n&a),c=r?4:0,l=r?0:4;e.setUint32(t+c,o,r),e.setUint32(t+l,s,r)}function gs(e,t,n){return e&t^~e&n}function _s(e,t,n){return e&t^e&n^t&n}var vs,ys,bs,xs,Ss=o((()=>{Nr(),vs=class extends Mr{constructor(e,t,n,r){super(),this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.buffer=new Uint8Array(e),this.view=xr(this.buffer)}update(e){_r(this),e=Er(e),hr(e);let{view:t,buffer:n,blockLen:r}=this,i=e.length;for(let a=0;ar-a&&(this.process(n,0),a=0);for(let e=a;el.length)throw Error(`_sha2: outputLen bigger than state`);for(let e=0;e{Ss(),ur(),Nr(),Cs=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),ws=new Uint32Array(64),Ts=class extends vs{constructor(e=32){super(64,e,8,!1),this.A=ys[0]|0,this.B=ys[1]|0,this.C=ys[2]|0,this.D=ys[3]|0,this.E=ys[4]|0,this.F=ys[5]|0,this.G=ys[6]|0,this.H=ys[7]|0}get(){let{A:e,B:t,C:n,D:r,E:i,F:a,G:o,H:s}=this;return[e,t,n,r,i,a,o,s]}set(e,t,n,r,i,a,o,s){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0,this.F=a|0,this.G=o|0,this.H=s|0}process(e,t){for(let n=0;n<16;n++,t+=4)ws[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){let t=ws[e-15],n=ws[e-2],r=Sr(t,7)^Sr(t,18)^t>>>3;ws[e]=(Sr(n,17)^Sr(n,19)^n>>>10)+ws[e-7]+r+ws[e-16]|0}let{A:n,B:r,C:i,D:a,E:o,F:s,G:c,H:l}=this;for(let e=0;e<64;e++){let t=Sr(o,6)^Sr(o,11)^Sr(o,25),u=l+t+gs(o,s,c)+Cs[e]+ws[e]|0,d=(Sr(n,2)^Sr(n,13)^Sr(n,22))+_s(n,r,i)|0;l=c,c=s,s=o,o=a+u|0,a=i,i=r,r=n,n=u+d|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,a=a+this.D|0,o=o+this.E|0,s=s+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,i,a,o,s,c,l)}roundClean(){br(ws)}destroy(){this.set(0,0,0,0,0,0,0,0),br(this.buffer)}},Es=(()=>Wn(`0x428a2f98d728ae22.0x7137449123ef65cd.0xb5c0fbcfec4d3b2f.0xe9b5dba58189dbbc.0x3956c25bf348b538.0x59f111f1b605d019.0x923f82a4af194f9b.0xab1c5ed5da6d8118.0xd807aa98a3030242.0x12835b0145706fbe.0x243185be4ee4b28c.0x550c7dc3d5ffb4e2.0x72be5d74f27b896f.0x80deb1fe3b1696b1.0x9bdc06a725c71235.0xc19bf174cf692694.0xe49b69c19ef14ad2.0xefbe4786384f25e3.0x0fc19dc68b8cd5b5.0x240ca1cc77ac9c65.0x2de92c6f592b0275.0x4a7484aa6ea6e483.0x5cb0a9dcbd41fbd4.0x76f988da831153b5.0x983e5152ee66dfab.0xa831c66d2db43210.0xb00327c898fb213f.0xbf597fc7beef0ee4.0xc6e00bf33da88fc2.0xd5a79147930aa725.0x06ca6351e003826f.0x142929670a0e6e70.0x27b70a8546d22ffc.0x2e1b21385c26c926.0x4d2c6dfc5ac42aed.0x53380d139d95b3df.0x650a73548baf63de.0x766a0abb3c77b2a8.0x81c2c92e47edaee6.0x92722c851482353b.0xa2bfe8a14cf10364.0xa81a664bbc423001.0xc24b8b70d0f89791.0xc76c51a30654be30.0xd192e819d6ef5218.0xd69906245565a910.0xf40e35855771202a.0x106aa07032bbd1b8.0x19a4c116b8d2d0c8.0x1e376c085141ab53.0x2748774cdf8eeb99.0x34b0bcb5e19b48a8.0x391c0cb3c5c95a63.0x4ed8aa4ae3418acb.0x5b9cca4f7763e373.0x682e6ff3d6b2b8a3.0x748f82ee5defb2fc.0x78a5636f43172f60.0x84c87814a1f0ab72.0x8cc702081a6439ec.0x90befffa23631e28.0xa4506cebde82bde9.0xbef9a3f7b2c67915.0xc67178f2e372532b.0xca273eceea26619c.0xd186b8c721c0c207.0xeada7dd6cde0eb1e.0xf57d4f7fee6ed178.0x06f067aa72176fba.0x0a637dc5a2c898a6.0x113f9804bef90dae.0x1b710b35131c471b.0x28db77f523047d84.0x32caab7b40c72493.0x3c9ebe0a15c9bebc.0x431d67c49c100d4c.0x4cc5d4becb3e42b6.0x597f299cfc657e2a.0x5fcb6fab3ad6faec.0x6c44198c4a475817`.split(`.`).map(e=>BigInt(e))))(),Ds=(()=>Es[0])(),Os=(()=>Es[1])(),ks=new Uint32Array(80),As=new Uint32Array(80),js=class extends vs{constructor(e=64){super(128,e,16,!1),this.Ah=xs[0]|0,this.Al=xs[1]|0,this.Bh=xs[2]|0,this.Bl=xs[3]|0,this.Ch=xs[4]|0,this.Cl=xs[5]|0,this.Dh=xs[6]|0,this.Dl=xs[7]|0,this.Eh=xs[8]|0,this.El=xs[9]|0,this.Fh=xs[10]|0,this.Fl=xs[11]|0,this.Gh=xs[12]|0,this.Gl=xs[13]|0,this.Hh=xs[14]|0,this.Hl=xs[15]|0}get(){let{Ah:e,Al:t,Bh:n,Bl:r,Ch:i,Cl:a,Dh:o,Dl:s,Eh:c,El:l,Fh:u,Fl:d,Gh:f,Gl:p,Hh:m,Hl:h}=this;return[e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h]}set(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=r|0,this.Ch=i|0,this.Cl=a|0,this.Dh=o|0,this.Dl=s|0,this.Eh=c|0,this.El=l|0,this.Fh=u|0,this.Fl=d|0,this.Gh=f|0,this.Gl=p|0,this.Hh=m|0,this.Hl=h|0}process(e,t){for(let n=0;n<16;n++,t+=4)ks[n]=e.getUint32(t),As[n]=e.getUint32(t+=4);for(let e=16;e<80;e++){let t=ks[e-15]|0,n=As[e-15]|0,r=Xn(t,n,1)^Xn(t,n,8)^Jn(t,n,7),i=Zn(t,n,1)^Zn(t,n,8)^Yn(t,n,7),a=ks[e-2]|0,o=As[e-2]|0,s=Xn(a,o,19)^Qn(a,o,61)^Jn(a,o,6),c=Zn(a,o,19)^$n(a,o,61)^Yn(a,o,6),l=or(i,c,As[e-7],As[e-16]);ks[e]=sr(l,r,s,ks[e-7],ks[e-16])|0,As[e]=l|0}let{Ah:n,Al:r,Bh:i,Bl:a,Ch:o,Cl:s,Dh:c,Dl:l,Eh:u,El:d,Fh:f,Fl:p,Gh:m,Gl:h,Hh:g,Hl:_}=this;for(let e=0;e<80;e++){let t=Xn(u,d,14)^Xn(u,d,18)^Qn(u,d,41),v=Zn(u,d,14)^Zn(u,d,18)^$n(u,d,41),y=u&f^~u&m,b=d&p^~d&h,x=cr(_,v,b,Os[e],As[e]),S=lr(x,g,t,y,Ds[e],ks[e]),C=x|0,w=Xn(n,r,28)^Qn(n,r,34)^Qn(n,r,39),ee=Zn(n,r,28)^$n(n,r,34)^$n(n,r,39),te=n&i^n&o^i&o,ne=r&a^r&s^a&s;g=m|0,_=h|0,m=f|0,h=p|0,f=u|0,p=d|0,{h:u,l:d}=Gn(c|0,l|0,S|0,C|0),c=o|0,l=s|0,o=i|0,s=a|0,i=n|0,a=r|0;let re=ir(C,ee,ne);n=ar(re,S,w,te),r=re|0}({h:n,l:r}=Gn(this.Ah|0,this.Al|0,n|0,r|0)),{h:i,l:a}=Gn(this.Bh|0,this.Bl|0,i|0,a|0),{h:o,l:s}=Gn(this.Ch|0,this.Cl|0,o|0,s|0),{h:c,l}=Gn(this.Dh|0,this.Dl|0,c|0,l|0),{h:u,l:d}=Gn(this.Eh|0,this.El|0,u|0,d|0),{h:f,l:p}=Gn(this.Fh|0,this.Fl|0,f|0,p|0),{h:m,l:h}=Gn(this.Gh|0,this.Gl|0,m|0,h|0),{h:g,l:_}=Gn(this.Hh|0,this.Hl|0,g|0,_|0),this.set(n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_)}roundClean(){br(ks,As)}destroy(){br(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},Ms=class extends js{constructor(){super(48),this.Ah=bs[0]|0,this.Al=bs[1]|0,this.Bh=bs[2]|0,this.Bl=bs[3]|0,this.Ch=bs[4]|0,this.Cl=bs[5]|0,this.Dh=bs[6]|0,this.Dl=bs[7]|0,this.Eh=bs[8]|0,this.El=bs[9]|0,this.Fh=bs[10]|0,this.Fl=bs[11]|0,this.Gh=bs[12]|0,this.Gl=bs[13]|0,this.Hh=bs[14]|0,this.Hl=bs[15]|0}},Ns=Or(()=>new Ts),Ps=Or(()=>new js),Fs=Or(()=>new Ms)})),Ls,Rs,zs=o((()=>{Nr(),Ls=class extends Mr{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,gr(e);let n=Er(t);if(this.iHash=e.create(),typeof this.iHash.update!=`function`)throw Error(`Expected instance of class which extends utils.Hash`);this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let r=this.blockLen,i=new Uint8Array(r);i.set(n.length>r?e.create().update(n).digest():n);for(let e=0;enew Ls(e,t).update(n).digest(),Rs.create=(e,t)=>new Ls(e,t)}));function Bs(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`}function Vs(e){if(!Bs(e))throw Error(`Uint8Array expected`)}function Hs(e,t){if(typeof t!=`boolean`)throw Error(e+` boolean expected, got `+t)}function Us(e){let t=e.toString(16);return t.length&1?`0`+t:t}function Ws(e){if(typeof e!=`string`)throw Error(`hex string expected, got `+typeof e);return e===``?sc:BigInt(`0x`+e)}function Gs(e){if(Vs(e),lc)return e.toHex();let t=``;for(let n=0;n=dc._0&&e<=dc._9)return e-dc._0;if(e>=dc.A&&e<=dc.F)return e-(dc.A-10);if(e>=dc.a&&e<=dc.f)return e-(dc.a-10)}function qs(e){if(typeof e!=`string`)throw Error(`hex string expected, got `+typeof e);if(lc)return Uint8Array.fromHex(e);let t=e.length,n=t/2;if(t%2)throw Error(`hex string expected, got unpadded hex of length `+t);let r=new Uint8Array(n);for(let t=0,i=0;tsc;e>>=cc,t+=1);return t}function ic(e,t,n){if(typeof e!=`number`||e<2)throw Error(`hashLen must be a number`);if(typeof t!=`number`||t<2)throw Error(`qByteLen must be a number`);if(typeof n!=`function`)throw Error(`hmacFn must be a function`);let r=mc(e),i=mc(e),a=0,o=()=>{r.fill(1),i.fill(0),a=0},s=(...e)=>n(i,r,...e),c=(e=mc(0))=>{i=s(hc([0]),e),r=s(),e.length!==0&&(i=s(hc([1]),e),r=s())},l=()=>{if(a++>=1e3)throw Error(`drbg: tried 1000 values`);let e=0,n=[];for(;e{o(),c(e);let n;for(;!(n=t(l()));)c();return o(),n}}function ac(e,t,n={}){let r=(t,n,r)=>{let i=gc[n];if(typeof i!=`function`)throw Error(`invalid validator function`);let a=e[t];if(!(r&&a===void 0)&&!i(a,e))throw Error(`param `+String(t)+` is invalid. Expected `+n+`, got `+a)};for(let[e,n]of Object.entries(t))r(e,n,!1);for(let[e,t]of Object.entries(n))r(e,t,!0);return e}function oc(e){let t=new WeakMap;return(n,...r)=>{let i=t.get(n);if(i!==void 0)return i;let a=e(n,...r);return t.set(n,a),a}}var sc,cc,lc,uc,dc,fc,pc,mc,hc,gc,_c=o((()=>{sc=BigInt(0),cc=BigInt(1),lc=typeof Uint8Array.from([]).toHex==`function`&&typeof Uint8Array.fromHex==`function`,uc=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`)),dc={_0:48,_9:57,A:65,F:70,a:97,f:102},fc=e=>typeof e==`bigint`&&sc<=e,pc=e=>(cc<new Uint8Array(e),hc=e=>Uint8Array.from(e),gc={bigint:e=>typeof e==`bigint`,function:e=>typeof e==`function`,boolean:e=>typeof e==`boolean`,string:e=>typeof e==`string`,stringOrUint8Array:e=>typeof e==`string`||Bs(e),isSafeInteger:e=>Number.isSafeInteger(e),array:e=>Array.isArray(e),field:(e,t)=>t.Fp.isValid(e),hash:e=>typeof e==`function`&&Number.isSafeInteger(e.outputLen)}}));function vc(e,t){let n=e%t;return n>=Pc?n:t+n}function yc(e,t,n){let r=e;for(;t-- >Pc;)r*=r,r%=n;return r}function bc(e,t){if(e===Pc)throw Error(`invert: expected non-zero number`);if(t<=Pc)throw Error(`invert: expected positive modulus, got `+t);let n=vc(e,t),r=t,i=Pc,a=Fc,o=Fc,s=Pc;for(;n!==Pc;){let e=r/n,t=r%n,c=i-o*e,l=a-s*e;r=n,n=t,i=o,a=s,o=c,s=l}if(r!==Fc)throw Error(`invert: does not exist`);return vc(i,t)}function xc(e,t){let n=(e.ORDER+Fc)/Rc,r=e.pow(t,n);if(!e.eql(e.sqr(r),t))throw Error(`Cannot find square root`);return r}function Sc(e,t){let n=(e.ORDER-zc)/Bc,r=e.mul(t,Ic),i=e.pow(r,n),a=e.mul(t,i),o=e.mul(e.mul(a,Ic),i),s=e.mul(a,e.sub(o,e.ONE));if(!e.eql(e.sqr(s),t))throw Error(`Cannot find square root`);return s}function Cc(e){if(e1e3)throw Error(`Cannot find square root: probably non-prime P`);if(n===1)return xc;let a=i.pow(r,t),o=(t+Fc)/Ic;return function(e,r){if(e.is0(r))return r;if(Oc(e,r)!==1)throw Error(`Cannot find square root`);let i=n,s=e.mul(e.ONE,a),c=e.pow(r,t),l=e.pow(r,o);for(;!e.eql(c,e.ONE);){if(e.is0(c))return e.ZERO;let t=1,n=e.sqr(c);for(;!e.eql(n,e.ONE);)if(t++,n=e.sqr(n),t===i)throw Error(`Cannot find square root`);let r=Fc<(e[t]=`function`,e),{ORDER:`bigint`,MASK:`bigint`,BYTES:`isSafeInteger`,BITS:`isSafeInteger`});return ac(e,t)}function Ec(e,t,n){if(nPc;)n&Fc&&(r=e.mul(r,i)),i=e.sqr(i),n>>=Fc;return r}function Dc(e,t,n=!1){let r=Array(t.length).fill(n?e.ZERO:void 0),i=t.reduce((t,n,i)=>e.is0(n)?t:(r[i]=t,e.mul(t,n)),e.ONE),a=e.inv(i);return t.reduceRight((t,n,i)=>e.is0(n)?t:(r[i]=e.mul(t,r[i]),e.mul(t,n)),a),r}function Oc(e,t){let n=(e.ORDER-Fc)/Ic,r=e.pow(t,n),i=e.eql(r,e.ONE),a=e.eql(r,e.ZERO),o=e.eql(r,e.neg(e.ONE));if(!i&&!a&&!o)throw Error(`invalid Legendre symbol result`);return i?1:a?0:-1}function kc(e,t){t!==void 0&&mr(t);let n=t===void 0?e.toString(2).length:t,r=Math.ceil(n/8);return{nBitLength:n,nByteLength:r}}function Ac(e,t,n=!1,r={}){if(e<=Pc)throw Error(`invalid field: expected ORDER > 0, got `+e);let{nBitLength:i,nByteLength:a}=kc(e,t);if(a>2048)throw Error(`invalid field: expected ORDER of <= 2048 bytes`);let o,s=Object.freeze({ORDER:e,isLE:n,BITS:i,BYTES:a,MASK:pc(i),ZERO:Pc,ONE:Fc,create:t=>vc(t,e),isValid:t=>{if(typeof t!=`bigint`)throw Error(`invalid field element: expected bigint, got `+typeof t);return Pc<=t&&te===Pc,isOdd:e=>(e&Fc)===Fc,neg:t=>vc(-t,e),eql:(e,t)=>e===t,sqr:t=>vc(t*t,e),add:(t,n)=>vc(t+n,e),sub:(t,n)=>vc(t-n,e),mul:(t,n)=>vc(t*n,e),pow:(e,t)=>Ec(s,e,t),div:(t,n)=>vc(t*bc(n,e),e),sqrN:e=>e*e,addN:(e,t)=>e+t,subN:(e,t)=>e-t,mulN:(e,t)=>e*t,inv:t=>bc(t,e),sqrt:r.sqrt||(t=>(o||=wc(e),o(s,t))),toBytes:e=>n?Zs(e,a):Xs(e,a),fromBytes:e=>{if(e.length!==a)throw Error(`Field.fromBytes: expected `+a+` bytes, got `+e.length);return n?Ys(e):Js(e)},invertBatch:e=>Dc(s,e),cmov:(e,t,n)=>n?t:e});return Object.freeze(s)}function jc(e){if(typeof e!=`bigint`)throw Error(`field order must be bigint`);let t=e.toString(2).length;return Math.ceil(t/8)}function Mc(e){let t=jc(e);return t+Math.ceil(t/2)}function Nc(e,t,n=!1){let r=e.length,i=jc(t),a=Mc(t);if(r<16||r1024)throw Error(`expected `+a+`-1024 bytes of input, got `+r);let o=n?Ys(e):Js(e),s=vc(o,t-Fc)+Fc;return n?Zs(s,i):Xs(s,i)}var Pc,Fc,Ic,Lc,Rc,zc,Bc,Vc,Hc=o((()=>{Nr(),_c(),Pc=BigInt(0),Fc=BigInt(1),Ic=BigInt(2),Lc=BigInt(3),Rc=BigInt(4),zc=BigInt(5),Bc=BigInt(8),Vc=[`create`,`isValid`,`is0`,`neg`,`inv`,`sqrt`,`sqr`,`eql`,`add`,`sub`,`mul`,`pow`,`div`,`addN`,`subN`,`mulN`,`sqrN`]}));function Uc(e,t){let n=t.negate();return e?n:t}function Wc(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw Error(`invalid window size, expected [1..`+t+`], got W=`+e)}function Gc(e,t){Wc(e,t);let n=Math.ceil(t/e)+1,r=2**(e-1),i=2**e,a=pc(e),o=BigInt(e);return{windows:n,windowSize:r,mask:a,maxNumber:i,shiftBy:o}}function Kc(e,t,n){let{windowSize:r,mask:i,maxNumber:a,shiftBy:o}=n,s=Number(e&i),c=e>>o;s>r&&(s-=a,c+=el);let l=t*r,u=l+Math.abs(s)-1,d=s===0,f=s<0,p=t%2!=0;return{nextN:c,offset:u,isZero:d,isNeg:f,isNegF:p,offsetF:l}}function qc(e,t){if(!Array.isArray(e))throw Error(`array expected`);e.forEach((e,n)=>{if(!(e instanceof t))throw Error(`invalid point at index `+n)})}function Jc(e,t){if(!Array.isArray(e))throw Error(`array of scalars expected`);e.forEach((e,n)=>{if(!t.isValid(e))throw Error(`invalid scalar at index `+n)})}function Yc(e){return nl.get(e)||1}function Xc(e,t){return{constTimeNegate:Uc,hasPrecomputes(e){return Yc(e)!==1},unsafeLadder(t,n,r=e.ZERO){let i=t;for(;n>$c;)n&el&&(r=r.add(i)),i=i.double(),n>>=el;return r},precomputeWindow(e,n){let{windows:r,windowSize:i}=Gc(n,t),a=[],o=e,s=o;for(let e=0;e12?c=s-3:s>4?c=s-2:s>0&&(c=2);let l=pc(c),u=Array(Number(l)+1).fill(o),d=Math.floor((t.BITS-1)/c)*c,f=o;for(let e=d;e>=0;e-=c){u.fill(o);for(let t=0;t>BigInt(e)&l);u[a]=u[a].add(n[t])}let t=o;for(let e=u.length-1,n=o;e>0;e--)n=n.add(u[e]),t=t.add(n);if(f=f.add(t),e!==0)for(let e=0;e{Hc(),_c(),$c=BigInt(0),el=BigInt(1),tl=new WeakMap,nl=new WeakMap}));function il(e){e.lowS!==void 0&&Hs(`lowS`,e.lowS),e.prehash!==void 0&&Hs(`prehash`,e.prehash)}function al(e){let t=Qc(e);ac(t,{a:`field`,b:`field`},{allowInfinityPoint:`boolean`,allowedPrivateKeyLengths:`array`,clearCofactor:`function`,fromBytes:`function`,isTorsionFree:`function`,toBytes:`function`,wrapPrivateKey:`boolean`});let{endo:n,Fp:r,a:i}=t;if(n){if(!r.eql(i,r.ZERO))throw Error(`invalid endo: CURVE.a must be 0`);if(typeof n!=`object`||typeof n.beta!=`bigint`||typeof n.splitScalar!=`function`)throw Error(`invalid endo: expected "beta": bigint and "splitScalar": function`)}return Object.freeze({...t})}function ol(e,t){return Gs(Xs(e,t))}function sl(e){let t=al(e),{Fp:n}=t,r=Ac(t.n,t.nBitLength),i=t.toBytes||((e,t,r)=>{let i=t.toAffine();return $s(Uint8Array.from([4]),n.toBytes(i.x),n.toBytes(i.y))}),a=t.fromBytes||(e=>{let t=e.subarray(1),r=n.fromBytes(t.subarray(0,n.BYTES)),i=n.fromBytes(t.subarray(n.BYTES,2*n.BYTES));return{x:r,y:i}});function o(e){let{a:r,b:i}=t,a=n.sqr(e),o=n.mul(a,e);return n.add(n.add(o,n.mul(e,r)),i)}function s(e,t){let r=n.sqr(t),i=o(e);return n.eql(r,i)}if(!s(t.Gx,t.Gy))throw Error(`bad curve params: generator point`);let c=n.mul(n.pow(t.a,_l),vl),l=n.mul(n.sqr(t.b),BigInt(27));if(n.is0(n.add(c,l)))throw Error(`bad curve params: a or b`);function u(e){return tc(e,hl,t.n)}function d(e){let{allowedPrivateKeyLengths:n,nByteLength:r,wrapPrivateKey:i,n:a}=t;if(n&&typeof e!=`bigint`){if(Bs(e)&&(e=Gs(e)),typeof e!=`string`||!n.includes(e.length))throw Error(`invalid private key`);e=e.padStart(r*2,`0`)}let o;try{o=typeof e==`bigint`?e:Js(Qs(`private key`,e,r))}catch{throw Error(`invalid private key, expected hex or `+r+` bytes, got `+typeof e)}return i&&(o=vc(o,a)),nc(`private key`,o,hl,a),o}function f(e){if(!(e instanceof h))throw Error(`ProjectivePoint expected`)}let p=oc((e,t)=>{let{px:r,py:i,pz:a}=e;if(n.eql(a,n.ONE))return{x:r,y:i};let o=e.is0();t??=o?n.ONE:n.inv(a);let s=n.mul(r,t),c=n.mul(i,t),l=n.mul(a,t);if(o)return{x:n.ZERO,y:n.ZERO};if(!n.eql(l,n.ONE))throw Error(`invZ was invalid`);return{x:s,y:c}}),m=oc(e=>{if(e.is0()){if(t.allowInfinityPoint&&!n.is0(e.py))return;throw Error(`bad point: ZERO`)}let{x:r,y:i}=e.toAffine();if(!n.isValid(r)||!n.isValid(i))throw Error(`bad point: x or y not FE`);if(!s(r,i))throw Error(`bad point: equation left != right`);if(!e.isTorsionFree())throw Error(`bad point: not in prime-order subgroup`);return!0});class h{constructor(e,t,r){if(e==null||!n.isValid(e))throw Error(`x required`);if(t==null||!n.isValid(t)||n.is0(t))throw Error(`y required`);if(r==null||!n.isValid(r))throw Error(`z required`);this.px=e,this.py=t,this.pz=r,Object.freeze(this)}static fromAffine(e){let{x:t,y:r}=e||{};if(!e||!n.isValid(t)||!n.isValid(r))throw Error(`invalid affine point`);if(e instanceof h)throw Error(`projective point not allowed`);let i=e=>n.eql(e,n.ZERO);return i(t)&&i(r)?h.ZERO:new h(t,r,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(e){let t=Dc(n,e.map(e=>e.pz));return e.map((e,n)=>e.toAffine(t[n])).map(h.fromAffine)}static fromHex(e){let t=h.fromAffine(a(Qs(`pointHex`,e)));return t.assertValidity(),t}static fromPrivateKey(e){return h.BASE.multiply(d(e))}static msm(e,t){return Zc(h,r,e,t)}_setWindowSize(e){v.setWindowSize(this,e)}assertValidity(){m(this)}hasEvenY(){let{y:e}=this.toAffine();if(n.isOdd)return!n.isOdd(e);throw Error(`Field doesn't support isOdd`)}equals(e){f(e);let{px:t,py:r,pz:i}=this,{px:a,py:o,pz:s}=e,c=n.eql(n.mul(t,s),n.mul(a,i)),l=n.eql(n.mul(r,s),n.mul(o,i));return c&&l}negate(){return new h(this.px,n.neg(this.py),this.pz)}double(){let{a:e,b:r}=t,i=n.mul(r,_l),{px:a,py:o,pz:s}=this,c=n.ZERO,l=n.ZERO,u=n.ZERO,d=n.mul(a,a),f=n.mul(o,o),p=n.mul(s,s),m=n.mul(a,o);return m=n.add(m,m),u=n.mul(a,s),u=n.add(u,u),c=n.mul(e,u),l=n.mul(i,p),l=n.add(c,l),c=n.sub(f,l),l=n.add(f,l),l=n.mul(c,l),c=n.mul(m,c),u=n.mul(i,u),p=n.mul(e,p),m=n.sub(d,p),m=n.mul(e,m),m=n.add(m,u),u=n.add(d,d),d=n.add(u,d),d=n.add(d,p),d=n.mul(d,m),l=n.add(l,d),p=n.mul(o,s),p=n.add(p,p),d=n.mul(p,m),c=n.sub(c,d),u=n.mul(p,f),u=n.add(u,u),u=n.add(u,u),new h(c,l,u)}add(e){f(e);let{px:r,py:i,pz:a}=this,{px:o,py:s,pz:c}=e,l=n.ZERO,u=n.ZERO,d=n.ZERO,p=t.a,m=n.mul(t.b,_l),g=n.mul(r,o),_=n.mul(i,s),v=n.mul(a,c),y=n.add(r,i),b=n.add(o,s);y=n.mul(y,b),b=n.add(g,_),y=n.sub(y,b),b=n.add(r,a);let x=n.add(o,c);return b=n.mul(b,x),x=n.add(g,v),b=n.sub(b,x),x=n.add(i,a),l=n.add(s,c),x=n.mul(x,l),l=n.add(_,v),x=n.sub(x,l),d=n.mul(p,b),l=n.mul(m,v),d=n.add(l,d),l=n.sub(_,d),d=n.add(_,d),u=n.mul(l,d),_=n.add(g,g),_=n.add(_,g),v=n.mul(p,v),b=n.mul(m,b),_=n.add(_,v),v=n.sub(g,v),v=n.mul(p,v),b=n.add(b,v),g=n.mul(_,b),u=n.add(u,g),g=n.mul(x,b),l=n.mul(y,l),l=n.sub(l,g),g=n.mul(y,_),d=n.mul(x,d),d=n.add(d,g),new h(l,u,d)}subtract(e){return this.add(e.negate())}is0(){return this.equals(h.ZERO)}wNAF(e){return v.wNAFCached(this,e,h.normalizeZ)}multiplyUnsafe(e){let{endo:r,n:i}=t;nc(`scalar`,e,ml,i);let a=h.ZERO;if(e===ml)return a;if(this.is0()||e===hl)return this;if(!r||v.hasPrecomputes(this))return v.wNAFCachedUnsafe(this,e,h.normalizeZ);let{k1neg:o,k1:s,k2neg:c,k2:l}=r.splitScalar(e),u=a,d=a,f=this;for(;s>ml||l>ml;)s&hl&&(u=u.add(f)),l&hl&&(d=d.add(f)),f=f.double(),s>>=hl,l>>=hl;return o&&(u=u.negate()),c&&(d=d.negate()),d=new h(n.mul(d.px,r.beta),d.py,d.pz),u.add(d)}multiply(e){let{endo:r,n:i}=t;nc(`scalar`,e,hl,i);let a,o;if(r){let{k1neg:t,k1:i,k2neg:s,k2:c}=r.splitScalar(e),{p:l,f:u}=this.wNAF(i),{p:d,f}=this.wNAF(c);l=v.constTimeNegate(t,l),d=v.constTimeNegate(s,d),d=new h(n.mul(d.px,r.beta),d.py,d.pz),a=l.add(d),o=u.add(f)}else{let{p:t,f:n}=this.wNAF(e);a=t,o=n}return h.normalizeZ([a,o])[0]}multiplyAndAddUnsafe(e,t,n){let r=h.BASE,i=(e,t)=>t===ml||t===hl||!e.equals(r)?e.multiplyUnsafe(t):e.multiply(t),a=i(this,t).add(i(e,n));return a.is0()?void 0:a}toAffine(e){return p(this,e)}isTorsionFree(){let{h:e,isTorsionFree:n}=t;if(e===hl)return!0;if(n)return n(h,this);throw Error(`isTorsionFree() has not been declared for the elliptic curve`)}clearCofactor(){let{h:e,clearCofactor:n}=t;return e===hl?this:n?n(h,this):this.multiplyUnsafe(t.h)}toRawBytes(e=!0){return Hs(`isCompressed`,e),this.assertValidity(),i(h,this,e)}toHex(e=!0){return Hs(`isCompressed`,e),Gs(this.toRawBytes(e))}}h.BASE=new h(t.Gx,t.Gy,n.ONE),h.ZERO=new h(n.ZERO,n.ONE,n.ZERO);let{endo:g,nBitLength:_}=t,v=Xc(h,g?Math.ceil(_/2):_);return{CURVE:t,ProjectivePoint:h,normPrivateKeyToScalar:d,weierstrassEquation:o,isWithinCurveOrder:u}}function cl(e){let t=Qc(e);return ac(t,{hash:`hash`,hmac:`function`,randomBytes:`function`},{bits2int:`function`,bits2int_modN:`function`,lowS:`boolean`}),Object.freeze({lowS:!0,...t})}function ll(e){let t=cl(e),{Fp:n,n:r,nByteLength:i,nBitLength:a}=t,o=n.BYTES+1,s=2*n.BYTES+1;function c(e){return vc(e,r)}function l(e){return bc(e,r)}let{ProjectivePoint:u,normPrivateKeyToScalar:d,weierstrassEquation:f,isWithinCurveOrder:p}=sl({...t,toBytes(e,t,r){let i=t.toAffine(),a=n.toBytes(i.x),o=$s;return Hs(`isCompressed`,r),r?o(Uint8Array.from([t.hasEvenY()?2:3]),a):o(Uint8Array.from([4]),a,n.toBytes(i.y))},fromBytes(e){let t=e.length,r=e[0],i=e.subarray(1);if(t===o&&(r===2||r===3)){let e=Js(i);if(!tc(e,hl,n.ORDER))throw Error(`Point is not on curve`);let t=f(e),a;try{a=n.sqrt(t)}catch(e){let t=e instanceof Error?`: `+e.message:``;throw Error(`Point is not on curve`+t)}let o=(a&hl)===hl;return(r&1)==1!==o&&(a=n.neg(a)),{x:e,y:a}}else if(t===s&&r===4){let e=n.fromBytes(i.subarray(0,n.BYTES)),t=n.fromBytes(i.subarray(n.BYTES,2*n.BYTES));return{x:e,y:t}}else{let e=o,n=s;throw Error(`invalid Point, expected length of `+e+`, or uncompressed `+n+`, got `+t)}}});function m(e){let t=r>>hl;return e>t}function h(e){return m(e)?c(-e):e}let g=(e,t,n)=>Js(e.slice(t,n));class _{constructor(e,t,n){nc(`r`,e,hl,r),nc(`s`,t,hl,r),this.r=e,this.s=t,n!=null&&(this.recovery=n),Object.freeze(this)}static fromCompact(e){let t=i;return e=Qs(`compactSignature`,e,t*2),new _(g(e,0,t),g(e,t,2*t))}static fromDER(e){let{r:t,s:n}=pl.toSig(Qs(`DER`,e));return new _(t,n)}assertValidity(){}addRecoveryBit(e){return new _(this.r,this.s,e)}recoverPublicKey(e){let{r,s:i,recovery:a}=this,o=C(Qs(`msgHash`,e));if(a==null||![0,1,2,3].includes(a))throw Error(`recovery id invalid`);let s=a===2||a===3?r+t.n:r;if(s>=n.ORDER)throw Error(`recovery id 2 or 3 invalid`);let d=a&1?`03`:`02`,f=u.fromHex(d+ol(s,n.BYTES)),p=l(s),m=c(-o*p),h=c(i*p),g=u.BASE.multiplyAndAddUnsafe(f,m,h);if(!g)throw Error(`point at infinify`);return g.assertValidity(),g}hasHighS(){return m(this.s)}normalizeS(){return this.hasHighS()?new _(this.r,c(-this.s),this.recovery):this}toDERRawBytes(){return qs(this.toDERHex())}toDERHex(){return pl.hexFromSig(this)}toCompactRawBytes(){return qs(this.toCompactHex())}toCompactHex(){let e=i;return ol(this.r,e)+ol(this.s,e)}}let v={isValidPrivateKey(e){try{return d(e),!0}catch{return!1}},normPrivateKeyToScalar:d,randomPrivateKey:()=>{let e=Mc(t.n);return Nc(t.randomBytes(e),t.n)},precompute(e=8,t=u.BASE){return t._setWindowSize(e),t.multiply(BigInt(3)),t}};function y(e,t=!0){return u.fromPrivateKey(e).toRawBytes(t)}function b(e){if(typeof e==`bigint`)return!1;if(e instanceof u)return!0;let r=Qs(`key`,e).length,a=n.BYTES,o=a+1,s=2*a+1;if(!(t.allowedPrivateKeyLengths||i===o))return r===o||r===s}function x(e,t,n=!0){if(b(e)===!0)throw Error(`first arg must be private key`);if(b(t)===!1)throw Error(`second arg must be public key`);return u.fromHex(t).multiply(d(e)).toRawBytes(n)}let S=t.bits2int||function(e){if(e.length>8192)throw Error(`input is too large`);let t=Js(e),n=e.length*8-a;return n>0?t>>BigInt(n):t},C=t.bits2int_modN||function(e){return c(S(e))},w=pc(a);function ee(e){return nc(`num < 2^`+a,e,ml,w),Xs(e,i)}function te(e,r,i=ne){if([`recovered`,`canonical`].some(e=>e in i))throw Error(`sign() legacy options not supported`);let{hash:a,randomBytes:o}=t,{lowS:s,prehash:f,extraEntropy:g}=i;s??=!0,e=Qs(`msgHash`,e),il(i),f&&(e=Qs(`prehashed msgHash`,a(e)));let v=C(e),y=d(r),b=[ee(y),ee(v)];if(g!=null&&g!==!1){let e=g===!0?o(n.BYTES):g;b.push(Qs(`extraEntropy`,e))}let x=$s(...b),w=v;function te(e){let t=S(e);if(!p(t))return;let n=l(t),r=u.BASE.multiply(t).toAffine(),i=c(r.x);if(i===ml)return;let a=c(n*c(w+i*y));if(a===ml)return;let o=(r.x===i?0:2)|Number(r.y&hl),d=a;return s&&m(a)&&(d=h(a),o^=1),new _(i,d,o)}return{seed:x,k2sig:te}}let ne={lowS:t.lowS,prehash:!1},re={lowS:t.lowS,prehash:!1};function ie(e,n,r=ne){let{seed:i,k2sig:a}=te(e,n,r),o=t;return ic(o.hash.outputLen,o.nByteLength,o.hmac)(i,a)}u.BASE._setWindowSize(8);function ae(e,n,r,i=re){let a=e;n=Qs(`msgHash`,n),r=Qs(`publicKey`,r);let{lowS:o,prehash:s,format:d}=i;if(il(i),`strict`in i)throw Error(`options.strict was renamed to lowS`);if(d!==void 0&&d!==`compact`&&d!==`der`)throw Error(`format must be compact or der`);let f=typeof a==`string`||Bs(a),p=!f&&!d&&typeof a==`object`&&!!a&&typeof a.r==`bigint`&&typeof a.s==`bigint`;if(!f&&!p)throw Error(`invalid signature, expected Uint8Array, hex string or Signature instance`);let m,h;try{if(p&&(m=new _(a.r,a.s)),f){try{d!==`compact`&&(m=_.fromDER(a))}catch(e){if(!(e instanceof pl.Err))throw e}!m&&d!==`der`&&(m=_.fromCompact(a))}h=u.fromHex(r)}catch{return!1}if(!m||o&&m.hasHighS())return!1;s&&(n=t.hash(n));let{r:g,s:v}=m,y=C(n),b=l(v),x=c(y*b),S=c(g*b),w=u.BASE.multiplyAndAddUnsafe(h,x,S)?.toAffine();return w?c(w.x)===g:!1}return{CURVE:t,getPublicKey:y,getSharedSecret:x,sign:ie,verify:ae,ProjectivePoint:u,Signature:_,utils:v}}function ul(e,t){let n=e.ORDER,r=ml;for(let e=n-hl;e%gl===ml;e/=gl)r+=hl;let i=r,a=gl<{let r=d,a=e.pow(n,l),o=e.sqr(a);o=e.mul(o,n);let s=e.mul(t,o);s=e.pow(s,c),s=e.mul(s,a),a=e.mul(s,n),o=e.mul(s,t);let p=e.mul(o,a);s=e.pow(p,u);let m=e.eql(s,e.ONE);a=e.mul(o,f),s=e.mul(p,r),o=e.cmov(a,o,m),p=e.cmov(s,p,m);for(let t=i;t>hl;t--){let n=t-gl;n=gl<{let a=e.sqr(i),o=e.mul(t,i);a=e.mul(a,o);let s=e.pow(a,n);s=e.mul(s,o);let c=e.mul(s,r),l=e.mul(e.sqr(s),i),u=e.eql(l,t),d=e.cmov(c,s,u);return{isValid:u,value:d}}}return p}function dl(e,t){if(Tc(e),!e.isValid(t.A)||!e.isValid(t.B)||!e.isValid(t.Z))throw Error(`mapToCurveSimpleSWU: invalid opts`);let n=ul(e,t.Z);if(!e.isOdd)throw Error(`Fp.isOdd is not implemented!`);return r=>{let i,a,o,s,c,l,u,d;i=e.sqr(r),i=e.mul(i,t.Z),a=e.sqr(i),a=e.add(a,i),o=e.add(a,e.ONE),o=e.mul(o,t.B),s=e.cmov(t.Z,e.neg(a),!e.eql(a,e.ZERO)),s=e.mul(s,t.A),a=e.sqr(o),l=e.sqr(s),c=e.mul(l,t.A),a=e.add(a,c),a=e.mul(a,o),l=e.mul(l,s),c=e.mul(l,t.B),a=e.add(a,c),u=e.mul(i,o);let{isValid:f,value:p}=n(a,l);d=e.mul(i,r),d=e.mul(d,p),u=e.cmov(u,o,f),d=e.cmov(d,p,f);let m=e.isOdd(r)===e.isOdd(d);d=e.cmov(e.neg(d),d,m);let h=Dc(e,[s],!0)[0];return u=e.mul(u,h),{x:u,y:d}}}var fl,pl,ml,hl,gl,_l,vl,yl=o((()=>{rl(),Hc(),_c(),fl=class extends Error{constructor(e=``){super(e)}},pl={Err:fl,_tlv:{encode:(e,t)=>{let{Err:n}=pl;if(e<0||e>256)throw new n(`tlv.encode: wrong tag`);if(t.length&1)throw new n(`tlv.encode: unpadded data`);let r=t.length/2,i=Us(r);if(i.length/2&128)throw new n(`tlv.encode: long form length too big`);let a=r>127?Us(i.length/2|128):``;return Us(e)+a+i+t},decode(e,t){let{Err:n}=pl,r=0;if(e<0||e>256)throw new n(`tlv.encode: wrong tag`);if(t.length<2||t[r++]!==e)throw new n(`tlv.decode: wrong tlv`);let i=t[r++],a=!!(i&128),o=0;if(!a)o=i;else{let e=i&127;if(!e)throw new n(`tlv.decode(long): indefinite length not supported`);if(e>4)throw new n(`tlv.decode(long): byte length is too big`);let a=t.subarray(r,r+e);if(a.length!==e)throw new n(`tlv.decode: length bytes not complete`);if(a[0]===0)throw new n(`tlv.decode(long): zero leftmost byte`);for(let e of a)o=o<<8|e;if(r+=e,o<128)throw new n(`tlv.decode(long): not minimal encoding`)}let s=t.subarray(r,r+o);if(s.length!==o)throw new n(`tlv.decode: wrong value length`);return{v:s,l:t.subarray(r+o)}}},_int:{encode(e){let{Err:t}=pl;if(eRs(e,t,Dr(...n)),randomBytes:kr}}function xl(e,t){let n=t=>ll({...e,...bl(t)});return{...n(t),create:n}}var Sl=o((()=>{zs(),Nr(),yl()}));function Cl(e,t){if(Tl(e),Tl(t),e<0||e>=1<<8*t)throw Error(`invalid I2OSP input: `+e);let n=Array.from({length:t}).fill(0);for(let r=t-1;r>=0;r--)n[r]=e&255,e>>>=8;return new Uint8Array(n)}function wl(e,t){let n=new Uint8Array(e.length);for(let r=0;r255&&(t=r($s(ec(`H2C-OVERSIZE-DST-`),t)));let{outputLen:i,blockLen:a}=r,o=Math.ceil(n/i);if(n>65535||o>255)throw Error(`expand_message_xmd: invalid lenInBytes`);let s=$s(t,Cl(t.length,1)),c=Cl(0,a),l=Cl(n,2),u=Array(o),d=r($s(c,e,l,Cl(0,1),s));u[0]=r($s(d,Cl(1,1),s));for(let e=1;e<=o;e++){let t=[wl(d,u[e-1]),Cl(e+1,1),s];u[e]=r($s(...t))}return $s(...u).slice(0,n)}function Dl(e,t,n,r,i){if(Vs(e),Vs(t),Tl(n),t.length>255){let e=Math.ceil(2*r/8);t=i.create({dkLen:e}).update(ec(`H2C-OVERSIZE-DST-`)).update(t).digest()}if(n>65535||t.length>255)throw Error(`expand_message_xof: invalid lenInBytes`);return i.create({dkLen:n}).update(e).update(Cl(n,2)).update(t).update(Cl(t.length,1)).digest()}function Ol(e,t,n){ac(n,{DST:`stringOrUint8Array`,p:`bigint`,m:`isSafeInteger`,k:`isSafeInteger`,hash:`hash`});let{p:r,k:i,m:a,hash:o,expand:s,DST:c}=n;Vs(e),Tl(t);let l=typeof c==`string`?ec(c):c,u=r.toString(2).length,d=Math.ceil((u+i)/8),f=t*a*d,p;if(s===`xmd`)p=El(e,l,f,o);else if(s===`xof`)p=Dl(e,l,f,i,o);else if(s===`_internal_pass`)p=e;else throw Error(`expand must be "xmd" or "xof"`);let m=Array(t);for(let e=0;eArray.from(e).reverse());return(t,r)=>{let[i,a,o,s]=n.map(n=>n.reduce((n,r)=>e.add(e.mul(n,t),r))),[c,l]=Dc(e,[a,s],!0);return t=e.mul(i,c),r=e.mul(r,e.mul(o,l)),{x:t,y:r}}}function Al(e,t,n){if(typeof t!=`function`)throw Error(`mapToCurve() must be defined`);function r(n){return e.fromAffine(t(n))}function i(t){let n=t.clearCofactor();return n.equals(e.ZERO)?e.ZERO:(n.assertValidity(),n)}return{defaults:n,hashToCurve(e,t){let a=Ol(e,2,{...n,DST:n.DST,...t}),o=r(a[0]),s=r(a[1]);return i(o.add(s))},encodeToCurve(e,t){let a=Ol(e,1,{...n,DST:n.encodeDST,...t});return i(r(a[0]))},mapToCurve(e){if(!Array.isArray(e))throw Error(`expected array of bigints`);for(let t of e)if(typeof t!=`bigint`)throw Error(`expected array of bigints`);return i(r(e))}}}var jl,Ml=o((()=>{Hc(),_c(),jl=Js})),Nl=c({encodeToCurve:()=>lu,hashToCurve:()=>cu,schnorr:()=>iu,secp256k1:()=>Yl,secp256k1_hasher:()=>su});function Pl(e){let t=Hl,n=BigInt(3),r=BigInt(6),i=BigInt(11),a=BigInt(22),o=BigInt(23),s=BigInt(44),c=BigInt(88),l=e*e*e%t,u=l*l*e%t,d=yc(u,n,t)*u%t,f=yc(d,n,t)*u%t,p=yc(f,Kl,t)*l%t,m=yc(p,i,t)*p%t,h=yc(m,a,t)*m%t,g=yc(h,s,t)*h%t,_=yc(g,c,t)*g%t,v=yc(_,s,t)*h%t,y=yc(v,n,t)*u%t,b=yc(y,o,t)*m%t,x=yc(b,r,t)*l%t,S=yc(x,Kl,t);if(!Jl.eql(Jl.sqr(S),e))throw Error(`Cannot find square root`);return S}function Fl(e,...t){let n=Xl[e];if(n===void 0){let t=Ns(Uint8Array.from(e,e=>e.charCodeAt(0)));n=$s(t,t),Xl[e]=n}return Ns($s(n,...t))}function Il(e){let t=Yl.utils.normPrivateKeyToScalar(e),n=tu.fromPrivateKey(t);return{scalar:n.hasEvenY()?t:eu(-t),bytes:Zl(n)}}function Ll(e){nc(`x`,e,Gl,Hl);let t=$l(e*e),n=$l(t*e+BigInt(7)),r=Pl(n);r%Kl!==Wl&&(r=$l(-r));let i=new tu(e,r,Gl);return i.assertValidity(),i}function Rl(...e){return eu(ru(Fl(`BIP0340/challenge`,...e)))}function zl(e){return Il(e).bytes}function Bl(e,t,n=kr(32)){let r=Qs(`message`,e),{bytes:i,scalar:a}=Il(t),o=Qs(`auxRand`,n,32),s=Ql(a^ru(Fl(`BIP0340/aux`,o))),c=Fl(`BIP0340/nonce`,s,i,r),l=eu(ru(c));if(l===Wl)throw Error(`sign failed: k is zero`);let{bytes:u,scalar:d}=Il(l),f=Rl(u,i,r),p=new Uint8Array(64);if(p.set(u,0),p.set(Ql(eu(d+f*a)),32),!Vl(p,r,i))throw Error(`sign: Invalid signature produced`);return p}function Vl(e,t,n){let r=Qs(`signature`,e,64),i=Qs(`message`,t),a=Qs(`publicKey`,n,32);try{let e=Ll(ru(a)),t=ru(r.subarray(0,32));if(!tc(t,Gl,Hl))return!1;let n=ru(r.subarray(32,64));if(!tc(n,Gl,Ul))return!1;let o=Rl(Ql(t),Zl(e),i),s=nu(e,n,eu(-o));return!(!s||!s.hasEvenY()||s.toAffine().x!==t)}catch{return!1}}var Hl,Ul,Wl,Gl,Kl,ql,Jl,Yl,Xl,Zl,Ql,$l,eu,tu,nu,ru,iu,au,ou,su,cu,lu,uu=o((()=>{Is(),Nr(),Sl(),Ml(),Hc(),_c(),yl(),Hl=BigInt(`0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f`),Ul=BigInt(`0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141`),Wl=BigInt(0),Gl=BigInt(1),Kl=BigInt(2),ql=(e,t)=>(e+t/Kl)/t,Jl=Ac(Hl,void 0,void 0,{sqrt:Pl}),Yl=xl({a:Wl,b:BigInt(7),Fp:Jl,n:Ul,Gx:BigInt(`55066263022277343669578718895168534326250603453777594175500187360389116729240`),Gy:BigInt(`32670510020758816978083085130507043184471273380659243275938904335757337482424`),h:BigInt(1),lowS:!0,endo:{beta:BigInt(`0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee`),splitScalar:e=>{let t=Ul,n=BigInt(`0x3086d221a7d46bcde86c90e49284eb15`),r=-Gl*BigInt(`0xe4437ed6010e88286f547fa90abfe4c3`),i=BigInt(`0x114ca50f7a8e2f3f657c1108d9d44cfd8`),a=n,o=BigInt(`0x100000000000000000000000000000000`),s=ql(a*e,t),c=ql(-r*e,t),l=vc(e-s*n-c*i,t),u=vc(-s*r-c*a,t),d=l>o,f=u>o;if(d&&(l=t-l),f&&(u=t-u),l>o||u>o)throw Error(`splitScalar: Endomorphism failed, k=`+e);return{k1neg:d,k1:l,k2neg:f,k2:u}}}},Ns),Xl={},Zl=e=>e.toRawBytes(!0).slice(1),Ql=e=>Xs(e,32),$l=e=>vc(e,Hl),eu=e=>vc(e,Ul),tu=(()=>Yl.ProjectivePoint)(),nu=(e,t,n)=>tu.BASE.multiplyAndAddUnsafe(e,t,n),ru=Js,iu=(()=>({getPublicKey:zl,sign:Bl,verify:Vl,utils:{randomPrivateKey:Yl.utils.randomPrivateKey,lift_x:Ll,pointToBytes:Zl,numberToBytesBE:Xs,bytesToNumberBE:Js,taggedHash:Fl,mod:vc}}))(),au=(()=>kl(Jl,[[`0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa8c7`,`0x7d3d4c80bc321d5b9f315cea7fd44c5d595d2fc0bf63b92dfff1044f17c6581`,`0x534c328d23f234e6e2a413deca25caece4506144037c40314ecbd0b53d9dd262`,`0x8e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38e38daaaaa88c`],[`0xd35771193d94918a9ca34ccbb7b640dd86cd409542f8487d9fe6b745781eb49b`,`0xedadc6f64383dc1df7c4b2d51b54225406d36b641f5e41bbc52a56612a8c6d14`,`0x0000000000000000000000000000000000000000000000000000000000000001`],[`0x4bda12f684bda12f684bda12f684bda12f684bda12f684bda12f684b8e38e23c`,`0xc75e0c32d5cb7c0fa9d0a54b12a0a6d5647ab046d686da6fdffc90fc201d71a3`,`0x29a6194691f91a73715209ef6512e576722830a201be2018a765e85a9ecee931`,`0x2f684bda12f684bda12f684bda12f684bda12f684bda12f684bda12f38e38d84`],[`0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffff93b`,`0x7a06534bb8bdb49fd5e9e6632722c2989467c1bfc8e8d978dfb425d2685c2573`,`0x6484aa716545ca2cf3a70c3fa8fe337e0a3d21162f0d6299a7bf8192bfd2a76f`,`0x0000000000000000000000000000000000000000000000000000000000000001`]].map(e=>e.map(e=>BigInt(e)))))(),ou=(()=>dl(Jl,{A:BigInt(`0x3f8731abdd661adca08a5558f0f5d272e953d363cb6f0e5d405447c01a444533`),B:BigInt(`1771`),Z:Jl.create(BigInt(`-11`))}))(),su=(()=>Al(Yl.ProjectivePoint,e=>{let{x:t,y:n}=ou(Jl.create(e[0]));return au(t,n)},{DST:`secp256k1_XMD:SHA-256_SSWU_RO_`,encodeDST:`secp256k1_XMD:SHA-256_SSWU_NU_`,p:Jl.ORDER,m:1,k:128,expand:`xmd`,hash:Ns}))(),cu=(()=>su.hashToCurve)(),lu=(()=>su.encodeToCurve)()}));Pt(),It(),Dn(),A(),ms();async function du({hash:e,signature:t}){let n=Nt(e)?e:On(e),{secp256k1:r}=await ps(async()=>{let{secp256k1:e}=await Promise.resolve().then(()=>(uu(),Nl));return{secp256k1:e}},void 0);return`0x${(()=>{if(typeof t==`object`&&`r`in t&&`s`in t){let{r:e,s:n,v:i,yParity:a}=t,o=fu(Number(a??i));return new r.Signature(wn(e),wn(n)).addRecoveryBit(o)}let e=Nt(t)?t:On(t);if(Ft(e)!==65)throw Error(`invalid signature length`);let n=En(`0x${e.slice(130)}`),i=fu(n);return r.Signature.fromCompact(e.substring(2,130)).addRecoveryBit(i)})().recoverPublicKey(n.substring(2)).toHex(!1)}`}function fu(e){if(e===0||e===1)return e;if(e===27)return 0;if(e===28)return 1;throw Error(`Invalid yParityOrV value`)}async function pu({hash:e,signature:t}){return ls(await du({hash:e,signature:t}))}O(),ya(),Hn(),A();function M(e,t=`hex`){let n=N(e),r=_a(new Uint8Array(n.length));return n.encode(r),t===`hex`?An(r.bytes):r.bytes}function N(e){return Array.isArray(e)?mu(e.map(e=>N(e))):hu(e)}function mu(e){let t=e.reduce((e,t)=>e+t.length,0),n=gu(t);return{length:(()=>t<=55?1+t:1+n+t)(),encode(r){t<=55?r.pushByte(192+t):(r.pushByte(247+n),n===1?r.pushUint8(t):n===2?r.pushUint16(t):n===3?r.pushUint24(t):r.pushUint32(t));for(let{encode:t}of e)t(r)}}}function hu(e){let t=typeof e==`string`?Ln(e):e,n=gu(t.length);return{length:(()=>t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+n+t.length)(),encode(e){t.length===1&&t[0]<128?e.pushBytes(t):t.length<=55?(e.pushByte(128+t.length),e.pushBytes(t)):(e.pushByte(183+n),n===1?e.pushUint8(t.length):n===2?e.pushUint16(t.length):n===3?e.pushUint24(t.length):e.pushUint32(t.length),e.pushBytes(t))}}}function gu(e){if(e<2**8)return 1;if(e<2**16)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new D(`Length is too large.`)}Di(),Hn(),A(),ei();function _u(e){let{chainId:t,nonce:n,to:r}=e,i=e.contractAddress??e.address,a=$r(Ei([`0x05`,M([t?k(t):`0x`,i,n?k(n):`0x`])]));return r===`bytes`?Ln(a):a}async function vu(e){let{authorization:t,signature:n}=e;return pu({hash:_u(t),signature:n??t})}Xa(),Qa(),O(),ho();var yu=class extends D{constructor(e,{account:t,docsPath:n,chain:r,data:i,gas:a,gasPrice:o,maxFeePerGas:s,maxPriorityFeePerGas:c,nonce:l,to:u,value:d}){let f=io({from:t?.address,to:u,value:d!==void 0&&`${Ya(d)} ${r?.nativeCurrency?.symbol||`ETH`}`,data:i,gas:a,gasPrice:o!==void 0&&`${Za(o)} gwei`,maxFeePerGas:s!==void 0&&`${Za(s)} gwei`,maxPriorityFeePerGas:c!==void 0&&`${Za(c)} gwei`,nonce:l});super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages,` `]:[],`Estimate Gas Arguments:`,f].filter(Boolean),name:`EstimateGasExecutionError`}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}},bu,xu,Su,Cu,wu,Tu,Eu,Du,Ou,ku,Au,ju,Mu=o((()=>{Qa(),O(),bu=class extends D{constructor({cause:e,message:t}={}){let n=t?.replace(`execution reverted: `,``)?.replace(`execution reverted`,``);super(`Execution reverted ${n?`with reason: ${n}`:`for an unknown reason`}.`,{cause:e,name:`ExecutionRevertedError`})}},Object.defineProperty(bu,`code`,{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(bu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/}),xu=class extends D{constructor({cause:e,maxFeePerGas:t}={}){super(`The fee cap (\`maxFeePerGas\`${t?` = ${Za(t)} gwei`:``}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:e,name:`FeeCapTooHighError`})}},Object.defineProperty(xu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/}),Su=class extends D{constructor({cause:e,maxFeePerGas:t}={}){super(`The fee cap (\`maxFeePerGas\`${t?` = ${Za(t)}`:``} gwei) cannot be lower than the block base fee.`,{cause:e,name:`FeeCapTooLowError`})}},Object.defineProperty(Su,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/}),Cu=class extends D{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:``}is higher than the next one expected.`,{cause:e,name:`NonceTooHighError`})}},Object.defineProperty(Cu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/}),wu=class extends D{constructor({cause:e,nonce:t}={}){super([`Nonce provided for the transaction ${t?`(${t}) `:``}is lower than the current nonce of the account.`,"Try increasing the nonce or find the latest nonce with `getTransactionCount`."].join(` +`),{cause:e,name:`NonceTooLowError`})}},Object.defineProperty(wu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/}),Tu=class extends D{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:``}exceeds the maximum allowed nonce.`,{cause:e,name:`NonceMaxValueError`})}},Object.defineProperty(Tu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/}),Eu=class extends D{constructor({cause:e}={}){super([`The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.`].join(` +`),{cause:e,metaMessages:[`This error could arise when the account does not have enough funds to:`,` - pay for the total gas fee,`,` - pay for the value to send.`,` `,"The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:`InsufficientFundsError`})}},Object.defineProperty(Eu,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/}),Du=class extends D{constructor({cause:e,gas:t}={}){super(`The amount of gas ${t?`(${t}) `:``}provided for the transaction exceeds the limit allowed for the block.`,{cause:e,name:`IntrinsicGasTooHighError`})}},Object.defineProperty(Du,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/}),Ou=class extends D{constructor({cause:e,gas:t}={}){super(`The amount of gas ${t?`(${t}) `:``}provided for the transaction is too low.`,{cause:e,name:`IntrinsicGasTooLowError`})}},Object.defineProperty(Ou,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/}),ku=class extends D{constructor({cause:e}){super(`The transaction type is not supported for this chain.`,{cause:e,name:`TransactionTypeNotSupportedError`})}},Object.defineProperty(ku,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/}),Au=class extends D{constructor({cause:e,maxPriorityFeePerGas:t,maxFeePerGas:n}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${t?` = ${Za(t)} gwei`:``}) cannot be higher than the fee cap (\`maxFeePerGas\`${n?` = ${Za(n)} gwei`:``}).`].join(` +`),{cause:e,name:`TipAboveFeeCapError`})}},Object.defineProperty(Au,`nodeMessage`,{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/}),ju=class extends D{constructor({cause:e}){super(`An error occurred while executing: ${e?.shortMessage}`,{cause:e,name:`UnknownNodeError`})}}}));function Nu(e,t){let n=(e.details||``).toLowerCase(),r=e instanceof D?e.walk(e=>e?.code===bu.code):e;return r instanceof D?new bu({cause:e,message:r.details}):bu.nodeMessage.test(n)?new bu({cause:e,message:e.details}):xu.nodeMessage.test(n)?new xu({cause:e,maxFeePerGas:t?.maxFeePerGas}):Su.nodeMessage.test(n)?new Su({cause:e,maxFeePerGas:t?.maxFeePerGas}):Cu.nodeMessage.test(n)?new Cu({cause:e,nonce:t?.nonce}):wu.nodeMessage.test(n)?new wu({cause:e,nonce:t?.nonce}):Tu.nodeMessage.test(n)?new Tu({cause:e,nonce:t?.nonce}):Eu.nodeMessage.test(n)?new Eu({cause:e}):Du.nodeMessage.test(n)?new Du({cause:e,gas:t?.gas}):Ou.nodeMessage.test(n)?new Ou({cause:e,gas:t?.gas}):ku.nodeMessage.test(n)?new ku({cause:e}):Au.nodeMessage.test(n)?new Au({cause:e,maxFeePerGas:t?.maxFeePerGas,maxPriorityFeePerGas:t?.maxPriorityFeePerGas}):new ju({cause:e})}var Pu=o((()=>{O(),Mu()}));Mu(),Pu();function Fu(e,{docsPath:t,...n}){let r=(()=>{let t=Nu(e,n);return t instanceof ju?e:t})();return new yu(r,{docsPath:t,...n})}function Iu(e,{format:t}){if(!t)return{};let n={};function r(t){let i=Object.keys(t);for(let a of i)a in e&&(n[a]=e[a]),t[a]&&typeof t[a]==`object`&&!Array.isArray(t[a])&&r(t[a])}let i=t(e||{});return r(i),n}var Lu=o((()=>{}));function Ru(e,t){return({exclude:n,format:r})=>({exclude:n,format:(e,i)=>{let a=t(e,i);if(n)for(let e of n)delete a[e];return{...a,...r(e,i)}},type:e})}var zu=o((()=>{}));function Bu(e,t){let n={};return e.authorizationList!==void 0&&(n.authorizationList=Vu(e.authorizationList)),e.accessList!==void 0&&(n.accessList=e.accessList),e.blobVersionedHashes!==void 0&&(n.blobVersionedHashes=e.blobVersionedHashes),e.blobs!==void 0&&(typeof e.blobs[0]==`string`?n.blobs=e.blobs:n.blobs=e.blobs.map(e=>An(e))),e.data!==void 0&&(n.data=e.data),e.from!==void 0&&(n.from=e.from),e.gas!==void 0&&(n.gas=k(e.gas)),e.gasPrice!==void 0&&(n.gasPrice=k(e.gasPrice)),e.maxFeePerBlobGas!==void 0&&(n.maxFeePerBlobGas=k(e.maxFeePerBlobGas)),e.maxFeePerGas!==void 0&&(n.maxFeePerGas=k(e.maxFeePerGas)),e.maxPriorityFeePerGas!==void 0&&(n.maxPriorityFeePerGas=k(e.maxPriorityFeePerGas)),e.nonce!==void 0&&(n.nonce=k(e.nonce)),e.to!==void 0&&(n.to=e.to),e.type!==void 0&&(n.type=Hu[e.type]),e.value!==void 0&&(n.value=k(e.value)),n}function Vu(e){return e.map(e=>({address:e.address,r:e.r?k(BigInt(e.r)):e.r,s:e.s?k(BigInt(e.s)):e.s,chainId:k(e.chainId),nonce:k(e.nonce),...e.yParity===void 0?{}:{yParity:k(e.yParity)},...e.v!==void 0&&e.yParity===void 0?{v:k(e.v)}:{}}))}var Hu,Uu,Wu=o((()=>{A(),zu(),Hu={legacy:`0x0`,eip2930:`0x1`,eip1559:`0x2`,eip4844:`0x3`,eip7702:`0x4`},Uu=Ru(`transactionRequest`,Bu)}));function Gu(e){if(!(!e||e.length===0))return e.reduce((e,{slot:t,value:n})=>{if(t.length!==66)throw new un({size:t.length,targetSize:66,type:`hex`});if(n.length!==66)throw new un({size:n.length,targetSize:66,type:`hex`});return e[t]=n,e},{})}function Ku(e){let{balance:t,nonce:n,state:r,stateDiff:i,code:a}=e,o={};if(a!==void 0&&(o.code=a),t!==void 0&&(o.balance=k(t)),n!==void 0&&(o.nonce=k(n)),r!==void 0&&(o.state=Gu(r)),i!==void 0){if(o.state)throw new no;o.stateDiff=Gu(i)}return o}function qu(e){if(!e)return;let t={};for(let{address:n,...r}of e){if(!bi(n,{strict:!1}))throw new fi({address:n});if(t[n])throw new to({address:n});t[n]=Ku(r)}return t}var Ju=o((()=>{pi(),dn(),ro(),Ci(),A()})),Yu,Xu,Zu=o((()=>{2n**(8n-1n)-1n,2n**(16n-1n)-1n,2n**(24n-1n)-1n,2n**(32n-1n)-1n,2n**(40n-1n)-1n,2n**(48n-1n)-1n,2n**(56n-1n)-1n,2n**(64n-1n)-1n,2n**(72n-1n)-1n,2n**(80n-1n)-1n,2n**(88n-1n)-1n,2n**(96n-1n)-1n,2n**(104n-1n)-1n,2n**(112n-1n)-1n,2n**(120n-1n)-1n,2n**(128n-1n)-1n,2n**(136n-1n)-1n,2n**(144n-1n)-1n,2n**(152n-1n)-1n,2n**(160n-1n)-1n,2n**(168n-1n)-1n,2n**(176n-1n)-1n,2n**(184n-1n)-1n,2n**(192n-1n)-1n,2n**(200n-1n)-1n,2n**(208n-1n)-1n,2n**(216n-1n)-1n,2n**(224n-1n)-1n,2n**(232n-1n)-1n,2n**(240n-1n)-1n,2n**(248n-1n)-1n,2n**(256n-1n)-1n,-(2n**(8n-1n)),-(2n**(16n-1n)),-(2n**(24n-1n)),-(2n**(32n-1n)),-(2n**(40n-1n)),-(2n**(48n-1n)),-(2n**(56n-1n)),-(2n**(64n-1n)),-(2n**(72n-1n)),-(2n**(80n-1n)),-(2n**(88n-1n)),-(2n**(96n-1n)),-(2n**(104n-1n)),-(2n**(112n-1n)),-(2n**(120n-1n)),-(2n**(128n-1n)),-(2n**(136n-1n)),-(2n**(144n-1n)),-(2n**(152n-1n)),-(2n**(160n-1n)),-(2n**(168n-1n)),-(2n**(176n-1n)),-(2n**(184n-1n)),-(2n**(192n-1n)),-(2n**(200n-1n)),-(2n**(208n-1n)),-(2n**(216n-1n)),-(2n**(224n-1n)),-(2n**(232n-1n)),-(2n**(240n-1n)),-(2n**(248n-1n)),-(2n**(256n-1n)),Yu=2n**16n-1n,Xu=2n**256n-1n}));function Qu(e){let{account:t,gasPrice:n,maxFeePerGas:r,maxPriorityFeePerGas:i,to:a}=e,o=t?na(t):void 0;if(o&&!bi(o.address))throw new fi({address:o.address});if(a&&!bi(a))throw new fi({address:a});if(n!==void 0&&(r!==void 0||i!==void 0))throw new ao;if(r&&r>Xu)throw new xu({maxFeePerGas:r});if(i&&r&&i>r)throw new Au({maxFeePerGas:r,maxPriorityFeePerGas:i})}var $u=o((()=>{ra(),Zu(),pi(),Mu(),ho(),Ci()}));Qa(),O();var ed=class extends D{constructor(){super("`baseFeeMultiplier` must be greater than 1.",{name:`BaseFeeScalarError`})}},td=class extends D{constructor(){super(`Chain does not support EIP-1559 fees.`,{name:`Eip1559FeesNotSupportedError`})}},nd=class extends D{constructor({maxPriorityFeePerGas:e}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${Za(e)} gwei).`,{name:`MaxFeePerGasTooLowError`})}};O();var rd=class extends D{constructor({blockHash:e,blockNumber:t}){let n=`Block`;e&&(n=`Block at hash "${e}"`),t&&(n=`Block at number "${t}"`),super(`${n} could not be found.`,{name:`BlockNotFoundError`})}};Dn(),zu();const id={"0x0":`legacy`,"0x1":`eip2930`,"0x2":`eip1559`,"0x3":`eip4844`,"0x4":`eip7702`};function ad(e,t){let n={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?En(e.chainId):void 0,gas:e.gas?BigInt(e.gas):void 0,gasPrice:e.gasPrice?BigInt(e.gasPrice):void 0,maxFeePerBlobGas:e.maxFeePerBlobGas?BigInt(e.maxFeePerBlobGas):void 0,maxFeePerGas:e.maxFeePerGas?BigInt(e.maxFeePerGas):void 0,maxPriorityFeePerGas:e.maxPriorityFeePerGas?BigInt(e.maxPriorityFeePerGas):void 0,nonce:e.nonce?En(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?id[e.type]:void 0,typeHex:e.type?e.type:void 0,value:e.value?BigInt(e.value):void 0,v:e.v?BigInt(e.v):void 0};return e.authorizationList&&(n.authorizationList=sd(e.authorizationList)),n.yParity=(()=>{if(e.yParity)return Number(e.yParity);if(typeof n.v==`bigint`){if(n.v===0n||n.v===27n)return 0;if(n.v===1n||n.v===28n)return 1;if(n.v>=35n)return n.v%2n==0n?1:0}})(),n.type===`legacy`&&(delete n.accessList,delete n.maxFeePerBlobGas,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas,delete n.yParity),n.type===`eip2930`&&(delete n.maxFeePerBlobGas,delete n.maxFeePerGas,delete n.maxPriorityFeePerGas),n.type===`eip1559`&&delete n.maxFeePerBlobGas,n}const od=Ru(`transaction`,ad);function sd(e){return e.map(e=>({address:e.address,chainId:Number(e.chainId),nonce:Number(e.nonce),r:e.r,s:e.s,yParity:Number(e.yParity)}))}zu();function cd(e,t){let n=(e.transactions??[]).map(e=>typeof e==`string`?e:ad(e));return{...e,baseFeePerGas:e.baseFeePerGas?BigInt(e.baseFeePerGas):null,blobGasUsed:e.blobGasUsed?BigInt(e.blobGasUsed):void 0,difficulty:e.difficulty?BigInt(e.difficulty):void 0,excessBlobGas:e.excessBlobGas?BigInt(e.excessBlobGas):void 0,gasLimit:e.gasLimit?BigInt(e.gasLimit):void 0,gasUsed:e.gasUsed?BigInt(e.gasUsed):void 0,hash:e.hash?e.hash:null,logsBloom:e.logsBloom?e.logsBloom:null,nonce:e.nonce?e.nonce:null,number:e.number?BigInt(e.number):null,size:e.size?BigInt(e.size):void 0,timestamp:e.timestamp?BigInt(e.timestamp):void 0,transactions:n,totalDifficulty:e.totalDifficulty?BigInt(e.totalDifficulty):null}}const ld=Ru(`block`,cd);A();async function ud(e,{blockHash:t,blockNumber:n,blockTag:r=e.experimental_blockTag??`latest`,includeTransactions:i}={}){let a=i??!1,o=n===void 0?void 0:k(n),s=null;if(s=t?await e.request({method:`eth_getBlockByHash`,params:[t,a]},{dedupe:!0}):await e.request({method:`eth_getBlockByNumber`,params:[o||r,a]},{dedupe:!!o}),!s)throw new rd({blockHash:t,blockNumber:n});return(e.chain?.formatters?.block?.format||cd)(s,`getBlock`)}async function dd(e){let t=await e.request({method:`eth_gasPrice`});return BigInt(t)}Dn();async function fd(e,t){let{block:n,chain:r=e.chain,request:i}=t||{};try{let t=r?.fees?.maxPriorityFeePerGas??r?.fees?.defaultPriorityFee;if(typeof t==`function`){let r=n||await E(e,ud,`getBlock`)({}),a=await t({block:r,client:e,request:i});if(a===null)throw Error();return a}if(t!==void 0)return t;let a=await e.request({method:`eth_maxPriorityFeePerGas`});return wn(a)}catch{let[t,r]=await Promise.all([n?Promise.resolve(n):E(e,ud,`getBlock`)({}),E(e,dd,`getGasPrice`)({})]);if(typeof t.baseFeePerGas!=`bigint`)throw new td;let i=r-t.baseFeePerGas;return i<0n?0n:i}}async function pd(e,t){let{block:n,chain:r=e.chain,request:i,type:a=`eip1559`}=t||{},o=await(async()=>typeof r?.fees?.baseFeeMultiplier==`function`?r.fees.baseFeeMultiplier({block:n,client:e,request:i}):r?.fees?.baseFeeMultiplier??1.2)();if(o<1)throw new ed;let s=10**(o.toString().split(`.`)[1]?.length??0),c=e=>e*BigInt(Math.ceil(o*s))/BigInt(s),l=n||await E(e,ud,`getBlock`)({});if(typeof r?.fees?.estimateFeesPerGas==`function`){let t=await r.fees.estimateFeesPerGas({block:n,client:e,multiply:c,request:i,type:a});if(t!==null)return t}if(a===`eip1559`){if(typeof l.baseFeePerGas!=`bigint`)throw new td;let t=typeof i?.maxPriorityFeePerGas==`bigint`?i.maxPriorityFeePerGas:await fd(e,{block:l,chain:r,request:i}),n=c(l.baseFeePerGas);return{maxFeePerGas:i?.maxFeePerGas??n+t,maxPriorityFeePerGas:t}}return{gasPrice:i?.gasPrice??c(await E(e,dd,`getGasPrice`)({}))}}Dn(),A();async function md(e,{address:t,blockTag:n=`latest`,blockNumber:r}){let i=await e.request({method:`eth_getTransactionCount`,params:[t,typeof r==`bigint`?k(r):n]},{dedupe:!!r});return En(i)}Wu(),Hn(),A();function hd(e){let{kzg:t}=e,n=e.to??(typeof e.blobs[0]==`string`?`hex`:`bytes`),r=typeof e.blobs[0]==`string`?e.blobs.map(e=>Ln(e)):e.blobs,i=[];for(let e of r)i.push(Uint8Array.from(t.blobToKzgCommitment(e)));return n===`bytes`?i:i.map(e=>An(e))}Hn(),A();function gd(e){let{kzg:t}=e,n=e.to??(typeof e.blobs[0]==`string`?`hex`:`bytes`),r=typeof e.blobs[0]==`string`?e.blobs.map(e=>Ln(e)):e.blobs,i=typeof e.commitments[0]==`string`?e.commitments.map(e=>Ln(e)):e.commitments,a=[];for(let e=0;eAn(e))}Is();const _d=Ns;Pt(),Hn(),A();function vd(e,t){let n=t||`hex`,r=_d(Nt(e,{strict:!1})?Pn(e):e);return n===`bytes`?r:On(r)}A();function yd(e){let{commitment:t,version:n=1}=e,r=e.to??(typeof t==`string`?`hex`:`bytes`),i=vd(t,`bytes`);return i.set([n],0),r===`bytes`?i:An(i)}function bd(e){let{commitments:t,version:n}=e,r=e.to??(typeof t[0]==`string`?`hex`:`bytes`),i=[];for(let e of t)i.push(yd({commitment:e,to:r,version:n}));return i}var xd=6;const Sd=4096,Cd=32*Sd,wd=Cd*xd-1-1*Sd*xd;O();var Td=class extends D{constructor({maxSize:e,size:t}){super(`Blob size is too large.`,{metaMessages:[`Max: ${e} bytes`,`Given: ${t} bytes`],name:`BlobSizeTooLargeError`})}},Ed=class extends D{constructor(){super(`Blob data must not be empty.`,{name:`EmptyBlobError`})}},Dd=class extends D{constructor({hash:e,size:t}){super(`Versioned hash "${e}" size is invalid.`,{metaMessages:[`Expected: 32`,`Received: ${t}`],name:`InvalidVersionedHashSizeError`})}},Od=class extends D{constructor({hash:e,version:t}){super(`Versioned hash "${e}" version is invalid.`,{metaMessages:[`Expected: 1`,`Received: ${t}`],name:`InvalidVersionedHashVersionError`})}};ya(),It(),Hn(),A();function kd(e){let t=e.to??(typeof e.data==`string`?`hex`:`bytes`),n=typeof e.data==`string`?Ln(e.data):e.data,r=Ft(n);if(!r)throw new Ed;if(r>761855)throw new Td({maxSize:wd,size:r});let i=[],a=!0,o=0;for(;a;){let e=_a(new Uint8Array(Cd)),t=0;for(;te.bytes):i.map(e=>An(e.bytes))}function Ad(e){let{data:t,kzg:n,to:r}=e,i=e.blobs??kd({data:t,to:r}),a=e.commitments??hd({blobs:i,kzg:n,to:r}),o=e.proofs??gd({blobs:i,commitments:a,kzg:n,to:r}),s=[];for(let e=0;e{if(v.to)return v.to;if(i&&i.length>0)return await vu({authorization:i[0]}).catch(()=>{throw new D("`to` is required. Could not infer from `authorizationList`")})})();Qu(t);let S=e.chain?.formatters?.transactionRequest?.format,C=(S||Bu)({...Iu(v,{format:S}),from:r?.address,accessList:n,authorizationList:i,blobs:a,blobVersionedHashes:o,data:l,gas:u,gasPrice:d,maxFeePerBlobGas:f,maxFeePerGas:p,maxPriorityFeePerGas:m,nonce:h,to:x,value:g},`estimateGas`);return BigInt(await e.request({method:`eth_estimateGas`,params:b?[C,y??e.experimental_blockTag??`latest`,b]:y?[C,y]:[C]}))}catch(n){throw Fu(n,{...t,account:r,chain:e.chain})}}function Ld(e,t){if(!bi(e,{strict:!1}))throw new fi({address:e});if(!bi(t,{strict:!1}))throw new fi({address:t});return e.toLowerCase()===t.toLowerCase()}var Rd=o((()=>{pi(),Ci()}));function zd(e,{args:t,eventName:n}={}){return{...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,logIndex:e.logIndex?Number(e.logIndex):null,transactionHash:e.transactionHash?e.transactionHash:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,...n?{args:t,eventName:n}:{}}}function Bd(e){let{abi:t,args:n,functionName:r,data:i}=e,a=t[0];if(r){let e=Qi({abi:t,args:n,name:r});if(!e)throw new Zt(r,{docsPath:Vd});a=e}if(a.type!==`function`)throw new Zt(void 0,{docsPath:Vd});if(!a.outputs)throw new Qt(a.name,{docsPath:Vd});let o=Ta(a.outputs,i);if(o&&o.length>1)return o;if(o&&o.length===1)return o[0]}var Vd,Hd=o((()=>{sn(),La(),ta(),Vd=`/docs/contract/decodeFunctionResult`})),Ud,Wd=o((()=>{Ud=`0.1.1`}));function Gd(){return Ud}var Kd=o((()=>{Wd()}));function qd(e,t){return t?.(e)?e:e&&typeof e==`object`&&`cause`in e&&e.cause?qd(e.cause,t):t?null:e}var P,Jd=o((()=>{Kd(),P=class e extends Error{constructor(t,n={}){let r=(()=>{if(n.cause instanceof e){if(n.cause.details)return n.cause.details;if(n.cause.shortMessage)return n.cause.shortMessage}return n.cause&&`details`in n.cause&&typeof n.cause.details==`string`?n.cause.details:n.cause?.message?n.cause.message:n.details})(),i=(()=>n.cause instanceof e&&n.cause.docsPath||n.docsPath)(),a=`https://oxlib.sh${i??``}`,o=[t||`An error occurred.`,...n.metaMessages?[``,...n.metaMessages]:[],...r||i?[``,r?`Details: ${r}`:void 0,i?`See: ${a}`:void 0]:[]].filter(e=>typeof e==`string`).join(` +`);super(o,n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,`details`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`docs`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`docsPath`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`shortMessage`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`cause`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`BaseError`}),Object.defineProperty(this,`version`,{enumerable:!0,configurable:!0,writable:!0,value:`ox@${Gd()}`}),this.cause=n.cause,this.details=r,this.docs=a,this.docsPath=i,this.shortMessage=t}walk(e){return qd(this,e)}}}));function Yd(e,t){if(bf(e)>t)throw new Pf({givenSize:bf(e),maxSize:t})}function Xd(e,t){if(typeof t==`number`&&t>0&&t>bf(e)-1)throw new Ff({offset:t,position:`start`,size:bf(e)})}function Zd(e,t,n){if(typeof t==`number`&&typeof n==`number`&&bf(e)!==n-t)throw new Ff({offset:n,position:`end`,size:bf(e)})}function F(e){if(e>=ef.zero&&e<=ef.nine)return e-ef.zero;if(e>=ef.A&&e<=ef.F)return e-(ef.A-10);if(e>=ef.a&&e<=ef.f)return e-(ef.a-10)}function Qd(e,t={}){let{dir:n,size:r=32}=t;if(r===0)return e;if(e.length>r)throw new If({size:e.length,targetSize:r,type:`Bytes`});let i=new Uint8Array(r);for(let t=0;t{Lf(),ef={zero:48,nine:57,A:65,F:70,a:97,f:102}}));function nf(e,t){if(qf(e)>t)throw new rp({givenSize:qf(e),maxSize:t})}function rf(e,t){if(typeof t==`number`&&t>0&&t>qf(e)-1)throw new ip({offset:t,position:`start`,size:qf(e)})}function af(e,t,n){if(typeof t==`number`&&typeof n==`number`&&qf(e)!==n-t)throw new ip({offset:n,position:`end`,size:qf(e)})}function sf(e,t={}){let{dir:n,size:r=32}=t;if(r===0)return e;let i=e.replace(`0x`,``);if(i.length>r*2)throw new ap({size:Math.ceil(i.length/2),targetSize:r,type:`Hex`});return`0x${i[n===`right`?`padEnd`:`padStart`](r*2,`0`)}`}function cf(e,t={}){let{dir:n=`left`}=t,r=e.replace(`0x`,``),i=0;for(let e=0;e{op()}));function uf(e,t){return JSON.parse(e,(e,n)=>{let r=n;return typeof r==`string`&&r.endsWith(ff)?BigInt(r.slice(0,-9)):typeof t==`function`?t(e,r):r})}function df(e,t,n){return JSON.stringify(e,(e,n)=>typeof t==`function`?t(e,n):typeof n==`bigint`?n.toString()+ff:n,n)}var ff,pf=o((()=>{ff=`#__bigint`}));function mf(e){if(!(e instanceof Uint8Array)&&(!e||typeof e!=`object`||!(`BYTES_PER_ELEMENT`in e)||e.BYTES_PER_ELEMENT!==1||e.constructor.name!==`Uint8Array`))throw new Nf(e)}function hf(e){return e instanceof Uint8Array?e:typeof e==`string`?_f(e):gf(e)}function gf(e){return e instanceof Uint8Array?e:new Uint8Array(e)}function _f(e,t={}){let{size:n}=t,r=e;n&&(nf(e,n),r=Gf(e,n));let i=r.slice(2);i.length%2&&(i=`0${i}`);let a=i.length/2,o=new Uint8Array(a);for(let e=0,t=0;e1||r[0]>1)throw new Mf(r);return!!r[0]}function wf(e,t={}){return Hf(e,t)}function Tf(e,t={}){let{size:n}=t;n!==void 0&&Yd(e,n);let r=Hf(e,t);return Xf(r,t)}function Ef(e,t={}){let{size:n}=t,r=e;return n!==void 0&&(Yd(r,n),r=Of(r)),Af.decode(r)}function Df(e){return $d(e,{dir:`left`})}function Of(e){return $d(e,{dir:`right`})}function kf(e){try{return mf(e),!0}catch{return!1}}var Af,jf,Mf,Nf,Pf,Ff,If,Lf=o((()=>{Jd(),op(),tf(),lf(),pf(),Af=new TextDecoder,jf=new TextEncoder,Mf=class extends P{constructor(e){super(`Bytes value \`${e}\` is not a valid boolean.`,{metaMessages:["The bytes array must contain a single byte of either a `0` or `1` value."]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.InvalidBytesBooleanError`})}},Nf=class extends P{constructor(e){super(`Value \`${typeof e==`object`?df(e):e}\` of type \`${typeof e}\` is an invalid Bytes value.`,{metaMessages:["Bytes values must be of type `Bytes`."]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.InvalidBytesTypeError`})}},Pf=class extends P{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed \`${t}\` bytes. Given size: \`${e}\` bytes.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.SizeOverflowError`})}},Ff=class extends P{constructor({offset:e,position:t,size:n}){super(`Slice ${t===`start`?`starting`:`ending`} at offset \`${e}\` is out-of-bounds (size: \`${n}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.SliceOffsetOutOfBoundsError`})}},If=class extends P{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${e}\`) exceeds padding size (\`${t}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Bytes.SizeExceedsPaddingSizeError`})}}}));function Rf(e,t={}){let{strict:n=!1}=t;if(!e||typeof e!=`string`)throw new tp(e);if(n&&!/^0x[0-9a-fA-F]*$/.test(e)||!e.startsWith(`0x`))throw new np(e)}function zf(...e){return`0x${e.reduce((e,t)=>e+t.replace(`0x`,``),``)}`}function Bf(e){return e instanceof Uint8Array?Hf(e):Array.isArray(e)?Hf(new Uint8Array(e)):e}function Vf(e,t={}){let n=`0x${Number(e)}`;return typeof t.size==`number`?(nf(n,t.size),Wf(n,t.size)):n}function Hf(e,t={}){let n=``;for(let t=0;ta||i>1n;return r<=o?r:r-a-1n}function Xf(e,t={}){let{signed:n,size:r}=t;return!n&&!r?Number(e):Number(Yf(e,t))}function Zf(e,t={}){let{strict:n=!1}=t;try{return Rf(e,{strict:n}),!0}catch{return!1}}var Qf,$f,ep,tp,np,rp,ip,ap,op=o((()=>{Jd(),lf(),pf(),Qf=new TextEncoder,$f=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`)),ep=class extends P{constructor({max:e,min:t,signed:n,size:r,value:i}){super(`Number \`${i}\` is not in safe${r?` ${r*8}-bit`:``}${n?` signed`:` unsigned`} integer range ${e?`(\`${t}\` to \`${e}\`)`:`(above \`${t}\`)`}`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.IntegerOutOfRangeError`})}},tp=class extends P{constructor(e){super(`Value \`${typeof e==`object`?df(e):e}\` of type \`${typeof e}\` is an invalid hex type.`,{metaMessages:['Hex types must be represented as `"0x${string}"`.']}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.InvalidHexTypeError`})}},np=class extends P{constructor(e){super(`Value \`${e}\` is an invalid hex value.`,{metaMessages:['Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).']}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.InvalidHexValueError`})}},rp=class extends P{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed \`${t}\` bytes. Given size: \`${e}\` bytes.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.SizeOverflowError`})}},ip=class extends P{constructor({offset:e,position:t,size:n}){super(`Slice ${t===`start`?`starting`:`ending`} at offset \`${e}\` is out-of-bounds (size: \`${n}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.SliceOffsetOutOfBoundsError`})}},ap=class extends P{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (\`${e}\`) exceeds padding size (\`${t}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Hex.SizeExceedsPaddingSizeError`})}}}));function sp(e){return{address:e.address,amount:I(e.amount),index:I(e.index),validatorIndex:I(e.validatorIndex)}}var cp=o((()=>{op()}));function lp(e){return{...typeof e.baseFeePerGas==`bigint`&&{baseFeePerGas:I(e.baseFeePerGas)},...typeof e.blobBaseFee==`bigint`&&{blobBaseFee:I(e.blobBaseFee)},...typeof e.feeRecipient==`string`&&{feeRecipient:e.feeRecipient},...typeof e.gasLimit==`bigint`&&{gasLimit:I(e.gasLimit)},...typeof e.number==`bigint`&&{number:I(e.number)},...typeof e.prevRandao==`bigint`&&{prevRandao:I(e.prevRandao)},...typeof e.time==`bigint`&&{time:I(e.time)},...e.withdrawals&&{withdrawals:e.withdrawals.map(sp)}}}var up=o((()=>{op(),cp()})),dp,fp,pp,mp,hp,gp=o((()=>{dp=[{inputs:[{components:[{name:`target`,type:`address`},{name:`allowFailure`,type:`bool`},{name:`callData`,type:`bytes`}],name:`calls`,type:`tuple[]`}],name:`aggregate3`,outputs:[{components:[{name:`success`,type:`bool`},{name:`returnData`,type:`bytes`}],name:`returnData`,type:`tuple[]`}],stateMutability:`view`,type:`function`},{inputs:[],name:`getCurrentBlockTimestamp`,outputs:[{internalType:`uint256`,name:`timestamp`,type:`uint256`}],stateMutability:`view`,type:`function`}],fp=[{name:`query`,type:`function`,stateMutability:`view`,inputs:[{type:`tuple[]`,name:`queries`,components:[{type:`address`,name:`sender`},{type:`string[]`,name:`urls`},{type:`bytes`,name:`data`}]}],outputs:[{type:`bool[]`,name:`failures`},{type:`bytes[]`,name:`responses`}]},{name:`HttpError`,type:`error`,inputs:[{type:`uint16`,name:`status`},{type:`string`,name:`message`}]}],pp=[{inputs:[{name:`dns`,type:`bytes`}],name:`DNSDecodingFailed`,type:`error`},{inputs:[{name:`ens`,type:`string`}],name:`DNSEncodingFailed`,type:`error`},{inputs:[],name:`EmptyAddress`,type:`error`},{inputs:[{name:`status`,type:`uint16`},{name:`message`,type:`string`}],name:`HttpError`,type:`error`},{inputs:[],name:`InvalidBatchGatewayResponse`,type:`error`},{inputs:[{name:`errorData`,type:`bytes`}],name:`ResolverError`,type:`error`},{inputs:[{name:`name`,type:`bytes`},{name:`resolver`,type:`address`}],name:`ResolverNotContract`,type:`error`},{inputs:[{name:`name`,type:`bytes`}],name:`ResolverNotFound`,type:`error`},{inputs:[{name:`primary`,type:`string`},{name:`primaryAddress`,type:`bytes`}],name:`ReverseAddressMismatch`,type:`error`},{inputs:[{internalType:`bytes4`,name:`selector`,type:`bytes4`}],name:`UnsupportedResolverProfile`,type:`error`}],[...pp],[...pp],mp=[{name:`isValidSignature`,type:`function`,stateMutability:`view`,inputs:[{name:`hash`,type:`bytes32`},{name:`signature`,type:`bytes`}],outputs:[{name:``,type:`bytes4`}]}],hp=[{inputs:[{name:`_signer`,type:`address`},{name:`_hash`,type:`bytes32`},{name:`_signature`,type:`bytes`}],stateMutability:`nonpayable`,type:`constructor`},{inputs:[{name:`_signer`,type:`address`},{name:`_hash`,type:`bytes32`},{name:`_signature`,type:`bytes`}],outputs:[{type:`bool`}],stateMutability:`nonpayable`,type:`function`,name:`isValidSig`}]})),_p=o((()=>{})),vp,yp,bp,xp,Sp=o((()=>{vp=`0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe`,yp=`0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe`,bp=`0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572`,xp=`0x608060405234801561001057600080fd5b506115b9806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e14610325578063bce38bd714610350578063c3077fa914610380578063ee82ac5e146103b2576100f3565b80634d2301cc1461026257806372425d9d1461029f57806382ad56cb146102ca57806386d516e8146102fa576100f3565b80633408e470116100c65780633408e470146101af578063399542e9146101da5780633e64a6961461020c57806342cbb15c14610237576100f3565b80630f28c97d146100f8578063174dea7114610123578063252dba421461015357806327e86d6e14610184575b600080fd5b34801561010457600080fd5b5061010d6103ef565b60405161011a9190610c0a565b60405180910390f35b61013d60048036038101906101389190610c94565b6103f7565b60405161014a9190610e94565b60405180910390f35b61016d60048036038101906101689190610f0c565b610615565b60405161017b92919061101b565b60405180910390f35b34801561019057600080fd5b506101996107ab565b6040516101a69190611064565b60405180910390f35b3480156101bb57600080fd5b506101c46107b7565b6040516101d19190610c0a565b60405180910390f35b6101f460048036038101906101ef91906110ab565b6107bf565b6040516102039392919061110b565b60405180910390f35b34801561021857600080fd5b506102216107e1565b60405161022e9190610c0a565b60405180910390f35b34801561024357600080fd5b5061024c6107e9565b6040516102599190610c0a565b60405180910390f35b34801561026e57600080fd5b50610289600480360381019061028491906111a7565b6107f1565b6040516102969190610c0a565b60405180910390f35b3480156102ab57600080fd5b506102b4610812565b6040516102c19190610c0a565b60405180910390f35b6102e460048036038101906102df919061122a565b61081a565b6040516102f19190610e94565b60405180910390f35b34801561030657600080fd5b5061030f6109e4565b60405161031c9190610c0a565b60405180910390f35b34801561033157600080fd5b5061033a6109ec565b6040516103479190611286565b60405180910390f35b61036a600480360381019061036591906110ab565b6109f4565b6040516103779190610e94565b60405180910390f35b61039a60048036038101906103959190610f0c565b610ba6565b6040516103a99392919061110b565b60405180910390f35b3480156103be57600080fd5b506103d960048036038101906103d491906112cd565b610bca565b6040516103e69190611064565b60405180910390f35b600042905090565b60606000808484905090508067ffffffffffffffff81111561041c5761041b6112fa565b5b60405190808252806020026020018201604052801561045557816020015b610442610bd5565b81526020019060019003908161043a5790505b5092503660005b828110156105c957600085828151811061047957610478611329565b5b6020026020010151905087878381811061049657610495611329565b5b90506020028101906104a89190611367565b925060008360400135905080860195508360000160208101906104cb91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16818580606001906104f2919061138f565b604051610500929190611431565b60006040518083038185875af1925050503d806000811461053d576040519150601f19603f3d011682016040523d82523d6000602084013e610542565b606091505b5083600001846020018290528215151515815250505081516020850135176105bc577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b826001019250505061045c565b5082341461060c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610603906114a7565b60405180910390fd5b50505092915050565b6000606043915060008484905090508067ffffffffffffffff81111561063e5761063d6112fa565b5b60405190808252806020026020018201604052801561067157816020015b606081526020019060019003908161065c5790505b5091503660005b828110156107a157600087878381811061069557610694611329565b5b90506020028101906106a791906114c7565b92508260000160208101906106bc91906111a7565b73ffffffffffffffffffffffffffffffffffffffff168380602001906106e2919061138f565b6040516106f0929190611431565b6000604051808303816000865af19150503d806000811461072d576040519150601f19603f3d011682016040523d82523d6000602084013e610732565b606091505b5086848151811061074657610745611329565b5b60200260200101819052819250505080610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c9061153b565b60405180910390fd5b81600101915050610678565b5050509250929050565b60006001430340905090565b600046905090565b6000806060439250434091506107d68686866109f4565b905093509350939050565b600048905090565b600043905090565b60008173ffffffffffffffffffffffffffffffffffffffff16319050919050565b600044905090565b606060008383905090508067ffffffffffffffff81111561083e5761083d6112fa565b5b60405190808252806020026020018201604052801561087757816020015b610864610bd5565b81526020019060019003908161085c5790505b5091503660005b828110156109db57600084828151811061089b5761089a611329565b5b602002602001015190508686838181106108b8576108b7611329565b5b90506020028101906108ca919061155b565b92508260000160208101906108df91906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060400190610905919061138f565b604051610913929190611431565b6000604051808303816000865af19150503d8060008114610950576040519150601f19603f3d011682016040523d82523d6000602084013e610955565b606091505b5082600001836020018290528215151515815250505080516020840135176109cf577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b8160010191505061087e565b50505092915050565b600045905090565b600041905090565b606060008383905090508067ffffffffffffffff811115610a1857610a176112fa565b5b604051908082528060200260200182016040528015610a5157816020015b610a3e610bd5565b815260200190600190039081610a365790505b5091503660005b82811015610b9c576000848281518110610a7557610a74611329565b5b60200260200101519050868683818110610a9257610a91611329565b5b9050602002810190610aa491906114c7565b9250826000016020810190610ab991906111a7565b73ffffffffffffffffffffffffffffffffffffffff16838060200190610adf919061138f565b604051610aed929190611431565b6000604051808303816000865af19150503d8060008114610b2a576040519150601f19603f3d011682016040523d82523d6000602084013e610b2f565b606091505b508260000183602001829052821515151581525050508715610b90578060000151610b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b869061153b565b60405180910390fd5b5b81600101915050610a58565b5050509392505050565b6000806060610bb7600186866107bf565b8093508194508295505050509250925092565b600081409050919050565b6040518060400160405280600015158152602001606081525090565b6000819050919050565b610c0481610bf1565b82525050565b6000602082019050610c1f6000830184610bfb565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f840112610c5457610c53610c2f565b5b8235905067ffffffffffffffff811115610c7157610c70610c34565b5b602083019150836020820283011115610c8d57610c8c610c39565b5b9250929050565b60008060208385031215610cab57610caa610c25565b5b600083013567ffffffffffffffff811115610cc957610cc8610c2a565b5b610cd585828601610c3e565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60008115159050919050565b610d2281610d0d565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d62578082015181840152602081019050610d47565b83811115610d71576000848401525b50505050565b6000601f19601f8301169050919050565b6000610d9382610d28565b610d9d8185610d33565b9350610dad818560208601610d44565b610db681610d77565b840191505092915050565b6000604083016000830151610dd96000860182610d19565b5060208301518482036020860152610df18282610d88565b9150508091505092915050565b6000610e0a8383610dc1565b905092915050565b6000602082019050919050565b6000610e2a82610ce1565b610e348185610cec565b935083602082028501610e4685610cfd565b8060005b85811015610e825784840389528151610e638582610dfe565b9450610e6e83610e12565b925060208a01995050600181019050610e4a565b50829750879550505050505092915050565b60006020820190508181036000830152610eae8184610e1f565b905092915050565b60008083601f840112610ecc57610ecb610c2f565b5b8235905067ffffffffffffffff811115610ee957610ee8610c34565b5b602083019150836020820283011115610f0557610f04610c39565b5b9250929050565b60008060208385031215610f2357610f22610c25565b5b600083013567ffffffffffffffff811115610f4157610f40610c2a565b5b610f4d85828601610eb6565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000610f918383610d88565b905092915050565b6000602082019050919050565b6000610fb182610f59565b610fbb8185610f64565b935083602082028501610fcd85610f75565b8060005b858110156110095784840389528151610fea8582610f85565b9450610ff583610f99565b925060208a01995050600181019050610fd1565b50829750879550505050505092915050565b60006040820190506110306000830185610bfb565b81810360208301526110428184610fa6565b90509392505050565b6000819050919050565b61105e8161104b565b82525050565b60006020820190506110796000830184611055565b92915050565b61108881610d0d565b811461109357600080fd5b50565b6000813590506110a58161107f565b92915050565b6000806000604084860312156110c4576110c3610c25565b5b60006110d286828701611096565b935050602084013567ffffffffffffffff8111156110f3576110f2610c2a565b5b6110ff86828701610eb6565b92509250509250925092565b60006060820190506111206000830186610bfb565b61112d6020830185611055565b818103604083015261113f8184610e1f565b9050949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061117482611149565b9050919050565b61118481611169565b811461118f57600080fd5b50565b6000813590506111a18161117b565b92915050565b6000602082840312156111bd576111bc610c25565b5b60006111cb84828501611192565b91505092915050565b60008083601f8401126111ea576111e9610c2f565b5b8235905067ffffffffffffffff81111561120757611206610c34565b5b60208301915083602082028301111561122357611222610c39565b5b9250929050565b6000806020838503121561124157611240610c25565b5b600083013567ffffffffffffffff81111561125f5761125e610c2a565b5b61126b858286016111d4565b92509250509250929050565b61128081611169565b82525050565b600060208201905061129b6000830184611277565b92915050565b6112aa81610bf1565b81146112b557600080fd5b50565b6000813590506112c7816112a1565b92915050565b6000602082840312156112e3576112e2610c25565b5b60006112f1848285016112b8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b60008235600160800383360303811261138357611382611358565b5b80830191505092915050565b600080833560016020038436030381126113ac576113ab611358565b5b80840192508235915067ffffffffffffffff8211156113ce576113cd61135d565b5b6020830192506001820236038313156113ea576113e9611362565b5b509250929050565b600081905092915050565b82818337600083830152505050565b600061141883856113f2565b93506114258385846113fd565b82840190509392505050565b600061143e82848661140c565b91508190509392505050565b600082825260208201905092915050565b7f4d756c746963616c6c333a2076616c7565206d69736d61746368000000000000600082015250565b6000611491601a8361144a565b915061149c8261145b565b602082019050919050565b600060208201905081810360008301526114c081611484565b9050919050565b6000823560016040038336030381126114e3576114e2611358565b5b80830191505092915050565b7f4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000600082015250565b600061152560178361144a565b9150611530826114ef565b602082019050919050565b6000602082019050818103600083015261155481611518565b9050919050565b60008235600160600383360303811261157757611576611358565b5b8083019150509291505056fea264697066735822122020c1bc9aacf8e4a6507193432a895a8e77094f45a1395583f07b24e860ef06cd64736f6c634300080c0033`})),Cp,wp,Tp,Ep,Dp,Op=o((()=>{O(),Cp=class extends D{constructor({blockNumber:e,chain:t,contract:n}){super(`Chain "${t.name}" does not support contract "${n.name}".`,{metaMessages:[`This could be due to any of the following:`,...e&&n.blockCreated&&n.blockCreated>e?[`- The contract "${n.name}" was not deployed until block ${n.blockCreated} (current block ${e}).`]:[`- The chain does not have the contract "${n.name}" configured.`]],name:`ChainDoesNotSupportContract`})}},wp=class extends D{constructor({chain:e,currentChainId:t}){super(`The current chain of the wallet (id: ${t}) does not match the target chain for the transaction (id: ${e.id} – ${e.name}).`,{metaMessages:[`Current Chain ID: ${t}`,`Expected Chain ID: ${e.id} – ${e.name}`],name:`ChainMismatchError`})}},Tp=class extends D{constructor(){super([`No chain was provided to the request.`,"Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient."].join(` +`),{name:`ChainNotFoundError`})}},Ep=class extends D{constructor(){super(`No chain was provided to the Client.`,{name:`ClientChainNotConfiguredError`})}},Dp=class extends D{constructor({chainId:e}){super(typeof e==`number`?`Chain ID "${e}" is invalid.`:`Chain ID is invalid.`,{name:`InvalidChainIdError`})}}}));function kp(e){let{abi:t,args:n,bytecode:r}=e;if(!n||n.length===0)return r;let i=t.find(e=>`type`in e&&e.type===`constructor`);if(!i)throw new Vt({docsPath:Ap});if(!(`inputs`in i)||!i.inputs||i.inputs.length===0)throw new Ht({docsPath:Ap});let a=Li(i.inputs,n);return Ei([r,a])}var Ap,jp=o((()=>{sn(),Di(),Yi(),Ap=`/docs/contract/encodeDeployData`}));function Mp({blockNumber:e,chain:t,contract:n}){let r=t?.contracts?.[n];if(!r)throw new Cp({chain:t,contract:{name:n}});if(e&&r.blockCreated&&r.blockCreated>e)throw new Cp({blockNumber:e,chain:t,contract:{name:n,blockCreated:r.blockCreated}});return r.address}var Np=o((()=>{Op()}));function Pp(e,{docsPath:t,...n}){let r=(()=>{let t=Nu(e,n);return t instanceof ju?e:t})();return new yo(r,{docsPath:t,...n})}var Fp=o((()=>{To(),Mu(),Pu()}));function Ip(){let e=()=>void 0,t=()=>void 0;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var Lp=o((()=>{}));function Rp({fn:e,id:t,shouldSplitBatch:n,wait:r=0,sort:i}){let a=async()=>{let t=c();o();let n=t.map(({args:e})=>e);n.length!==0&&e(n).then(e=>{i&&Array.isArray(e)&&e.sort(i);for(let n=0;n{for(let n=0;nzp.delete(t),s=()=>c().map(({args:e})=>e),c=()=>zp.get(t)||[],l=e=>zp.set(t,[...c(),e]);return{flush:o,async schedule(e){let{promise:t,resolve:i,reject:o}=Ip();return n?.([...s(),e])&&a(),c().length>0?(l({args:e,resolve:i,reject:o}),t):(l({args:e,resolve:i,reject:o}),setTimeout(a,r),t)}}}var zp,Bp=o((()=>{Lp(),zp=new Map})),Vp,Hp,Up,Wp=o((()=>{Va(),O(),vo(),Vp=class extends D{constructor({callbackSelector:e,cause:t,data:n,extraData:r,sender:i,urls:a}){super(t.shortMessage||`An error occurred while fetching for an offchain result.`,{cause:t,metaMessages:[...t.metaMessages||[],t.metaMessages?.length?``:[],`Offchain Gateway Call:`,a&&[` Gateway URL(s):`,...a.map(e=>` ${_o(e)}`)],` Sender: ${i}`,` Data: ${n}`,` Callback selector: ${e}`,` Extra data: ${r}`].flat(),name:`OffchainLookupError`})}},Hp=class extends D{constructor({result:e,url:t}){super(`Offchain gateway response is malformed. Response data must be a hex value.`,{metaMessages:[`Gateway URL: ${_o(t)}`,`Response: ${Ba(e)}`],name:`OffchainLookupResponseMalformedError`})}},Up=class extends D{constructor({sender:e,to:t}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${t}`,`OffchainLookup sender address: ${e}`],name:`OffchainLookupSenderMismatchError`})}}}));function Gp(e){let{abi:t,data:n}=e,r=Oi(n,0,4),i=t.find(e=>e.type===`function`&&r===Xi(kt(e)));if(!i)throw new $t(r,{docsPath:`/docs/contract/decodeFunctionData`});return{functionName:i.name,args:`inputs`in i&&i.inputs&&i.inputs.length>0?Ta(i.inputs,Oi(n,4)):void 0}}var Kp=o((()=>{sn(),Ni(),Zi(),La(),Mt()}));function qp(e){let{abi:t,errorName:n,args:r}=e,i=t[0];if(n){let e=Qi({abi:t,args:r,name:n});if(!e)throw new Yt(n,{docsPath:Jp});i=e}if(i.type!==`error`)throw new Yt(void 0,{docsPath:Jp});let a=kt(i),o=Xi(a),s=`0x`;if(r&&r.length>0){if(!i.inputs)throw new Jt(i.name,{docsPath:Jp});s=Li(i.inputs,r)}return Ei([o,s])}var Jp,Yp=o((()=>{sn(),Di(),Zi(),Yi(),Mt(),ta(),Jp=`/docs/contract/encodeErrorResult`}));function Xp(e){let{abi:t,functionName:n,result:r}=e,i=t[0];if(n){let e=Qi({abi:t,name:n});if(!e)throw new Zt(n,{docsPath:Zp});i=e}if(i.type!==`function`)throw new Zt(void 0,{docsPath:Zp});if(!i.outputs)throw new Qt(i.name,{docsPath:Zp});let a=(()=>{if(i.outputs.length===0)return[];if(i.outputs.length===1)return[r];if(Array.isArray(r))return r;throw new an(r)})();return Li(i.outputs,a)}var Zp,Qp=o((()=>{sn(),Yi(),ta(),Zp=`/docs/contract/encodeFunctionResult`}));async function $p(e){let{data:t,ccipRequest:n}=e,{args:[r]}=Gp({abi:fp,data:t}),i=[],a=[];return await Promise.all(r.map(async(e,t)=>{try{a[t]=e.urls.includes(`x-batch-gateway:true`)?await $p({data:e.data,ccipRequest:n}):await n(e),i[t]=!1}catch(e){i[t]=!0,a[t]=em(e)}})),Xp({abi:fp,functionName:`query`,result:[i,a]})}function em(e){return e.name===`HttpRequestError`&&e.status?qp({abi:fp,errorName:`HttpError`,args:[e.status,e.shortMessage]}):qp({abi:[ua],errorName:`Error`,args:[`shortMessage`in e?e.shortMessage:e.message]})}var tm=o((()=>{gp(),fa(),Kp(),Yp(),Qp()})),nm=c({ccipRequest:()=>im,offchainLookup:()=>rm,offchainLookupAbiItem:()=>om,offchainLookupSignature:()=>am});async function rm(e,{blockNumber:t,blockTag:n,data:r,to:i}){let{args:a}=Ra({data:r,abi:[om]}),[o,s,c,l,u]=a,{ccipRead:d}=e,f=d&&typeof d?.request==`function`?d.request:im;try{if(!Ld(i,o))throw new Up({sender:o,to:i});let r=s.includes(`x-batch-gateway:true`)?await $p({data:c,ccipRequest:f}):await f({data:c,sender:o,urls:s}),{data:a}=await cm(e,{blockNumber:t,blockTag:n,data:wi([l,Li([{type:`bytes`},{type:`bytes`}],[r,u])]),to:i});return a}catch(e){throw new Vp({callbackSelector:l,cause:e,data:r,extraData:u,sender:o,urls:s})}}async function im({data:e,sender:t,urls:n}){let r=Error(`An unknown error occurred.`);for(let i=0;i{mm(),Wp(),ko(),za(),Yi(),Rd(),Di(),Pt(),tm(),Va(),am=`0x556f1830`,om={name:`OffchainLookup`,type:`error`,inputs:[{name:`sender`,type:`address`},{name:`urls`,type:`string[]`},{name:`callData`,type:`bytes`},{name:`callbackFunction`,type:`bytes4`},{name:`extraData`,type:`bytes`}]}}));async function cm(e,t){let{account:n=e.account,authorizationList:r,batch:i=!!e.batch?.multicall,blockNumber:a,blockTag:o=e.experimental_blockTag??`latest`,accessList:s,blobs:c,blockOverrides:l,code:u,data:d,factory:f,factoryData:p,gas:m,gasPrice:h,maxFeePerBlobGas:g,maxFeePerGas:_,maxPriorityFeePerGas:v,nonce:y,to:b,value:x,stateOverride:S,...C}=t,w=n?na(n):void 0;if(u&&(f||p))throw new D("Cannot provide both `code` & `factory`/`factoryData` as parameters.");if(u&&b)throw new D("Cannot provide both `code` & `to` as parameters.");let ee=u&&d,te=f&&p&&b&&d,ne=ee||te,re=(()=>ee?dm({code:u,data:d}):te?fm({data:d,factory:f,factoryData:p,to:b}):d)();try{Qu(t);let n=(typeof a==`bigint`?k(a):void 0)||o,u=l?lp(l):void 0,d=qu(S),f=e.chain?.formatters?.transactionRequest?.format,p=(f||Bu)({...Iu(C,{format:f}),from:w?.address,accessList:s,authorizationList:r,blobs:c,data:re,gas:m,gasPrice:h,maxFeePerBlobGas:g,maxFeePerGas:_,maxPriorityFeePerGas:v,nonce:y,to:ne?void 0:b,value:x},`call`);if(i&&lm({request:p})&&!d&&!u)try{return await um(e,{...p,blockNumber:a,blockTag:o})}catch(e){if(!(e instanceof Ep)&&!(e instanceof Cp))throw e}let ee=(()=>{let e=[p,n];return d&&u?[...e,d,u]:d?[...e,d]:u?[...e,{},u]:e})(),te=await e.request({method:`eth_call`,params:ee});return te===`0x`?{data:void 0}:{data:te}}catch(n){let r=pm(n),{offchainLookup:i,offchainLookupSignature:a}=await ps(async()=>{let{offchainLookup:e,offchainLookupSignature:t}=await Promise.resolve().then(()=>(sm(),nm));return{offchainLookup:e,offchainLookupSignature:t}},void 0);if(e.ccipRead!==!1&&r?.slice(0,10)===a&&b)return{data:await i(e,{data:r,to:b})};throw ne&&r?.slice(0,10)===`0x101bb98d`?new Co({factory:f}):Pp(n,{...t,account:w,chain:e.chain})}}function lm({request:e}){let{data:t,to:n,...r}=e;return!(!t||t.startsWith(`0x82ad56cb`)||!n||Object.values(r).filter(e=>e!==void 0).length>0)}async function um(e,t){let{batchSize:n=1024,deployless:r=!1,wait:i=0}=typeof e.batch?.multicall==`object`?e.batch.multicall:{},{blockNumber:a,blockTag:o=e.experimental_blockTag??`latest`,data:s,to:c}=t,l=(()=>{if(r)return null;if(t.multicallAddress)return t.multicallAddress;if(e.chain)return Mp({blockNumber:a,chain:e.chain,contract:`multicall3`});throw new Ep})(),u=(typeof a==`bigint`?k(a):void 0)||o,{schedule:d}=Rp({id:`${e.uid}.${u}`,wait:i,shouldSplitBatch(e){return e.reduce((e,{data:t})=>e+(t.length-2),0)>n*2},fn:async t=>{let n=t.map(e=>({allowFailure:!0,callData:e.data,target:e.to})),r=sa({abi:dp,args:[n],functionName:`aggregate3`}),i=await e.request({method:`eth_call`,params:[{...l===null?{data:dm({code:xp,data:r})}:{to:l,data:r}},u]});return Bd({abi:dp,args:[n],functionName:`aggregate3`,data:i||`0x`})}}),[{returnData:f,success:p}]=await d({data:s,to:c});if(!p)throw new wo({data:f});return f===`0x`?{data:void 0}:{data:f}}function dm(e){let{code:t,data:n}=e;return kp({abi:St([`constructor(bytes, bytes)`]),bytecode:vp,args:[t,n]})}function fm(e){let{data:t,factory:n,factoryData:r,to:i}=e;return kp({abi:St([`constructor(address, bytes, address, bytes)`]),bytecode:yp,args:[i,t,n,r]})}function pm(e){if(!(e instanceof D))return;let t=e.walk();return typeof t?.data==`object`?t.data?.data:t.data}var mm=o((()=>{Ot(),up(),ra(),gp(),_p(),Sp(),O(),Op(),To(),Hd(),jp(),ca(),Np(),A(),Fp(),Lu(),Wu(),Bp(),Ju(),$u(),ms()}));Hd(),ca(),mm();async function hm(e,t){let{abi:n,address:r,args:i,functionName:a,...o}=t,s=sa({abi:n,args:i,functionName:a});try{let{data:t}=await E(e,cm,`call`)({...o,data:s,to:r});return Bd({abi:n,args:i,functionName:a,data:t||`0x`})}catch(e){throw cs(e,{abi:n,address:r,args:i,docsPath:`/docs/contract/readContract`,functionName:a})}}const gm=new Map,_m=new Map;var vm=0;function ym(e,t,n){let r=++vm,i=()=>gm.get(e)||[],a=()=>{let t=i();gm.set(e,t.filter(e=>e.id!==r))},o=()=>{let t=i();if(!t.some(e=>e.id===r))return;let n=_m.get(e);if(t.length===1&&n){let e=n();e instanceof Promise&&e.catch(()=>{})}a()},s=i();if(gm.set(e,[...s,{id:r,fns:t}]),s&&s.length>0)return o;let c={};for(let e in t)c[e]=((...t)=>{let n=i();if(n.length!==0)for(let r of n)r.fns[e]?.(...t)});let l=n(c);return typeof l==`function`&&_m.set(e,l),o}async function bm(e){return new Promise(t=>setTimeout(t,e))}function xm(e,{emitOnBegin:t,initialWaitTime:n,interval:r}){let i=!0,a=()=>i=!1;return(async()=>{let o;t&&(o=await e({unpoll:a}));let s=await n?.(o)??r;await bm(s);let c=async()=>{i&&(await e({unpoll:a}),await bm(r),c())};c()})(),a}const Sm=new Map,Cm=new Map;function wm(e){let t=(e,t)=>({clear:()=>t.delete(e),get:()=>t.get(e),set:n=>t.set(e,n)}),n=t(e,Sm),r=t(e,Cm);return{clear:()=>{n.clear(),r.clear()},promise:n,response:r}}async function Tm(e,{cacheKey:t,cacheTime:n=1/0}){let r=wm(t),i=r.response.get();if(i&&n>0&&Date.now()-i.created.getTime()`blockNumber.${e}`;async function Dm(e,{cacheTime:t=e.cacheTime}={}){let n=await Tm(()=>e.request({method:`eth_blockNumber`}),{cacheKey:Em(e.uid),cacheTime:t});return BigInt(n)}O();var Om=class extends D{constructor({docsPath:e}={}){super([`Could not find an Account to execute with this Action.`,"Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."].join(` +`),{docsPath:e,docsSlug:`account`,name:`AccountNotFoundError`})}},km=class extends D{constructor({docsPath:e,metaMessages:t,type:n}){super(`Account type "${n}" is not supported.`,{docsPath:e,metaMessages:t,name:`AccountTypeNotSupportedError`})}};Op();function Am({chain:e,currentChainId:t}){if(!e)throw new Tp;if(t!==e.id)throw new wp({chain:e,currentChainId:t})}Mu(),ho(),Pu();function jm(e,{docsPath:t,...n}){let r=(()=>{let t=Nu(e,n);return t instanceof ju?e:t})();return new lo(r,{docsPath:t,...n})}async function Mm(e,{serializedTransaction:t}){return e.request({method:`eth_sendRawTransaction`,params:[t]},{retryCount:0})}ra(),O(),Lu(),Wu(),hi(),$u();var Nm=new mi(128);async function Pm(e,t){let{account:n=e.account,chain:r=e.chain,accessList:i,authorizationList:a,blobs:o,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,type:m,value:h,...g}=t;if(n===void 0)throw new Om({docsPath:`/docs/actions/wallet/sendTransaction`});let _=n?na(n):null;try{Qu(t);let n=await(async()=>{if(t.to)return t.to;if(t.to!==null&&a&&a.length>0)return await vu({authorization:a[0]}).catch(()=>{throw new D("`to` is required. Could not infer from `authorizationList`.")})})();if(_?.type===`json-rpc`||_===null){let t;r!==null&&(t=await E(e,Md,`getChainId`)({}),Am({currentChainId:t,chain:r}));let v=e.chain?.formatters?.transactionRequest?.format,y=(v||Bu)({...Iu(g,{format:v}),accessList:i,authorizationList:a,blobs:o,chainId:t,data:s,from:_?.address,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,to:n,type:m,value:h},`sendTransaction`),b=Nm.get(e.uid),x=b?`wallet_sendTransaction`:`eth_sendTransaction`;try{return await e.request({method:x,params:[y]},{retryCount:0})}catch(t){if(b===!1)throw t;let n=t;if(n.name===`InvalidInputRpcError`||n.name===`InvalidParamsRpcError`||n.name===`MethodNotFoundRpcError`||n.name===`MethodNotSupportedRpcError`)return await e.request({method:`wallet_sendTransaction`,params:[y]},{retryCount:0}).then(t=>(Nm.set(e.uid,!0),t)).catch(t=>{let r=t;throw r.name===`MethodNotFoundRpcError`||r.name===`MethodNotSupportedRpcError`?(Nm.set(e.uid,!1),n):r});throw n}}if(_?.type===`local`){let t=await E(e,Fd,`prepareTransactionRequest`)({account:_,accessList:i,authorizationList:a,blobs:o,chain:r,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,nonceManager:_.nonceManager,parameters:[...Nd,`sidecars`],type:m,value:h,...g,to:n}),v=r?.serializers?.transaction,y=await _.signTransaction(t,{serializer:v});return await E(e,Mm,`sendRawTransaction`)({serializedTransaction:y})}throw _?.type===`smart`?new km({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:`/docs/actions/bundler/sendUserOperation`,type:`smart`}):new km({docsPath:`/docs/actions/wallet/sendTransaction`,type:_?.type})}catch(e){throw e instanceof km?e:jm(e,{...t,account:_,chain:t.chain||void 0})}}ra(),ca();async function Fm(e,t){return Fm.internal(e,Pm,`sendTransaction`,t)}(function(e){async function t(e,t,n,r){let{abi:i,account:a=e.account,address:o,args:s,dataSuffix:c,functionName:l,...u}=r;if(a===void 0)throw new Om({docsPath:`/docs/contract/writeContract`});let d=a?na(a):null,f=sa({abi:i,args:s,functionName:l});try{return await E(e,t,n)({data:`${f}${c?c.replace(`0x`,``):``}`,to:o,account:d,...u})}catch(e){throw cs(e,{abi:i,address:o,args:s,docsPath:`/docs/contract/writeContract`,functionName:l,sender:d?.address})}}e.internal=t})(Fm||={}),O();var Im=class extends D{constructor(e){super(`Call bundle failed with status: ${e.statusCode}`,{name:`BundleFailedError`}),Object.defineProperty(this,`result`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.result=e}};function Lm(e,{delay:t=100,retryCount:n=2,shouldRetry:r=()=>!0}={}){return new Promise((i,a)=>{let o=async({count:s=0}={})=>{let c=async({error:e})=>{let n=typeof t==`function`?t({count:s,error:e}):t;n&&await bm(n),o({count:s+1})};try{let t=await e();i(t)}catch(e){if(szd(e)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?En(e.transactionIndex):null,status:e.status?Rm[e.status]:null,type:e.type?id[e.type]||e.type:null};return e.blobGasPrice&&(n.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(n.blobGasUsed=BigInt(e.blobGasUsed)),n}const Bm=Ru(`transactionReceipt`,zm);ra(),O(),os(),ca(),Di(),Dn(),A();const Vm=k(0,{size:32});async function Hm(e,t){let{account:n=e.account,capabilities:r,chain:i=e.chain,experimental_fallback:a,experimental_fallbackDelay:o=32,forceAtomic:s=!1,id:c,version:l=`2.0.0`}=t,u=n?na(n):null,d=t.calls.map(e=>{let t=e,n=t.abi?sa({abi:t.abi,functionName:t.functionName,args:t.args}):t.data;return{data:t.dataSuffix&&n?wi([n,t.dataSuffix]):n,to:t.to,value:t.value?k(t.value):void 0}});try{let t=await e.request({method:`wallet_sendCalls`,params:[{atomicRequired:s,calls:d,capabilities:r,chainId:k(i.id),from:u?.address,id:c,version:l}]},{retryCount:0});return typeof t==`string`?{id:t}:t}catch(n){let c=n;if(a&&(c.name===`MethodNotFoundRpcError`||c.name===`MethodNotSupportedRpcError`||c.name===`UnknownRpcError`||c.details.toLowerCase().includes(`does not exist / is not available`)||c.details.toLowerCase().includes(`missing or invalid. request()`)||c.details.toLowerCase().includes(`did not match any variant of untagged enum`)||c.details.toLowerCase().includes(`account upgraded to unsupported contract`)||c.details.toLowerCase().includes(`eip-7702 not supported`)||c.details.toLowerCase().includes(`unsupported wc_ method`)||c.details.toLowerCase().includes(`feature toggled misconfigured`)||c.details.toLowerCase().includes(`jsonrpcengine: response has no error or result for request`))){if(r&&Object.values(r).some(e=>!e.optional)){let e="non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.";throw new Xo(new D(e,{details:e}))}if(s&&d.length>1){let e="`forceAtomic` is not supported on fallback to `eth_sendTransaction`.";throw new ns(new D(e,{details:e}))}let t=[];for(let n of d){let r=Pm(e,{account:u,chain:i,data:n.data,to:n.to,value:n.value?wn(n.value):void 0});t.push(r),o>0&&await new Promise(e=>setTimeout(e,o))}let n=await Promise.allSettled(t);if(n.every(e=>e.status===`rejected`))throw n[0].reason;let a=n.map(e=>e.status===`fulfilled`?e.value:Vm);return{id:wi([...a,k(i.id,{size:32}),`0x5792579257925792579257925792579257925792579257925792579257925792`])}}throw jm(n,{...t,account:u,chain:t.chain})}}Ni(),Sn(),Dn();async function Um(e,t){async function n(t){if(t.endsWith(`5792579257925792579257925792579257925792579257925792579257925792`)){let n=xn(Mi(t,-64,-32)),r=Mi(t,0,-64).slice(2).match(/.{1,64}/g),i=await Promise.all(r.map(t=>Vm.slice(2)===t?void 0:e.request({method:`eth_getTransactionReceipt`,params:[`0x${t}`]},{dedupe:!0}))),a=(()=>i.some(e=>e===null)?100:i.every(e=>e?.status===`0x1`)?200:i.every(e=>e?.status===`0x0`)?500:600)();return{atomic:!1,chainId:En(n),receipts:i.filter(Boolean),status:a,version:`2.0.0`}}return e.request({method:`wallet_getCallsStatus`,params:[t]})}let{atomic:r=!1,chainId:i,receipts:a,version:o=`2.0.0`,...s}=await n(t.id),[c,l]=(()=>{let e=s.status;return e>=100&&e<200?[`pending`,e]:e>=200&&e<300?[`success`,e]:e>=300&&e<700?[`failure`,e]:e===`CONFIRMED`?[`success`,200]:e===`PENDING`?[`pending`,100]:[void 0,e]})();return{...s,atomic:r,chainId:i?En(i):void 0,receipts:a?.map(e=>({...e,blockNumber:wn(e.blockNumber),gasUsed:wn(e.gasUsed),status:Rm[e.status]}))??[],statusCode:l,status:c,version:o}}O(),Lp(),Va();async function Wm(e,t){let{id:n,pollingInterval:r=e.pollingInterval,status:i=({statusCode:e})=>e===200||e>=300,retryCount:a=4,retryDelay:o=({count:e})=>~~(1<{let s=xm(async()=>{let r=e=>{clearTimeout(p),s(),e(),m()};try{let s=await Lm(async()=>{let t=await E(e,Um,`getCallsStatus`)({id:n});if(c&&t.status===`failure`)throw new Im(t);return t},{retryCount:a,delay:o});if(!i(s))return;r(()=>t.resolve(s))}catch(e){r(()=>t.reject(e))}},{interval:r,emitOnBegin:!0});return s});return p=s?setTimeout(()=>{m(),clearTimeout(p),f(new Gm({id:n}))},s):void 0,await u}var Gm=class extends D{constructor({id:e}){super(`Timed out while waiting for call bundle with id "${e}" to be confirmed.`,{name:`WaitForCallsStatusTimeoutError`})}},Km=256,qm=Km,Jm;function Ym(e=11){if(!Jm||qm+e>Km*2){Jm=``,qm=0;for(let e=0;e{let n=t(e);for(let e in _)delete n[e];let r={...e,...n};return Object.assign(r,{extend:v(r)})}}return Object.assign(_,{extend:v(_)})}A();async function Zm(e,{address:t,blockNumber:n,blockTag:r=`latest`}){let i=n===void 0?void 0:k(n),a=await e.request({method:`eth_getCode`,params:[t,i||r]},{dedupe:!!i});if(a!==`0x`)return a}O();var Qm=class extends D{constructor({address:e}){super(`No EIP-712 domain found on contract "${e}".`,{metaMessages:[`Ensure that:`,`- The contract is deployed at the address "${e}".`,"- `eip712Domain()` function exists on the contract.","- `eip712Domain()` function matches signature to ERC-5267 specification."],name:`Eip712DomainNotFoundError`})}};async function $m(e,t){let{address:n,factory:r,factoryData:i}=t;try{let[t,a,o,s,c,l,u]=await E(e,hm,`readContract`)({abi:eh,address:n,functionName:`eip712Domain`,factory:r,factoryData:i});return{domain:{name:a,version:o,chainId:Number(s),verifyingContract:c,salt:l},extensions:u,fields:t}}catch(e){let t=e;throw t.name===`ContractFunctionExecutionError`&&t.cause.name===`ContractFunctionZeroDataError`?new Qm({address:n}):t}}var eh=[{inputs:[],name:`eip712Domain`,outputs:[{name:`fields`,type:`bytes1`},{name:`name`,type:`string`},{name:`version`,type:`string`},{name:`chainId`,type:`uint256`},{name:`verifyingContract`,type:`address`},{name:`salt`,type:`bytes32`},{name:`extensions`,type:`uint256[]`}],stateMutability:`view`,type:`function`}];Zu(),pi(),O(),Op(),Mu(),Ci(),It(),Ni(),Dn();function th(e){let{authorizationList:t}=e;if(t)for(let e of t){let{chainId:t}=e,n=e.address;if(!bi(n))throw new fi({address:n});if(t<0)throw new Dp({chainId:t})}rh(e)}function nh(e){let{blobVersionedHashes:t}=e;if(t){if(t.length===0)throw new Ed;for(let e of t){let t=Ft(e),n=En(Oi(e,0,1));if(t!==32)throw new Dd({hash:e,size:t});if(n!==1)throw new Od({hash:e,version:n})}}rh(e)}function rh(e){let{chainId:t,maxPriorityFeePerGas:n,maxFeePerGas:r,to:i}=e;if(t<=0)throw new Dp({chainId:t});if(i&&!bi(i))throw new fi({address:i});if(r&&r>Xu)throw new xu({maxFeePerGas:r});if(n&&r&&n>r)throw new Au({maxFeePerGas:r,maxPriorityFeePerGas:n})}function ih(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:r,maxFeePerGas:i,to:a}=e;if(t<=0)throw new Dp({chainId:t});if(a&&!bi(a))throw new fi({address:a});if(n||i)throw new D("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid EIP-2930 Transaction attribute.");if(r&&r>Xu)throw new xu({maxFeePerGas:r})}function ah(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:r,maxFeePerGas:i,to:a}=e;if(a&&!bi(a))throw new fi({address:a});if(t!==void 0&&t<=0)throw new Dp({chainId:t});if(n||i)throw new D("`maxFeePerGas`/`maxPriorityFeePerGas` is not a valid Legacy Transaction attribute.");if(r&&r>Xu)throw new xu({maxFeePerGas:r})}pi(),ho(),Ci();function oh(e){if(!e||e.length===0)return[];let t=[];for(let n=0;nAn(e)),n=e.kzg,r=hd({blobs:t,kzg:n});if(f===void 0&&(f=bd({commitments:r})),p===void 0){let e=gd({blobs:t,commitments:r,kzg:n});p=Ad({blobs:t,commitments:r,proofs:e})}}let m=oh(u),h=[k(n),i?k(i):`0x`,l?k(l):`0x`,c?k(c):`0x`,r?k(r):`0x`,a??`0x`,o?k(o):`0x`,d??`0x`,m,s?k(s):`0x`,f??[],...ph(e,t)],g=[],_=[],v=[];if(p)for(let e=0;e{if(t.v>=35n)return(t.v-35n)/2n>0?t.v:27n+(t.v===35n?0n:1n);if(n>0)return BigInt(n*2)+BigInt(35n+t.v-27n);let e=27n+(t.v===27n?0n:1n);if(t.v!==e)throw new oo({v:t.v});return e})(),r=xn(t.r),i=xn(t.s);l=[...l,k(e),r===`0x00`?`0x`:r,i===`0x00`?`0x`:i]}else n>0&&(l=[...l,k(n),`0x`,`0x`]);return M(l)}function ph(e,t){let n=t??e,{v:r,yParity:i}=n;if(n.r===void 0||n.s===void 0||r===void 0&&i===void 0)return[];let a=xn(n.r),o=xn(n.s);return[(()=>typeof i==`number`?i?k(1):`0x`:r===0n?`0x`:r===1n?k(1):r===27n?`0x`:k(1))(),a===`0x00`?`0x`:a,o===`0x00`?`0x`:o]}A();function mh(e){if(!e||e.length===0)return[];let t=[];for(let n of e){let{chainId:e,nonce:r,...i}=n,a=n.address;t.push([e?On(e):`0x`,a,r?On(r):`0x`,...ph({},i)])}return t}yi(),Rd();async function hh({address:e,authorization:t,signature:n}){return Ld(_i(e),await vu({authorization:t,signature:n}))}hi();const gh=new mi(8192);function _h(e,{enabled:t=!0,id:n}){if(!t||!n)return e();if(gh.get(n))return gh.get(n);let r=e().finally(()=>gh.delete(n));return gh.set(n,r),r}O(),ko(),os(),A(),Va();function vh(e,t={}){return async(n,r={})=>{let{dedupe:i=!1,methods:a,retryDelay:o=150,retryCount:s=3,uid:c}={...t,...r},{method:l}=n;if(a?.exclude?.includes(l)||a?.include&&!a.include.includes(l))throw new Vo(Error(`method not supported`),{method:l});let u=i?jn(`${c}.${Ba(n)}`):void 0;return _h(()=>Lm(async()=>{try{return await e(n)}catch(e){let t=e;switch(t.code){case No.code:throw new No(t);case j.code:throw new j(t);case Po.code:throw new Po(t,{method:n.method});case Fo.code:throw new Fo(t);case Io.code:throw new Io(t);case Lo.code:throw new Lo(t);case Ro.code:throw new Ro(t);case zo.code:throw new zo(t);case Bo.code:throw new Bo(t);case Vo.code:throw new Vo(t,{method:n.method});case Ho.code:throw new Ho(t);case Uo.code:throw new Uo(t);case Wo.code:throw new Wo(t);case Go.code:throw new Go(t);case Ko.code:throw new Ko(t);case qo.code:throw new qo(t);case Jo.code:throw new Jo(t);case Yo.code:throw new Yo(t);case Xo.code:throw new Xo(t);case Zo.code:throw new Zo(t);case Qo.code:throw new Qo(t);case $o.code:throw new $o(t);case es.code:throw new es(t);case ts.code:throw new ts(t);case ns.code:throw new ns(t);case 5e3:throw new Wo(t);default:throw e instanceof D?e:new rs(t)}}},{delay:({count:e,error:t})=>{if(t&&t instanceof Eo){let e=t?.headers?.get(`Retry-After`);if(e?.match(/\d/))return Number.parseInt(e,10)*1e3}return~~(1<yh(e)}),{enabled:i,id:u})}}function yh(e){return`code`in e&&typeof e.code==`number`?e.code===-1||e.code===Ho.code||e.code===Io.code:e instanceof Eo&&e.status?e.status===403||e.status===408||e.status===413||e.status===429||e.status===500||e.status===502||e.status===503||e.status===504:!0}function L(e){return{formatters:void 0,fees:void 0,serializers:void 0,...e}}function bh(e,{errorInstance:t=Error(`timed out`),timeout:n,signal:r}){return new Promise((i,a)=>{(async()=>{let o;try{let s=new AbortController;n>0&&(o=setTimeout(()=>{r?s.abort():a(t)},n)),i(await e({signal:s?.signal||null}))}catch(e){e?.name===`AbortError`&&a(t),a(e)}finally{clearTimeout(o)}})()})}function xh(){return{current:0,take(){return this.current++},reset(){this.current=0}}}const Sh=xh();ko(),Va();function Ch(e,t={}){return{async request(n){let{body:r,fetchFn:i=t.fetchFn??fetch,onRequest:a=t.onRequest,onResponse:o=t.onResponse,timeout:s=t.timeout??1e4}=n,c={...t.fetchOptions??{},...n.fetchOptions??{}},{headers:l,method:u,signal:d}=c;try{let t=await bh(async({signal:t})=>{let n={...c,body:Ba(Array.isArray(r)?r.map(e=>({jsonrpc:`2.0`,id:e.id??Sh.take(),...e})):{jsonrpc:`2.0`,id:r.id??Sh.take(),...r}),headers:{"Content-Type":`application/json`,...l},method:u||`POST`,signal:d||(s>0?t:null)},o=new Request(e,n),f=await a?.(o,n)??{...n,url:e};return await i(f.url??e,f)},{errorInstance:new Oo({body:r,url:e}),timeout:s,signal:!0});o&&await o(t);let n;if(t.headers.get(`Content-Type`)?.startsWith(`application/json`))n=await t.json();else{n=await t.text();try{n=JSON.parse(n||`{}`)}catch(e){if(t.ok)throw e;n={error:n}}}if(!t.ok)throw new Eo({body:r,details:Ba(n.error)||t.statusText,headers:t.headers,status:t.status,url:e});return n}catch(t){throw t instanceof Eo||t instanceof Oo?t:new Eo({body:r,cause:t,url:e})}}}}Di(),It(),A();function wh(e){let t=(()=>typeof e==`string`?jn(e):typeof e.raw==`string`?e.raw:An(e.raw))(),n=jn(`Ethereum Signed Message: +${Ft(t)}`);return wi([n,t])}ei();function Th(e,t){return $r(wh(e),t)}Va(),O();var Eh=class extends D{constructor({domain:e}){super(`Invalid domain "${Ba(e)}".`,{metaMessages:[`Must be a valid EIP-712 domain.`]})}},Dh=class extends D{constructor({primaryType:e,types:t}){super(`Invalid primary type \`${e}\` must be one of \`${JSON.stringify(Object.keys(t))}\`.`,{docsPath:`/api/glossary/Errors#typeddatainvalidprimarytypeerror`,metaMessages:["Check that the primary type is a key in `types`."]})}},Oh=class extends D{constructor({type:e}){super(`Struct type "${e}" is invalid.`,{metaMessages:[`Struct type must not be a Solidity type.`],name:`InvalidStructTypeError`})}};sn(),pi(),Ci(),It(),A(),Ii(),Va();function kh(e){let{domain:t,message:n,primaryType:r,types:i}=e,a=(e,t)=>{let n={...t};for(let t of e){let{name:e,type:r}=t;r===`address`&&(n[e]=n[e].toLowerCase())}return n},o=(()=>!i.EIP712Domain||!t?{}:a(i.EIP712Domain,t))(),s=(()=>{if(r!==`EIP712Domain`)return a(i[r],n)})();return Ba({domain:o,message:s,primaryType:r,types:i})}function Ah(e){let{domain:t,message:n,primaryType:r,types:i}=e,a=(e,t)=>{for(let n of e){let{name:e,type:r}=n,o=t[e],s=r.match(Fi);if(s&&(typeof o==`number`||typeof o==`bigint`)){let[e,t,n]=s;k(o,{signed:t===`int`,size:Number.parseInt(n,10)/8})}if(r===`address`&&typeof o==`string`&&!bi(o))throw new fi({address:o});let c=r.match(Pi);if(c){let[e,t]=c;if(t&&Ft(o)!==Number.parseInt(t,10))throw new tn({expectedSize:Number.parseInt(t,10),givenSize:Ft(o)})}let l=i[r];l&&(Mh(r),a(l,o))}};if(i.EIP712Domain&&t){if(typeof t!=`object`)throw new Eh({domain:t});a(i.EIP712Domain,t)}if(r!==`EIP712Domain`)if(i[r])a(i[r],n);else throw new Dh({primaryType:r,types:i})}function jh({domain:e}){return[typeof e?.name==`string`&&{name:`name`,type:`string`},e?.version&&{name:`version`,type:`string`},(typeof e?.chainId==`number`||typeof e?.chainId==`bigint`)&&{name:`chainId`,type:`uint256`},e?.verifyingContract&&{name:`verifyingContract`,type:`address`},e?.salt&&{name:`salt`,type:`bytes32`}].filter(Boolean)}function Mh(e){if(e===`address`||e===`bool`||e===`string`||e.startsWith(`bytes`)||e.startsWith(`uint`)||e.startsWith(`int`))throw new Oh({type:e})}Yi(),Di(),A(),ei();function Nh(e){let{domain:t={},message:n,primaryType:r}=e,i={EIP712Domain:jh({domain:t}),...e.types};Ah({domain:t,message:n,primaryType:r,types:i});let a=[`0x1901`];return t&&a.push(Ph({domain:t,types:i})),r!==`EIP712Domain`&&a.push(Fh({data:n,primaryType:r,types:i})),$r(wi(a))}function Ph({domain:e,types:t}){return Fh({data:e,primaryType:`EIP712Domain`,types:t})}function Fh({data:e,primaryType:t,types:n}){let r=Ih({data:e,primaryType:t,types:n});return $r(r)}function Ih({data:e,primaryType:t,types:n}){let r=[{type:`bytes32`}],i=[Lh({primaryType:t,types:n})];for(let a of n[t]){let[t,o]=Bh({types:n,name:a.name,type:a.type,value:e[a.name]});r.push(t),i.push(o)}return Li(r,i)}function Lh({primaryType:e,types:t}){let n=On(Rh({primaryType:e,types:t}));return $r(n)}function Rh({primaryType:e,types:t}){let n=``,r=zh({primaryType:e,types:t});r.delete(e);let i=[e,...Array.from(r).sort()];for(let e of i)n+=`${e}(${t[e].map(({name:e,type:t})=>`${t} ${e}`).join(`,`)})`;return n}function zh({primaryType:e,types:t},n=new Set){let r=e.match(/^\w*/u)?.[0];if(n.has(r)||t[r]===void 0)return n;n.add(r);for(let e of t[r])zh({primaryType:e.type,types:t},n);return n}function Bh({types:e,name:t,type:n,value:r}){if(e[n]!==void 0)return[{type:`bytes32`},$r(Ih({data:r,primaryType:n,types:e}))];if(n===`bytes`)return r=`0x${(r.length%2?`0`:``)+r.slice(2)}`,[{type:`bytes32`},$r(r)];if(n===`string`)return[{type:`bytes32`},$r(On(r))];if(n.lastIndexOf(`]`)===n.length-1){let i=n.slice(0,n.lastIndexOf(`[`)),a=r.map(n=>Bh({name:t,type:i,types:e,value:n}));return[{type:`bytes32`},$r(Li(a.map(([e])=>e),a.map(([,e])=>e)))]}return[{type:n},r]}const Vh={checksum:new class extends Map{constructor(e){super(),Object.defineProperty(this,`maxSize`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&t!==void 0&&(this.delete(e),super.set(e,t)),t}set(e,t){if(super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=this.keys().next().value;e&&this.delete(e)}return this}}(8192)}.checksum;Qr(),Lf(),op();function Hh(e,t={}){let{as:n=typeof e==`string`?`Hex`:`Bytes`}=t,r=Zr(hf(e));return n===`Bytes`?r:Hf(r)}function Uh(e,t={}){let{as:n=typeof e==`string`?`Hex`:`Bytes`}=t,r=_d(hf(e));return n===`Bytes`?r:Hf(r)}Lf(),Jd(),op(),pf();function Wh(e,t={}){let{compressed:n}=t,{prefix:r,x:i,y:a}=e;if(n===!1||typeof i==`bigint`&&typeof a==`bigint`){if(r!==4)throw new Xh({prefix:r,cause:new Qh});return}if(n===!0||typeof i==`bigint`&&a===void 0){if(r!==3&&r!==2)throw new Xh({prefix:r,cause:new Zh});return}throw new Yh({publicKey:e})}function Gh(e){let t=(()=>{if(Zf(e))return qh(e);if(kf(e))return Kh(e);let{prefix:t,x:n,y:r}=e;return typeof n==`bigint`&&typeof r==`bigint`?{prefix:t??4,x:n,y:r}:{prefix:t,x:n}})();return Wh(t),t}function Kh(e){return qh(Hf(e))}function qh(e){if(e.length!==132&&e.length!==130&&e.length!==68)throw new $h({publicKey:e});if(e.length===130){let t=BigInt(Kf(e,0,32)),n=BigInt(Kf(e,32,64));return{prefix:4,x:t,y:n}}if(e.length===132){let t=Number(Kf(e,0,1)),n=BigInt(Kf(e,1,33)),r=BigInt(Kf(e,33,65));return{prefix:t,x:n,y:r}}let t=Number(Kf(e,0,1)),n=BigInt(Kf(e,1,33));return{prefix:t,x:n}}function Jh(e,t={}){Wh(e);let{prefix:n,x:r,y:i}=e,{includePrefix:a=!0}=t;return zf(a?I(n,{size:1}):`0x`,I(r,{size:32}),typeof i==`bigint`?I(i,{size:32}):`0x`)}var Yh=class extends P{constructor({publicKey:e}){super(`Value \`${df(e)}\` is not a valid public key.`,{metaMessages:[`Public key must contain:`,"- an `x` and `prefix` value (compressed)","- an `x`, `y`, and `prefix` value (uncompressed)"]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidError`})}},Xh=class extends P{constructor({prefix:e,cause:t}){super(`Prefix "${e}" is invalid.`,{cause:t}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidPrefixError`})}},Zh=class extends P{constructor(){super(`Prefix must be 2 or 3 for compressed public keys.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidCompressedPrefixError`})}},Qh=class extends P{constructor(){super(`Prefix must be 4 for uncompressed public keys.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidUncompressedPrefixError`})}},$h=class extends P{constructor({publicKey:e}){super(`Value \`${e}\` is an invalid public key size.`,{metaMessages:[`Expected: 33 bytes (compressed + prefix), 64 bytes (uncompressed) or 65 bytes (uncompressed + prefix).`,`Received ${qf(Bf(e))} bytes.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`PublicKey.InvalidSerializedSizeError`})}};Lf(),Jd();var eg=/^0x[a-fA-F0-9]{40}$/;function tg(e,t={}){let{strict:n=!0}=t;if(!eg.test(e))throw new sg({address:e,cause:new cg});if(n){if(e.toLowerCase()===e)return;if(ng(e)!==e)throw new sg({address:e,cause:new lg})}}function ng(e){if(Vh.has(e))return Vh.get(e);tg(e,{strict:!1});let t=e.substring(2).toLowerCase(),n=Hh(vf(t),{as:`Bytes`}),r=t.split(``);for(let e=0;e<40;e+=2)n[e>>1]>>4>=8&&r[e]&&(r[e]=r[e].toUpperCase()),(n[e>>1]&15)>=8&&r[e+1]&&(r[e+1]=r[e+1].toUpperCase());let i=`0x${r.join(``)}`;return Vh.set(e,i),i}function rg(e,t={}){let{checksum:n=!1}=t;return tg(e),n?ng(e):e}function ig(e,t={}){let n=Hh(`0x${Jh(e).slice(4)}`).substring(26);return rg(`0x${n}`,t)}function ag(e,t){return tg(e,{strict:!1}),tg(t,{strict:!1}),e.toLowerCase()===t.toLowerCase()}function og(e,t={}){let{strict:n=!0}=t??{};try{return tg(e,{strict:n}),!0}catch{return!1}}var sg=class extends P{constructor({address:e,cause:t}){super(`Address "${e}" is invalid.`,{cause:t}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Address.InvalidAddressError`})}},cg=class extends P{constructor(){super(`Address is not a 20 byte (40 hexadecimal character) value.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Address.InvalidInputError`})}},lg=class extends P{constructor(){super(`Address does not match its checksum counterpart.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Address.InvalidChecksumError`})}};const ug=/^(.*)\[([0-9]*)\]$/,dg=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,fg=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;2n**(8n-1n)-1n,2n**(16n-1n)-1n,2n**(24n-1n)-1n,2n**(32n-1n)-1n,2n**(40n-1n)-1n,2n**(48n-1n)-1n,2n**(56n-1n)-1n,2n**(64n-1n)-1n,2n**(72n-1n)-1n,2n**(80n-1n)-1n,2n**(88n-1n)-1n,2n**(96n-1n)-1n,2n**(104n-1n)-1n,2n**(112n-1n)-1n,2n**(120n-1n)-1n,2n**(128n-1n)-1n,2n**(136n-1n)-1n,2n**(144n-1n)-1n,2n**(152n-1n)-1n,2n**(160n-1n)-1n,2n**(168n-1n)-1n,2n**(176n-1n)-1n,2n**(184n-1n)-1n,2n**(192n-1n)-1n,2n**(200n-1n)-1n,2n**(208n-1n)-1n,2n**(216n-1n)-1n,2n**(224n-1n)-1n,2n**(232n-1n)-1n,2n**(240n-1n)-1n,2n**(248n-1n)-1n,2n**(256n-1n)-1n,-(2n**(8n-1n)),-(2n**(16n-1n)),-(2n**(24n-1n)),-(2n**(32n-1n)),-(2n**(40n-1n)),-(2n**(48n-1n)),-(2n**(56n-1n)),-(2n**(64n-1n)),-(2n**(72n-1n)),-(2n**(80n-1n)),-(2n**(88n-1n)),-(2n**(96n-1n)),-(2n**(104n-1n)),-(2n**(112n-1n)),-(2n**(120n-1n)),-(2n**(128n-1n)),-(2n**(136n-1n)),-(2n**(144n-1n)),-(2n**(152n-1n)),-(2n**(160n-1n)),-(2n**(168n-1n)),-(2n**(176n-1n)),-(2n**(184n-1n)),-(2n**(192n-1n)),-(2n**(200n-1n)),-(2n**(208n-1n)),-(2n**(216n-1n)),-(2n**(224n-1n)),-(2n**(232n-1n)),-(2n**(240n-1n)),-(2n**(248n-1n)),-(2n**(256n-1n));const pg=2n**256n-1n;Lf(),Jd(),op();function mg(e,t,n){let{checksumAddress:r,staticPosition:i}=n,a=Pg(t.type);if(a){let[n,o]=a;return vg(e,{...t,type:o},{checksumAddress:r,length:n,staticPosition:i})}if(t.type===`tuple`)return Sg(e,t,{checksumAddress:r,staticPosition:i});if(t.type===`address`)return _g(e,{checksum:r});if(t.type===`bool`)return yg(e);if(t.type.startsWith(`bytes`))return bg(e,t,{staticPosition:i});if(t.type.startsWith(`uint`)||t.type.startsWith(`int`))return xg(e,t);if(t.type===`string`)return Cg(e,{staticPosition:i});throw new Zg(t.type)}var hg=32,gg=32;function _g(e,t={}){let{checksum:n=!1}=t,r=e.readBytes(32);return[(e=>n?ng(e):e)(Hf(xf(r,-20))),32]}function vg(e,t,n){let{checksumAddress:r,length:i,staticPosition:a}=n;if(!i){let n=Tf(e.readBytes(gg)),i=a+n,o=i+hg;e.setPosition(i);let s=Tf(e.readBytes(hg)),c=Fg(t),l=0,u=[];for(let n=0;n48?Sf(i,{signed:n}):Tf(i,{signed:n}),32]}function Sg(e,t,n){let{checksumAddress:r,staticPosition:i}=n,a=t.components.length===0||t.components.some(({name:e})=>!e),o=a?[]:{},s=0;if(Fg(t)){let n=Tf(e.readBytes(gg)),c=i+n;for(let n=0;n0?zf(t,e):t}}if(o)return{dynamic:!0,encoded:e}}return{dynamic:!1,encoded:zf(...s.map(({encoded:e})=>e))}}function kg(e,{type:t}){let[,n]=t.split(`bytes`),r=qf(e);if(!n){let t=e;return r%32!=0&&(t=Gf(t,Math.ceil((e.length-2)/2/32)*32)),{dynamic:!0,encoded:zf(Wf(I(r,{size:32})),t)}}if(r!==Number.parseInt(n,10))throw new Jg({expectedSize:Number.parseInt(n,10),value:e});return{dynamic:!1,encoded:Gf(e)}}function Ag(e){if(typeof e!=`boolean`)throw new P(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:Wf(Vf(e))}}function jg(e,{signed:t,size:n}){if(typeof n==`number`){let r=2n**(BigInt(n)-(t?1n:0n))-1n,i=t?-r-1n:0n;if(e>r||ee))}}function Pg(e){let t=e.match(/^(.*)\[(\d+)?\]$/);return t?[t[2]?Number(t[2]):null,t[1]]:void 0}function Fg(e){let{type:t}=e;if(t===`string`||t===`bytes`||t.endsWith(`[]`))return!0;if(t===`tuple`)return e.components?.some(Fg);let n=Pg(e.type);return!!(n&&Fg({...e,type:n[1]}))}Jd();var Ig={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:1/0,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new Bg({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new zg({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new Rg({offset:e});let t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new Rg({offset:e});let t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){let n=t??this.position;return this.assertPosition(n+e-1),this.bytes.subarray(n,n+e)},inspectUint8(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){let t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){let t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){let t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,e&255),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();let e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();let n=this.inspectBytes(e);return this.position+=t??e,n},readUint8(){this.assertReadLimit(),this._touch();let e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();let e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();let e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();let e=this.inspectUint32();return this.position+=4,e},get remaining(){return this.bytes.length-this.position},setPosition(e){let t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===1/0)return;let e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}};function Lg(e,{recursiveReadLimit:t=8192}={}){let n=Object.create(Ig);return n.bytes=e,n.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}var Rg=class extends P{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Cursor.NegativeOffsetError`})}},zg=class extends P{constructor({length:e,position:t}){super(`Position \`${t}\` is out of bounds (\`0 < position < ${e}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Cursor.PositionOutOfBoundsError`})}},Bg=class extends P{constructor({count:e,limit:t}){super(`Recursive read limit of \`${t}\` exceeded (recursive read count: \`${e}\`).`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Cursor.RecursiveReadLimitExceededError`})}};Ot(),Lf(),Jd(),op();function Vg(e,t,n={}){let{as:r=`Array`,checksumAddress:i=!1}=n,a=typeof t==`string`?_f(t):t,o=Lg(a);if(bf(a)===0&&e.length>0)throw new Kg;if(bf(a)&&bf(a)<32)throw new Gg({data:typeof t==`string`?t:Hf(t),parameters:e,size:bf(a)});let s=0,c=r===`Array`?[]:{};for(let t=0;te_(e))):n_(e)}function t_(e){let t=e.reduce((e,t)=>e+t.length,0),n=r_(t);return{length:(()=>t<=55?1+t:1+n+t)(),encode(r){t<=55?r.pushByte(192+t):(r.pushByte(247+n),n===1?r.pushUint8(t):n===2?r.pushUint16(t):n===3?r.pushUint24(t):r.pushUint32(t));for(let{encode:t}of e)t(r)}}}function n_(e){let t=typeof e==`string`?_f(e):e,n=r_(t.length);return{length:(()=>t.length===1&&t[0]<128?1:t.length<=55?1+t.length:1+n+t.length)(),encode(e){t.length===1&&t[0]<128?e.pushBytes(t):t.length<=55?(e.pushByte(128+t.length),e.pushBytes(t)):(e.pushByte(183+n),n===1?e.pushUint8(t.length):n===2?e.pushUint16(t.length):n===3?e.pushUint24(t.length):e.pushUint32(t.length),e.pushBytes(t))}}}function r_(e){if(e<2**8)return 1;if(e<2**16)return 2;if(e<2**24)return 3;if(e<2**32)return 4;throw new P(`Length is too large.`)}Jd(),op(),pf();function i_(e,t={}){let{recovered:n}=t;if(e.r===void 0||e.s===void 0||n&&e.yParity===void 0)throw new g_({signature:e});if(e.r<0n||e.r>pg)throw new __({value:e.r});if(e.s<0n||e.s>pg)throw new v_({value:e.s});if(typeof e.yParity==`number`&&e.yParity!==0&&e.yParity!==1)throw new y_({value:e.yParity})}function a_(e){return o_(Hf(e))}function o_(e){if(e.length!==130&&e.length!==132)throw new h_({signature:e});let t=BigInt(Kf(e,0,32)),n=BigInt(Kf(e,32,64)),r=(()=>{let t=Number(`0x${e.slice(130)}`);if(!Number.isNaN(t))try{return p_(t)}catch{throw new y_({value:t})}})();return r===void 0?{r:t,s:n}:{r:t,s:n,yParity:r}}function s_(e){if(e.r!==void 0&&e.s!==void 0)return c_(e)}function c_(e){let t=(()=>typeof e==`string`?o_(e):e instanceof Uint8Array?a_(e):typeof e.r==`string`?u_(e):e.v?l_(e):{r:e.r,s:e.s,...e.yParity===void 0?{}:{yParity:e.yParity}})();return i_(t),t}function l_(e){return{r:e.r,s:e.s,yParity:p_(e.v)}}function u_(e){let t=(()=>{let t=e.v?Number(e.v):void 0,n=e.yParity?Number(e.yParity):void 0;if(typeof t==`number`&&typeof n!=`number`&&(n=p_(t)),typeof n!=`number`)throw new y_({value:e.yParity});return n})();return{r:BigInt(e.r),s:BigInt(e.s),yParity:t}}function d_(e){i_(e);let t=e.r,n=e.s;return zf(I(t,{size:32}),I(n,{size:32}),typeof e.yParity==`number`?I(m_(e.yParity),{size:1}):`0x`)}function f_(e){let{r:t,s:n,yParity:r}=e;return[r?`0x01`:`0x`,t===0n?`0x`:Jf(I(t)),n===0n?`0x`:Jf(I(n))]}function p_(e){if(e===0||e===27)return 0;if(e===1||e===28)return 1;if(e>=35)return e%2==0?1:0;throw new b_({value:e})}function m_(e){if(e===0)return 27;if(e===1)return 28;throw new y_({value:e})}var h_=class extends P{constructor({signature:e}){super(`Value \`${e}\` is an invalid signature size.`,{metaMessages:[`Expected: 64 bytes or 65 bytes.`,`Received ${qf(Bf(e))} bytes.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidSerializedSizeError`})}},g_=class extends P{constructor({signature:e}){super(`Signature \`${df(e)}\` is missing either an \`r\`, \`s\`, or \`yParity\` property.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.MissingPropertiesError`})}},__=class extends P{constructor({value:e}){super(`Value \`${e}\` is an invalid r value. r must be a positive integer less than 2^256.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidRError`})}},v_=class extends P{constructor({value:e}){super(`Value \`${e}\` is an invalid s value. s must be a positive integer less than 2^256.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidSError`})}},y_=class extends P{constructor({value:e}){super(`Value \`${e}\` is an invalid y-parity value. Y-parity must be 0 or 1.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidYParityError`})}},b_=class extends P{constructor({value:e}){super(`Value \`${e}\` is an invalid v value. v must be 27, 28 or >=35.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Signature.InvalidVError`})}};op();function x_(e,t={}){return typeof e.chainId==`string`?S_(e):{...e,...t.signature}}function S_(e){let{address:t,chainId:n,nonce:r}=e,i=s_(e);return{address:t,chainId:Number(n),nonce:BigInt(r),...i}}function C_(e){return w_(e,{presign:!0})}function w_(e,t={}){let{presign:n}=t;return Hh(zf(`0x05`,$g(T_(n?{address:e.address,chainId:e.chainId,nonce:e.nonce}:e))))}function T_(e){let{address:t,chainId:n,nonce:r}=e,i=s_(e);return[n?I(n):`0x`,t,r?I(r):`0x`,...i?f_(i):[]]}uu(),Lf(),op();function E_(e){let{privateKey:t}=e,n=Yl.ProjectivePoint.fromPrivateKey(Bf(t).slice(2));return Gh(n)}function D_(e={}){let{as:t=`Hex`}=e,n=Yl.utils.randomPrivateKey();return t===`Hex`?Hf(n):n}function O_(e){return ig(k_(e))}function k_(e){let{payload:t,signature:n}=e,{r,s:i,yParity:a}=n,o=new Yl.Signature(BigInt(r),BigInt(i)).addRecoveryBit(a).recoverPublicKey(Bf(t).substring(2));return Gh(o)}function A_(e){let{extraEntropy:t=!1,hash:n,payload:r,privateKey:i}=e,{r:a,s:o,recovery:s}=Yl.sign(hf(r),hf(i),{extraEntropy:typeof t==`boolean`?t:Bf(t).slice(2),lowS:!0,...n?{prehash:!0}:{}});return{r:a,s:o,yParity:s}}Jd(),op();const j_=Wg(`(uint256 chainId, address delegation, uint256 nonce, uint8 yParity, uint256 r, uint256 s), address to, bytes data`);function M_(e){if(typeof e==`string`){if(Kf(e,-32)!==`0x8010801080108010801080108010801080108010801080108010801080108010`)throw new I_(e)}else i_(e.authorization)}function N_(e){M_(e);let t=Xf(Kf(e,-64,-32)),n=Kf(e,-t-64,-64),r=Kf(e,0,-t-64),[i,a,o]=Vg(j_,n);return{authorization:x_({address:i.delegation,chainId:Number(i.chainId),nonce:i.nonce,yParity:i.yParity,r:i.r,s:i.s}),signature:r,...o&&o!==`0x`?{data:o,to:a}:{}}}function P_(e){let{data:t,signature:n}=e;M_(e);let r=O_({payload:C_(e.authorization),signature:c_(e.authorization)}),i=Hg(j_,[{...e.authorization,delegation:e.authorization.address,chainId:BigInt(e.authorization.chainId)},e.to??r,t??`0x`]),a=I(qf(i),{size:32});return zf(n,i,a,`0x8010801080108010801080108010801080108010801080108010801080108010`)}function F_(e){try{return M_(e),!0}catch{return!1}}var I_=class extends P{constructor(e){super(`Value \`${e}\` is an invalid ERC-8010 wrapped signature.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`SignatureErc8010.InvalidWrappedSignatureError`})}};ho(),A();async function L_(e,{blockHash:t,blockNumber:n,blockTag:r,hash:i,index:a}){let o=r||`latest`,s=n===void 0?void 0:k(n),c=null;if(i?c=await e.request({method:`eth_getTransactionByHash`,params:[i]},{dedupe:!0}):t?c=await e.request({method:`eth_getTransactionByBlockHashAndIndex`,params:[t,k(a)]},{dedupe:!0}):(s||o)&&(c=await e.request({method:`eth_getTransactionByBlockNumberAndIndex`,params:[s||o,k(a)]},{dedupe:!!s})),!c)throw new uo({blockHash:t,blockNumber:n,blockTag:o,hash:i,index:a});return(e.chain?.formatters?.transaction?.format||ad)(c,`getTransaction`)}ho();async function R_(e,{hash:t}){let n=await e.request({method:`eth_getTransactionReceipt`,params:[t]},{dedupe:!0});if(!n)throw new fo({hash:t});return(e.chain?.formatters?.transactionReceipt?.format||zm)(n,`getTransactionReceipt`)}Jd();function z_(e){let t=!0,n=``,r=0,i=``,a=!1;for(let o=0;oB_(Object.values(e)[n],t)):/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(r)?n===`number`||n===`bigint`:/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(r)?n===`string`||e instanceof Uint8Array:/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(r)?Array.isArray(e)&&e.every(e=>B_(e,{...t,type:r.replace(/(\[[0-9]{0,}\])$/,``)})):!1}}function V_(e,t,n){for(let r in e){let i=e[r],a=t[r];if(i.type===`tuple`&&a.type===`tuple`&&`components`in i&&`components`in a)return V_(i.components,a.components,n[r]);let o=[i.type,a.type];if((()=>o.includes(`address`)&&o.includes(`bytes20`)?!0:o.includes(`address`)&&o.includes(`string`)||o.includes(`address`)&&o.includes(`bytes`)?og(n[r],{strict:!1}):!1)())return o}}Ot(),Jd(),op();function H_(e,t={}){let{prepare:n=!0}=t,r=(()=>Array.isArray(e)||typeof e==`string`?wt(e):e)();return{...r,...n?{hash:K_(r)}:{}}}function U_(e,t,n){let{args:r=[],prepare:i=!0}=n??{},a=Zf(t,{strict:!1}),o=e.filter(e=>a?e.type===`function`||e.type===`error`?W_(e)===Kf(t,0,4):e.type===`event`?K_(e)===t:!1:`name`in e&&e.name===t);if(o.length===0)throw new J_({name:t});if(o.length===1)return{...o[0],...i?{hash:K_(o[0])}:{}};let s;for(let e of o)if(`inputs`in e){if(!r||r.length===0){if(!e.inputs||e.inputs.length===0)return{...e,...i?{hash:K_(e)}:{}};continue}if(e.inputs&&e.inputs.length!==0&&e.inputs.length===r.length&&r.every((t,n)=>{let r=`inputs`in e&&e.inputs[n];return r?B_(t,r):!1})){if(s&&`inputs`in s&&s.inputs){let t=V_(e.inputs,s.inputs,r);if(t)throw new q_({abiItem:e,type:t[0]},{abiItem:s,type:t[1]})}s=e}}let c=(()=>{if(s)return s;let[e,...t]=o;return{...e,overloads:t}})();if(!c)throw new J_({name:t});return{...c,...i?{hash:K_(c)}:{}}}function W_(...e){let t=(()=>{if(Array.isArray(e[0])){let[t,n]=e;return U_(t,n)}return e[0]})();return Kf(K_(t),0,4)}function G_(...e){let t=(()=>{if(Array.isArray(e[0])){let[t,n]=e;return U_(t,n)}return e[0]})(),n=(()=>typeof t==`string`?t:le(t))();return z_(n)}function K_(...e){let t=(()=>{if(Array.isArray(e[0])){let[t,n]=e;return U_(t,n)}return e[0]})();return typeof t!=`string`&&`hash`in t&&t.hash?t.hash:Hh(Uf(G_(t)))}var q_=class extends P{constructor(e,t){super(`Found ambiguous types in overloaded ABI Items.`,{metaMessages:[`\`${e.type}\` in \`${z_(le(e.abiItem))}\`, and`,`\`${t.type}\` in \`${z_(le(t.abiItem))}\``,``,`These types encode differently and cannot be distinguished at runtime.`,`Remove one of the ambiguous items in the ABI.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`AbiItem.AmbiguityError`})}},J_=class extends P{constructor({name:e,data:t,type:n=`item`}){let r=(()=>e?` with name "${e}"`:t?` with data "${t}"`:``)();super(`ABI ${n}${r} not found.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`AbiItem.NotFoundError`})}};op();function Y_(...e){let[t,n=[]]=(()=>{if(Array.isArray(e[0])){let[t,n,r]=e;return[X_(t,n,{args:r}),r]}let[t,n]=e;return[t,n]})(),{overloads:r}=t,i=r?X_([t,...r],t.name,{args:n}):t,a=Z_(i),o=n.length>0?Hg(i.inputs,n):void 0;return o?zf(a,o):a}function X_(e,t,n){let r=U_(e,t,n);if(r.type!==`function`)throw new J_({name:t,type:`function`});return r}function Z_(e){return W_(e)}const Q_=`0x0000000000000000000000000000000000000000`;Jd(),op();function $_(e){if(Kf(e,-32)!==`0x6492649264926492649264926492649264926492649264926492649264926492`)throw new nv(e)}function ev(e){let{data:t,signature:n,to:r}=e;return zf(Hg(Wg(`address, bytes, bytes`),[r,t,n]),`0x6492649264926492649264926492649264926492649264926492649264926492`)}function tv(e){try{return $_(e),!0}catch{return!1}}var nv=class extends P{constructor(e){super(`Value \`${e}\` is an invalid ERC-6492 wrapped signature.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`SignatureErc6492.InvalidWrappedSignatureError`})}};uu(),Dn(),Hn();function rv({r:e,s:t,to:n=`hex`,v:r,yParity:i}){let a=(()=>{if(i===0||i===1)return i;if(r&&(r===27n||r===28n||r>=35n))return r%2n==0n?1:0;throw Error("Invalid `v` or `yParity` value")})(),o=`0x${new Yl.Signature(wn(e),wn(t)).toCompactHex()}${a===0?`1b`:`1c`}`;return n===`hex`?o:Ln(o)}gp(),Sp(),To(),jp(),ca(),yi(),Rd(),Di(),Pt(),Dn(),A(),mm();async function iv(e,t){let{address:n,hash:r,erc6492VerifierAddress:i=t.universalSignatureVerifierAddress??e.chain?.contracts?.erc6492Verifier?.address,multicallAddress:a=t.multicallAddress??e.chain?.contracts?.multicall3?.address}=t,o=(()=>{let e=t.signature;return Nt(e)?e:typeof e==`object`&&`r`in e&&`s`in e?rv(e):An(e)})();try{return F_(o)?await av(e,{...t,multicallAddress:a,signature:o}):await ov(e,{...t,verifierAddress:i,signature:o})}catch(e){try{if(Ld(_i(n),await pu({hash:r,signature:o})))return!0}catch{}if(e instanceof cv)return!1;throw e}}async function av(e,t){let{address:n,blockNumber:r,blockTag:i,hash:a,multicallAddress:o}=t,{authorization:s,data:c,signature:l,to:u}=N_(t.signature);if(await Zm(e,{address:n,blockNumber:r,blockTag:i})===Ei([`0xef0100`,s.address]))return await sv(e,{address:n,blockNumber:r,blockTag:i,hash:a,signature:l});let d={address:s.address,chainId:Number(s.chainId),nonce:Number(s.nonce),r:k(s.r,{size:32}),s:k(s.s,{size:32}),yParity:s.yParity};if(!await hh({address:n,authorization:d}))throw new cv;let f=await E(e,hm,`readContract`)({...o?{address:o}:{code:xp},authorizationList:[d],abi:dp,blockNumber:r,blockTag:`pending`,functionName:`aggregate3`,args:[[...c?[{allowFailure:!0,target:u??n,callData:c}]:[],{allowFailure:!0,target:n,callData:sa({abi:mp,functionName:`isValidSignature`,args:[a,l]})}]]});if((f[f.length-1]?.returnData)?.startsWith(`0x1626ba7e`))return!0;throw new cv}async function ov(e,t){let{address:n,factory:r,factoryData:i,hash:a,signature:o,verifierAddress:s,...c}=t,l=await(async()=>!r&&!i||tv(o)?o:ev({data:i,signature:o,to:r}))(),u=s?{to:s,data:sa({abi:hp,functionName:`isValidSig`,args:[n,a,l]}),...c}:{data:kp({abi:hp,args:[n,a,l],bytecode:bp}),...c},{data:d}=await E(e,cm,`call`)(u).catch(e=>{throw e instanceof yo?new cv:e});if(Tn(d??`0x0`))return!0;throw new cv}async function sv(e,t){let{address:n,blockNumber:r,blockTag:i,hash:a,signature:o}=t;if((await E(e,hm,`readContract`)({address:n,abi:mp,args:[a,o],blockNumber:r,blockTag:i,functionName:`isValidSignature`}).catch(e=>{throw e instanceof bo?new cv:e})).startsWith(`0x1626ba7e`))return!0;throw new cv}var cv=class extends Error{};Dn(),Va();function lv(e,{emitOnBegin:t=!1,emitMissed:n=!1,onBlockNumber:r,onError:i,poll:a,pollingInterval:o=e.pollingInterval}){let s=(()=>a===void 0?!(e.transport.type===`webSocket`||e.transport.type===`ipc`||e.transport.type===`fallback`&&(e.transport.transports[0].config.type===`webSocket`||e.transport.transports[0].config.type===`ipc`)):a)(),c;return s?(()=>{let a=Ba([`watchBlockNumber`,e.uid,t,n,o]);return ym(a,{onBlockNumber:r,onError:i},r=>xm(async()=>{try{let t=await E(e,Dm,`getBlockNumber`)({cacheTime:0});if(c!==void 0){if(t===c)return;if(t-c>1&&n)for(let e=c+1n;ec)&&(r.onBlockNumber(t,c),c=t)}catch(e){r.onError?.(e)}},{emitOnBegin:t,interval:o}))})():(()=>{let a=Ba([`watchBlockNumber`,e.uid,t,n]);return ym(a,{onBlockNumber:r,onError:i},t=>{let n=!0,r=()=>n=!1;return(async()=>{try{let{unsubscribe:i}=await(()=>{if(e.transport.type===`fallback`){let t=e.transport.transports.find(e=>e.config.type===`webSocket`||e.config.type===`ipc`);return t?t.value:e.transport}return e.transport})().subscribe({params:[`newHeads`],onData(e){if(!n)return;let r=wn(e.result?.number);t.onBlockNumber(r,c),c=r},onError(e){t.onError?.(e)}});r=i,n||r()}catch(e){i?.(e)}})(),()=>r()})})()}ho(),Lp(),Va();async function uv(e,t){let{checkReplacement:n=!0,confirmations:r=1,hash:i,onReplaced:a,retryCount:o=6,retryDelay:s=({count:e})=>~~(1<t.pollingInterval?t.pollingInterval:e.chain?.experimental_preconfirmationTime?e.chain.experimental_preconfirmationTime:e.pollingInterval)(),d,f,p,m=!1,h,g,{promise:_,resolve:v,reject:y}=Ip(),b=c?setTimeout(()=>{g?.(),h?.(),y(new mo({hash:i}))},c):void 0;return h=ym(l,{onReplaced:a,resolve:v,reject:y},async t=>{if(p=await E(e,R_,`getTransactionReceipt`)({hash:i}).catch(()=>void 0),p&&r<=1){clearTimeout(b),t.resolve(p),h?.();return}g=E(e,lv,`watchBlockNumber`)({emitMissed:!0,emitOnBegin:!0,poll:!0,pollingInterval:u,async onBlockNumber(a){let c=e=>{clearTimeout(b),g?.(),e(),h?.()},l=a;if(!m)try{if(p){if(r>1&&(!p.blockNumber||l-p.blockNumber+1nt.resolve(p));return}if(n&&!d&&(m=!0,await Lm(async()=>{d=await E(e,L_,`getTransaction`)({hash:i}),d.blockNumber&&(l=d.blockNumber)},{delay:s,retryCount:o}),m=!1),p=await E(e,R_,`getTransactionReceipt`)({hash:i}),r>1&&(!p.blockNumber||l-p.blockNumber+1nt.resolve(p))}catch(n){if(n instanceof uo||n instanceof fo){if(!d){m=!1;return}try{f=d,m=!0;let n=await Lm(()=>E(e,ud,`getBlock`)({blockNumber:l,includeTransactions:!0}),{delay:s,retryCount:o,shouldRetry:({error:e})=>e instanceof rd});m=!1;let i=n.transactions.find(({from:e,nonce:t})=>e===f.from&&t===f.nonce);if(!i||(p=await E(e,R_,`getTransactionReceipt`)({hash:i.hash}),r>1&&(!p.blockNumber||l-p.blockNumber+1n{t.onReplaced?.({reason:a,replacedTransaction:f,transaction:i,transactionReceipt:p}),t.resolve(p)})}catch(e){c(()=>t.reject(e))}}else c(()=>t.reject(n))}}})}),_}ho();async function dv(e,{serializedTransaction:t,throwOnReceiptRevert:n,timeout:r}){let i=await e.request({method:`eth_sendRawTransactionSync`,params:r?[t,k(r)]:[t]},{retryCount:0}),a=(e.chain?.formatters?.transactionReceipt?.format||zm)(i);if(a.status===`reverted`&&n)throw new po({receipt:a});return a}A();async function fv(e,{chain:t}){let{id:n,name:r,nativeCurrency:i,rpcUrls:a,blockExplorers:o}=t;await e.request({method:`wallet_addEthereumChain`,params:[{chainId:k(n),chainName:r,nativeCurrency:i,rpcUrls:a.default.http,blockExplorerUrls:o?Object.values(o).map(({url:e})=>e):void 0}]},{dedupe:!0,retryCount:0})}jp();function pv(e,t){let{abi:n,args:r,bytecode:i,...a}=t,o=kp({abi:n,args:r,bytecode:i});return Pm(e,{...a,...a.authorizationList?{to:null}:{},data:o})}yi();async function mv(e){return e.account?.type===`local`?[e.account.address]:(await e.request({method:`eth_accounts`},{dedupe:!0})).map(e=>gi(e))}ra(),A();async function hv(e,t={}){let{account:n=e.account,chainId:r}=t,i=n?na(n):void 0,a=r?[i?.address,[k(r)]]:[i?.address],o=await e.request({method:`wallet_getCapabilities`,params:a}),s={};for(let[e,t]of Object.entries(o)){s[Number(e)]={};for(let[n,r]of Object.entries(t))n===`addSubAccount`&&(n=`unstable_addSubAccount`),s[Number(e)][n]=r}return typeof r==`number`?s[r]:s}async function gv(e){return await e.request({method:`wallet_getPermissions`},{dedupe:!0})}ra(),Rd();async function _v(e,t){let{account:n=e.account,chainId:r,nonce:i}=t;if(!n)throw new Om({docsPath:`/docs/eip7702/prepareAuthorization`});let a=na(n),o=(()=>{if(t.executor)return t.executor===`self`?t.executor:na(t.executor)})(),s={address:t.contractAddress??t.address,chainId:r,nonce:i};return s.chainId===void 0&&(s.chainId=e.chain?.id??await E(e,Md,`getChainId`)({})),s.nonce===void 0&&(s.nonce=await E(e,md,`getTransactionCount`)({address:a.address,blockTag:`pending`}),(o===`self`||o?.address&&Ld(o.address,a.address))&&(s.nonce+=1)),s}yi();async function vv(e){return(await e.request({method:`eth_requestAccounts`},{dedupe:!0,retryCount:0})).map(e=>_i(e))}async function yv(e,t){return e.request({method:`wallet_requestPermissions`,params:[t]},{retryCount:0})}async function bv(e,t){let{chain:n=e.chain}=t,r=t.timeout??Math.max((n?.blockTime??0)*3,5e3),i=await Hm(e,t);return await Wm(e,{...t,id:i.id,timeout:r})}ra(),O(),ho(),Lu(),Wu(),hi(),$u();var xv=new mi(128);async function Sv(e,t){let{account:n=e.account,chain:r=e.chain,accessList:i,authorizationList:a,blobs:o,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,pollingInterval:m,throwOnReceiptRevert:h,type:g,value:_,...v}=t,y=t.timeout??Math.max((r?.blockTime??0)*3,5e3);if(n===void 0)throw new Om({docsPath:`/docs/actions/wallet/sendTransactionSync`});let b=n?na(n):null;try{Qu(t);let n=await(async()=>{if(t.to)return t.to;if(t.to!==null&&a&&a.length>0)return await vu({authorization:a[0]}).catch(()=>{throw new D("`to` is required. Could not infer from `authorizationList`.")})})();if(b?.type===`json-rpc`||b===null){let t;r!==null&&(t=await E(e,Md,`getChainId`)({}),Am({currentChainId:t,chain:r}));let x=e.chain?.formatters?.transactionRequest?.format,S=(x||Bu)({...Iu(v,{format:x}),accessList:i,authorizationList:a,blobs:o,chainId:t,data:s,from:b?.address,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,to:n,type:g,value:_},`sendTransaction`),C=xv.get(e.uid),w=C?`wallet_sendTransaction`:`eth_sendTransaction`,ee=await(async()=>{try{return await e.request({method:w,params:[S]},{retryCount:0})}catch(t){if(C===!1)throw t;let n=t;if(n.name===`InvalidInputRpcError`||n.name===`InvalidParamsRpcError`||n.name===`MethodNotFoundRpcError`||n.name===`MethodNotSupportedRpcError`)return await e.request({method:`wallet_sendTransaction`,params:[S]},{retryCount:0}).then(t=>(xv.set(e.uid,!0),t)).catch(t=>{let r=t;throw r.name===`MethodNotFoundRpcError`||r.name===`MethodNotSupportedRpcError`?(xv.set(e.uid,!1),n):r});throw n}})(),te=await E(e,uv,`waitForTransactionReceipt`)({checkReplacement:!1,hash:ee,pollingInterval:m,timeout:y});if(h&&te.status===`reverted`)throw new po({receipt:te});return te}if(b?.type===`local`){let t=await E(e,Fd,`prepareTransactionRequest`)({account:b,accessList:i,authorizationList:a,blobs:o,chain:r,data:s,gas:c,gasPrice:l,maxFeePerBlobGas:u,maxFeePerGas:d,maxPriorityFeePerGas:f,nonce:p,nonceManager:b.nonceManager,parameters:[...Nd,`sidecars`],type:g,value:_,...v,to:n}),m=r?.serializers?.transaction,y=await b.signTransaction(t,{serializer:m});return await E(e,dv,`sendRawTransactionSync`)({serializedTransaction:y,throwOnReceiptRevert:h})}throw b?.type===`smart`?new km({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:`/docs/actions/bundler/sendUserOperation`,type:`smart`}):new km({docsPath:`/docs/actions/wallet/sendTransactionSync`,type:b?.type})}catch(e){throw e instanceof km?e:jm(e,{...t,account:b,chain:t.chain||void 0})}}async function Cv(e,t){let{id:n}=t;await e.request({method:`wallet_showCallsStatus`,params:[n]})}ra();async function wv(e,t){let{account:n=e.account}=t;if(!n)throw new Om({docsPath:`/docs/eip7702/signAuthorization`});let r=na(n);if(!r.signAuthorization)throw new km({docsPath:`/docs/eip7702/signAuthorization`,metaMessages:["The `signAuthorization` Action does not support JSON-RPC Accounts."],type:r.type});let i=await _v(e,t);return r.signAuthorization(i)}ra(),A();async function Tv(e,{account:t=e.account,message:n}){if(!t)throw new Om({docsPath:`/docs/actions/wallet/signMessage`});let r=na(t);if(r.signMessage)return r.signMessage({message:n});let i=(()=>typeof n==`string`?jn(n):n.raw instanceof Uint8Array?On(n.raw):n.raw)();return e.request({method:`personal_sign`,params:[i,r.address]},{retryCount:0})}ra(),A(),Wu(),$u();async function Ev(e,t){let{account:n=e.account,chain:r=e.chain,...i}=t;if(!n)throw new Om({docsPath:`/docs/actions/wallet/signTransaction`});let a=na(n);Qu({account:a,...t});let o=await E(e,Md,`getChainId`)({});r!==null&&Am({currentChainId:o,chain:r});let s=(r?.formatters||e.chain?.formatters)?.transactionRequest?.format||Bu;return a.signTransaction?a.signTransaction({...i,chainId:o},{serializer:e.chain?.serializers?.transaction}):await e.request({method:`eth_signTransaction`,params:[{...s(i,`signTransaction`),chainId:k(o),from:a.address}]},{retryCount:0})}ra();async function Dv(e,t){let{account:n=e.account,domain:r,message:i,primaryType:a}=t;if(!n)throw new Om({docsPath:`/docs/actions/wallet/signTypedData`});let o=na(n),s={EIP712Domain:jh({domain:r}),...t.types};if(Ah({domain:r,message:i,primaryType:a,types:s}),o.signTypedData)return o.signTypedData({domain:r,message:i,primaryType:a,types:s});let c=kh({domain:r,message:i,primaryType:a,types:s});return e.request({method:`eth_signTypedData_v4`,params:[o.address,c]},{retryCount:0})}A();async function Ov(e,{id:t}){await e.request({method:`wallet_switchEthereumChain`,params:[{chainId:k(t)}]},{retryCount:0})}async function kv(e,t){return await e.request({method:`wallet_watchAsset`,params:t},{retryCount:0})}async function Av(e,t){return Fm.internal(e,Sv,`sendTransactionSync`,t)}function jv(e){return{addChain:t=>fv(e,t),deployContract:t=>pv(e,t),getAddresses:()=>mv(e),getCallsStatus:t=>Um(e,t),getCapabilities:t=>hv(e,t),getChainId:()=>Md(e),getPermissions:()=>gv(e),prepareAuthorization:t=>_v(e,t),prepareTransactionRequest:t=>Fd(e,t),requestAddresses:()=>vv(e),requestPermissions:t=>yv(e,t),sendCalls:t=>Hm(e,t),sendCallsSync:t=>bv(e,t),sendRawTransaction:t=>Mm(e,t),sendRawTransactionSync:t=>dv(e,t),sendTransaction:t=>Pm(e,t),sendTransactionSync:t=>Sv(e,t),showCallsStatus:t=>Cv(e,t),signAuthorization:t=>wv(e,t),signMessage:t=>Tv(e,t),signTransaction:t=>Ev(e,t),signTypedData:t=>Dv(e,t),switchChain:t=>Ov(e,t),waitForCallsStatus:t=>Wm(e,t),watchAsset:t=>kv(e,t),writeContract:t=>Fm(e,t),writeContractSync:t=>Av(e,t)}}function Mv(e){let{key:t=`wallet`,name:n=`Wallet Client`,transport:r}=e;return Xm({...e,key:t,name:n,transport:r,type:`walletClient`}).extend(jv)}function Nv({key:e,methods:t,name:n,request:r,retryCount:i=3,retryDelay:a=150,timeout:o,type:s},c){let l=Ym();return{config:{key:e,methods:t,name:n,request:r,retryCount:i,retryDelay:a,timeout:o,type:s},request:vh(r,{methods:t,retryCount:i,retryDelay:a,uid:l}),value:c}}function Pv(e,t={}){let{key:n=`custom`,methods:r,name:i=`Custom Provider`,retryDelay:a}=t;return({retryCount:o})=>Nv({key:n,methods:r,name:i,request:e.request.bind(e),retryCount:t.retryCount??o,retryDelay:a,type:`custom`})}Mu(),os();function Fv(e,t={}){let{key:n=`fallback`,name:r=`Fallback`,rank:i=!1,shouldThrow:a=Iv,retryCount:o,retryDelay:s}=t;return(({chain:t,pollingInterval:c=4e3,timeout:l,...u})=>{let d=e,f=()=>{},p=Nv({key:n,name:r,async request({method:e,params:n}){let r,i=async(o=0)=>{let s=d[o]({...u,chain:t,retryCount:0,timeout:l});try{let t=await s.request({method:e,params:n});return f({method:e,params:n,response:t,transport:s,status:`success`}),t}catch(c){if(f({error:c,method:e,params:n,transport:s,status:`error`}),a(c)||o===d.length-1||(r??=d.slice(o+1).some(n=>{let{include:r,exclude:i}=n({chain:t}).config.methods||{};return r?r.includes(e):i?!i.includes(e):!0}),!r))throw c;return i(o+1)}};return i()},retryCount:o,retryDelay:s,type:`fallback`},{onResponse:e=>f=e,transports:d.map(e=>e({chain:t,retryCount:0}))});if(i){let e=typeof i==`object`?i:{};Lv({chain:t,interval:e.interval??c,onTransports:e=>d=e,ping:e.ping,sampleCount:e.sampleCount,timeout:e.timeout,transports:d,weights:e.weights})}return p})}function Iv(e){return!!(`code`in e&&typeof e.code==`number`&&(e.code===Bo.code||e.code===Wo.code||bu.nodeMessage.test(e.message)||e.code===5e3))}function Lv({chain:e,interval:t=4e3,onTransports:n,ping:r,sampleCount:i=10,timeout:a=1e3,transports:o,weights:s={}}){let{stability:c=.7,latency:l=.3}=s,u=[],d=async()=>{let s=await Promise.all(o.map(async t=>{let n=t({chain:e,retryCount:0,timeout:a}),i=Date.now(),o,s;try{await(r?r({transport:n}):n.request({method:`net_listening`})),s=1}catch{s=0}finally{o=Date.now()}return{latency:o-i,success:s}}));u.push(s),u.length>i&&u.shift();let f=Math.max(...u.map(e=>Math.max(...e.map(({latency:e})=>e)))),p=o.map((e,t)=>{let n=u.map(e=>e[t].latency),r=1-n.reduce((e,t)=>e+t,0)/n.length/f,i=u.map(e=>e[t].success),a=i.reduce((e,t)=>e+t,0)/i.length;return a===0?[0,t]:[l*r+c*a,t]}).sort((e,t)=>t[0]-e[0]);n(p.map(([,e])=>o[e])),await bm(t),d()};d()}O();var Rv=class extends D{constructor(){super(`No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.`,{docsPath:`/docs/clients/intro`,name:`UrlRequiredError`})}};ko(),Bp();function zv(e,t={}){let{batch:n,fetchFn:r,fetchOptions:i,key:a=`http`,methods:o,name:s=`HTTP JSON-RPC`,onFetchRequest:c,onFetchResponse:l,retryDelay:u,raw:d}=t;return({chain:f,retryCount:p,timeout:m})=>{let{batchSize:h=1e3,wait:g=0}=typeof n==`object`?n:{},_=t.retryCount??p,v=m??t.timeout??1e4,y=e||f?.rpcUrls.default.http[0];if(!y)throw new Rv;let b=Ch(y,{fetchFn:r,fetchOptions:i,onRequest:c,onResponse:l,timeout:v});return Nv({key:a,methods:o,name:s,async request({method:e,params:t}){let r={method:e,params:t},{schedule:i}=Rp({id:y,wait:g,shouldSplitBatch(e){return e.length>h},fn:e=>b.request({body:e}),sort:(e,t)=>e.id-t.id}),[{error:a,result:o}]=await(async e=>n?i(e):[await b.request({body:e})])(r);if(d)return{error:a,result:o};if(a)throw new Do({body:r,error:a,url:y});return o},retryCount:_,retryDelay:u,timeout:v,type:`http`},{fetchOptions:i,url:y})}}const Bv=L({id:16600,name:`0G Newton Testnet`,nativeCurrency:{name:`A0GI`,symbol:`A0GI`,decimals:18},rpcUrls:{default:{http:[`https://evmrpc-testnet.0g.ai`]}},blockExplorers:{default:{name:`0G BlockChain Explorer`,url:`https://chainscan-newton.0g.ai`}},testnet:!0}),Vv=L({id:16601,name:`0G Galileo Testnet`,nativeCurrency:{name:`A0GI`,symbol:`A0GI`,decimals:18},rpcUrls:{default:{http:[`https://evmrpc-testnet.0g.ai`]}},blockExplorers:{default:{name:`0G BlockChain Explorer`,url:`https://chainscan-galileo.0g.ai`}},testnet:!0}),Hv=L({id:16661,name:`0G Mainnet`,nativeCurrency:{name:`0G`,symbol:`0G`,decimals:18},rpcUrls:{default:{http:[`https://evmrpc.0g.ai`]}},blockExplorers:{default:{name:`0G BlockChain Explorer`,url:`https://chainscan.0g.ai`}},testnet:!1}),Uv=L({id:995,name:`5ireChain`,nativeCurrency:{name:`5ire Token`,symbol:`5IRE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.5ire.network`]}},blockExplorers:{default:{name:`5ireChain Mainnet Explorer`,url:`https://5irescan.io/`}},testnet:!1}),Wv=L({id:179,name:`ABEY Mainnet`,nativeCurrency:{name:`ABEY`,symbol:`ABEY`,decimals:18},rpcUrls:{default:{http:[`https://rpc.abeychain.com`]}},blockExplorers:{default:{name:`Abey Scan`,url:`https://abeyscan.com`}},testnet:!1});Zu();const Gv=50000n,Kv=Yu*32n;Dn(),Hn(),A(),Wu();const qv={block:ld({format(e){let t=e.transactions?.map(e=>{if(typeof e==`string`)return e;let t=qv.transaction?.format(e);return t.typeHex===`0x71`?t.type=`eip712`:t.typeHex===`0xff`&&(t.type=`priority`),t});return{l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,l1BatchTimestamp:e.l1BatchTimestamp?wn(e.l1BatchTimestamp):null,transactions:t}}}),transaction:od({format(e){let t={};return e.type===`0x71`?t.type=`eip712`:e.type===`0xff`&&(t.type=`priority`),{...t,l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,l1BatchTxIndex:e.l1BatchTxIndex?wn(e.l1BatchTxIndex):null}}}),transactionReceipt:Bm({format(e){return{l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,l1BatchTxIndex:e.l1BatchTxIndex?wn(e.l1BatchTxIndex):null,logs:e.logs.map(e=>({...zd(e),l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,transactionLogIndex:En(e.transactionLogIndex),logType:e.logType})),l2ToL1Logs:e.l2ToL1Logs.map(e=>({blockNumber:wn(e.blockHash),blockHash:e.blockHash,l1BatchNumber:e.l1BatchNumber?wn(e.l1BatchNumber):null,transactionIndex:wn(e.transactionIndex),shardId:wn(e.shardId),isService:e.isService,sender:e.sender,key:e.key,value:e.value,transactionHash:e.transactionHash,logIndex:wn(e.logIndex)}))}}}),transactionRequest:Uu({exclude:[`customSignature`,`factoryDeps`,`gasPerPubdata`,`paymaster`,`paymasterInput`],format(e){return e.gasPerPubdata||e.paymaster&&e.paymasterInput||e.factoryDeps||e.customSignature?{eip712Meta:{...e.gasPerPubdata?{gasPerPubdata:On(e.gasPerPubdata)}:{gasPerPubdata:On(Gv)},...e.paymaster&&e.paymasterInput?{paymasterParams:{paymaster:e.paymaster,paymasterInput:Array.from(Ln(e.paymasterInput))}}:{},...e.factoryDeps?{factoryDeps:e.factoryDeps.map(e=>Array.from(Ln(e)))}:{},...e.customSignature?{customSignature:Array.from(Ln(e.customSignature))}:{}},type:`0x71`}:{}}})};O();var Jv=class extends D{constructor(){super([`Transaction is not an EIP712 transaction.`,``,`Transaction must:`,' - include `type: "eip712"`'," - include one of the following: `customSignature`, `paymaster`, `paymasterInput`, `gasPerPubdata`, `factoryDeps`"].join(` +`),{name:`InvalidEip712TransactionError`})}};function Yv(e){return!!(e.type===`eip712`||`customSignature`in e&&e.customSignature||`paymaster`in e&&e.paymaster||`paymasterInput`in e&&e.paymasterInput||`gasPerPubdata`in e&&typeof e.gasPerPubdata==`bigint`||`factoryDeps`in e&&e.factoryDeps)}pi(),O(),Op(),Ci();function Xv(e){let{chainId:t,to:n,from:r,paymaster:i,paymasterInput:a}=e;if(!Yv(e))throw new Jv;if(!t||t<=0)throw new Dp({chainId:t});if(n&&!bi(n))throw new fi({address:n});if(r&&!bi(r))throw new fi({address:r});if(i&&!bi(i))throw new fi({address:i});if(i&&!a)throw new D("`paymasterInput` must be provided when `paymaster` is defined");if(!i&&a)throw new D("`paymaster` must be provided when `paymasterInput` is defined")}Di(),A();function Zv(e,t){return Yv(e)?$v(e):sh(e,t)}const Qv={transaction:Zv};function $v(e){let{chainId:t,gas:n,nonce:r,to:i,from:a,value:o,maxFeePerGas:s,maxPriorityFeePerGas:c,customSignature:l,factoryDeps:u,paymaster:d,paymasterInput:f,gasPerPubdata:p,data:m}=e;Xv(e);let h=[r?On(r):`0x`,c?On(c):`0x`,s?On(s):`0x`,n?On(n):`0x`,i??`0x`,o?On(o):`0x`,m??`0x`,On(t),On(``),On(``),On(t),a??`0x`,On(p||Gv),u??[],l??`0x`,d&&f?[d,f]:[]];return Ei([`0x71`,M(h)])}O();var ey=class extends D{constructor({givenLength:e,maxBytecodeSize:t}){super(`Bytecode cannot be longer than ${t} bytes. Given length: ${e}`,{name:`BytecodeLengthExceedsMaxSizeError`})}},ty=class extends D{constructor({givenLengthInWords:e}){super(`Bytecode length in 32-byte words must be odd. Given length in words: ${e}`,{name:`BytecodeLengthInWordsMustBeOddError`})}},ny=class extends D{constructor({givenLength:e}){super(`The bytecode length in bytes must be divisible by 32. Given length: ${e}`,{name:`BytecodeLengthMustBeDivisibleBy32Error`})}};hn(),Hn();function ry(e){let t=Pn(e);if(t.length%32!=0)throw new ny({givenLength:t.length});if(t.length>Kv)throw new ey({givenLength:t.length,maxBytecodeSize:Kv});let n=vd(t),r=Pn(n),i=t.length/32;if(i%2==0)throw new ty({givenLengthInWords:i});let a=Pn(i),o=fn(a,{size:2}),s=new Uint8Array([1,0]);return r.set(s,0),r.set(o,2),r}A();const iy=e=>{Xv(e);let t=ay(e);return{domain:{name:`zkSync`,version:`2`,chainId:e.chainId},types:{Transaction:[{name:`txType`,type:`uint256`},{name:`from`,type:`uint256`},{name:`to`,type:`uint256`},{name:`gasLimit`,type:`uint256`},{name:`gasPerPubdataByteLimit`,type:`uint256`},{name:`maxFeePerGas`,type:`uint256`},{name:`maxPriorityFeePerGas`,type:`uint256`},{name:`paymaster`,type:`uint256`},{name:`nonce`,type:`uint256`},{name:`value`,type:`uint256`},{name:`data`,type:`bytes`},{name:`factoryDeps`,type:`bytes32[]`},{name:`paymasterInput`,type:`bytes`}]},primaryType:`Transaction`,message:t}};function ay(e){let{gas:t,nonce:n,to:r,from:i,value:a,maxFeePerGas:o,maxPriorityFeePerGas:s,factoryDeps:c,paymaster:l,paymasterInput:u,gasPerPubdata:d,data:f}=e;return{txType:113n,from:BigInt(i),to:r?BigInt(r):0n,gasLimit:t??0n,gasPerPubdataByteLimit:d??50000n,maxFeePerGas:o??0n,maxPriorityFeePerGas:s??0n,paymaster:l?BigInt(l):0n,nonce:n?BigInt(n):0n,value:a??0n,data:f??`0x`,factoryDeps:c?.map(e=>On(ry(e)))??[],paymasterInput:u||`0x`}}const oy={blockTime:1e3,formatters:qv,serializers:Qv,custom:{getEip712Domain:iy}},sy=L({...oy,id:2741,name:`Abstract`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.mainnet.abs.xyz`],webSocket:[`wss://api.mainnet.abs.xyz/ws`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://abscan.org`},native:{name:`Abstract Explorer`,url:`https://explorer.mainnet.abs.xyz`}},contracts:{multicall3:{address:`0xAa4De41dba0Ca5dCBb288b7cC6b708F3aaC759E7`,blockCreated:5288},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:5263}}}),cy=L({...oy,id:11124,name:`Abstract Testnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.testnet.abs.xyz`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia.abscan.org`},native:{name:`Abstract Explorer`,url:`https://explorer.testnet.abs.xyz`}},testnet:!0,contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`,blockCreated:358349},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:431682}}}),ly=L({id:787,name:`Acala`,network:`acala`,nativeCurrency:{name:`Acala`,symbol:`ACA`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-acala.aca-api.network`],webSocket:[`wss://eth-rpc-acala.aca-api.network`]}},blockExplorers:{default:{name:`Acala Blockscout`,url:`https://blockscout.acala.network`,apiUrl:`https://blockscout.acala.network/api`}},testnet:!1}),uy=L({id:47,name:`Acria IntelliChain`,nativeCurrency:{decimals:18,name:`ACRIA`,symbol:`ACRIA`},rpcUrls:{default:{http:[`https://aic.acria.ai`]}},blockExplorers:{default:{name:`Acria Explorer`,url:`https://explorer.acria.ai`}},testnet:!1}),dy=L({id:1215,name:`ADF Chain`,nativeCurrency:{name:`ADDFILL`,symbol:`ADF`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.adftechnology.com`]}},blockExplorers:{default:{name:`ADF Mainnet Explorer`,url:`https://explorer.adftechnology.com`}},testnet:!1}),fy=L({id:9990,name:`Agung Network`,nativeCurrency:{decimals:18,name:`Agung`,symbol:`AGNG`},rpcUrls:{default:{http:[`https://wss-async.agung.peaq.network`],webSocket:[`wss://wss-async.agung.peaq.network`]}},blockExplorers:{default:{name:`Subscan`,url:`https://agung-testnet.subscan.io`}},testnet:!0}),py=L({id:168,name:`AIOZ Network`,nativeCurrency:{decimals:18,name:`AIOZ`,symbol:`AIOZ`},rpcUrls:{default:{http:[`https://eth-dataseed.aioz.network`]}},blockExplorers:{default:{name:`AIOZ Explorer`,url:`https://explorer.aioz.network`}},testnet:!1}),my=L({id:41455,name:`Aleph Zero`,nativeCurrency:{name:`Aleph Zero`,symbol:`AZERO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.alephzero.raas.gelato.cloud`]}},blockExplorers:{default:{name:`Aleph Zero EVM Explorer`,url:`https://evm-explorer.alephzero.org`,apiUrl:`https://evm-explorer.alephzero.org/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4603377}}}),hy=L({id:2039,name:`Aleph Zero Testnet`,nativeCurrency:{name:`TZERO`,symbol:`TZERO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.alephzero-testnet.gelato.digital`],webSocket:[`wss://ws.alephzero-testnet.gelato.digital`]}},blockExplorers:{default:{name:`Aleph Zero EVM Testnet explorer`,url:`https://evm-explorer-testnet.alephzero.org`,apiUrl:`https://evm-explorer-testnet.alephzero.org/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2861745}},testnet:!0}),gy=L({id:10241024,name:`AlienX Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.alienxchain.io/http`]}},blockExplorers:{default:{name:`AlienX Explorer`,url:`https://explorer.alienxchain.io`}},testnet:!1}),_y=L({id:10241025,name:`ALIENX Hal Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://hal-rpc.alienxchain.io/http`]}},blockExplorers:{default:{name:`AlienX Explorer`,url:`https://hal-explorer.alienxchain.io`}},testnet:!0}),vy={gasPriceOracle:{address:`0x420000000000000000000000000000000000000F`},l1Block:{address:`0x4200000000000000000000000000000000000015`},l2CrossDomainMessenger:{address:`0x4200000000000000000000000000000000000007`},l2Erc721Bridge:{address:`0x4200000000000000000000000000000000000014`},l2StandardBridge:{address:`0x4200000000000000000000000000000000000010`},l2ToL1MessagePasser:{address:`0x4200000000000000000000000000000000000016`}};Dn();const yy={block:ld({format(e){return{transactions:e.transactions?.map(e=>{if(typeof e==`string`)return e;let t=ad(e);return t.typeHex===`0x7e`&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?wn(e.mint):void 0,t.sourceHash=e.sourceHash,t.type=`deposit`),t}),stateRoot:e.stateRoot}}}),transaction:od({format(e){let t={};return e.type===`0x7e`&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?wn(e.mint):void 0,t.sourceHash=e.sourceHash,t.type=`deposit`),t}}),transactionReceipt:Bm({format(e){return{l1GasPrice:e.l1GasPrice?wn(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?wn(e.l1GasUsed):null,l1Fee:e.l1Fee?wn(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null}}})};pi(),Ci(),Di(),A();function by(e,t){return Cy(e)?Sy(e):sh(e,t)}const xy={transaction:by};function Sy(e){wy(e);let{sourceHash:t,data:n,from:r,gas:i,isSystemTx:a,mint:o,to:s,value:c}=e,l=[t,r,s??`0x`,o?On(o):`0x`,c?On(c):`0x`,i?On(i):`0x`,a?`0x1`:`0x`,n??`0x`];return Ei([`0x7e`,M(l)])}function Cy(e){return e.type===`deposit`||e.sourceHash!==void 0}function wy(e){let{from:t,to:n}=e;if(t&&!bi(t))throw new fi({address:t});if(n&&!bi(n))throw new fi({address:n})}const R={blockTime:2e3,contracts:vy,formatters:yy,serializers:xy};var Ty=1;const Ey=L({...R,id:888888888,name:`Ancient8`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.ancient8.gg`]}},blockExplorers:{default:{name:`Ancient8 explorer`,url:`https://scan.ancient8.gg`,apiUrl:`https://scan.ancient8.gg/api`}},contracts:{...R.contracts,l2OutputOracle:{[Ty]:{address:`0xB09DC08428C8b4EFB4ff9C0827386CDF34277996`}},portal:{[Ty]:{address:`0x639F2AECE398Aa76b07e59eF6abe2cFe32bacb68`,blockCreated:19070571}},l1StandardBridge:{[Ty]:{address:`0xd5e3eDf5b68135D559D572E26bF863FBC1950033`,blockCreated:19070571}}},sourceId:Ty});var Dy=11155111;const Oy=L({...R,id:28122024,name:`Ancient8 Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpcv2-testnet.ancient8.gg`]}},blockExplorers:{default:{name:`Ancient8 Celestia Testnet explorer`,url:`https://scanv2-testnet.ancient8.gg`,apiUrl:`https://scanv2-testnet.ancient8.gg/api`}},contracts:{...R.contracts,l2OutputOracle:{[Dy]:{address:`0x942fD5017c0F60575930D8574Eaca13BEcD6e1bB`}},portal:{[Dy]:{address:`0xfa1d9E26A6aCD7b22115D27572c1221B9803c960`,blockCreated:4972908}},l1StandardBridge:{[Dy]:{address:`0xF6Bc0146d3c74D48306e79Ae134A260E418C9335`,blockCreated:4972908}}},sourceId:Dy}),ky=L({id:31337,name:`Anvil`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`],webSocket:[`ws://127.0.0.1:8545`]}}}),Ay=L({id:33139,name:`Ape Chain`,nativeCurrency:{name:`ApeCoin`,symbol:`APE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.apechain.com/http`],webSocket:[`wss://rpc.apechain.com/ws`]}},blockExplorers:{default:{name:`Apescan`,url:`https://apescan.io`,apiUrl:`https://api.apescan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:20889}},sourceId:42161}),jy=L({id:3993,name:`APEX Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.apexlayer.xyz`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp-testnet.apexlayer.xyz`,apiUrl:`https://exp-testnet.apexlayer.xyz/api`}},contracts:{multicall3:{address:`0xf7642be33a6b18D16a995657adb5a68CD0438aE2`,blockCreated:283775}},testnet:!0}),My=L({id:42161,name:`Arbitrum One`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:250,rpcUrls:{default:{http:[`https://arb1.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://arbiscan.io`,apiUrl:`https://api.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7654707}}}),Ny=L({id:421613,name:`Arbitrum Goerli`,nativeCurrency:{name:`Arbitrum Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://goerli-rollup.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://goerli.arbiscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:88114}},testnet:!0}),Py=L({id:42170,name:`Arbitrum Nova`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://nova.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://nova.arbiscan.io`,apiUrl:`https://api-nova.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1746963}}}),Fy=L({id:421614,name:`Arbitrum Sepolia`,blockTime:250,nativeCurrency:{name:`Arbitrum Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rollup.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://sepolia.arbiscan.io`,apiUrl:`https://api-sepolia.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:81930}},testnet:!0}),Iy=L({id:7897,name:`Arena-Z`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.arena-z.gg`]}},blockExplorers:{default:{name:`Arena-Z Explorer`,url:`https://explorer.arena-z.gg`,apiUrl:`https://explorer.arena-z.gg`}}}),Ly=L({id:463,name:`Areon Network`,nativeCurrency:{decimals:18,name:`AREA`,symbol:`AREA`},rpcUrls:{default:{http:[`https://mainnet-rpc.areon.network`],webSocket:[`wss://mainnet-ws.areon.network`]}},blockExplorers:{default:{name:`Areonscan`,url:`https://areonscan.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:353286}},testnet:!1}),Ry=L({id:462,name:`Areon Network Testnet`,nativeCurrency:{decimals:18,name:`TAREA`,symbol:`TAREA`},rpcUrls:{default:{http:[`https://testnet-rpc.areon.network`],webSocket:[`wss://testnet-ws.areon.network`]}},blockExplorers:{default:{name:`Areonscan`,url:`https://areonscan.com`}},testnet:!0}),zy=L({id:463,name:`Areum`,nativeCurrency:{decimals:18,name:`AREA`,symbol:`AREA`},rpcUrls:{default:{http:[`https://mainnet-rpc.areum.network`],webSocket:[`wss://mainnet-ws.areum.network`]}},blockExplorers:{default:{name:`Areum Explorer`,url:`https://explorer.areum.network`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:353286}},testnet:!1}),By=L({id:11822,name:`Artela Testnet`,nativeCurrency:{name:`ART`,symbol:`ART`,decimals:18},rpcUrls:{default:{http:[`https://betanet-rpc1.artela.network`]}},blockExplorers:{default:{name:`Artela`,url:`https://betanet-scan.artela.network`,apiUrl:`https://betanet-scan.artela.network/api`}},contracts:{multicall3:{address:`0xd07c8635f76e8745Ee7092fbb6e8fbc5FeF09DD7`,blockCreated:7001871}},testnet:!0}),Vy=L({id:10242,name:`Arthera`,nativeCurrency:{name:`Arthera`,symbol:`AA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.arthera.net`]}},blockExplorers:{default:{name:`Arthera EVM Explorer`,url:`https://explorer.arthera.net`,apiUrl:`https://explorer.arthera.net/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4502791}}}),Hy=L({id:10243,name:`Arthera Testnet`,nativeCurrency:{name:`Arthera`,symbol:`AA`,decimals:18},rpcUrls:{default:{http:[`https://rpc-test.arthera.net`]}},blockExplorers:{default:{name:`Arthera EVM Explorer`,url:`https://explorer-test.arthera.net`,apiUrl:`https://explorer-test.arthera.net/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:22051}}}),Uy=L({id:42420,name:`AssetChain Mainnet`,nativeCurrency:{decimals:18,name:`Real World Asset`,symbol:`RWA`},rpcUrls:{default:{http:[`https://mainnet-rpc.assetchain.org`]}},blockExplorers:{default:{name:`Asset Chain Explorer`,url:`https://scan.assetchain.org`,apiUrl:`https://scan.assetchain.org/api`}},testnet:!1,contracts:{}}),Wy=L({id:42421,name:`AssetChain Testnet`,nativeCurrency:{decimals:18,name:`Real World Asset`,symbol:`RWA`},rpcUrls:{default:{http:[`https://enugu-rpc.assetchain.org`]}},blockExplorers:{default:{name:`Asset Chain Testnet Explorer`,url:`https://scan-testnet.assetchain.org`,apiUrl:`https://scan-testnet.assetchain.org/api`}},testnet:!0,contracts:{multicall3:{address:`0x989F832D35988cb5e3eB001Fa2Fe789469EC31Ea`,blockCreated:17177}}}),Gy=L({id:592,name:`Astar`,network:`astar-mainnet`,nativeCurrency:{name:`Astar`,symbol:`ASTR`,decimals:18},rpcUrls:{default:{http:[`https://astar.api.onfinality.io/public`]}},blockExplorers:{default:{name:`Astar Subscan`,url:`https://astar.subscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:761794}},testnet:!1}),Ky=L({id:3776,name:`Astar zkEVM`,network:`AstarZkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-zkevm.astar.network`]}},blockExplorers:{default:{name:`Astar zkEVM Explorer`,url:`https://astar-zkevm.explorer.startale.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:93528}},testnet:!1}),qy=L({id:6038361,name:`Astar zkEVM Testnet zKyoto`,network:`zKyoto`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.startale.com/zkyoto`]}},blockExplorers:{default:{name:`zKyoto Explorer`,url:`https://zkyoto.explorer.startale.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:196153}},testnet:!0}),Jy=L({id:2340,name:`Atleta Olympia`,nativeCurrency:{decimals:18,name:`Atla`,symbol:`ATLA`},rpcUrls:{default:{http:[`https://testnet-rpc.atleta.network:9944`,`https://testnet-rpc.atleta.network`],ws:[`wss://testnet-rpc.atleta.network:9944`]}},blockExplorers:{default:{name:`Atleta Olympia Explorer`,url:`https://blockscout.atleta.network`,apiUrl:`https://blockscout.atleta.network/api`}},contracts:{multicall3:{address:`0x1472ec6392180fb84F345d2455bCC75B26577115`,blockCreated:1076473}},testnet:!0}),Yy=L({id:1313161554,name:`Aurora`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.aurora.dev`]}},blockExplorers:{default:{name:`Aurorascan`,url:`https://aurorascan.dev`,apiUrl:`https://aurorascan.dev/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:62907816}}}),Xy=L({id:1313161555,name:`Aurora Testnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://testnet.aurora.dev`]}},blockExplorers:{default:{name:`Aurorascan`,url:`https://testnet.aurorascan.dev`,apiUrl:`https://testnet.aurorascan.dev/api`}},testnet:!0}),Zy=L({id:205205,name:`Auroria Testnet`,network:`auroria`,nativeCurrency:{name:`Auroria Stratis`,symbol:`tSTRAX`,decimals:18},rpcUrls:{default:{http:[`https://auroria.rpc.stratisevm.com`]}},blockExplorers:{default:{name:`Auroria Testnet Explorer`,url:`https://auroria.explorer.stratisevm.com`}},testnet:!0}),Qy=L({id:785,name:`Autheo Testnet`,nativeCurrency:{decimals:18,name:`Autheo`,symbol:`THEO`},rpcUrls:{default:{http:[`https://testnet-rpc1.autheo.com`,`https://testnet-rpc2.autheo.com`]}},blockExplorers:{default:{name:`Autheo Testnet Block Explorer`,url:`https://testnet-explorer.autheo.com/`}}}),$y=L({id:43114,name:`Avalanche`,blockTime:1700,nativeCurrency:{decimals:18,name:`Avalanche`,symbol:`AVAX`},rpcUrls:{default:{http:[`https://api.avax.network/ext/bc/C/rpc`]}},blockExplorers:{default:{name:`SnowTrace`,url:`https://snowtrace.io`,apiUrl:`https://api.snowtrace.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:11907934}}}),eb=L({id:43113,name:`Avalanche Fuji`,nativeCurrency:{decimals:18,name:`Avalanche Fuji`,symbol:`AVAX`},rpcUrls:{default:{http:[`https://api.avax-test.network/ext/bc/C/rpc`]}},blockExplorers:{default:{name:`SnowTrace`,url:`https://testnet.snowtrace.io`,apiUrl:`https://api-testnet.snowtrace.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7096959}},testnet:!0}),tb=L({id:8333,name:`B3`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.b3.fun/http`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.b3.fun`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}},sourceId:8453}),nb=L({id:1993,name:`B3 Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.b3.fun/http`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia.explorer.b3.fun`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}},testnet:!0,sourceId:168587773}),rb=L({id:5165,network:`bahamut`,name:`Bahamut`,nativeCurrency:{name:`Fasttoken`,symbol:`FTN`,decimals:18},rpcUrls:{default:{http:[`https://rpc1.bahamut.io`,`https://bahamut-rpc.publicnode.com`,`https://rpc2.bahamut.io`],webSocket:[`wss://ws1.sahara.bahamutchain.com`,`wss://bahamut-rpc.publicnode.com`,`wss://ws2.sahara.bahamutchain.com`]}},blockExplorers:{default:{name:`Ftnscan`,url:`https://www.ftnscan.com`,apiUrl:`https://www.ftnscan.com/api`}}});var ib=1;const ab=L({...R,id:8453,name:`Base`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.base.org`]}},blockExplorers:{default:{name:`Basescan`,url:`https://basescan.org`,apiUrl:`https://api.basescan.org/api`}},contracts:{...R.contracts,disputeGameFactory:{[ib]:{address:`0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e`}},l2OutputOracle:{[ib]:{address:`0x56315b90c40730925ec5485cf004d835058518A0`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:5022},portal:{[ib]:{address:`0x49048044D57e1C92A77f79988d21Fa8fAF74E97e`,blockCreated:17482143}},l1StandardBridge:{[ib]:{address:`0x3154Cf16ccdb4C6d922629664174b904d80F2C35`,blockCreated:17482143}}},sourceId:ib}),ob=L({...ab,experimental_preconfirmationTime:200,rpcUrls:{default:{http:[`https://mainnet-preconf.base.org`]}}}),sb=L({id:123420001114,name:`Basecamp Testnet`,nativeCurrency:{decimals:18,name:`Camp`,symbol:`CAMP`},rpcUrls:{default:{http:[`https://rpc.basecamp.t.raas.gelato.cloud`]}},blockExplorers:{default:{name:`basecamp`,url:`https://basecamp.cloud.blockscout.com`}},testnet:!0});var cb=5;const lb=L({...R,id:84531,name:`Base Goerli`,nativeCurrency:{name:`Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://goerli.base.org`]}},blockExplorers:{default:{name:`Basescan`,url:`https://goerli.basescan.org`,apiUrl:`https://goerli.basescan.org/api`}},contracts:{...R.contracts,l2OutputOracle:{[cb]:{address:`0x2A35891ff30313CcFa6CE88dcf3858bb075A2298`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1376988},portal:{[cb]:{address:`0xe93c8cD0D409341205A592f8c4Ac1A5fe5585cfA`}},l1StandardBridge:{[cb]:{address:`0xfA6D8Ee5BE770F84FC001D098C4bD604Fe01284a`}}},testnet:!0,sourceId:cb});var ub=11155111;const db=L({...R,id:84532,network:`base-sepolia`,name:`Base Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.base.org`]}},blockExplorers:{default:{name:`Basescan`,url:`https://sepolia.basescan.org`,apiUrl:`https://api-sepolia.basescan.org/api`}},contracts:{...R.contracts,disputeGameFactory:{[ub]:{address:`0xd6E6dBf4F7EA0ac412fD8b65ED297e64BB7a06E1`}},l2OutputOracle:{[ub]:{address:`0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254`}},portal:{[ub]:{address:`0x49f53e41452c74589e85ca1677426ba426459e85`,blockCreated:4446677}},l1StandardBridge:{[ub]:{address:`0xfd0Bf71F60660E2f608ed56e1659C450eB113120`,blockCreated:4446677}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1059647}},testnet:!0,sourceId:ub}),fb=L({...db,experimental_preconfirmationTime:200,rpcUrls:{default:{http:[`https://sepolia-preconf.base.org`]}}}),pb=L({id:4337,name:`Beam`,network:`beam`,nativeCurrency:{decimals:18,name:`Beam`,symbol:`BEAM`},rpcUrls:{default:{http:[`https://build.onbeam.com/rpc`],webSocket:[`wss://build.onbeam.com/ws`]}},blockExplorers:{default:{name:`Beam Explorer`,url:`https://subnets.avax.network/beam`}},contracts:{multicall3:{address:`0x4956f15efdc3dc16645e90cc356eafa65ffc65ec`,blockCreated:1}}}),mb=L({id:13337,name:`Beam Testnet`,network:`beam`,nativeCurrency:{decimals:18,name:`Beam`,symbol:`BEAM`},rpcUrls:{default:{http:[`https://build.onbeam.com/rpc/testnet`],webSocket:[`wss://build.onbeam.com/ws/testnet`]}},blockExplorers:{default:{name:`Beam Explorer`,url:`https://subnets-test.avax.network/beam`}},contracts:{multicall3:{address:`0x9bf49b704ee2a095b95c1f2d4eb9010510c41c9e`,blockCreated:3}},testnet:!0}),hb=L({id:641230,name:`Bear Network Chain Mainnet`,nativeCurrency:{decimals:18,name:`BearNetworkChain`,symbol:`BRNKC`},rpcUrls:{default:{http:[`https://brnkc-mainnet.bearnetwork.net`]}},blockExplorers:{default:{name:`BrnkScan`,url:`https://brnkscan.bearnetwork.net`,apiUrl:`https://brnkscan.bearnetwork.net/api`}}}),gb=L({id:751230,name:`Bear Network Chain Testnet`,nativeCurrency:{decimals:18,name:`tBRNKC`,symbol:`tBRNKC`},rpcUrls:{default:{http:[`https://brnkc-test.bearnetwork.net`]}},blockExplorers:{default:{name:`BrnkTestScan`,url:`https://brnktest-scan.bearnetwork.net`,apiUrl:`https://brnktest-scan.bearnetwork.net/api`}},testnet:!0}),_b=L({id:80094,name:`Berachain`,blockTime:2e3,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},ensRegistry:{address:`0x5b22280886a2f5e09a49bea7e320eab0e5320e28`,blockCreated:877007},ensUniversalResolver:{address:`0x4D41762915F83c76EcaF6776d9b08076aA32b492`,blockCreated:9310021}},rpcUrls:{default:{http:[`https://rpc.berachain.com`]}},blockExplorers:{default:{name:`Berascan`,url:`https://berascan.com`}},ensTlds:[`.bera`],testnet:!1}),vb=L({id:80069,blockTime:2e3,name:`Berachain Bepolia`,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},rpcUrls:{default:{http:[`https://bepolia.rpc.berachain.com`]}},blockExplorers:{default:{name:`Berascan`,url:`https://bepolia.beratrail.io`}},testnet:!0}),yb=L({id:80085,name:`Berachain Artio`,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},rpcUrls:{default:{http:[`https://artio.rpc.berachain.com`]}},blockExplorers:{default:{name:`Berachain`,url:`https://artio.beratrail.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:866924}},testnet:!0}),bb=L({id:80084,name:`Berachain bArtio`,nativeCurrency:{decimals:18,name:`BERA Token`,symbol:`BERA`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:109269},ensRegistry:{address:`0xB0eef18971290b333450586D33dcA6cE122651D2`,blockCreated:7736794},ensUniversalResolver:{address:`0x41692Ef1EA0C79E6b73077E4A67572D2BDbD7057`,blockCreated:7736795}},ensTlds:[`.bera`],rpcUrls:{default:{http:[`https://bartio.rpc.berachain.com`]}},blockExplorers:{default:{name:`Berachain bArtio Beratrail`,url:`https://bartio.beratrail.io`}},testnet:!0}),xb=L({id:11501,name:`BEVM Mainnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet-1.bevm.io`]}},blockExplorers:{default:{name:`Bevmscan`,url:`https://scan-mainnet.bevm.io`,apiUrl:`https://scan-mainnet-api.bevm.io/api`}}}),Sb=L({id:3068,name:`Bifrost Mainnet`,nativeCurrency:{name:`BFC`,symbol:`BFC`,decimals:18},rpcUrls:{default:{http:[`https://public-01.mainnet.bifrostnetwork.com/rpc`]}},blockExplorers:{default:{name:`Bifrost Blockscout`,url:`https://explorer.mainnet.bifrostnetwork.com`}},testnet:!1}),Cb=L({id:53456,name:`BirdLayer`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.birdlayer.xyz`,`https://rpc1.birdlayer.xyz`],webSocket:[`wss://rpc.birdlayer.xyz/ws`]}},blockExplorers:{default:{name:`BirdLayer Explorer`,url:`https://scan.birdlayer.xyz`}}}),wb=L({id:32520,name:`Bitgert Mainnet`,nativeCurrency:{decimals:18,name:`Brise`,symbol:`Brise`},rpcUrls:{default:{http:[`https://rpc-bitgert.icecreamswap.com`]}},blockExplorers:{default:{name:`Bitgert Scan`,url:`https://brisescan.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2118034}},testnet:!1}),Tb=L({id:96,name:`KUB Mainnet`,nativeCurrency:{name:`KUB Coin`,symbol:`KUB`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bitkubchain.io`]}},blockExplorers:{default:{name:`KUB Chain Mainnet Explorer`,url:`https://www.bkcscan.com`,apiUrl:`https://www.bkcscan.com/api`}}}),Eb=L({id:25925,name:`Bitkub Testnet`,network:`Bitkub Testnet`,nativeCurrency:{name:`Bitkub Test`,symbol:`tKUB`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.bitkubchain.io`]}},blockExplorers:{default:{name:`Bitkub Chain Testnet Explorer`,url:`https://testnet.bkcscan.com`,apiUrl:`https://testnet.bkcscan.com/api`}},testnet:!0}),Db=L({id:200901,name:`Bitlayer Mainnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bitlayer.org`],webSocket:[`wss://ws.bitlayer.org`]}},blockExplorers:{default:{name:`bitlayer mainnet scan`,url:`https://www.btrscan.com`}},contracts:{multicall3:{address:`0x5B256fE9e993902eCe49D138a5b1162cBb529474`,blockCreated:2421963}}}),Ob=L({id:200810,name:`Bitlayer Testnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.bitlayer.org`],webSocket:[`wss://testnet-ws.bitlayer.org`]}},blockExplorers:{default:{name:`bitlayer testnet scan`,url:`https://testnet.btrscan.com`}},contracts:{multicall3:{address:`0x5B256fE9e993902eCe49D138a5b1162cBb529474`,blockCreated:4135671}},testnet:!0}),kb=L({id:7171,name:`Bitrock Mainnet`,nativeCurrency:{name:`BROCK`,symbol:`BROCK`,decimals:18},rpcUrls:{default:{http:[`https://brockrpc.io`]}},blockExplorers:{default:{name:`Bitrock Explorer`,url:`https://explorer.bit-rock.io`}},testnet:!1}),Ab=L({id:199,name:`BitTorrent`,network:`bittorrent-chain-mainnet`,nativeCurrency:{name:`BitTorrent`,symbol:`BTT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bittorrentchain.io`]}},blockExplorers:{default:{name:`Bttcscan`,url:`https://bttcscan.com`,apiUrl:`https://api.bttcscan.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:31078552}}}),jb=L({id:1028,name:`BitTorrent Chain Testnet`,network:`bittorrent-chain-testnet`,nativeCurrency:{name:`BitTorrent`,symbol:`BTT`,decimals:18},rpcUrls:{default:{http:[`https://testrpc.bittorrentchain.io`]}},blockExplorers:{default:{name:`Bttcscan`,url:`https://testnet.bttcscan.com`,apiUrl:`https://testnet.bttcscan.com/api`}},testnet:!0});var Mb=1;const Nb=L({...R,id:81457,name:`Blast`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.blast.io`]}},blockExplorers:{default:{name:`Blastscan`,url:`https://blastscan.io`,apiUrl:`https://api.blastscan.io/api`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:212929},l2OutputOracle:{[Mb]:{address:`0x826D1B0D4111Ad9146Eb8941D7Ca2B6a44215c76`,blockCreated:19300358}},portal:{[Mb]:{address:`0x0Ec68c5B10F21EFFb74f2A5C61DFe6b08C0Db6Cb`,blockCreated:19300357}},l1StandardBridge:{[Mb]:{address:`0x697402166Fbf2F22E970df8a6486Ef171dbfc524`,blockCreated:19300360}}},sourceId:Mb}),Pb=L({id:168587773,name:`Blast Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.blast.io`]}},blockExplorers:{default:{name:`Blastscan`,url:`https://sepolia.blastscan.io`,apiUrl:`https://api-sepolia.blastscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:756690}},testnet:!0,sourceId:11155111});var Fb=1;const Ib=L({...R,id:60808,name:`BOB`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.gobob.xyz`],webSocket:[`wss://rpc.gobob.xyz`]}},blockExplorers:{default:{name:`BOB Explorer`,url:`https://explorer.gobob.xyz`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:23131},l2OutputOracle:{[Fb]:{address:`0xdDa53E23f8a32640b04D7256e651C1db98dB11C1`,blockCreated:4462615}},portal:{[Fb]:{address:`0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E`,blockCreated:4462615}}},sourceId:Fb}),Lb=L({id:288,name:`Boba Network`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.boba.network`]}},blockExplorers:{default:{name:`BOBAScan`,url:`https://bobascan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:446859}}}),Rb=L({id:28882,name:`Boba Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.boba.network`]}},blockExplorers:{default:{name:`BOBAScan`,url:`https://testnet.bobascan.com`}},testnet:!0});var zb=11155111;const Bb=L({...R,id:808813,name:`BOB Sepolia`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://bob-sepolia.rpc.gobob.xyz`],webSocket:[`wss://bob-sepolia.rpc.gobob.xyz`]}},blockExplorers:{default:{name:`BOB Sepolia Explorer`,url:`https://bob-sepolia.explorer.gobob.xyz`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:35677},l2OutputOracle:{[zb]:{address:`0x14D0069452b4AE2b250B395b8adAb771E4267d2f`,blockCreated:4462615}},portal:{[zb]:{address:`0x867B1Aa872b9C8cB5E9F7755feDC45BB24Ad0ae4`,blockCreated:4462615}}},testnet:!0,sourceId:zb}),Vb=L({id:11100,name:`Bool Beta Mainnet`,nativeCurrency:{decimals:18,name:`BOL`,symbol:`BOL`},rpcUrls:{default:{http:[`https://beta-rpc-node-http.bool.network`]}},blockExplorers:{default:{name:`BoolScan`,url:`https://beta-mainnet.boolscan.com/`}},testnet:!1}),Hb=L({id:3637,name:`Botanix`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.botanixlabs.com`],webSocket:[`wss://rpc.botanixlabs.com/ws`]}},blockExplorers:{default:{name:`Botanixscan`,url:`https://botanixscan.io`}}}),Ub=L({id:3636,name:`Botanix Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://node.botanixlabs.dev`]}},blockExplorers:{default:{name:`Botanix Testnet Explorer`,url:`https://testnet.botanixscan.io`}},testnet:!0}),Wb=L({id:6001,name:`BounceBit Mainnet`,nativeCurrency:{name:`BounceBit`,symbol:`BB`,decimals:18},rpcUrls:{default:{http:[`https://fullnode-mainnet.bouncebitapi.com`]}},blockExplorers:{default:{name:`BB Scan`,url:`https://bbscan.io`}},testnet:!1}),Gb=L({id:6e3,name:`BounceBit Testnet`,nativeCurrency:{name:`BounceBit`,symbol:`BB`,decimals:18},rpcUrls:{default:{http:[`https://fullnode-testnet.bouncebitapi.com`]}},blockExplorers:{default:{name:`BB Scan`,url:`https://testnet.bbscan.io`}},testnet:!0}),Kb=L({id:1039,name:`Bronos`,nativeCurrency:{decimals:18,name:`BRO`,symbol:`BRO`},rpcUrls:{default:{http:[`https://evm.bronos.org`]}},blockExplorers:{default:{name:`BronoScan`,url:`https://broscan.bronos.org`}}}),qb=L({id:1038,name:`Bronos Testnet`,nativeCurrency:{decimals:18,name:`Bronos Coin`,symbol:`tBRO`},rpcUrls:{default:{http:[`https://evm-testnet.bronos.org`]}},blockExplorers:{default:{name:`BronoScan`,url:`https://tbroscan.bronos.org`}},testnet:!0}),Jb=L({id:56,name:`BNB Smart Chain`,blockTime:750,nativeCurrency:{decimals:18,name:`BNB`,symbol:`BNB`},rpcUrls:{default:{http:[`https://56.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`BscScan`,url:`https://bscscan.com`,apiUrl:`https://api.bscscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:15921452}}}),Yb=L({id:1017,name:`BNB Greenfield Chain`,nativeCurrency:{decimals:18,name:`BNB`,symbol:`BNB`},rpcUrls:{default:{http:[`https://greenfield-chain.bnbchain.org`]}},blockExplorers:{default:{name:`BNB Greenfield Mainnet Scan`,url:`https://greenfieldscan.com`}},testnet:!1}),Xb=L({id:97,name:`BNB Smart Chain Testnet`,nativeCurrency:{decimals:18,name:`BNB`,symbol:`tBNB`},rpcUrls:{default:{http:[`https://data-seed-prebsc-1-s1.bnbchain.org:8545`]}},blockExplorers:{default:{name:`BscScan`,url:`https://testnet.bscscan.com`,apiUrl:`https://api-testnet.bscscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:17422483}},testnet:!0}),Zb=L({id:223,name:`B2`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bsquared.network`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.bsquared.network`}}}),Qb=L({id:1123,name:`B2 Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.bsquared.network`]}},blockExplorers:{default:{name:`blockscout`,url:`https://testnet-explorer.bsquared.network`}},testnet:!0}),$b=L({id:200901,name:`Bitlayer`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.bitlayer.org`,`https://rpc.bitlayer-rpc.com`],webSocket:[`wss://ws.bitlayer.org`,`wss://ws.bitlayer-rpc.com`]}},blockExplorers:{default:{name:`Bitlayer(BTR) Scan`,url:`https://www.btrscan.com`}}}),ex=L({id:200810,name:`Bitlayer Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.bitlayer.org`],webSocket:[`wss://testnet-ws.bitlayer.org`,`wss://testnet-ws.bitlayer-rpc.com`]}},blockExplorers:{default:{name:`Bitlayer(BTR) Scan`,url:`https://testnet.btrscan.com`}},testnet:!0}),tx=L({id:4999,name:`BlackFort Exchange Network`,nativeCurrency:{name:`BlackFort Token`,symbol:`BXN`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.blackfort.network/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.blackfort.network`,apiUrl:`https://explorer.blackfort.network/api`}}}),nx=L({id:4777,name:`BlackFort Exchange Network Testnet`,nativeCurrency:{name:`BlackFort Testnet Token`,symbol:`TBXN`,decimals:18},rpcUrls:{default:{http:[`https://testnet.blackfort.network/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer.blackfort.network`,apiUrl:`https://testnet-explorer.blackfort.network/api`}},testnet:!0}),rx=L({id:13370,name:`Cannon`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`]}}}),ix=L({id:7700,name:`Canto`,nativeCurrency:{decimals:18,name:`Canto`,symbol:`CANTO`},rpcUrls:{default:{http:[`https://canto.gravitychain.io`]}},blockExplorers:{default:{name:`Tuber.Build (Blockscout)`,url:`https://tuber.build`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2905789}}}),ax={estimateFeesPerGas:async e=>{if(!e.request?.feeCurrency)return null;let[t,n]=await Promise.all([ox(e.client,e.request.feeCurrency),sx(e.client,e.request.feeCurrency)]);return{maxFeePerGas:e.multiply(t-n)+n,maxPriorityFeePerGas:n}}};async function ox(e,t){let n=await e.request({method:`eth_gasPrice`,params:[t]});return BigInt(n)}async function sx(e,t){let n=await e.request({method:`eth_maxPriorityFeePerGas`,params:[t]});return BigInt(n)}Sn();function cx(e){return e===0||e===0n||e==null||e===`0`||e===``||typeof e==`string`&&(xn(e).toLowerCase()===`0x`||xn(e).toLowerCase()===`0x00`)}function lx(e){return!cx(e)}function ux(e){return e.maxFeePerGas!==void 0&&e.maxPriorityFeePerGas!==void 0}function dx(e){return e.type===`cip64`?!0:ux(e)&&lx(e.feeCurrency)}Dn(),Wu();const fx={block:ld({format(e){return{transactions:e.transactions?.map(e=>typeof e==`string`?e:{...ad(e),...e.gatewayFee?{gatewayFee:wn(e.gatewayFee),gatewayFeeRecipient:e.gatewayFeeRecipient}:{},feeCurrency:e.feeCurrency})}}}),transaction:od({format(e){if(e.type===`0x7e`)return{isSystemTx:e.isSystemTx,mint:e.mint?wn(e.mint):void 0,sourceHash:e.sourceHash,type:`deposit`};let t={feeCurrency:e.feeCurrency};return e.type===`0x7b`?t.type=`cip64`:(e.type===`0x7c`&&(t.type=`cip42`),t.gatewayFee=e.gatewayFee?wn(e.gatewayFee):null,t.gatewayFeeRecipient=e.gatewayFeeRecipient),t}}),transactionRequest:Uu({format(e){let t={};return e.feeCurrency&&(t.feeCurrency=e.feeCurrency),dx(e)&&(t.type=`0x7b`),t}})};Zu(),pi(),O(),Op(),Mu(),Ci(),Di(),A();function px(e,t){return dx(e)?hx(e,t):by(e,t)}const mx={transaction:px};function hx(e,t){_x(e);let{chainId:n,gas:r,nonce:i,to:a,value:o,maxFeePerGas:s,maxPriorityFeePerGas:c,accessList:l,feeCurrency:u,data:d}=e,f=[On(n),i?On(i):`0x`,c?On(c):`0x`,s?On(s):`0x`,r?On(r):`0x`,a??`0x`,o?On(o):`0x`,d??`0x`,oh(l),u,...ph(e,t)];return Ei([`0x7b`,M(f)])}var gx=Xu;function _x(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:r,maxFeePerGas:i,to:a,feeCurrency:o}=e;if(t<=0)throw new Dp({chainId:t});if(a&&!bi(a))throw new fi({address:a});if(r)throw new D("`gasPrice` is not a valid CIP-64 Transaction attribute.");if(lx(i)&&i>gx)throw new xu({maxFeePerGas:i});if(lx(n)&&lx(i)&&n>i)throw new Au({maxFeePerGas:i,maxPriorityFeePerGas:n});if(lx(o)&&!bi(o))throw new D("`feeCurrency` MUST be a token address for CIP-64 transactions.");if(cx(o))throw new D("`feeCurrency` must be provided for CIP-64 transactions.")}const vx={blockTime:1e3,contracts:vy,formatters:fx,serializers:mx,fees:ax},yx=L({...vx,id:42220,name:`Celo`,nativeCurrency:{decimals:18,name:`CELO`,symbol:`CELO`},rpcUrls:{default:{http:[`https://forno.celo.org`]}},blockExplorers:{default:{name:`Celo Explorer`,url:`https://celoscan.io`,apiUrl:`https://api.celoscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:13112599}},testnet:!1});var bx=17e3;const xx=L({...vx,id:44787,name:`Alfajores`,nativeCurrency:{decimals:18,name:`CELO`,symbol:`A-CELO`},rpcUrls:{default:{http:[`https://alfajores-forno.celo-testnet.org`]}},blockExplorers:{default:{name:`Celo Alfajores Explorer`,url:`https://celo-alfajores.blockscout.com`,apiUrl:`https://celo-alfajores.blockscout.com/api`}},contracts:{...vx.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:14569001},portal:{[bx]:{address:`0x82527353927d8D069b3B452904c942dA149BA381`,blockCreated:2411324}},disputeGameFactory:{[bx]:{address:`0xE28AAdcd9883746c0e5068F58f9ea06027b214cb`,blockCreated:2411324}},l2OutputOracle:{[bx]:{address:`0x4a2635e9e4f6e45817b1D402ac4904c1d1752438`,blockCreated:2411324}},l1StandardBridge:{[bx]:{address:`0xD1B0E0581973c9eB7f886967A606b9441A897037`,blockCreated:2411324}}},testnet:!0});var Sx=11155111;const Cx=L({...vx,id:11142220,name:`Celo Sepolia Testnet`,nativeCurrency:{decimals:18,name:`CELO`,symbol:`S-CELO`},rpcUrls:{default:{http:[`https://forno.celo-sepolia.celo-testnet.org`]}},blockExplorers:{default:{name:`Celo Sepolia Explorer`,url:`https://celo-sepolia.blockscout.com/`,apiUrl:`https://celo-sepolia.blockscout.com/api`}},contracts:{...vx.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1},portal:{[Sx]:{address:`0x44ae3d41a335a7d05eb533029917aad35662dcc2`,blockCreated:8825790}},disputeGameFactory:{[Sx]:{address:`0x57c45d82d1a995f1e135b8d7edc0a6bb5211cfaa`,blockCreated:8825790}},l1StandardBridge:{[Sx]:{address:`0xec18a3c30131a0db4246e785355fbc16e2eaf408`,blockCreated:8825790}}},testnet:!0}),wx=L({id:5858,name:`Chang Chain Foundation Mainnet`,nativeCurrency:{decimals:18,name:`CTH`,symbol:`CTH`},rpcUrls:{default:{http:[`https://rpc.cthscan.com`]}},blockExplorers:{default:{name:`Chang Chain explorer`,url:`https://cthscan.com`}}}),Tx=L({id:88888,name:`Chiliz Chain`,network:`chiliz-chain`,nativeCurrency:{decimals:18,name:`CHZ`,symbol:`CHZ`},rpcUrls:{default:{http:[`https://rpc.chiliz.com`]}},blockExplorers:{default:{name:`Chiliz Explorer`,url:`https://scan.chiliz.com`,apiUrl:`https://scan.chiliz.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:8080847}}}),Ex=L({id:2882,name:`Chips Network`,network:`CHIPS`,nativeCurrency:{decimals:18,name:`IOTA`,symbol:`IOTA`},rpcUrls:{default:{http:[`https://node.chips.ooo/wasp/api/v1/chains/iota1pp3d3mnap3ufmgqnjsnw344sqmf5svjh26y2khnmc89sv6788y3r207a8fn/evm`]}}}),Dx=L({id:5115,name:`Citrea Testnet`,nativeCurrency:{name:`cBTC`,symbol:`cBTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.citrea.xyz`]}},blockExplorers:{default:{name:`Citrea Explorer`,url:`https://explorer.testnet.citrea.xyz`,apiUrl:`https://explorer.testnet.citrea.xyz/api`}},testnet:!0}),Ox=L({id:61,name:`Ethereum Classic`,nativeCurrency:{decimals:18,name:`ETC`,symbol:`ETC`},rpcUrls:{default:{http:[`https://etc.rivet.link`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.com/etc/mainnet`}}}),kx=L({id:112,name:`Coinbit Mainnet`,nativeCurrency:{name:`GIDR`,symbol:`GIDR`,decimals:18},rpcUrls:{default:{http:[`https://coinbit-rpc-mainnet.chain.sbcrypto.app`]}},blockExplorers:{default:{name:`Coinbit Explorer`,url:`https://coinbit-explorer.chain.sbcrypto.app`}},testnet:!1}),Ax=L({id:52,name:`CoinEx Mainnet`,nativeCurrency:{name:`cet`,symbol:`cet`,decimals:18},rpcUrls:{default:{http:[`https://rpc.coinex.net`]}},blockExplorers:{default:{name:`CoinEx Explorer`,url:`https://www.coinex.net`}},testnet:!1}),jx=L({id:1030,name:`Conflux eSpace`,nativeCurrency:{name:`Conflux`,symbol:`CFX`,decimals:18},rpcUrls:{default:{http:[`https://evm.confluxrpc.com`],webSocket:[`wss://evm.confluxrpc.com/ws`]}},blockExplorers:{default:{name:`ConfluxScan`,url:`https://evm.confluxscan.org`}},contracts:{multicall3:{address:`0xEFf0078910f638cd81996cc117bccD3eDf2B072F`,blockCreated:68602935}}}),Mx=L({id:71,name:`Conflux eSpace Testnet`,network:`cfx-espace-testnet`,testnet:!0,nativeCurrency:{name:`Conflux`,symbol:`CFX`,decimals:18},rpcUrls:{default:{http:[`https://evmtestnet.confluxrpc.com`],webSocket:[`wss://evmtestnet.confluxrpc.com/ws`]}},blockExplorers:{default:{name:`ConfluxScan`,url:`https://evmtestnet.confluxscan.org`}},contracts:{multicall3:{address:`0xEFf0078910f638cd81996cc117bccD3eDf2B072F`,blockCreated:117499050}}}),Nx=L({id:1116,name:`Core Dao`,nativeCurrency:{decimals:18,name:`Core`,symbol:`CORE`},rpcUrls:{default:{http:[`https://rpc.coredao.org`]}},blockExplorers:{default:{name:`CoreDao`,url:`https://scan.coredao.org`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:11907934}},testnet:!1}),Px=L({id:1115,name:`Core Testnet`,nativeCurrency:{decimals:18,name:`tCore`,symbol:`TCORE`},rpcUrls:{default:{http:[`https://rpc.test.btcs.network`]}},blockExplorers:{default:{name:`Core Testnet`,url:`https://scan.test.btcs.network`,apiUrl:`https://api.test.btcs.network/api`}},contracts:{multicall3:{address:`0xCcddF20A1932537123C2E48Bd8e00b108B8f7569`,blockCreated:29350509}},testnet:!0}),Fx=L({id:1114,name:`Core Testnet2`,nativeCurrency:{decimals:18,name:`tCore2`,symbol:`TCORE2`},rpcUrls:{default:{http:[`https://rpc.test2.btcs.network`]}},blockExplorers:{default:{name:`Core Testnet2`,url:`https://scan.test2.btcs.network`,apiUrl:`https://api.test2.btcs.network/api`}},contracts:{multicall3:{address:`0x3CB285ff3Cd5C7C7e570b1E7DE3De17A0f985e56`,blockCreated:3838600}},testnet:!0}),Ix=L({id:21e6,name:`Corn`,nativeCurrency:{decimals:18,name:`Bitcorn`,symbol:`BTCN`},rpcUrls:{default:{http:[`https://21000000.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Corn Explorer`,url:`https://cornscan.io`,apiUrl:`https://api.routescan.io/v2/network/mainnet/evm/21000000/etherscan/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3228}},sourceId:1}),Lx=L({id:21000001,name:`Corn Testnet`,nativeCurrency:{decimals:18,name:`Bitcorn`,symbol:`BTCN`},rpcUrls:{default:{http:[`https://21000001.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Corn Testnet Explorer`,url:`https://testnet.cornscan.io`,apiUrl:`https://api.routescan.io/v2/network/testnet/evm/21000001/etherscan/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4886}},testnet:!0,sourceId:11155111}),Rx=L({id:44,name:`Crab Network`,nativeCurrency:{decimals:18,name:`Crab Network Native Token`,symbol:`CRAB`},rpcUrls:{default:{http:[`https://crab-rpc.darwinia.network`],webSocket:[`wss://crab-rpc.darwinia.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://crab-scan.darwinia.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3032593}}}),zx=L({id:66665,name:`Creator`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.creatorchain.io`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.creatorchain.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},testnet:!0}),Bx=L({id:102032,name:`Creditcoin Devnet`,nativeCurrency:{name:`Devnet CTC`,symbol:`devCTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.cc3-devnet.creditcoin.network`],webSocket:[`wss://rpc.cc3-devnet.creditcoin.network/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://creditcoin-devnet.blockscout.com`,apiUrl:`https://creditcoin3-dev.subscan.io`}},testnet:!0}),Vx=L({id:102030,name:`Creditcoin`,nativeCurrency:{name:`Creditcoin`,symbol:`CTC`,decimals:18},rpcUrls:{default:{http:[`https://mainnet3.creditcoin.network`],webSocket:[`wss://mainnet3.creditcoin.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://creditcoin.blockscout.com`,apiUrl:`https://creditcoin.blockscout.com/api`}},testnet:!1}),Hx=L({id:102031,name:`Creditcoin Testnet`,nativeCurrency:{name:`Creditcoin Testnet`,symbol:`tCTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.cc3-testnet.creditcoin.network`],webSocket:[`wss://rpc.cc3-testnet.creditcoin.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://creditcoin-testnet.blockscout.com`,apiUrl:`https://creditcoin-testnet.blockscout.com/api`}},testnet:!0}),Ux=L({id:25,name:`Cronos Mainnet`,nativeCurrency:{decimals:18,name:`Cronos`,symbol:`CRO`},rpcUrls:{default:{http:[`https://evm.cronos.org`]}},blockExplorers:{default:{name:`Cronos Explorer`,url:`https://explorer.cronos.org`,apiUrl:`https://explorer-api.cronos.org/mainnet/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1963112}}}),Wx=L({id:338,name:`Cronos Testnet`,nativeCurrency:{decimals:18,name:`CRO`,symbol:`tCRO`},rpcUrls:{default:{http:[`https://evm-t3.cronos.org`]}},blockExplorers:{default:{name:`Cronos Explorer (Testnet)`,url:`https://explorer.cronos.org/testnet`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:10191251}},testnet:!0}),Gx=L({id:388,name:`Cronos zkEVM Mainnet`,nativeCurrency:{decimals:18,name:`Cronos zkEVM CRO`,symbol:`zkCRO`},rpcUrls:{default:{http:[`https://mainnet.zkevm.cronos.org`]}},blockExplorers:{default:{name:`Cronos zkEVM (Mainnet) Chain Explorer`,url:`https://explorer.zkevm.cronos.org`}},contracts:{multicall3:{address:`0x06f4487d7c4a5983d2660db965cc6d2565e4cfaa`,blockCreated:72}}}),Kx=L({id:282,name:`Cronos zkEVM Testnet`,nativeCurrency:{decimals:18,name:`Cronos zkEVM Test Coin`,symbol:`zkTCRO`},rpcUrls:{default:{http:[`https://testnet.zkevm.cronos.org`]}},blockExplorers:{default:{name:`Cronos zkEVM Testnet Explorer`,url:`https://explorer.zkevm.cronos.org/testnet`}},testnet:!0}),qx=L({id:3737,name:`Crossbell`,nativeCurrency:{decimals:18,name:`CSB`,symbol:`CSB`},rpcUrls:{default:{http:[`https://rpc.crossbell.io`]}},blockExplorers:{default:{name:`CrossScan`,url:`https://scan.crossbell.io`,apiUrl:`https://scan.crossbell.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:38246031}}}),Jx=L({id:4158,name:`CrossFi Mainnet`,nativeCurrency:{decimals:18,name:`CrossFi`,symbol:`XFI`},rpcUrls:{default:{http:[`https://rpc.mainnet.ms`]}},blockExplorers:{default:{name:`CrossFi Blockchain Explorer`,url:`https://xfiscan.com`}},testnet:!1}),Yx=L({id:33111,name:`Curtis`,nativeCurrency:{name:`ApeCoin`,symbol:`APE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.curtis.apechain.com`]}},blockExplorers:{default:{name:`Curtis Explorer`,url:`https://explorer.curtis.apechain.com`}},testnet:!0}),Xx=L({id:7560,name:`Cyber`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://cyber.alt.technology`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://cyberscan.co`,apiUrl:`https://cyberscan.co/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),Zx=L({id:111557560,name:`Cyber Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://cyber-testnet.alt.technology`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet.cyberscan.co`,apiUrl:`https://testnet.cyberscan.co/api`}},contracts:{multicall3:{address:`0xffc391F0018269d4758AEA1a144772E8FB99545E`,blockCreated:304545}},testnet:!0}),Qx=L({id:824,name:`Daily Network Mainnet`,nativeCurrency:{decimals:18,name:`Daily`,symbol:`DLY`},rpcUrls:{default:{http:[`https://rpc.mainnet.dailycrypto.net`]}},blockExplorers:{default:{name:`Daily Mainnet Explorer`,url:`https://explorer.mainnet.dailycrypto.net`}},testnet:!1}),$x=L({id:825,name:`Daily Network Testnet`,nativeCurrency:{decimals:18,name:`Daily`,symbol:`DLY`},rpcUrls:{default:{http:[`https://rpc.testnet.dailycrypto.net`]}},blockExplorers:{default:{name:`Daily Testnet Explorer`,url:`https://explorer.testnet.dailycrypto.net`}},testnet:!0}),eS=L({id:46,name:`Darwinia Network`,nativeCurrency:{decimals:18,name:`RING`,symbol:`RING`},rpcUrls:{default:{http:[`https://rpc.darwinia.network`],webSocket:[`wss://rpc.darwinia.network`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.darwinia.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:69420}}}),tS=L({id:20240603,name:`DBK chain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.dbkchain.io`]}},blockExplorers:{default:{name:`DBK Chain Explorer`,url:`https://scan.dbkchain.io`}},testnet:!1}),nS=L({...R,id:0x9a697f88076c8,name:`Dchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://dchain-2716446429837000-1.jsonrpc.sagarpc.io`]}},blockExplorers:{default:{name:`Dchain Explorer`,url:`https://dchain-2716446429837000-1.sagaexplorer.io`,apiUrl:`https://api-dchain-2716446429837000-1.sagaexplorer.io/api`}},contracts:{...R.contracts}}),rS=L({...R,id:0x9a379ba03cf10,name:`Dchain Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://dchaintestnet-2713017997578000-1.jsonrpc.testnet.sagarpc.io`]}},blockExplorers:{default:{name:`Dchain Explorer`,url:`https://dchaintestnet-2713017997578000-1.testnet.sagaexplorer.io`,apiUrl:`https://api-dchaintestnet-2713017997578000-1.testnet.sagaexplorer.io/api`}},contracts:{...R.contracts}}),iS=L({id:1130,network:`defichain-evm`,name:`DeFiChain EVM Mainnet`,nativeCurrency:{name:`DeFiChain`,symbol:`DFI`,decimals:18},rpcUrls:{default:{http:[`https://eth.mainnet.ocean.jellyfishsdk.com`]}},blockExplorers:{default:{name:`DeFiScan`,url:`https://meta.defiscan.live`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:137852}}}),aS=L({id:1131,network:`defichain-evm-testnet`,name:`DeFiChain EVM Testnet`,nativeCurrency:{name:`DeFiChain`,symbol:`DFI`,decimals:18},rpcUrls:{default:{http:[`https://eth.testnet.ocean.jellyfishsdk.com`]}},blockExplorers:{default:{name:`DeFiScan`,url:`https://meta.defiscan.live/?network=TestNet`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:156462}},testnet:!0}),oS=L({id:666666666,name:`Degen`,nativeCurrency:{decimals:18,name:`Degen`,symbol:`DEGEN`},rpcUrls:{default:{http:[`https://rpc.degen.tips`],webSocket:[`wss://rpc.degen.tips`]}},blockExplorers:{default:{name:`Degen Chain Explorer`,url:`https://explorer.degen.tips`,apiUrl:`https://explorer.degen.tips/api/v2`}}}),sS=L({id:53935,name:`DFK Chain`,nativeCurrency:{decimals:18,name:`Jewel`,symbol:`JEWEL`},rpcUrls:{default:{http:[`https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc`]}},blockExplorers:{default:{name:`DFKSubnetScan`,url:`https://subnets.avax.network/defi-kingdoms`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14790551}}}),cS=L({id:15,name:`Diode Prenet`,nativeCurrency:{decimals:18,name:`DIODE`,symbol:`DIODE`},rpcUrls:{default:{http:[`https://prenet.diode.io:8443`],webSocket:[`wss://prenet.diode.io:8443/ws`]}},blockExplorers:{default:{name:`Diode Explorer`,url:`https://diode.io/prenet`}},testnet:!1}),lS=L({id:513100,name:`DisChain`,nativeCurrency:{decimals:18,name:`DIS`,symbol:`DIS`},rpcUrls:{default:{http:[`https://rpc.dischain.xyz`]}},blockExplorers:{default:{name:`DisChain Explorer`,url:`https://www.oklink.com/dis`}}}),uS=L({id:53457,name:`DODOchain Testnet`,nativeCurrency:{decimals:18,name:`DODO`,symbol:`DODO`},rpcUrls:{default:{http:[`https://dodochain-testnet.alt.technology`],webSocket:[`wss://dodochain-testnet.alt.technology/ws`]}},blockExplorers:{default:{name:`DODOchain Testnet (Sepolia) Explorer`,url:`https://testnet-scan.dodochain.com`}},testnet:!0}),dS=L({id:2e3,name:`Dogechain`,nativeCurrency:{decimals:18,name:`Wrapped Dogecoin`,symbol:`WDOGE`},rpcUrls:{default:{http:[`https://rpc.dogechain.dog`]}},blockExplorers:{default:{name:`DogeChainExplorer`,url:`https://explorer.dogechain.dog`,apiUrl:`https://explorer.dogechain.dog/api`}},contracts:{multicall3:{address:`0x68a8609a60a008EFA633dfdec592c03B030cC508`,blockCreated:25384031}}}),fS=L({id:97476,name:`Doma Testnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc-testnet.doma.xyz`]}},blockExplorers:{default:{name:`Doma Testnet Explorer`,url:`https://explorer-testnet.doma.xyz`}},testnet:!0}),pS=L({id:42026,name:`Donatuz`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.donatuz.com`]}},blockExplorers:{default:{name:`Donatuz Explorer`,url:`https://explorer.donatuz.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}}}),mS=L({id:7979,name:`DOS Chain`,nativeCurrency:{decimals:18,name:`DOS Chain`,symbol:`DOS`},rpcUrls:{default:{http:[`https://main.doschain.com`]}},blockExplorers:{default:{name:`DOS Chain Explorer`,url:`https://doscan.io`,apiUrl:`https://api.doscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:161908}}}),hS=L({id:3939,name:`DOS Chain Testnet`,nativeCurrency:{decimals:18,name:`DOS Chain Testnet`,symbol:`DOS`},rpcUrls:{default:{http:[`https://test.doschain.com`]}},blockExplorers:{default:{name:`DOS Chain Testnet Explorer`,url:`https://test.doscan.io`,apiUrl:`https://api-test.doscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:69623}},testnet:!0}),gS=L({id:23451,name:`DreyerX Mainnet`,nativeCurrency:{name:`DreyerX`,symbol:`DRX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.dreyerx.com`]}},blockExplorers:{default:{name:`DreyerX Scan`,url:`https://scan.dreyerx.com`}}}),_S=L({id:23452,name:`DreyerX Testnet`,nativeCurrency:{name:`DreyerX`,symbol:`DRX`,decimals:18},rpcUrls:{default:{http:[`http://testnet-rpc.dreyerx.com`]}},blockExplorers:{default:{name:`DreyerX Testnet Scan`,url:`https://testnet-scan.dreyerx.com`}},testnet:!0}),vS=L({id:555888,name:`DustBoy IoT`,nativeCurrency:{name:`Ether`,symbol:`DST`,decimals:18},rpcUrls:{default:{http:[`https://dustboy-rpc.jibl2.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://dustboy.jibl2.com`,apiUrl:`https://dustboy.jibl2.com/api`}},contracts:{multicall3:{address:`0xFFD34aa2C62B2D52E00A361e466C229788f4eD6a`,blockCreated:526569}},testnet:!1}),yS=L({id:1100,name:`Dymension`,nativeCurrency:{name:`DYM`,symbol:`DYM`,decimals:18},rpcUrls:{default:{http:[`https://dymension-evm-rpc.publicnode.com`],webSocket:[`wss://dymension-evm-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Dym FYI`,url:`https://dym.fyi`}},testnet:!1}),bS=L({id:5424,name:`edeXa`,nativeCurrency:{name:`edeXa`,symbol:`EDX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.edexa.network`]}},blockExplorers:{default:{name:`edeXa Explorer`,url:`https://explorer.edexa.network`,apiUrl:`https://explorer.edexa.network/api/v2`}}}),xS=L({id:1995,name:`edeXa Testnet`,nativeCurrency:{name:`edeXa`,symbol:`tEDX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.edexa.network`]}},blockExplorers:{default:{name:`edeXa Testnet Explorer`,url:`https://explorer.testnet.edexa.network`,apiUrl:`https://explorer.testnet.edexa.network/api/v2`}},testnet:!0}),SS=L({id:2026,name:`Edgeless Network`,nativeCurrency:{name:`Edgeless Wrapped ETH`,symbol:`EwETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.edgeless.network/http`],webSocket:[`wss://rpc.edgeless.network/ws`]}},blockExplorers:{default:{name:`Edgeless Explorer`,url:`https://explorer.edgeless.network`}}}),CS=L({id:202,name:`Edgeless Testnet`,nativeCurrency:{name:`Edgeless Wrapped ETH`,symbol:`EwETH`,decimals:18},rpcUrls:{default:{http:[`https://edgeless-testnet.rpc.caldera.xyz/http`],webSocket:[`wss://edgeless-testnet.rpc.caldera.xyz/ws`]}},blockExplorers:{default:{name:`Edgeless Testnet Explorer`,url:`https://testnet.explorer.edgeless.network`}}}),wS=L({id:2021,name:`Edgeware EdgeEVM Mainnet`,nativeCurrency:{decimals:18,name:`Edgeware`,symbol:`EDG`},rpcUrls:{default:{http:[`https://edgeware-evm.jelliedowl.net`]}},blockExplorers:{default:{name:`Edgscan by Bharathcoorg`,url:`https://edgscan.live`,apiUrl:`https://edgscan.live/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:18117872}}}),TS=L({id:2022,name:`Beresheet BereEVM Testnet`,nativeCurrency:{decimals:18,name:`Testnet EDG`,symbol:`tEDG`},rpcUrls:{default:{http:[`https://beresheet-evm.jelliedowl.net`]}},blockExplorers:{default:{name:`Edgscan by Bharathcoorg`,url:`https://testnet.edgscan.live`,apiUrl:`https://testnet.edgscan.live/api`}}}),ES=L({id:41923,name:`EDU Chain`,nativeCurrency:{decimals:18,name:`EDU`,symbol:`EDU`},rpcUrls:{default:{http:[`https://rpc.edu-chain.raas.gelato.cloud`]}},blockExplorers:{default:{name:`EDU Chain Explorer`,url:`https://educhain.blockscout.com/`}},testnet:!1}),DS=L({id:656476,name:`EDU Chain Testnet`,nativeCurrency:{decimals:18,name:`EDU`,symbol:`EDU`},rpcUrls:{default:{http:[`https://rpc.open-campus-codex.gelato.digital/`],webSocket:[`wss://ws.open-campus-codex.gelato.digital`]}},blockExplorers:{default:{name:`EDU Chain Testnet Explorer`,url:`https://opencampus-codex.blockscout.com`,apiUrl:`https://opencampus-codex.blockscout.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:15514133}},testnet:!0}),OS=L({id:1994,name:`Ekta`,nativeCurrency:{decimals:18,name:`EKTA`,symbol:`EKTA`},rpcUrls:{default:{http:[`https://main.ekta.io`]}},blockExplorers:{default:{name:`Ektascan`,url:`https://ektascan.io`,apiUrl:`https://ektascan.io/api`}}}),kS=L({id:1004,name:`Ekta Testnet`,nativeCurrency:{decimals:18,name:`EKTA`,symbol:`EKTA`},rpcUrls:{default:{http:[`https://test.ekta.io:8545`]}},blockExplorers:{default:{name:`Test Ektascan`,url:`https://test.ektascan.io`,apiUrl:`https://test.ektascan.io/api`}},testnet:!0}),AS=L({id:20,name:`Elastos Smart Chain`,nativeCurrency:{name:`ELA`,symbol:`ELA`,decimals:18},rpcUrls:{default:{http:[`https://api2.elastos.io/eth`]}},blockExplorers:{default:{name:`Elastos Explorer`,url:`https://esc.elastos.io`}},testnet:!1}),jS=L({id:21,name:`Elastos Smart Chain Testnet`,nativeCurrency:{name:`tELA`,symbol:`tELA`,decimals:18},rpcUrls:{default:{http:[`https://api-testnet.elastos.io/eth`]}},blockExplorers:{default:{name:`Elastos Explorer`,url:`https://esc-testnet.elastos.io`}},testnet:!0}),MS=L({id:52014,name:`Electroneum Mainnet`,nativeCurrency:{name:`ETN`,symbol:`ETN`,decimals:18},rpcUrls:{default:{http:[`https://rpc.electroneum.com`]}},blockExplorers:{default:{name:`Electroneum Block Explorer`,url:`https://blockexplorer.electroneum.com`}},testnet:!1}),NS=L({id:5201420,name:`Electroneum Testnet`,nativeCurrency:{name:`ETN`,symbol:`ETN`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.electroneum.com`]}},blockExplorers:{default:{name:`Electroneum Block Explorer`,url:`https://blockexplorer.thesecurityteam.rocks`}},testnet:!0}),PS=L({...R,id:1338,name:`Elysium Testnet`,nativeCurrency:{decimals:18,name:`LAVA`,symbol:`LAVA`},rpcUrls:{default:{http:[`https://elysium-test-rpc.vulcanforged.com`]}},blockExplorers:{default:{name:`Elysium testnet explorer`,url:`https://elysium-explorer.vulcanforged.com`}},testnet:!0}),FS=L({id:246,name:`Energy Mainnet`,nativeCurrency:{name:`EWT`,symbol:`EWT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.energyweb.org`]}},blockExplorers:{default:{name:`EnergyWeb Explorer`,url:`https://explorer.energyweb.org`}},testnet:!1}),IS=L({id:173,name:`ENI Mainnet`,nativeCurrency:{decimals:18,name:`ENI`,symbol:`ENI`},rpcUrls:{default:{http:[`https://rpc.eniac.network`]}},blockExplorers:{default:{name:`ENI Explorer`,url:`https://scan.eniac.network`}},testnet:!1}),LS=L({id:6912115,name:`ENI Testnet`,nativeCurrency:{decimals:18,name:`ENI Testnet Token`,symbol:`ENI`},rpcUrls:{default:{http:[`https://rpc-testnet.eniac.network`]}},blockExplorers:{default:{name:`ENI Testnet Explorer`,url:`https://scan-testnet.eniac.network`}},testnet:!0}),RS=L({id:119,name:`ENULS Mainnet`,nativeCurrency:{decimals:18,name:`NULS`,symbol:`NULS`},rpcUrls:{default:{http:[`https://evmapi2.nuls.io`]}},blockExplorers:{default:{name:`ENULS Explorer`,url:`https://evmscan.nuls.io`}},testnet:!1}),zS=L({id:7332,name:`Horizen EON`,nativeCurrency:{decimals:18,name:`ZEN`,symbol:`ZEN`},rpcUrls:{default:{http:[`https://eon-rpc.horizenlabs.io/ethv1`]}},blockExplorers:{default:{name:`EON Explorer`,url:`https://eon-explorer.horizenlabs.io`}},contracts:{}}),BS=L({id:17777,name:`EOS EVM`,nativeCurrency:{decimals:18,name:`EOS`,symbol:`EOS`},rpcUrls:{default:{http:[`https://api.evm.eosnetwork.com`]}},blockExplorers:{default:{name:`EOS EVM Explorer`,url:`https://explorer.evm.eosnetwork.com`,apiUrl:`https://explorer.evm.eosnetwork.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7943933}}}),VS=L({id:15557,name:`EOS EVM Testnet`,nativeCurrency:{decimals:18,name:`EOS`,symbol:`EOS`},rpcUrls:{default:{http:[`https://api.testnet.evm.eosnetwork.com`]}},blockExplorers:{default:{name:`EOS EVM Testnet Explorer`,url:`https://explorer.testnet.evm.eosnetwork.com`,apiUrl:`https://explorer.testnet.evm.eosnetwork.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:9067940}},testnet:!0}),HS=L({id:140,name:`Eteria`,nativeCurrency:{name:`Eteria`,symbol:`ERA`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.eteria.io/v1`]}},blockExplorers:{default:{name:`Eteria Explorer`,url:`https://explorer.eteria.io`,apiUrl:`https://explorer.eteria.io/api`}}}),US=L({id:42793,name:`Etherlink`,blockTime:4830,nativeCurrency:{decimals:18,name:`Tez`,symbol:`XTZ`},rpcUrls:{default:{http:[`https://node.mainnet.etherlink.com`]}},blockExplorers:{default:{name:`Etherlink`,url:`https://explorer.etherlink.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:33899}}}),WS=L({id:128123,name:`Etherlink Testnet`,nativeCurrency:{decimals:18,name:`Tez`,symbol:`XTZ`},rpcUrls:{default:{http:[`https://node.ghostnet.etherlink.com`]}},blockExplorers:{default:{name:`Etherlink Testnet`,url:`https://testnet.explorer.etherlink.com`}},testnet:!0}),GS=L({id:183,name:`Ethernity`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.ethernitychain.io`]}},blockExplorers:{default:{name:`Ethernity Explorer`,url:`https://ernscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},testnet:!1}),KS=L({id:20256789,name:`ETP Mainnet`,nativeCurrency:{decimals:18,name:`ETP Chain Native Token`,symbol:`ETP`},rpcUrls:{default:{http:[`https://rpc.etpscan.xyz`]}},blockExplorers:{default:{name:`ETP Scan`,url:`https://etpscan.xyz`}}}),qS=L({id:9001,name:`Evmos`,nativeCurrency:{decimals:18,name:`Evmos`,symbol:`EVMOS`},rpcUrls:{default:{http:[`https://eth.bd.evmos.org:8545`]}},blockExplorers:{default:{name:`Evmos Block Explorer`,url:`https://escan.live`}}}),JS=L({id:9e3,name:`Evmos Testnet`,nativeCurrency:{decimals:18,name:`Evmos`,symbol:`EVMOS`},rpcUrls:{default:{http:[`https://eth.bd.evmos.dev:8545`]}},blockExplorers:{default:{name:`Evmos Testnet Block Explorer`,url:`https://evm.evmos.dev/`}}}),YS=L({id:22052002,name:`Excelon Mainnet`,network:`XLON`,nativeCurrency:{decimals:18,name:`Excelon`,symbol:`xlon`},rpcUrls:{default:{http:[`https://edgewallet1.xlon.org`]}},blockExplorers:{default:{name:`Excelon explorer`,url:`https://explorer.excelon.io`}}}),XS=L({id:2,name:`Expanse Network`,nativeCurrency:{decimals:18,name:`EXP`,symbol:`EXP`},rpcUrls:{default:{http:[`https://node.expanse.tech`]}},blockExplorers:{default:{name:`Expanse Explorer`,url:`https://explorer.expanse.tech`}},testnet:!1}),ZS=L({id:7200,name:`exSat Network`,nativeCurrency:{decimals:18,name:`BTC`,symbol:`BTC`},rpcUrls:{default:{http:[`https://evm.exsat.network`]}},blockExplorers:{default:{name:`exSat Explorer`,url:`https://scan.exsat.network`,apiUrl:`https://scan.exsat.network/api`}}}),QS=L({id:839999,name:`exSat Testnet`,nativeCurrency:{decimals:18,name:`BTC`,symbol:`BTC`},rpcUrls:{default:{http:[`https://evm-tst3.exsat.network`]}},blockExplorers:{default:{name:`exSat Explorer`,url:`https://scan-testnet.exsat.network`,apiUrl:`https://scan-testnet.exsat.network/api`}}}),$S=L({id:250,name:`Fantom`,nativeCurrency:{decimals:18,name:`Fantom`,symbol:`FTM`},rpcUrls:{default:{http:[`https://250.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`FTMScan`,url:`https://ftmscan.com`,apiUrl:`https://api.ftmscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:33001987}}}),eC=L({id:64240,name:`Fantom Sonic Open Testnet`,network:`fantom-sonic-testnet`,nativeCurrency:{decimals:18,name:`Fantom`,symbol:`FTM`},rpcUrls:{default:{http:[`https://rpcapi.sonic.fantom.network`]}},blockExplorers:{default:{name:`Fantom Sonic Open Testnet Explorer`,url:`https://public-sonic.fantom.network`}},testnet:!0}),tC=L({id:4002,name:`Fantom Testnet`,nativeCurrency:{decimals:18,name:`Fantom`,symbol:`FTM`},rpcUrls:{default:{http:[`https://rpc.testnet.fantom.network`]}},blockExplorers:{default:{name:`FTMScan`,url:`https://testnet.ftmscan.com`,apiUrl:`https://testnet.ftmscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:8328688}},testnet:!0}),nC=L({id:12306,name:`Fibo Chain`,nativeCurrency:{decimals:18,name:`fibo`,symbol:`FIBO`},rpcUrls:{default:{http:[`https://network.hzroc.art`]}},blockExplorers:{default:{name:`FiboScan`,url:`https://scan.fibochain.org`}}}),rC=L({id:314,name:`Filecoin Mainnet`,nativeCurrency:{decimals:18,name:`filecoin`,symbol:`FIL`},rpcUrls:{default:{http:[`https://api.node.glif.io/rpc/v1`]}},blockExplorers:{default:{name:`Filfox`,url:`https://filfox.info/en`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3328594}}}),iC=L({id:314159,name:`Filecoin Calibration`,nativeCurrency:{decimals:18,name:`testnet filecoin`,symbol:`tFIL`},rpcUrls:{default:{http:[`https://api.calibration.node.glif.io/rpc/v1`]}},blockExplorers:{default:{name:`Filscan`,url:`https://calibration.filscan.io`}},testnet:!0}),aC=L({id:3141,name:`Filecoin Hyperspace`,nativeCurrency:{decimals:18,name:`testnet filecoin`,symbol:`tFIL`},rpcUrls:{default:{http:[`https://api.hyperspace.node.glif.io/rpc/v1`]}},blockExplorers:{default:{name:`Filfox`,url:`https://hyperspace.filfox.info/en`}},testnet:!0}),oC=L({id:253368190,name:`Flame`,network:`flame`,nativeCurrency:{symbol:`TIA`,name:`TIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.flame.astria.org`],webSocket:[`wss://ws.flame.astria.org`]}},blockExplorers:{default:{name:`Flame Explorer`,url:`https://explorer.flame.astria.org`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:6829148}}}),sC=L({id:14,name:`Flare Mainnet`,nativeCurrency:{decimals:18,name:`Flare`,symbol:`FLR`},rpcUrls:{default:{http:[`https://flare-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Flare Explorer`,url:`https://flare-explorer.flare.network`,apiUrl:`https://flare-explorer.flare.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3002461}}}),cC=L({id:114,name:`Flare Testnet Coston2`,nativeCurrency:{decimals:18,name:`Coston2 Flare`,symbol:`C2FLR`},rpcUrls:{default:{http:[`https://coston2-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Coston2 Explorer`,url:`https://coston2-explorer.flare.network`,apiUrl:`https://coston2-explorer.flare.network/api`}},testnet:!0}),lC=L({id:747,name:`Flow EVM Mainnet`,nativeCurrency:{decimals:18,name:`Flow`,symbol:`FLOW`},rpcUrls:{default:{http:[`https://mainnet.evm.nodes.onflow.org`]}},blockExplorers:{default:{name:`Mainnet Explorer`,url:`https://evm.flowscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6205}},blockTime:800}),uC=L({id:646,name:`Flow EVM Previewnet`,nativeCurrency:{decimals:18,name:`Flow`,symbol:`FLOW`},rpcUrls:{default:{http:[`https://previewnet.evm.nodes.onflow.org`]}},blockExplorers:{default:{name:`Previewnet Explorer`,url:`https://previewnet.flowdiver.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6205}}}),dC=L({id:545,name:`Flow EVM Testnet`,nativeCurrency:{decimals:18,name:`Flow`,symbol:`FLOW`},rpcUrls:{default:{http:[`https://testnet.evm.nodes.onflow.org`]}},blockExplorers:{default:{name:`Flow Diver`,url:`https://evm-testnet.flowscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:137518}},testnet:!0,blockTime:800}),fC=L({id:9999999,name:`Fluence`,nativeCurrency:{name:`FLT`,symbol:`FLT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.fluence.dev`],webSocket:[`wss://ws.mainnet.fluence.dev`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.mainnet.fluence.dev`,apiUrl:`https://blockscout.mainnet.fluence.dev/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:207583}}}),pC=L({id:123420000220,name:`Fluence Stage`,nativeCurrency:{name:`tFLT`,symbol:`tFLT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.stage.fluence.dev`],webSocket:[`wss://ws.stage.fluence.dev`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.stage.fluence.dev`,apiUrl:`https://blockscout.stage.fluence.dev/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:83227}},testnet:!0}),mC=L({id:52164803,name:`Fluence Testnet`,nativeCurrency:{name:`tFLT`,symbol:`tFLT`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.fluence.dev`],webSocket:[`wss://ws.testnet.fluence.dev`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.testnet.fluence.dev`,apiUrl:`https://blockscout.testnet.fluence.dev/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:96424}},testnet:!0}),hC=L({id:20993,name:`Fluent Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.dev.gblend.xyz`]}},blockExplorers:{default:{name:`Fluent Explorer`,url:`https://blockscout.dev.gblend.xyz`}},testnet:!0});var gC=1;const _C=L({id:478,name:`Form Network`,nativeCurrency:{decimals:18,name:`Ethereum`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.form.network/http`],webSocket:[`wss://rpc.form.network/ws`]}},blockExplorers:{default:{name:`Form Explorer`,url:`https://explorer.form.network`}},contracts:{...R.contracts,addressManager:{[gC]:{address:`0x15c249E46A2F924C2dB3A1560CF86729bAD1f07B`}},l1CrossDomainMessenger:{[gC]:{address:`0xF333158DCCad1dF6C3F0a3aEe8BC31fA94d9eD5c`}},l2OutputOracle:{[gC]:{address:`0x4ccAAF69F41c5810cA875183648B577CaCf1F67E`}},portal:{[gC]:{address:`0x4E259Ee5F4136408908160dD32295A5031Fa426F`}},l1StandardBridge:{[gC]:{address:`0xdc20aA63D3DE59574E065957190D8f24e0F7B8Ba`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},sourceId:gC}),vC=L({id:984122,name:`Forma`,network:`forma`,nativeCurrency:{symbol:`TIA`,name:`TIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.forma.art`],webSocket:[`wss://ws.forma.art`]}},blockExplorers:{default:{name:`Forma Explorer`,url:`https://explorer.forma.art`}},contracts:{multicall3:{address:`0xd53C6FFB123F7349A32980F87faeD8FfDc9ef079`,blockCreated:252705}}});var yC=11155111;const bC=L({id:132902,name:`Form Testnet`,nativeCurrency:{decimals:18,name:`Ethereum`,symbol:`ETH`},rpcUrls:{default:{http:[`https://sepolia-rpc.form.network/http`],webSocket:[`wss://sepolia-rpc.form.network/ws`]}},blockExplorers:{default:{name:`Form Testnet Explorer`,url:`https://sepolia-explorer.form.network`}},contracts:{...R.contracts,addressManager:{[yC]:{address:`0xd5C38fa934f7fd7477D4800F4f38a1c5BFdF1373`}},l1CrossDomainMessenger:{[yC]:{address:`0x37A68565c4BE9700b3E3Ec60cC4416cAC3052FAa`}},l2OutputOracle:{[yC]:{address:`0x9eA2239E65a59EC9C7F1ED4C116dD58Da71Fc1e2`}},portal:{[yC]:{address:`0x60377e3cE15dF4CCA24c4beF076b60314240b032`}},l1StandardBridge:{[yC]:{address:`0xD4531f633942b2725896F47cD2aFd260b44Ab1F7`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},testnet:!0,sourceId:yC}),xC=L({id:80931,name:`Forta Chain`,nativeCurrency:{symbol:`FORT`,name:`FORT`,decimals:18},rpcUrls:{default:{http:[`https://rpc-forta-chain-8gj1qndmfc.t.conduit.xyz`]}},blockExplorers:{default:{name:`Forta Explorer`,url:`https://explorer.forta.org`}}}),SC=L({id:31337,name:`Foundry`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`],webSocket:[`ws://127.0.0.1:8545`]}}});var CC=1;const wC=L({...R,id:252,name:`Fraxtal`,nativeCurrency:{name:`Frax`,symbol:`FRAX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.frax.com`]}},blockExplorers:{default:{name:`fraxscan`,url:`https://fraxscan.com`,apiUrl:`https://api.fraxscan.com/api`}},contracts:{...R.contracts,l2OutputOracle:{[CC]:{address:`0x66CC916Ed5C6C2FA97014f7D1cD141528Ae171e4`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[CC]:{address:`0x36cb65c1967A0Fb0EEE11569C51C2f2aA1Ca6f6D`,blockCreated:19135323}},l1StandardBridge:{[CC]:{address:`0x34C0bD5877A5Ee7099D0f5688D65F4bB9158BDE2`,blockCreated:19135323}}},sourceId:CC});var TC=17e3;const EC=L({...R,id:2522,name:`Fraxtal Testnet`,nativeCurrency:{name:`Frax`,symbol:`FRAX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.frax.com`]}},blockExplorers:{default:{name:`fraxscan testnet`,url:`https://holesky.fraxscan.com`,apiUrl:`https://api-holesky.fraxscan.com/api`}},contracts:{...R.contracts,l2OutputOracle:{[TC]:{address:`0x715EA64DA13F4d0831ece4Ad3E8c1aa013167F32`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[TC]:{address:`0xB9c64BfA498d5b9a8398Ed6f46eb76d90dE5505d`,blockCreated:318416}},l1StandardBridge:{[TC]:{address:`0x0BaafC217162f64930909aD9f2B27125121d6332`,blockCreated:318416}}},sourceId:TC});var DC=1;const OC=L({...R,id:33979,name:`Funki`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.funkichain.com`]}},blockExplorers:{default:{name:`Funki Mainnet Explorer`,url:`https://funkiscan.io`}},contracts:{...R.contracts},sourceId:DC});var kC=11155111;const AC=L({...R,id:3397901,network:`funkiSepolia`,name:`Funki Sepolia Sandbox`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://funki-testnet.alt.technology`]}},blockExplorers:{default:{name:`Funki Sepolia Sandbox Explorer`,url:`https://sepolia-sandbox.funkichain.com/`}},testnet:!0,contracts:{...R.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1620204}},sourceId:kC}),jC=L({id:122,name:`Fuse`,nativeCurrency:{name:`Fuse`,symbol:`FUSE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.fuse.io`]}},blockExplorers:{default:{name:`Fuse Explorer`,url:`https://explorer.fuse.io`,apiUrl:`https://explorer.fuse.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:16146628}}}),MC=L({id:123,name:`Fuse Sparknet`,nativeCurrency:{name:`Spark`,symbol:`SPARK`,decimals:18},rpcUrls:{default:{http:[`https://rpc.fusespark.io`]}},blockExplorers:{default:{name:`Sparkent Explorer`,url:`https://explorer.fusespark.io`,apiUrl:`https://explorer.fusespark.io/api`}}}),NC=L({id:32659,name:`Fusion Mainnet`,nativeCurrency:{name:`Fusion`,symbol:`FSN`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.fusionnetwork.io`],webSocket:[`wss://mainnet.fusionnetwork.io`]}},blockExplorers:{default:{name:`FSNscan`,url:`https://fsnscan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:10441605}},testnet:!1}),PC=L({id:46688,name:`Fusion Testnet`,nativeCurrency:{name:`Fusion`,symbol:`FSN`,decimals:18},rpcUrls:{default:{http:[`https://testnet.fusionnetwork.io`],webSocket:[`wss://testnet.fusionnetwork.io`]}},blockExplorers:{default:{name:`FSNscan`,url:`https://testnet.fsnscan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:10428309}},testnet:!0});var FC=17e3;const IC=L({...R,name:`Garnet Testnet`,testnet:!0,id:17069,sourceId:FC,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.garnetchain.com`],webSocket:[`wss://rpc.garnetchain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.garnetchain.com`}},contracts:{...R.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[FC]:{address:`0x57ee40586fbE286AfC75E67cb69511A6D9aF5909`,blockCreated:1274684}},l2OutputOracle:{[FC]:{address:`0xCb8E7AC561b8EF04F2a15865e9fbc0766FEF569B`,blockCreated:1274684}},l1StandardBridge:{[FC]:{address:`0x09bcDd311FE398F80a78BE37E489f5D440DB95DE`,blockCreated:1274684}}}}),LC=L({id:63157,name:`Geist Mainnet`,nativeCurrency:{decimals:18,name:`Aavegotchi GHST Token`,symbol:`GHST`},rpcUrls:{default:{http:[`https://geist-mainnet.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://geist-mainnet.explorer.alchemy.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:660735}}}),RC=L({id:16507,name:`Genesys Mainnet`,nativeCurrency:{decimals:18,name:`GSYS`,symbol:`GSYS`},rpcUrls:{default:{http:[`https://rpc.genesys.network`]}},blockExplorers:{default:{name:`Genesys Explorer`,url:`https://gchainexplorer.genesys.network`}},testnet:!1});var zC=11155111;const BC=L({...R,id:91342,network:`giwa-sepolia`,name:`GIWA Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},blockTime:1e3,rpcUrls:{default:{http:[`https://sepolia-rpc.giwa.io`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia-explorer.giwa.io`,apiUrl:`https://sepolia-explorer.giwa.io/api`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},disputeGameFactory:{[zC]:{address:`0x37347caB2afaa49B776372279143D71ad1f354F6`}},portal:{[zC]:{address:`0x956962C34687A954e611A83619ABaA37Ce6bC78A`}},l1StandardBridge:{[zC]:{address:`0x77b2ffc0F57598cAe1DB76cb398059cF5d10A7E7`}}},testnet:!0,sourceId:zC}),VC=L({id:251,name:`Glide L1 Protocol XP`,nativeCurrency:{name:`GLXP`,symbol:`GLXP`,decimals:18},rpcUrls:{default:{http:[`https://rpc-api.glideprotocol.xyz/l1-rpc`],webSocket:[`wss://rpc-api.glideprotocol.xyz/l1-rpc`]}},blockExplorers:{default:{name:`Glide Protocol Explore`,url:`https://blockchain-explorer.glideprotocol.xyz`}},testnet:!1}),HC=L({id:253,name:`Glide L2 Protocol XP`,nativeCurrency:{name:`GLXP`,symbol:`GLXP`,decimals:18},rpcUrls:{default:{http:[`https://rpc-api.glideprotocol.xyz/l2-rpc`],webSocket:[`wss://rpc-api.glideprotocol.xyz/l2-rpc`]}},blockExplorers:{default:{name:`Glide Protocol Explore`,url:`https://blockchain-explorer.glideprotocol.xyz`}},testnet:!1}),UC=L({id:100,name:`Gnosis`,nativeCurrency:{decimals:18,name:`xDAI`,symbol:`XDAI`},blockTime:5e3,rpcUrls:{default:{http:[`https://rpc.gnosischain.com`],webSocket:[`wss://rpc.gnosischain.com/wss`]}},blockExplorers:{default:{name:`Gnosisscan`,url:`https://gnosisscan.io`,apiUrl:`https://api.gnosisscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:21022491}}}),WC=L({id:10200,name:`Gnosis Chiado`,nativeCurrency:{decimals:18,name:`Gnosis`,symbol:`xDAI`},blockTime:5e3,rpcUrls:{default:{http:[`https://rpc.chiadochain.net`],webSocket:[`wss://rpc.chiadochain.net/wss`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.chiadochain.net`,apiUrl:`https://blockscout.chiadochain.net/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4967313}},testnet:!0}),GC=L({id:2345,name:`GOAT`,nativeCurrency:{decimals:18,name:`Bitcoin`,symbol:`BTC`},rpcUrls:{default:{http:[`https://rpc.goat.network`]}},blockExplorers:{default:{name:`Goat Explorer`,url:`https://explorer.goat.network`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),KC=L({id:1663,name:`Horizen Gobi Testnet`,nativeCurrency:{decimals:18,name:`Test ZEN`,symbol:`tZEN`},rpcUrls:{default:{http:[`https://gobi-testnet.horizenlabs.io/ethv1`]}},blockExplorers:{default:{name:`Gobi Explorer`,url:`https://gobi-explorer.horizen.io`}},contracts:{},testnet:!0}),qC=L({id:60,name:`GoChain`,nativeCurrency:{decimals:18,name:`GO`,symbol:`GO`},rpcUrls:{default:{http:[`https://rpc.gochain.io`]}},blockExplorers:{default:{name:`GoChain Explorer`,url:`https://explorer.gochain.io`}},testnet:!1}),JC=L({id:71402,name:`Godwoken Mainnet`,nativeCurrency:{decimals:18,name:`pCKB`,symbol:`pCKB`},rpcUrls:{default:{http:[`https://v1.mainnet.godwoken.io/rpc`]}},blockExplorers:{default:{name:`GW Scan`,url:`https://v1.gwscan.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:15034}},testnet:!1}),YC=L({id:5,name:`Goerli`,nativeCurrency:{name:`Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://5.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli.etherscan.io`,apiUrl:`https://api-goerli.etherscan.io/api`}},contracts:{ensRegistry:{address:`0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e`},ensUniversalResolver:{address:`0xfc4AC75C46C914aF5892d6d3eFFcebD7917293F1`,blockCreated:10339206},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6507670}},testnet:!0}),XC=L({id:440017,name:`Graphite Network`,nativeCurrency:{name:`Graphite`,symbol:`@G`,decimals:18},rpcUrls:{default:{http:[`https://anon-entrypoint-1.atgraphite.com`],webSocket:[`wss://ws-anon-entrypoint-1.atgraphite.com`]}},blockExplorers:{default:{name:`Graphite Spectre`,url:`https://main.atgraphite.com`,apiUrl:`https://api.main.atgraphite.com/api`}},testnet:!1}),ZC=L({id:54170,name:`Graphite Network Testnet`,nativeCurrency:{name:`Graphite`,symbol:`@G`,decimals:18},rpcUrls:{default:{http:[`https://anon-entrypoint-test-1.atgraphite.com`],webSocket:[`wss://ws-anon-entrypoint-test-1.atgraphite.com`]}},blockExplorers:{default:{name:`Graphite Testnet Spectre`,url:`https://test.atgraphite.com`,apiUrl:`https://api.test.atgraphite.com/api`}},testnet:!0}),QC=L({id:1625,name:`Gravity Alpha Mainnet`,nativeCurrency:{name:`G`,symbol:`G`,decimals:18},rpcUrls:{default:{http:[`https://rpc.gravity.xyz`]}},blockExplorers:{default:{name:`Gravity Explorer`,url:`https://explorer.gravity.xyz`,apiUrl:`https://explorer.gravity.xyz/api`}},contracts:{multicall3:{address:`0xf8ac4BEB2F75d2cFFb588c63251347fdD629B92c`,blockCreated:16851}}}),$C=L({id:43419,name:`Gunz Mainnet`,nativeCurrency:{name:`GUN`,symbol:`GUN`,decimals:18},rpcUrls:{default:{http:[`https://rpc.gunzchain.io/ext/bc/2M47TxWHGnhNtq6pM5zPXdATBtuqubxn5EPFgFmEawCQr9WFML/rpc`]}},blockExplorers:{default:{name:`Gunz Explorer`,url:`https://gunzscan.io/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:70502}}}),ew=L({id:260,name:`Guru Network Mainnet`,nativeCurrency:{name:`GURU Token`,symbol:`GURU`,decimals:18},rpcUrls:{default:{http:[`https://rpc-main.gurunetwork.ai`,`https://rpc.gurunetwork.ai/archive/260`]}},blockExplorers:{default:{name:`Guruscan`,url:`https://scan.gurunetwork.ai`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:271691}},testnet:!1}),tw=L({id:261,name:`Guru Network Testnet`,nativeCurrency:{name:`tGURU Token`,symbol:`tGURU`,decimals:18},rpcUrls:{default:{http:[`https://rpc-test.gurunetwork.ai`,`https://rpc.gurunetwork.ai/archive/261`]}},blockExplorers:{default:{name:`Guruscan`,url:`https://sepolia.gurunetwork.ai`}},testnet:!0}),nw=L({id:5112,name:`Ham`,nativeCurrency:{decimals:18,name:`Ham`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.ham.fun`],webSocket:[`wss://rpc.ham.fun`]}},blockExplorers:{default:{name:`Ham Chain Explorer`,url:`https://explorer.ham.fun`,apiUrl:`https://explorer.ham.fun/api/v2`}}}),rw=L({id:216,name:`Happychain Testnet`,nativeCurrency:{symbol:`HAPPY`,name:`HAPPY`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.happy.tech/http`],webSocket:[`wss://rpc.testnet.happy.tech/ws`]}},blockExplorers:{default:{name:`Happy Chain Testnet Explorer`,url:`https://explorer.testnet.happy.tech`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1}},testnet:!0}),iw=L({id:11235,name:`HAQQ Mainnet`,nativeCurrency:{decimals:18,name:`Islamic Coin`,symbol:`ISLM`},rpcUrls:{default:{http:[`https://rpc.eth.haqq.network`]}},blockExplorers:{default:{name:`HAQQ Explorer`,url:`https://explorer.haqq.network`,apiUrl:`https://explorer.haqq.network/api`}}}),aw=L({id:54211,name:`HAQQ Testedge 2`,nativeCurrency:{decimals:18,name:`Islamic Coin`,symbol:`ISLMT`},rpcUrls:{default:{http:[`https://rpc.eth.testedge2.haqq.network`]}},blockExplorers:{default:{name:`HAQQ Explorer`,url:`https://explorer.testedge2.haqq.network`,apiUrl:`https://explorer.testedge2.haqq.network/api`}}}),ow=L({id:31337,name:`Hardhat`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`]}}}),sw=L({id:16666e5,name:`Harmony One`,nativeCurrency:{name:`Harmony`,symbol:`ONE`,decimals:18},rpcUrls:{default:{http:[`https://1666600000.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`Harmony Explorer`,url:`https://explorer.harmony.one`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:24185753}}}),cw=L({id:177,name:`HashKey Chain`,nativeCurrency:{decimals:18,name:`HashKey EcoPoints`,symbol:`HSK`},rpcUrls:{default:{http:[`https://mainnet.hsk.xyz`]}},blockExplorers:{default:{name:`HashKey Chain Explorer`,url:`https://hashkey.blockscout.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}}}),lw=L({id:133,name:`HashKey Chain Testnet`,nativeCurrency:{decimals:18,name:`HashKey EcoPoints`,symbol:`HSK`},rpcUrls:{default:{http:[`https://hashkeychain-testnet.alt.technology`]}},blockExplorers:{default:{name:`HashKey Chain Explorer`,url:`https://hashkeychain-testnet-explorer.alt.technology`}},testnet:!0}),uw=L({id:1523903251,name:`Haust Network Testnet`,nativeCurrency:{decimals:18,name:`HAUST`,symbol:`HAUST`},rpcUrls:{default:{http:[`https://rpc-testnet.haust.app`]}},blockExplorers:{default:{name:`Haust Network Testnet Explorer`,url:`https://explorer-testnet.haust.app`}},testnet:!0}),dw=L({id:295,name:`Hedera Mainnet`,network:`hedera-mainnet`,nativeCurrency:{symbol:`HBAR`,name:`HBAR`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.hashio.io/api`]}},blockExplorers:{default:{name:`Hashscan`,url:`https://hashscan.io/mainnet`}},testnet:!1}),fw=L({id:297,name:`Hedera Previewnet`,network:`hedera-previewnet`,nativeCurrency:{symbol:`HBAR`,name:`HBAR`,decimals:18},rpcUrls:{default:{http:[`https://previewnet.hashio.io/api`]}},blockExplorers:{default:{name:`Hashscan`,url:`https://hashscan.io/previewnet`}},testnet:!0}),pw=L({id:296,name:`Hedera Testnet`,network:`hedera-testnet`,nativeCurrency:{symbol:`HBAR`,name:`HBAR`,decimals:18},rpcUrls:{default:{http:[`https://testnet.hashio.io/api`]}},blockExplorers:{default:{name:`Hashscan`,url:`https://hashscan.io/testnet`}},testnet:!0}),mw=L({id:8668,name:`Hela Mainnet`,nativeCurrency:{name:`HLUSD`,symbol:`HLUSD`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.helachain.com`]}},blockExplorers:{default:{name:`Hela explorer`,url:`https://mainnet-blockexplorer.helachain.com`}},testnet:!1}),hw=L({id:43111,name:`Hemi`,network:`Hemi`,blockTime:12e3,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hemi.network/rpc`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.hemi.xyz`}},testnet:!1}),gw=L({id:743111,name:`Hemi Sepolia`,network:`Hemi Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.rpc.hemi.network/rpc`]}},blockExplorers:{default:{name:`Hemi Sepolia explorer`,url:`https://testnet.explorer.hemi.xyz`}},testnet:!0}),_w=L({id:17e3,name:`Holesky`,nativeCurrency:{name:`Holesky Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://ethereum-holesky-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://holesky.etherscan.io`,apiUrl:`https://api-holesky.etherscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:77},ensUniversalResolver:{address:`0xeeeeeeee14d718c2b47d9923deab1335e144eeee`,blockCreated:4295055}},testnet:!0}),vw=L({id:560048,name:`Hoodi`,nativeCurrency:{name:`Hoodi Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hoodi.ethpandaops.io`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://hoodi.etherscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2589}},testnet:!0}),yw=L({id:269,name:`High Performance Blockchain`,nativeCurrency:{name:`HPB`,symbol:`HPB`,decimals:18},rpcUrls:{default:{http:[`https://hpbnode.com`]}},blockExplorers:{default:{name:`hpbScan`,url:`https://hscan.org`}},testnet:!1}),bw=L({id:12323,name:`Huddle01 dRTC Chain`,nativeCurrency:{name:`Ethereum`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://huddle01.calderachain.xyz/http`],webSocket:[`wss://huddle01.calderachain.xyz/ws`]}},blockExplorers:{default:{name:`Huddle01 Caldera Explorer`,url:`https://huddle01.calderaexplorer.xyz`,apiUrl:`https://huddle01.calderaexplorer.xyz/api`}},sourceId:42161}),xw=L({id:2524852,name:`Huddle01 dRTC Chain Testnet`,nativeCurrency:{name:`Ethereum`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://huddle-testnet.rpc.caldera.xyz/http`],webSocket:[`wss://huddle-testnet.rpc.caldera.xyz/ws`]}},blockExplorers:{default:{name:`Huddle01 Caldera Explorer`,url:`https://huddle-testnet.explorer.caldera.xyz`,apiUrl:`https://huddle-testnet.explorer.caldera.xyz/api`}},sourceId:421614}),Sw=L({id:6985385,name:`Humanity`,nativeCurrency:{name:`H`,symbol:`H`,decimals:18},rpcUrls:{default:{http:[`https://humanity-mainnet.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Humanity Mainnet Explorer`,url:`https://humanity-mainnet.explorer.alchemy.com`,apiUrl:`https://humanity-mainnet.explorer.alchemy.com/api`}},testnet:!1}),Cw=L({id:7080969,name:`Humanity Testnet`,nativeCurrency:{name:`tHP`,symbol:`tHP`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.humanity.org`]}},blockExplorers:{default:{name:`Humanity Testnet Explorer`,url:`https://humanity-testnet.explorer.alchemy.com`,apiUrl:`https://humanity-testnet.explorer.alchemy.com/api`}},testnet:!0}),ww=L({id:5234,name:`Humanode`,nativeCurrency:{name:`HMND`,symbol:`HMND`,decimals:18},rpcUrls:{default:{http:[`https://explorer-rpc-http.mainnet.stages.humanode.io`],webSocket:[`wss://explorer-rpc-ws.mainnet.stages.humanode.io`]}},blockExplorers:{default:{name:`Subscan`,url:`https://humanode.subscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4413097}}}),Tw=L({id:14853,name:`Humanode Testnet 5`,nativeCurrency:{name:`HMND`,symbol:`HMND`,decimals:18},rpcUrls:{default:{http:[`https://explorer-rpc-http.testnet5.stages.humanode.io`],webSocket:[`wss://explorer-rpc-ws.testnet5.stages.humanode.io`]}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}}}),Ew=L({id:2911,name:`HYCHAIN`,nativeCurrency:{name:`HYTOPIA`,symbol:`TOPIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hychain.com/http`]}},blockExplorers:{default:{name:`HYCHAIN Explorer`,url:`https://explorer.hychain.com`}},testnet:!1}),Dw=L({id:29112,name:`HYCHAIN Testnet`,nativeCurrency:{name:`HYTOPIA`,symbol:`TOPIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hychain.com/http`]}},blockExplorers:{default:{name:`HYCHAIN Explorer`,url:`https://testnet-rpc.hychain.com/http`}},testnet:!0}),Ow=L({id:998,name:`Hyperliquid EVM Testnet`,nativeCurrency:{name:`HYPE`,symbol:`HYPE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hyperliquid-testnet.xyz/evm`]}},testnet:!0}),kw=L({id:73115,name:`ICB Network`,nativeCurrency:{decimals:18,name:`ICB Native Token`,symbol:`ICBX`},rpcUrls:{default:{http:[`https://rpc1-mainnet.icbnetwork.info`]}},blockExplorers:{default:{name:`ICB Explorer`,url:`https://icbscan.io`,apiUrl:`https://icbscan.io/api`}},testnet:!1}),Aw=L({id:74,name:`IDChain Mainnet`,nativeCurrency:{decimals:18,name:`EIDI`,symbol:`EIDI`},rpcUrls:{default:{http:[`https://idchain.one/rpc`],webSocket:[`wss://idchain.one/ws`]}},blockExplorers:{default:{name:`IDChain Explorer`,url:`https://explorer.idchain.one`}},testnet:!1}),jw=L({id:13371,name:`Immutable zkEVM`,nativeCurrency:{decimals:18,name:`Immutable Coin`,symbol:`IMX`},rpcUrls:{default:{http:[`https://rpc.immutable.com`]}},blockExplorers:{default:{name:`Immutable Explorer`,url:`https://explorer.immutable.com`,apiUrl:`https://explorer.immutable.com/api`}},contracts:{multicall3:{address:`0x236bdA4589e44e6850f5aC6a74BfCa398a86c6c0`,blockCreated:4335972}}}),Mw=L({id:13473,name:`Immutable zkEVM Testnet`,nativeCurrency:{decimals:18,name:`Immutable Coin`,symbol:`IMX`},rpcUrls:{default:{http:[`https://rpc.testnet.immutable.com`]}},blockExplorers:{default:{name:`Immutable Testnet Explorer`,url:`https://explorer.testnet.immutable.com/`}},contracts:{multicall3:{address:`0x2CC787Ed364600B0222361C4188308Fa8E68bA60`,blockCreated:5977391}},testnet:!0}),Nw=L({id:2525,name:`inEVM Mainnet`,nativeCurrency:{decimals:18,name:`Injective`,symbol:`INJ`},rpcUrls:{default:{http:[`https://mainnet.rpc.inevm.com/http`]}},blockExplorers:{default:{name:`inEVM Explorer`,url:`https://inevm.calderaexplorer.xyz`,apiUrl:`https://inevm.calderaexplorer.xyz/api/v2`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:118606}}}),Pw=L({id:7233,name:`InitVerse Mainnet`,nativeCurrency:{decimals:18,name:`InitVerse`,symbol:`INI`},rpcUrls:{default:{http:[`https://rpc-mainnet.inichain.com`]}},blockExplorers:{default:{name:`InitVerseScan`,url:`https://www.iniscan.com`,apiUrl:`https://explorer-api.inichain.com/api`}},contracts:{multicall3:{address:`0x83466BE48A067115FFF91f7b892Ed1726d032e47`,blockCreated:2318}}}),Fw=L({id:7234,name:`InitVerse Genesis Testnet`,nativeCurrency:{decimals:18,name:`InitVerse`,symbol:`INI`},rpcUrls:{default:{http:[`https://rpc-testnet.inichain.com`]}},blockExplorers:{default:{name:`InitVerseGenesisScan`,url:`https://genesis-testnet.iniscan.com`,apiUrl:`https://explorer-testnet-api.inichain.com/api`}},contracts:{multicall3:{address:`0x0cF32CBDd6c437331EA4f85ed2d881A5379B5a6F`,blockCreated:16361}},testnet:!0}),Iw=L({id:1776,name:`Injective`,nativeCurrency:{decimals:18,name:`Injective`,symbol:`INJ`},rpcUrls:{default:{http:[`https://sentry.evm-rpc.injective.network`],webSocket:[`wss://sentry.evm-ws.injective.network`]}},blockExplorers:{default:{name:`Injective Explorer`,url:`https://blockscout.injective.network`,apiUrl:`https://blockscout.injective.network/api`}},testnet:!1}),Lw=L({id:1439,name:`Injective Testnet`,nativeCurrency:{decimals:18,name:`Injective`,symbol:`INJ`},rpcUrls:{default:{http:[`https://k8s.testnet.json-rpc.injective.network`],webSocket:[`wss://k8s.testnet.ws.injective.network`]}},blockExplorers:{default:{name:`Injective Explorer`,url:`https://testnet.blockscout.injective.network`,apiUrl:`https://testnet.blockscout.injective.network/api`}},testnet:!0});var Rw=1;const zw=L({...R,id:57073,name:`Ink`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-gel.inkonchain.com`,`https://rpc-qnd.inkonchain.com`],webSocket:[`wss://rpc-gel.inkonchain.com`,`wss://rpc-qnd.inkonchain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.inkonchain.com`,apiUrl:`https://explorer.inkonchain.com/api/v2`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},...R.contracts,disputeGameFactory:{[Rw]:{address:`0x10d7b35078d3baabb96dd45a9143b94be65b12cd`}},portal:{[Rw]:{address:`0x5d66c1782664115999c47c9fa5cd031f495d3e4f`}},l1StandardBridge:{[Rw]:{address:`0x88ff1e5b602916615391f55854588efcbb7663f0`}}},testnet:!1,sourceId:Rw});var Bw=11155111;const Vw=L({...R,id:763373,name:`Ink Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-gel-sepolia.inkonchain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer-sepolia.inkonchain.com/`,apiUrl:`https://explorer-sepolia.inkonchain.com/api/v2`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},disputeGameFactory:{[Bw]:{address:`0x860e626c700af381133d9f4af31412a2d1db3d5d`}},portal:{[Bw]:{address:`0x5c1d29c6c9c8b0800692acc95d700bcb4966a1d7`}},l1StandardBridge:{[Bw]:{address:`0x33f60714bbd74d62b66d79213c348614de51901c`}}},testnet:!0,sourceId:Bw}),Hw=L({id:8822,name:`IOTA EVM`,network:`iotaevm`,nativeCurrency:{decimals:18,name:`IOTA`,symbol:`IOTA`},rpcUrls:{default:{http:[`https://json-rpc.evm.iotaledger.net`],webSocket:[`wss://ws.json-rpc.evm.iotaledger.net`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.evm.iota.org`,apiUrl:`https://explorer.evm.iota.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:25022}}}),Uw=L({id:1075,name:`IOTA EVM Testnet`,network:`iotaevm-testnet`,nativeCurrency:{decimals:18,name:`IOTA`,symbol:`IOTA`},rpcUrls:{default:{http:[`https://json-rpc.evm.testnet.iotaledger.net`],webSocket:[`wss://ws.json-rpc.evm.testnet.iotaledger.net`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.evm.testnet.iotaledger.net`,apiUrl:`https://explorer.evm.testnet.iotaledger.net/api`}},testnet:!0}),Ww=L({id:4689,name:`IoTeX`,nativeCurrency:{decimals:18,name:`IoTeX`,symbol:`IOTX`},rpcUrls:{default:{http:[`https://babel-api.mainnet.iotex.io`],webSocket:[`wss://babel-api.mainnet.iotex.io`]}},blockExplorers:{default:{name:`IoTeXScan`,url:`https://iotexscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:22163670}}}),Gw=L({id:4690,name:`IoTeX Testnet`,nativeCurrency:{decimals:18,name:`IoTeX`,symbol:`IOTX`},rpcUrls:{default:{http:[`https://babel-api.testnet.iotex.io`],webSocket:[`wss://babel-api.testnet.iotex.io`]}},blockExplorers:{default:{name:`IoTeXScan`,url:`https://testnet.iotexscan.io`}},contracts:{multicall3:{address:`0xb5cecD6894c6f473Ec726A176f1512399A2e355d`,blockCreated:24347592}},testnet:!0}),Kw=L({id:8017,name:`iSunCoin Mainnet`,nativeCurrency:{decimals:18,name:`ISC`,symbol:`ISC`},rpcUrls:{default:{http:[`https://mainnet.isuncoin.com`]}},blockExplorers:{default:{name:`iSunCoin Explorer`,url:`https://baifa.io/app/chains/8017`}}}),qw=L({id:8899,name:`JB Chain`,network:`jbc`,nativeCurrency:{name:`JBC`,symbol:`JBC`,decimals:18},rpcUrls:{default:{http:[`https://rpc-l1.jibchain.net`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp-l1.jibchain.net`,apiUrl:`https://exp-l1.jibchain.net/api`}},contracts:{multicall3:{address:`0xc0C8C486D1466C57Efe13C2bf000d4c56F47CBdC`,blockCreated:2299048}},testnet:!1}),Jw=L({id:88991,name:`Jibchain Testnet`,nativeCurrency:{name:`tJBC`,symbol:`tJBC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.jibchain.net`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp.testnet.jibchain.net`,apiUrl:`https://exp.testnet.jibchain.net/api`}},contracts:{multicall3:{address:`0xa1a858ad9041B4741e620355a3F96B3c78e70ecE`,blockCreated:32848}},testnet:!0}),Yw=L({id:81,name:`Japan Open Chain Mainnet`,nativeCurrency:{decimals:18,name:`Japan Open Chain Token`,symbol:`JOC`},rpcUrls:{default:{http:[`https://rpc-1.japanopenchain.org:8545`,`https://rpc-2.japanopenchain.org:8545`,`https://rpc-3.japanopenchain.org`]}},blockExplorers:{default:{name:`Block Explorer`,url:`https://explorer.japanopenchain.org`}},testnet:!1}),Xw=L({id:10081,name:`Japan Open Chain Testnet`,nativeCurrency:{decimals:18,name:`Japan Open Chain Testnet Token`,symbol:`JOCT`},rpcUrls:{default:{http:[`https://rpc-1.testnet.japanopenchain.org:8545`,`https://rpc-2.testnet.japanopenchain.org:8545`,`https://rpc-3.testnet.japanopenchain.org`]}},blockExplorers:{default:{name:`Testnet Block Explorer`,url:`https://explorer.testnet.japanopenchain.org`}},testnet:!0}),Zw=L({id:5734951,name:`Jovay Mainnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.zan.top/public/jovay-mainnet`]}},blockExplorers:{default:{name:`Jovay Explorer`,url:`https://explorer.jovay.io`}},testnet:!1}),Qw=L({id:2019775,name:`Jovay Sepolia Testnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://api.zan.top/public/jovay-testnet`]}},blockExplorers:{default:{name:`Jovay Testnet Explorer`,url:`https://sepolia-explorer.jovay.io/l2`}},testnet:!0}),$w=L({id:45003,name:`Juneo JUNE-Chain`,nativeCurrency:{decimals:18,name:`JUNE-Chain`,symbol:`JUNE`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/JUNE/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/2`,apiUrl:`https://juneoscan.io/chain/2/api`}}}),eT=L({id:45013,name:`Juneo BCH1-Chain`,nativeCurrency:{decimals:18,name:`Juneo BCH1-Chain`,symbol:`BCH1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/BCH1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/12`,apiUrl:`https://juneoscan.io/chain/12/api`}}}),tT=L({id:45004,name:`Juneo DAI1-Chain`,nativeCurrency:{decimals:18,name:`Juneo DAI1-Chain`,symbol:`DAI1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/DAI1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/5`,apiUrl:`https://juneoscan.io/chain/5/api`}}}),nT=L({id:45010,name:`Juneo DOGE1-Chain`,nativeCurrency:{decimals:18,name:`Juneo DOGE1-Chain`,symbol:`DOGE1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/DOGE1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/10`,apiUrl:`https://juneoscan.io/chain/10/api`}}}),rT=L({id:45011,name:`Juneo EUR1-Chain`,nativeCurrency:{decimals:18,name:`Juneo EUR1-Chain`,symbol:`EUR1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/EUR1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/6`,apiUrl:`https://juneoscan.io/chain/6/api`}}}),iT=L({id:45008,name:`Juneo GLD1-Chain`,nativeCurrency:{decimals:18,name:`Juneo GLD1-Chain`,symbol:`GLD1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/GLD1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/8`,apiUrl:`https://juneoscan.io/chain/8/api`}}}),aT=L({id:45014,name:`Juneo LINK1-Chain`,nativeCurrency:{decimals:18,name:`Juneo LINK1-Chain`,symbol:`LINK1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/LINK1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/13`,apiUrl:`https://juneoscan.io/chain/13/api`}}}),oT=L({id:45009,name:`Juneo LTC1-Chain`,nativeCurrency:{decimals:18,name:`Juneo LTC1-Chain`,symbol:`LTC1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/LTC1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/11`,apiUrl:`https://juneoscan.io/chain/11/api`}}}),sT=L({id:45007,name:`Juneo mBTC1-Chain`,nativeCurrency:{decimals:18,name:`Juneo mBTC1-Chain`,symbol:`mBTC1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/mBTC1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/9`,apiUrl:`https://juneoscan.io/chain/9/api`}}}),cT=L({id:45012,name:`Juneo SGD1-Chain`,nativeCurrency:{decimals:18,name:`Juneo SGD1-Chain`,symbol:`SGD1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/SGD1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/7`,apiUrl:`https://juneoscan.io/chain/7/api`}}}),lT=L({id:101003,name:`Socotra JUNE-Chain`,nativeCurrency:{decimals:18,name:`Socotra JUNE-Chain`,symbol:`JUNE`},rpcUrls:{default:{http:[`https://rpc.socotra-testnet.network/ext/bc/JUNE/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://socotra.juneoscan.io/chain/2`,apiUrl:`https://socotra.juneoscan.io/chain/2/api`}},testnet:!0}),uT=L({id:45006,name:`Juneo USD1-Chain`,nativeCurrency:{decimals:18,name:`Juneo USD1-Chain`,symbol:`USD1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/USD1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/4`,apiUrl:`https://juneoscan.io/chain/4/api`}}}),dT=L({id:45005,name:`Juneo USDT1-Chain`,nativeCurrency:{decimals:18,name:`Juneo USDT1-Chain`,symbol:`USDT1`},rpcUrls:{default:{http:[`https://rpc.juneo-mainnet.network/ext/bc/USDT1/rpc`]}},blockExplorers:{default:{name:`Juneo Scan`,url:`https://juneoscan.io/chain/3`,apiUrl:`https://juneoscan.io/chain/3/api`}}}),fT=L({id:8217,name:`Kaia`,nativeCurrency:{decimals:18,name:`Kaia`,symbol:`KAIA`},rpcUrls:{default:{http:[`https://public-en.node.kaia.io`]}},blockExplorers:{default:{name:`KaiaScan`,url:`https://kaiascan.io`,apiUrl:`https://api-cypress.klaytnscope.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:96002415}}}),pT=L({id:1001,name:`Kairos Testnet`,network:`kairos`,nativeCurrency:{decimals:18,name:`Kairos KAIA`,symbol:`KAIA`},rpcUrls:{default:{http:[`https://public-en-kairos.node.kaia.io`]}},blockExplorers:{default:{name:`KaiaScan`,url:`https://kairos.kaiascan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:123390593}},testnet:!0}),mT=L({id:1802203764,name:`Kakarot Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rpc.kakarot.org`]}},blockExplorers:{default:{name:`Kakarot Scan`,url:`https://sepolia.kakarotscan.org`}},testnet:!0}),hT=L({id:920637907288165,name:`Kakarot Starknet Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rpc.kakarot.org`]}},blockExplorers:{default:{name:`Kakarot Scan`,url:`https://sepolia.kakarotscan.org`}},testnet:!0}),gT=L({id:24,name:`KardiaChain Mainnet`,nativeCurrency:{name:`KAI`,symbol:`KAI`,decimals:18},rpcUrls:{default:{http:[`https://rpc.kardiachain.io`]}},blockExplorers:{default:{name:`KardiaChain Explorer`,url:`https://explorer.kardiachain.io`}},testnet:!1}),_T=L({id:686,name:`Karura`,network:`karura`,nativeCurrency:{name:`Karura`,symbol:`KAR`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-karura.aca-api.network`],webSocket:[`wss://eth-rpc-karura.aca-api.network`]}},blockExplorers:{default:{name:`Karura Blockscout`,url:`https://blockscout.karura.network`,apiUrl:`https://blockscout.karura.network/api`}},testnet:!1}),vT=L({id:747474,name:`Katana`,network:`katana`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.katana.network`]}},blockExplorers:{default:{name:`katana explorer`,url:`https://explorer.katanarpc.com`}},testnet:!1}),yT=L({id:2222,name:`Kava EVM`,network:`kava-mainnet`,nativeCurrency:{name:`Kava`,symbol:`KAVA`,decimals:18},rpcUrls:{default:{http:[`https://evm.kava.io`]}},blockExplorers:{default:{name:`Kava EVM Explorer`,url:`https://kavascan.com`,apiUrl:`https://kavascan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3661165}},testnet:!1}),bT=L({id:2221,name:`Kava EVM Testnet`,network:`kava-testnet`,nativeCurrency:{name:`Kava`,symbol:`KAVA`,decimals:18},rpcUrls:{default:{http:[`https://evm.testnet.kava.io`]}},blockExplorers:{default:{name:`Kava EVM Testnet Explorer`,url:`https://testnet.kavascan.com/`,apiUrl:`https://testnet.kavascan.com/api`}},contracts:{multicall3:{address:`0xDf1D724A7166261eEB015418fe8c7679BBEa7fd6`,blockCreated:7242179}},testnet:!0}),xT=L({id:321,name:`KCC Mainnet`,network:`KCC Mainnet`,nativeCurrency:{decimals:18,name:`KCS`,symbol:`KCS`},rpcUrls:{default:{http:[`https://kcc-rpc.com`]}},blockExplorers:{default:{name:`KCC Explorer`,url:`https://explorer.kcc.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:11760430}},testnet:!1}),ST=L({id:1336,name:`Kii Testnet Oro`,network:`kii-testnet-oro`,nativeCurrency:{name:`Kii`,symbol:`KII`,decimals:18},rpcUrls:{default:{http:[`https://json-rpc.uno.sentry.testnet.v3.kiivalidator.com`]}},blockExplorers:{default:{name:`KiiExplorer`,url:`https://explorer.kiichain.io/testnet`}},testnet:!0}),CT=L({id:7887,name:`Kinto Mainnet`,network:`Kinto Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.kinto.xyz/http`]}},blockExplorers:{default:{name:`Kinto Explorer`,url:`https://explorer.kinto.xyz`}},testnet:!1}),wT=L({id:8217,name:`Klaytn`,nativeCurrency:{decimals:18,name:`Klaytn`,symbol:`KLAY`},rpcUrls:{default:{http:[`https://public-en-cypress.klaytn.net`]}},blockExplorers:{default:{name:`KlaytnScope`,url:`https://scope.klaytn.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:96002415}}}),TT=L({id:1001,name:`Klaytn Baobab Testnet`,network:`klaytn-baobab`,nativeCurrency:{decimals:18,name:`Baobab Klaytn`,symbol:`KLAY`},rpcUrls:{default:{http:[`https://public-en-baobab.klaytn.net`]}},blockExplorers:{default:{name:`KlaytnScope`,url:`https://baobab.klaytnscope.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:123390593}},testnet:!0}),ET=L({id:701,name:`Koi Network`,nativeCurrency:{decimals:18,name:`Koi Network Native Token`,symbol:`KRING`},rpcUrls:{default:{http:[`https://koi-rpc.darwinia.network`],webSocket:[`wss://koi-rpc.darwinia.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://koi-scan.darwinia.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:180001}},testnet:!0}),DT=L({id:255,name:`Kroma`,nativeCurrency:{name:`ETH`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://api.kroma.network`]}},blockExplorers:{default:{name:`Kroma Explorer`,url:`https://blockscout.kroma.network`,apiUrl:`https://blockscout.kroma.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:16054868}},testnet:!1}),OT=L({id:2358,name:`Kroma Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://api.sepolia.kroma.network`]}},blockExplorers:{default:{name:`Kroma Sepolia Explorer`,url:`https://blockscout.sepolia.kroma.network`,apiUrl:`https://blockscout.sepolia.kroma.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:8900914}},testnet:!0}),kT=L({id:12324,name:`L3X Protocol`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.l3x.com`],webSocket:[`wss://rpc-mainnet.l3x.com`]}},blockExplorers:{default:{name:`L3X Mainnet Explorer`,url:`https://explorer.l3x.com`,apiUrl:`https://explorer.l3x.com/api/v2`}},testnet:!1}),AT=L({id:12325,name:`L3X Protocol Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.l3x.com`],webSocket:[`wss://rpc-testnet.l3x.com`]}},blockExplorers:{default:{name:`L3X Testnet Explorer`,url:`https://explorer-testnet.l3x.com`,apiUrl:`https://explorer-testnet.l3x.com/api/v2`}},testnet:!0}),jT=L({id:360890,name:`LAVITA Mainnet`,nativeCurrency:{name:`vTFUEL`,symbol:`vTFUEL`,decimals:18},rpcUrls:{default:{http:[`https://tsub360890-eth-rpc.thetatoken.org/rpc`]}},blockExplorers:{default:{name:`LAVITA Explorer`,url:`https://tsub360890-explorer.thetatoken.org`}},testnet:!1}),MT=L({id:232,name:`Lens`,nativeCurrency:{name:`GHO`,symbol:`GHO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.lens.xyz`]}},blockExplorers:{default:{name:`Lens Block Explorer`,url:`https://explorer.lens.xyz`,apiUrl:`https://explorer.lens.xyz/api`}}}),NT=L({id:37111,name:`Lens Testnet`,nativeCurrency:{name:`GRASS`,symbol:`GRASS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.lens.dev`],webSocket:[`wss://rpc.testnet.lens.dev/ws`]}},blockExplorers:{default:{name:`Lens Block Explorer`,url:`https://block-explorer.testnet.lens.dev`,apiUrl:`https://block-explorer-api.staging.lens.dev/api`}},testnet:!0}),PT=L({id:21363,name:`Lestnet`,nativeCurrency:{name:`Lestnet Ether`,symbol:`LETH`,decimals:18},rpcUrls:{default:{http:[`https://service.lestnet.org`]}},blockExplorers:{default:{name:`Lestnet Explorer`,url:`https://explore.lestnet.org`}},testnet:!0}),FT=L({id:1891,name:`LightLink Pegasus Testnet`,network:`lightlink-pegasus`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://replicator.pegasus.lightlink.io/rpc/v1`]}},blockExplorers:{default:{name:`LightLink Pegasus Explorer`,url:`https://pegasus.lightlink.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:127188532}},testnet:!0}),IT=L({id:1890,name:`LightLink Phoenix Mainnet`,network:`lightlink-phoenix`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://replicator.phoenix.lightlink.io/rpc/v1`]}},blockExplorers:{default:{name:`LightLink Phoenix Explorer`,url:`https://phoenix.lightlink.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:125499184}},testnet:!1});ra(),A(),Fp(),Lu(),Wu(),$u();async function LT(e,t){let{account:n=e.account}=t;if(!n)throw new Om;let r=na(n);try{let{accessList:n,blockNumber:i,blockTag:a,data:o,gas:s,gasPrice:c,maxFeePerGas:l,maxPriorityFeePerGas:u,nonce:d,to:f,value:p,...m}=t,h=(typeof i==`bigint`?k(i):void 0)||a;Qu(t);let g=e.chain?.formatters?.transactionRequest?.format,_=(g||Bu)({...Iu(m,{format:g}),from:r?.address,accessList:n,data:o,gas:s,gasPrice:c,maxFeePerGas:l,maxPriorityFeePerGas:u,nonce:d,to:f,value:p},`estimateGas`),{baseFeePerGas:v,gasLimit:y,priorityFeePerGas:b}=await e.request({method:`linea_estimateGas`,params:h?[_,h]:[_]});return{baseFeePerGas:BigInt(v),gasLimit:BigInt(y),priorityFeePerGas:BigInt(b)}}catch(n){throw Pp(n,{...t,account:r,chain:e.chain})}}const RT={fees:{estimateFeesPerGas:zT,async maxPriorityFeePerGas({block:e,client:t,request:n}){let r=await zT({block:e,client:t,multiply:e=>e,request:n,type:`eip1559`});return r?.maxPriorityFeePerGas?r.maxPriorityFeePerGas:null}}};async function zT({client:e,multiply:t,request:n,type:r}){try{let i=await LT(e,{...n,account:n?.account}),{priorityFeePerGas:a}=i,o=t(BigInt(i.baseFeePerGas))+a;return r===`legacy`?{gasPrice:o}:{maxFeePerGas:o,maxPriorityFeePerGas:a}}catch{return null}}const BT=L({...RT,id:59144,name:`Linea Mainnet`,blockTime:2e3,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.linea.build`],webSocket:[`wss://rpc.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://lineascan.build`,apiUrl:`https://api.lineascan.build/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:42},ensRegistry:{address:`0x50130b669B28C339991d8676FA73CF122a121267`,blockCreated:6682888},ensUniversalResolver:{address:`0x4D41762915F83c76EcaF6776d9b08076aA32b492`,blockCreated:22222151}},ensTlds:[`.linea.eth`],testnet:!1}),VT=L({id:59140,name:`Linea Goerli Testnet`,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.goerli.linea.build`],webSocket:[`wss://rpc.goerli.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli.lineascan.build`,apiUrl:`https://api-goerli.lineascan.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:498623}},testnet:!0}),HT=L({...RT,id:59141,name:`Linea Sepolia Testnet`,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.sepolia.linea.build`],webSocket:[`wss://rpc.sepolia.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia.lineascan.build`,apiUrl:`https://api-sepolia.lineascan.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:227427},ensRegistry:{address:`0x5B2636F0f2137B4aE722C01dd5122D7d3e9541f7`,blockCreated:2395094},ensUniversalResolver:{address:`0x4D41762915F83c76EcaF6776d9b08076aA32b492`,blockCreated:17168484}},ensTlds:[`.linea.eth`],testnet:!0}),UT=L({id:59140,name:`Linea Goerli Testnet`,nativeCurrency:{name:`Linea Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.goerli.linea.build`],webSocket:[`wss://rpc.goerli.linea.build`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli.lineascan.build`,apiUrl:`https://goerli.lineascan.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:498623}},testnet:!0});var WT=1;const GT=L({...R,id:1135,name:`Lisk`,network:`lisk`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.api.lisk.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://blockscout.lisk.com`,apiUrl:`https://blockscout.lisk.com/api`}},contracts:{...R.contracts,multicall3:{address:`0xA9d71E1dd7ca26F26e656E66d6AA81ed7f745bf0`},l2OutputOracle:{[WT]:{address:`0x113cB99283AF242Da0A0C54347667edF531Aa7d6`}},portal:{[WT]:{address:`0x26dB93F8b8b4f7016240af62F7730979d353f9A7`}},l1StandardBridge:{[WT]:{address:`0x2658723Bf70c7667De6B25F99fcce13A16D25d08`}}},sourceId:WT});var KT=11155111;const qT=L({...R,id:4202,network:`lisk-sepolia`,name:`Lisk Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.sepolia-api.lisk.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia-blockscout.lisk.com`,apiUrl:`https://sepolia-blockscout.lisk.com/api`}},contracts:{...R.contracts,l2OutputOracle:{[KT]:{address:`0xA0E35F56C318DE1bD5D9ca6A94Fe7e37C5663348`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[KT]:{address:`0xe3d90F21490686Ec7eF37BE788E02dfC12787264`}},l1StandardBridge:{[KT]:{address:`0x1Fb30e446eA791cd1f011675E5F3f5311b70faF5`}}},testnet:!0,sourceId:KT}),JT=L({id:9496,name:`Load Alphanet`,nativeCurrency:{name:`Testnet LOAD`,symbol:`tLOAD`,decimals:18},rpcUrls:{default:{http:[`https://alphanet.load.network`]}},blockExplorers:{default:{name:`Load Alphanet Explorer`,url:`https://explorer.load.network`}},testnet:!0}),YT=L({id:1337,name:`Localhost`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`http://127.0.0.1:8545`]}}}),XT=L({id:15551,name:`LoopNetwork Mainnet`,nativeCurrency:{name:`LOOP`,symbol:`LOOP`,decimals:18},rpcUrls:{default:{http:[`https://api.mainnetloop.com`]}},blockExplorers:{default:{name:`LoopNetwork Blockchain Explorer`,url:`https://explorer.mainnetloop.com/`}},testnet:!1}),ZT=L({id:42,network:`lukso`,name:`LUKSO`,nativeCurrency:{name:`LUKSO`,symbol:`LYX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.lukso.network`],webSocket:[`wss://ws-rpc.mainnet.lukso.network`]}},blockExplorers:{default:{name:`LUKSO Mainnet Explorer`,url:`https://explorer.execution.mainnet.lukso.network`,apiUrl:`https://api.explorer.execution.mainnet.lukso.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:468183}}}),QT=L({id:4201,name:`LUKSO Testnet`,nativeCurrency:{decimals:18,name:`LUKSO Testnet`,symbol:`LYXt`},rpcUrls:{default:{http:[`https://rpc.testnet.lukso.network`],webSocket:[`wss://ws-rpc.testnet.lukso.network`]}},blockExplorers:{default:{name:`LUKSO Testnet Explorer`,url:`https://explorer.execution.testnet.lukso.network`,apiUrl:`https://api.explorer.execution.testnet.lukso.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:605348}},testnet:!0}),$T=L({id:994873017,name:`Lumia Mainnet`,network:`LumiaMainnet`,nativeCurrency:{name:`Lumia`,symbol:`LUMIA`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.lumia.org`]}},blockExplorers:{default:{name:`Lumia Explorer`,url:`https://explorer.lumia.org/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3975939}},testnet:!1}),eE=L({id:1952959480,name:`Lumia Testnet`,network:`LumiaTestnet`,nativeCurrency:{name:`Lumia`,symbol:`LUMIA`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.lumia.org`]}},blockExplorers:{default:{name:`Lumia Testnet Explorer`,url:`https://testnet-explorer.lumia.org/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2235063}},testnet:!0}),tE=L({id:96370,name:`Lumoz`,nativeCurrency:{decimals:18,name:`Lumoz Token`,symbol:`MOZ`},rpcUrls:{default:{http:[`https://rpc.lumoz.org`]}},blockExplorers:{default:{name:`Lumoz Scan`,url:`https://scan.lumoz.info`}},testnet:!1}),nE=L({id:105363,name:`Lumoz Testnet`,nativeCurrency:{decimals:18,name:`Lumoz Testnet Token`,symbol:`MOZ`},rpcUrls:{default:{http:[`https://testnet-rpc.lumoz.org`]}},testnet:!0}),rE=L({id:721,name:`Lycan`,nativeCurrency:{decimals:18,name:`Lycan`,symbol:`LYC`},rpcUrls:{default:{http:[`https://rpc.lycanchain.com`,`https://us-east.lycanchain.com`,`https://us-west.lycanchain.com`,`https://eu-north.lycanchain.com`,`https://eu-west.lycanchain.com`,`https://asia-southeast.lycanchain.com`],webSocket:[`wss://rpc.lycanchain.com`,`wss://us-east.lycanchain.com`,`wss://us-west.lycanchain.com`,`wss://eu-north.lycanchain.com`,`wss://eu-west.lycanchain.com`,`wss://asia-southeast.lycanchain.com`]}},blockExplorers:{default:{name:`Lycan Explorer`,url:`https://explorer.lycanchain.com`}}}),iE=L({id:957,name:`Lyra Chain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.lyra.finance`]}},blockExplorers:{default:{name:`Lyra Explorer`,url:`https://explorer.lyra.finance`,apiUrl:`https://explorer.lyra.finance/api/v2`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1935198}}}),aE=L({id:1,name:`Ethereum`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:12e3,rpcUrls:{default:{http:[`https://eth.merkle.io`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://etherscan.io`,apiUrl:`https://api.etherscan.io/api`}},contracts:{ensUniversalResolver:{address:`0xeeeeeeee14d718c2b47d9923deab1335e144eeee`,blockCreated:23085558},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14353601}}}),oE=L({id:595,name:`Mandala TC9`,network:`mandala`,nativeCurrency:{name:`Mandala`,symbol:`mACA`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-tc9.aca-staging.network`],webSocket:[`wss://eth-rpc-tc9.aca-staging.network`]}},blockExplorers:{default:{name:`Mandala Blockscout`,url:`https://blockscout.mandala.aca-staging.network`,apiUrl:`https://blockscout.mandala.aca-staging.network/api`}},testnet:!0}),sE=L({id:169,name:`Manta Pacific Mainnet`,network:`manta`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://pacific-rpc.manta.network/http`]}},blockExplorers:{default:{name:`Manta Explorer`,url:`https://pacific-explorer.manta.network`,apiUrl:`https://pacific-explorer.manta.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:332890}}}),cE=L({id:3441006,name:`Manta Pacific Sepolia Testnet`,network:`manta-sepolia`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://pacific-rpc.sepolia-testnet.manta.network/http`]}},blockExplorers:{default:{name:`Manta Sepolia Testnet Explorer`,url:`https://pacific-explorer.sepolia-testnet.manta.network`,apiUrl:`https://pacific-explorer.sepolia-testnet.manta.network/api`}},contracts:{multicall3:{address:`0xca54918f7B525C8df894668846506767412b53E3`,blockCreated:479584}},testnet:!0}),lE=L({id:3441005,name:`Manta Pacific Testnet`,network:`manta-testnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://manta-testnet.calderachain.xyz/http`]}},blockExplorers:{default:{name:`Manta Testnet Explorer`,url:`https://pacific-explorer.testnet.manta.network`,apiUrl:`https://pacific-explorer.testnet.manta.network/api`}},contracts:{multicall3:{address:`0x211B1643b95Fe76f11eD8880EE810ABD9A4cf56C`,blockCreated:419915}},testnet:!0}),uE=L({id:5e3,name:`Mantle`,nativeCurrency:{decimals:18,name:`MNT`,symbol:`MNT`},rpcUrls:{default:{http:[`https://rpc.mantle.xyz`]}},blockExplorers:{default:{name:`Mantle Explorer`,url:`https://mantlescan.xyz/`,apiUrl:`https://api.mantlescan.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:304717}}}),dE=L({id:5003,name:`Mantle Sepolia Testnet`,nativeCurrency:{decimals:18,name:`MNT`,symbol:`MNT`},rpcUrls:{default:{http:[`https://rpc.sepolia.mantle.xyz`]}},blockExplorers:{default:{name:`Mantle Testnet Explorer`,url:`https://explorer.sepolia.mantle.xyz/`,apiUrl:`https://explorer.sepolia.mantle.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4584012}},testnet:!0}),fE=L({id:5001,name:`Mantle Testnet`,nativeCurrency:{decimals:18,name:`MNT`,symbol:`MNT`},rpcUrls:{default:{http:[`https://rpc.testnet.mantle.xyz`]}},blockExplorers:{default:{name:`Mantle Testnet Explorer`,url:`https://explorer.testnet.mantle.xyz`,apiUrl:`https://explorer.testnet.mantle.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:561333}},testnet:!0}),pE=L({id:5887,name:`MANTRA DuKong EVM Testnet`,nativeCurrency:{decimals:18,name:`OM`,symbol:`OM`},rpcUrls:{default:{http:[`https://evm.dukong.mantrachain.io`]}},blockExplorers:{default:{name:`MANTRAScan`,url:`https://mantrascan.io/dukong`}},testnet:!0}),mE=L({id:5888,name:`MANTRA EVM`,nativeCurrency:{decimals:18,name:`OM`,symbol:`OM`},rpcUrls:{default:{http:[`https://evm.mantrachain.io`],webSocket:[`https://evm.mantrachain.io/ws`]}},blockExplorers:{default:{name:`MANTRA Scan`,url:`https://mantrascan.io/mainnet`}}}),hE=L({id:22776,name:`MAP Protocol`,nativeCurrency:{decimals:18,name:`MAPO`,symbol:`MAPO`},rpcUrls:{default:{http:[`https://rpc.maplabs.io`]}},blockExplorers:{default:{name:`MAPO Scan`,url:`https://maposcan.io`}},testnet:!1}),gE=L({id:698,name:`Matchain`,nativeCurrency:{name:`BNB`,symbol:`BNB`,decimals:18},rpcUrls:{default:{http:[`https://rpc.matchain.io`]}},blockExplorers:{default:{name:`Matchain Scan`,url:`https://matchscan.io`}}}),_E=L({id:699,name:`Matchain Testnet`,nativeCurrency:{name:`BNB`,symbol:`BNB`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.matchain.io`]}},blockExplorers:{default:{name:`Matchain Scan`,url:`https://testnet.matchscan.io`}},testnet:!0}),vE=L({id:29548,name:`MCH Verse`,nativeCurrency:{name:`Oasys`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.oasys.mycryptoheroes.net`]}},blockExplorers:{default:{name:`MCH Verse Explorer`,url:`https://explorer.oasys.mycryptoheroes.net`,apiUrl:`https://explorer.oasys.mycryptoheroes.net/api`}},testnet:!1}),yE=L({id:6342,blockTime:1e3,name:`MegaETH Testnet`,nativeCurrency:{name:`MegaETH Testnet Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://carrot.megaeth.com/rpc`],webSocket:[`wss://carrot.megaeth.com/ws`]}},blockExplorers:{default:{name:`MegaETH Testnet Explorer`,url:`https://www.megaexplorer.xyz/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},testnet:!0}),bE=L({id:7078815900,name:`Mekong Pectra Devnet`,nativeCurrency:{name:`eth`,symbol:`eth`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mekong.ethpandaops.io`]}},blockExplorers:{default:{name:`Block Explorer`,url:`https://explorer.mekong.ethpandaops.io`}},testnet:!0}),xE=L({id:333000333,name:`Meld`,nativeCurrency:{decimals:18,name:`Meld`,symbol:`MELD`},rpcUrls:{default:{http:[`https://rpc-1.meld.com`]}},blockExplorers:{default:{name:`MELDscan`,url:`https://meldscan.io`}},contracts:{multicall3:{address:`0x769ee5a8e82c15c1b6e358f62ac8eb6e3abe8dc5`,blockCreated:360069}}}),SE=L({id:4352,name:`MemeCore`,nativeCurrency:{decimals:18,name:`M`,symbol:`M`},rpcUrls:{default:{http:[`https://rpc.memecore.net`],webSocket:[`wss://ws.memecore.net`]}},blockExplorers:{default:{name:`MemeCore Explorer`,url:`https://memecorescan.io`,apiUrl:`https://api.memecorescan.io/api`},okx:{name:`MemeCore Explorer`,url:`https://web3.okx.com/explorer/memecore`},memecore:{name:`MemeCore Explorer`,url:`https://blockscout.memecore.com`,apiUrl:`https://blockscout.memecore.com/api`}}}),CE=L({id:43521,name:`Formicarium`,nativeCurrency:{decimals:18,name:`M`,symbol:`M`},rpcUrls:{default:{http:[`https://rpc.formicarium.memecore.net`],webSocket:[`wss://ws.formicarium.memecore.net`]}},blockExplorers:{default:{name:`MemeCore Testnet Explorer`,url:`https://formicarium.memecorescan.io`},okx:{name:`MemeCore Testnet Explorer`,url:`https://web3.okx.com/explorer/formicarium-testnet`},memecore:{name:`MemeCore Testnet Explorer`,url:`https://formicarium.blockscout.memecore.com`,apiUrl:`https://formicarium.blockscout.memecore.com/api`}},testnet:!0}),wE=L({id:4200,name:`Merlin`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.merlinchain.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://scan.merlinchain.io`,apiUrl:`https://scan.merlinchain.io/api`}}}),TE=L({id:4203,name:`Merlin Erigon Testnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://testnet-erigon-rpc.merlinchain.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://testnet-erigon-scan.merlinchain.io`,apiUrl:`https://testnet-erigon-scan.merlinchain.io/api`}},testnet:!0}),EE=L({id:571,name:`MetaChain Mainnet`,nativeCurrency:{name:`Metatime Coin`,symbol:`MTC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.metatime.com`]}},blockExplorers:{default:{name:`MetaExplorer`,url:`https://explorer.metatime.com`}},contracts:{multicall3:{address:`0x0000000000000000000000000000000000003001`,blockCreated:0}}}),DE=L({id:1453,name:`MetaChain Istanbul`,nativeCurrency:{name:`Metatime Coin`,symbol:`MTC`,decimals:18},rpcUrls:{default:{http:[`https://istanbul-rpc.metachain.dev`]}},blockExplorers:{default:{name:`MetaExplorer`,url:`https://istanbul-explorer.metachain.dev`}},contracts:{multicall3:{address:`0x0000000000000000000000000000000000003001`,blockCreated:0}},testnet:!0}),OE=L({id:11,name:`Metadium Network`,nativeCurrency:{decimals:18,name:`META`,symbol:`META`},rpcUrls:{default:{http:[`https://api.metadium.com/prod`]}},blockExplorers:{default:{name:`Metadium Explorer`,url:`https://explorer.metadium.com`}},testnet:!1});var kE=1;const AE=L({...R,id:1750,name:`Metal L2`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.metall2.com`],webSocket:[`wss://rpc.metall2.com`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.metall2.com`,apiUrl:`https://explorer.metall2.com/api`}},contracts:{...R.contracts,l2OutputOracle:{[kE]:{address:`0x3B1F7aDa0Fcc26B13515af752Dd07fB1CAc11426`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0},portal:{[kE]:{address:`0x3F37aBdE2C6b5B2ed6F8045787Df1ED1E3753956`}},l1StandardBridge:{[kE]:{address:`0x6d0f65D59b55B0FEC5d2d15365154DcADC140BF3`}}},sourceId:kE}),jE=L({id:82,name:`Meter`,nativeCurrency:{decimals:18,name:`MTR`,symbol:`MTR`},rpcUrls:{default:{http:[`https://rpc.meter.io`]}},blockExplorers:{default:{name:`MeterScan`,url:`https://scan.meter.io`}}}),ME=L({id:83,name:`Meter Testnet`,nativeCurrency:{decimals:18,name:`MTR`,symbol:`MTR`},rpcUrls:{default:{http:[`https://rpctest.meter.io`]}},blockExplorers:{default:{name:`MeterTestnetScan`,url:`https://scan-warringstakes.meter.io`}}}),NE=L({id:1088,name:`Metis`,nativeCurrency:{decimals:18,name:`Metis`,symbol:`METIS`},rpcUrls:{default:{http:[`https://metis.rpc.hypersync.xyz`,`https://metis-pokt.nodies.app`,`https://api.blockeden.xyz/metis/67nCBdZQSH9z3YqDDjdm`,`https://metis-andromeda.rpc.thirdweb.com`,`https://metis-andromeda.gateway.tenderly.co`,`https://metis.api.onfinality.io/public`,`https://andromeda.metis.io/?owner=1088`,`https://metis-mainnet.public.blastapi.io`],webSocket:[`wss://metis-rpc.publicnode.com`,`wss://metis.drpc.org`]}},blockExplorers:{default:{name:`Metis Explorer`,url:`https://explorer.metis.io`,apiUrl:`https://api.routescan.io/v2/network/mainnet/evm/1088/etherscan/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2338552}}}),PE=L({id:599,name:`Metis Goerli`,nativeCurrency:{decimals:18,name:`Metis Goerli`,symbol:`METIS`},rpcUrls:{default:{http:[`https://goerli.gateway.metisdevops.link`]}},blockExplorers:{default:{name:`Metis Goerli Explorer`,url:`https://goerli.explorer.metisdevops.link`,apiUrl:`https://goerli.explorer.metisdevops.link/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1006207}}}),FE=L({id:59902,name:`Metis Sepolia`,nativeCurrency:{decimals:18,name:`Test Metis`,symbol:`tMETIS`},rpcUrls:{default:{http:[`https://sepolia.metisdevops.link`,`https://metis-sepolia-rpc.publicnode.com`,`https://metis-sepolia.gateway.tenderly.co`],webSocket:[`wss://metis-sepolia-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Metis Sepolia Explorer`,url:`https://sepolia-explorer.metisdevops.link`,apiUrl:`https://sepolia-explorer.metisdevops.link/api-docs`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:224185}}}),IE=L({id:7518,name:`MEVerse Chain Mainnet`,nativeCurrency:{decimals:18,name:`MEVerse`,symbol:`MEV`},rpcUrls:{default:{http:[`https://rpc.meversemainnet.io`]}},blockExplorers:{default:{name:`Explorer`,url:`https://www.meversescan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:86881340}}}),LE=L({id:4759,name:`MEVerse Chain Testnet`,nativeCurrency:{decimals:18,name:`MEVerse`,symbol:`MEV`},rpcUrls:{default:{http:[`https://rpc.meversetestnet.io`]}},blockExplorers:{default:{name:`Explorer`,url:`https://testnet.meversescan.io/`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:64371115}},testnet:!0}),RE=L({id:185,name:`Mint Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mintchain.io`]}},blockExplorers:{default:{name:`Mintchain explorer`,url:`https://explorer.mintchain.io`}},testnet:!1}),zE=L({id:1686,name:`Mint Sepolia Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.mintchain.io`]}},blockExplorers:{default:{name:`Mintchain Testnet explorer`,url:`https://testnet-explorer.mintchain.io`}},testnet:!0}),BE=L({id:124832,name:`Mitosis Testnet`,nativeCurrency:{name:`MITO`,symbol:`MITO`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.mitosis.org`]}},blockExplorers:{default:{name:`Mitosis testnet explorer`,url:`https://testnet.mitosiscan.xyz`}},testnet:!0});var VE=1;const HE=L({...R,id:34443,name:`Mode Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.mode.network`]}},blockExplorers:{default:{name:`Modescan`,url:`https://modescan.io`}},contracts:{...R.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:2465882},l2OutputOracle:{[VE]:{address:`0x4317ba146D4933D889518a3e5E11Fe7a53199b04`}},portal:{[VE]:{address:`0x8B34b14c7c7123459Cf3076b8Cb929BE097d0C07`}},l1StandardBridge:{[VE]:{address:`0x735aDBbE72226BD52e818E7181953f42E3b0FF21`}}},sourceId:VE});var UE=11155111;const WE=L({...R,id:919,name:`Mode Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.mode.network`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepolia.explorer.mode.network`,apiUrl:`https://sepolia.explorer.mode.network/api`}},contracts:{...R.contracts,l2OutputOracle:{[UE]:{address:`0x2634BD65ba27AB63811c74A63118ACb312701Bfa`,blockCreated:3778393}},portal:{[UE]:{address:`0x320e1580effF37E008F1C92700d1eBa47c1B23fD`,blockCreated:3778395}},l1StandardBridge:{[UE]:{address:`0xbC5C679879B2965296756CD959C3C739769995E2`,blockCreated:3778392}},multicall3:{address:`0xBAba8373113Fb7a68f195deF18732e01aF8eDfCF`,blockCreated:3019007}},testnet:!0,sourceId:UE}),GE=L({id:10143,name:`Monad Testnet`,blockTime:400,nativeCurrency:{name:`Testnet MON Token`,symbol:`MON`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.monad.xyz`]}},blockExplorers:{default:{name:`Monad Testnet explorer`,url:`https://testnet.monadexplorer.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:251449}},testnet:!0}),KE=L({id:1287,name:`Moonbase Alpha`,nativeCurrency:{decimals:18,name:`DEV`,symbol:`DEV`},rpcUrls:{default:{http:[`https://rpc.api.moonbase.moonbeam.network`],webSocket:[`wss://wss.api.moonbase.moonbeam.network`]}},blockExplorers:{default:{name:`Moonscan`,url:`https://moonbase.moonscan.io`,apiUrl:`https://moonbase.moonscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1850686}},testnet:!0}),qE=L({id:1284,name:`Moonbeam`,nativeCurrency:{decimals:18,name:`GLMR`,symbol:`GLMR`},rpcUrls:{default:{http:[`https://moonbeam.public.blastapi.io`],webSocket:[`wss://moonbeam.public.blastapi.io`]}},blockExplorers:{default:{name:`Moonscan`,url:`https://moonscan.io`,apiUrl:`https://api-moonbeam.moonscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:609002}},testnet:!1}),JE=L({id:1281,name:`Moonbeam Development Node`,nativeCurrency:{decimals:18,name:`DEV`,symbol:`DEV`},rpcUrls:{default:{http:[`http://127.0.0.1:9944`],webSocket:[`wss://127.0.0.1:9944`]}}}),YE=L({id:1285,name:`Moonriver`,nativeCurrency:{decimals:18,name:`MOVR`,symbol:`MOVR`},rpcUrls:{default:{http:[`https://moonriver.public.blastapi.io`],webSocket:[`wss://moonriver.public.blastapi.io`]}},blockExplorers:{default:{name:`Moonscan`,url:`https://moonriver.moonscan.io`,apiUrl:`https://api-moonriver.moonscan.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1597904}},testnet:!1}),XE=L({id:2818,name:`Morph`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.morphl2.io`],webSocket:[`wss://rpc.morphl2.io:8443`]}},blockExplorers:{default:{name:`Morph Explorer`,url:`https://explorer.morphl2.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3654913}},testnet:!1}),ZE=L({id:2810,name:`Morph Holesky`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-quicknode-holesky.morphl2.io`],webSocket:[`wss://rpc-quicknode-holesky.morphl2.io`]}},blockExplorers:{default:{name:`Morph Holesky Explorer`,url:`https://explorer-holesky.morphl2.io`,apiUrl:`https://explorer-api-holesky.morphl2.io/api?`}},testnet:!0}),QE=L({id:2710,name:`Morph Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.morphl2.io`]}},blockExplorers:{default:{name:`Morph Testnet Explorer`,url:`https://explorer-testnet.morphl2.io`,apiUrl:`https://explorer-api-testnet.morphl2.io/api`}},testnet:!0}),$E=L({id:5551,name:`Nahmii 2 Mainnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://l2.nahmii.io`]}},blockExplorers:{default:{name:`Nahmii 2 Explorer`,url:`https://explorer.n2.nahmii.io`}},testnet:!1}),eD=L({id:22222,name:`Nautilus Mainnet`,nativeCurrency:{name:`ZBC`,symbol:`ZBC`,decimals:9},rpcUrls:{default:{http:[`https://api.nautilus.nautchain.xyz`]}},blockExplorers:{default:{name:`NautScan`,url:`https://nautscan.com`}}}),tD=L({id:397,name:`NEAR Protocol`,nativeCurrency:{decimals:18,name:`NEAR`,symbol:`NEAR`},rpcUrls:{default:{http:[`https://eth-rpc.mainnet.near.org`]}},blockExplorers:{default:{name:`NEAR Explorer`,url:`https://eth-explorer.near.org`}},testnet:!1}),nD=L({id:398,name:`NEAR Protocol Testnet`,nativeCurrency:{decimals:18,name:`NEAR`,symbol:`NEAR`},rpcUrls:{default:{http:[`https://eth-rpc.testnet.near.org`]}},blockExplorers:{default:{name:`NEAR Explorer`,url:`https://eth-explorer-testnet.near.org`}},testnet:!0}),rD=L({id:245022926,name:`Neon EVM DevNet`,nativeCurrency:{name:`NEON`,symbol:`NEON`,decimals:18},rpcUrls:{default:{http:[`https://devnet.neonevm.org`]}},blockExplorers:{default:{name:`Neonscan`,url:`https://devnet.neonscan.org`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:205206112}},testnet:!0}),iD=L({id:245022934,network:`neonMainnet`,name:`Neon EVM MainNet`,nativeCurrency:{name:`NEON`,symbol:`NEON`,decimals:18},rpcUrls:{default:{http:[`https://neon-proxy-mainnet.solana.p2p.org`]}},blockExplorers:{default:{name:`Neonscan`,url:`https://neonscan.org`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:206545524}},testnet:!1}),aD=L({id:47763,name:`Neo X Mainnet`,nativeCurrency:{name:`Gas`,symbol:`GAS`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-1.rpc.banelabs.org`,`https://mainnet-2.rpc.banelabs.org`]}},blockExplorers:{default:{name:`Neo X - Explorer`,url:`https://xexplorer.neo.org`}},testnet:!1}),oD=L({id:12227332,name:`Neo X Testnet T4`,nativeCurrency:{name:`Gas`,symbol:`GAS`,decimals:18},rpcUrls:{default:{http:[`https://testnet.rpc.banelabs.org/`]}},blockExplorers:{default:{name:`neox-scan`,url:`https://xt4scan.ngd.network`}},testnet:!0}),sD=L({id:1012,name:`Newton`,nativeCurrency:{name:`Newton`,symbol:`NEW`,decimals:18},rpcUrls:{default:{http:[`https://global.rpc.mainnet.newtonproject.org`]}},blockExplorers:{default:{name:`NewFi explorer`,url:`https://explorer.newtonproject.org/`}},testnet:!1}),cD=L({id:4242,name:`Nexi`,nativeCurrency:{name:`Nexi`,symbol:`NEXI`,decimals:18},rpcUrls:{default:{http:[`https://rpc.chain.nexi.technology`]}},blockExplorers:{default:{name:`NexiScan`,url:`https://www.nexiscan.com`,apiUrl:`https://www.nexiscan.com/api`}},contracts:{multicall3:{address:`0x0277A46Cc69A57eE3A6C8c158bA874832F718B8E`,blockCreated:25770160}}}),lD=L({id:240,name:`Nexilix Smart Chain`,nativeCurrency:{decimals:18,name:`Nexilix`,symbol:`NEXILIX`},rpcUrls:{default:{http:[`https://rpcurl.pos.nexilix.com`]}},blockExplorers:{default:{name:`NexilixScan`,url:`https://scan.nexilix.com`}},contracts:{multicall3:{address:`0x58381c8e2BF9d0C2C4259cA14BdA9Afe02831244`,blockCreated:74448}}}),uD=L({id:6900,name:`Nibiru`,nativeCurrency:{decimals:18,name:`NIBI`,symbol:`NIBI`},rpcUrls:{default:{http:[`https://evm-rpc.nibiru.fi`]}},blockExplorers:{default:{name:`NibiScan`,url:`https://nibiscan.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:19587573}}}),dD=L({id:200024,name:`Nitrograph Testnet`,testnet:!0,rpcUrls:{default:{http:[`https://rpc-testnet.nitrograph.foundation`]}},nativeCurrency:{name:`Nitro`,symbol:`NOS`,decimals:18},blockExplorers:{default:{url:`https://explorer-testnet.nitrograph.foundation`,name:`Nitrograph Explorer`}}}),fD=L({id:4090,network:`oasis-testnet`,name:`Oasis Testnet`,nativeCurrency:{name:`Fasttoken`,symbol:`FTN`,decimals:18},rpcUrls:{default:{http:[`https://rpc1.oasis.bahamutchain.com`]}},blockExplorers:{default:{name:`Ftnscan`,url:`https://oasis.ftnscan.com`,apiUrl:`https://oasis.ftnscan.com/api`}},testnet:!0}),pD=L({id:248,name:`Oasys`,nativeCurrency:{name:`Oasys`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.oasys.games`]}},blockExplorers:{default:{name:`OasysScan`,url:`https://scan.oasys.games`,apiUrl:`https://scan.oasys.games/api`}}}),mD=L({id:911867,name:`Odyssey Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://odyssey.ithaca.xyz`]}},blockExplorers:{default:{name:`Odyssey Explorer`,url:`https://odyssey-explorer.ithaca.xyz`,apiUrl:`https://odyssey-explorer.ithaca.xyz/api`}},testnet:!0}),hD=L({id:66,name:`OKC`,nativeCurrency:{decimals:18,name:`OKT`,symbol:`OKT`},rpcUrls:{default:{http:[`https://exchainrpc.okex.org`]}},blockExplorers:{default:{name:`oklink`,url:`https://www.oklink.com/okc`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:10364792}}}),gD=L({id:311,name:`Omax Mainnet`,nativeCurrency:{decimals:18,name:`OMAX`,symbol:`OMAX`},rpcUrls:{default:{http:[`https://mainapi.omaxray.com`]}},blockExplorers:{default:{name:`Omax Explorer`,url:`https://omaxscan.com`}},testnet:!1}),_D=L({id:166,name:`Omni`,nativeCurrency:{name:`Omni`,symbol:`OMNI`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.omni.network`],webSocket:[`wss://mainnet.omni.network`]}},blockExplorers:{default:{name:`OmniScan`,url:`https://omniscan.network`}},testnet:!1}),vD=L({id:164,name:`Omni Omega`,nativeCurrency:{name:`Omni`,symbol:`OMNI`,decimals:18},rpcUrls:{default:{http:[`https://omega.omni.network`],webSocket:[`wss://omega.omni.network`]}},blockExplorers:{default:{name:`Omega OmniScan`,url:`https://omega.omniscan.network/`}},testnet:!0}),yD=L({id:309075,name:`One World Chain Mainnet`,nativeCurrency:{decimals:18,name:`OWCT`,symbol:`OWCT`},rpcUrls:{default:{http:[`https://mainnet-rpc.oneworldchain.org`]}},blockExplorers:{default:{name:`One World Explorer`,url:`https://mainnet.oneworldchain.org`}},testnet:!1}),bD=L({id:9700,name:`OORT MainnetDev`,nativeCurrency:{decimals:18,name:`OORT`,symbol:`OORT`},rpcUrls:{default:{http:[`https://dev-rpc.oortech.com`]}},blockExplorers:{default:{name:`OORT MainnetDev Explorer`,url:`https://dev-scan.oortech.com`}}});var xD=56;const SD=L({id:204,name:`opBNB`,nativeCurrency:{name:`BNB`,symbol:`BNB`,decimals:18},rpcUrls:{default:{http:[`https://opbnb-mainnet-rpc.bnbchain.org`]}},blockExplorers:{default:{name:`opBNB (BSCScan)`,url:`https://opbnb.bscscan.com`,apiUrl:`https://api-opbnb.bscscan.com/api`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:512881},l2OutputOracle:{[xD]:{address:`0x153CAB79f4767E2ff862C94aa49573294B13D169`}},portal:{[xD]:{address:`0x1876EA7702C0ad0C6A2ae6036DE7733edfBca519`}},l1StandardBridge:{[xD]:{address:`0xF05F0e4362859c3331Cb9395CBC201E3Fa6757Ea`}}},sourceId:xD});var CD=97;const wD=L({id:5611,name:`opBNB Testnet`,nativeCurrency:{decimals:18,name:`tBNB`,symbol:`tBNB`},rpcUrls:{default:{http:[`https://opbnb-testnet-rpc.bnbchain.org`]}},blockExplorers:{default:{name:`opbnbscan`,url:`https://testnet.opbnbscan.com`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3705108},l2OutputOracle:{[CD]:{address:`0xFf2394Bb843012562f4349C6632a0EcB92fC8810`}},portal:{[CD]:{address:`0x4386C8ABf2009aC0c263462Da568DD9d46e52a31`}},l1StandardBridge:{[CD]:{address:`0x677311Fd2cCc511Bbc0f581E8d9a07B033D5E840`}}},testnet:!0,sourceId:CD}),TD=L({id:1612,name:`OpenLedger`,nativeCurrency:{name:`Open`,symbol:`OPEN`,decimals:18},rpcUrls:{default:{http:[`https://rpc.openledger.xyz`]}},blockExplorers:{default:{name:`OpenLedger Explorer`,url:`https://scan.openledger.xyz`}},testnet:!1});var ED=1;const DD=L({...R,id:10,name:`OP Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.optimism.io`]}},blockExplorers:{default:{name:`Optimism Explorer`,url:`https://optimistic.etherscan.io`,apiUrl:`https://api-optimistic.etherscan.io/api`}},contracts:{...R.contracts,disputeGameFactory:{[ED]:{address:`0xe5965Ab5962eDc7477C8520243A95517CD252fA9`}},l2OutputOracle:{[ED]:{address:`0xdfe97868233d1aa22e815a266982f2cf17685a27`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:4286263},portal:{[ED]:{address:`0xbEb5Fc579115071764c7423A4f12eDde41f106Ed`}},l1StandardBridge:{[ED]:{address:`0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1`}}},sourceId:ED});var OD=5;const kD=L({...R,id:420,name:`Optimism Goerli`,nativeCurrency:{name:`Goerli Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://goerli.optimism.io`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://goerli-optimism.etherscan.io`,apiUrl:`https://goerli-optimism.etherscan.io/api`}},contracts:{...R.contracts,l2OutputOracle:{[OD]:{address:`0xE6Dfba0953616Bacab0c9A8ecb3a9BBa77FC15c0`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:49461},portal:{[OD]:{address:`0x5b47E1A08Ea6d985D6649300584e6722Ec4B1383`}},l1StandardBridge:{[OD]:{address:`0x636Af16bf2f682dD3109e60102b8E1A089FedAa8`}}},testnet:!0,sourceId:OD});var AD=11155111;const jD=L({...R,id:11155420,name:`OP Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.optimism.io`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://optimism-sepolia.blockscout.com`,apiUrl:`https://optimism-sepolia.blockscout.com/api`}},contracts:{...R.contracts,disputeGameFactory:{[AD]:{address:`0x05F9613aDB30026FFd634f38e5C4dFd30a197Fa1`}},l2OutputOracle:{[AD]:{address:`0x90E9c4f8a994a250F6aEfd61CAFb4F2e895D458F`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1620204},portal:{[AD]:{address:`0x16Fc5058F25648194471939df75CF27A2fdC48BC`}},l1StandardBridge:{[AD]:{address:`0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1`}}},testnet:!0,sourceId:AD}),MD=L({id:62050,name:`Optopia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.optopia.ai`]}},blockExplorers:{default:{name:`Optopia Explorer`,url:`https://scan.optopia.ai`}},testnet:!1}),ND=L({id:62049,name:`Optopia Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.optopia.ai`]}},blockExplorers:{default:{name:`Optopia Explorer`,url:`https://scan-testnet.optopia.ai`}},testnet:!0}),PD=L({id:291,name:`Orderly`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.orderly.network`]}},blockExplorers:{default:{name:`Orderly Explorer`,url:`https://explorer.orderly.network`}},testnet:!1}),FD=L({id:4460,name:`Orderly Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://l2-orderly-l2-4460-sepolia-8tc3sd7dvy.t.conduit.xyz`]}},blockExplorers:{default:{name:`Orderly Explorer`,url:`https://explorerl2new-orderly-l2-4460-sepolia-8tc3sd7dvy.t.conduit.xyz`}},testnet:!0}),ID=L({id:41144114,name:`Otim Devnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`http://devnet.otim.xyz`]}},contracts:{batchInvoker:{address:`0x5FbDB2315678afecb367f032d93F642f64180aa3`}}}),LD=L({id:11297108109,name:`Palm`,nativeCurrency:{decimals:18,name:`PALM`,symbol:`PALM`},rpcUrls:{default:{http:[`https://palm-mainnet.public.blastapi.io`],webSocket:[`wss://palm-mainnet.public.blastapi.io`]}},blockExplorers:{default:{name:`Chainlens`,url:`https://palm.chainlens.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:15429248}}}),RD=L({id:11297108099,name:`Palm Testnet`,nativeCurrency:{decimals:18,name:`PALM`,symbol:`PALM`},rpcUrls:{default:{http:[`https://palm-mainnet.public.blastapi.io`],webSocket:[`wss://palm-mainnet.public.blastapi.io`]}},blockExplorers:{default:{name:`Chainlens`,url:`https://palm.chainlens.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:15429248}},testnet:!0}),zD=L({id:3338,name:`Peaq`,nativeCurrency:{decimals:18,name:`peaq`,symbol:`PEAQ`},rpcUrls:{default:{http:[`https://quicknode1.peaq.xyz`,`https://quicknode2.peaq.xyz`,`https://quicknode3.peaq.xyz`],webSocket:[`wss://quicknode1.peaq.xyz`,`wss://quicknode2.peaq.xyz`,`wss://quicknode3.peaq.xyz`]}},blockExplorers:{default:{name:`Subscan`,url:`https://peaq.subscan.io`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3566354}}});var BD=1;const VD=L({id:424,network:`pgn`,name:`PGN`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.publicgoods.network`]}},blockExplorers:{default:{name:`PGN Explorer`,url:`https://explorer.publicgoods.network`,apiUrl:`https://explorer.publicgoods.network/api`}},contracts:{l2OutputOracle:{[BD]:{address:`0x9E6204F750cD866b299594e2aC9eA824E2e5f95c`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3380209},portal:{[BD]:{address:`0xb26Fd985c5959bBB382BAFdD0b879E149e48116c`}},l1StandardBridge:{[BD]:{address:`0xD0204B9527C1bA7bD765Fa5CCD9355d38338272b`}}},formatters:yy,sourceId:BD});var HD=11155111;const UD=L({id:58008,network:`pgn-testnet`,name:`PGN `,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.publicgoods.network`]}},blockExplorers:{default:{name:`PGN Testnet Explorer`,url:`https://explorer.sepolia.publicgoods.network`,apiUrl:`https://explorer.sepolia.publicgoods.network/api`}},contracts:{l2OutputOracle:{[HD]:{address:`0xD5bAc3152ffC25318F848B3DD5dA6C85171BaEEe`}},portal:{[HD]:{address:`0xF04BdD5353Bb0EFF6CA60CfcC78594278eBfE179`}},l1StandardBridge:{[HD]:{address:`0xFaE6abCAF30D23e233AC7faF747F2fC3a5a6Bfa3`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3754925}},formatters:yy,sourceId:HD,testnet:!0}),WD=L({id:13381,name:`Phoenix Blockchain`,nativeCurrency:{name:`Phoenix`,symbol:`PHX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.phoenixplorer.com`]}},blockExplorers:{default:{name:`Phoenixplorer`,url:`https://phoenixplorer.com`,apiUrl:`https://phoenixplorer.com/api`}},contracts:{multicall3:{address:`0x498cF757a575cFF2c2Ed9f532f56Efa797f86442`,blockCreated:5620192}}}),GD=L({id:7070,name:`Planq Mainnet`,nativeCurrency:{decimals:18,name:`PLQ`,symbol:`PLQ`},rpcUrls:{default:{http:[`https://planq-rpc.nodies.app`,`https://evm-rpc.planq.network`,`https://jsonrpc.planq.nodestake.top`]}},blockExplorers:{default:{name:`Planq Explorer`,url:`https://evm.planq.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:8470015}},testnet:!1}),KD=L({id:9745,name:`Plasma`,blockTime:1e3,nativeCurrency:{name:`Plasma`,symbol:`XPL`,decimals:18},rpcUrls:{default:{http:[`https://rpc.plasma.to`]}},blockExplorers:{default:{name:`PlasmaScan`,url:`https://plasmascan.to`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),qD=L({id:9747,name:`Plasma Devnet`,nativeCurrency:{name:`Devnet Plasma`,symbol:`XPL`,decimals:18},rpcUrls:{default:{http:[`https://devnet-rpc.plasma.to`]}},testnet:!0,contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}}}),JD=L({id:9746,name:`Plasma Testnet`,nativeCurrency:{name:`Testnet Plasma`,symbol:`XPL`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.plasma.to`]}},blockExplorers:{default:{name:`RouteScan`,url:`https://testnet.plasmascan.to`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},testnet:!0}),YD=L({...oy,id:1612127,name:`PlayFi Albireo Testnet`,network:`albireo`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://albireo-rpc.playfi.ai`],webSocket:[`wss://albireo-rpc-ws.playfi.ai/ws`]}},blockExplorers:{default:{name:`PlayFi Albireo Explorer`,url:`https://albireo-explorer.playfi.ai`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`}},testnet:!0}),XD=L({id:242,name:`Plinga`,nativeCurrency:{name:`Plinga`,symbol:`PLINGA`,decimals:18},rpcUrls:{default:{http:[`https://rpcurl.mainnet.plgchain.com`]}},blockExplorers:{default:{name:`Plgscan`,url:`https://www.plgscan.com`}},contracts:{multicall3:{address:`0x0989576160f2e7092908BB9479631b901060b6e4`,blockCreated:204489}}}),ZD=L({id:98865,name:`Plume (Legacy)`,nativeCurrency:{name:`Plume Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.plumenetwork.xyz`],webSocket:[`wss://rpc.plumenetwork.xyz`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.plumenetwork.xyz`,apiUrl:`https://explorer.plumenetwork.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:48577}},sourceId:1}),QD=L({id:98864,name:`Plume Devnet (Legacy)`,nativeCurrency:{name:`Plume Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://test-rpc.plumenetwork.xyz`],webSocket:[`wss://test-rpc.plumenetwork.xyz`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://test-explorer.plumenetwork.xyz`,apiUrl:`https://test-explorer.plumenetwork.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:481948}},testnet:!0,sourceId:11155111}),$D=L({id:98866,name:`Plume`,nativeCurrency:{name:`Plume`,symbol:`PLUME`,decimals:18},rpcUrls:{default:{http:[`https://rpc.plume.org`],webSocket:[`wss://rpc.plume.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.plume.org`,apiUrl:`https://explorer.plume.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:39679}},sourceId:1}),eO=L({id:98867,name:`Plume Testnet`,nativeCurrency:{name:`Plume`,symbol:`PLUME`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.plume.org`],webSocket:[`wss://testnet-rpc.plume.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer.plume.org`,apiUrl:`https://testnet-explorer.plume.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:199712}},testnet:!0,sourceId:11155111}),tO=L({id:161221135,name:`Plume Testnet (Legacy)`,nativeCurrency:{name:`Plume Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.plumenetwork.xyz/http`],webSocket:[`wss://testnet-rpc.plumenetwork.xyz/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer.plumenetwork.xyz`,apiUrl:`https://testnet-explorer.plumenetwork.xyz/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:6022332}},testnet:!0,sourceId:11155111}),nO=L({id:631571,name:`Polter Testnet`,nativeCurrency:{decimals:18,name:`Polter GHST`,symbol:`GHST`},rpcUrls:{default:{http:[`https://geist-polter.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://polter-testnet.explorer.alchemy.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:11245}},testnet:!0}),rO=L({id:137,name:`Polygon`,blockTime:2e3,nativeCurrency:{name:`POL`,symbol:`POL`,decimals:18},rpcUrls:{default:{http:[`https://polygon-rpc.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://polygonscan.com`,apiUrl:`https://api.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:25770160}}}),iO=L({id:80002,name:`Polygon Amoy`,nativeCurrency:{name:`POL`,symbol:`POL`,decimals:18},rpcUrls:{default:{http:[`https://rpc-amoy.polygon.technology`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://amoy.polygonscan.com`,apiUrl:`https://api-amoy.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:3127388}},testnet:!0}),aO=L({id:80001,name:`Polygon Mumbai`,nativeCurrency:{name:`MATIC`,symbol:`MATIC`,decimals:18},rpcUrls:{default:{http:[`https://80001.rpc.thirdweb.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://mumbai.polygonscan.com`,apiUrl:`https://api-testnet.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:25770160}},testnet:!0}),oO=L({id:1101,name:`Polygon zkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://zkevm-rpc.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://zkevm.polygonscan.com`,apiUrl:`https://api-zkevm.polygonscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:57746}}}),sO=L({id:2442,name:`Polygon zkEVM Cardona`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.cardona.zkevm-rpc.com`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://cardona-zkevm.polygonscan.com`,apiUrl:`https://cardona-zkevm.polygonscan.com/api`}},testnet:!0,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:114091}}}),cO=L({id:1442,name:`Polygon zkEVM Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.public.zkevm-test.net`]}},blockExplorers:{default:{name:`PolygonScan`,url:`https://testnet-zkevm.polygonscan.com`,apiUrl:`https://testnet-zkevm.polygonscan.com/api`}},testnet:!0,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:525686}}}),lO=L({id:8008,name:`Polynomial`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.polynomial.fi`]}},blockExplorers:{default:{name:`Polynomial Scan`,url:`https://polynomialscan.io`}},testnet:!1,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}}}),uO=L({id:80008,name:`Polynomia Sepolia`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.sepolia.polynomial.fi`]}},blockExplorers:{default:{name:`Polynomial Scan`,url:`https://sepolia.polynomialscan.io`}},testnet:!0,contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}}}),dO=L({id:23023,name:`PremiumBlock Testnet`,nativeCurrency:{name:`Premium Block`,symbol:`PBLK`,decimals:18},rpcUrls:{default:{http:[`https://rpc.premiumblock.org`]}},blockExplorers:{default:{name:`PremiumBlocks Explorer`,url:`https://scan.premiumblock.org`}},testnet:!0}),fO=L({id:369,name:`PulseChain`,nativeCurrency:{name:`Pulse`,symbol:`PLS`,decimals:18},testnet:!1,blockTime:1e4,rpcUrls:{default:{http:[`https://rpc.pulsechain.com`],webSocket:[`wss://ws.pulsechain.com`]}},blockExplorers:{default:{name:`PulseScan`,url:`https://ipfs.scan.pulsechain.com`,apiUrl:`https://api.scan.pulsechain.com/api`}},contracts:{ensRegistry:{address:`0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e`},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14353601}}}),pO=L({id:943,name:`PulseChain V4`,testnet:!0,nativeCurrency:{name:`V4 Pulse`,symbol:`v4PLS`,decimals:18},blockTime:1e4,rpcUrls:{default:{http:[`https://rpc.v4.testnet.pulsechain.com`],webSocket:[`wss://ws.v4.testnet.pulsechain.com`]}},blockExplorers:{default:{name:`PulseScan`,url:`https://scan.v4.testnet.pulsechain.com`,apiUrl:`https://scan.v4.testnet.pulsechain.com/api`}},contracts:{ensRegistry:{address:`0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e`},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14353601}}}),mO=L({id:490092,name:`Pumpfi Testnet`,nativeCurrency:{decimals:18,name:`PMPT`,symbol:`PMPT`},rpcUrls:{default:{http:[`https://rpc1testnet.pumpfi.me`]}},blockExplorers:{default:{name:`Pumpfi Testnet Scan`,url:`https://testnetscan.pumpfi.me`}},testnet:!0});var hO=11155111;const gO=L({...R,name:`Pyrope Testnet`,testnet:!0,id:695569,sourceId:hO,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.pyropechain.com`],webSocket:[`wss://rpc.pyropechain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://pyrope.blockscout.com`}},contracts:{...R.contracts,l1StandardBridge:{[hO]:{address:`0xC24932c31D9621aE9e792576152B7ef010cFC2F8`}}}}),_O=L({id:766,name:`QL1`,nativeCurrency:{decimals:18,name:`QOM`,symbol:`QOM`},rpcUrls:{default:{http:[`https://rpc.qom.one`]}},blockExplorers:{default:{name:`Ql1 Explorer`,url:`https://scan.qom.one`}},contracts:{multicall3:{address:`0x7A52370716ea730585884F5BDB0f6E60C39b8C64`}},testnet:!1}),vO=L({id:35441,name:`Q Mainnet`,nativeCurrency:{decimals:18,name:`Q`,symbol:`Q`},rpcUrls:{default:{http:[`https://rpc.q.org`]}},blockExplorers:{default:{name:`Q Mainnet Explorer`,url:`https://explorer.q.org`,apiUrl:`https://explorer.q.org/api`}}}),yO=L({id:35443,name:`Q Testnet`,nativeCurrency:{decimals:18,name:`Q`,symbol:`Q`},rpcUrls:{default:{http:[`https://rpc.qtestnet.org`]}},blockExplorers:{default:{name:`Q Testnet Explorer`,url:`https://explorer.qtestnet.org`,apiUrl:`https://explorer.qtestnet.org/api`}},testnet:!0}),bO=L({id:111188,name:`re.al`,nativeCurrency:{name:`reETH`,decimals:18,symbol:`reETH`},rpcUrls:{default:{http:[`https://rpc.realforreal.gelato.digital`]}},blockExplorers:{default:{name:`re.al Explorer`,url:`https://explorer.re.al`,apiUrl:`https://explorer.re.al/api/v2`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:695}}}),xO=L({id:151,name:`Redbelly Network Mainnet`,nativeCurrency:{name:`Redbelly Native Coin`,symbol:`RBNT`,decimals:18},rpcUrls:{default:{http:[`https://governors.mainnet.redbelly.network`]}},blockExplorers:{default:{name:`Routescan`,url:`https://redbelly.routescan.io`,apiUrl:`https://api.routescan.io/v2/network/mainnet/evm/151/etherscan/api`}},testnet:!1}),SO=L({id:153,name:`Redbelly Network Testnet`,nativeCurrency:{name:`Redbelly Native Coin`,symbol:`RBNT`,decimals:18},rpcUrls:{default:{http:[`https://governors.testnet.redbelly.network`]}},blockExplorers:{default:{name:`Routescan`,url:`https://redbelly.testnet.routescan.io`,apiUrl:`https://api.routescan.io/v2/network/testnet/evm/153_2/etherscan/api`}},testnet:!0}),CO=L({id:50342,name:`Reddio`,nativeCurrency:{name:`Reddio`,symbol:`RED`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.reddio.com/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://reddio.cloud.blockscout.com`,apiUrl:`https://reddio.cloud.blockscout.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:848849}},testnet:!1}),wO=L({id:50341,name:`Reddio Sepolia`,nativeCurrency:{name:`Reddio`,symbol:`RED`,decimals:18},rpcUrls:{default:{http:[`https://reddio-dev.reddio.com`]}},blockExplorers:{default:{name:`Reddioscan`,url:`https://reddio-devnet.l2scan.co`,apiUrl:`https://reddio-devnet.l2scan.co/api`}},testnet:!0});var TO=1;const EO=L({...R,name:`Redstone`,id:690,sourceId:TO,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.redstonechain.com`],webSocket:[`wss://rpc.redstonechain.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.redstone.xyz`}},contracts:{...R.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[TO]:{address:`0xC7bCb0e8839a28A1cFadd1CF716de9016CdA51ae`,blockCreated:19578329}},l2OutputOracle:{[TO]:{address:`0xa426A052f657AEEefc298b3B5c35a470e4739d69`,blockCreated:19578337}},l1StandardBridge:{[TO]:{address:`0xc473ca7E02af24c129c2eEf51F2aDf0411c1Df69`,blockCreated:19578331}}}}),DO=L({id:47805,name:`REI Mainnet`,nativeCurrency:{decimals:18,name:`REI`,symbol:`REI`},rpcUrls:{default:{http:[`https://rpc.rei.network`],webSocket:[`wss://rpc.rei.network`]}},blockExplorers:{default:{name:`REI Scan`,url:`https://scan.rei.network`}},testnet:!1}),OO=L({id:1729,name:`Reya Network`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.reya.network`],webSocket:[`wss://ws.reya.network`]}},blockExplorers:{default:{name:`Reya Network Explorer`,url:`https://explorer.reya.network`}},testnet:!1}),kO=L({id:11155931,name:`RISE Testnet`,nativeCurrency:{name:`RISE Testnet Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.riselabs.xyz`],webSocket:[`wss://testnet.riselabs.xyz/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.testnet.riselabs.xyz/`,apiUrl:`https://explorer.testnet.riselabs.xyz/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`}},testnet:!0}),AO=L({id:753,name:`Rivalz`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rivalz.calderachain.xyz/http`]}},blockExplorers:{default:{name:`Rivalz Caldera Explorer`,url:`https://rivalz.calderaexplorer.xyz`}},testnet:!1}),jO=L({id:570,name:`Rollux Mainnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc.rollux.com`],webSocket:[`wss://rpc.rollux.com/wss`]}},blockExplorers:{default:{name:`RolluxExplorer`,url:`https://explorer.rollux.com`,apiUrl:`https://explorer.rollux.com/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:119222}}}),MO=L({id:57e3,name:`Rollux Testnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc-tanenbaum.rollux.com/`],webSocket:[`wss://rpc-tanenbaum.rollux.com/wss`]}},blockExplorers:{default:{name:`RolluxTestnetExplorer`,url:`https://rollux.tanenbaum.io`,apiUrl:`https://rollux.tanenbaum.io/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1813675}}}),NO=L({id:2020,name:`Ronin`,nativeCurrency:{name:`RON`,symbol:`RON`,decimals:18},rpcUrls:{default:{http:[`https://api.roninchain.com/rpc`]}},blockExplorers:{default:{name:`Ronin Explorer`,url:`https://app.roninchain.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:26023535}}}),PO=L({id:7668,name:`The Root Network`,nativeCurrency:{decimals:18,name:`XRP`,symbol:`XRP`},rpcUrls:{default:{http:[`https://root.rootnet.live/archive`],webSocket:[`wss://root.rootnet.live/archive/ws`]}},blockExplorers:{default:{name:`Rootscan`,url:`https://rootscan.io`}},contracts:{multicall3:{address:`0xc9C2E2429AeC354916c476B30d729deDdC94988d`,blockCreated:9218338}}}),FO=L({id:7672,name:`The Root Network - Porcini`,nativeCurrency:{decimals:18,name:`XRP`,symbol:`XRP`},rpcUrls:{default:{http:[`https://porcini.rootnet.app/archive`],webSocket:[`wss://porcini.rootnet.app/archive/ws`]}},blockExplorers:{default:{name:`Rootscan`,url:`https://porcini.rootscan.io`}},contracts:{multicall3:{address:`0xc9C2E2429AeC354916c476B30d729deDdC94988d`,blockCreated:10555692}},testnet:!0}),IO=L({id:30,name:`Rootstock Mainnet`,network:`rootstock`,nativeCurrency:{decimals:18,name:`Rootstock Bitcoin`,symbol:`RBTC`},rpcUrls:{default:{http:[`https://public-node.rsk.co`]}},blockExplorers:{default:{name:`RSK Explorer`,url:`https://explorer.rsk.co`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:4249540}}}),LO=L({id:31,name:`Rootstock Testnet`,network:`rootstock`,nativeCurrency:{decimals:18,name:`Rootstock Bitcoin`,symbol:`tRBTC`},rpcUrls:{default:{http:[`https://public-node.testnet.rsk.co`]}},blockExplorers:{default:{name:`RSK Explorer`,url:`https://explorer.testnet.rootstock.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2771150}},testnet:!0});var RO=1;const zO=L({...R,id:12553,name:`RSS3 VSL Mainnet`,nativeCurrency:{name:`RSS3`,symbol:`RSS3`,decimals:18},rpcUrls:{default:{http:[`https://rpc.rss3.io`]}},blockExplorers:{default:{name:`RSS3 VSL Mainnet Scan`,url:`https://scan.rss3.io`,apiUrl:`https://scan.rss3.io/api`}},contracts:{...R.contracts,l2OutputOracle:{[RO]:{address:`0xE6f24d2C32B3109B18ed33cF08eFb490b1e09C10`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14193},portal:{[RO]:{address:`0x6A12432491bbbE8d3babf75F759766774C778Db4`,blockCreated:19387057}},l1StandardBridge:{[RO]:{address:`0x4cbab69108Aa72151EDa5A3c164eA86845f18438`}}},sourceId:RO});var BO=11155111;const VO=L({...R,id:2331,name:`RSS3 VSL Sepolia Testnet`,nativeCurrency:{name:`RSS3`,symbol:`RSS3`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.rss3.io`]}},blockExplorers:{default:{name:`RSS3 VSL Sepolia Testnet Scan`,url:`https://scan.testnet.rss3.io`,apiUrl:`https://scan.testnet.rss3.io/api`}},contracts:{...R.contracts,l2OutputOracle:{[BO]:{address:`0xDb5c46C3Eaa6Ed6aE8b2379785DF7dd029C0dC81`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:55697},portal:{[BO]:{address:`0xcBD77E8E1E7F06B25baDe67142cdE82652Da7b57`,blockCreated:5345035}},l1StandardBridge:{[BO]:{address:`0xdDD29bb63B0839FB1cE0eE439Ff027738595D07B`}}},testnet:!0,sourceId:BO}),HO=L({id:7225878,name:`Saakuru Mainnet`,nativeCurrency:{name:`OAS`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.saakuru.network`]}},blockExplorers:{default:{name:`Saakuru Explorer`,url:`https://explorer.saakuru.network`}},testnet:!1}),UO=L({id:5464,name:`Saga`,network:`saga`,nativeCurrency:{decimals:18,name:`gas`,symbol:`GAS`},rpcUrls:{default:{http:[`https://sagaevm.jsonrpc.sagarpc.io`]}},blockExplorers:{default:{name:`Saga Explorer`,url:`https://sagaevm.sagaexplorer.io`}},contracts:{multicall3:{address:`0x864DDc9B50B9A0dF676d826c9B9EDe9F8913a160`,blockCreated:467530}}}),WO=L({id:2021,name:`Saigon Testnet`,nativeCurrency:{name:`RON`,symbol:`RON`,decimals:18},rpcUrls:{default:{http:[`https://saigon-testnet.roninchain.com/rpc`]}},blockExplorers:{default:{name:`Saigon Explorer`,url:`https://saigon-app.roninchain.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:18736871}},testnet:!0}),GO=L({id:1996,name:`Sanko`,nativeCurrency:{name:`DMT`,symbol:`DMT`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.sanko.xyz`]}},blockExplorers:{default:{name:`Sanko Explorer`,url:`https://explorer.sanko.xyz`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:37}},testnet:!1}),KO=L({id:23294,name:`Oasis Sapphire`,network:`sapphire`,nativeCurrency:{name:`Sapphire Rose`,symbol:`ROSE`,decimals:18},rpcUrls:{default:{http:[`https://sapphire.oasis.io`],webSocket:[`wss://sapphire.oasis.io/ws`]}},blockExplorers:{default:{name:`Oasis Explorer`,url:`https://explorer.oasis.io/mainnet/sapphire`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:734531}}}),qO=L({id:23295,name:`Oasis Sapphire Testnet`,network:`sapphire-testnet`,nativeCurrency:{name:`Sapphire Test Rose`,symbol:`TEST`,decimals:18},rpcUrls:{default:{http:[`https://testnet.sapphire.oasis.dev`],webSocket:[`wss://testnet.sapphire.oasis.dev/ws`]}},blockExplorers:{default:{name:`Oasis Explorer`,url:`https://explorer.oasis.io/testnet/sapphire`}},testnet:!0}),JO=L({id:3109,name:`SatoshiVM Alpha Mainnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://alpha-rpc-node-http.svmscan.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://svmscan.io`,apiUrl:`https://svmscan.io/api`}}}),YO=L({id:3110,name:`SatoshiVM Testnet`,nativeCurrency:{name:`BTC`,symbol:`BTC`,decimals:18},rpcUrls:{default:{http:[`https://test-rpc-node-http.svmscan.io`]}},blockExplorers:{default:{name:`blockscout`,url:`https://testnet.svmscan.io`,apiUrl:`https://testnet.svmscan.io/api`}},testnet:!0}),XO=L({id:534352,name:`Scroll`,blockTime:3e3,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.scroll.io`],webSocket:[`wss://wss-rpc.scroll.io/ws`]}},blockExplorers:{default:{name:`Scrollscan`,url:`https://scrollscan.com`,apiUrl:`https://api.scrollscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:14}},testnet:!1}),ZO=L({id:534351,name:`Scroll Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rpc.scroll.io`]}},blockExplorers:{default:{name:`Scrollscan`,url:`https://sepolia.scrollscan.com`,apiUrl:`https://api-sepolia.scrollscan.com/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:9473}},testnet:!0}),QO=L({id:1329,name:`Sei Network`,nativeCurrency:{name:`Sei`,symbol:`SEI`,decimals:18},rpcUrls:{default:{http:[`https://evm-rpc.sei-apis.com/`],webSocket:[`wss://evm-ws.sei-apis.com/`]}},blockExplorers:{default:{name:`Seitrace`,url:`https://seitrace.com`,apiUrl:`https://seitrace.com/pacific-1/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}}}),$O=L({id:713715,name:`Sei Devnet`,nativeCurrency:{name:`Sei`,symbol:`SEI`,decimals:18},rpcUrls:{default:{http:[`https://evm-rpc-arctic-1.sei-apis.com`]}},blockExplorers:{default:{name:`Seitrace`,url:`https://seitrace.com`}},testnet:!0}),ek=L({id:5124,name:`Seismic Devnet`,nativeCurrency:{name:`Seismic Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://node-2.seismicdev.net/rpc`]}},blockExplorers:{default:{name:`Seismic Devnet Explorer`,url:`https://explorer-2.seismicdev.net`}},testnet:!0}),tk=L({id:1328,name:`Sei Testnet`,nativeCurrency:{name:`Sei`,symbol:`SEI`,decimals:18},rpcUrls:{default:{http:[`https://evm-rpc-testnet.sei-apis.com`],webSocket:[`wss://evm-ws-testnet.sei-apis.com`]}},blockExplorers:{default:{name:`Seitrace`,url:`https://seitrace.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:98697651}},testnet:!0}),nk=L({id:11155111,name:`Sepolia`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.drpc.org`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia.etherscan.io`,apiUrl:`https://api-sepolia.etherscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:751532},ensUniversalResolver:{address:`0xeeeeeeee14d718c2b47d9923deab1335e144eeee`,blockCreated:8928790}},testnet:!0});var rk=1;const ik=L({...R,id:360,name:`Shape`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.shape.network`]}},blockExplorers:{default:{name:`shapescan`,url:`https://shapescan.xyz`,apiUrl:`https://shapescan.xyz/api`}},contracts:{...R.contracts,l2OutputOracle:{[rk]:{address:`0x6Ef8c69CfE4635d866e3E02732068022c06e724D`,blockCreated:20369940}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1},portal:{[rk]:{address:`0xEB06fFa16011B5628BaB98E29776361c83741dd3`,blockCreated:20369933}},l1StandardBridge:{[rk]:{address:`0x62Edd5f4930Ea92dCa3fB81689bDD9b9d076b57B`,blockCreated:20369935}}},sourceId:rk});var ak=11155111;const ok=L({...R,id:11011,name:`Shape Sepolia Testnet`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.shape.network`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer-sepolia.shape.network/`,apiUrl:`https://explorer-sepolia.shape.network/api/v2`}},contracts:{...R.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1}},testnet:!0,sourceId:ak}),sk=L({id:8118,name:`Shardeum`,nativeCurrency:{name:`Shardeum`,symbol:`SHM`,decimals:18},rpcUrls:{default:{http:[`https://api.shardeum.org`]}},blockExplorers:{default:{name:`Shardeum Explorer`,url:`https://explorer.shardeum.org`}},testnet:!1}),ck=L({id:8082,name:`Shardeum Sphinx`,nativeCurrency:{name:`SHARDEUM`,symbol:`SHM`,decimals:18},rpcUrls:{default:{http:[`https://sphinx.shardeum.org`]}},blockExplorers:{default:{name:`Shardeum Explorer`,url:`https://explorer-sphinx.shardeum.org`}},testnet:!0}),lk=L({id:109,name:`Shibarium`,network:`shibarium`,nativeCurrency:{name:`Bone`,symbol:`BONE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.shibrpc.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://shibariumscan.io`}},contracts:{multicall3:{address:`0x864Bf681ADD6052395188A89101A1B37d3B4C961`,blockCreated:265900}}}),uk=L({id:157,name:`Puppynet Shibarium`,nativeCurrency:{decimals:18,name:`Bone`,symbol:`BONE`},rpcUrls:{default:{http:[`https://puppynet.shibrpc.com`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://puppyscan.shib.io`,apiUrl:`https://puppyscan.shib.io/api`}},contracts:{multicall3:{address:`0xA4029b74FBA366c926eDFA7Dd10B21C621170a4c`,blockCreated:3035769}},testnet:!0}),dk=L({id:336,name:`Shiden`,nativeCurrency:{decimals:18,name:`SDN`,symbol:`SDN`},rpcUrls:{default:{http:[`https://shiden.public.blastapi.io`],webSocket:[`wss://shiden-rpc.dwellir.com`]}},blockExplorers:{default:{name:`Shiden Scan`,url:`https://shiden.subscan.io`}},testnet:!1}),fk=L({id:148,name:`Shimmer`,network:`shimmer`,nativeCurrency:{decimals:18,name:`Shimmer`,symbol:`SMR`},rpcUrls:{default:{http:[`https://json-rpc.evm.shimmer.network`]}},blockExplorers:{default:{name:`Shimmer Network Explorer`,url:`https://explorer.evm.shimmer.network`,apiUrl:`https://explorer.evm.shimmer.network/api`}}}),pk=L({id:1073,name:`Shimmer Testnet`,network:`shimmer-testnet`,nativeCurrency:{decimals:18,name:`Shimmer`,symbol:`SMR`},rpcUrls:{default:{http:[`https://json-rpc.evm.testnet.shimmer.network`]}},blockExplorers:{default:{name:`Shimmer Network Explorer`,url:`https://explorer.evm.testnet.shimmer.network`,apiUrl:`https://explorer.evm.testnet.shimmer.network/api`}},testnet:!0}),mk=L({id:97453,name:`Sidra Chain`,nativeCurrency:{decimals:18,name:`Sidra Digital Asset`,symbol:`SDA`},rpcUrls:{default:{http:[`https://node.sidrachain.com`]}},blockExplorers:{default:{name:`Sidra Chain Explorer`,url:`https://ledger.sidrachain.com`}}}),hk=L({id:2355,name:`Silicon zkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.silicon.network`,`https://silicon-mainnet.nodeinfra.com`]}},blockExplorers:{default:{name:`SiliconScope`,url:`https://scope.silicon.network`}}}),gk=L({id:1722641160,name:`Silicon Sepolia zkEVM`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-sepolia.silicon.network`,`https://silicon-testnet.nodeinfra.com`]}},blockExplorers:{default:{name:`SiliconSepoliaScope`,url:`https://scope-sepolia.silicon.network`}},testnet:!0}),_k=L({id:98,name:`Six Protocol`,nativeCurrency:{decimals:18,name:`SIX`,symbol:`SIX`},rpcUrls:{default:{http:[`https://sixnet-rpc-evm.sixprotocol.net`]}},blockExplorers:{default:{name:`Six Protocol Scan`,url:`https://sixscan.io/sixnet`}},testnet:!1}),vk=L({id:391845894,name:`SKALE | Block Brawlers`,nativeCurrency:{name:`BRAWL`,symbol:`BRAWL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/frayed-decent-antares`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/frayed-decent-antares`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://frayed-decent-antares.explorer.mainnet.skalenodes.com`}},contracts:{}}),yk=L({id:1564830818,name:`SKALE Calypso Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/honorable-steel-rasalhague`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/honorable-steel-rasalhague`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://honorable-steel-rasalhague.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3107626}}}),bk=L({id:974399131,name:`SKALE Calypso Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/giant-half-dual-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/giant-half-dual-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://giant-half-dual-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:103220}},testnet:!0}),xk=L({id:1026062157,name:`SKALE | CryptoBlades`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/affectionate-immediate-pollux`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/affectionate-immediate-pollux`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://affectionate-immediate-pollux.explorer.mainnet.skalenodes.com`}},contracts:{}}),Sk=L({id:1032942172,name:`SKALE | Crypto Colosseum`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/haunting-devoted-deneb`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/haunting-devoted-deneb`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://haunting-devoted-deneb.explorer.mainnet.skalenodes.com`}},contracts:{}}),Ck=L({id:2046399126,name:`SKALE Europa Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/elated-tan-skat`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/elated-tan-skat`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://elated-tan-skat.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:3113495}}}),wk=L({id:1444673419,name:`SKALE Europa Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/juicy-low-small-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/juicy-low-small-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://juicy-low-small-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:110858}},testnet:!0}),Tk=L({id:2139927552,name:`Exorde Network`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/light-vast-diphda`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/light-vast-diphda`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://light-vast-diphda.explorer.mainnet.skalenodes.com`}},contracts:{}}),Ek=L({id:1273227453,name:`SKALE | Human Protocol`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/wan-red-ain`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/wan-red-ain`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://wan-red-ain.explorer.mainnet.skalenodes.com`}},contracts:{}}),Dk=L({id:1482601649,name:`SKALE Nebula Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/green-giddy-denebola`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/green-giddy-denebola`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://green-giddy-denebola.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2372986}}}),Ok=L({id:37084624,name:`SKALE Nebula Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/lanky-ill-funny-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/lanky-ill-funny-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://lanky-ill-funny-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:105141}},testnet:!0}),kk=L({id:278611351,name:`SKALE | Razor Network`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/turbulent-unique-scheat`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/turbulent-unique-scheat`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://turbulent-unique-scheat.explorer.mainnet.skalenodes.com`}},contracts:{}}),Ak=L({id:1350216234,name:`SKALE Titan Hub`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.skalenodes.com/v1/parallel-stormy-spica`],webSocket:[`wss://mainnet.skalenodes.com/v1/ws/parallel-stormy-spica`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://parallel-stormy-spica.explorer.mainnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2076458}}}),jk=L({id:1020352220,name:`SKALE Titan Testnet`,nativeCurrency:{name:`sFUEL`,symbol:`sFUEL`,decimals:18},rpcUrls:{default:{http:[`https://testnet.skalenodes.com/v1/aware-fake-trim-testnet`],webSocket:[`wss://testnet.skalenodes.com/v1/ws/aware-fake-trim-testnet`]}},blockExplorers:{default:{name:`SKALE Explorer`,url:`https://aware-fake-trim-testnet.explorer.testnet.skalenodes.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:104072}},testnet:!0}),Mk=L({id:984123,name:`Forma Sketchpad`,network:`sketchpad`,nativeCurrency:{symbol:`TIA`,name:`TIA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.sketchpad-1.forma.art`],webSocket:[`wss://ws.sketchpad-1.forma.art`]}},blockExplorers:{default:{name:`Sketchpad Explorer`,url:`https://explorer.sketchpad-1.forma.art`}},testnet:!0});var Nk=1;const Pk=L({...R,id:2192,network:`snaxchain-mainnet`,name:`SnaxChain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.snaxchain.io`]}},blockExplorers:{default:{name:`Snax Explorer`,url:`https://explorer.snaxchain.io`,apiUrl:`https://explorer.snaxchain.io/api`}},contracts:{...R.contracts,disputeGameFactory:{[Nk]:{address:`0x472562Fcf26D6b2793f8E0b0fB660ba0E5e08A46`}},l2OutputOracle:{[Nk]:{address:`0x2172e492Fc807F5d5645D0E3543f139ECF539294`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[Nk]:{address:`0x79f446D024d74D0Bb6E699C131c703463c5D65E9`}},l1StandardBridge:{[Nk]:{address:`0x6534Bdb6b5c060d3e6aa833433333135eFE8E0aA`}}},sourceId:Nk});var Fk=11155111;const Ik=L({...R,id:13001,network:`snaxchain-testnet`,name:`SnaxChain Testnet`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.snaxchain.io`]}},blockExplorers:{default:{name:`Snax Explorer`,url:`https://testnet-explorer.snaxchain.io`,apiUrl:`https://testnet-explorer.snaxchain.io/api`}},contracts:{...R.contracts,disputeGameFactory:{[Fk]:{address:`0x206a75d89d45F146C54020F132FF93bEDD09f55E`}},l2OutputOracle:{[Fk]:{address:`0x60e3A368a4cdCEf85ffB964e372726F56A46221e`}},multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`},portal:{[Fk]:{address:`0xb5afdd0E8dDF081Ef90e8A3e0c7b5798e66E954E`}},l1StandardBridge:{[Fk]:{address:`0xbd37E1a59D4C00C9A46F75018dffd84061bC5f74`}}},testnet:!0,sourceId:Fk}),Lk=L({id:50312,name:`Somnia Testnet`,nativeCurrency:{name:`STT`,symbol:`STT`,decimals:18},rpcUrls:{default:{http:[`https://dream-rpc.somnia.network`]}},blockExplorers:{default:{name:`Somnia Testnet Explorer`,url:`https://shannon-explorer.somnia.network/`,apiUrl:`https://shannon-explorer.somnia.network/api`}},contracts:{multicall3:{address:`0x841b8199E6d3Db3C6f264f6C2bd8848b3cA64223`,blockCreated:71314235}},testnet:!0});var Rk=1;const zk=L({...R,id:1868,name:`Soneium Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.soneium.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://soneium.blockscout.com`,apiUrl:`https://soneium.blockscout.com/api`}},contracts:{...R.contracts,disputeGameFactory:{[Rk]:{address:`0x512a3d2c7a43bd9261d2b8e8c9c70d4bd4d503c0`}},l2OutputOracle:{[Rk]:{address:`0x0000000000000000000000000000000000000000`}},portal:{[Rk]:{address:`0x88e529a6ccd302c948689cd5156c83d4614fae92`,blockCreated:7061266}},l1StandardBridge:{[Rk]:{address:`0xeb9bf100225c214efc3e7c651ebbadcf85177607`,blockCreated:7061266}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}},sourceId:Rk});var Bk=11155111;const Vk=L({...R,id:1946,name:`Soneium Minato Testnet`,nativeCurrency:{name:`Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.minato.soneium.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://soneium-minato.blockscout.com`,apiUrl:`https://soneium-minato.blockscout.com/api`}},contracts:{...R.contracts,disputeGameFactory:{[Bk]:{address:`0xB3Ad2c38E6e0640d7ce6aA952AB3A60E81bf7a01`}},l2OutputOracle:{[Bk]:{address:`0x710e5286C746eC38beeB7538d0146f60D27be343`}},portal:{[Bk]:{address:`0x65ea1489741A5D72fFdD8e6485B216bBdcC15Af3`,blockCreated:6466136}},l1StandardBridge:{[Bk]:{address:`0x5f5a404A5edabcDD80DB05E8e54A78c9EBF000C2`,blockCreated:6466136}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}},testnet:!0,sourceId:Bk}),Hk=L({id:19,name:`Songbird Canary-Network`,nativeCurrency:{decimals:18,name:`Songbird`,symbol:`SGB`},rpcUrls:{default:{http:[`https://songbird-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Songbird Explorer`,url:`https://songbird-explorer.flare.network`,apiUrl:`https://songbird-explorer.flare.network/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:13382504}}}),Uk=L({id:16,name:`Songbird Testnet Coston`,nativeCurrency:{decimals:18,name:`Coston Flare`,symbol:`CFLR`},rpcUrls:{default:{http:[`https://coston-api.flare.network/ext/C/rpc`]}},blockExplorers:{default:{name:`Coston Explorer`,url:`https://coston-explorer.flare.network`,apiUrl:`https://coston-explorer.flare.network/api`}},testnet:!0}),Wk=L({id:146,name:`Sonic`,blockTime:630,nativeCurrency:{decimals:18,name:`Sonic`,symbol:`S`},rpcUrls:{default:{http:[`https://rpc.soniclabs.com`]}},blockExplorers:{default:{name:`Sonic Explorer`,url:`https://sonicscan.org`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:60}},testnet:!1}),Gk=L({id:57054,name:`Sonic Blaze Testnet`,nativeCurrency:{decimals:18,name:`Sonic`,symbol:`S`},rpcUrls:{default:{http:[`https://rpc.blaze.soniclabs.com`]}},blockExplorers:{default:{name:`Sonic Blaze Testnet Explorer`,url:`https://testnet.sonicscan.org`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1100}},testnet:!0}),Kk=L({id:64165,name:`Sonic Testnet`,nativeCurrency:{decimals:18,name:`Sonic`,symbol:`S`},rpcUrls:{default:{http:[`https://rpc.testnet.soniclabs.com`]}},blockExplorers:{default:{name:`Sonic Testnet Explorer`,url:`https://testnet.soniclabs.com/`}},testnet:!0}),qk=L({...oy,id:50104,name:`Sophon`,nativeCurrency:{decimals:18,name:`Sophon`,symbol:`SOPH`},rpcUrls:{default:{http:[`https://rpc.sophon.xyz`],webSocket:[`wss://rpc.sophon.xyz/ws`]}},blockExplorers:{default:{name:`Sophon Block Explorer`,url:`https://explorer.sophon.xyz`}},contracts:{multicall3:{address:`0x5f4867441d2416cA88B1b3fd38f21811680CD2C8`,blockCreated:116}},testnet:!1}),Jk=L({...oy,id:531050104,name:`Sophon Testnet`,nativeCurrency:{decimals:18,name:`Sophon`,symbol:`SOPH`},rpcUrls:{default:{http:[`https://rpc.testnet.sophon.xyz`],webSocket:[`wss://rpc.testnet.sophon.xyz/ws`]}},blockExplorers:{default:{name:`Sophon Block Explorer`,url:`https://explorer.testnet.sophon.xyz`}},contracts:{multicall3:{address:`0x83c04d112adedA2C6D9037bb6ecb42E7f0b108Af`,blockCreated:15642}},testnet:!0}),Yk=L({id:100021,name:`Sova`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.sova.io`]}},blockExplorers:{default:{name:`Sova Block Explorer`,url:`hhttps://explorer.sova.io`}},testnet:!1}),Xk=L({id:120893,name:`Sova Network Sepolia`,nativeCurrency:{decimals:18,name:`Sepolia Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.testnet.sova.io`]}},blockExplorers:{default:{name:`Sova Sepolia Explorer`,url:`https://explorer.testnet.sova.io`}},testnet:!0}),Zk=L({id:88882,name:`Chiliz Spicy Testnet`,network:`chiliz-spicy-Testnet`,nativeCurrency:{decimals:18,name:`CHZ`,symbol:`CHZ`},rpcUrls:{default:{http:[`https://spicy-rpc.chiliz.com`,`https://chiliz-spicy-rpc.publicnode.com`],webSocket:[`wss://spicy-rpc-ws.chiliz.com`,`wss://chiliz-spicy-rpc.publicnode.com`]}},blockExplorers:{default:{name:`Chiliz Explorer`,url:`http://spicy-explorer.chiliz.com`,apiUrl:`http://spicy-explorer.chiliz.com/api`}},testnet:!0}),Qk=L({...RT,id:1660990954,name:`Status Network Sepolia`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://public.sepolia.rpc.status.network`],webSocket:[`wss://public.sepolia.rpc.status.network/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://sepoliascan.status.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1578364}},testnet:!0}),$k=L({id:1234,name:`Step Network`,nativeCurrency:{name:`FITFI`,symbol:`FITFI`,decimals:18},rpcUrls:{default:{http:[`https://rpc.step.network`]}},blockExplorers:{default:{name:`Step Scan`,url:`https://stepscan.io`}},testnet:!1}),eA=L({id:1514,name:`Story`,nativeCurrency:{decimals:18,name:`IP Token`,symbol:`IP`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:340998},ensRegistry:{address:`0x5dc881dda4e4a8d312be3544ad13118d1a04cb17`,blockCreated:648924},ensUniversalResolver:{address:`0xddfb18888a9466688235887dec2a10c4f5effee9`,blockCreated:649114}},rpcUrls:{default:{http:[`https://mainnet.storyrpc.io`]}},blockExplorers:{default:{name:`Story explorer`,url:`https://storyscan.io`,apiUrl:`https://storyscan.io/api/v2`}},ensTlds:[`.ip`],testnet:!1}),tA=L({id:1315,name:`Story Aeneid`,network:`story-aeneid`,nativeCurrency:{decimals:18,name:`IP`,symbol:`IP`},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:1792},ensRegistry:{address:`0x5dC881dDA4e4a8d312be3544AD13118D1a04Cb17`,blockCreated:1322033},ensUniversalResolver:{address:`0x6D3B3F99177FB2A5de7F9E928a9BD807bF7b5BAD`,blockCreated:1322097}},rpcUrls:{default:{http:[`https://aeneid.storyrpc.io`]}},blockExplorers:{default:{name:`Story Aeneid Explorer`,url:`https://aeneid.storyscan.io`,apiUrl:`https://aeneid.storyscan.io/api/v2`}},ensTlds:[`.ip`],testnet:!0}),nA=L({id:1516,name:`Story Odyssey`,nativeCurrency:{decimals:18,name:`IP`,symbol:`IP`},rpcUrls:{default:{http:[`https://rpc.odyssey.storyrpc.io`]}},blockExplorers:{default:{name:`Story Odyssey Explorer`,url:`https://odyssey.storyscan.xyz`}},testnet:!0}),rA=L({id:1513,name:`Story Testnet`,nativeCurrency:{decimals:18,name:`IP`,symbol:`IP`},rpcUrls:{default:{http:[`https://testnet.storyrpc.io`]}},blockExplorers:{default:{name:`Story Testnet Explorer`,url:`https://testnet.storyscan.xyz`}},testnet:!0}),iA=L({id:105105,name:`Stratis Mainnet`,network:`stratis`,nativeCurrency:{name:`Stratis`,symbol:`STRAX`,decimals:18},rpcUrls:{default:{http:[`https://rpc.stratisevm.com`]}},blockExplorers:{default:{name:`Stratis Explorer`,url:`https://explorer.stratisevm.com`}}}),aA=L({id:8866,name:`SuperLumio`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.lumio.io`]}},blockExplorers:{default:{name:`Lumio explorer`,url:`https://explorer.lumio.io`}},testnet:!1}),oA=L({id:55244,name:`Superposition`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.superposition.so`]}},blockExplorers:{default:{name:`Superposition Explorer`,url:`https://explorer.superposition.so`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:39}},testnet:!1});var sA=1;const cA=L({...R,id:5330,name:`Superseed`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.superseed.xyz`]}},blockExplorers:{default:{name:`Superseed Explorer`,url:`https://explorer.superseed.xyz`,apiUrl:`https://explorer.superseed.xyz/api/v2`}},contracts:{...R.contracts,disputeGameFactory:{[sA]:{address:`0x8b097CF1f9BbD9cbFD0DD561858a1FCbC8857Be0`,blockCreated:20737481}},l2OutputOracle:{[sA]:{address:`0x693A0F8854F458D282DE3C5b69E8eE5EEE8aA949`,blockCreated:20737481}},portal:{[sA]:{address:`0x2c2150aa5c75A24fB93d4fD2F2a895D618054f07`,blockCreated:20737481}},l1StandardBridge:{[sA]:{address:`0x8b0576E39F1233679109F9b40cFcC2a7E0901Ede`,blockCreated:20737481}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`}},sourceId:sA});var lA=11155111;const uA=L({...R,id:53302,name:`Superseed Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.superseed.xyz`]}},blockExplorers:{default:{name:`Superseed Sepolia Explorer`,url:`https://sepolia-explorer.superseed.xyz`,apiUrl:`https://sepolia-explorer.superseed.xyz/api/v2`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`},portal:{[lA]:{address:`0x7A0db8C51432d2C3eb4e8f360a2EeB26FF2809fB`,blockCreated:5523438}},l1StandardBridge:{[lA]:{address:`0x2B227A603fAAdB3De0ED050b63ADD232B5f2c28C`,blockCreated:5523442}}},testnet:!0,sourceId:lA}),dA=L({id:763375,name:`Surge Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://l2-rpc.hoodi.surge.wtf`],webSocket:[`wss://l2-ws.hoodi.surge.wtf`]}},blockExplorers:{default:{name:`Surge Testnet Blockscout`,url:`https://explorer.hoodi.surge.wtf`}},testnet:!0}),fA=L({id:254,name:`Swan Chain Mainnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.swanchain.org`]}},blockExplorers:{default:{name:`Swan Explorer`,url:`https://swanscan.io`}},testnet:!1}),pA=L({id:20241133,name:`Swan Proxima Testnet`,nativeCurrency:{name:`Swan Ether`,symbol:`sETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc-proxima.swanchain.io`]}},blockExplorers:{default:{name:`Swan Explorer`,url:`https://proxima-explorer.swanchain.io`}},testnet:!0}),mA=L({id:2024,name:`Swan Saturn Testnet`,nativeCurrency:{name:`Swan Ether`,symbol:`sETH`,decimals:18},rpcUrls:{default:{http:[`https://saturn-rpc.swanchain.io`]}},blockExplorers:{default:{name:`Swan Explorer`,url:`https://saturn-explorer.swanchain.io`}},testnet:!0}),hA=L({...R,id:1923,name:`Swellchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://swell-mainnet.alt.technology`]}},blockExplorers:{default:{name:`Swell Explorer`,url:`https://explorer.swellnetwork.io`,apiUrl:`https://explorer.swellnetwork.io/api`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}}}),gA=L({...R,id:1924,name:`Swellchain Testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://swell-testnet.alt.technology`]}},blockExplorers:{default:{name:`Swellchain Testnet Explorer`,url:`https://swell-testnet-explorer.alt.technology`,apiUrl:`https://swell-testnet-explorer.alt.technology/api`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1}}}),_A=L({id:94,name:`SwissDLT Mainnet`,nativeCurrency:{decimals:18,name:`BCTS`,symbol:`BCTS`},rpcUrls:{default:{http:[`https://rpc.swissdlt.ch`]}},blockExplorers:{default:{name:`SwissDLT Explorer`,url:`https://explorer.swissdlt.ch`}},testnet:!1}),vA=L({id:57,name:`Syscoin Mainnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc.syscoin.org`],webSocket:[`wss://rpc.syscoin.org/wss`]}},blockExplorers:{default:{name:`SyscoinExplorer`,url:`https://explorer.syscoin.org`,apiUrl:`https://explorer.syscoin.org/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:287139}}}),yA=L({id:5700,name:`Syscoin Tanenbaum Testnet`,nativeCurrency:{decimals:18,name:`Syscoin`,symbol:`SYS`},rpcUrls:{default:{http:[`https://rpc.tanenbaum.io`],webSocket:[`wss://rpc.tanenbaum.io/wss`]}},blockExplorers:{default:{name:`SyscoinTestnetExplorer`,url:`https://tanenbaum.io`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:271288}}}),bA=L({id:239,name:`TAC`,nativeCurrency:{name:`TAC`,symbol:`TAC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.ankr.com/tac`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://tac.blockscout.com`,apiUrl:`https://tac.blockscout.com/api`},native:{name:`TAC Explorer`,url:`https://explorer.tac.build`,apiUrl:`https://explorer.tac.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0}}}),xA=L({id:2391,name:`TAC SPB Testnet`,nativeCurrency:{name:`TAC`,symbol:`TAC`,decimals:18},rpcUrls:{default:{http:[`https://spb.rpc.tac.build`]}},blockExplorers:{default:{name:`TAC`,url:`https://spb.explorer.tac.build`,apiUrl:`https://spb.explorer.tac.build/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:471429}},testnet:!0}),SA=L({id:167e3,name:`Taiko Mainnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.mainnet.taiko.xyz`],webSocket:[`wss://ws.mainnet.taiko.xyz`]}},blockExplorers:{default:{name:`Taikoscan`,url:`https://taikoscan.io`,apiUrl:`https://api.taikoscan.io/api`}},contracts:{multicall3:{address:`0xcb2436774C3e191c85056d248EF4260ce5f27A9D`}}}),CA=L({id:167009,name:`Taiko Hekla L2`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.hekla.taiko.xyz`]}},blockExplorers:{default:{name:`Taikoscan`,url:`https://hekla.taikoscan.network`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:59757}},testnet:!0}),wA=L({id:167007,name:`Taiko Jolnir (Alpha-5 Testnet)`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.jolnir.taiko.xyz`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.jolnir.taiko.xyz`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:732706}},testnet:!0}),TA=L({id:167008,name:`Taiko Katla (Alpha-6 Testnet)`,network:`tko-katla`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.katla.taiko.xyz`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.katla.taiko.xyz`}}}),EA=L({id:167005,name:`Taiko (Alpha-3 Testnet)`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.test.taiko.xyz`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.test.taiko.xyz`}}}),DA=L({id:841,name:`Taraxa Mainnet`,nativeCurrency:{name:`Tara`,symbol:`TARA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.mainnet.taraxa.io`]}},blockExplorers:{default:{name:`Taraxa Explorer`,url:`https://explorer.mainnet.taraxa.io`}}}),OA=L({id:842,name:`Taraxa Testnet`,nativeCurrency:{name:`Tara`,symbol:`TARA`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.taraxa.io`]}},blockExplorers:{default:{name:`Taraxa Explorer`,url:`https://explorer.testnet.taraxa.io`}},testnet:!0}),kA=L({id:10218,name:`Tea Sepolia`,nativeCurrency:{name:`Sepolia Tea`,symbol:`TEA`,decimals:18},rpcUrls:{default:{http:[`https://tea-sepolia.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Tea Sepolia Explorer`,url:`https://sepolia.tea.xyz`}},testnet:!0}),AA=L({id:2017,name:`Telcoin Adiri Testnet`,nativeCurrency:{name:`Telcoin`,symbol:`TEL`,decimals:18},rpcUrls:{default:{http:[`https://rpc.telcoin.network`]}},blockExplorers:{default:{name:`telscan`,url:`https://telscan.io`}},testnet:!0}),jA=L({id:40,name:`Telos`,nativeCurrency:{decimals:18,name:`Telos`,symbol:`TLOS`},rpcUrls:{default:{http:[`https://rpc.telos.net`]}},blockExplorers:{default:{name:`Teloscan`,url:`https://www.teloscan.io/`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:246530709}}}),MA=L({id:41,name:`Telos`,nativeCurrency:{decimals:18,name:`Telos`,symbol:`TLOS`},rpcUrls:{default:{http:[`https://rpc.testnet.telos.net`]}},blockExplorers:{default:{name:`Teloscan (testnet)`,url:`https://testnet.teloscan.io/`}},testnet:!0}),NA=L({id:1559,name:`Tenet`,network:`tenet-mainnet`,nativeCurrency:{name:`TENET`,symbol:`TENET`,decimals:18},rpcUrls:{default:{http:[`https://rpc.tenet.org`]}},blockExplorers:{default:{name:`TenetScan Mainnet`,url:`https://tenetscan.io`,apiUrl:`https://tenetscan.io/api`}},testnet:!1}),PA=L({id:752025,name:`Ternoa`,nativeCurrency:{name:`Capsule Coin`,symbol:`CAPS`,decimals:18},rpcUrls:{default:{http:[`https://rpc-mainnet.zkevm.ternoa.network`]}},blockExplorers:{default:{name:`Ternoa Explorer`,url:`https://explorer-mainnet.zkevm.ternoa.network`}},testnet:!1}),FA=L({id:7,name:`ThaiChain`,nativeCurrency:{name:`TCH`,symbol:`TCH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.thaichain.org`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://exp.thaichain.org`,apiUrl:`https://exp.thaichain.org/api`}},contracts:{multicall3:{address:`0x0DaD6130e832c21719C5CE3bae93454E16A84826`,blockCreated:4806386}},testnet:!1}),IA=L({id:8428,name:`THAT Mainnet`,nativeCurrency:{name:`THAT`,symbol:`THAT`,decimals:18},rpcUrls:{default:{http:[`https://api.thatchain.io/mainnet`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://that.blockscout.com`}},testnet:!1}),LA=L({id:361,name:`Theta Mainnet`,nativeCurrency:{name:`TFUEL`,symbol:`TFUEL`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-api.thetatoken.org/rpc`]}},blockExplorers:{default:{name:`Theta Explorer`,url:`https://explorer.thetatoken.org`}},testnet:!1}),RA=L({id:365,name:`Theta Testnet`,nativeCurrency:{name:`TFUEL`,symbol:`TFUEL`,decimals:18},rpcUrls:{default:{http:[`https://eth-rpc-api-testnet.thetatoken.org/rpc`]}},blockExplorers:{default:{name:`Theta Explorer`,url:`https://testnet-explorer.thetatoken.org`}},testnet:!0}),zA=L({id:108,name:`ThunderCore Mainnet`,nativeCurrency:{name:`TT`,symbol:`TT`,decimals:18},rpcUrls:{default:{http:[`https://mainnet-rpc.thundercore.com`]}},blockExplorers:{default:{name:`ThunderCore Explorer`,url:`https://explorer-mainnet.thundercore.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:0}},testnet:!1}),BA=L({id:997,name:`5ireChain Thunder Testnet`,nativeCurrency:{name:`5ire Token`,symbol:`5IRE`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.5ire.network`]}},blockExplorers:{default:{name:`5ireChain Thunder Explorer`,url:`https://testnet.5irescan.io/`}},testnet:!0}),VA=L({id:62092,name:`TikTrix Testnet`,nativeCurrency:{name:`tTTX`,symbol:`tTTX`,decimals:18},rpcUrls:{default:{http:[`https://tiktrix-rpc.xyz`]}},blockExplorers:{default:{name:`TikTrix Testnet Explorer`,url:`https://tiktrix.xyz`}},testnet:!0}),HA=L({id:6969,name:`Tomb Mainnet`,nativeCurrency:{name:`TOMB`,symbol:`TOMB`,decimals:18},rpcUrls:{default:{http:[`https://rpc.tombchain.com`]}},blockExplorers:{default:{name:`Tomb Explorer`,url:`https://tombscout.com`}},testnet:!1}),UA=L({...oy,id:61166,name:`Treasure`,nativeCurrency:{decimals:18,name:`MAGIC`,symbol:`MAGIC`},rpcUrls:{default:{http:[`https://rpc.treasure.lol`],webSocket:[`wss://rpc.treasure.lol/ws`]}},blockExplorers:{default:{name:`Treasure Block Explorer`,url:`https://treasurescan.io`}},contracts:{multicall3:{address:`0x2e29fe39496a56856D8698bD43e1dF4D0CE6266a`,blockCreated:101}},testnet:!1}),WA=L({...oy,id:978658,name:`Treasure Topaz Testnet`,nativeCurrency:{decimals:18,name:`MAGIC`,symbol:`MAGIC`},rpcUrls:{default:{http:[`https://rpc.topaz.treasure.lol`],webSocket:[`wss://rpc.topaz.treasure.lol/ws`]}},blockExplorers:{default:{name:`Treasure Topaz Block Explorer`,url:`https://topaz.treasurescan.io`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`,blockCreated:108112}},testnet:!0}),GA=L({id:728126428,name:`Tron`,nativeCurrency:{name:`TRON`,symbol:`TRX`,decimals:6},rpcUrls:{default:{http:[`https://api.trongrid.io/jsonrpc`]}},blockExplorers:{default:{name:`Tronscan`,url:`https://tronscan.org`,apiUrl:`https://apilist.tronscanapi.com/api`}}}),KA=L({id:3448148188,name:`Tron Nile`,nativeCurrency:{name:`TRON`,symbol:`TRX`,decimals:6},rpcUrls:{default:{http:[`https://nile.trongrid.io/jsonrpc`]}},blockExplorers:{default:{name:`Tronscan`,url:`https://nile.tronscan.org`}},testnet:!0}),qA=L({id:2494104990,name:`Tron Shasta`,nativeCurrency:{name:`TRON`,symbol:`TRX`,decimals:6},rpcUrls:{default:{http:[`https://api.shasta.trongrid.io/jsonrpc`]}},blockExplorers:{default:{name:`Tronscan`,url:`https://shasta.tronscan.org`}},testnet:!0}),JA=L({id:8,name:`Ubiq Mainnet`,nativeCurrency:{name:`UBQ`,symbol:`UBQ`,decimals:18},rpcUrls:{default:{http:[`https://pyrus2.ubiqscan.io`]}},blockExplorers:{default:{name:`Ubiq Scan`,url:`https://ubiqscan.io`}},testnet:!1}),YA=L({id:19991,name:`Ultra EVM`,nativeCurrency:{decimals:18,name:`Ultra Token`,symbol:`UOS`},rpcUrls:{default:{http:[`https://evm.ultra.eosusa.io`]}},blockExplorers:{default:{name:`Ultra EVM Explorer`,url:`https://evmexplorer.ultra.io`}}}),XA=L({id:18881,name:`Ultra EVM Testnet`,nativeCurrency:{decimals:18,name:`Ultra Token`,symbol:`UOS`},rpcUrls:{default:{http:[`https://evm.test.ultra.eosusa.io`]}},blockExplorers:{default:{name:`Ultra EVM Testnet Explorer`,url:`https://evmexplorer.testnet.ultra.io`}},testnet:!0}),ZA=L({id:1231,name:`Ultron Mainnet`,nativeCurrency:{name:`ULX`,symbol:`ULX`,decimals:18},rpcUrls:{default:{http:[`https://ultron-rpc.net`]}},blockExplorers:{default:{name:`Ultron Scan`,url:`https://ulxscan.com`}},testnet:!1}),QA=L({id:1230,name:`Ultron Testnet`,nativeCurrency:{name:`ULX`,symbol:`ULX`,decimals:18},rpcUrls:{default:{http:[`https://ultron-dev.io`]}},blockExplorers:{default:{name:`Ultron Scan`,url:`https://explorer.ultron-dev.io`}},testnet:!0});var $A=1;const ej=L({...R,id:130,name:`Unichain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:1e3,rpcUrls:{default:{http:[`https://mainnet.unichain.org/`]}},blockExplorers:{default:{name:`Uniscan`,url:`https://uniscan.xyz`,apiUrl:`https://api.uniscan.xyz/api`}},contracts:{...R.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},disputeGameFactory:{[$A]:{address:`0x2F12d621a16e2d3285929C9996f478508951dFe4`}},portal:{[$A]:{address:`0x0bd48f6B86a26D3a217d0Fa6FfE2B491B956A7a2`}},l1StandardBridge:{[$A]:{address:`0x81014F44b0a345033bB2b3B21C7a1A308B35fEeA`}}},sourceId:$A});var tj=11155111;const nj=L({...R,id:1301,name:`Unichain Sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:1e3,rpcUrls:{default:{http:[`https://sepolia.unichain.org`]}},blockExplorers:{default:{name:`Uniscan`,url:`https://sepolia.uniscan.xyz`,apiUrl:`https://api-sepolia.uniscan.xyz/api`}},contracts:{...R.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},portal:{[tj]:{address:`0x0d83dab629f0e0F9d36c0Cbc89B69a489f0751bD`}},l1StandardBridge:{[tj]:{address:`0xea58fcA6849d79EAd1f26608855c2D6407d54Ce2`}},disputeGameFactory:{[tj]:{address:`0xeff73e5aa3B9AEC32c659Aa3E00444d20a84394b`}}},testnet:!0,sourceId:tj}),rj=L({id:8880,name:`Unique Mainnet`,nativeCurrency:{decimals:18,name:`UNQ`,symbol:`UNQ`},rpcUrls:{default:{http:[`https://rpc.unique.network`]}},blockExplorers:{default:{name:`Unique Subscan`,url:`https://unique.subscan.io/`}}}),ij=L({id:8882,name:`Opal Testnet`,nativeCurrency:{decimals:18,name:`OPL`,symbol:`OPL`},rpcUrls:{default:{http:[`https://rpc-opal.unique.network`]}},blockExplorers:{default:{name:`Opal Subscan`,url:`https://opal.subscan.io/`}},testnet:!0}),aj=L({id:8881,name:`Quartz Mainnet`,nativeCurrency:{decimals:18,name:`QTZ`,symbol:`QTZ`},rpcUrls:{default:{http:[`https://rpc-quartz.unique.network`]}},blockExplorers:{default:{name:`Quartz Subscan`,url:`https://quartz.subscan.io/`}}}),oj=L({id:18233,name:`Unreal`,nativeCurrency:{name:`reETH`,decimals:18,symbol:`reETH`},rpcUrls:{default:{http:[`https://rpc.unreal-orbit.gelato.digital`]}},blockExplorers:{default:{name:`Unreal Explorer`,url:`https://unreal.blockscout.com`,apiUrl:`https://unreal.blockscout.com/api/v2`}},testnet:!0,contracts:{multicall3:{address:`0x8b6B0e60D8CD84898Ea8b981065A12F876eA5677`,blockCreated:1745}}}),sj=L({id:1480,name:`Vana`,blockTime:6e3,nativeCurrency:{decimals:18,name:`Vana`,symbol:`VANA`},rpcUrls:{default:{http:[`https://rpc.vana.org/`]}},blockExplorers:{default:{name:`Vana Block Explorer`,url:`https://vanascan.io`,apiUrl:`https://vanascan.io/api`}},contracts:{multicall3:{address:`0xD8d2dFca27E8797fd779F8547166A2d3B29d360E`,blockCreated:716763}}}),cj=L({id:14800,name:`Vana Moksha Testnet`,blockTime:6e3,nativeCurrency:{decimals:18,name:`Vana`,symbol:`VANA`},rpcUrls:{default:{http:[`https://rpc.moksha.vana.org`]}},blockExplorers:{default:{name:`Vana Moksha Testnet`,url:`https://moksha.vanascan.io`,apiUrl:`https://moksha.vanascan.io/api`}},contracts:{multicall3:{address:`0xD8d2dFca27E8797fd779F8547166A2d3B29d360E`,blockCreated:732283}},testnet:!0}),lj=L({id:2040,name:`Vanar Mainnet`,nativeCurrency:{name:`VANRY`,symbol:`VANRY`,decimals:18},rpcUrls:{default:{http:[`https://rpc.vanarchain.com`]}},blockExplorers:{default:{name:`Vanar Mainnet Explorer`,url:`https://explorer.vanarchain.com/`}},testnet:!1}),uj=L({id:100009,name:`Vechain`,nativeCurrency:{name:`VeChain`,symbol:`VET`,decimals:18},rpcUrls:{default:{http:[`https://mainnet.vechain.org`]}},blockExplorers:{default:{name:`Vechain Explorer`,url:`https://explore.vechain.org`},vechainStats:{name:`Vechain Stats`,url:`https://vechainstats.com`}}}),dj=L({id:106,name:`Velas EVM Mainnet`,nativeCurrency:{name:`VLX`,symbol:`VLX`,decimals:18},rpcUrls:{default:{http:[`https://evmexplorer.velas.com/rpc`]}},blockExplorers:{default:{name:`Velas Explorer`,url:`https://evmexplorer.velas.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:55883577}},testnet:!1}),fj=L({id:88,name:`Viction`,nativeCurrency:{name:`Viction`,symbol:`VIC`,decimals:18},rpcUrls:{default:{http:[`https://rpc.viction.xyz`]}},blockExplorers:{default:{name:`VIC Scan`,url:`https://vicscan.xyz`}},testnet:!1}),pj=L({id:89,name:`Viction Testnet`,nativeCurrency:{name:`Viction`,symbol:`VIC`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet.viction.xyz`]}},blockExplorers:{default:{name:`VIC Scan`,url:`https://testnet.vicscan.xyz`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:12170179}},testnet:!0}),mj=L({id:888888,name:`Vision`,nativeCurrency:{name:`VISION`,symbol:`VS`,decimals:18},rpcUrls:{default:{http:[`https://infragrid.v.network/ethereum/compatible`]}},blockExplorers:{default:{name:`Vision Scan`,url:`https://visionscan.org`}},testnet:!1}),hj=L({id:666666,name:`Vision Testnet`,nativeCurrency:{name:`VISION`,symbol:`VS`,decimals:18},rpcUrls:{default:{http:[`https://vpioneer.infragrid.v.network/ethereum/compatible`]}},blockExplorers:{default:{name:`Vision Scan`,url:`https://visionscan.org/?chain=vpioneer`}},testnet:!0}),gj=L({id:888,name:`Wanchain`,nativeCurrency:{name:`WANCHAIN`,symbol:`WAN`,decimals:18},rpcUrls:{default:{http:[`https://gwan-ssl.wandevs.org:56891`,`https://gwan2-ssl.wandevs.org`]}},blockExplorers:{default:{name:`WanScan`,url:`https://wanscan.org`}},contracts:{multicall3:{address:`0xcDF6A1566e78EB4594c86Fe73Fcdc82429e97fbB`,blockCreated:25312390}}}),_j=L({id:999,name:`Wanchain Testnet`,nativeCurrency:{name:`WANCHAIN`,symbol:`WANt`,decimals:18},rpcUrls:{default:{http:[`https://gwan-ssl.wandevs.org:46891`]}},blockExplorers:{default:{name:`WanScanTest`,url:`https://wanscan.org`}},contracts:{multicall3:{address:`0x11c89bF4496c39FB80535Ffb4c92715839CC5324`,blockCreated:24743448}},testnet:!0}),vj=L({id:9496,name:`WeaveVM Alphanet`,nativeCurrency:{name:`Testnet WeaveVM`,symbol:`tWVM`,decimals:18},rpcUrls:{default:{http:[`https://testnet-rpc.wvm.dev`]}},blockExplorers:{default:{name:`WeaveVM Alphanet Explorer`,url:`https://explorer.wvm.dev`}},testnet:!0}),yj=L({id:1111,name:`WEMIX`,network:`wemix-mainnet`,nativeCurrency:{name:`WEMIX`,symbol:`WEMIX`,decimals:18},rpcUrls:{default:{http:[`https://api.wemix.com`]}},blockExplorers:{default:{name:`wemixExplorer`,url:`https://explorer.wemix.com`}}}),bj=L({id:1112,name:`WEMIX Testnet`,network:`wemix-testnet`,nativeCurrency:{name:`WEMIX`,symbol:`tWEMIX`,decimals:18},rpcUrls:{default:{http:[`https://api.test.wemix.com`]}},blockExplorers:{default:{name:`wemixExplorer`,url:`https://testnet.wemixscan.com`,apiUrl:`https://testnet.wemixscan.com/api`}},testnet:!0}),xj=L({id:420420421,name:`Westend Asset Hub`,nativeCurrency:{decimals:18,name:`Westies`,symbol:`WND`},rpcUrls:{default:{http:[`https://westend-asset-hub-eth-rpc.polkadot.io`]}},blockExplorers:{default:{name:`subscan`,url:`https://westend-asset-hub-eth-explorer.parity.io`}},testnet:!0}),Sj=L({testnet:!1,name:`Whitechain`,blockExplorers:{default:{name:`Whitechain Explorer`,url:`https://explorer.whitechain.io`}},id:1875,rpcUrls:{default:{http:[`https://rpc.whitechain.io`]}},nativeCurrency:{decimals:18,name:`WhiteBIT Coin`,symbol:`WBT`},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:25212237}}}),Cj=L({testnet:!0,name:`Whitechain Testnet`,blockExplorers:{default:{name:`Whitechain Explorer`,url:`https://testnet.whitechain.io`}},id:2625,rpcUrls:{default:{http:[`https://rpc-testnet.whitechain.io`]}},nativeCurrency:{decimals:18,name:`WhiteBIT Coin`,symbol:`WBT`}}),wj=L({id:42070,name:`WMC Testnet`,nativeCurrency:{name:`WMTx`,symbol:`WMTx`,decimals:18},rpcUrls:{default:{http:[`https://rpc-testnet-base.worldmobile.net`]}},blockExplorers:{default:{name:`WMC Explorer`,url:`https://explorer2-base-testnet.worldmobile.net`}},testnet:!0});var Tj=1;const Ej=L({...R,id:480,name:`World Chain`,network:`worldchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://worldchain-mainnet.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Worldscan`,url:`https://worldscan.org`,apiUrl:`https://api.worldscan.org/api`},blockscout:{name:`Blockscout`,url:`https://worldchain-mainnet.explorer.alchemy.com`,apiUrl:`https://worldchain-mainnet.explorer.alchemy.com/api`}},contracts:{...R.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},disputeGameFactory:{[Tj]:{address:`0x069c4c579671f8c120b1327a73217D01Ea2EC5ea`}},l2OutputOracle:{[Tj]:{address:`0x19A6d1E9034596196295CF148509796978343c5D`}},portal:{[Tj]:{address:`0xd5ec14a83B7d95BE1E2Ac12523e2dEE12Cbeea6C`}},l1StandardBridge:{[Tj]:{address:`0x470458C91978D2d929704489Ad730DC3E3001113`}}},testnet:!1,sourceId:Tj});var Dj=11155111;const Oj=L({...R,id:4801,name:`World Chain Sepolia`,network:`worldchain-sepolia`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://worldchain-sepolia.g.alchemy.com/public`]}},blockExplorers:{default:{name:`Worldscan Sepolia`,url:`https://sepolia.worldscan.org`,apiUrl:`https://api-sepolia.worldscan.org/api`},blockscout:{name:`Blockscout`,url:`https://worldchain-sepolia.explorer.alchemy.com`,apiUrl:`https://worldchain-sepolia.explorer.alchemy.com/api`}},contracts:{...R.contracts,multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:0},disputeGameFactory:{[Dj]:{address:`0x8Ec1111f67Dad6b6A93B3F42DfBC92D81c98449A`}},l2OutputOracle:{[Dj]:{address:`0xc8886f8BAb6Eaeb215aDB5f1c686BF699248300e`}},portal:{[Dj]:{address:`0xFf6EBa109271fe6d4237EeeD4bAb1dD9A77dD1A4`}},l1StandardBridge:{[Dj]:{address:`0xd7DF54b3989855eb66497301a4aAEc33Dbb3F8DE`}}},testnet:!0,sourceId:Dj}),kj=L({id:103,name:`WorldLand Mainnet`,nativeCurrency:{decimals:18,name:`WLC`,symbol:`WLC`},rpcUrls:{default:{http:[`https://seoul.worldland.foundation`]}},blockExplorers:{default:{name:`WorldLand Scan`,url:`https://scan.worldland.foundation`}},testnet:!1}),Aj=L({id:660279,name:`Xai Mainnet`,nativeCurrency:{name:`Xai`,symbol:`XAI`,decimals:18},rpcUrls:{default:{http:[`https://xai-chain.net/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://explorer.xai-chain.net`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:222549}},testnet:!1}),jj=L({id:37714555429,name:`Xai Testnet`,nativeCurrency:{name:`sXai`,symbol:`sXAI`,decimals:18},rpcUrls:{default:{http:[`https://testnet-v2.xai-chain.net/rpc`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://testnet-explorer-v2.xai-chain.net`}},testnet:!0}),Mj=L({id:50,name:`XDC Network`,nativeCurrency:{decimals:18,name:`XDC`,symbol:`XDC`},rpcUrls:{default:{http:[`https://rpc.xdcrpc.com`]}},blockExplorers:{default:{name:`XDCScan`,url:`https://xdcscan.com`}},contracts:{multicall3:{address:`0x0B1795ccA8E4eC4df02346a082df54D437F8D9aF`,blockCreated:75884020}}}),Nj=L({id:51,name:`Apothem Network`,nativeCurrency:{decimals:18,name:`TXDC`,symbol:`TXDC`},rpcUrls:{default:{http:[`https://erpc.apothem.network`]}},blockExplorers:{default:{name:`XDCScan`,url:`https://testnet.xdcscan.com`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:59765389}}}),Pj=L({id:196,name:`X Layer Mainnet`,nativeCurrency:{decimals:18,name:`OKB`,symbol:`OKB`},rpcUrls:{default:{http:[`https://rpc.xlayer.tech`]}},blockExplorers:{default:{name:`OKLink`,url:`https://www.oklink.com/xlayer`,apiUrl:`https://www.oklink.com/api/v5/explorer/xlayer/api`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:47416}}}),Fj=L({id:195,name:`X1 Testnet`,nativeCurrency:{decimals:18,name:`OKB`,symbol:`OKB`},rpcUrls:{default:{http:[`https://xlayertestrpc.okx.com`]}},blockExplorers:{default:{name:`OKLink`,url:`https://www.oklink.com/xlayer-test`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:624344}},testnet:!0}),Ij=L({id:20250217,name:`Xphere Mainnet`,nativeCurrency:{decimals:18,name:`XP`,symbol:`XP`},rpcUrls:{default:{http:[`https://en-bkk.x-phere.com`]}},blockExplorers:{default:{name:`Xphere Tamsa Explorer`,url:`https://xp.tamsa.io`}},testnet:!1}),Lj=L({id:1998991,name:`Xphere Testnet`,nativeCurrency:{decimals:18,name:`XPT`,symbol:`XPT`},rpcUrls:{default:{http:[`http://testnet.x-phere.com`]}},blockExplorers:{default:{name:`Xphere Tamsa Explorer`,url:`https://xpt.tamsa.io`}},testnet:!0}),Rj=L({id:273,name:`XR One`,nativeCurrency:{decimals:18,name:`XR1`,symbol:`XR1`},rpcUrls:{default:{http:[`https://xr1.calderachain.xyz/http`],webSocket:[`wss://xr1.calderachain.xyz/ws`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://xr1.calderaexplorer.xyz`}},testnet:!1}),zj=L({id:1440002,name:`XRPL EVM Devnet`,nativeCurrency:{name:`XRP`,symbol:`XRP`,decimals:18},rpcUrls:{default:{http:[`https://rpc.xrplevm.org/`]},public:{http:[`https://rpc.xrplevm.org/`]}},blockExplorers:{default:{name:`XRPLEVM Devnet Explorer`,url:`https://explorer.xrplevm.org/`}},contracts:{multicall3:{address:`0x82Cc144D7d0AD4B1c27cb41420e82b82Ad6e9B31`,blockCreated:15237286}},testnet:!0}),Bj=L({id:1449e3,name:`XRPL EVM Testnet`,nativeCurrency:{name:`XRP`,symbol:`XRP`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.xrplevm.org`]}},blockExplorers:{default:{name:`blockscout`,url:`https://explorer.testnet.xrplevm.org`,apiUrl:`https://explorer.testnet.xrplevm.org/api/v2`}},contracts:{multicall3:{address:`0x82Cc144D7d0AD4B1c27cb41420e82b82Ad6e9B31`,blockCreated:492302}},testnet:!0}),Vj=L({id:2730,name:`XR Sepolia`,nativeCurrency:{decimals:18,name:`tXR`,symbol:`tXR`},rpcUrls:{default:{http:[`https://xr-sepolia-testnet.rpc.caldera.xyz/http`]}},blockExplorers:{default:{name:`Blockscout`,url:`https://xr-sepolia-testnet.explorer.caldera.xyz`}},testnet:!0}),Hj=L({id:50005,name:`Yooldo Verse`,nativeCurrency:{name:`OAS`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.yooldo-verse.xyz`]}},blockExplorers:{default:{name:`Yooldo Verse Explorer`,url:`https://explorer.yooldo-verse.xyz`}}}),Uj=L({id:50006,name:`Yooldo Verse Testnet`,nativeCurrency:{name:`OAS`,symbol:`OAS`,decimals:18},rpcUrls:{default:{http:[`https://rpc.testnet.yooldo-verse.xyz`]}},blockExplorers:{default:{name:`Yooldo Verse Testnet Explorer`,url:`https://explorer.testnet.yooldo-verse.xyz`}},testnet:!0}),Wj=L({id:8408,name:`ZenChain Testnet`,nativeCurrency:{decimals:18,name:`ZTC`,symbol:`ZTC`},rpcUrls:{default:{http:[`https://zenchain-testnet.api.onfinality.io/public`],webSocket:[`wss://zenchain-testnet.api.onfinality.io/public-ws`]}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:230019}},blockExplorers:{default:{name:`Zentrace`,url:`https://zentrace.io`}},testnet:!0}),Gj=L({id:383414847825,name:`Zeniq Mainnet`,nativeCurrency:{name:`ZENIQ`,symbol:`ZENIQ`,decimals:18},rpcUrls:{default:{http:[`https://api.zeniq.network`]}},blockExplorers:{default:{name:`Zeniq Explorer`,url:`https://zeniqscan.com`}},testnet:!1}),Kj=L({id:543210,name:`Zero Network`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.zerion.io/v1/zero`]}},blockExplorers:{default:{name:`Zero Network Explorer`,url:`https://explorer.zero.network`}},testnet:!1}),qj=L({id:7e3,name:`ZetaChain`,nativeCurrency:{decimals:18,name:`Zeta`,symbol:`ZETA`},rpcUrls:{default:{http:[`https://zetachain-evm.blockpi.network/v1/rpc/public`]}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:1632781}},blockExplorers:{default:{name:`ZetaScan`,url:`https://zetascan.com`}},testnet:!1}),Jj=L({id:7001,name:`ZetaChain Athens Testnet`,nativeCurrency:{decimals:18,name:`Zeta`,symbol:`aZETA`},rpcUrls:{default:{http:[`https://zetachain-athens-evm.blockpi.network/v1/rpc/public`]}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:2715217}},blockExplorers:{default:{name:`ZetaScan`,url:`https://testnet.zetascan.com`}},testnet:!0}),Yj=L({id:1337803,name:`Zhejiang`,nativeCurrency:{name:`Zhejiang Ether`,symbol:`ZhejETH`,decimals:18},rpcUrls:{default:{http:[`https://rpc.zhejiang.ethpandaops.io`]}},blockExplorers:{default:{name:`Beaconchain`,url:`https://zhejiang.beaconcha.in`}},testnet:!0}),Xj=L({id:32769,name:`Zilliqa`,network:`zilliqa`,nativeCurrency:{name:`Zilliqa`,symbol:`ZIL`,decimals:18},rpcUrls:{default:{http:[`https://api.zilliqa.com`]}},blockExplorers:{default:{name:`Ethernal`,url:`https://evmx.zilliqa.com`}},testnet:!1}),Zj=L({id:33101,name:`Zilliqa Testnet`,network:`zilliqa-testnet`,nativeCurrency:{name:`Zilliqa`,symbol:`ZIL`,decimals:18},rpcUrls:{default:{http:[`https://dev-api.zilliqa.com`]}},blockExplorers:{default:{name:`Ethernal`,url:`https://evmx.testnet.zilliqa.com`}},testnet:!0});var Qj=1;const $j=L({...R,id:48900,name:`Zircuit Mainnet`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.zircuit.com`,`https://zircuit1-mainnet.liquify.com`,`https://zircuit1-mainnet.p2pify.com`,`https://zircuit-mainnet.drpc.org`]}},blockExplorers:{default:{name:`Zircuit Explorer`,url:`https://explorer.zircuit.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`},l2OutputOracle:{[Qj]:{address:`0x92Ef6Af472b39F1b363da45E35530c24619245A4`}},portal:{[Qj]:{address:`0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1`}},l1StandardBridge:{[Qj]:{address:`0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8`}}},testnet:!1});var eM=11155111;const tM=L({...R,id:48898,name:`Zircuit Garfield Testnet`,nativeCurrency:{name:`ETH`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://garfield-testnet.zircuit.com/`]}},blockExplorers:{default:{name:`Zircuit Garfield Testnet Explorer`,url:`https://explorer.garfield-testnet.zircuit.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`},l2OutputOracle:{[eM]:{address:`0xd69D3AC5CA686cCF94b258291772bc520FEAf211`}},portal:{[eM]:{address:`0x4E21A71Ac3F7607Da5c06153A17B1DD20E702c21`}},l1StandardBridge:{[eM]:{address:`0x87a7E2bCA9E35BA49282E832a28A6023904460D8`}}},testnet:!0});var nM=11155111;const rM=L({...R,id:48899,name:`Zircuit Testnet`,nativeCurrency:{name:`ETH`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://testnet.zircuit.com`,`https://zircuit1-testnet.p2pify.com`,`https://zircuit1-testnet.liquify.com`]}},blockExplorers:{default:{name:`Zircuit Testnet Explorer`,url:`https://explorer.testnet.zircuit.com`}},contracts:{multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:6040287},l2OutputOracle:{[nM]:{address:`0x740C2dac453aEf7140809F80b72bf0e647af8148`}},portal:{[nM]:{address:`0x787f1C8c5924178689E0560a43D848bF8E54b23e`}},l1StandardBridge:{[nM]:{address:`0x0545c5fe980098C16fcD0eCB5E79753afa6d9af9`}}},testnet:!0}),iM=L({id:42766,name:`ZKFair Mainnet`,network:`zkfair-mainnet`,nativeCurrency:{decimals:18,name:`USD Coin`,symbol:`USDC`},rpcUrls:{default:{http:[`https://rpc.zkfair.io`]}},blockExplorers:{default:{name:`zkFair Explorer`,url:`https://scan.zkfair.io`,apiUrl:`https://scan.zkfair.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:6090959}},testnet:!1}),aM=L({id:43851,name:`ZKFair Testnet`,network:`zkfair-testnet`,nativeCurrency:{decimals:18,name:`USD Coin`,symbol:`USDC`},rpcUrls:{default:{http:[`https://testnet-rpc.zkfair.io`]}},blockExplorers:{default:{name:`zkFair Explorer`,url:`https://testnet-scan.zkfair.io`}},testnet:!0}),oM=L({id:810180,name:`zkLink Nova`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.zklink.io`]}},blockExplorers:{default:{name:`zkLink Nova Block Explorer`,url:`https://explorer.zklink.io`}}}),sM=L({id:810181,name:`zkLink Nova Sepolia Testnet`,nativeCurrency:{decimals:18,name:`ETH`,symbol:`ETH`},rpcUrls:{default:{http:[`https://sepolia.rpc.zklink.io`]}},blockExplorers:{default:{name:`zkLink Nova Block Explorer`,url:`https://sepolia.explorer.zklink.io`}}}),cM=L({...oy,id:324,name:`ZKsync Era`,network:`zksync-era`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://mainnet.era.zksync.io`],webSocket:[`wss://mainnet.era.zksync.io/ws`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://era.zksync.network/`,apiUrl:`https://api-era.zksync.network/api`},native:{name:`ZKsync Explorer`,url:`https://explorer.zksync.io/`,apiUrl:`https://block-explorer-api.mainnet.zksync.io/api`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:45659388}}}),lM=L({...oy,id:260,name:`ZKsync InMemory Node`,network:`zksync-in-memory-node`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:8011`]}},testnet:!0}),uM=L({...oy,id:272,name:`ZKsync CLI Local Custom Hyperchain`,nativeCurrency:{name:`BAT`,symbol:`BAT`,decimals:18},rpcUrls:{default:{http:[`http://localhost:15200`],webSocket:[`ws://localhost:15201`]}},blockExplorers:{default:{name:`ZKsync explorer`,url:`http://localhost:15005/`,apiUrl:`http://localhost:15005/api`}},testnet:!0}),dM=L({...oy,id:270,name:`ZKsync CLI Local Hyperchain`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:15100`],webSocket:[`ws://localhost:15101`]}},blockExplorers:{default:{name:`ZKsync explorer`,url:`http://localhost:15005/`,apiUrl:`http://localhost:15005/api`}},testnet:!0}),fM=L({id:9,name:`ZKsync CLI Local Hyperchain L1`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:15045`]}},blockExplorers:{default:{name:`Blockscout`,url:`http://localhost:15001/`,apiUrl:`http://localhost:15001/api/v2`}},testnet:!0}),pM=L({...oy,id:270,name:`ZKsync CLI Local Node`,network:`zksync-cli-local-node`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`http://localhost:3050`]}},testnet:!0}),mM=L({...oy,id:300,name:`ZKsync Sepolia Testnet`,network:`zksync-sepolia-testnet`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia.era.zksync.dev`],webSocket:[`wss://sepolia.era.zksync.dev/ws`]}},blockExplorers:{default:{name:`Etherscan`,url:`https://sepolia-era.zksync.network/`,apiUrl:`https://api-sepolia-era.zksync.network/api`},native:{name:`ZKsync Explorer`,url:`https://sepolia.explorer.zksync.io/`,blockExplorerApi:`https://block-explorer-api.sepolia.zksync.dev/api`}},contracts:{multicall3:{address:`0xF9cda624FBC7e059355ce98a31693d299FACd963`},erc6492Verifier:{address:`0xfB688330379976DA81eB64Fe4BF50d7401763B9C`,blockCreated:3855712}},testnet:!0});var hM=1;const gM=L({...R,id:7777777,name:`Zora`,nativeCurrency:{decimals:18,name:`Ether`,symbol:`ETH`},rpcUrls:{default:{http:[`https://rpc.zora.energy`],webSocket:[`wss://rpc.zora.energy`]}},blockExplorers:{default:{name:`Explorer`,url:`https://explorer.zora.energy`,apiUrl:`https://explorer.zora.energy/api`}},contracts:{...R.contracts,l2OutputOracle:{[hM]:{address:`0x9E6204F750cD866b299594e2aC9eA824E2e5f95c`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:5882},portal:{[hM]:{address:`0x1a0ad011913A150f69f6A19DF447A0CfD9551054`}},l1StandardBridge:{[hM]:{address:`0x3e2Ea9B92B7E48A52296fD261dc26fd995284631`}}},sourceId:hM});var _M=11155111;const vM=L({...R,id:999999999,name:`Zora Sepolia`,network:`zora-sepolia`,nativeCurrency:{decimals:18,name:`Zora Sepolia`,symbol:`ETH`},rpcUrls:{default:{http:[`https://sepolia.rpc.zora.energy`],webSocket:[`wss://sepolia.rpc.zora.energy`]}},blockExplorers:{default:{name:`Zora Sepolia Explorer`,url:`https://sepolia.explorer.zora.energy/`,apiUrl:`https://sepolia.explorer.zora.energy/api`}},contracts:{...R.contracts,l2OutputOracle:{[_M]:{address:`0x2615B481Bd3E5A1C0C7Ca3Da1bdc663E8615Ade9`}},multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:83160},portal:{[_M]:{address:`0xeffE2C6cA9Ab797D418f0D91eA60807713f3536f`}},l1StandardBridge:{[_M]:{address:`0x5376f1D543dcbB5BD416c56C189e4cB7399fCcCB`}}},sourceId:_M,testnet:!0});var yM=5;const bM=L({...R,id:999,name:`Zora Goerli Testnet`,nativeCurrency:{decimals:18,name:`Zora Goerli`,symbol:`ETH`},rpcUrls:{default:{http:[`https://testnet.rpc.zora.energy`],webSocket:[`wss://testnet.rpc.zora.energy`]}},blockExplorers:{default:{name:`Explorer`,url:`https://testnet.explorer.zora.energy`,apiUrl:`https://testnet.explorer.zora.energy/api`}},contracts:{...R.contracts,multicall3:{address:`0xcA11bde05977b3631167028862bE2a173976CA11`,blockCreated:189123},portal:{[yM]:{address:`0xDb9F51790365e7dc196e7D072728df39Be958ACe`}}},sourceId:yM,testnet:!0});var xM=c({abey:()=>Wv,abstract:()=>sy,abstractTestnet:()=>cy,acala:()=>ly,acria:()=>uy,adf:()=>dy,agungTestnet:()=>fy,aioz:()=>py,alephZero:()=>my,alephZeroTestnet:()=>hy,alienx:()=>gy,alienxHalTestnet:()=>_y,ancient8:()=>Ey,ancient8Sepolia:()=>Oy,anvil:()=>ky,apeChain:()=>Ay,apexTestnet:()=>jy,arbitrum:()=>My,arbitrumGoerli:()=>Ny,arbitrumNova:()=>Py,arbitrumSepolia:()=>Fy,arenaz:()=>Iy,areonNetwork:()=>Ly,areonNetworkTestnet:()=>Ry,areum:()=>zy,artelaTestnet:()=>By,arthera:()=>Vy,artheraTestnet:()=>Hy,assetChain:()=>Uy,assetChainTestnet:()=>Wy,astar:()=>Gy,astarZkEVM:()=>Ky,astarZkyoto:()=>qy,atletaOlympia:()=>Jy,aurora:()=>Yy,auroraTestnet:()=>Xy,auroria:()=>Zy,autheoTestnet:()=>Qy,avalanche:()=>$y,avalancheFuji:()=>eb,b3:()=>tb,b3Sepolia:()=>nb,bahamut:()=>rb,base:()=>ab,baseGoerli:()=>lb,basePreconf:()=>ob,baseSepolia:()=>db,baseSepoliaPreconf:()=>fb,basecampTestnet:()=>sb,beam:()=>pb,beamTestnet:()=>mb,bearNetworkChainMainnet:()=>hb,bearNetworkChainTestnet:()=>gb,berachain:()=>_b,berachainBepolia:()=>vb,berachainTestnet:()=>yb,berachainTestnetbArtio:()=>bb,bevmMainnet:()=>xb,bifrost:()=>Sb,birdlayer:()=>Cb,bitTorrent:()=>Ab,bitTorrentTestnet:()=>jb,bitgert:()=>wb,bitkub:()=>Tb,bitkubTestnet:()=>Eb,bitlayer:()=>Db,bitlayerTestnet:()=>Ob,bitrock:()=>kb,blast:()=>Nb,blastSepolia:()=>Pb,bob:()=>Ib,bobSepolia:()=>Bb,boba:()=>Lb,bobaSepolia:()=>Rb,boolBetaMainnet:()=>Vb,botanix:()=>Hb,botanixTestnet:()=>Ub,bounceBit:()=>Wb,bounceBitTestnet:()=>Gb,bronos:()=>Kb,bronosTestnet:()=>qb,bsc:()=>Jb,bscGreenfield:()=>Yb,bscTestnet:()=>Xb,bsquared:()=>Zb,bsquaredTestnet:()=>Qb,btr:()=>$b,btrTestnet:()=>ex,bxn:()=>tx,bxnTestnet:()=>nx,cannon:()=>rx,canto:()=>ix,celo:()=>yx,celoAlfajores:()=>xx,celoSepolia:()=>Cx,chang:()=>wx,chiliz:()=>Tx,chips:()=>Ex,citreaTestnet:()=>Dx,classic:()=>Ox,coinbit:()=>kx,coinex:()=>Ax,confluxESpace:()=>jx,confluxESpaceTestnet:()=>Mx,coreDao:()=>Nx,coreTestnet1:()=>Px,coreTestnet2:()=>Fx,corn:()=>Ix,cornTestnet:()=>Lx,crab:()=>Rx,creatorTestnet:()=>zx,creditCoin3Devnet:()=>Bx,creditCoin3Mainnet:()=>Vx,creditCoin3Testnet:()=>Hx,cronos:()=>Ux,cronosTestnet:()=>Wx,cronoszkEVM:()=>Gx,cronoszkEVMTestnet:()=>Kx,crossbell:()=>qx,crossfi:()=>Jx,curtis:()=>Yx,cyber:()=>Xx,cyberTestnet:()=>Zx,dailyNetwork:()=>Qx,dailyNetworkTestnet:()=>$x,darwinia:()=>eS,dbkchain:()=>tS,dchain:()=>nS,dchainTestnet:()=>rS,defichainEvm:()=>iS,defichainEvmTestnet:()=>aS,degen:()=>oS,dfk:()=>sS,diode:()=>cS,disChain:()=>lS,dodochainTestnet:()=>uS,dogechain:()=>dS,domaTestnet:()=>fS,donatuz:()=>pS,dosChain:()=>mS,dosChainTestnet:()=>hS,dreyerxMainnet:()=>gS,dreyerxTestnet:()=>_S,dustboyIoT:()=>vS,dymension:()=>yS,edexa:()=>bS,edexaTestnet:()=>xS,edgeless:()=>SS,edgelessTestnet:()=>CS,edgeware:()=>wS,edgewareTestnet:()=>TS,eduChain:()=>ES,eduChainTestnet:()=>DS,ekta:()=>OS,ektaTestnet:()=>kS,elastos:()=>AS,elastosTestnet:()=>jS,electroneum:()=>MS,electroneumTestnet:()=>NS,elysiumTestnet:()=>PS,energy:()=>FS,eni:()=>IS,eniTestnet:()=>LS,enuls:()=>RS,eon:()=>zS,eos:()=>BS,eosTestnet:()=>VS,eteria:()=>HS,etherlink:()=>US,etherlinkTestnet:()=>WS,ethernity:()=>GS,etp:()=>KS,evmos:()=>qS,evmosTestnet:()=>JS,excelonMainnet:()=>YS,expanse:()=>XS,exsat:()=>ZS,exsatTestnet:()=>QS,fantom:()=>$S,fantomSonicTestnet:()=>eC,fantomTestnet:()=>tC,fibo:()=>nC,filecoin:()=>rC,filecoinCalibration:()=>iC,filecoinHyperspace:()=>aC,fireChain:()=>Uv,flame:()=>oC,flare:()=>sC,flareTestnet:()=>cC,flowMainnet:()=>lC,flowPreviewnet:()=>uC,flowTestnet:()=>dC,fluence:()=>fC,fluenceStage:()=>pC,fluenceTestnet:()=>mC,fluentTestnet:()=>hC,form:()=>_C,formTestnet:()=>bC,forma:()=>vC,formicarium:()=>CE,forta:()=>xC,foundry:()=>SC,fraxtal:()=>wC,fraxtalTestnet:()=>EC,funkiMainnet:()=>OC,funkiSepolia:()=>AC,fuse:()=>jC,fuseSparknet:()=>MC,fusion:()=>NC,fusionTestnet:()=>PC,garnet:()=>IC,geist:()=>LC,genesys:()=>RC,giwaSepolia:()=>BC,glideL1Protocol:()=>VC,glideL2Protocol:()=>HC,gnosis:()=>UC,gnosisChiado:()=>WC,goChain:()=>qC,goat:()=>GC,gobi:()=>KC,godwoken:()=>JC,goerli:()=>YC,graphite:()=>XC,graphiteTestnet:()=>ZC,gravity:()=>QC,gunz:()=>$C,guruNetwork:()=>ew,guruTestnet:()=>tw,ham:()=>nw,happychainTestnet:()=>rw,haqqMainnet:()=>iw,haqqTestedge2:()=>aw,hardhat:()=>ow,harmonyOne:()=>sw,hashkey:()=>cw,hashkeyTestnet:()=>lw,haustTestnet:()=>uw,hedera:()=>dw,hederaPreviewnet:()=>fw,hederaTestnet:()=>pw,hela:()=>mw,hemi:()=>hw,hemiSepolia:()=>gw,holesky:()=>_w,hoodi:()=>vw,hpb:()=>yw,huddle01Mainnet:()=>bw,huddle01Testnet:()=>xw,humanity:()=>Sw,humanityTestnet:()=>Cw,humanode:()=>ww,humanodeTestnet5:()=>Tw,hychain:()=>Ew,hychainTestnet:()=>Dw,hyperliquidEvmTestnet:()=>Ow,iSunCoin:()=>Kw,icbNetwork:()=>kw,idchain:()=>Aw,immutableZkEvm:()=>jw,immutableZkEvmTestnet:()=>Mw,inEVM:()=>Nw,initVerse:()=>Pw,initVerseGenesis:()=>Fw,injective:()=>Iw,injectiveTestnet:()=>Lw,ink:()=>zw,inkSepolia:()=>Vw,iota:()=>Hw,iotaTestnet:()=>Uw,iotex:()=>Ww,iotexTestnet:()=>Gw,jbc:()=>qw,jbcTestnet:()=>Jw,jocMainnet:()=>Yw,jocTestnet:()=>Xw,jovay:()=>Zw,jovaySepolia:()=>Qw,juneo:()=>$w,juneoBCH1Chain:()=>eT,juneoDAI1Chain:()=>tT,juneoDOGE1Chain:()=>nT,juneoEUR1Chain:()=>rT,juneoGLD1Chain:()=>iT,juneoLINK1Chain:()=>aT,juneoLTC1Chain:()=>oT,juneoSGD1Chain:()=>cT,juneoSocotraTestnet:()=>lT,juneoUSD1Chain:()=>uT,juneoUSDT1Chain:()=>dT,juneomBTC1Chain:()=>sT,kaia:()=>fT,kairos:()=>pT,kakarotSepolia:()=>mT,kakarotStarknetSepolia:()=>hT,kardiaChain:()=>gT,karura:()=>_T,katana:()=>vT,kava:()=>yT,kavaTestnet:()=>bT,kcc:()=>xT,kiiTestnetOro:()=>ST,kinto:()=>CT,klaytn:()=>wT,klaytnBaobab:()=>TT,koi:()=>ET,kroma:()=>DT,kromaSepolia:()=>OT,l3x:()=>kT,l3xTestnet:()=>AT,lavita:()=>jT,lens:()=>MT,lensTestnet:()=>NT,lestnet:()=>PT,lightlinkPegasus:()=>FT,lightlinkPhoenix:()=>IT,linea:()=>BT,lineaGoerli:()=>VT,lineaSepolia:()=>HT,lineaTestnet:()=>UT,lisk:()=>GT,liskSepolia:()=>qT,loadAlphanet:()=>JT,localhost:()=>YT,loop:()=>XT,lukso:()=>ZT,luksoTestnet:()=>QT,lumiaMainnet:()=>$T,lumiaTestnet:()=>eE,lumoz:()=>tE,lumozTestnet:()=>nE,lycan:()=>rE,lyra:()=>iE,mainnet:()=>aE,mandala:()=>oE,manta:()=>sE,mantaSepoliaTestnet:()=>cE,mantaTestnet:()=>lE,mantle:()=>uE,mantleSepoliaTestnet:()=>dE,mantleTestnet:()=>fE,mantraDuKongEVMTestnet:()=>pE,mantraEVM:()=>mE,mapProtocol:()=>hE,matchain:()=>gE,matchainTestnet:()=>_E,mchVerse:()=>vE,megaethTestnet:()=>yE,mekong:()=>bE,meld:()=>xE,memecore:()=>SE,merlin:()=>wE,merlinErigonTestnet:()=>TE,metachain:()=>EE,metachainIstanbul:()=>DE,metadium:()=>OE,metalL2:()=>AE,meter:()=>jE,meterTestnet:()=>ME,metis:()=>NE,metisGoerli:()=>PE,metisSepolia:()=>FE,mev:()=>IE,mevTestnet:()=>LE,mint:()=>RE,mintSepoliaTestnet:()=>zE,mitosisTestnet:()=>BE,mode:()=>HE,modeTestnet:()=>WE,monadTestnet:()=>GE,moonbaseAlpha:()=>KE,moonbeam:()=>qE,moonbeamDev:()=>JE,moonriver:()=>YE,morph:()=>XE,morphHolesky:()=>ZE,morphSepolia:()=>QE,nahmii:()=>$E,nautilus:()=>eD,near:()=>tD,nearTestnet:()=>nD,neonDevnet:()=>rD,neonMainnet:()=>iD,neoxMainnet:()=>aD,neoxT4:()=>oD,newton:()=>sD,nexi:()=>cD,nexilix:()=>lD,nibiru:()=>uD,nitrographTestnet:()=>dD,oasisTestnet:()=>fD,oasys:()=>pD,odysseyTestnet:()=>mD,okc:()=>hD,omax:()=>gD,omni:()=>_D,omniOmega:()=>vD,oneWorld:()=>yD,oortMainnetDev:()=>bD,opBNB:()=>SD,opBNBTestnet:()=>wD,openledger:()=>TD,optimism:()=>DD,optimismGoerli:()=>kD,optimismSepolia:()=>jD,optopia:()=>MD,optopiaTestnet:()=>ND,orderly:()=>PD,orderlySepolia:()=>FD,otimDevnet:()=>ID,palm:()=>LD,palmTestnet:()=>RD,peaq:()=>zD,pgn:()=>VD,pgnTestnet:()=>UD,phoenix:()=>WD,planq:()=>GD,plasma:()=>KD,plasmaDevnet:()=>qD,plasmaTestnet:()=>JD,playfiAlbireo:()=>YD,plinga:()=>XD,plume:()=>ZD,plumeDevnet:()=>QD,plumeMainnet:()=>$D,plumeSepolia:()=>eO,plumeTestnet:()=>tO,polterTestnet:()=>nO,polygon:()=>rO,polygonAmoy:()=>iO,polygonMumbai:()=>aO,polygonZkEvm:()=>oO,polygonZkEvmCardona:()=>sO,polygonZkEvmTestnet:()=>cO,polynomial:()=>lO,polynomialSepolia:()=>uO,premiumBlockTestnet:()=>dO,pulsechain:()=>fO,pulsechainV4:()=>pO,pumpfiTestnet:()=>mO,pyrope:()=>gO,qMainnet:()=>vO,qTestnet:()=>yO,ql1:()=>_O,real:()=>bO,redbellyMainnet:()=>xO,redbellyTestnet:()=>SO,reddio:()=>CO,reddioSepolia:()=>wO,redstone:()=>EO,rei:()=>DO,reyaNetwork:()=>OO,riseTestnet:()=>kO,rivalz:()=>AO,rollux:()=>jO,rolluxTestnet:()=>MO,ronin:()=>NO,root:()=>PO,rootPorcini:()=>FO,rootstock:()=>IO,rootstockTestnet:()=>LO,rss3:()=>zO,rss3Sepolia:()=>VO,saakuru:()=>HO,saga:()=>UO,saigon:()=>WO,sanko:()=>GO,sapphire:()=>KO,sapphireTestnet:()=>qO,satoshiVM:()=>JO,satoshiVMTestnet:()=>YO,scroll:()=>XO,scrollSepolia:()=>ZO,sei:()=>QO,seiDevnet:()=>$O,seiTestnet:()=>tk,seismicDevnet:()=>ek,sepolia:()=>nk,shape:()=>ik,shapeSepolia:()=>ok,shardeum:()=>sk,shardeumSphinx:()=>ck,shibarium:()=>lk,shibariumTestnet:()=>uk,shiden:()=>dk,shimmer:()=>fk,shimmerTestnet:()=>pk,sidraChain:()=>mk,silicon:()=>hk,siliconSepolia:()=>gk,sixProtocol:()=>_k,skaleBlockBrawlers:()=>vk,skaleCalypso:()=>yk,skaleCalypsoTestnet:()=>bk,skaleCryptoBlades:()=>xk,skaleCryptoColosseum:()=>Sk,skaleEuropa:()=>Ck,skaleEuropaTestnet:()=>wk,skaleExorde:()=>Tk,skaleHumanProtocol:()=>Ek,skaleNebula:()=>Dk,skaleNebulaTestnet:()=>Ok,skaleRazor:()=>kk,skaleTitan:()=>Ak,skaleTitanTestnet:()=>jk,sketchpad:()=>Mk,snax:()=>Pk,snaxTestnet:()=>Ik,somniaTestnet:()=>Lk,soneium:()=>zk,soneiumMinato:()=>Vk,songbird:()=>Hk,songbirdTestnet:()=>Uk,sonic:()=>Wk,sonicBlazeTestnet:()=>Gk,sonicTestnet:()=>Kk,sophon:()=>qk,sophonTestnet:()=>Jk,sova:()=>Yk,sovaSepolia:()=>Xk,spicy:()=>Zk,statusNetworkSepolia:()=>Qk,statusSepolia:()=>Qk,step:()=>$k,story:()=>eA,storyAeneid:()=>tA,storyOdyssey:()=>nA,storyTestnet:()=>rA,stratis:()=>iA,superlumio:()=>aA,superposition:()=>oA,superseed:()=>cA,superseedSepolia:()=>uA,surgeTestnet:()=>dA,swan:()=>fA,swanProximaTestnet:()=>pA,swanSaturnTestnet:()=>mA,swellchain:()=>hA,swellchainTestnet:()=>gA,swissdlt:()=>_A,syscoin:()=>vA,syscoinTestnet:()=>yA,tac:()=>bA,tacSPB:()=>xA,taiko:()=>SA,taikoHekla:()=>CA,taikoJolnir:()=>wA,taikoKatla:()=>TA,taikoTestnetSepolia:()=>EA,taraxa:()=>DA,taraxaTestnet:()=>OA,teaSepolia:()=>kA,telcoinTestnet:()=>AA,telos:()=>jA,telosTestnet:()=>MA,tenet:()=>NA,ternoa:()=>PA,thaiChain:()=>FA,that:()=>IA,theta:()=>LA,thetaTestnet:()=>RA,thunderCore:()=>zA,thunderTestnet:()=>BA,tiktrixTestnet:()=>VA,tomb:()=>HA,treasure:()=>UA,treasureTopaz:()=>WA,tron:()=>GA,tronNile:()=>KA,tronShasta:()=>qA,ubiq:()=>JA,ultra:()=>YA,ultraTestnet:()=>XA,ultron:()=>ZA,ultronTestnet:()=>QA,unichain:()=>ej,unichainSepolia:()=>nj,unique:()=>rj,uniqueOpal:()=>ij,uniqueQuartz:()=>aj,unreal:()=>oj,vana:()=>sj,vanaMoksha:()=>cj,vanar:()=>lj,vechain:()=>uj,velas:()=>dj,viction:()=>fj,victionTestnet:()=>pj,vision:()=>mj,visionTestnet:()=>hj,wanchain:()=>gj,wanchainTestnet:()=>_j,weaveVMAlphanet:()=>vj,wemix:()=>yj,wemixTestnet:()=>bj,westendAssetHub:()=>xj,whitechain:()=>Sj,whitechainTestnet:()=>Cj,wmcTestnet:()=>wj,worldLand:()=>kj,worldchain:()=>Ej,worldchainSepolia:()=>Oj,x1Testnet:()=>Fj,xLayer:()=>Pj,xLayerTestnet:()=>Fj,xai:()=>Aj,xaiTestnet:()=>jj,xdc:()=>Mj,xdcTestnet:()=>Nj,xphereMainnet:()=>Ij,xphereTestnet:()=>Lj,xrOne:()=>Rj,xrSepolia:()=>Vj,xrplevmDevnet:()=>zj,xrplevmTestnet:()=>Bj,yooldoVerse:()=>Hj,yooldoVerseTestnet:()=>Uj,zenchainTestnet:()=>Wj,zeniq:()=>Gj,zeroG:()=>Bv,zeroGGalileoTestnet:()=>Vv,zeroGMainnet:()=>Hv,zeroNetwork:()=>Kj,zetachain:()=>qj,zetachainAthensTestnet:()=>Jj,zhejiang:()=>Yj,zilliqa:()=>Xj,zilliqaTestnet:()=>Zj,zircuit:()=>$j,zircuitGarfieldTestnet:()=>tM,zircuitTestnet:()=>rM,zkFair:()=>iM,zkFairTestnet:()=>aM,zkLinkNova:()=>oM,zkLinkNovaSepoliaTestnet:()=>sM,zkSync:()=>cM,zkSyncInMemoryNode:()=>lM,zkSyncLocalNode:()=>pM,zkSyncSepoliaTestnet:()=>mM,zksync:()=>cM,zksyncInMemoryNode:()=>lM,zksyncLocalCustomHyperchain:()=>uM,zksyncLocalHyperchain:()=>dM,zksyncLocalHyperchainL1:()=>fM,zksyncLocalNode:()=>pM,zksyncSepoliaTestnet:()=>mM,zora:()=>gM,zoraSepolia:()=>vM,zoraTestnet:()=>bM}),SM=c({arbitrum:()=>My,arbitrumSepolia:()=>Fy,base:()=>ab,baseSepolia:()=>db,berachain:()=>_b,berachainBepolia:()=>vb,bsc:()=>Jb,celo:()=>yx,gnosis:()=>UC,hoodi:()=>vw,katana:()=>vT,mainnet:()=>aE,optimism:()=>DD,optimismSepolia:()=>jD,polygon:()=>rO,sepolia:()=>nk});const CM=[ab,...Object.values(SM).filter(e=>e&&e.id!==ab.id)],wM=ky;({...wM}),{...wM};var TM=u(s(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i`IntersectionObserver`in window&&`IntersectionObserverEntry`in window&&`intersectionRatio`in IntersectionObserverEntry.prototype&&`isVisible`in IntersectionObserverEntry.prototype;function oN(e={}){let{prefix:t=`[Porto]`}=e,n=new Set;return{error:cN(console.error,{prefix:t}),errorOnce:cN(console.error,{memo:n,prefix:t}),log:cN(console.log,{prefix:t}),logOnce:cN(console.log,{memo:n,prefix:t}),warn:cN(console.warn,{prefix:t}),warnOnce:cN(console.warn,{memo:n,prefix:t})}}const sN=oN();function cN(e,t={}){let{memo:n,prefix:r}=t;return(...t)=>{let i=t.join(` `);n?.has(i)||(n?.add(i),e(`${r} ${i}`))}}function lN(){let e=navigator.userAgent.toLowerCase();return e.includes(`safari`)&&!e.includes(`chrome`)}function uN(){let e=navigator.userAgent.toLowerCase();return(e.includes(`firefox`)||e.includes(`fxios`))&&!e.includes(`seamonkey`)}function dN(){return window.navigator?.userAgentData?.mobile?!0:navigator.maxTouchPoints>1||/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(navigator.userAgent)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(navigator.userAgent.slice(0,4))}function fN(){let e=()=>void 0,t=()=>void 0;return{promise:new Promise((n,r)=>{e=n,t=r}),reject:t,resolve:e}}function pN(e){if(Array.isArray(e))return e.map(pN);if(typeof e==`function`)return;if(typeof e!=`object`||!e)return e;if(Object.getPrototypeOf(e)!==Object.prototype)try{return structuredClone(e)}catch{return}let t={};for(let[n,r]of Object.entries(e))t[n]=pN(r);return t}function mN(e,t){let n=[],r=new Set;for(let i of e){let e=t(i);r.has(e)||(r.add(e),n.push(i))}return n}function hN(){return typeof globalThis<`u`&&`crypto`in globalThis?globalThis.crypto.randomUUID():crypto.randomUUID()}function gN(e,{enabled:t=!0,id:n}){if(!t||!n)return e();if(gN.cache.get(n))return gN.cache.get(n);let r=e().finally(()=>gN.cache.delete(n));return gN.cache.set(n,r),r}(function(e){e.cache=new Map})(gN||={});function _N(e){return e}function vN(e,t={}){let{targetOrigin:n}=t,r=new Map;return _N({destroy(){for(let t of r.values())e.removeEventListener(`message`,t)},on(t,i,a){function o(e){e.data.topic===t&&(a&&e.data.id!==a||n&&e.origin!==n||i(e.data.payload,e))}return e.addEventListener(`message`,o),r.set(t,o),()=>e.removeEventListener(`message`,o)},async send(t,r,i){let a=hN();return e.postMessage(pN({id:a,payload:r,topic:t}),i??n??`*`),{id:a,payload:r,topic:t}},async sendAsync(e,t,n){let{id:r}=await this.send(e,t,n);return new Promise(t=>this.on(e,t,r))}})}function yN(e){let{from:t,to:n,waitForReady:r=!1}=e,i=!1,a=fN();t.on(`ready`,a.resolve);let o=_N({destroy(){t.destroy(),n.destroy(),i&&a.reject()},on(e,n,r){return t.on(e,n,r)},async send(e,t){return i=!0,r&&await a.promise.finally(()=>i=!1),n.send(e,t)},async sendAsync(e,t){return i=!0,r&&await a.promise.finally(()=>i=!1),n.sendAsync(e,t)}});return{...o,ready(e){o.send(`ready`,e)},waitForReady(){return a.promise}}}const bN={local:`http://localhost:5175/dialog/`,prod:`https://id.porto.sh/dialog`,stg:`https://stg.id.porto.sh/dialog`};function xN(e){return e}function SN(e={}){let{skipProtocolCheck:t,skipUnsupported:n}=e,r=e=>!n&&lN()&&e?.some(e=>[`wallet_connect`,`eth_requestAccounts`].includes(e.method));return typeof window>`u`?wN():xN({name:`iframe`,setup(e){let{host:n,internal:i,theme:a,themeController:o}=e,{store:s}=i,c=CN().setup(e),l=!1,u=new URL(n),d=document.createElement(`dialog`);d.dataset.porto=``,d.setAttribute(`role`,`dialog`),d.setAttribute(`aria-closed`,`true`),d.setAttribute(`aria-label`,`Porto Wallet`),d.setAttribute(`hidden`,`until-found`),Object.assign(d.style,{background:`transparent`,border:`0`,outline:`0`,padding:`0`,position:`fixed`}),document.body.appendChild(d);let f=document.createElement(`iframe`);f.setAttribute(`data-testid`,`porto`);let p=[`payment`,`publickey-credentials-get ${u.origin}`,`publickey-credentials-create ${u.origin}`];uN()||p.push(`clipboard-write`),f.setAttribute(`allow`,p.join(`; `)),f.setAttribute(`tabindex`,`0`),f.setAttribute(`sandbox`,`allow-forms allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox`),f.setAttribute(`src`,AN(n)),f.setAttribute(`title`,`Porto`),Object.assign(f.style,{backgroundColor:`transparent`,border:`0`,colorScheme:`light dark`,height:`100%`,left:`0`,position:`fixed`,top:`0`,width:`100%`});let m=document.createElement(`style`);m.innerHTML=` dialog[data-porto]::backdrop { background: transparent!important; } - `,d.appendChild(m),d.appendChild(f);let h=vN({from:_N(window,{targetOrigin:u.origin}),to:_N(f.contentWindow,{targetOrigin:u.origin}),waitForReady:!0});o?._setup(h,!0);let g=window.matchMedia(`(max-width: 460px)`),_=()=>{h.send(`__internal`,{type:`resize`,width:g.matches?460:461})};g.addEventListener(`change`,_),h.on(`ready`,t=>{let n=e.internal.store.getState().chainIds.filter(e=>t.chainIds.includes(e));n.length===0&&(n=t.chainIds),s.setState(e=>({...e,chainIds:n})),h.send(`__internal`,{chainIds:n,mode:`iframe`,referrer:EN(),theme:a,type:`init`}),_()}),h.on(`rpc-response`,e=>{r([e._request])&&(f.src=f.src),ON(s,e)}),h.on(`__internal`,e=>{e.type===`switch`&&e.mode===`popup`&&(c.open(),c.syncRequests(s.getState().requestQueue))});let v=null,y=null,b=()=>DN(s),x=e=>{e.key===`Escape`&&DN(s)},S=new MutationObserver(e=>{for(let t of e){if(t.type!==`attributes`)continue;let e=t.attributeName;e&&e===`inert`&&d.removeAttribute(e)}});S.observe(d,{attributeOldValue:!0,attributes:!0});let C=!1,w=()=>{C&&(C=!1,d.removeEventListener(`click`,b),document.removeEventListener(`keydown`,x),d.style.pointerEvents=`none`,y?.focus(),y=null,Object.assign(document.body.style,v??``),document.body.style.overflow=v?.overflow??``)},ee=()=>{C||(C=!0,d.addEventListener(`click`,b),document.addEventListener(`keydown`,x),f.focus(),d.style.pointerEvents=`auto`,v=Object.assign({},document.body.style),document.body.style.overflow=`hidden`)},te=!1,ne=()=>{te||(te=!0,document.activeElement instanceof HTMLElement&&(y=document.activeElement),d.removeAttribute(`hidden`),d.removeAttribute(`aria-closed`),d.showModal())},re=()=>{if(te){te=!1,d.setAttribute(`hidden`,`true`),d.setAttribute(`aria-closed`,`true`),d.close();for(let e of d.parentNode?Array.from(d.parentNode.children):[])e!==d&&e.hasAttribute(`inert`)&&e.removeAttribute(`inert`)}};return{close(){c.close(),l=!1,h.send(`__internal`,{mode:`iframe`,referrer:EN(),type:`init`}),re(),w()},destroy(){c.close(),l=!1,w(),re(),c.destroy(),h.destroy(),d.remove(),S.disconnect(),g.removeEventListener(`change`,_)},open(){l||(l=!0,ne(),ee(),h.send(`__internal`,{mode:`iframe`,referrer:EN(),type:`init`}))},async secure(){let{trustedHosts:e}=await h.waitForReady(),n=(()=>{if(t)return!0;let e=window.location.protocol.startsWith(`https`);return e||oN.warnOnce(`Detected insecure protocol (HTTP).`,`\n\nThe Porto iframe is not supported on HTTP origins (${window.location.origin})`,`due to lack of WebAuthn support.`,`See https://porto.sh/sdk#secure-origins-https for more information.`),e})(),r=iN(),i=!!e?.includes(window.location.hostname),a=!!(r||i);return a||oN.warnOnce([`Warning: Browser does not support IntersectionObserver v2 or host "${u.hostname}" is not trusted by Porto.`,`This may result in the dialog falling back to a popup.`,``,`Add "${u.hostname}" to the trusted hosts list to enable iframe dialog: https://github.com/ithacaxyz/porto/edit/main/src/trusted-hosts.ts`].join(` -`)),{frame:a,host:i,protocol:n}},async syncRequests(e){let{methodPolicies:t}=await h.waitForReady(),n=await this.secure(),i=e?.every(e=>t?.find(t=>t.method===e.request.method)?.modes?.headless===!0),a=r(e.map(e=>e.request));if(!i&&(a||!n.protocol||!n.frame))c.syncRequests(e);else{let n=e.some(e=>TN(e.request,{methodPolicies:t,targetOrigin:u.origin}));!l&&n&&this.open(),h.send(`rpc-requests`,e)}}}},supportsHeadless:!0})}function SN(e={}){if(typeof window>`u`)return CN();let{type:t=`auto`,size:n=wN}=e;return bN({name:`popup`,setup(e){let{host:r,internal:i,themeController:a}=e,{store:o}=i,s=new URL(r),c=null,l=t===`page`||t===`auto`&&uN()?`page`:`popup`;function u(){c&&DN(o)}let d=(()=>{let e=setInterval(()=>{c?.closed&&DN(o)},100);return()=>clearInterval(e)})(),f;return a?._setup(null,!0),{close(){c&&=(c.close(),null)},destroy(){this.close(),window.removeEventListener(`focus`,u),f?.destroy(),d()},open(){if(l===`popup`){let e=(window.innerWidth-n.width)/2+window.screenX,t=window.screenY+100;c=window.open(kN(r),`_blank`,`width=${n.width},height=${n.height},left=${e},top=${t}`)}else c=window.open(kN(r),`_blank`);if(!c)throw Error(`Failed to open popup`);f=vN({from:_N(window,{targetOrigin:s.origin}),to:_N(c,{targetOrigin:s.origin}),waitForReady:!0}),a?._setup(f,!1),f.send(`__internal`,{mode:l===`page`?`page`:`popup`,referrer:EN(),theme:a?.getTheme()??e.theme,type:`init`}),f.on(`rpc-response`,e=>ON(o,e)),window.removeEventListener(`focus`,u),window.addEventListener(`focus`,u)},async secure(){return{frame:!0,host:!0,protocol:!0}},async syncRequests(e){e.some(e=>TN(e.request))&&((!c||c.closed)&&this.open(),c?.focus()),f?.send(`rpc-requests`,e)}}},supportsHeadless:!1})}function CN(){return bN({name:`noop`,setup(){return{close(){},destroy(){},open(){},async secure(){return{frame:!0,host:!0,protocol:!0}},async syncRequests(){}}},supportsHeadless:!0})}const wN={height:282,width:360};function TN(e,t={}){let{methodPolicies:n,targetOrigin:r}=t,i=n?.find(t=>t.method===e.method);return i&&i.modes?.headless?!!(typeof i.modes.headless==`object`&&i.modes.headless.sameOrigin&&r!==window.location.origin):!0}function EN(){return{icon:(()=>{let e=document.querySelector(`link[rel="icon"][media="(prefers-color-scheme: dark)"]`)?.href,t=document.querySelector(`link[rel="icon"][media="(prefers-color-scheme: light)"]`)?.href??document.querySelector(`link[rel="icon"]`)?.href;return e&&t&&e!==t?{dark:e,light:t}:window.matchMedia(`(prefers-color-scheme: dark)`).matches?e:t})(),title:document.title}}function DN(e){e.setState(e=>({...e,requestQueue:e.requestQueue.map(e=>({account:e.account,error:new VM,request:e.request,status:`error`}))}))}function ON(e,t){e.setState(e=>({...e,requestQueue:e.requestQueue.map(e=>e.request.id===t.id?t.error?{account:e.account,error:t.error,request:e.request,status:`error`}:{account:e.account,request:e.request,result:t.result,status:`success`}:e)}))}function kN(e){let t=new URL(e),n=new URLSearchParams(window.location.search);for(let[e,r]of n.entries())e.startsWith(`porto.`)&&t.searchParams.set(e.slice(6),r);return t.toString()}function AN(e){let t=new CustomEvent(`eip6963:announceProvider`,{detail:Object.freeze(e)});window.dispatchEvent(t);let n=()=>window.dispatchEvent(t);return window.addEventListener(`eip6963:requestProvider`,n),()=>window.removeEventListener(`eip6963:requestProvider`,n)}Object.freeze({status:`aborted`});function B(e,t,n){function r(n,r){var i;for(let a in Object.defineProperty(n,`_zod`,{value:n._zod??{},enumerable:!1}),(i=n._zod).traits??(i.traits=new Set),n._zod.traits.add(e),t(n,r),o.prototype)a in n||Object.defineProperty(n,a,{value:o.prototype[a].bind(n)});n._zod.constr=o,n._zod.def=r}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,`name`,{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,`init`,{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,`name`,{value:e}),o}var jN=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}};const MN={};function NN(e){return e&&Object.assign(MN,e),MN}function PN(e,t){return typeof t==`bigint`?t.toString():t}function FN(e){return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}throw Error(`cached value already set`)}}}function IN(e){return e==null}function LN(e){let t=e.startsWith(`^`)?1:0,n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}var RN=Symbol(`evaluating`);function zN(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==RN)return r===void 0&&(r=RN,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function BN(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function VN(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}const HN=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function UN(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function WN(e){if(UN(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(UN(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}const GN=new Set([`string`,`number`,`bigint`,`boolean`,`symbol`,`undefined`]);function KN(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function qN(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function JN(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function YN(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}-Number.MAX_VALUE,Number.MAX_VALUE;function XN(e,t){let n=e._zod.def,r=VN(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return BN(this,`shape`,e),e},checks:[]});return qN(e,r)}function ZN(e,t){let n=e._zod.def,r=VN(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return BN(this,`shape`,r),r},checks:[]});return qN(e,r)}function QN(e,t,n){let r=VN(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return BN(this,`shape`,i),i},checks:[]});return qN(t,r)}function $N(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function tP(e){return typeof e==`string`?e:e?.message}function nP(e,t,n){let r={...e,path:e.path??[]};return e.message||(r.message=tP(e.inst?._zod.def?.error?.(e))??tP(t?.error?.(e))??tP(n.customError?.(e))??tP(n.localeError?.(e))??`Invalid input`),delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function rP(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}var iP=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,`_zod`,{value:e._zod,enumerable:!1}),Object.defineProperty(e,`issues`,{value:t,enumerable:!1}),e.message=JSON.stringify(t,PN,2),Object.defineProperty(e,`toString`,{value:()=>e.message,enumerable:!1})};const aP=B(`$ZodError`,iP),oP=B(`$ZodError`,iP,{Parent:Error}),sP=e=>(t,n,r,i)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new jN;if(o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>nP(e,a,NN())));throw HN(t,i?.callee),t}return o.value},cP=sP(oP),lP=(e=>async(t,n,r,i)=>{let a=r?Object.assign(r,{async:!0}):{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>nP(e,a,NN())));throw HN(t,i?.callee),t}return o.value})(oP),uP=(e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new jN;return a.issues.length?{success:!1,error:new(e??aP)(a.issues.map(e=>nP(e,i,NN())))}:{success:!0,data:a.value}})(oP),dP=(e=>async(t,n,r)=>{let i=r?Object.assign(r,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>nP(e,i,NN())))}:{success:!0,data:a.value}})(oP),fP=(e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return sP(e)(t,n,i)})(oP),pP=(e=>(t,n,r)=>sP(e)(t,n,r))(oP),mP=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},hP=/^-?\d+n?$/,gP=/^-?\d+(?:\.\d+)?/,_P=/^(?:true|false)$/i;var vP=/^null$/i,yP=/^undefined$/i;const bP=B(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])});var xP={number:`number`,bigint:`bigint`,object:`date`};const SP=B(`$ZodCheckGreaterThan`,(e,t)=>{bP.init(e,t);let n=xP[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),CP=B(`$ZodCheckMinLength`,(e,t)=>{var n;bP.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!IN(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=rP(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),wP=B(`$ZodCheckStringFormat`,(e,t)=>{var n,r;bP.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),TP=B(`$ZodCheckRegex`,(e,t)=>{wP.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),EP={major:4,minor:1,patch:12},DP=B(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=EP;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=$N(e),i;for(let a of t){if(a._zod.def.when){if(!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new jN;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=$N(e,t))});else{if(e.issues.length===t)continue;r||=$N(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if($N(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new jN;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new jN;return o.then(e=>t(e,r,a))}return t(o,r,a)}}e[`~standard`]={validate:t=>{try{let n=uP(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return dP(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}}),OP=B(`$ZodString`,(e,t)=>{DP.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??mP(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),kP=B(`$ZodNumber`,(e,t)=>{DP.init(e,t),e._zod.pattern=e._zod.bag.pattern??gP,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),AP=B(`$ZodBoolean`,(e,t)=>{DP.init(e,t),e._zod.pattern=_P,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),jP=B(`$ZodBigInt`,(e,t)=>{DP.init(e,t),e._zod.pattern=hP,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=BigInt(n.value)}catch{}return typeof n.value==`bigint`||n.issues.push({expected:`bigint`,code:`invalid_type`,input:n.value,inst:e}),n}}),MP=B(`$ZodUndefined`,(e,t)=>{DP.init(e,t),e._zod.pattern=yP,e._zod.values=new Set([void 0]),e._zod.optin=`optional`,e._zod.optout=`optional`,e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`undefined`,code:`invalid_type`,input:r,inst:e}),t}}),NP=B(`$ZodNull`,(e,t)=>{DP.init(e,t),e._zod.pattern=vP,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),PP=B(`$ZodAny`,(e,t)=>{DP.init(e,t),e._zod.parse=e=>e}),FP=B(`$ZodUnknown`,(e,t)=>{DP.init(e,t),e._zod.parse=e=>e}),IP=B(`$ZodDate`,(e,t)=>{DP.init(e,t),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=new Date(n.value)}catch{}let i=n.value,a=i instanceof Date;return a&&!Number.isNaN(i.getTime())||n.issues.push({expected:`date`,code:`invalid_type`,input:i,...a?{received:`Invalid Date`}:{},inst:e}),n}});function LP(e,t,n){e.issues.length&&t.issues.push(...eP(n,e.issues)),t.value[n]=e.value}const RP=B(`$ZodArray`,(e,t)=>{DP.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;eLP(t,n,e))):LP(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function zP(e,t,n,r){e.issues.length&&t.issues.push(...eP(n,e.issues)),e.value===void 0?n in r&&(t.value[n]=void 0):t.value[n]=e.value}function BP(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=YN(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function VP(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type;for(let i of Object.keys(t)){if(s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>zP(e,n,i,t))):zP(a,n,i,t)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}const HP=B(`$ZodObject`,(e,t)=>{if(DP.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,`shape`,{get:()=>{let n={...e};return Object.defineProperty(t,`shape`,{value:n}),n}})}let n=FN(()=>BP(t));zN(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=UN,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e]._zod.run({value:s[e],issues:[]},o);n instanceof Promise?c.push(n.then(n=>zP(n,t,e,s))):zP(n,t,e,s)}return i?VP(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}});function UP(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!$N(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>nP(e,r,NN())))}),t)}const WP=B(`$ZodUnion`,(e,t)=>{DP.init(e,t),zN(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),zN(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),zN(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),zN(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>LN(e.source)).join(`|`)})$`)}});let n=t.options.length===1,r=t.options[0]._zod.run;e._zod.parse=(i,a)=>{if(n)return r(i,a);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:i.value,issues:[]},a);if(t instanceof Promise)s.push(t),o=!0;else{if(t.issues.length===0)return t;s.push(t)}}return o?Promise.all(s).then(t=>UP(t,i,e,a)):UP(s,i,e,a)}}),GP=B(`$ZodDiscriminatedUnion`,(e,t)=>{WP.init(e,t);let n=e._zod.parse;zN(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=FN(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!UN(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,input:o,path:[t.discriminator],inst:e}),i)}}),KP=B(`$ZodTuple`,(e,t)=>{DP.init(e,t);let n=t.items,r=n.length-[...n].reverse().findIndex(e=>e._zod.optin!==`optional`);e._zod.parse=(i,a)=>{let o=i.value;if(!Array.isArray(o))return i.issues.push({input:o,inst:e,expected:`tuple`,code:`invalid_type`}),i;i.value=[];let s=[];if(!t.rest){let t=o.length>n.length,a=o.length=o.length&&c>=r)continue;let t=e._zod.run({value:o[c],issues:[]},a);t instanceof Promise?s.push(t.then(e=>qP(e,i,c))):qP(t,i,c)}if(t.rest){let e=o.slice(n.length);for(let n of e){c++;let e=t.rest._zod.run({value:n,issues:[]},a);e instanceof Promise?s.push(e.then(e=>qP(e,i,c))):qP(e,i,c)}}return s.length?Promise.all(s).then(()=>i):i}});function qP(e,t,n){e.issues.length&&t.issues.push(...eP(n,e.issues)),t.value[n]=e.value}const JP=B(`$ZodRecord`,(e,t)=>{DP.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!WN(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[];if(t.keyType._zod.values){let o=t.keyType._zod.values;n.value={};for(let e of o)if(typeof e==`string`||typeof e==`number`||typeof e==`symbol`){let o=t.valueType._zod.run({value:i[e],issues:[]},r);o instanceof Promise?a.push(o.then(t=>{t.issues.length&&n.issues.push(...eP(e,t.issues)),n.value[e]=t.value})):(o.issues.length&&n.issues.push(...eP(e,o.issues)),n.value[e]=o.value)}let s;for(let e in i)o.has(e)||(s??=[],s.push(e));s&&s.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:s})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`)continue;let s=t.keyType._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){n.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>nP(e,r,NN())),input:o,path:[o],inst:e}),n.value[s.value]=s.value;continue}let c=t.valueType._zod.run({value:i[o],issues:[]},r);c instanceof Promise?a.push(c.then(e=>{e.issues.length&&n.issues.push(...eP(o,e.issues)),n.value[s.value]=e.value})):(c.issues.length&&n.issues.push(...eP(o,c.issues)),n.value[s.value]=c.value)}}return a.length?Promise.all(a).then(()=>n):n}}),YP=B(`$ZodLiteral`,(e,t)=>{if(DP.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);e._zod.values=new Set(t.values),e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?KN(e):e?KN(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(n,r)=>{let i=n.value;return e._zod.values.has(i)||n.issues.push({code:`invalid_value`,values:t.values,input:i,inst:e}),n}});function XP(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const ZP=B(`$ZodOptional`,(e,t)=>{DP.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,zN(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),zN(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${LN(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(t=>XP(t,e.value)):XP(r,e.value)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),QP=B(`$ZodNullable`,(e,t)=>{DP.init(e,t),zN(e._zod,`optin`,()=>t.innerType._zod.optin),zN(e._zod,`optout`,()=>t.innerType._zod.optout),zN(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${LN(e.source)}|null)$`):void 0}),zN(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),$P=B(`$ZodPipe`,(e,t)=>{DP.init(e,t),zN(e._zod,`values`,()=>t.in._zod.values),zN(e._zod,`optin`,()=>t.in._zod.optin),zN(e._zod,`optout`,()=>t.out._zod.optout),zN(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>eF(e,t.in,n)):eF(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>eF(e,t.out,n)):eF(r,t.out,n)}});function eF(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const tF=B(`$ZodCodec`,(e,t)=>{DP.init(e,t),zN(e._zod,`values`,()=>t.in._zod.values),zN(e._zod,`optin`,()=>t.in._zod.optin),zN(e._zod,`optout`,()=>t.out._zod.optout),zN(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if((n.direction||`forward`)===`forward`){let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>nF(e,t,n)):nF(r,t,n)}else{let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>nF(e,t,n)):nF(r,t,n)}}});function nF(e,t,n){if(e.issues.length)return e.aborted=!0,e;if((n.direction||`forward`)===`forward`){let r=t.transform(e.value,e);return r instanceof Promise?r.then(r=>rF(e,r,t.out,n)):rF(e,r,t.out,n)}else{let r=t.reverseTransform(e.value,e);return r instanceof Promise?r.then(r=>rF(e,r,t.in,n)):rF(e,r,t.in,n)}}function rF(e,t,n,r){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:t,issues:e.issues},r)}const iF=B(`$ZodReadonly`,(e,t)=>{DP.init(e,t),zN(e._zod,`propValues`,()=>t.innerType._zod.propValues),zN(e._zod,`values`,()=>t.innerType._zod.values),zN(e._zod,`optin`,()=>t.innerType._zod.optin),zN(e._zod,`optout`,()=>t.innerType._zod.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(aF):aF(r)}});function aF(e){return e.value=Object.freeze(e.value),e}const oF=B(`$ZodTemplateLiteral`,(e,t)=>{DP.init(e,t);let n=[];for(let e of t.parts)if(typeof e==`object`&&e){if(!e._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...e._zod.traits].shift()}`);let t=e._zod.pattern instanceof RegExp?e._zod.pattern.source:e._zod.pattern;if(!t)throw Error(`Invalid template literal part: ${e._zod.traits}`);let r=t.startsWith(`^`)?1:0,i=t.endsWith(`$`)?t.length-1:t.length;n.push(t.slice(r,i))}else if(e===null||GN.has(typeof e))n.push(KN(`${e}`));else throw Error(`Invalid template literal part: ${e}`);e._zod.pattern=RegExp(`^${n.join(``)}$`),e._zod.parse=(n,r)=>typeof n.value==`string`?(e._zod.pattern.lastIndex=0,e._zod.pattern.test(n.value)||n.issues.push({input:n.value,inst:e,code:`invalid_format`,format:t.format??`template_literal`,pattern:e._zod.pattern.source}),n):(n.issues.push({input:n.value,inst:e,expected:`template_literal`,code:`invalid_type`}),n)});function sF(e,t){return new e({type:`string`,...JN(t)})}function cF(e,t){return new e({type:`number`,checks:[],...JN(t)})}function lF(e,t){return new e({type:`boolean`,...JN(t)})}function uF(e,t){return new e({type:`bigint`,...JN(t)})}function dF(e,t){return new e({type:`undefined`,...JN(t)})}function fF(e,t){return new e({type:`null`,...JN(t)})}function pF(e){return new e({type:`any`})}function mF(e){return new e({type:`unknown`})}function hF(e,t){return new e({type:`date`,...JN(t)})}function gF(e,t){return new SP({check:`greater_than`,...JN(t),value:e,inclusive:!0})}function _F(e,t){return new CP({check:`min_length`,...JN(t),minimum:e})}function vF(e,t){return new TP({check:`string_format`,format:`regex`,...JN(t),pattern:e})}const yF=B(`ZodMiniType`,(e,t)=>{if(!e._zod)throw Error(`Uninitialized schema in ZodMiniType.`);DP.init(e,t),e.def=t,e.type=t.type,e.parse=(t,n)=>cP(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>uP(e,t,n),e.parseAsync=async(t,n)=>lP(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>dP(e,t,n),e.check=(...n)=>e.clone({...t,checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),e.clone=(t,n)=>qN(e,t,n),e.brand=()=>e,e.register=((t,n)=>(t.add(e,n),e))}),bF=B(`ZodMiniString`,(e,t)=>{OP.init(e,t),yF.init(e,t)});function V(e){return sF(bF,e)}const xF=B(`ZodMiniNumber`,(e,t)=>{kP.init(e,t),yF.init(e,t)});function H(e){return cF(xF,e)}const SF=B(`ZodMiniBoolean`,(e,t)=>{AP.init(e,t),yF.init(e,t)});function CF(e){return lF(SF,e)}const wF=B(`ZodMiniBigInt`,(e,t)=>{jP.init(e,t),yF.init(e,t)});function TF(e){return uF(wF,e)}const EF=B(`ZodMiniUndefined`,(e,t)=>{MP.init(e,t),yF.init(e,t)});function DF(e){return dF(EF,e)}const OF=B(`ZodMiniNull`,(e,t)=>{NP.init(e,t),yF.init(e,t)});function kF(e){return fF(OF,e)}const AF=B(`ZodMiniAny`,(e,t)=>{PP.init(e,t),yF.init(e,t)});function jF(){return pF(AF)}const MF=B(`ZodMiniUnknown`,(e,t)=>{FP.init(e,t),yF.init(e,t)});function NF(){return mF(MF)}const PF=B(`ZodMiniDate`,(e,t)=>{IP.init(e,t),yF.init(e,t)});function FF(e){return hF(PF,e)}const IF=B(`ZodMiniArray`,(e,t)=>{RP.init(e,t),yF.init(e,t)});function U(e,t){return new IF({type:`array`,element:e,...JN(t)})}const LF=B(`ZodMiniObject`,(e,t)=>{HP.init(e,t),yF.init(e,t),zN(e,`shape`,()=>t.shape)});function W(e,t){let n={type:`object`,shape:e??{},...JN(t)};return new LF(n)}function RF(e,t){return XN(e,t)}function zF(e,t){return ZN(e,t)}function BF(e,t){return QN(JF,e,t)}const VF=B(`ZodMiniUnion`,(e,t)=>{WP.init(e,t),yF.init(e,t)});function G(e,t){return new VF({type:`union`,options:e,...JN(t)})}const HF=B(`ZodMiniDiscriminatedUnion`,(e,t)=>{GP.init(e,t),yF.init(e,t)});function UF(e,t,n){return new HF({type:`union`,options:t,discriminator:e,...JN(n)})}const WF=B(`ZodMiniTuple`,(e,t)=>{KP.init(e,t),yF.init(e,t)});function K(e,t,n){let r=t instanceof DP;return new WF({type:`tuple`,items:e,rest:r?t:null,...JN(r?n:t)})}const GF=B(`ZodMiniRecord`,(e,t)=>{JP.init(e,t),yF.init(e,t)});function KF(e,t,n){return new GF({type:`record`,keyType:e,valueType:t,...JN(n)})}const qF=B(`ZodMiniLiteral`,(e,t)=>{YP.init(e,t),yF.init(e,t)});function q(e,t){return new qF({type:`literal`,values:Array.isArray(e)?e:[e],...JN(t)})}const JF=B(`ZodMiniOptional`,(e,t)=>{ZP.init(e,t),yF.init(e,t)});function J(e){return new JF({type:`optional`,innerType:e})}const YF=B(`ZodMiniNullable`,(e,t)=>{QP.init(e,t),yF.init(e,t)});function XF(e){return new YF({type:`nullable`,innerType:e})}function ZF(e){return J(XF(e))}const QF=B(`ZodMiniPipe`,(e,t)=>{$P.init(e,t),yF.init(e,t)}),$F=B(`ZodMiniCodec`,(e,t)=>{QF.init(e,t),tF.init(e,t)});function eI(e,t,n){return new $F({type:`pipe`,in:e,out:t,transform:n.decode,reverseTransform:n.encode})}const tI=B(`ZodMiniReadonly`,(e,t)=>{iF.init(e,t),yF.init(e,t)});function Y(e){return new tI({type:`readonly`,innerType:e})}const nI=B(`ZodMiniTemplateLiteral`,(e,t)=>{oF.init(e,t),yF.init(e,t)});function rI(e,t){return new nI({type:`template_literal`,parts:e,...JN(t)})}If(),qd(),ap(),ff();function iI(e){let{domain:t,message:n,primaryType:r,types:i}=e,a=(e,t)=>{for(let n of e){let{name:e,type:r}=n,o=t[e],s=r.match(dg);if(s&&(typeof o==`number`||typeof o==`bigint`)){let[,e,t]=s;L(o,{signed:e===`int`,size:Number.parseInt(t??``,10)/8})}if(r===`address`&&typeof o==`string`&&!ag(o))throw new og({address:o,cause:new sg});let c=r.match(ug);if(c){let[,e]=c;if(e&&Kf(o)!==Number.parseInt(e,10))throw new dI({expectedSize:Number.parseInt(e,10),givenSize:Kf(o)})}let l=i[r];l&&(yI(r),a(l,o))}};if(i.EIP712Domain&&t){if(typeof t!=`object`)throw new fI({domain:t});a(i.EIP712Domain,t)}if(r!==`EIP712Domain`)if(i[r])a(i[r],n);else throw new pI({primaryType:r,types:i})}function aI(e){let{domain:t={},message:n,primaryType:r}=e,i={EIP712Domain:sI(t),...e.types};iI({domain:t,message:n,primaryType:r,types:i});let a=[`0x19`,`0x01`];return t&&a.push(lI({domain:t,types:i})),r!==`EIP712Domain`&&a.push(uI({data:n,primaryType:r,types:i})),Rf(...a)}function oI(e){let{primaryType:t,types:n}=e,r=``,i=vI({primaryType:t,types:n});i.delete(t);let a=[t,...Array.from(i).sort()];for(let e of a)r+=`${e}(${(n[e]??[]).map(({name:e,type:t})=>`${t} ${e}`).join(`,`)})`;return r}function sI(e){return[typeof e?.name==`string`&&{name:`name`,type:`string`},e?.version&&{name:`version`,type:`string`},(typeof e?.chainId==`number`||typeof e?.chainId==`bigint`)&&{name:`chainId`,type:`uint256`},e?.verifyingContract&&{name:`verifyingContract`,type:`address`},e?.salt&&{name:`salt`,type:`bytes32`}].filter(Boolean)}function cI(e){return Vh(aI(e))}function lI(e){let{domain:t,types:n}=e;return uI({data:t,primaryType:`EIP712Domain`,types:{...n,EIP712Domain:n?.EIP712Domain||sI(t)}})}function uI(e){let{data:t,primaryType:n,types:r}=e,i=hI({data:t,primaryType:n,types:r});return Vh(i)}var dI=class extends F{constructor({expectedSize:e,givenSize:t}){super(`Expected bytes${e}, got bytes${t}.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.BytesSizeMismatchError`})}},fI=class extends F{constructor({domain:e}){super(`Invalid domain "${uf(e)}".`,{metaMessages:[`Must be a valid EIP-712 domain.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.InvalidDomainError`})}},pI=class extends F{constructor({primaryType:e,types:t}){super(`Invalid primary type \`${e}\` must be one of \`${JSON.stringify(Object.keys(t))}\`.`,{metaMessages:["Check that the primary type is a key in `types`."]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.InvalidPrimaryTypeError`})}},mI=class extends F{constructor({type:e}){super(`Struct type "${e}" is invalid.`,{metaMessages:[`Struct type must not be a Solidity type.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.InvalidStructTypeError`})}};function hI(e){let{data:t,primaryType:n,types:r}=e,i=[{type:`bytes32`}],a=[gI({primaryType:n,types:r})];for(let e of r[n]??[]){let[n,o]=_I({types:r,name:e.name,type:e.type,value:t[e.name]});i.push(n),a.push(o)}return Vg(i,a)}function gI(e){let{primaryType:t,types:n}=e,r=Hf(oI({primaryType:t,types:n}));return Vh(r)}function _I(e){let{types:t,name:n,type:r,value:i}=e;if(t[r]!==void 0)return[{type:`bytes32`},Vh(hI({data:i,primaryType:r,types:t}))];if(r===`bytes`)return i=`0x${(i.length%2?`0`:``)+i.slice(2)}`,[{type:`bytes32`},Vh(i,{as:`Hex`})];if(r===`string`)return[{type:`bytes32`},Vh(_f(i),{as:`Hex`})];if(r.lastIndexOf(`]`)===r.length-1){let e=r.slice(0,r.lastIndexOf(`[`)),a=i.map(r=>_I({name:n,type:e,types:t,value:r}));return[{type:`bytes32`},Vh(Vg(a.map(([e])=>e),a.map(([,e])=>e)))]}return[{type:r},i]}function vI(e,t=new Set){let{primaryType:n,types:r}=e,i=n.match(/^\w*/u)?.[0];if(t.has(i)||r[i]===void 0)return t;t.add(i);for(let e of r[i])vI({primaryType:e.type,types:r},t);return t}function yI(e){if(e===`address`||e===`bool`||e===`string`||e.startsWith(`bytes`)||e.startsWith(`uint`)||e.startsWith(`int`))throw new mI({type:e})}pi(),Ci();function bI(e){if(typeof e==`string`){if(!bi(e,{strict:!1}))throw new fi({address:e});return{address:e,type:`json-rpc`}}if(!bi(e.address,{strict:!1}))throw new fi({address:e.address});return{address:e.address,nonceManager:e.nonceManager,sign:e.sign,signAuthorization:e.signAuthorization,signMessage:e.signMessage,signTransaction:e.signTransaction,signTypedData:e.signTypedData,source:`custom`,type:`local`}}Fs(),xl(),Vc();var xI=kc(BigInt(`0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff`)),SI=xI.create(BigInt(`-3`)),CI=BigInt(`0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b`);const wI=bl({a:SI,b:CI,Fp:xI,n:BigInt(`0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551`),Gx:BigInt(`0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296`),Gy:BigInt(`0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5`),h:BigInt(1),lowS:!1},Ms);var TI=kc(BigInt(`0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff`)),EI=TI.create(BigInt(`-3`)),DI=BigInt(`0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef`);bl({a:EI,b:DI,Fp:TI,n:BigInt(`0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973`),Gx:BigInt(`0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7`),Gy:BigInt(`0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f`),h:BigInt(1),lowS:!1},Ps);var OI=kc(BigInt(`0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`)),kI=OI.create(BigInt(`-3`)),AI=BigInt(`0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00`);bl({a:kI,b:AI,Fp:OI,n:BigInt(`0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409`),Gx:BigInt(`0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66`),Gy:BigInt(`0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650`),h:BigInt(1),lowS:!1,allowedPrivateKeyLengths:[130,131,132]},Ns);const jI=wI,MI=wI;If(),ap();function NI(e){let{privateKey:t}=e,n=MI.ProjectivePoint.fromPrivateKey(typeof t==`string`?t.slice(2):Vf(t).slice(2));return Wh(n)}function PI(e={}){let{as:t=`Hex`}=e,n=MI.utils.randomPrivateKey();return t===`Hex`?Vf(n):n}function FI(e){let{extraEntropy:t=!1,hash:n,payload:r,privateKey:i}=e,{r:a,s:o,recovery:s}=MI.sign(r instanceof Uint8Array?r:gf(r),i instanceof Uint8Array?i:gf(i),{extraEntropy:typeof t==`boolean`?t:zf(t).slice(2),lowS:!0,...n?{prehash:!0}:{}});return{r:a,s:o,yParity:s}}qd();function II(e,t=0){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new LI({value:e});let[n=``,r=`0`]=e.split(`.`),i=n.startsWith(`-`);if(i&&(n=n.slice(1)),r=r.replace(/(0+)$/,``),t===0)Math.round(Number(`.${r}`))===1&&(n=`${BigInt(n)+1n}`),r=``;else if(r.length>t){let[e,i,a]=[r.slice(0,t-1),r.slice(t-1,t),r.slice(t)],o=Math.round(Number(`${i}.${a}`));r=o>9?`${BigInt(e)+BigInt(1)}0`.padStart(e.length+1,`0`):`${e}${o}`,r.length>t&&(r=r.slice(1),n=`${BigInt(n)+1n}`),r=r.slice(0,t)}else r=r.padEnd(t,`0`);return BigInt(`${i?`-`:``}${n}${r}`)}var LI=class extends F{constructor({value:e}){super(`Value \`${e}\` is not a valid decimal number.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Value.InvalidDecimalNumberError`})}};If();var RI=new TextEncoder,zI=new TextDecoder,BI=Object.fromEntries(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`).map((e,t)=>[t,e.charCodeAt(0)])),VI={...Object.fromEntries(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`).map((e,t)=>[e.charCodeAt(0),t])),61:0,45:62,95:63};function HI(e,t={}){let{pad:n=!0,url:r=!1}=t,i=new Uint8Array(Math.ceil(e.length/3)*4);for(let t=0,n=0;n>18],i[t+1]=BI[r>>12&63],i[t+2]=BI[r>>6&63],i[t+3]=BI[r&63]}let a=e.length%3,o=Math.floor(e.length/3)*4+(a&&a+1),s=zI.decode(new Uint8Array(i.buffer,0,o));return n&&a===1&&(s+=`==`),n&&a===2&&(s+=`=`),r&&(s=s.replaceAll(`+`,`-`).replaceAll(`/`,`_`)),s}function UI(e,t={}){return HI(gf(e),t)}function WI(e){let t=e.replace(/=+$/,``),n=t.length,r=new Uint8Array(n+3);RI.encodeInto(t+`===`,r);for(let e=0,n=0;e>16,r[n+1]=t>>8&255,r[n+2]=t&255}let i=(n>>2)*3+(n%4&&n%4-1);return new Uint8Array(r.buffer,0,i)}ap();function GI(e){let t=e[4]===0?5:4,n=t+32,r=e[n+2]===0?n+3:n+2,i=BigInt(Vf(e.slice(t,n))),a=BigInt(Vf(e.slice(r)));return{r:i,s:a>jI.CURVE.n/2n?jI.CURVE.n-a:a}}async function KI(e){try{let t=e.getPublicKey();if(!t)throw new tL;let n=new Uint8Array(t),r=await crypto.subtle.importKey(`spki`,new Uint8Array(n),{name:`ECDSA`,namedCurve:`P-256`,hash:`SHA-256`},!0,[`verify`]),i=new Uint8Array(await crypto.subtle.exportKey(`raw`,r));return Wh(i)}catch(t){if(t.message!==`Permission denied to access object`)throw t;let n=new Uint8Array(e.attestationObject),r=e=>{let t=new Uint8Array([e,88,32]);for(let e=0;en[e+r]===t))return e+t.length;throw new tL},i=r(33),a=r(34);return Wh(new Uint8Array([4,...n.slice(i,i+32),...n.slice(a,a+32)]))}}If(),qd(),ap();const qI=Uint8Array.from([105,171,180,181,160,222,75,198,42,42,32,31,141,37,186,233]);async function JI(e){let{createFn:t=window.navigator.credentials.create.bind(window.navigator.credentials),...n}=e,r=ZI(n);try{let e=await t(r);if(!e)throw new tL;let n=e.response,i=await KI(n);return{id:e.id,publicKey:i,raw:e}}catch(e){throw new tL({cause:e})}}function YI(e={}){let{flag:t=5,rpId:n=window.location.hostname,signCount:r=0}=e,i=Hh(Hf(n)),a=L(t,{size:1}),o=L(r,{size:4});return Rf(i,a,o)}function XI(e){let{challenge:t,crossOrigin:n=!1,extraClientData:r,origin:i=window.location.origin}=e;return JSON.stringify({type:`webauthn.get`,challenge:UI(t,{url:!0,pad:!1}),origin:i,crossOrigin:n,...r})}function ZI(e){let{attestation:t=`none`,authenticatorSelection:n={residentKey:`preferred`,requireResidentKey:!1,userVerification:`required`},challenge:r=qI,excludeCredentialIds:i,extensions:a,name:o,rp:s={id:window.location.hostname,name:window.document.title},user:c}=e,l=c?.name??o;return{publicKey:{attestation:t,authenticatorSelection:n,challenge:r,...i?{excludeCredentials:i?.map(e=>({id:WI(e),type:`public-key`}))}:{},pubKeyCredParams:[{type:`public-key`,alg:-7}],...a&&{extensions:a},rp:s,user:{id:c?.id??Vh(_f(l),{as:`Bytes`}),name:l,displayName:c?.displayName??l}}}}function QI(e){let{credentialId:t,challenge:n,extensions:r,rpId:i=window.location.hostname,userVerification:a=`required`}=e;return{publicKey:{...t?{allowCredentials:Array.isArray(t)?t.map(e=>({id:WI(e),type:`public-key`})):[{id:WI(t),type:`public-key`}]}:{},challenge:gf(n),...r&&{extensions:r},rpId:i,userVerification:a}}}function $I(e){let{challenge:t,crossOrigin:n,extraClientData:r,flag:i,origin:a,rpId:o,signCount:s,userVerification:c=`required`}=e,l=YI({flag:i,rpId:o,signCount:s}),u=XI({challenge:t,crossOrigin:n,extraClientData:r,origin:a}),d=Hh(Hf(u)),f=u.indexOf(`"challenge"`),p=u.indexOf(`"type"`),m={authenticatorData:l,clientDataJSON:u,challengeIndex:f,typeIndex:p,userVerificationRequired:c===`required`},h=Rf(l,d);return{metadata:m,payload:h}}async function eL(e){let{getFn:t=window.navigator.credentials.get.bind(window.navigator.credentials),...n}=e,r=QI(n);try{let e=await t(r);if(!e)throw new nL;let n=e.response,i=String.fromCharCode(...new Uint8Array(n.clientDataJSON)),a=i.indexOf(`"challenge"`),o=i.indexOf(`"type"`),s=GI(new Uint8Array(n.signature));return{metadata:{authenticatorData:Vf(new Uint8Array(n.authenticatorData)),clientDataJSON:i,challengeIndex:a,typeIndex:o,userVerificationRequired:r.publicKey.userVerification===`required`},signature:s,raw:e}}catch(e){throw new nL({cause:e})}}var tL=class extends F{constructor({cause:e}={}){super(`Failed to create credential.`,{cause:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`WebAuthnP256.CredentialCreationFailedError`})}},nL=class extends F{constructor({cause:e}={}){super(`Failed to request credential.`,{cause:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`WebAuthnP256.CredentialRequestFailedError`})}};If();async function rL(e={}){let{extractable:t=!1}=e,n=await globalThis.crypto.subtle.generateKey({name:`ECDSA`,namedCurve:`P-256`},t,[`sign`,`verify`]),r=await globalThis.crypto.subtle.exportKey(`raw`,n.publicKey),i=Wh(new Uint8Array(r));return{privateKey:n.privateKey,publicKey:i}}async function iL(e){let{payload:t,privateKey:n}=e,r=await globalThis.crypto.subtle.sign({name:`ECDSA`,hash:`SHA-256`},n,mf(t)),i=hf(new Uint8Array(r)),a=xf(bf(i,0,32)),o=xf(bf(i,32,64));return o>jI.CURVE.n/2n&&(o=jI.CURVE.n-o),{r:a,s:o}}const aL=`0x32323232`;If(),ap(),ff();const oL={p256:`p256`,secp256k1:`secp256k1`,webauthnp256:`webauthn-p256`},sL={admin:`admin`,normal:`session`},cL={0:`minute`,1:`hour`,2:`day`,3:`week`,4:`month`,5:`year`},lL={address:`secp256k1`,p256:`p256`,secp256k1:`secp256k1`,"webauthn-p256":`webauthnp256`},uL={admin:`admin`,session:`normal`},dL={address:2,p256:0,secp256k1:2,"webauthn-p256":1},fL={day:2,hour:1,minute:0,month:4,week:3,year:5};function pL(e={}){let t=PI();return vL({...e,privateKey:t})}async function mL(e){let{createFn:t,label:n,rpId:r,userId:i}=e,a=await JI({authenticatorSelection:{requireResidentKey:!0,residentKey:`required`,userVerification:`required`},createFn:t,extensions:{credProps:!0},rp:r?{id:r,name:r}:void 0,user:{displayName:n,id:new Uint8Array(i??_f(n)),name:n}});return bL({...e,credential:{id:a.id,publicKey:a.publicKey},id:i?Cf(i):qh(a.publicKey,{includePrefix:!1})})}function hL(e={}){let t=PI();return xL({...e,privateKey:t})}async function gL(e={}){let t=await rL();return SL({...e,keyPair:t})}function _L(e,t={}){let{chainId:n=e.chainId}=t,{expiry:r=0,id:i,prehash:a=!1,role:o=`admin`,type:s}=e,c=(()=>{let t=e.publicKey;return t===`0x`?t:s===`secp256k1`||s===`address`?Kf(t)===20||Jf(Gf(t,0,12))===0n?Gf(t,-20):rg(Kh(t)):t})();return{...e,chainId:n,expiry:r,hash:CL({publicKey:c,type:s}),id:(i??c).toLowerCase(),prehash:a,publicKey:c.toLowerCase(),role:o,type:s}}function vL(e){let{chainId:t,expiry:n,feeToken:r,permissions:i,privateKey:a,role:o}=e,s=qh(NI({privateKey:a}),{includePrefix:!1});return _L({chainId:t,expiry:n,feeToken:r,permissions:i,privateKey(){return a},publicKey:s,role:o,type:`p256`})}function yL(e,t){let{chainId:n}=t,{publicKey:r}=e,i=Kf(r)===20||Jf(Gf(r,0,12))===0n,a={};for(let t of e.permissions)t.type===`call`&&(a.calls??=[],a.calls.push({signature:t.selector,to:t.to===`0x3232323232323232323232323232323232323232`?void 0:t.to})),t.type===`spend`&&(a.spend??=[],a.spend.push({limit:t.limit,period:t.period,token:t.token}));return _L({chainId:n,expiry:e.expiry,permissions:a,publicKey:e.publicKey,role:sL[e.role],type:i?`address`:oL[e.type]})}function bL(e){let{credential:t,id:n,rpId:r}=e,i=qh(t.publicKey,{includePrefix:!1});return _L({chainId:e.chainId,expiry:e.expiry??0,feeToken:e.feeToken,id:n,permissions:e.permissions,privateKey:{credential:t,rpId:r},publicKey:i,role:e.role,type:`webauthn-p256`})}function xL(e){let{privateKey:t}=e,n=qh(NI({privateKey:t}),{includePrefix:!1});return _L({chainId:e.chainId,expiry:e.expiry??0,feeToken:e.feeToken,permissions:e.permissions,privateKey:{privateKey(){return t}},publicKey:n,role:e.role,type:`webauthn-p256`})}function SL(e){let{chainId:t,expiry:n,feeToken:r,keyPair:i,permissions:a,role:o}=e,{privateKey:s}=i,c=qh(i.publicKey,{includePrefix:!1});return _L({chainId:t,expiry:n,feeToken:r,permissions:a,prehash:!0,privateKey:s,publicKey:c,role:o,type:`p256`})}function CL(e){let{type:t}=e,n=wL(e.publicKey);return Vh(Vg([{type:`uint8`},{type:`bytes32`}],[dL[t],Vh(n)]))}function wL(e){return Kf(e)<32?Uf(e,32):e}async function TL(e,t){let{address:n,storage:r,webAuthn:i,wrap:a=!0}=t,{privateKey:o,publicKey:s,type:c}=e;if(!o)throw Error(`Key does not have a private key to sign with. + `,d.appendChild(m),d.appendChild(f);let h=yN({from:vN(window,{targetOrigin:u.origin}),to:vN(f.contentWindow,{targetOrigin:u.origin}),waitForReady:!0});o?._setup(h,!0);let g=window.matchMedia(`(max-width: 460px)`),_=()=>{h.send(`__internal`,{type:`resize`,width:g.matches?460:461})};g.addEventListener(`change`,_),h.on(`ready`,t=>{let n=e.internal.store.getState().chainIds.filter(e=>t.chainIds.includes(e));n.length===0&&(n=t.chainIds),s.setState(e=>({...e,chainIds:n})),h.send(`__internal`,{chainIds:n,mode:`iframe`,referrer:DN(),theme:a,type:`init`}),_()}),h.on(`rpc-response`,e=>{r([e._request])&&(f.src=f.src),kN(s,e)}),h.on(`__internal`,e=>{e.type===`switch`&&e.mode===`popup`&&(c.open(),c.syncRequests(s.getState().requestQueue))});let v=null,y=null,b=()=>ON(s),x=e=>{e.key===`Escape`&&ON(s)},S=new MutationObserver(e=>{for(let t of e){if(t.type!==`attributes`)continue;let e=t.attributeName;e&&e===`inert`&&d.removeAttribute(e)}});S.observe(d,{attributeOldValue:!0,attributes:!0});let C=!1,w=()=>{C&&(C=!1,d.removeEventListener(`click`,b),document.removeEventListener(`keydown`,x),d.style.pointerEvents=`none`,y?.focus(),y=null,Object.assign(document.body.style,v??``),document.body.style.overflow=v?.overflow??``)},ee=()=>{C||(C=!0,d.addEventListener(`click`,b),document.addEventListener(`keydown`,x),f.focus(),d.style.pointerEvents=`auto`,v=Object.assign({},document.body.style),document.body.style.overflow=`hidden`)},te=!1,ne=()=>{te||(te=!0,document.activeElement instanceof HTMLElement&&(y=document.activeElement),d.removeAttribute(`hidden`),d.removeAttribute(`aria-closed`),d.showModal())},re=()=>{if(te){te=!1,d.setAttribute(`hidden`,`true`),d.setAttribute(`aria-closed`,`true`),d.close();for(let e of d.parentNode?Array.from(d.parentNode.children):[])e!==d&&e.hasAttribute(`inert`)&&e.removeAttribute(`inert`)}};return{close(){c.close(),l=!1,h.send(`__internal`,{mode:`iframe`,referrer:DN(),type:`init`}),re(),w()},destroy(){c.close(),l=!1,w(),re(),c.destroy(),h.destroy(),d.remove(),S.disconnect(),g.removeEventListener(`change`,_)},open(){l||(l=!0,ne(),ee(),h.send(`__internal`,{mode:`iframe`,referrer:DN(),type:`init`}))},async secure(){let{trustedHosts:e}=await h.waitForReady(),n=(()=>{if(t)return!0;let e=window.location.protocol.startsWith(`https`);return e||sN.warnOnce(`Detected insecure protocol (HTTP).`,`\n\nThe Porto iframe is not supported on HTTP origins (${window.location.origin})`,`due to lack of WebAuthn support.`,`See https://porto.sh/sdk#secure-origins-https for more information.`),e})(),r=aN(),i=!!e?.includes(window.location.hostname),a=!!(r||i);return a||sN.warnOnce([`Warning: Browser does not support IntersectionObserver v2 or host "${u.hostname}" is not trusted by Porto.`,`This may result in the dialog falling back to a popup.`,``,`Add "${u.hostname}" to the trusted hosts list to enable iframe dialog: https://github.com/ithacaxyz/porto/edit/main/src/trusted-hosts.ts`].join(` +`)),{frame:a,host:i,protocol:n}},async syncRequests(e){let{methodPolicies:t}=await h.waitForReady(),n=await this.secure(),i=e?.every(e=>t?.find(t=>t.method===e.request.method)?.modes?.headless===!0),a=r(e.map(e=>e.request));if(!i&&(a||!n.protocol||!n.frame))c.syncRequests(e);else{let n=e.some(e=>EN(e.request,{methodPolicies:t,targetOrigin:u.origin}));!l&&n&&this.open(),h.send(`rpc-requests`,e)}}}},supportsHeadless:!0})}function CN(e={}){if(typeof window>`u`)return wN();let{type:t=`auto`,size:n=TN}=e;return xN({name:`popup`,setup(e){let{host:r,internal:i,themeController:a}=e,{store:o}=i,s=new URL(r),c=null,l=t===`page`||t===`auto`&&dN()?`page`:`popup`;function u(){c&&ON(o)}let d=(()=>{let e=setInterval(()=>{c?.closed&&ON(o)},100);return()=>clearInterval(e)})(),f;return a?._setup(null,!0),{close(){c&&=(c.close(),null)},destroy(){this.close(),window.removeEventListener(`focus`,u),f?.destroy(),d()},open(){if(l===`popup`){let e=(window.innerWidth-n.width)/2+window.screenX,t=window.screenY+100;c=window.open(AN(r),`_blank`,`width=${n.width},height=${n.height},left=${e},top=${t}`)}else c=window.open(AN(r),`_blank`);if(!c)throw Error(`Failed to open popup`);f=yN({from:vN(window,{targetOrigin:s.origin}),to:vN(c,{targetOrigin:s.origin}),waitForReady:!0}),a?._setup(f,!1),f.send(`__internal`,{mode:l===`page`?`page`:`popup`,referrer:DN(),theme:a?.getTheme()??e.theme,type:`init`}),f.on(`rpc-response`,e=>kN(o,e)),window.removeEventListener(`focus`,u),window.addEventListener(`focus`,u)},async secure(){return{frame:!0,host:!0,protocol:!0}},async syncRequests(e){e.some(e=>EN(e.request))&&((!c||c.closed)&&this.open(),c?.focus()),f?.send(`rpc-requests`,e)}}},supportsHeadless:!1})}function wN(){return xN({name:`noop`,setup(){return{close(){},destroy(){},open(){},async secure(){return{frame:!0,host:!0,protocol:!0}},async syncRequests(){}}},supportsHeadless:!0})}const TN={height:282,width:360};function EN(e,t={}){let{methodPolicies:n,targetOrigin:r}=t,i=n?.find(t=>t.method===e.method);return i&&i.modes?.headless?!!(typeof i.modes.headless==`object`&&i.modes.headless.sameOrigin&&r!==window.location.origin):!0}function DN(){return{icon:(()=>{let e=document.querySelector(`link[rel="icon"][media="(prefers-color-scheme: dark)"]`)?.href,t=document.querySelector(`link[rel="icon"][media="(prefers-color-scheme: light)"]`)?.href??document.querySelector(`link[rel="icon"]`)?.href;return e&&t&&e!==t?{dark:e,light:t}:window.matchMedia(`(prefers-color-scheme: dark)`).matches?e:t})(),title:document.title}}function ON(e){e.setState(e=>({...e,requestQueue:e.requestQueue.map(e=>({account:e.account,error:new HM,request:e.request,status:`error`}))}))}function kN(e,t){e.setState(e=>({...e,requestQueue:e.requestQueue.map(e=>e.request.id===t.id?t.error?{account:e.account,error:t.error,request:e.request,status:`error`}:{account:e.account,request:e.request,result:t.result,status:`success`}:e)}))}function AN(e){let t=new URL(e),n=new URLSearchParams(window.location.search);for(let[e,r]of n.entries())e.startsWith(`porto.`)&&t.searchParams.set(e.slice(6),r);return t.toString()}function jN(e){let t=new CustomEvent(`eip6963:announceProvider`,{detail:Object.freeze(e)});window.dispatchEvent(t);let n=()=>window.dispatchEvent(t);return window.addEventListener(`eip6963:requestProvider`,n),()=>window.removeEventListener(`eip6963:requestProvider`,n)}Object.freeze({status:`aborted`});function z(e,t,n){function r(n,r){var i;for(let a in Object.defineProperty(n,`_zod`,{value:n._zod??{},enumerable:!1}),(i=n._zod).traits??(i.traits=new Set),n._zod.traits.add(e),t(n,r),o.prototype)a in n||Object.defineProperty(n,a,{value:o.prototype[a].bind(n)});n._zod.constr=o,n._zod.def=r}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,`name`,{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,`init`,{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,`name`,{value:e}),o}var MN=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}};const NN={};function PN(e){return e&&Object.assign(NN,e),NN}function FN(e,t){return typeof t==`bigint`?t.toString():t}function IN(e){return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}throw Error(`cached value already set`)}}}function LN(e){return e==null}function RN(e){let t=e.startsWith(`^`)?1:0,n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}var zN=Symbol(`evaluating`);function BN(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==zN)return r===void 0&&(r=zN,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function VN(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function HN(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}const UN=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function WN(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function GN(e){if(WN(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(WN(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}const KN=new Set([`string`,`number`,`bigint`,`boolean`,`symbol`,`undefined`]);function qN(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function JN(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function YN(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function XN(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}-Number.MAX_VALUE,Number.MAX_VALUE;function ZN(e,t){let n=e._zod.def,r=HN(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return VN(this,`shape`,e),e},checks:[]});return JN(e,r)}function QN(e,t){let n=e._zod.def,r=HN(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return VN(this,`shape`,r),r},checks:[]});return JN(e,r)}function $N(e,t,n){let r=HN(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return VN(this,`shape`,i),i},checks:[]});return JN(t,r)}function eP(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function nP(e){return typeof e==`string`?e:e?.message}function rP(e,t,n){let r={...e,path:e.path??[]};return e.message||(r.message=nP(e.inst?._zod.def?.error?.(e))??nP(t?.error?.(e))??nP(n.customError?.(e))??nP(n.localeError?.(e))??`Invalid input`),delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function iP(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}var aP=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,`_zod`,{value:e._zod,enumerable:!1}),Object.defineProperty(e,`issues`,{value:t,enumerable:!1}),e.message=JSON.stringify(t,FN,2),Object.defineProperty(e,`toString`,{value:()=>e.message,enumerable:!1})};const oP=z(`$ZodError`,aP),sP=z(`$ZodError`,aP,{Parent:Error}),cP=e=>(t,n,r,i)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new MN;if(o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>rP(e,a,PN())));throw UN(t,i?.callee),t}return o.value},lP=cP(sP),uP=(e=>async(t,n,r,i)=>{let a=r?Object.assign(r,{async:!0}):{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>rP(e,a,PN())));throw UN(t,i?.callee),t}return o.value})(sP),dP=(e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new MN;return a.issues.length?{success:!1,error:new(e??oP)(a.issues.map(e=>rP(e,i,PN())))}:{success:!0,data:a.value}})(sP),fP=(e=>async(t,n,r)=>{let i=r?Object.assign(r,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>rP(e,i,PN())))}:{success:!0,data:a.value}})(sP),pP=(e=>(t,n,r)=>{let i=r?Object.assign(r,{direction:`backward`}):{direction:`backward`};return cP(e)(t,n,i)})(sP),mP=(e=>(t,n,r)=>cP(e)(t,n,r))(sP),hP=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},gP=/^-?\d+n?$/,_P=/^-?\d+(?:\.\d+)?/,vP=/^(?:true|false)$/i;var yP=/^null$/i,bP=/^undefined$/i;const xP=z(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])});var SP={number:`number`,bigint:`bigint`,object:`date`};const CP=z(`$ZodCheckGreaterThan`,(e,t)=>{xP.init(e,t);let n=SP[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),wP=z(`$ZodCheckMinLength`,(e,t)=>{var n;xP.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!LN(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=iP(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),TP=z(`$ZodCheckStringFormat`,(e,t)=>{var n,r;xP.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),EP=z(`$ZodCheckRegex`,(e,t)=>{TP.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),DP={major:4,minor:1,patch:12},OP=z(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=DP;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=eP(e),i;for(let a of t){if(a._zod.def.when){if(!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new MN;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=eP(e,t))});else{if(e.issues.length===t)continue;r||=eP(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(eP(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new MN;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new MN;return o.then(e=>t(e,r,a))}return t(o,r,a)}}e[`~standard`]={validate:t=>{try{let n=dP(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return fP(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}}),kP=z(`$ZodString`,(e,t)=>{OP.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??hP(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),AP=z(`$ZodNumber`,(e,t)=>{OP.init(e,t),e._zod.pattern=e._zod.bag.pattern??_P,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),jP=z(`$ZodBoolean`,(e,t)=>{OP.init(e,t),e._zod.pattern=vP,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),MP=z(`$ZodBigInt`,(e,t)=>{OP.init(e,t),e._zod.pattern=gP,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=BigInt(n.value)}catch{}return typeof n.value==`bigint`||n.issues.push({expected:`bigint`,code:`invalid_type`,input:n.value,inst:e}),n}}),NP=z(`$ZodUndefined`,(e,t)=>{OP.init(e,t),e._zod.pattern=bP,e._zod.values=new Set([void 0]),e._zod.optin=`optional`,e._zod.optout=`optional`,e._zod.parse=(t,n)=>{let r=t.value;return r===void 0||t.issues.push({expected:`undefined`,code:`invalid_type`,input:r,inst:e}),t}}),PP=z(`$ZodNull`,(e,t)=>{OP.init(e,t),e._zod.pattern=yP,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),FP=z(`$ZodAny`,(e,t)=>{OP.init(e,t),e._zod.parse=e=>e}),IP=z(`$ZodUnknown`,(e,t)=>{OP.init(e,t),e._zod.parse=e=>e}),LP=z(`$ZodDate`,(e,t)=>{OP.init(e,t),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=new Date(n.value)}catch{}let i=n.value,a=i instanceof Date;return a&&!Number.isNaN(i.getTime())||n.issues.push({expected:`date`,code:`invalid_type`,input:i,...a?{received:`Invalid Date`}:{},inst:e}),n}});function RP(e,t,n){e.issues.length&&t.issues.push(...tP(n,e.issues)),t.value[n]=e.value}const zP=z(`$ZodArray`,(e,t)=>{OP.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;eRP(t,n,e))):RP(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function BP(e,t,n,r){e.issues.length&&t.issues.push(...tP(n,e.issues)),e.value===void 0?n in r&&(t.value[n]=void 0):t.value[n]=e.value}function VP(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=XN(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function HP(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type;for(let i of Object.keys(t)){if(s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>BP(e,n,i,t))):BP(a,n,i,t)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}const UP=z(`$ZodObject`,(e,t)=>{if(OP.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,`shape`,{get:()=>{let n={...e};return Object.defineProperty(t,`shape`,{value:n}),n}})}let n=IN(()=>VP(t));BN(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=WN,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e]._zod.run({value:s[e],issues:[]},o);n instanceof Promise?c.push(n.then(n=>BP(n,t,e,s))):BP(n,t,e,s)}return i?HP(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}});function WP(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!eP(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>rP(e,r,PN())))}),t)}const GP=z(`$ZodUnion`,(e,t)=>{OP.init(e,t),BN(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),BN(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),BN(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),BN(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>RN(e.source)).join(`|`)})$`)}});let n=t.options.length===1,r=t.options[0]._zod.run;e._zod.parse=(i,a)=>{if(n)return r(i,a);let o=!1,s=[];for(let e of t.options){let t=e._zod.run({value:i.value,issues:[]},a);if(t instanceof Promise)s.push(t),o=!0;else{if(t.issues.length===0)return t;s.push(t)}}return o?Promise.all(s).then(t=>WP(t,i,e,a)):WP(s,i,e,a)}}),KP=z(`$ZodDiscriminatedUnion`,(e,t)=>{GP.init(e,t);let n=e._zod.parse;BN(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=IN(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!WN(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,input:o,path:[t.discriminator],inst:e}),i)}}),qP=z(`$ZodTuple`,(e,t)=>{OP.init(e,t);let n=t.items,r=n.length-[...n].reverse().findIndex(e=>e._zod.optin!==`optional`);e._zod.parse=(i,a)=>{let o=i.value;if(!Array.isArray(o))return i.issues.push({input:o,inst:e,expected:`tuple`,code:`invalid_type`}),i;i.value=[];let s=[];if(!t.rest){let t=o.length>n.length,a=o.length=o.length&&c>=r)continue;let t=e._zod.run({value:o[c],issues:[]},a);t instanceof Promise?s.push(t.then(e=>JP(e,i,c))):JP(t,i,c)}if(t.rest){let e=o.slice(n.length);for(let n of e){c++;let e=t.rest._zod.run({value:n,issues:[]},a);e instanceof Promise?s.push(e.then(e=>JP(e,i,c))):JP(e,i,c)}}return s.length?Promise.all(s).then(()=>i):i}});function JP(e,t,n){e.issues.length&&t.issues.push(...tP(n,e.issues)),t.value[n]=e.value}const YP=z(`$ZodRecord`,(e,t)=>{OP.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!GN(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[];if(t.keyType._zod.values){let o=t.keyType._zod.values;n.value={};for(let e of o)if(typeof e==`string`||typeof e==`number`||typeof e==`symbol`){let o=t.valueType._zod.run({value:i[e],issues:[]},r);o instanceof Promise?a.push(o.then(t=>{t.issues.length&&n.issues.push(...tP(e,t.issues)),n.value[e]=t.value})):(o.issues.length&&n.issues.push(...tP(e,o.issues)),n.value[e]=o.value)}let s;for(let e in i)o.has(e)||(s??=[],s.push(e));s&&s.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:s})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`)continue;let s=t.keyType._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){n.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>rP(e,r,PN())),input:o,path:[o],inst:e}),n.value[s.value]=s.value;continue}let c=t.valueType._zod.run({value:i[o],issues:[]},r);c instanceof Promise?a.push(c.then(e=>{e.issues.length&&n.issues.push(...tP(o,e.issues)),n.value[s.value]=e.value})):(c.issues.length&&n.issues.push(...tP(o,c.issues)),n.value[s.value]=c.value)}}return a.length?Promise.all(a).then(()=>n):n}}),XP=z(`$ZodLiteral`,(e,t)=>{if(OP.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);e._zod.values=new Set(t.values),e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?qN(e):e?qN(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(n,r)=>{let i=n.value;return e._zod.values.has(i)||n.issues.push({code:`invalid_value`,values:t.values,input:i,inst:e}),n}});function ZP(e,t){return e.issues.length&&t===void 0?{issues:[],value:void 0}:e}const QP=z(`$ZodOptional`,(e,t)=>{OP.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,BN(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),BN(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${RN(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(t=>ZP(t,e.value)):ZP(r,e.value)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),$P=z(`$ZodNullable`,(e,t)=>{OP.init(e,t),BN(e._zod,`optin`,()=>t.innerType._zod.optin),BN(e._zod,`optout`,()=>t.innerType._zod.optout),BN(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${RN(e.source)}|null)$`):void 0}),BN(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),eF=z(`$ZodPipe`,(e,t)=>{OP.init(e,t),BN(e._zod,`values`,()=>t.in._zod.values),BN(e._zod,`optin`,()=>t.in._zod.optin),BN(e._zod,`optout`,()=>t.out._zod.optout),BN(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>tF(e,t.in,n)):tF(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>tF(e,t.out,n)):tF(r,t.out,n)}});function tF(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}const nF=z(`$ZodCodec`,(e,t)=>{OP.init(e,t),BN(e._zod,`values`,()=>t.in._zod.values),BN(e._zod,`optin`,()=>t.in._zod.optin),BN(e._zod,`optout`,()=>t.out._zod.optout),BN(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if((n.direction||`forward`)===`forward`){let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>rF(e,t,n)):rF(r,t,n)}else{let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>rF(e,t,n)):rF(r,t,n)}}});function rF(e,t,n){if(e.issues.length)return e.aborted=!0,e;if((n.direction||`forward`)===`forward`){let r=t.transform(e.value,e);return r instanceof Promise?r.then(r=>iF(e,r,t.out,n)):iF(e,r,t.out,n)}else{let r=t.reverseTransform(e.value,e);return r instanceof Promise?r.then(r=>iF(e,r,t.in,n)):iF(e,r,t.in,n)}}function iF(e,t,n,r){return e.issues.length?(e.aborted=!0,e):n._zod.run({value:t,issues:e.issues},r)}const aF=z(`$ZodReadonly`,(e,t)=>{OP.init(e,t),BN(e._zod,`propValues`,()=>t.innerType._zod.propValues),BN(e._zod,`values`,()=>t.innerType._zod.values),BN(e._zod,`optin`,()=>t.innerType._zod.optin),BN(e._zod,`optout`,()=>t.innerType._zod.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(oF):oF(r)}});function oF(e){return e.value=Object.freeze(e.value),e}const sF=z(`$ZodTemplateLiteral`,(e,t)=>{OP.init(e,t);let n=[];for(let e of t.parts)if(typeof e==`object`&&e){if(!e._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...e._zod.traits].shift()}`);let t=e._zod.pattern instanceof RegExp?e._zod.pattern.source:e._zod.pattern;if(!t)throw Error(`Invalid template literal part: ${e._zod.traits}`);let r=t.startsWith(`^`)?1:0,i=t.endsWith(`$`)?t.length-1:t.length;n.push(t.slice(r,i))}else if(e===null||KN.has(typeof e))n.push(qN(`${e}`));else throw Error(`Invalid template literal part: ${e}`);e._zod.pattern=RegExp(`^${n.join(``)}$`),e._zod.parse=(n,r)=>typeof n.value==`string`?(e._zod.pattern.lastIndex=0,e._zod.pattern.test(n.value)||n.issues.push({input:n.value,inst:e,code:`invalid_format`,format:t.format??`template_literal`,pattern:e._zod.pattern.source}),n):(n.issues.push({input:n.value,inst:e,expected:`template_literal`,code:`invalid_type`}),n)});function cF(e,t){return new e({type:`string`,...YN(t)})}function lF(e,t){return new e({type:`number`,checks:[],...YN(t)})}function uF(e,t){return new e({type:`boolean`,...YN(t)})}function dF(e,t){return new e({type:`bigint`,...YN(t)})}function fF(e,t){return new e({type:`undefined`,...YN(t)})}function pF(e,t){return new e({type:`null`,...YN(t)})}function mF(e){return new e({type:`any`})}function hF(e){return new e({type:`unknown`})}function gF(e,t){return new e({type:`date`,...YN(t)})}function _F(e,t){return new CP({check:`greater_than`,...YN(t),value:e,inclusive:!0})}function vF(e,t){return new wP({check:`min_length`,...YN(t),minimum:e})}function yF(e,t){return new EP({check:`string_format`,format:`regex`,...YN(t),pattern:e})}const bF=z(`ZodMiniType`,(e,t)=>{if(!e._zod)throw Error(`Uninitialized schema in ZodMiniType.`);OP.init(e,t),e.def=t,e.type=t.type,e.parse=(t,n)=>lP(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>dP(e,t,n),e.parseAsync=async(t,n)=>uP(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>fP(e,t,n),e.check=(...n)=>e.clone({...t,checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),e.clone=(t,n)=>JN(e,t,n),e.brand=()=>e,e.register=((t,n)=>(t.add(e,n),e))}),xF=z(`ZodMiniString`,(e,t)=>{kP.init(e,t),bF.init(e,t)});function B(e){return cF(xF,e)}const SF=z(`ZodMiniNumber`,(e,t)=>{AP.init(e,t),bF.init(e,t)});function V(e){return lF(SF,e)}const CF=z(`ZodMiniBoolean`,(e,t)=>{jP.init(e,t),bF.init(e,t)});function wF(e){return uF(CF,e)}const TF=z(`ZodMiniBigInt`,(e,t)=>{MP.init(e,t),bF.init(e,t)});function EF(e){return dF(TF,e)}const DF=z(`ZodMiniUndefined`,(e,t)=>{NP.init(e,t),bF.init(e,t)});function OF(e){return fF(DF,e)}const kF=z(`ZodMiniNull`,(e,t)=>{PP.init(e,t),bF.init(e,t)});function AF(e){return pF(kF,e)}const jF=z(`ZodMiniAny`,(e,t)=>{FP.init(e,t),bF.init(e,t)});function MF(){return mF(jF)}const NF=z(`ZodMiniUnknown`,(e,t)=>{IP.init(e,t),bF.init(e,t)});function PF(){return hF(NF)}const FF=z(`ZodMiniDate`,(e,t)=>{LP.init(e,t),bF.init(e,t)});function IF(e){return gF(FF,e)}const LF=z(`ZodMiniArray`,(e,t)=>{zP.init(e,t),bF.init(e,t)});function H(e,t){return new LF({type:`array`,element:e,...YN(t)})}const RF=z(`ZodMiniObject`,(e,t)=>{UP.init(e,t),bF.init(e,t),BN(e,`shape`,()=>t.shape)});function U(e,t){let n={type:`object`,shape:e??{},...YN(t)};return new RF(n)}function zF(e,t){return ZN(e,t)}function BF(e,t){return QN(e,t)}function VF(e,t){return $N(YF,e,t)}const HF=z(`ZodMiniUnion`,(e,t)=>{GP.init(e,t),bF.init(e,t)});function W(e,t){return new HF({type:`union`,options:e,...YN(t)})}const UF=z(`ZodMiniDiscriminatedUnion`,(e,t)=>{KP.init(e,t),bF.init(e,t)});function WF(e,t,n){return new UF({type:`union`,options:t,discriminator:e,...YN(n)})}const GF=z(`ZodMiniTuple`,(e,t)=>{qP.init(e,t),bF.init(e,t)});function G(e,t,n){let r=t instanceof OP;return new GF({type:`tuple`,items:e,rest:r?t:null,...YN(r?n:t)})}const KF=z(`ZodMiniRecord`,(e,t)=>{YP.init(e,t),bF.init(e,t)});function qF(e,t,n){return new KF({type:`record`,keyType:e,valueType:t,...YN(n)})}const JF=z(`ZodMiniLiteral`,(e,t)=>{XP.init(e,t),bF.init(e,t)});function K(e,t){return new JF({type:`literal`,values:Array.isArray(e)?e:[e],...YN(t)})}const YF=z(`ZodMiniOptional`,(e,t)=>{QP.init(e,t),bF.init(e,t)});function q(e){return new YF({type:`optional`,innerType:e})}const XF=z(`ZodMiniNullable`,(e,t)=>{$P.init(e,t),bF.init(e,t)});function ZF(e){return new XF({type:`nullable`,innerType:e})}function QF(e){return q(ZF(e))}const $F=z(`ZodMiniPipe`,(e,t)=>{eF.init(e,t),bF.init(e,t)}),eI=z(`ZodMiniCodec`,(e,t)=>{$F.init(e,t),nF.init(e,t)});function tI(e,t,n){return new eI({type:`pipe`,in:e,out:t,transform:n.decode,reverseTransform:n.encode})}const nI=z(`ZodMiniReadonly`,(e,t)=>{aF.init(e,t),bF.init(e,t)});function J(e){return new nI({type:`readonly`,innerType:e})}const rI=z(`ZodMiniTemplateLiteral`,(e,t)=>{sF.init(e,t),bF.init(e,t)});function iI(e,t){return new rI({type:`template_literal`,parts:e,...YN(t)})}Lf(),Jd(),op(),pf();function aI(e){let{domain:t,message:n,primaryType:r,types:i}=e,a=(e,t)=>{for(let n of e){let{name:e,type:r}=n,o=t[e],s=r.match(fg);if(s&&(typeof o==`number`||typeof o==`bigint`)){let[,e,t]=s;I(o,{signed:e===`int`,size:Number.parseInt(t??``,10)/8})}if(r===`address`&&typeof o==`string`&&!og(o))throw new sg({address:o,cause:new cg});let c=r.match(dg);if(c){let[,e]=c;if(e&&qf(o)!==Number.parseInt(e,10))throw new fI({expectedSize:Number.parseInt(e,10),givenSize:qf(o)})}let l=i[r];l&&(bI(r),a(l,o))}};if(i.EIP712Domain&&t){if(typeof t!=`object`)throw new pI({domain:t});a(i.EIP712Domain,t)}if(r!==`EIP712Domain`)if(i[r])a(i[r],n);else throw new mI({primaryType:r,types:i})}function oI(e){let{domain:t={},message:n,primaryType:r}=e,i={EIP712Domain:cI(t),...e.types};aI({domain:t,message:n,primaryType:r,types:i});let a=[`0x19`,`0x01`];return t&&a.push(uI({domain:t,types:i})),r!==`EIP712Domain`&&a.push(dI({data:n,primaryType:r,types:i})),zf(...a)}function sI(e){let{primaryType:t,types:n}=e,r=``,i=yI({primaryType:t,types:n});i.delete(t);let a=[t,...Array.from(i).sort()];for(let e of a)r+=`${e}(${(n[e]??[]).map(({name:e,type:t})=>`${t} ${e}`).join(`,`)})`;return r}function cI(e){return[typeof e?.name==`string`&&{name:`name`,type:`string`},e?.version&&{name:`version`,type:`string`},(typeof e?.chainId==`number`||typeof e?.chainId==`bigint`)&&{name:`chainId`,type:`uint256`},e?.verifyingContract&&{name:`verifyingContract`,type:`address`},e?.salt&&{name:`salt`,type:`bytes32`}].filter(Boolean)}function lI(e){return Hh(oI(e))}function uI(e){let{domain:t,types:n}=e;return dI({data:t,primaryType:`EIP712Domain`,types:{...n,EIP712Domain:n?.EIP712Domain||cI(t)}})}function dI(e){let{data:t,primaryType:n,types:r}=e,i=gI({data:t,primaryType:n,types:r});return Hh(i)}var fI=class extends P{constructor({expectedSize:e,givenSize:t}){super(`Expected bytes${e}, got bytes${t}.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.BytesSizeMismatchError`})}},pI=class extends P{constructor({domain:e}){super(`Invalid domain "${df(e)}".`,{metaMessages:[`Must be a valid EIP-712 domain.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.InvalidDomainError`})}},mI=class extends P{constructor({primaryType:e,types:t}){super(`Invalid primary type \`${e}\` must be one of \`${JSON.stringify(Object.keys(t))}\`.`,{metaMessages:["Check that the primary type is a key in `types`."]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.InvalidPrimaryTypeError`})}},hI=class extends P{constructor({type:e}){super(`Struct type "${e}" is invalid.`,{metaMessages:[`Struct type must not be a Solidity type.`]}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`TypedData.InvalidStructTypeError`})}};function gI(e){let{data:t,primaryType:n,types:r}=e,i=[{type:`bytes32`}],a=[_I({primaryType:n,types:r})];for(let e of r[n]??[]){let[n,o]=vI({types:r,name:e.name,type:e.type,value:t[e.name]});i.push(n),a.push(o)}return Hg(i,a)}function _I(e){let{primaryType:t,types:n}=e,r=Uf(sI({primaryType:t,types:n}));return Hh(r)}function vI(e){let{types:t,name:n,type:r,value:i}=e;if(t[r]!==void 0)return[{type:`bytes32`},Hh(gI({data:i,primaryType:r,types:t}))];if(r===`bytes`)return i=`0x${(i.length%2?`0`:``)+i.slice(2)}`,[{type:`bytes32`},Hh(i,{as:`Hex`})];if(r===`string`)return[{type:`bytes32`},Hh(vf(i),{as:`Hex`})];if(r.lastIndexOf(`]`)===r.length-1){let e=r.slice(0,r.lastIndexOf(`[`)),a=i.map(r=>vI({name:n,type:e,types:t,value:r}));return[{type:`bytes32`},Hh(Hg(a.map(([e])=>e),a.map(([,e])=>e)))]}return[{type:r},i]}function yI(e,t=new Set){let{primaryType:n,types:r}=e,i=n.match(/^\w*/u)?.[0];if(t.has(i)||r[i]===void 0)return t;t.add(i);for(let e of r[i])yI({primaryType:e.type,types:r},t);return t}function bI(e){if(e===`address`||e===`bool`||e===`string`||e.startsWith(`bytes`)||e.startsWith(`uint`)||e.startsWith(`int`))throw new hI({type:e})}pi(),Ci();function xI(e){if(typeof e==`string`){if(!bi(e,{strict:!1}))throw new fi({address:e});return{address:e,type:`json-rpc`}}if(!bi(e.address,{strict:!1}))throw new fi({address:e.address});return{address:e.address,nonceManager:e.nonceManager,sign:e.sign,signAuthorization:e.signAuthorization,signMessage:e.signMessage,signTransaction:e.signTransaction,signTypedData:e.signTypedData,source:`custom`,type:`local`}}Is(),Sl(),Hc();var SI=Ac(BigInt(`0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff`)),CI=SI.create(BigInt(`-3`)),wI=BigInt(`0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b`);const TI=xl({a:CI,b:wI,Fp:SI,n:BigInt(`0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551`),Gx:BigInt(`0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296`),Gy:BigInt(`0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5`),h:BigInt(1),lowS:!1},Ns);var EI=Ac(BigInt(`0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff`)),DI=EI.create(BigInt(`-3`)),OI=BigInt(`0xb3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef`);xl({a:DI,b:OI,Fp:EI,n:BigInt(`0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973`),Gx:BigInt(`0xaa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7`),Gy:BigInt(`0x3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f`),h:BigInt(1),lowS:!1},Fs);var kI=Ac(BigInt(`0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`)),AI=kI.create(BigInt(`-3`)),jI=BigInt(`0x0051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00`);xl({a:AI,b:jI,Fp:kI,n:BigInt(`0x01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409`),Gx:BigInt(`0x00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66`),Gy:BigInt(`0x011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650`),h:BigInt(1),lowS:!1,allowedPrivateKeyLengths:[130,131,132]},Ps);const MI=TI,NI=TI;Lf(),op();function PI(e){let{privateKey:t}=e,n=NI.ProjectivePoint.fromPrivateKey(typeof t==`string`?t.slice(2):Hf(t).slice(2));return Gh(n)}function FI(e={}){let{as:t=`Hex`}=e,n=NI.utils.randomPrivateKey();return t===`Hex`?Hf(n):n}function II(e){let{extraEntropy:t=!1,hash:n,payload:r,privateKey:i}=e,{r:a,s:o,recovery:s}=NI.sign(r instanceof Uint8Array?r:_f(r),i instanceof Uint8Array?i:_f(i),{extraEntropy:typeof t==`boolean`?t:Bf(t).slice(2),lowS:!0,...n?{prehash:!0}:{}});return{r:a,s:o,yParity:s}}Jd();function LI(e,t=0){if(!/^(-?)([0-9]*)\.?([0-9]*)$/.test(e))throw new RI({value:e});let[n=``,r=`0`]=e.split(`.`),i=n.startsWith(`-`);if(i&&(n=n.slice(1)),r=r.replace(/(0+)$/,``),t===0)Math.round(Number(`.${r}`))===1&&(n=`${BigInt(n)+1n}`),r=``;else if(r.length>t){let[e,i,a]=[r.slice(0,t-1),r.slice(t-1,t),r.slice(t)],o=Math.round(Number(`${i}.${a}`));r=o>9?`${BigInt(e)+BigInt(1)}0`.padStart(e.length+1,`0`):`${e}${o}`,r.length>t&&(r=r.slice(1),n=`${BigInt(n)+1n}`),r=r.slice(0,t)}else r=r.padEnd(t,`0`);return BigInt(`${i?`-`:``}${n}${r}`)}var RI=class extends P{constructor({value:e}){super(`Value \`${e}\` is not a valid decimal number.`),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Value.InvalidDecimalNumberError`})}};Lf();var zI=new TextEncoder,BI=new TextDecoder,VI=Object.fromEntries(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`).map((e,t)=>[t,e.charCodeAt(0)])),HI={...Object.fromEntries(Array.from(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`).map((e,t)=>[e.charCodeAt(0),t])),61:0,45:62,95:63};function UI(e,t={}){let{pad:n=!0,url:r=!1}=t,i=new Uint8Array(Math.ceil(e.length/3)*4);for(let t=0,n=0;n>18],i[t+1]=VI[r>>12&63],i[t+2]=VI[r>>6&63],i[t+3]=VI[r&63]}let a=e.length%3,o=Math.floor(e.length/3)*4+(a&&a+1),s=BI.decode(new Uint8Array(i.buffer,0,o));return n&&a===1&&(s+=`==`),n&&a===2&&(s+=`=`),r&&(s=s.replaceAll(`+`,`-`).replaceAll(`/`,`_`)),s}function WI(e,t={}){return UI(_f(e),t)}function GI(e){let t=e.replace(/=+$/,``),n=t.length,r=new Uint8Array(n+3);zI.encodeInto(t+`===`,r);for(let e=0,n=0;e>16,r[n+1]=t>>8&255,r[n+2]=t&255}let i=(n>>2)*3+(n%4&&n%4-1);return new Uint8Array(r.buffer,0,i)}op();function KI(e){let t=e[4]===0?5:4,n=t+32,r=e[n+2]===0?n+3:n+2,i=BigInt(Hf(e.slice(t,n))),a=BigInt(Hf(e.slice(r)));return{r:i,s:a>MI.CURVE.n/2n?MI.CURVE.n-a:a}}async function qI(e){try{let t=e.getPublicKey();if(!t)throw new nL;let n=new Uint8Array(t),r=await crypto.subtle.importKey(`spki`,new Uint8Array(n),{name:`ECDSA`,namedCurve:`P-256`,hash:`SHA-256`},!0,[`verify`]),i=new Uint8Array(await crypto.subtle.exportKey(`raw`,r));return Gh(i)}catch(t){if(t.message!==`Permission denied to access object`)throw t;let n=new Uint8Array(e.attestationObject),r=e=>{let t=new Uint8Array([e,88,32]);for(let e=0;en[e+r]===t))return e+t.length;throw new nL},i=r(33),a=r(34);return Gh(new Uint8Array([4,...n.slice(i,i+32),...n.slice(a,a+32)]))}}Lf(),Jd(),op();const JI=Uint8Array.from([105,171,180,181,160,222,75,198,42,42,32,31,141,37,186,233]);async function YI(e){let{createFn:t=window.navigator.credentials.create.bind(window.navigator.credentials),...n}=e,r=QI(n);try{let e=await t(r);if(!e)throw new nL;let n=e.response,i=await qI(n);return{id:e.id,publicKey:i,raw:e}}catch(e){throw new nL({cause:e})}}function XI(e={}){let{flag:t=5,rpId:n=window.location.hostname,signCount:r=0}=e,i=Uh(Uf(n)),a=I(t,{size:1}),o=I(r,{size:4});return zf(i,a,o)}function ZI(e){let{challenge:t,crossOrigin:n=!1,extraClientData:r,origin:i=window.location.origin}=e;return JSON.stringify({type:`webauthn.get`,challenge:WI(t,{url:!0,pad:!1}),origin:i,crossOrigin:n,...r})}function QI(e){let{attestation:t=`none`,authenticatorSelection:n={residentKey:`preferred`,requireResidentKey:!1,userVerification:`required`},challenge:r=JI,excludeCredentialIds:i,extensions:a,name:o,rp:s={id:window.location.hostname,name:window.document.title},user:c}=e,l=c?.name??o;return{publicKey:{attestation:t,authenticatorSelection:n,challenge:r,...i?{excludeCredentials:i?.map(e=>({id:GI(e),type:`public-key`}))}:{},pubKeyCredParams:[{type:`public-key`,alg:-7}],...a&&{extensions:a},rp:s,user:{id:c?.id??Hh(vf(l),{as:`Bytes`}),name:l,displayName:c?.displayName??l}}}}function $I(e){let{credentialId:t,challenge:n,extensions:r,rpId:i=window.location.hostname,userVerification:a=`required`}=e;return{publicKey:{...t?{allowCredentials:Array.isArray(t)?t.map(e=>({id:GI(e),type:`public-key`})):[{id:GI(t),type:`public-key`}]}:{},challenge:_f(n),...r&&{extensions:r},rpId:i,userVerification:a}}}function eL(e){let{challenge:t,crossOrigin:n,extraClientData:r,flag:i,origin:a,rpId:o,signCount:s,userVerification:c=`required`}=e,l=XI({flag:i,rpId:o,signCount:s}),u=ZI({challenge:t,crossOrigin:n,extraClientData:r,origin:a}),d=Uh(Uf(u)),f=u.indexOf(`"challenge"`),p=u.indexOf(`"type"`),m={authenticatorData:l,clientDataJSON:u,challengeIndex:f,typeIndex:p,userVerificationRequired:c===`required`},h=zf(l,d);return{metadata:m,payload:h}}async function tL(e){let{getFn:t=window.navigator.credentials.get.bind(window.navigator.credentials),...n}=e,r=$I(n);try{let e=await t(r);if(!e)throw new rL;let n=e.response,i=String.fromCharCode(...new Uint8Array(n.clientDataJSON)),a=i.indexOf(`"challenge"`),o=i.indexOf(`"type"`),s=KI(new Uint8Array(n.signature));return{metadata:{authenticatorData:Hf(new Uint8Array(n.authenticatorData)),clientDataJSON:i,challengeIndex:a,typeIndex:o,userVerificationRequired:r.publicKey.userVerification===`required`},signature:s,raw:e}}catch(e){throw new rL({cause:e})}}var nL=class extends P{constructor({cause:e}={}){super(`Failed to create credential.`,{cause:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`WebAuthnP256.CredentialCreationFailedError`})}},rL=class extends P{constructor({cause:e}={}){super(`Failed to request credential.`,{cause:e}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`WebAuthnP256.CredentialRequestFailedError`})}};Lf();async function iL(e={}){let{extractable:t=!1}=e,n=await globalThis.crypto.subtle.generateKey({name:`ECDSA`,namedCurve:`P-256`},t,[`sign`,`verify`]),r=await globalThis.crypto.subtle.exportKey(`raw`,n.publicKey),i=Gh(new Uint8Array(r));return{privateKey:n.privateKey,publicKey:i}}async function aL(e){let{payload:t,privateKey:n}=e,r=await globalThis.crypto.subtle.sign({name:`ECDSA`,hash:`SHA-256`},n,hf(t)),i=gf(new Uint8Array(r)),a=Sf(xf(i,0,32)),o=Sf(xf(i,32,64));return o>MI.CURVE.n/2n&&(o=MI.CURVE.n-o),{r:a,s:o}}const oL=`0x32323232`;Lf(),op(),pf();const sL={p256:`p256`,secp256k1:`secp256k1`,webauthnp256:`webauthn-p256`},cL={admin:`admin`,normal:`session`},lL={0:`minute`,1:`hour`,2:`day`,3:`week`,4:`month`,5:`year`},uL={address:`secp256k1`,p256:`p256`,secp256k1:`secp256k1`,"webauthn-p256":`webauthnp256`},dL={admin:`admin`,session:`normal`},fL={address:2,p256:0,secp256k1:2,"webauthn-p256":1},pL={day:2,hour:1,minute:0,month:4,week:3,year:5};function mL(e={}){let t=FI();return yL({...e,privateKey:t})}async function hL(e){let{createFn:t,label:n,rpId:r,userId:i}=e,a=await YI({authenticatorSelection:{requireResidentKey:!0,residentKey:`required`,userVerification:`required`},createFn:t,extensions:{credProps:!0},rp:r?{id:r,name:r}:void 0,user:{displayName:n,id:new Uint8Array(i??vf(n)),name:n}});return xL({...e,credential:{id:a.id,publicKey:a.publicKey},id:i?wf(i):Jh(a.publicKey,{includePrefix:!1})})}function gL(e={}){let t=FI();return SL({...e,privateKey:t})}async function _L(e={}){let t=await iL();return CL({...e,keyPair:t})}function vL(e,t={}){let{chainId:n=e.chainId}=t,{expiry:r=0,id:i,prehash:a=!1,role:o=`admin`,type:s}=e,c=(()=>{let t=e.publicKey;return t===`0x`?t:s===`secp256k1`||s===`address`?qf(t)===20||Yf(Kf(t,0,12))===0n?Kf(t,-20):ig(qh(t)):t})();return{...e,chainId:n,expiry:r,hash:wL({publicKey:c,type:s}),id:(i??c).toLowerCase(),prehash:a,publicKey:c.toLowerCase(),role:o,type:s}}function yL(e){let{chainId:t,expiry:n,feeToken:r,permissions:i,privateKey:a,role:o}=e,s=Jh(PI({privateKey:a}),{includePrefix:!1});return vL({chainId:t,expiry:n,feeToken:r,permissions:i,privateKey(){return a},publicKey:s,role:o,type:`p256`})}function bL(e,t){let{chainId:n}=t,{publicKey:r}=e,i=qf(r)===20||Yf(Kf(r,0,12))===0n,a={};for(let t of e.permissions)t.type===`call`&&(a.calls??=[],a.calls.push({signature:t.selector,to:t.to===`0x3232323232323232323232323232323232323232`?void 0:t.to})),t.type===`spend`&&(a.spend??=[],a.spend.push({limit:t.limit,period:t.period,token:t.token}));return vL({chainId:n,expiry:e.expiry,permissions:a,publicKey:e.publicKey,role:cL[e.role],type:i?`address`:sL[e.type]})}function xL(e){let{credential:t,id:n,rpId:r}=e,i=Jh(t.publicKey,{includePrefix:!1});return vL({chainId:e.chainId,expiry:e.expiry??0,feeToken:e.feeToken,id:n,permissions:e.permissions,privateKey:{credential:t,rpId:r},publicKey:i,role:e.role,type:`webauthn-p256`})}function SL(e){let{privateKey:t}=e,n=Jh(PI({privateKey:t}),{includePrefix:!1});return vL({chainId:e.chainId,expiry:e.expiry??0,feeToken:e.feeToken,permissions:e.permissions,privateKey:{privateKey(){return t}},publicKey:n,role:e.role,type:`webauthn-p256`})}function CL(e){let{chainId:t,expiry:n,feeToken:r,keyPair:i,permissions:a,role:o}=e,{privateKey:s}=i,c=Jh(i.publicKey,{includePrefix:!1});return vL({chainId:t,expiry:n,feeToken:r,permissions:a,prehash:!0,privateKey:s,publicKey:c,role:o,type:`p256`})}function wL(e){let{type:t}=e,n=TL(e.publicKey);return Hh(Hg([{type:`uint8`},{type:`bytes32`}],[fL[t],Hh(n)]))}function TL(e){return qf(e)<32?Wf(e,32):e}async function EL(e,t){let{address:n,storage:r,webAuthn:i,wrap:a=!0}=t,{privateKey:o,publicKey:s,type:c}=e;if(!o)throw Error(`Key does not have a private key to sign with. Key: -`+uf(e,null,2));let l=(()=>n?cI({domain:{verifyingContract:n},message:{digest:t.payload},primaryType:`ERC1271Sign`,types:{ERC1271Sign:[{name:`digest`,type:`bytes32`}]}}):t.payload)(),[u,d]=await(async()=>{if(c===`p256`){let{privateKey:t}=e;if(typeof t==`function`)return[u_(FI({payload:l,privateKey:t()})),!1];if(t instanceof CryptoKey)return[u_(await iL({payload:l,privateKey:t})),!0]}if(c===`secp256k1`)return[u_(k_({payload:l,privateKey:o()})),!1];if(c===`webauthn-p256`){if(o.privateKey){let{payload:e,metadata:t}=$I({challenge:l,origin:`https://ithaca.xyz`,rpId:`ithaca.xyz`}),{r:n,s:r}=FI({hash:!0,payload:e,privateKey:o.privateKey()});return[kL({metadata:t,signature:{r:n,s:r}}),!1]}let{credential:t,rpId:n}=o,a=`porto.webauthnVerified.${e.hash}`,s=Date.now(),c=!0;if(r){let e=await r.getItem(a);c=!e||s-e>6e5}let{signature:{r:u,s:d},raw:f,metadata:p}=await eL({challenge:l,credentialId:t.id,getFn:i?.getFn,rpId:n,userVerification:c?`required`:`preferred`}),m=f.response;if(!m?.userHandle)throw Error(`No user handle in response`,{cause:{response:m}});let h=Cf(new Uint8Array(m.userHandle));if(e.id&&ag(e.id)&&!ig(e.id,h))throw Error(`supplied webauthn key "${e.id}" does not match signature webauthn key "${h}"`,{cause:{id:h,key:e}});return c&&r&&await r.setItem(a,s),[kL({metadata:p,signature:{r:u,s:d}}),!1]}throw Error(`Key type "${c}" is not supported.\n\nKey:\n`+uf(e,null,2))})();return a?AL(u,{keyType:c,prehash:d,publicKey:s}):u}function EL(e,t={}){let{expiry:n=0,prehash:r=!1,publicKey:i,role:a=`admin`,type:o}=e,{feeTokens:s,orchestrator:c}=t,l=Object.entries(DL(e,{feeTokens:s})).map(([e,t])=>{if(e===`calls`)return t.map(({signature:e,to:t})=>({selector:(()=>e?Xf(e)?e:X_(e):aL)(),to:t??`0x3232323232323232323232323232323232323232`,type:`call`}));if(e!==`feeToken`){if(e===`spend`)return t.map(({limit:e,period:t,token:n})=>({limit:e,period:t,token:n,type:`spend`}));throw Error(`Invalid permission type "${e}".`)}}).flat().filter(Boolean);return e.role===`session`&&c&&l.push({selector:aL,to:c,type:`call`}),{expiry:n,permissions:l??[],prehash:r,publicKey:wL(i),role:uL[a],type:lL[o]}}function DL(e,t){let{permissions:n}=e,r=n?.calls?[...n.calls]:[],i=n?.spend?[...n.spend]:[],a=t.feeTokens?.filter(e=>e.feeToken);if(a&&a.length>0){let t=OL(e,{feeTokens:a});if(t){let e=-1,n=fL.year;for(let r=0;re.feeToken.symbol===t.symbol?!0:!e.feeToken.symbol||e.feeToken.symbol===`native`?t.address===Z_:!1);if(!r)return;let i=II(e.feeToken.limit,r.decimals);return{...r,value:i}}function kL(e){let{metadata:t,signature:n}=e;return Vg(Ug([`struct WebAuthnAuth { bytes authenticatorData; string clientDataJSON; uint256 challengeIndex; uint256 typeIndex; bytes32 r; bytes32 s; }`,`WebAuthnAuth auth`]),[{authenticatorData:t.authenticatorData,challengeIndex:BigInt(t.challengeIndex),clientDataJSON:t.clientDataJSON,r:L(n.r,{size:32}),s:L(n.s,{size:32}),typeIndex:BigInt(t.typeIndex)}])}function AL(e,t){let{keyType:n,prehash:r=!1,publicKey:i}=t,a=CL({publicKey:i,type:n});return Hg([`bytes`,`bytes32`,`bool`],[e,a,r])}function jL(e){let t=typeof e==`string`?{address:e}:e,n=t.sign?`privateKey`:`porto`,{address:r,sign:i,signMessage:a,signTransaction:o,signTypedData:s,type:c}=bI({address:t.address,sign({hash:e}){if(n===`porto`)throw Error("`sign` not supported on porto accounts.");if(!t.sign)throw Error("`sign` not supported.");return t.sign({hash:e})},signMessage({message:e}){return this.sign({hash:wh(e)})},signTransaction(){throw Error("`signTransaction` not supported on porto accounts.")},signTypedData(e){return this.sign({hash:Mh(e)})}});return{address:r,keys:t.keys??void 0,sign:i,signMessage:a,signTransaction:o,signTypedData:s,source:n,type:c}}function ML(e,t={}){let{keys:n}=t,r=rg(T_({privateKey:e}));return jL({address:r,keys:n,async sign({hash:t}){return u_(k_({payload:t,privateKey:e}))},source:`privateKey`})}function NL(e,t={}){let{key:n,role:r}=t;if(n!==null){if(typeof n==`object`)return n;if(e.keys&&e.keys.length>0)return typeof n==`number`?e.keys[n]:e.keys.find(e=>e.privateKey&&(!r||e.role===r))}}async function PL(e,t){let{storage:n,replaySafe:r=!0,wrap:i=!0,webAuthn:a}=t,o=NL(e,t),s=(()=>r?cI({domain:{verifyingContract:e.address},message:{digest:t.payload},primaryType:`ERC1271Sign`,types:{ERC1271Sign:[{name:`digest`,type:`bytes32`}]}}):t.payload)(),c=(()=>o?({hash:e})=>TL(o,{address:null,payload:e,storage:n,webAuthn:a,wrap:i}):e.source===`privateKey`?e.sign:void 0)();if(!c)throw Error(`cannot find key to sign with.`);return await c({hash:s})}ap();function FL(e,t={}){return V_(e,t)}function IL(e,t,n){if(t===`Error`)return RL;if(t===`Panic`)return zL;if(Xf(t,{strict:!1})){let e=Gf(t,0,4);if(e===`0x08c379a0`)return RL;if(e===`0x4e487b71`)return zL}let r=H_(e,t,n);if(r.type!==`error`)throw new q_({name:t,type:`error`});return r}function LL(e){return U_(e)}const RL=FL({inputs:[{name:`message`,type:`string`}],name:`Error`,type:`error`}),zL=FL({inputs:[{name:`reason`,type:`uint8`}],name:`Panic`,type:`error`});O();var BL=class extends D{constructor(){super(`Function is not recognized.`,{metaMessages:[`This could be due to any of the following:`,` - The contract does not have the function,`,` - The address is not a contract.`],name:`FunctionSelectorNotRecognizedError`})}};Ra();function VL(e,t){let n=e.walk(e=>`data`in e);if(!n?.data)return e;if(n.data===LL(FL(`error FnSelectorNotRecognized()`)))return new BL;let r=null;for(let e of t.calls){let t=e;if(t.abi)try{if(!La({abi:t.abi,data:n.data}))continue;r=t}catch{}}return r?ss(n,{abi:r.abi,address:r.to,args:r.args,functionName:r.functionName}):e}qd(),ap();const X=()=>rI([`0x`,V()],{message:`Needs string in format ^0x[A-Fa-f0-9]{40}$.`}),Z=()=>rI([`0x`,V()],{message:`Needs string in format ^0x[A-Fa-f0-9]+$.`}),Q=()=>eI(Z(),H(),{decode:e=>Yf(e),encode:e=>L(e)}),$=()=>eI(Z(),TF({message:`Required bigint`}),{decode:e=>Jf(e),encode:e=>L(e)});function HL(e){return G(e)}var UL=class extends F{constructor(){super(...arguments),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Schema.ValidationError`})}};function WL(e){let t=e,n=`Validation failed with ${t.issues.length} error${t.issues.length===1?``:`s`}:`;n+=` +`+df(e,null,2));let l=(()=>n?lI({domain:{verifyingContract:n},message:{digest:t.payload},primaryType:`ERC1271Sign`,types:{ERC1271Sign:[{name:`digest`,type:`bytes32`}]}}):t.payload)(),[u,d]=await(async()=>{if(c===`p256`){let{privateKey:t}=e;if(typeof t==`function`)return[d_(II({payload:l,privateKey:t()})),!1];if(t instanceof CryptoKey)return[d_(await aL({payload:l,privateKey:t})),!0]}if(c===`secp256k1`)return[d_(A_({payload:l,privateKey:o()})),!1];if(c===`webauthn-p256`){if(o.privateKey){let{payload:e,metadata:t}=eL({challenge:l,origin:`https://ithaca.xyz`,rpId:`ithaca.xyz`}),{r:n,s:r}=II({hash:!0,payload:e,privateKey:o.privateKey()});return[AL({metadata:t,signature:{r:n,s:r}}),!1]}let{credential:t,rpId:n}=o,a=`porto.webauthnVerified.${e.hash}`,s=Date.now(),c=!0;if(r){let e=await r.getItem(a);c=!e||s-e>6e5}let{signature:{r:u,s:d},raw:f,metadata:p}=await tL({challenge:l,credentialId:t.id,getFn:i?.getFn,rpId:n,userVerification:c?`required`:`preferred`}),m=f.response;if(!m?.userHandle)throw Error(`No user handle in response`,{cause:{response:m}});let h=wf(new Uint8Array(m.userHandle));if(e.id&&og(e.id)&&!ag(e.id,h))throw Error(`supplied webauthn key "${e.id}" does not match signature webauthn key "${h}"`,{cause:{id:h,key:e}});return c&&r&&await r.setItem(a,s),[AL({metadata:p,signature:{r:u,s:d}}),!1]}throw Error(`Key type "${c}" is not supported.\n\nKey:\n`+df(e,null,2))})();return a?jL(u,{keyType:c,prehash:d,publicKey:s}):u}function DL(e,t={}){let{expiry:n=0,prehash:r=!1,publicKey:i,role:a=`admin`,type:o}=e,{feeTokens:s,orchestrator:c}=t,l=Object.entries(OL(e,{feeTokens:s})).map(([e,t])=>{if(e===`calls`)return t.map(({signature:e,to:t})=>({selector:(()=>e?Zf(e)?e:Z_(e):oL)(),to:t??`0x3232323232323232323232323232323232323232`,type:`call`}));if(e!==`feeToken`){if(e===`spend`)return t.map(({limit:e,period:t,token:n})=>({limit:e,period:t,token:n,type:`spend`}));throw Error(`Invalid permission type "${e}".`)}}).flat().filter(Boolean);return e.role===`session`&&c&&l.push({selector:oL,to:c,type:`call`}),{expiry:n,permissions:l??[],prehash:r,publicKey:TL(i),role:dL[a],type:uL[o]}}function OL(e,t){let{permissions:n}=e,r=n?.calls?[...n.calls]:[],i=n?.spend?[...n.spend]:[],a=t.feeTokens?.filter(e=>e.feeToken);if(a&&a.length>0){let t=kL(e,{feeTokens:a});if(t){let e=-1,n=pL.year;for(let r=0;re.feeToken.symbol===t.symbol?!0:!e.feeToken.symbol||e.feeToken.symbol===`native`?t.address===Q_:!1);if(!r)return;let i=LI(e.feeToken.limit,r.decimals);return{...r,value:i}}function AL(e){let{metadata:t,signature:n}=e;return Hg(Wg([`struct WebAuthnAuth { bytes authenticatorData; string clientDataJSON; uint256 challengeIndex; uint256 typeIndex; bytes32 r; bytes32 s; }`,`WebAuthnAuth auth`]),[{authenticatorData:t.authenticatorData,challengeIndex:BigInt(t.challengeIndex),clientDataJSON:t.clientDataJSON,r:I(n.r,{size:32}),s:I(n.s,{size:32}),typeIndex:BigInt(t.typeIndex)}])}function jL(e,t){let{keyType:n,prehash:r=!1,publicKey:i}=t,a=wL({publicKey:i,type:n});return Ug([`bytes`,`bytes32`,`bool`],[e,a,r])}function ML(e){let t=typeof e==`string`?{address:e}:e,n=t.sign?`privateKey`:`porto`,{address:r,sign:i,signMessage:a,signTransaction:o,signTypedData:s,type:c}=xI({address:t.address,sign({hash:e}){if(n===`porto`)throw Error("`sign` not supported on porto accounts.");if(!t.sign)throw Error("`sign` not supported.");return t.sign({hash:e})},signMessage({message:e}){return this.sign({hash:Th(e)})},signTransaction(){throw Error("`signTransaction` not supported on porto accounts.")},signTypedData(e){return this.sign({hash:Nh(e)})}});return{address:r,keys:t.keys??void 0,sign:i,signMessage:a,signTransaction:o,signTypedData:s,source:n,type:c}}function NL(e,t={}){let{keys:n}=t,r=ig(E_({privateKey:e}));return ML({address:r,keys:n,async sign({hash:t}){return d_(A_({payload:t,privateKey:e}))},source:`privateKey`})}function PL(e,t={}){let{key:n,role:r}=t;if(n!==null){if(typeof n==`object`)return n;if(e.keys&&e.keys.length>0)return typeof n==`number`?e.keys[n]:e.keys.find(e=>e.privateKey&&(!r||e.role===r))}}async function FL(e,t){let{storage:n,replaySafe:r=!0,wrap:i=!0,webAuthn:a}=t,o=PL(e,t),s=(()=>r?lI({domain:{verifyingContract:e.address},message:{digest:t.payload},primaryType:`ERC1271Sign`,types:{ERC1271Sign:[{name:`digest`,type:`bytes32`}]}}):t.payload)(),c=(()=>o?({hash:e})=>EL(o,{address:null,payload:e,storage:n,webAuthn:a,wrap:i}):e.source===`privateKey`?e.sign:void 0)();if(!c)throw Error(`cannot find key to sign with.`);return await c({hash:s})}op();function IL(e,t={}){return H_(e,t)}function LL(e,t,n){if(t===`Error`)return zL;if(t===`Panic`)return BL;if(Zf(t,{strict:!1})){let e=Kf(t,0,4);if(e===`0x08c379a0`)return zL;if(e===`0x4e487b71`)return BL}let r=U_(e,t,n);if(r.type!==`error`)throw new J_({name:t,type:`error`});return r}function RL(e){return W_(e)}const zL=IL({inputs:[{name:`message`,type:`string`}],name:`Error`,type:`error`}),BL=IL({inputs:[{name:`reason`,type:`uint8`}],name:`Panic`,type:`error`});O();var VL=class extends D{constructor(){super(`Function is not recognized.`,{metaMessages:[`This could be due to any of the following:`,` - The contract does not have the function,`,` - The address is not a contract.`],name:`FunctionSelectorNotRecognizedError`})}};za();function HL(e,t){let n=e.walk(e=>`data`in e);if(!n?.data)return e;if(n.data===RL(IL(`error FnSelectorNotRecognized()`)))return new VL;let r=null;for(let e of t.calls){let t=e;if(t.abi)try{if(!Ra({abi:t.abi,data:n.data}))continue;r=t}catch{}}return r?cs(n,{abi:r.abi,address:r.to,args:r.args,functionName:r.functionName}):e}Jd(),op();const Y=()=>iI([`0x`,B()],{message:`Needs string in format ^0x[A-Fa-f0-9]{40}$.`}),X=()=>iI([`0x`,B()],{message:`Needs string in format ^0x[A-Fa-f0-9]+$.`}),Z=()=>tI(X(),V(),{decode:e=>Xf(e),encode:e=>I(e)}),Q=()=>tI(X(),EF({message:`Required bigint`}),{decode:e=>Yf(e),encode:e=>I(e)});function UL(e){return W(e)}var WL=class extends P{constructor(){super(...arguments),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Schema.ValidationError`})}};function GL(e){let t=e,n=`Validation failed with ${t.issues.length} error${t.issues.length===1?``:`s`}:`;n+=` `;for(let e of t.issues)e&&(n+=` -`,n+=GL(e));return new UL(n)}function GL(e,t=0){let n=KL(e.path),r=`- ${n?`${n}: `:``}`,i=` `.repeat(t+1),a=r;switch(e.code){case`invalid_type`:{let t=e.expected,n=e.input?qL(e):`undefined`;a+=`Expected ${t}. ${e.message===`Invalid input`?``:e.message}`,n!==`undefined`&&(a+=`but received ${n}`);break}case`too_big`:{let t=e.maximum,n=e.inclusive??!0;e.exact??!1?a+=`${e.origin} must be exactly ${t}`:a+=`${e.origin} must be ${n?`at most`:`less than`} ${t}`;break}case`too_small`:{let t=e.minimum,n=e.inclusive??!0;e.exact??!1?a+=`${e.origin} must be exactly ${t}`:a+=`${e.origin} must be ${n?`at least`:`greater than`} ${t}`;break}case`invalid_format`:switch(e.format){case`regex`:a+=`Must match pattern: ${e.pattern}`;break;case`starts_with`:a+=`Must start with "${e.prefix}"`;break;case`ends_with`:a+=`Must end with "${e.suffix}"`;break;case`includes`:a+=`Must include "${e.includes}"`;break;case`template_literal`:a+=`Must match pattern: ${e.pattern}`;break;default:a+=`Invalid ${e.format} format`}break;case`not_multiple_of`:a+=`Number must be a multiple of ${e.divisor}`;break;case`unrecognized_keys`:{let t=e.keys.map(e=>`"${e}"`).join(`, `);a+=`Unrecognized key${e.keys.length>1?`s`:``}: ${t}`;break}case`invalid_union`:{let n=e.errors&&e.errors.length>0;a+=`Invalid union value.`,n&&e.errors.forEach(e=>{e.length>0&&e.forEach(e=>{a+=` -`,a+=i,a+=GL(e,t+1)})});break}case`invalid_key`:a+=`Invalid ${e.origin} key`,e.issues&&e.issues.length>0&&e.issues.forEach(e=>{a+=` -`,a+=i,a+=GL(e,t+1)});break;case`invalid_element`:a+=`Invalid ${e.origin} element at key "${e.key}"`,e.issues&&e.issues.length>0&&e.issues.forEach(e=>{a+=` -`,a+=i,a+=GL(e,t+1)});break;case`invalid_value`:{let t=e.values.map(e=>JSON.stringify(e)).join(`, `);e.values.length>1?a+=`Expected one of: ${t}`:a+=`Expected ${t}`;break}case`custom`:a+=e.message||`Custom validation failed`;break;default:a+=e.message||`Validation failed`}return a}function KL(e){return e.length===0?``:"at `"+e.map((e,t)=>typeof e==`number`?`[${e}]`:typeof e==`symbol`?`[${e.toString()}]`:/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)&&t>0?`.${e}`:t===0&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`["${e}"]`).join(``)+"`"}function qL(e){let t=e.input;if(t===void 0)return`undefined`;if(t===null)return`null`;let n=typeof t;return n===`object`?Array.isArray(t)?`array`:t instanceof Date?`date`:t instanceof Map?`map`:t instanceof Set?`set`:`object`:n}const JL=W({selector:Z(),to:X(),type:q(`call`)}),YL=W({limit:$(),period:G([q(`minute`),q(`hour`),q(`day`),q(`week`),q(`month`),q(`year`)]),token:J(G([X(),kF()])),type:q(`spend`)}),XL=G([JL,YL]),ZL=W({expiry:Q(),prehash:J(CF()),publicKey:Z(),role:G([q(`admin`),q(`normal`)]),type:G([q(`p256`),q(`secp256k1`),q(`webauthnp256`)])}),QL=W({...ZL.shape,permissions:Y(U(XL))});var $L;(function(e){e.AssetDiffAsset=G([W({address:J(G([X(),kF()])),decimals:J(G([H(),kF()])),direction:G([q(`incoming`),q(`outgoing`)]),fiat:J(W({currency:V(),value:eI(V(),H(),{decode:e=>Number(e),encode:e=>String(e)})})),name:J(G([V(),kF()])),symbol:V(),type:q(`erc20`),value:$()}),W({address:J(G([X(),kF()])),direction:G([q(`incoming`),q(`outgoing`)]),fiat:J(W({currency:V(),value:eI(V(),H(),{decode:e=>Number(e),encode:e=>String(e)})})),name:J(G([V(),kF()])),symbol:V(),type:q(`erc721`),uri:V(),value:$()}),W({address:kF(),decimals:J(G([H(),kF()])),direction:G([q(`incoming`),q(`outgoing`)]),fiat:J(W({currency:V(),value:eI(V(),H(),{decode:e=>Number(e),encode:e=>String(e)})})),symbol:V(),type:kF(),value:$()})]),e.Response=KF(Z(),Y(U(Y(K([X(),Y(U(e.AssetDiffAsset))])))))})($L||={});var eR;(function(e){e.Request=Y(U(QL)),e.Response=Y(U(W({...QL.shape,hash:Z()})))})(eR||={});var tR;(function(e){e.Response=KF(Z(),W({currency:V(),value:V()}))})(tR||={});var nR;(function(e){e.Request=W({feePayer:J(X()),feeToken:J(X()),nonce:J($())})})(nR||={});var rR;(function(e){e.Request=Y(U(W({address:X(),value:$()})))})(rR||={});var iR;(function(e){e.Request=Y(U(W({hash:Z()}))),e.Response=Y(U(W({hash:Z()})))})(iR||={});const aR=W({eoa:X(),executionData:Z(),nonce:Z(),signature:Z()}),oR=W({...aR.shape,chainId:Q()}),sR=G([W({combinedGas:$(),encodedFundTransfers:Y(U(Z())),encodedPreCalls:Y(U(Z())),eoa:X(),executionData:Z(),expiry:$(),funder:X(),funderSignature:Z(),isMultichain:CF(),nonce:$(),payer:X(),paymentAmount:$(),paymentMaxAmount:$(),paymentRecipient:X(),paymentSignature:Z(),paymentToken:X(),settler:X(),settlerContext:Z(),signature:Z(),supportedAccountImplementation:X()}),W({combinedGas:$(),encodedFundTransfers:Y(U(Z())),encodedPreCalls:Y(U(Z())),eoa:X(),executionData:Z(),expiry:$(),funder:X(),funderSignature:Z(),isMultichain:CF(),nonce:$(),payer:X(),paymentRecipient:X(),paymentSignature:Z(),paymentToken:X(),prePaymentAmount:$(),prePaymentMaxAmount:$(),settler:X(),settlerContext:Z(),signature:Z(),supportedAccountImplementation:X(),totalPaymentAmount:$(),totalPaymentMaxAmount:$()})]);W({eoa:X(),executionData:Z(),nonce:$()});const cR=W({address:G([X(),kF()]),decimals:J(H()),deficit:$(),fiat:J(W({currency:V(),value:V()})),name:J(V()),required:$(),symbol:J(V())}),lR=W({additionalAuthorization:ZF(W({address:X(),chainId:Q(),nonce:Q(),r:Z(),s:Z(),yParity:Q()})),assetDeficits:J(U(cR)),authorizationAddress:J(G([X(),kF()])),chainId:Q(),ethPrice:$(),extraPayment:$(),feeTokenDeficit:$(),intent:sR,nativeFeeEstimate:W({maxFeePerGas:$(),maxPriorityFeePerGas:$()}),orchestrator:X(),paymentTokenDecimals:H(),txGas:$()}),uR=W({multiChainRoot:J(G([Z(),kF()])),quotes:Y(U(lR)).check(_F(1)),ttl:H()}),dR=W({...uR.shape,hash:Z(),r:Z(),s:Z(),v:J(Z()),yParity:J(Z())}),fR=W({address:X(),decimals:H(),feeToken:J(CF()),interop:J(CF()),nativeRate:J($()),symbol:V(),uid:V()}),pR=V().check(vF(/^[A-Z0-9]+$/));var mR=W({address:X(),chainId:Q(),nonce:Q()}),hR=W({...mR.shape,r:Z(),s:Z(),yParity:Q()}),gR=W({data:J(Z()),to:X(),value:J($())}),_R;(function(e){e.Parameters=W({address:X(),secret:V()}),e.Request=W({method:q(`account_getOnrampContactInfo`),params:Y(K([e.Parameters]))}),e.Response=W({email:J(V()),phone:J(V()),phoneVerifiedAt:J(H())})})(_R||={});var vR;(function(e){e.Parameters=W({address:X()}),e.Request=W({method:q(`account_onrampStatus`),params:Y(K([e.Parameters]))}),e.Response=W({email:J(H()),phone:J(H())})})(vR||={});var yR;(function(e){e.Parameters=W({phone:V(),walletAddress:X()}),e.Request=W({method:q(`account_resendVerifyPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(yR||={});var bR;(function(e){e.Parameters=W({email:V().check(vF(/^.*@.*$/)),walletAddress:X()}),e.Request=W({method:q(`account_setEmail`),params:Y(K([e.Parameters]))}),e.Response=kF()})(bR||={});var xR;(function(e){e.Parameters=W({phone:V(),walletAddress:X()}),e.Request=W({method:q(`account_setPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(xR||={});var SR;(function(e){e.Parameters=W({chainId:Q(),email:V(),signature:Z(),token:V(),walletAddress:X()}),e.Request=W({method:q(`account_verifyEmail`),params:Y(K([e.Parameters]))}),e.Response=kF()})(SR||={});var CR;(function(e){e.Parameters=W({code:V(),phone:V(),walletAddress:X()}),e.Request=W({method:q(`account_verifyPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(CR||={});var wR;(function(e){e.Request=W({method:q(`health`),params:DF()}),e.Response=W({quoteSigner:X(),status:V(),version:V()})})(wR||={});var TR;(function(e){e.Parameters=W({address:X(),chainId:Q(),tokenAddress:X(),value:$()}),e.Request=W({method:q(`wallet_addFaucetFunds`),params:Y(K([e.Parameters]))}),e.Response=W({message:J(V()),transactionHash:Z()})})(TR||={});var ER;(function(e){e.Parameters=W({chainId:Q(),id:Z()}),e.Request=W({method:q(`wallet_getAccounts`),params:Y(K([e.Parameters]))}),e.Response=Y(U(W({address:X(),keys:eR.Response})))})(ER||={});var DR;(function(e){e.Parameters=W({address:X()}),e.Request=W({method:q(`wallet_getAuthorization`),params:Y(K([e.Parameters]))}),e.Response=W({authorization:hR,data:Z(),to:X()})})(DR||={});var OR;(function(e){e.Request=W({method:q(`wallet_getCapabilities`),params:J(K([Y(U(H()))]))});let t=W({address:X(),version:J(G([V(),kF()]))});e.Response=KF(Z(),W({contracts:W({accountImplementation:t,accountProxy:t,legacyAccountImplementations:Y(U(t)),legacyOrchestrators:Y(U(G([W({orchestrator:t,simulator:t}),t]))),orchestrator:t,simulator:t}),fees:W({quoteConfig:W({constantRate:J(G([H(),kF()])),gas:J(W({intentBuffer:J(H()),txBuffer:J(H())})),rateTtl:H(),ttl:H()}),recipient:X(),tokens:Y(U(fR))})}))})(OR||={});var kR;(function(e){let t=G([q(`native`),q(`erc20`),q(`erc721`),V()]);e.Parameters=W({account:X(),assetFilter:J(KF(Z(),Y(U(W({address:G([X(),q(`native`)]),type:t}))))),assetTypeFilter:J(Y(U(t))),chainFilter:J(Y(U(Q())))}),e.Request=W({method:q(`wallet_getAssets`),params:Y(K([e.Parameters]))}),e.Price=W({currency:V(),value:eI(V(),H(),{decode:e=>Number(e),encode:e=>String(e)})}),e.Response=KF(V(),Y(U(HL([W({address:X(),balance:$(),metadata:XF(W({decimals:H(),fiat:ZF(e.Price),name:V(),symbol:V()})),type:q(`erc20`)}),W({address:XF(q(`native`)),balance:$(),metadata:XF(W({decimals:H(),fiat:ZF(e.Price),name:J(V()),symbol:J(V())})),type:q(`native`)})]))))})(kR||={});var AR;(function(e){e.Request=W({method:q(`wallet_getCallsStatus`),params:Y(K([Z()]))}),e.Response=W({id:V(),receipts:J(Y(U(W({blockHash:Z(),blockNumber:Q(),chainId:Q(),gasUsed:Q(),logs:Y(U(W({address:X(),data:Z(),topics:Y(U(Z()))}))),status:Z(),transactionHash:Z()})))),status:H()})})(AR||={});var jR;(function(e){e.Parameters=W({address:X(),chainIds:J(Y(U(Q())))}),e.Request=W({method:q(`wallet_getKeys`),params:Y(K([e.Parameters]))}),e.Response=KF(Z(),eR.Response)})(jR||={});var MR;(function(e){e.Capabilities=W({authorizeKeys:J(eR.Request),meta:nR.Request,preCall:J(CF()),preCalls:J(Y(U(aR))),requiredFunds:J(rR.Request),revokeKeys:J(iR.Request)}),e.ResponseCapabilities=W({assetDiffs:J($L.Response),authorizeKeys:ZF(eR.Response),feePayerDigest:J(Z()),feeSignature:J(Z()),feeTotals:J(tR.Response),revokeKeys:ZF(iR.Response)}),e.Parameters=W({calls:Y(U(gR)),capabilities:e.Capabilities,chainId:Q(),from:J(X()),key:J(W({prehash:CF(),publicKey:Z(),type:ZL.shape.type}))}),e.Request=W({method:q(`wallet_prepareCalls`),params:Y(K([e.Parameters]))}),e.Response=W({capabilities:e.ResponseCapabilities,context:W({preCall:J(BF(oR)),quote:J(BF(dR))}),digest:Z(),key:ZF(W({prehash:CF(),publicKey:Z(),type:ZL.shape.type})),signature:Z(),typedData:W({domain:G([W({chainId:G([Q(),H()]),name:V(),verifyingContract:X(),version:V()}),W({})]),message:KF(V(),NF()),primaryType:V(),types:KF(V(),NF())})})})(MR||={});var NR;(function(e){e.Capabilities=W({authorizeKeys:eR.Request}),e.Parameters=W({address:X(),capabilities:e.Capabilities,chainId:J(H()),delegation:X()}),e.Request=W({method:q(`wallet_prepareUpgradeAccount`),params:Y(K([e.Parameters]))}),e.Response=W({capabilities:e.Capabilities,chainId:Q(),context:W({address:X(),authorization:mR,chainId:Q(),preCall:aR}),digests:W({auth:Z(),exec:Z()}),typedData:W({domain:G([W({chainId:G([Q(),H()]),name:V(),verifyingContract:X(),version:V()}),W({})]),message:KF(V(),NF()),primaryType:V(),types:KF(V(),NF())})})})(NR||={});var PR;(function(e){e.Request=W({method:q(`wallet_feeTokens`),params:J(DF())}),e.Response=KF(Z(),Y(U(W({address:X(),decimals:H(),nativeRate:J($()),symbol:V()}))))})(PR||={});var FR;(function(e){e.Parameters=W({capabilities:J(W({feeSignature:J(Z())})),context:W({preCall:J(BF(oR)),quote:J(BF(dR))}),key:J(W({prehash:CF(),publicKey:Z(),type:ZL.shape.type})),signature:Z()}),e.Request=W({method:q(`wallet_sendPreparedCalls`),params:Y(K([e.Parameters]))}),e.Response=W({id:Z()})})(FR||={});var IR;(function(e){e.Parameters=W({context:W({address:X(),authorization:mR,chainId:Q(),preCall:aR}),signatures:W({auth:Z(),exec:Z()})}),e.Request=W({method:q(`wallet_upgradeAccount`),params:Y(K([e.Parameters]))}),e.Response=DF()})(IR||={});var LR;(function(e){e.Parameters=W({address:Z(),chainId:Q(),digest:Z(),signature:Z()}),e.Request=W({method:q(`wallet_verifySignature`),params:Y(K([e.Parameters]))}),e.Response=W({proof:ZF(W({account:X(),initPreCall:ZF(aR),keyHash:Z()})),valid:CF()})})(LR||={}),qd(),ap();async function RR(e,t){try{let n=`wallet_getAuthorization`,r=await wm(()=>e.request({method:n,params:[fP(DR.Parameters,t)]}),{cacheKey:`${e.uid}.${n}.${t.address}`});return pP(DR.Response,r)}catch(e){throw ez(e),e}}async function zR(e,t={}){let n=(()=>{if(t.chainId)return[t.chainId];if(t.chainIds!==`all`)return t.chainIds?t.chainIds:[e.chain.id]})();try{let r=`wallet_getCapabilities`,i=await wm(()=>e.request({method:r,params:n?[n]:void 0},{retryCount:0}),{cacheKey:`${e.uid}.${r}.${n?.join(`,`)}`}),a=(()=>t.raw?i:pP(OR.Response,i))();return t.chainIds?a:Object.values(a)[0]}catch(e){throw ez(e),e}}async function BR(e,t){let{account:n,assetFilter:r,assetTypeFilter:i,chainFilter:a}=t;try{let t=await e.request({method:`wallet_getAssets`,params:[fP(kR.Parameters,{account:n,assetFilter:r,assetTypeFilter:i,chainFilter:a})]}),o=pP(kR.Response,t),s=Object.entries(o).reduce((e,[t,n])=>(e[Yf(t)]=n,e),{}),c={};for(let e of Object.values(s))for(let t of e){let e=JSON.stringify(t.metadata);c[e]={...t,balance:t.balance+(c[e]?.balance??0n)}}return{...s,0:Object.values(c)}}catch(e){throw ez(e),e}}async function VR(e,t){let{id:n}=t;try{let t=await e.request({method:`wallet_getCallsStatus`,params:[n]});return pP(AR.Response,t)}catch(e){throw ez(e),e}}async function HR(e,t){let{address:n,chainIds:r}=t;try{let t=await e.request({method:`wallet_getKeys`,params:[fP(jR.Parameters,{address:n,chainIds:r})]});return pP(jR.Response,t)}catch(e){throw ez(e),e}}async function UR(e){let t=`health`,n=await wm(()=>e.request({method:t}),{cacheKey:`${e.uid}.${t}`});return pP(wR.Response,n)}async function WR(e,t){let{address:n,capabilities:r,chain:i=e.chain,key:a}=t,o=t.calls.map(e=>({data:e.abi?J_(Y_(e.abi,e.functionName),e.args):e.data??`0x`,to:e.to,value:e.value??0n}));try{let t=await e.request({method:`wallet_prepareCalls`,params:[fP(MR.Parameters,{calls:o,capabilities:{...r,meta:{...r?.meta}},chainId:i?.id,from:n,key:a?{prehash:a.prehash,publicKey:a.publicKey,type:a.type}:void 0})]},{retryCount:0});return Object.assign(pP(MR.Response,t),{_raw:t})}catch(e){throw ez(e),QR(e,{calls:t.calls}),e}}async function GR(e,t){let{address:n,chain:r=e.chain,delegation:i,...a}=t;try{let t=await e.request({method:`wallet_prepareUpgradeAccount`,params:[fP(NR.Parameters,fN({address:n,capabilities:a,chainId:r?.id,delegation:i}))]},{retryCount:0});return pP(NR.Response,t)}catch(e){throw ez(e),QR(e),e}}async function KR(e,t){let{capabilities:n,context:r,key:i,signature:a}=t;try{let t=await e.request({method:`wallet_sendPreparedCalls`,params:[fP(FR.Parameters,{capabilities:n,context:{preCall:r.preCall,quote:r.quote},key:i?{prehash:i.prehash,publicKey:i.publicKey,type:i.type}:void 0,signature:a})]},{retryCount:0});return pP(FR.Response,t)}catch(e){throw ez(e),QR(e),e}}async function qR(e,t){let{email:n,walletAddress:r}=t;try{let t=await e.request({method:`account_setEmail`,params:[fP(bR.Parameters,{email:n,walletAddress:r})]},{retryCount:0});return pP(bR.Response,t)}catch(e){throw ez(e),QR(e),e}}async function JR(e,t){let{context:n,signatures:r}=t;try{await e.request({method:`wallet_upgradeAccount`,params:[fP(IR.Parameters,{context:n,signatures:r})]},{retryCount:0})}catch(e){throw ez(e),QR(e),e}}async function YR(e,t){let{chainId:n,email:r,signature:i,token:a,walletAddress:o}=t;try{let t=await e.request({method:`account_verifyEmail`,params:[fP(SR.Parameters,{chainId:n,email:r,signature:i,token:a,walletAddress:o})]},{retryCount:0});return pP(SR.Response,t)}catch(e){throw ez(e),QR(e),e}}async function XR(e,t){let{signature:n}=t,{signature:r,capabilities:{feeSignature:i,...a},...o}=t.response,s=$R({capabilities:a,...o}),c=Vh(Hf(JSON.stringify(s))),l=D_({payload:c,signature:a_(n)}),{quoteSigner:u}=await UR(e);return l===u}async function ZR(e,t){let{address:n,chain:r=e.chain,digest:i,signature:a}=t;try{async function t(){return{proof:null,valid:await rv(e,{address:n,hash:i,signature:a})}}let o=await(async()=>{let o=await e.request({method:`wallet_verifySignature`,params:[fP(LR.Parameters,{address:n,chainId:r?.id,digest:i,signature:a})]},{retryCount:0}).catch(t);return o.valid?o:t()})();return pP(LR.Response,o)}catch(e){throw ez(e),e}}function QR(e,{calls:t}={}){if(!(e instanceof D))return;let n=e=>{try{if(e.name===`ContractFunctionExecutionError`){let t=e.cause.name===`ContractFunctionRevertedError`?e.cause.data:void 0;if(t)return IL([t.abiItem],t.errorName)}let t=e.walk(e=>!(e instanceof Error)&&e.code===3);if(!t)return;let{data:n,message:r}=t;return n===`0xd0d5039b`?FL(`error Unauthorized()`):{inputs:[],name:(r??n).split(`(`)[0],type:`error`}}catch{return}},r=VL(e,{calls:t??[]}),i=n(r);if(!(r===e&&!i))throw new tz(Object.assign(r,{abiError:i}))}function $R(e){if(typeof e==`object`&&e){if(Array.isArray(e))return e.map($R);let t={};for(let n of Object.keys(e).sort())t[n]=$R(e[n]);return t}return e}function ez(e){if(e.name===`$ZodError`)throw WL(e)}var tz=class extends F{constructor(e){super(`An error occurred while executing calls.`,{cause:e,metaMessages:[e.abiError&&`Reason: `+e.abiError.name].filter(Boolean)}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Rpc.ExecutionError`}),Object.defineProperty(this,`abiError`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abiError=e.abiError}};const nz={anvil:{http:`http://localhost:9119`},prod:{http:`https://rpc.porto.sh`},stg:{http:`https://stg-rpc.porto.sh`}};function rz(e){return t=>{let n=e.public(t),r=e.relay(t);return Mv({key:rz.type,name:`Relay Proxy`,async request({method:e,params:t},i){return iz(e)?r.request({method:e,params:t},i):n.request({method:e,params:t},i)},type:rz.type})}}(function(e){e.type=`relayProxy`})(rz||={});function iz(e){return!!(e.startsWith(`wallet_`)||e.startsWith(`account_`)||e===`health`)}ff();var az=new Map;function oz(e,t={}){let{config:n,id:r,store:i}=e._internal,{chains:a,relay:o}=n,s=i.getState(),c=t.chainId??s.chainIds[0],l=a.find(e=>e.id===c);if(!l)throw Error([`Could not find a compatible Porto chain on the given chain configuration.`,``,`Provided chains: [${a.map(e=>`${e.name} (id: ${e.id})`).join(`, `)}]`,`Needed chain (id): ${c}`,`Please add this chain (id) to your chain configuration.`].join(` -`));let u=rz({public:n.transports[l.id]??Pv(l.rpcUrls.default.http.map(e=>Rv(e))),relay:o}),d=[r,uf(l)].filter(Boolean).join(`:`);if(az.has(d))return az.get(d);let f=Ym({...t,chain:l,pollingInterval:1e3,transport:u});return az.set(d,f),f}const sz=W({chainId:J(Q()),expiry:Q(),hash:Z(),id:Z(),prehash:J(CF()),publicKey:Z(),role:G([q(`admin`),q(`session`)]),type:G([q(`address`),q(`p256`),q(`secp256k1`),q(`webauthn-p256`)])}),cz=Y(U(HL([W({signature:V(),to:X()}),W({signature:V()}),W({to:X()})])).check(_F(1))),lz=W({limit:G([rI([H(),`.`,H()]),rI([H()])]).check(vF(/^\d+(\.\d+)?$/)),symbol:J(G([q(`native`),pR]))}),uz=W({addresses:Y(U(X()))}),dz=Y(U(W({limit:$(),period:G([q(`minute`),q(`hour`),q(`day`),q(`week`),q(`month`),q(`year`)]),token:J(X())}))),fz=W({calls:J(cz),signatureVerification:J(uz),spend:J(dz)}),pz=W({...sz.shape,feeToken:J(XF(lz)),permissions:J(fz)}),mz=W({address:X(),chainId:J(Q()),expiry:H(),id:Z(),key:RF(sz,{publicKey:!0,type:!0}),permissions:W({calls:cz,signatureVerification:J(uz),spend:J(dz)})}),hz=W({address:J(X()),chainId:J(Q()),expiry:H().check(gF(1)),feeToken:XF(lz),key:J(RF(sz,{publicKey:!0,type:!0})),permissions:W({calls:cz,signatureVerification:J(uz),spend:J(dz)})}),gz=mz;function _z(e,t){let{chainId:n,expiry:r,permissions:i,id:a,publicKey:o,type:s}=e,{address:c}=t;return{address:c,chainId:n,expiry:r,id:a,key:{publicKey:o,type:s},permissions:i??{}}}function vz(e){let{chainId:t,expiry:n,key:r}=e;return _L({chainId:t,expiry:n,permissions:e.permissions??{},publicKey:r.publicKey,role:`session`,type:r.type})}var yz;(function(e){e.GetCapabilitiesResponse=W({status:G([q(`supported`),q(`unsupported`)])})})(yz||={});var bz;(function(e){e.Request=G([CF(),W({chainId:J(Q()),label:J(V())})])})(bz||={});var xz;(function(e){e.Request=HL([W({chainId:J(H()),domain:J(V()),expirationTime:J(FF()),issuedAt:J(FF()),nonce:V(),notBefore:J(FF()),requestId:J(V()),resources:J(Y(U(V()))),scheme:J(V()),statement:J(V()),uri:J(V()),version:J(q(`1`))}),W({authUrl:G([V(),W({logout:V(),nonce:V(),verify:V()})]),chainId:J(Q()),domain:J(V()),expirationTime:J(FF()),issuedAt:J(FF()),notBefore:J(FF()),requestId:J(V()),resources:J(Y(U(V()))),scheme:J(V()),statement:J(V()),uri:J(V()),version:J(q(`1`))})]),e.Response=W({message:V(),signature:Z(),token:J(V())})})(xz||={});var Sz;(function(e){e.GetCapabilitiesResponse=W({supported:CF(),tokens:Y(U(fR))}),e.Request=G([pR,X()])})(Sz||={});var Cz;(function(e){e.Request=hz})(Cz||={});var wz;(function(e){e.GetCapabilitiesResponse=W({supported:CF()})})(wz||={});var Tz;(function(e){e.GetCapabilitiesResponse=W({supported:CF()}),e.Request=W({id:J(G([Z(),kF()]))}),e.Response=Y(U(mz))})(Tz||={});var Ez;(function(e){e.Request=Y(U(W({context:NF(),signature:Z()}))),e.Response=e.Request})(Ez||={});var Dz;(function(e){e.Request=V()})(Dz||={});var Oz;(function(e){e.GetCapabilitiesResponse=W({supported:CF(),tokens:Y(U(fR))}),e.Request=Y(U(HL([W({address:X(),value:$()}),W({symbol:pR,value:G([rI([H(),`.`,H()]),rI([H()])]).check(vF(/^\d+(\.\d+)?$/))})])))})(Oz||={});var kz=W({...RF(sz,{id:!0,publicKey:!0,type:!0}).shape,credentialId:J(V()),privateKey:J(jF())}),Az;(function(e){e.Parameters=W({address:X(),secret:V()}),e.Request=W({method:q(`account_getOnrampContactInfo`),params:Y(K([e.Parameters]))}),e.Response=W({email:J(V()),phone:J(V()),phoneVerifiedAt:J(H())})})(Az||={});var jz;(function(e){e.Parameters=W({address:X()}),e.Request=W({method:q(`account_onrampStatus`),params:Y(K([e.Parameters]))}),e.Response=W({email:J(H()),phone:J(H())})})(jz||={});var Mz;(function(e){e.Parameters=W({email:V(),walletAddress:X()}),e.Request=W({method:q(`account_resendVerifyPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(Mz||={});var Nz;(function(e){e.Parameters=W({email:V(),walletAddress:X()}),e.Request=W({method:q(`account_setEmail`),params:Y(K([e.Parameters]))}),e.Response=kF()})(Nz||={});var Pz;(function(e){e.Parameters=W({email:V(),walletAddress:X()}),e.Request=W({method:q(`account_setPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(Pz||={});var Fz;(function(e){e.Parameters=W({chainId:Q(),email:V(),token:V(),walletAddress:X()}),e.Request=W({method:q(`account_verifyEmail`),params:Y(K([e.Parameters]))}),e.Response=kF()})(Fz||={});var Iz;(function(e){e.Parameters=W({code:V(),phone:V(),walletAddress:X()}),e.Request=W({method:q(`account_verifyPhone`),params:Y(K([e.Parameters]))}),e.Response=kF()})(Iz||={});var Lz;(function(e){e.Parameters=W({address:J(X()),chainId:J(Q()),token:J(X()),value:J(V())}),e.Request=W({method:q(`wallet_addFunds`),params:Y(K([e.Parameters]))}),e.Response=W({id:Z()})})(Lz||={});var Rz;(function(e){e.Request=W({method:q(`eth_accounts`),params:J(NF())}),e.Response=Y(U(X()))})(Rz||={});var zz;(function(e){e.Request=W({method:q(`eth_chainId`),params:J(NF())}),e.Response=Z()})(zz||={});var Bz;(function(e){e.Request=W({method:q(`eth_requestAccounts`),params:J(NF())}),e.Response=Y(U(X()))})(Bz||={});var Vz;(function(e){e.Request=W({method:q(`eth_sendTransaction`),params:Y(K([W({capabilities:J(W({feeToken:J(Sz.Request),merchantUrl:J(Dz.Request),preCalls:J(Ez.Request)})),chainId:J(Q()),data:J(Z()),from:J(X()),to:X(),value:J($())})]))}),e.Response=Z()})(Vz||={});var Hz;(function(e){e.Request=W({method:q(`eth_signTypedData_v4`),params:Y(K([X(),V()]))}),e.Response=Z()})(Hz||={});var Uz;(function(e){e.Parameters=W({address:J(X()),chainId:J(Q())}),e.Request=W({method:q(`wallet_getAdmins`),params:J(Y(K([e.Parameters])))}),e.Key=kz,e.Response=W({address:X(),chainId:Q(),keys:Y(U(e.Key))})})(Uz||={});var Wz;(function(e){e.Capabilities=W({feeToken:J(Sz.Request)}),e.Parameters=W({address:J(X()),capabilities:J(e.Capabilities),chainId:J(Q()),key:RF(sz,{publicKey:!0,type:!0})}),e.Request=W({method:q(`wallet_grantAdmin`),params:Y(K([e.Parameters]))}),e.Response=W({address:X(),chainId:Q(),key:Uz.Key})})(Wz||={});var Gz;(function(e){e.Parameters=hz,e.Request=W({method:q(`wallet_grantPermissions`),params:Y(K([e.Parameters]))}),e.ResponseCapabilities=W({preCalls:J(Ez.Response)}),e.Response=W({...mz.shape,capabilities:J(jF())})})(Gz||={});var Kz;(function(e){e.Parameters=W({address:J(X())}),e.Request=W({method:q(`wallet_getAccountVersion`),params:J(Y(K([e.Parameters])))}),e.Response=W({current:V(),latest:V()})})(Kz||={});var qz;(function(e){e.Parameters=W({address:J(X()),chainIds:J(Y(U(Q())))}),e.Request=W({method:q(`wallet_getPermissions`),params:J(Y(K([e.Parameters])))}),e.Response=Tz.Response})(qz||={});var Jz;(function(e){e.Capabilities=W({feeToken:J(Sz.Request)}),e.Parameters=W({address:J(X()),capabilities:J(e.Capabilities),chainId:J(Q()),id:Z()}),e.Request=W({method:q(`wallet_revokeAdmin`),params:Y(K([e.Parameters]))}),e.Response=void 0})(Jz||={});var Yz;(function(e){e.Capabilities=W({feeToken:J(Sz.Request)}),e.Parameters=W({address:J(X()),capabilities:J(e.Capabilities),id:Z()}),e.Request=W({method:q(`wallet_revokePermissions`),params:Y(K([e.Parameters]))}),e.Response=void 0})(Yz||={});var Xz;(function(e){e.Request=W({method:q(`wallet_switchEthereumChain`),params:Y(K([W({chainId:Z()})]))})})(Xz||={});var Zz;(function(e){e.Parameters=W({context:NF(),signatures:W({auth:Z(),exec:Z()})}),e.Request=W({method:q(`wallet_upgradeAccount`),params:Y(K([e.Parameters]))}),e.ResponseCapabilities=W({admins:J(Y(U(Uz.Key))),permissions:J(Tz.Response)}),e.Response=W({address:X(),capabilities:J(e.ResponseCapabilities)})})(Zz||={});var Qz;(function(e){e.Request=W({method:q(`personal_sign`),params:Y(K([Z(),X()]))}),e.Response=Z()})(Qz||={});var $z;(function(e){e.Request=W({method:q(`porto_ping`),params:J(DF())}),e.Response=q(`pong`)})($z||={});var eB;(function(e){e.Capabilities=W({createAccount:J(bz.Request),email:J(CF()),grantAdmins:J(Y(U(RF(sz,{publicKey:!0,type:!0})))),grantPermissions:J(Cz.Request),preCalls:J(Ez.Request),selectAccount:J(G([CF(),W({address:X(),key:J(W({credentialId:J(V()),publicKey:Z()}))})])),signInWithEthereum:J(xz.Request)}),e.Parameters=W({capabilities:J(e.Capabilities),chainIds:J(Y(U(Q())))}),e.Request=W({method:q(`wallet_connect`),params:J(Y(K([e.Parameters])))}),e.ResponseCapabilities=W({admins:J(Y(U(W({...RF(sz,{id:!0,publicKey:!0,type:!0}).shape,credentialId:J(V())})))),permissions:J(Tz.Response),preCalls:J(Ez.Response),signInWithEthereum:J(xz.Response)}),e.Response=W({accounts:Y(U(W({address:X(),capabilities:J(e.ResponseCapabilities)}))),chainIds:Y(U(Q()))})})(eB||={});var tB;(function(e){e.Request=W({method:q(`wallet_disconnect`),params:J(NF())}),e.Response=void 0})(tB||={});var nB;(function(e){e.Parameters=kR.Parameters,e.Request=kR.Request,e.Response=kR.Response})(nB||={});var rB;(function(e){e.Request=W({method:q(`wallet_getCallsStatus`),params:K([Z()])}),e.Response=W({atomic:CF(),chainId:Q(),id:V(),receipts:J(Y(U(W({blockHash:Z(),blockNumber:Z(),gasUsed:Z(),logs:Y(U(W({address:X(),data:Z(),topics:Y(U(Z()))}))),status:Z(),transactionHash:Z()})))),status:H(),version:V()})})(rB||={});var iB;(function(e){e.Request=W({method:q(`wallet_getCapabilities`),params:J(G([Y(K([G([Z(),DF()])])),Y(K([G([Z(),DF()]),Y(U(Q()))]))]))}),e.Response=KF(Z(),W({atomic:yz.GetCapabilitiesResponse,feeToken:Sz.GetCapabilitiesResponse,merchant:wz.GetCapabilitiesResponse,permissions:Tz.GetCapabilitiesResponse,requiredFunds:Oz.GetCapabilitiesResponse}))})(iB||={});var aB;(function(e){e.Parameters=W({address:X(),chainIds:J(Y(U(Q())))}),e.Request=W({method:q(`wallet_getKeys`),params:Y(K([e.Parameters]))}),e.Response=Y(U(pz))})(aB||={});var oB;(function(e){e.Capabilities=W({feeToken:J(Sz.Request),merchantUrl:J(Dz.Request),permissions:J(Tz.Request),preCalls:J(Ez.Request),requiredFunds:J(Oz.Request)}),e.Parameters=W({calls:Y(U(W({data:J(Z()),to:X(),value:J($())}))),capabilities:J(e.Capabilities),chainId:J(Q()),from:J(X()),key:J(RF(sz,{prehash:!0,publicKey:!0,type:!0})),version:J(V())}),e.Request=W({method:q(`wallet_prepareCalls`),params:Y(K([e.Parameters]))}),e.Response=W({capabilities:J(W({...MR.ResponseCapabilities.shape,quote:J(dR)})),chainId:Z(),context:W({account:W({address:X()}),calls:e.Parameters.shape.calls,nonce:$(),quote:J(BF(dR))}),digest:Z(),key:RF(sz,{prehash:!0,publicKey:!0,type:!0}),typedData:W({domain:G([W({chainId:Q(),name:V(),verifyingContract:X(),version:V()}),W({})]),message:KF(V(),NF()),primaryType:V(),types:KF(V(),NF())})})})(oB||={});var sB;(function(e){e.Capabilities=W({...eB.Capabilities.shape,label:J(V())}),e.Parameters=W({address:X(),capabilities:J(e.Capabilities),chainId:J(Q())}),e.Request=W({method:q(`wallet_prepareUpgradeAccount`),params:Y(K([e.Parameters]))}),e.Response=W({context:NF(),digests:W({auth:Z(),exec:Z()})})})(sB||={});var cB;(function(e){e.Capabilities=oB.Capabilities,e.Request=W({method:q(`wallet_sendCalls`),params:Y(K([zF(oB.Parameters,{key:!0})]))}),e.Response=W({id:Z()})})(cB||={});var lB;(function(e){e.Parameters=W({capabilities:oB.Response.shape.capabilities,chainId:Z(),context:oB.Response.shape.context,key:oB.Response.shape.key,signature:Z()}),e.Request=W({method:q(`wallet_sendPreparedCalls`),params:Y(K([e.Parameters]))}),e.Response=Y(U(W({capabilities:J(KF(V(),NF())),id:Z()})))})(lB||={});var uB;(function(e){e.Parameters=W({address:X(),chainId:J(Q()),digest:Z(),signature:Z()}),e.Request=W({method:q(`wallet_verifySignature`),params:Y(K([e.Parameters]))}),e.Response=W({address:X(),chainId:Q(),proof:J(NF()),valid:CF()})})(uB||={});const dB=UF(`method`,[Fz.Request,Lz.Request,Rz.Request,zz.Request,Bz.Request,Vz.Request,Hz.Request,Kz.Request,Uz.Request,qz.Request,Wz.Request,Gz.Request,sB.Request,Jz.Request,Yz.Request,Zz.Request,Qz.Request,$z.Request,eB.Request,tB.Request,nB.Request,rB.Request,iB.Request,aB.Request,oB.Request,cB.Request,lB.Request,Xz.Request,uB.Request]);function fB(e,t){let n=uP(e,t);if(n.error){let e=n.error.issues.at(0);throw e?.code===`invalid_union`&&e.note===`No matching discriminator`?new MM:new LM(WL(n.error))}return{...t,_decoded:n.data}}async function pB(e){e.persist.hasHydrated()||await new Promise(t=>{e.persist.onFinishHydration(()=>t(!0)),setTimeout(()=>t(!0),100)})}function mB(e){if(e)return e.startsWith(`/`)?`${window.location.origin}${e}`:e}ap(),ff();function hB(e){let{config:t,getMode:n,id:r,store:i}=e,{announceProvider:a}=t;function o(e={}){let a=s(),o=e.request??fB(dB,{method:`wallet_getCapabilities`,params:e.chainIds?[void 0,e.chainIds]:void 0});return wm(()=>n().actions.getCapabilities({chainIds:e.chainIds,internal:{client:a,config:t,request:o,store:i}}),{cacheKey:`getCapabilities.${r}.${e.chainIds?.join(`,`)}`})}function s(t){let n=typeof t==`string`?Yf(t):t;return oz({_internal:e},{chainId:n})}let c=new Map,l=[],u=eN(),d=tN({...u,async request(e){await pB(i);let r=[`eth_accounts`,`eth_chainId`,`eth_requestAccounts`,`wallet_getAssets`,`wallet_getCapabilities`,`wallet_getKeys`,`wallet_getPermissions`,`wallet_getAccountVersion`,`wallet_connect`].includes(e.method);return hN(async()=>{let r;try{r=fB(dB,e)}catch(t){let n=t;if(!(n instanceof MM))throw n;if(e.method.startsWith(`wallet_`))throw new UM;return s().request(e)}let a=i.getState();switch(r.method){case`account_verifyEmail`:{if(a.accounts.length===0)throw new WM;let[e]=r._decoded.params,{chainId:o,email:c,token:l,walletAddress:u}=e,d=s(o);if(o&&o!==d.chain.id)throw new GM;let f=u?a.accounts.find(e=>ig(e.address,u)):a.accounts[0];if(!f)throw new HM;return await n().actions.verifyEmail({account:f,chainId:o,email:c,internal:{client:d,config:t,request:r,store:i},token:l,walletAddress:u})}case`wallet_addFunds`:{if(a.accounts.length===0)throw new WM;let{address:e,value:o,token:c}=r.params[0]??{},l=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!l)throw new HM;let d=s(),f=await n().actions.addFunds({address:l.address,internal:{client:d,config:t,request:r,store:i},token:c,value:o});return u.emit(`message`,{data:null,type:`assetsChanged`}),f}case`eth_accounts`:if(a.accounts.length===0)throw new WM;return a.accounts.map(yB);case`eth_chainId`:return L(a.chainIds[0]);case`eth_requestAccounts`:{if(a.accounts.length>0&&c.get(`eth_requestAccounts`))return a.accounts.map(yB);let e=s(),{accounts:o}=await n().actions.loadAccounts({internal:{client:e,config:t,request:r,store:i}});return i.setState(e=>({...e,accounts:o})),u.emit(`connect`,{chainId:L(e.chain.id)}),c.set(`eth_requestAccounts`,!0),setTimeout(()=>c.delete(`eth_requestAccounts`),1e3),o.map(yB)}case`eth_sendTransaction`:{if(a.accounts.length===0)throw new WM;let[{capabilities:e,chainId:o,data:c=`0x`,from:l,to:u,value:d}]=r._decoded.params,f=s(o);if(o&&o!==f.chain.id)throw new GM;let p=l?a.accounts.find(e=>ig(e.address,l)):a.accounts[0];if(!p)throw new HM;let{id:m}=await n().actions.sendCalls({account:p,asTxHash:!0,calls:[{data:c,to:u,value:d}],chainId:f.chain.id,internal:{client:f,config:t,request:r,store:i},merchantUrl:mB(t.merchantUrl??e?.merchantUrl)});return m}case`eth_signTypedData_v4`:{if(a.accounts.length===0)throw new WM;let[e,o]=r._decoded.params,c=a.accounts.find(t=>ig(t.address,e));if(!c)throw new HM;let l=s();return await n().actions.signTypedData({account:c,data:o,internal:{client:l,config:t,request:r,store:i}})}case`wallet_grantAdmin`:{if(a.accounts.length===0)throw new WM;let[{address:e,capabilities:o,chainId:c,key:l}]=r._decoded.params??[{}],d=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!d)throw new HM;let f=s(c);if(_B([...d.keys??[]])?.some(e=>e.publicKey?.toLowerCase()===l.publicKey.toLowerCase()))throw new LM({message:`Key already granted as admin.`});let{key:p}=await n().actions.grantAdmin({account:d,feeToken:o?.feeToken,internal:{client:f,config:t,request:r,store:i},key:l});i.setState(e=>{let t=e.accounts.findIndex(e=>d?ig(e.address,d.address):!0);return t===-1?e:{...e,accounts:e.accounts.map((e,n)=>n===t?{...e,keys:[...e.keys??[],p]}:e)}});let m=_B([...d.keys??[],p]);return u.emit(`message`,{data:null,type:`adminsChanged`}),fP(Wz.Response,{address:d.address,chainId:f.chain.id,key:m.at(-1)})}case`wallet_grantPermissions`:{if(a.accounts.length===0)throw new WM;let[{address:e,chainId:o,...c}]=r._decoded.params??[{}],l=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!l)throw new HM;let d=s(o),{key:f}=await n().actions.grantPermissions({account:l,internal:{client:d,config:t,request:r,store:i},permissions:c});return i.setState(e=>{let t=e.accounts.findIndex(e=>l?ig(e.address,l.address):!0);return t===-1?e:{...e,accounts:e.accounts.map((e,n)=>n===t?{...e,keys:[...e.keys??[],f]}:e)}}),u.emit(`message`,{data:null,type:`permissionsChanged`}),fP(Gz.Response,{..._z(f,{address:l.address})})}case`wallet_getAdmins`:{if(a.accounts.length===0)throw new WM;let[{address:e,chainId:o}]=r._decoded.params??[{}],c=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!c)throw new HM;let l=s(o),u=await n().actions.getKeys({account:c,internal:{client:l,config:t,request:r,store:i}}),d=_B(u);return fP(Uz.Response,{address:c.address,chainId:l.chain.id,keys:d})}case`wallet_prepareUpgradeAccount`:{let[{address:e,capabilities:a,chainId:o}]=r._decoded.params??[{}],{email:c,label:u,grantPermissions:d}=a??{},f=s(o),{context:p,digests:m}=await n().actions.prepareUpgradeAccount({address:e,email:c,internal:{client:f,config:t,request:r,store:i},label:u,permissions:d});return l.push(p.account),{context:p,digests:m}}case`wallet_getAccountVersion`:{if(a.accounts.length===0)throw new WM;let[{address:e}]=r._decoded.params??[{}],o=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!o)throw new HM;let c=s(),{current:l,latest:u}=await n().actions.getAccountVersion({address:o.address,internal:{client:c,config:t,request:r,store:i}});return{current:l,latest:u}}case`wallet_getKeys`:{if(a.accounts.length===0)throw new WM;let[{address:e,chainIds:o}]=r._decoded.params??[{}],c=a.accounts.find(t=>ig(t.address,e));if(!c)throw new HM;let l=s(),u=await n().actions.getKeys({account:c,chainIds:o,internal:{client:l,config:t,request:r,store:i}});return fP(aB.Response,u)}case`wallet_getPermissions`:{if(a.accounts.length===0)throw new WM;let[{address:e,chainIds:o}]=r._decoded.params??[{}],c=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!c)throw new HM;let l=s(),u=await n().actions.getKeys({account:c,chainIds:o,internal:{client:l,config:t,request:r,store:i}});return vB(u,{address:c.address})}case`wallet_revokeAdmin`:{if(a.accounts.length===0)throw new WM;let[{address:e,capabilities:o,id:c}]=r._decoded.params,l=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!l)throw new HM;let d=s();await n().actions.revokeAdmin({account:l,feeToken:o?.feeToken,id:c,internal:{client:d,config:t,request:r,store:i}});let f=l.keys?.filter(e=>e.id.toLowerCase()!==c.toLowerCase());i.setState(e=>({...e,accounts:e.accounts.map(e=>ig(e.address,l.address)?{...e,keys:f}:e)})),u.emit(`message`,{data:null,type:`adminsChanged`});return}case`wallet_revokePermissions`:{if(a.accounts.length===0)throw new WM;let[{address:e,capabilities:o,id:c}]=r._decoded.params,l=e?a.accounts.find(t=>ig(t.address,e)):a.accounts[0];if(!l)throw new HM;let d=s();await n().actions.revokePermissions({account:l,feeToken:o?.feeToken,id:c,internal:{client:d,config:t,request:r,store:i}});let f=l.keys?.filter(e=>e.id.toLowerCase()!==c.toLowerCase());i.setState(e=>({...e,accounts:e.accounts.map(e=>ig(e.address,l.address)?{...e,keys:f}:e)})),u.emit(`message`,{data:null,type:`permissionsChanged`});return}case`wallet_upgradeAccount`:{let[{context:e,signatures:a}]=r._decoded.params??[{}],o=s(),c=l.find(t=>ig(t.address,e.account.address));if(!c)throw new HM;let{account:d}=await n().actions.upgradeAccount({account:c,context:e,internal:{client:o,config:t,request:r,store:i},signatures:a}),f=_B(d.keys??[]),p=vB(d.keys??[],{address:d.address});return i.setState(e=>({...e,accounts:[d]})),u.emit(`connect`,{chainId:L(o.chain.id)}),{address:d.address,capabilities:{admins:f,...p.length>0?{permissions:p}:{}}}}case`porto_ping`:return`pong`;case`personal_sign`:{if(a.accounts.length===0)throw new WM;let[e,o]=r._decoded.params,c=a.accounts.find(e=>ig(e.address,o));if(!c)throw new HM;let l=s();return await n().actions.signPersonalMessage({account:c,data:e,internal:{client:l,config:t,request:r,store:i}})}case`wallet_connect`:{let[{capabilities:e,chainIds:o}]=r._decoded.params??[{}],c=s(o?.[0]),l=c.chain.id,{createAccount:d,email:f,grantAdmins:p,grantPermissions:m,selectAccount:h,signInWithEthereum:g}=e??{},_={client:c,config:t,request:r,store:i},{accounts:v}=await(async()=>{if(f||d){let{label:e=void 0}=typeof d==`object`?d:{},{account:t}=await n().actions.createAccount({admins:p,email:f,internal:_,label:e,permissions:m,signInWithEthereum:g});return{accounts:[t]}}let e=a.accounts[0],{address:t,key:r}=(()=>{if(h)return typeof h==`object`?h:{address:void 0,key:void 0};for(let t of e?.keys??[])if(t.type===`webauthn-p256`&&t.role===`admin`)return{address:e?.address,key:{credentialId:t.credentialId??t.privateKey?.credential?.id,publicKey:t.publicKey}};return{address:void 0,key:void 0}})(),i={internal:_,permissions:m,signInWithEthereum:g};try{return await n().actions.loadAccounts({address:t,key:r,...i})}catch(e){if(e instanceof VM)throw e;if(t&&r)return await n().actions.loadAccounts(i);throw e}})();i.setState(e=>({...e,accounts:v}));let y=[l,...i.getState().chainIds.filter(e=>e!==l)];return u.emit(`connect`,{chainId:L(y[0])}),{accounts:v.map(e=>({address:yB(e),capabilities:{admins:e.keys?_B(e.keys):[],permissions:e.keys?vB(e.keys,{address:e.address}):[],...e.signInWithEthereum&&{signInWithEthereum:e.signInWithEthereum}}})),chainIds:y.map(e=>L(e))}}case`wallet_disconnect`:{let e=s();await n().actions.disconnect?.({internal:{client:e,config:t,request:r,store:i}}),i.setState(e=>({...e,accounts:[]})),u.emit(`disconnect`,new WM);return}case`wallet_getAssets`:{let[e]=r._decoded.params??[],{account:a,chainFilter:o,assetFilter:c,assetTypeFilter:l}=e,u=s(),d=await n().actions.getAssets({account:a,assetFilter:c,assetTypeFilter:l,chainFilter:o,internal:{client:u,config:t,request:r,store:i}}),f=Object.entries(d).reduce((e,[t,n])=>(e[L(Number(t))]=n,e),{});return fP(nB.Response,f)}case`wallet_getCallsStatus`:{let[e]=r._decoded.params??[],a=s();return await n().actions.getCallsStatus({id:e,internal:{client:a,config:t,request:r,store:i}})}case`wallet_getCapabilities`:{let[e,t]=r.params??[];return await o({chainIds:t,request:r})}case`wallet_prepareCalls`:{let[e]=r._decoded.params,{calls:o,capabilities:c,chainId:l,key:u,from:d}=e,f=s(l),p=d??a.accounts[0];if(!p)throw new HM;if(l&&l!==f.chain.id)throw new GM;let{digest:m,...h}=await n().actions.prepareCalls({account:jL(p),calls:o,feeToken:c?.feeToken,internal:{client:f,config:t,request:r,store:i},key:u,merchantUrl:mB(t.merchantUrl??c?.merchantUrl),requiredFunds:c?.requiredFunds});return fP(oB.Response,{capabilities:h.capabilities,chainId:L(h.chainId??f.chain.id),context:{...h.context,account:{address:h.account.address},calls:h.context.calls??[],nonce:h.context.nonce??0n},digest:m,key:h.key,typedData:h.typedData})}case`wallet_sendPreparedCalls`:{let[e]=r._decoded.params,{chainId:a,context:o,key:c,signature:l}=e,{account:u}=e.context,d=s(a);if(a&&Yf(a)!==d.chain.id)throw new GM;return[{id:await n().actions.sendPreparedCalls({account:jL(u),context:o,internal:{client:d,config:t,request:r,store:i},key:c,signature:l})}]}case`wallet_sendCalls`:{if(a.accounts.length===0)throw new WM;let[e]=r._decoded.params,{calls:o,capabilities:c,chainId:l,from:u}=e,d=s(l);if(l&&l!==d.chain.id)throw new GM;let f=u?a.accounts.find(e=>ig(e.address,u)):a.accounts[0];if(!f)throw new HM;let{id:p}=await n().actions.sendCalls({account:f,calls:o,chainId:d.chain.id,feeToken:c?.feeToken,internal:{client:d,config:t,request:r,store:i},merchantUrl:mB(t.merchantUrl??c?.merchantUrl),permissionsId:c?.permissions?.id,requiredFunds:c?.requiredFunds});return{id:p}}case`wallet_switchEthereumChain`:{let[e]=r._decoded.params,{chainId:a}=e,o=Yf(a);if(!t.chains.find(e=>e.id===o))throw new JM;let c=s(a);await n().actions.switchChain?.({chainId:c.chain.id,internal:{client:c,config:t,request:r,store:i}}),i.setState(e=>({...e,chainIds:[o,...e.chainIds.filter(e=>e!==o)]}));return}case`wallet_verifySignature`:{let[e]=r._decoded.params,{address:t,chainId:n,digest:i,signature:a}=e,o=s(n);return{...await ZR(o,{address:t,digest:i,signature:a}),address:t,chainId:L(o.chain.id)}}}},{enabled:r,id:uf(e)})}});function f(){let e=()=>{},t=()=>{};pB(i).then(()=>{o().catch(()=>{}),e(),e=i.subscribe(e=>e.accounts,e=>{u.emit(`accountsChanged`,e.map(yB))},{equalityFn:(e,t)=>e.every((e,n)=>e.address===t[n]?.address)}),t(),t=i.subscribe(e=>e.chainIds[0],(e,t)=>{e!==t&&u.emit(`chainChanged`,L(e))})});let n=gB(d,a);return()=>{e(),t(),n()}}let p=f();return Object.assign(d,{_internal:{destroy:p}})}function gB(e,t){if(!t||typeof window>`u`||!window.dispatchEvent)return()=>{};let{icon:n=`data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIyIiBoZWlnaHQ9IjQyMiIgdmlld0JveD0iMCAwIDQyMiA0MjIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI0MjIiIGhlaWdodD0iNDIyIiBmaWxsPSJibGFjayIvPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMV8xNSkiPgo8cGF0aCBkPSJNODEgMjg2LjM2NkM4MSAyODAuODkzIDg1LjQ1MDUgMjc2LjQ1NSA5MC45NDA0IDI3Ni40NTVIMzI5LjUxMUMzMzUuMDAxIDI3Ni40NTUgMzM5LjQ1MiAyODAuODkzIDMzOS40NTIgMjg2LjM2NlYzMDYuMTg4QzMzOS40NTIgMzExLjY2MiAzMzUuMDAxIDMxNi4wOTkgMzI5LjUxMSAzMTYuMDk5SDkwLjk0MDRDODUuNDUwNSAzMTYuMDk5IDgxIDMxMS42NjIgODEgMzA2LjE4OFYyODYuMzY2WiIgZmlsbD0id2hpdGUiIGZpbGwtb3BhY2l0eT0iMC41Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTAuOTQwNCAyMzQuODI4Qzg1LjQ1MDUgMjM0LjgyOCA4MSAyMzkuMjY2IDgxIDI0NC43MzlWMjcxLjUzMUM4My44NDMyIDI2OS42MzMgODcuMjYyMiAyNjguNTI2IDkwLjk0MDQgMjY4LjUyNkgzMjkuNTExQzMzMy4xODggMjY4LjUyNiAzMzYuNjA4IDI2OS42MzMgMzM5LjQ1MiAyNzEuNTMxVjI0NC43MzlDMzM5LjQ1MiAyMzkuMjY2IDMzNS4wMDEgMjM0LjgyOCAzMjkuNTExIDIzNC44MjhIOTAuOTQwNFpNMzM5LjQ1MiAyODYuMzY2QzMzOS40NTIgMjgwLjg5MyAzMzUuMDAxIDI3Ni40NTUgMzI5LjUxMSAyNzYuNDU1SDkwLjk0MDRDODUuNDUwNSAyNzYuNDU1IDgxIDI4MC44OTMgODEgMjg2LjM2NlYzMDYuMTlDODEgMzExLjY2NCA4NS40NTA1IDMxNi4xMDEgOTAuOTQwNCAzMTYuMTAxSDMyOS41MTFDMzM1LjAwMSAzMTYuMTAxIDMzOS40NTIgMzExLjY2NCAzMzkuNDUyIDMwNi4xOVYyODYuMzY2WiIgZmlsbD0id2hpdGUiIGZpbGwtb3BhY2l0eT0iMC41Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTAuOTQwNCAxOTMuMjAxQzg1LjQ1MDUgMTkzLjIwMSA4MSAxOTcuNjM4IDgxIDIwMy4xMTJWMjI5LjkwM0M4My44NDMyIDIyOC4wMDYgODcuMjYyMiAyMjYuODk5IDkwLjk0MDQgMjI2Ljg5OUgzMjkuNTExQzMzMy4xODggMjI2Ljg5OSAzMzYuNjA4IDIyOC4wMDYgMzM5LjQ1MiAyMjkuOTAzVjIwMy4xMTJDMzM5LjQ1MiAxOTcuNjM4IDMzNS4wMDEgMTkzLjIwMSAzMjkuNTExIDE5My4yMDFIOTAuOTQwNFpNMzM5LjQ1MiAyNDQuNzM5QzMzOS40NTIgMjM5LjI2NSAzMzUuMDAxIDIzNC44MjggMzI5LjUxMSAyMzQuODI4SDkwLjk0MDRDODUuNDUwNSAyMzQuODI4IDgxIDIzOS4yNjUgODEgMjQ0LjczOVYyNzEuNTNDODEuMjE3NSAyNzEuMzg1IDgxLjQzODMgMjcxLjI0NSA4MS42NjI0IDI3MS4xMDlDODMuODMyNSAyNjkuNzk0IDg2LjMwNTQgMjY4LjkyNyA4OC45NTIzIDI2OC42MzVDODkuNjA1MSAyNjguNTYzIDkwLjI2ODQgMjY4LjUyNiA5MC45NDA0IDI2OC41MjZIMzI5LjUxMUMzMzAuMTgzIDI2OC41MjYgMzMwLjg0NiAyNjguNTYzIDMzMS40OTggMjY4LjYzNUMzMzQuNDE5IDI2OC45NTcgMzM3LjEyOCAyNjkuOTggMzM5LjQ1MiAyNzEuNTNWMjQ0LjczOVpNMzM5LjQ1MiAyODYuMzY2QzMzOS40NTIgMjgxLjAyMSAzMzUuMjA2IDI3Ni42NjMgMzI5Ljg5MyAyNzYuNDYyQzMyOS43NjcgMjc2LjQ1NyAzMjkuNjQgMjc2LjQ1NSAzMjkuNTExIDI3Ni40NTVIOTAuOTQwNEM4NS40NTA1IDI3Ni40NTUgODEgMjgwLjg5MyA4MSAyODYuMzY2VjMwNi4xODhDODEgMzExLjY2MiA4NS40NTA1IDMxNi4xMDEgOTAuOTQwNCAzMTYuMTAxSDMyOS41MTFDMzM1LjAwMSAzMTYuMTAxIDMzOS40NTIgMzExLjY2MiAzMzkuNDUyIDMwNi4xODhWMjg2LjM2NloiIGZpbGw9IndoaXRlIiBmaWxsLW9wYWNpdHk9IjAuNSIvPgo8cGF0aCBvcGFjaXR5PSIwLjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTguMDE0NiAxMDRDODguNjE3NyAxMDQgODEgMTExLjU5NSA4MSAxMjAuOTY1VjE4OC4yNzZDODMuODQzMiAxODYuMzc5IDg3LjI2MjIgMTg1LjI3MiA5MC45NDA0IDE4NS4yNzJIMzI5LjUxMUMzMzMuMTg4IDE4NS4yNzIgMzM2LjYwOCAxODYuMzc5IDMzOS40NTIgMTg4LjI3NlYxMjAuOTY1QzMzOS40NTIgMTExLjU5NSAzMzEuODMzIDEwNCAzMjIuNDM3IDEwNEg5OC4wMTQ2Wk0zMzkuNDUyIDIwMy4xMTJDMzM5LjQ1MiAxOTcuNjM4IDMzNS4wMDEgMTkzLjIwMSAzMjkuNTExIDE5My4yMDFIOTAuOTQwNEM4NS40NTA1IDE5My4yMDEgODEgMTk3LjYzOCA4MSAyMDMuMTEyVjIyOS45MDNDODEuMjE3NSAyMjkuNzU4IDgxLjQzODMgMjI5LjYxOCA4MS42NjI0IDIyOS40ODJDODMuODMyNSAyMjguMTY3IDg2LjMwNTQgMjI3LjMgODguOTUyMyAyMjcuMDA4Qzg5LjYwNTEgMjI2LjkzNiA5MC4yNjg0IDIyNi44OTkgOTAuOTQwNCAyMjYuODk5SDMyOS41MTFDMzMwLjE4MyAyMjYuODk5IDMzMC44NDYgMjI2LjkzNiAzMzEuNDk4IDIyNy4wMDhDMzM0LjQxOSAyMjcuMzMgMzM3LjEyOCAyMjguMzUyIDMzOS40NTIgMjI5LjkwM1YyMDMuMTEyWk0zMzkuNDUyIDI0NC43MzlDMzM5LjQ1MiAyMzkuMzkzIDMzNS4yMDYgMjM1LjAzNiAzMjkuODkzIDIzNC44MzVDMzI5Ljc2NyAyMzQuODMgMzI5LjY0IDIzNC44MjggMzI5LjUxMSAyMzQuODI4SDkwLjk0MDRDODUuNDUwNSAyMzQuODI4IDgxIDIzOS4yNjUgODEgMjQ0LjczOVYyNzEuNTNMODEuMDcwNyAyNzEuNDgzQzgxLjI2NTMgMjcxLjM1NSA4MS40NjI1IDI3MS4yMyA4MS42NjI0IDI3MS4xMDlDODEuOTA4MyAyNzAuOTYgODIuMTU4MSAyNzAuODE3IDgyLjQxMTcgMjcwLjY3OUM4NC4zOTUzIDI2OS42MDUgODYuNjA1NCAyNjguODk0IDg4Ljk1MjMgMjY4LjYzNUM4OS4wMDUyIDI2OC42MjkgODkuMDU4IDI2OC42MjQgODkuMTExIDI2OC42MThDODkuNzEyNSAyNjguNTU3IDkwLjMyMjggMjY4LjUyNiA5MC45NDA0IDI2OC41MjZIMzI5LjUxMUMzMjkuNzM4IDI2OC41MjYgMzI5Ljk2NSAyNjguNTMgMzMwLjE5MiAyNjguNTM5QzMzMC42MzEgMjY4LjU1NSAzMzEuMDY3IDI2OC41ODcgMzMxLjQ5OCAyNjguNjM1QzMzNC40MTkgMjY4Ljk1NyAzMzcuMTI4IDI2OS45OCAzMzkuNDUyIDI3MS41M1YyNDQuNzM5Wk0zMzkuNDUyIDI4Ni4zNjZDMzM5LjQ1MiAyODEuMDIxIDMzNS4yMDYgMjc2LjY2MyAzMjkuODkzIDI3Ni40NjJMMzI5Ljg2NSAyNzYuNDYxQzMyOS43NDggMjc2LjQ1NyAzMjkuNjI5IDI3Ni40NTUgMzI5LjUxMSAyNzYuNDU1SDkwLjk0MDRDODUuNDUwNSAyNzYuNDU1IDgxIDI4MC44OTMgODEgMjg2LjM2NlYzMDYuMTg4QzgxIDMxMS42NjIgODUuNDUwNSAzMTYuMTAxIDkwLjk0MDQgMzE2LjEwMUgzMjkuNTExQzMzNS4wMDEgMzE2LjEwMSAzMzkuNDUyIDMxMS42NjIgMzM5LjQ1MiAzMDYuMTg4VjI4Ni4zNjZaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjY5Ljg2OCAxMzEuNzUyQzI2OS44NjggMTI2LjI3OCAyNzQuMzE4IDEyMS44NCAyNzkuODA4IDEyMS44NEgzMTEuNjE4QzMxNy4xMDggMTIxLjg0IDMyMS41NTggMTI2LjI3OCAzMjEuNTU4IDEzMS43NTJWMTYxLjQ4NUMzMjEuNTU4IDE2Ni45NTkgMzE3LjEwOCAxNzEuMzk2IDMxMS42MTggMTcxLjM5NkgyNzkuODA4QzI3NC4zMTggMTcxLjM5NiAyNjkuODY4IDE2Ni45NTkgMjY5Ljg2OCAxNjEuNDg1VjEzMS43NTJaIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzFfMTUiPgo8cmVjdCB3aWR0aD0iMjU5IiBoZWlnaHQ9IjIxMyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgxIDEwNCkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K`,name:r=`Porto`,rdns:i=`xyz.ithaca.porto`}=typeof t==`object`?t:{};return AN({info:{icon:n,name:r,rdns:i,uuid:mN()},provider:e})}function _B(e){return e.map(e=>{if(e.role===`admin`)try{return fP(Uz.Key,{id:e.id??e.publicKey,publicKey:e.publicKey,type:e.type,...e.type===`webauthn-p256`?{credentialId:e.privateKey?.credential?.id,privateKey:{credential:{id:e.privateKey?.credential?.id},rpId:e.privateKey?.rpId}}:{}})}catch{return}}).filter(Boolean)}function vB(e,{address:t}){return e.map(e=>{if(e.chainId&&e.role===`session`&&!(e.expiry>0&&e.expiry()=>{})}}async function xB(e){let{account:t,calls:n,permissionsId:r}=e;if(r!==void 0){if(r===null)return;let e=t.keys?.find(e=>e.publicKey===r&&e.privateKey);if(!e)throw Error(`permission (id: ${r}) does not exist.`);return e}let i=t.keys?.find(e=>!e.privateKey||e.role!==`session`||e.expirye.permissions?.calls?.some(e=>{if(e.to&&e.to!==t.to)return!1;if(e.signature){if(!t.data)return!1;let n=Gf(t.data,0,4);if(Xf(e.signature))return e.signature===n;if(U_(e.signature)!==n)return!1}return!0}))),a=t.keys?.find(e=>e.role===`admin`&&e.privateKey);return i??a}function SB(e={}){let t=e.id??0;return{prepare(e){return CB({id:t++,...e})},get id(){return t}}}function CB(e){return{...e,jsonrpc:`2.0`}}function wB(){return null}const TB=hz;function EB(e){let{expiry:t,feeToken:n,permissions:r,publicKey:i,type:a}=e;return{expiry:t,feeToken:n??null,key:{publicKey:i,type:a},permissions:r??{}}}async function DB(e,t={}){if(!e)return;let n=t.chainId??e.chainId,r=e.expiry??0,i=e.feeToken,a=DL(e,{feeTokens:t.feeTokens}),o={chainId:n,expiry:r,feeToken:i,permissions:a,role:`session`};if(e?.key)return _L({...o,publicKey:e.key.publicKey,type:e.key.type??`secp256k1`});if(typeof globalThis.crypto?.subtle?.generateKey==`function`)try{return await gL(o)}catch(e){if(!OB(e))throw e}return pL(o)}function OB(e){if(!(e instanceof Error))return!1;let t=e.message?.toLowerCase()??``;return e.name===`TypeError`||e.name===`ReferenceError`||t.includes(`subtle`)||t.includes(`generatekey`)}qd();const kB=/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(:[0-9]{1,5})?$/,AB=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:[0-9]{1,5})?$/,jB=/^localhost(:[0-9]{1,5})?$/,MB=/^[a-zA-Z0-9]{8,}$/,NB=/^([a-zA-Z][a-zA-Z0-9+-.]*)$/,PB=/^(?:(?[a-zA-Z][a-zA-Z0-9+-.]*):\/\/)?(?[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\n)(?
0x[a-fA-F0-9]{40})\n\n(?:(?.*)\n\n)?/,FB=/(?:URI: (?.+))\n(?:Version: (?.+))\n(?:Chain ID: (?\d+))\n(?:Nonce: (?[a-zA-Z0-9]+))\n(?:Issued At: (?.+))(?:\nExpiration Time: (?.+))?(?:\nNot Before: (?.+))?(?:\nRequest ID: (?.+))?/;function IB(e){let{chainId:t,domain:n,expirationTime:r,issuedAt:i=new Date,nonce:a,notBefore:o,requestId:s,resources:c,scheme:l,uri:u,version:d}=e;{if(t!==Math.floor(t))throw new BB({field:`chainId`,metaMessages:[`- Chain ID must be a EIP-155 chain ID.`,`- See https://eips.ethereum.org/EIPS/eip-155`,``,`Provided value: ${t}`]});if(!(kB.test(n)||AB.test(n)||jB.test(n)))throw new BB({field:`domain`,metaMessages:[`- Domain must be an RFC 3986 authority.`,`- See https://www.rfc-editor.org/rfc/rfc3986`,``,`Provided value: ${n}`]});if(!MB.test(a))throw new BB({field:`nonce`,metaMessages:[`- Nonce must be at least 8 characters.`,`- Nonce must be alphanumeric.`,``,`Provided value: ${a}`]});if(!LB(u))throw new BB({field:`uri`,metaMessages:[`- URI must be a RFC 3986 URI referring to the resource that is the subject of the signing.`,`- See https://www.rfc-editor.org/rfc/rfc3986`,``,`Provided value: ${u}`]});if(d!==`1`)throw new BB({field:`version`,metaMessages:[`- Version must be '1'.`,``,`Provided value: ${d}`]});if(l&&!NB.test(l))throw new BB({field:`scheme`,metaMessages:[`- Scheme must be an RFC 3986 URI scheme.`,`- See https://www.rfc-editor.org/rfc/rfc3986#section-3.1`,``,`Provided value: ${l}`]});let r=e.statement;if(r?.includes(` -`))throw new BB({field:`statement`,metaMessages:[`- Statement must not include '\\n'.`,``,`Provided value: ${r}`]})}let f=ng(e.address,{checksum:!0}),p=(()=>l?`${l}://${n}`:n)(),m=(()=>e.statement?`${e.statement}\n`:``)(),h=`${p} wants you to sign in with your Ethereum account:\n${f}\n\n${m}`,g=`URI: ${u}\nVersion: ${d}\nChain ID: ${t}\nNonce: ${a}\nIssued At: ${i.toISOString()}`;if(r&&(g+=`\nExpiration Time: ${r.toISOString()}`),o&&(g+=`\nNot Before: ${o.toISOString()}`),s&&(g+=`\nRequest ID: ${s}`),c){let e=` -Resources:`;for(let t of c){if(!LB(t))throw new BB({field:`resources`,metaMessages:[`- Every resource must be a RFC 3986 URI.`,`- See https://www.rfc-editor.org/rfc/rfc3986`,``,`Provided value: ${t}`]});e+=`\n- ${t}`}g+=e}return`${h}\n${g}`}function LB(e){if(/[^a-z0-9:/?#[\]@!$&'()*+,;=.\-_~%]/i.test(e)||/%[^0-9a-f]/i.test(e)||/%[0-9a-f](:?[^0-9a-f]|$)/i.test(e))return!1;let t=RB(e),n=t[1],r=t[2],i=t[3],a=t[4],o=t[5];if(!(n?.length&&i&&i.length>=0))return!1;if(r?.length){if(!(i.length===0||/^\//.test(i)))return!1}else if(/^\/\//.test(i))return!1;if(!/^[a-z][a-z0-9+\-.]*$/.test(n.toLowerCase()))return!1;let s=``;return s+=`${n}:`,r?.length&&(s+=`//${r}`),s+=i,a?.length&&(s+=`?${a}`),o?.length&&(s+=`#${o}`),s}function RB(e){return e.match(/(?:([^:/?#]+):)?(?:\/\/([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/)}function zB(e){let{scheme:t,statement:n,...r}=e.match(PB)?.groups??{},{chainId:i,expirationTime:a,issuedAt:o,notBefore:s,requestId:c,...l}=e.match(FB)?.groups??{},u=e.split(`Resources:`)[1]?.split(` -- `).slice(1);return{...r,...l,...i?{chainId:Number(i)}:{},...a?{expirationTime:new Date(a)}:{},...o?{issuedAt:new Date(o)}:{},...s?{notBefore:new Date(s)}:{},...c?{requestId:c}:{},...u?{resources:u}:{},...t?{scheme:t}:{},...n?{statement:n}:{}}}var BB=class extends F{constructor(e){let{field:t,metaMessages:n}=e;super(`Invalid Sign-In with Ethereum message field "${t}".`,{metaMessages:n}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Siwe.InvalidMessageFieldError`})}};async function VB(e){let{address:t,authUrl:n,message:r,signature:i,publicKey:a}=e,{chainId:o}=zB(r);return await fetch(n.verify,{body:JSON.stringify({address:t,chainId:o,message:r,signature:i,walletAddress:t,...a&&{publicKey:a}}),credentials:`include`,headers:{"Content-Type":`application/json`},method:`POST`}).then(e=>e.json())}async function HB(e,t,n){let{chainId:r=e.chain?.id,domain:i,uri:a,resources:o,version:s=`1`}=t,{address:c}=n,l=t.authUrl?UB(t.authUrl):void 0;if(!r)throw Error("`chainId` is required.");if(!i)throw Error("`domain` is required.");if(!t.nonce&&!l?.nonce)throw Error("`nonce` or `authUrl.nonce` is required.");if(!a)throw Error("`uri` is required.");let u=await(async()=>{if(t.nonce)return t.nonce;if(!l?.nonce)throw Error("`nonce` or `authUrl.nonce` is required.");let e=await(await fetch(l.nonce,{body:JSON.stringify({address:c,chainId:r,walletAddress:c}),headers:{"Content-Type":`application/json`},method:`POST`})).json().catch(()=>void 0);if(!e?.nonce)throw Error("`nonce` or `authUrl.nonce` is required.");return e.nonce})();return IB({...t,address:n.address,chainId:r,domain:i,nonce:u,resources:o,uri:a,version:s})}function UB(e,t=``){if(!e)return;let n=(()=>{if(typeof e==`string`){let t=e.replace(/\/$/,``);return{logout:t+`/logout`,nonce:t+`/nonce`,verify:t+`/verify`}}return e})();return{logout:WB(n.logout,t),nonce:WB(n.nonce,t),verify:WB(n.verify,t)}}function WB(e,t){return!t||!e.startsWith(`/`)?e:t+e}ap();function GB(e){let t=zf(e);return Rf(`0x19`,Hf(`Ethereum Signed Message: -`+Kf(t)),t)}function KB(e){return Vh(GB(e))}async function qB(e,t){let{account:n=e.account}=t,r=n?jL(n):void 0;if(!r)throw Error(`account is required.`);let{domain:{name:i,version:a}}=await Qm(e,{address:r.address});if(!e.chain)throw Error(`client.chain is required`);return{chainId:e.chain.id,name:i,verifyingContract:r.address,version:a}}async function JB(e,t){let{account:n=e.account,chainIds:r}=t,i=n?jL(n):void 0;if(!i)throw Error(`account is required.`);let a=await HR(e,{address:i.address,chainIds:r});return Object.entries(a).flatMap(([e,t])=>t.map(t=>yL(t,{chainId:Number(e)})))}async function YB(e,t){let{account:n=e.account,calls:r,chain:i=e.chain,feePayer:a,merchantUrl:o,nonce:s,preCalls:c,requiredFunds:l,revokeKeys:u}=t,d=n?jL(n):void 0,f=t.key??(d?NL(d,{role:`admin`}):void 0),p=t.authorizeKeys?.some(e=>e.role===`session`),{contracts:m,fees:{tokens:h}}=await zR(e,{chainId:i?.id}),g=p?m.orchestrator.address:void 0,_=(t.authorizeKeys??[]).map(e=>EL(e,{feeTokens:h,orchestrator:g})),v=(()=>t.feeToken?t.feeToken:f?.permissions?.spend?.[0]?.token)(),y=typeof c==`boolean`?c:!1,b=typeof c==`object`?c.map(({context:e,signature:t})=>({...e.preCall,signature:t})):void 0,x={address:d?.address,calls:r??[],capabilities:{authorizeKeys:_,meta:{feePayer:a,feeToken:v,nonce:s},preCall:y,preCalls:b,requiredFunds:l,revokeKeys:u?.map(e=>({hash:e.hash}))},chain:i,key:f?EL(f,{feeTokens:h}):void 0},S=await(async()=>{if(o){let t=Ym({chain:e.chain,transport:Rv(o)});return await WR(t,x).catch(t=>(console.error(t),WR(e,x)))}return await WR(e,x)})(),{capabilities:C,context:w,digest:ee,signature:te,typedData:ne}=S;if(o&&!await XR(e,{response:S._raw,signature:te}))throw Error(`cannot verify integrity of \`wallet_prepareCalls\` response from ${o}`);return{capabilities:{...C,quote:w.quote},context:w,digest:ee,key:f,typedData:ne}}async function XB(e,t){let{address:n,authorizeKeys:r,chain:i=e.chain}=t;if(!i)throw Error(`chain is required.`);let{contracts:a,fees:{tokens:o}}=await zR(e,{chainId:i.id}),s=t.delegation??a.accountProxy.address,c=r.some(e=>e.role===`session`)?a.orchestrator.address:void 0,l=r.map(e=>{let t=e.role===`session`?e.permissions:{};return EL({...e,permissions:t},{feeTokens:o,orchestrator:c})}),{capabilities:u,chainId:d,context:f,digests:p,typedData:m}=await GR(e,{address:n,authorizeKeys:l,chain:i,delegation:s}),h=jL({address:n,keys:r});return{capabilities:u,chainId:d,context:{...f,account:h},digests:p,typedData:m}}async function ZB(e,t){let{account:n=e.account,chain:r=e.chain,webAuthn:i}=t;if(!r)throw Error("`chain` is required.");let a=n?jL(n):void 0;if(!a)throw Error("`account` is required.");let o=t.key??NL(a,t);if(!o&&!a.sign)throw Error("`key` or `account` with `sign` is required");let s=await Promise.all((t.preCalls??[]).map(async n=>{if(n.signature)return n;let{authorizeKeys:o,key:s,calls:c,revokeKeys:l}=n,{context:u,digest:d}=await YB(e,{account:a,authorizeKeys:o,calls:c,chain:r,feeToken:t.feeToken,key:s,preCalls:!0,revokeKeys:l}),f=await TL(s,{address:null,payload:d,webAuthn:i});return{context:u,signature:f}})),{capabilities:c,context:l,digest:u}=await YB(e,{...t,account:a,chain:r,key:o,preCalls:s}),d=await(async()=>o?await TL(o,{address:null,payload:u,webAuthn:i,wrap:!1}):await a.sign({hash:u}))();return await QB(e,{capabilities:c.feeSignature?{feeSignature:c.feeSignature}:void 0,context:l,key:o,signature:d})}async function QB(e,t){let{capabilities:n,context:r,key:i,signature:a}=t;return await KR(e,{capabilities:n,context:r,key:i?EL(i):void 0,signature:a})}async function $B(e,t){let{email:n,walletAddress:r}=t;return await qR(e,{email:n,walletAddress:r})}async function eV(e,t){if(t.account){let{account:n}=t,r=[...n.keys??[],...t.authorizeKeys??[]].filter((e,t,n)=>n.findIndex(t=>t.id===e.id)===t),{digests:i,...a}=await XB(e,{...t,address:n.address,authorizeKeys:r}),o={auth:await n.sign({hash:i.auth}),exec:await n.sign({hash:i.exec})};return await eV(e,{...a,signatures:o})}let{context:n,signatures:r}=t,i=jL(n.account);return await JR(e,{context:n,signatures:r}),i}async function tV(e,t){let{chainId:n,email:r,signature:i,token:a,walletAddress:o}=t;return await YR(e,{chainId:n,email:r,signature:i,token:a,walletAddress:o})}async function nV(e,t){let{address:n}=t,{authorization:r,data:i,to:a}=await RR(e,{address:n});return N_({authorization:{...r,nonce:BigInt(r.nonce),r:BigInt(r.r),s:BigInt(r.s)},data:i,signature:t.signature,to:a})}function rV(e,t){let{tokens:n}=t,r=n.filter(e=>e.interop);return e.map(e=>{if(e.address)return e;let t=r.find(t=>t.symbol===e.symbol);if(!t)throw Error(`interop token not found: ${e.symbol}`);return{address:t.address,value:II(e.value,t.decimals)}})}async function iV(e,t){let{chain:n=e.chain}=t??{};return await zR(e,{chainId:n?.id}).then(e=>e.fees.tokens)}async function aV(e,t){let{addressOrSymbol:n}=t;return(await iV(e,t)).find(aV.predicate(n))}(function(e){function t(e){return t=>e?ag(e)?ig(t.address,e):e===`native`?t.address===Z_:e===t.symbol:!1}e.predicate=t})(aV||={});async function oV(e,t){let{chain:n=e.chain,store:r}=t??{},i=r?.getState()??{},a=t?.addressOrSymbol??i.feeToken;return(await iV(e,{chain:n}).then(e=>e.filter(e=>e.feeToken)))?.find(e=>a?a===`native`&&e.address===`0x0000000000000000000000000000000000000000`||ag(a)&&ig(e.address,a)?!0:a===e.symbol:!1)}If(),ap(),ff();function sV(e={}){let t=e,{mock:n,multichain:r=!0,webAuthn:i}=t,a,o,s=(()=>{if(t.keystoreHost!==`self`&&!(typeof window<`u`&&window.location?.hostname===`localhost`))return t.keystoreHost})();return bB({actions:{async addFunds(){throw new UM},async createAccount(e){let{admins:t,email:r,label:o,permissions:c,internal:l,signInWithEthereum:u}=e,{client:d}=l,f=ML(E_()),p=await iV(d),m=n?hL():await mL({createFn:i?.createFn,label:o||`${f.address.slice(0,8)}\u2026${f.address.slice(-6)}`,rpId:s,userId:mf(f.address)}),h=await DB(c,{chainId:d.chain.id,feeTokens:p}),g=t?.map(e=>_L(e)),_=await eV(d,{account:f,authorizeKeys:[m,...g??[],...h?[h]:[]]});a=f.address,r&&o&&await $B(d,{email:o,walletAddress:_.address});let v=await(async()=>{if(!u)return;let e=await HB(d,u,{address:_.address}),t=await PL(f,{payload:KB(Hf(e))}),n=await nV(d,{address:_.address,signature:t});return{message:e,signature:n}})();return{account:{..._,signInWithEthereum:v}}},async getAccountVersion(e){let{address:t,internal:n}=e,{client:r}=n,{contracts:i}=await zR(r),{accountImplementation:a}=i,o=await qB(r,{account:jL(a)}).then(e=>e.version),s=await qB(r,{account:t}).then(e=>e.version).catch(()=>o);if(!s||!o)throw Error(`version not found.`);return{current:s,latest:o}},async getAssets(e){let{account:t,chainFilter:n,assetFilter:r,assetTypeFilter:i,internal:a}=e,{client:o}=a;return await BR(o,{account:t,assetFilter:r,assetTypeFilter:i,chainFilter:n})},async getCallsStatus(e){let{id:t,internal:n}=e,{client:r}=n,i=await VR(r,{id:t});return{atomic:!0,chainId:L(r.chain.id),id:t,receipts:i.receipts?.map(e=>({blockHash:e.blockHash,blockNumber:L(e.blockNumber),gasUsed:L(e.gasUsed),logs:e.logs,status:e.status,transactionHash:e.transactionHash})),status:i.status,version:`1.0`}},async getCapabilities(e){let{chainIds:t,internal:n}=e,{client:i}=n,a={atomic:{status:`supported`},atomicBatch:{supported:!0},feeToken:{supported:!0,tokens:[]},merchant:{supported:!0},permissions:{supported:!0},requiredFunds:{supported:!!r,tokens:[]}},o=await zR(i,{chainIds:t?t.map(e=>Yf(e)):`all`,raw:!0});return Object.entries(o).reduce((e,[t,n])=>({...e,[t]:{...a,...n,feeToken:{supported:!0,tokens:n.fees.tokens},requiredFunds:{supported:!!r,tokens:r?n.fees.tokens.filter(e=>e.interop):[]}}}),{})},async getKeys(e){let{account:t,chainIds:n,internal:r}=e,{client:i}=r,a=await JB(i,{account:t,chainIds:n});return pN([...a,...t.keys??[]],e=>e.publicKey)},async grantAdmin(e){let{account:t,internal:n}=e,{client:r}=n,a=_L(e.key,{chainId:r.chain.id}),o=await oV(r,{addressOrSymbol:e.feeToken,store:n.store}),{id:s}=await ZB(r,{account:t,authorizeKeys:[a],feeToken:o?.address,webAuthn:i});return await Um(r,{id:s,pollingInterval:500}),{key:a}},async grantPermissions(e){let{account:t,internal:n,permissions:r}=e,{client:i}=n,a=await iV(i),o=await DB(r,{chainId:i.chain.id,feeTokens:a});if(!o)throw Error(`key to authorize not found.`);let s=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!s)throw Error(`admin key not found.`);let{context:c,digest:l}=await YB(i,{account:t,authorizeKeys:[o],key:s,preCalls:!0}),u=await TL(s,{address:null,payload:l});return await QB(i,{context:c,key:s,signature:u}),{key:o}},async loadAccounts(e){let{internal:t,permissions:r,signInWithEthereum:o}=e,{client:c}=t,l=await iV(c),u=await DB(r,{chainId:c.chain.id,feeTokens:l}),{digest:d,digestType:f,message:p}=await(async()=>{if(o&&e.address){let t=await HB(c,o,{address:e.address});return{context:void 0,digest:KB(Hf(t)),digestType:`siwe`,message:t}}return{context:void 0,digest:`0x`,message:void 0}})(),{address:m,credentialId:h,webAuthnSignature:g}=await(async()=>{if(n){if(!a)throw Error(`address_internal not found.`);return{address:a,credentialId:void 0}}if(e.address&&e.key)return{address:e.address,credentialId:e.key.credentialId};let t=await eL({challenge:d,getFn:i?.getFn,rpId:s}),r=t.raw.response,o=Cf(new Uint8Array(r.userHandle)),c=t.raw.id;return{address:o,credentialId:c,webAuthnSignature:t}})(),_=await JB(c,{account:m,chainIds:[c.chain.id]}),v=jL({address:m,keys:[..._,...u?[u]:[]].map((e,t)=>t===0&&e.type===`webauthn-p256`?bL({...e,credential:{id:h,publicKey:Kh(e.publicKey)},id:m,rpId:s}):e)}),y=NL(v,{role:`admin`}),b=await(async()=>{if(d!==`0x`)return g?AL(kL(g),{keyType:`webauthn-p256`,publicKey:y.publicKey}):await TL(y,{address:v.address,payload:d})})();if(u){let{context:e,digest:t}=await YB(c,{account:v,authorizeKeys:[u],preCalls:!0}),n=await TL(y,{address:null,payload:t});await QB(c,{context:e,key:y,signature:n})}let x=await(async()=>{if(o){if(f===`siwe`&&p&&b){let e=await nV(c,{address:v.address,signature:b});return{message:p,signature:e}}{let e=await HB(c,o,{address:v.address}),t=await PL(v,{payload:KB(Hf(e)),role:`admin`}),n=await nV(c,{address:v.address,signature:t});return{message:e,signature:n}}}})();return{accounts:[{...v,signInWithEthereum:x}]}},async prepareCalls(e){let{account:t,calls:n,internal:i,merchantUrl:a}=e,{client:o}=i,s=e.key??await xB({account:t,calls:n});if(!s)throw Error(`cannot find authorized key to sign with.`);let[c,l]=await Promise.all([iV(o),oV(o,{addressOrSymbol:e.feeToken,store:i.store})]),u=rV(e.requiredFunds??[],{tokens:c}),{capabilities:d,context:f,digest:p,typedData:m}=await YB(o,{account:t,calls:n,feeToken:l?.address,key:s,merchantUrl:a,requiredFunds:r?u:void 0}),h=f.quote?.quotes??[],g=h[h.length-1];return{account:t,capabilities:{...d,quote:f.quote},chainId:o.chain.id,context:{...f,account:t,calls:n,nonce:g?.intent.nonce},digest:p,key:s,typedData:m}},async prepareUpgradeAccount(e){let{address:t,email:r,label:a,internal:c,permissions:l}=e,{client:u}=c,[d,f]=await Promise.all([iV(u),oV(u,{store:c.store})]),p=n?hL():await mL({createFn:i?.createFn,label:a||`${t.slice(0,8)}\u2026${t.slice(-6)}`,rpId:s,userId:mf(t)}),m=await DB(l,{chainId:u.chain.id,feeTokens:d}),{context:h,digests:g}=await XB(u,{address:t,authorizeKeys:[p,...m?[m]:[]],feeToken:f?.address});return r&&(o=a),{context:h,digests:g}},async revokeAdmin(e){let{account:t,id:n,internal:r}=e,{client:a}=r,o=t.keys?.find(e=>e.id===n);if(o){if(o.type===`webauthn-p256`&&t.keys?.filter(e=>e.type===`webauthn-p256`).length===1)throw Error(`revoke the only WebAuthn key left.`);try{let n=await oV(a,{addressOrSymbol:e.feeToken,store:r.store}),{id:s}=await ZB(a,{account:t,feeToken:n?.address,revokeKeys:[o],webAuthn:i});await Um(a,{id:s})}catch(e){let t=e;if(t.name===`Rpc.ExecutionError`&&t.abiError?.name===`KeyDoesNotExist`)return;throw e}}},async revokePermissions(e){let{account:t,id:n,internal:r}=e,{client:a}=r,o=t.keys?.find(e=>e.id===n);if(o){if(o.role===`admin`)throw Error(`cannot revoke admins.`);try{let n=await oV(a,{addressOrSymbol:e.feeToken,store:r.store}),{id:s}=await ZB(a,{account:t,feeToken:n?.address,revokeKeys:[o],webAuthn:i});await Um(a,{id:s})}catch(e){let t=e;if(t.name===`Rpc.ExecutionError`&&t.abiError?.name===`KeyDoesNotExist`)return;throw e}}},async sendCalls(e){let{account:t,asTxHash:n,calls:a,chainId:o,internal:s,merchantUrl:c}=e,{client:l}=s,u=await xB({account:t,calls:a,permissionsId:e.permissionsId}),[d,f]=await Promise.all([iV(l),oV(l,{addressOrSymbol:e.feeToken,store:s.store})]),p=rV(e.requiredFunds??[],{tokens:d}),m=await ZB(l,{account:t,calls:a,feeToken:f?.address,key:u,merchantUrl:c,requiredFunds:r?p:void 0,webAuthn:i,...o?{chain:{id:o}}:{}});if(n){let{id:e,receipts:t,status:n}=await Um(l,{id:m.id,pollingInterval:500});if(!t?.[0])throw n===`success`?new XM({message:`Call bundle with id: `+e+` not found.`}):new jM({message:`Transaction failed under call bundle id: `+e+`.`});return{id:t[0].transactionHash}}return m},async sendPreparedCalls(e){let{context:t,key:n,internal:r,signature:i}=e,{client:a}=r,{id:o}=await QB(a,{context:t,key:n,signature:i});return o},async signPersonalMessage(e){let{account:t,data:n,internal:r}=e,{client:a}=r,o=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!o)throw Error(`cannot find admin key to sign with.`);let s=await PL(t,{key:o,payload:KB(n),webAuthn:i});return nV(a,{address:t.address,signature:s})},async signTypedData(e){let{account:t,internal:n}=e,{client:r}=n,a=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!a)throw Error(`cannot find admin key to sign with.`);let o=lf(e.data),s=o.domain?.name===`Orchestrator`,c=await PL(t,{key:a,payload:cI(o),replaySafe:!s,webAuthn:i});return s?c:nV(r,{address:t.address,signature:c})},async upgradeAccount(e){let{account:t,context:n,internal:r,signatures:i}=e,{client:a}=r;return await eV(a,{context:n,signatures:i}),o&&await $B(a,{email:o,walletAddress:t.address}),{account:t}},async verifyEmail(e){let{account:t,chainId:n,email:r,token:a,internal:o,walletAddress:s}=e,{client:c}=o,l=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!l)throw Error(`cannot find admin key to sign with.`);let u=await PL(t,{key:l,payload:Vh(Hf(`${r}${a}`)),webAuthn:i});return await tV(c,{chainId:n,email:r,signature:u,token:a,walletAddress:s})}},config:e,name:`rpc`})}ap();function cV(e={}){let{fallback:t=sV(),host:n=yN.prod,renderer:r=xN(),theme:i,themeController:a}=e,o=new Set,s=SB();function c(e){return tN({async request(t){let n=s.prepare(t);return e.setState(e=>{let t=e.accounts[0],r=t?.keys?.find(e=>e.role===`admin`&&e.type===`webauthn-p256`);return{...e,requestQueue:[...e.requestQueue,{account:t?{address:t.address,key:r?{credentialId:r?.credentialId,publicKey:r.publicKey}:void 0}:void 0,request:n,status:`pending`}]}}),new Promise((t,r)=>{let i=a=>{let s=a.find(e=>e.request.id===n.id);if(!s&&a.length===0){o.delete(i),r(new VM);return}s&&(s.status!==`success`&&s.status!==`error`||(o.delete(i),s.status===`success`?t(s.result):r(nN(s.error)),e.setState(e=>({...e,requestQueue:e.requestQueue.filter(e=>e.request.id!==n.id)}))))};o.add(i)})}},{schema:wB()})}return bB({actions:{async addFunds(e){let{internal:t}=e,{request:n,store:r}=t;if(n.method!==`wallet_addFunds`)throw Error(`Cannot add funds for method: `+n.method);return await c(r).request(n)},async createAccount(e){let{internal:t}=e,{client:n,config:r,request:i,store:a}=t,{storage:o}=r,s=c(a);return{account:await(async()=>{if(i.method===`wallet_connect`){let[{capabilities:e,chainIds:t}]=i._decoded.params??[{}],a=uV(e?.signInWithEthereum?.authUrl??r.authUrl,{storage:o}),c=i.params?.[0]?.capabilities?.signInWithEthereum,l=await DB(e?.grantPermissions,{chainId:n.chain.id}),u=l?fP(TB,EB(l)):void 0,{accounts:d}=await s.request({...i,params:[{capabilities:{...i.params?.[0]?.capabilities,grantPermissions:u,signInWithEthereum:a||c?{...c,authUrl:a}:void 0},chainIds:t?.map(e=>L(e))}]}),[f]=d;if(!f)throw Error(`no account found.`);let p=f.capabilities?.admins?.map(e=>_L(e,{chainId:n.chain.id})).filter(Boolean),m=f.capabilities?.permissions?.map(e=>{try{let t=vz(pP(gz,e));return t.id===l?.id?{...t,...l,permissions:t.permissions}:t}catch{return}}).filter(Boolean),h=await(async()=>{if(!f.capabilities?.signInWithEthereum)return;let{message:e,signature:t}=f.capabilities.signInWithEthereum;if(!a)return{message:e,signature:t};let{token:n}=await VB({address:f.address,authUrl:a,message:e,publicKey:f.capabilities?.admins?.[0]?.publicKey,signature:t});return{message:e,signature:t,token:n}})();return{...jL({address:f.address,keys:[...p??[],...m??[]]}),signInWithEthereum:h}}throw Error(`Account creation not supported on method: ${i.method}`)})()}},async disconnect(e){let{internal:t}=e,{config:n}=t,{storage:r}=n,i=await r.getItem(`porto.authUrl`)||void 0,a=uV(n.authUrl??i,{storage:r});a&&await fetch(a.logout,{credentials:`include`,method:`POST`}).catch(()=>{})},async getAccountVersion(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getAccountVersion`)throw Error(`Cannot get version for method: `+a.method);return r.supportsHeadless?await c(i).request(a):t.actions.getAccountVersion(e)},async getAssets(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getAssets`)throw Error(`Cannot get assets for method: `+a.method);if(!r.supportsHeadless)return t.actions.getAssets(e);let o=await c(i).request(a);return pP(nB.Response,o)},async getCallsStatus(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getCallsStatus`)throw Error(`Cannot get status for method: `+a.method);return r.supportsHeadless?await c(i).request(a):t.actions.getCallsStatus(e)},async getCapabilities(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getCapabilities`)throw Error(`Cannot get capabilities for method: `+a.method);return r.supportsHeadless?await c(i).request(a):t.actions.getCapabilities(e)},async getKeys(e){let{account:n,chainIds:i,internal:a}=e,{store:o}=a,s=await(async()=>{if(!r.supportsHeadless)return t.actions.getKeys(e);let a=await c(o).request({method:`wallet_getKeys`,params:[fP(aB.Parameters,{address:n.address,chainIds:i})]});return pP(aB.Response,a)})();return pN([...s,...n.keys??[]],e=>e.publicKey)},async grantAdmin(e){let{internal:t}=e,{request:n,store:r}=t;if(n.method!==`wallet_grantAdmin`)throw Error(`Cannot authorize admin for method: `+n.method);let[i]=n._decoded.params,a=_L(i.key);if(!a)throw Error(`no key found.`);let o=await lV(t,e);return await c(r).request({method:`wallet_grantAdmin`,params:[{...n.params?.[0],capabilities:{...n.params?.[0]?.capabilities,feeToken:o}}]}),{key:a}},async grantPermissions(e){let{internal:t}=e,{client:n,request:r,store:i}=t;if(r.method!==`wallet_grantPermissions`)throw Error(`Cannot grant permissions for method: `+r.method);let[{address:a,...o}]=r._decoded.params,s=await DB(o,{chainId:n.chain.id});if(!s)throw Error(`no key found.`);let l=fP(TB,EB(s));return await c(i).request({method:`wallet_grantPermissions`,params:[l]}),{key:s}},async loadAccounts(e){let{internal:t}=e,{client:n,config:r,store:i}=t,{storage:a}=r,o=c(i),s=t.request;if(s.method!==`wallet_connect`&&s.method!==`eth_requestAccounts`)throw Error(`Cannot load accounts for method: `+s.method);return{accounts:await(async()=>{let[e]=s._decoded.params??[],{capabilities:t}=e??{},i=uV(t?.signInWithEthereum?.authUrl??r.authUrl,{storage:a}),c=s.params?.[0]?.capabilities?.signInWithEthereum,l=await DB(t?.grantPermissions,{chainId:n.chain.id}),u=l?fP(TB,EB(l)):void 0,{accounts:d}=await o.request({method:`wallet_connect`,params:[{...s.params?.[0],capabilities:{...s.params?.[0]?.capabilities,grantPermissions:u,signInWithEthereum:i||c?{...c,authUrl:i}:void 0}}]});return Promise.all(d.map(async e=>{let t=e.capabilities?.admins?.map(e=>_L(e)).filter(Boolean),n=e.capabilities?.permissions?.map(e=>{try{let t=vz(pP(gz,e));return t.id===l?.id?{...t,...l,permissions:t.permissions}:t}catch{return}}).filter(Boolean),r=await(async()=>{if(!e.capabilities?.signInWithEthereum)return;let{message:t,signature:n}=e.capabilities.signInWithEthereum;if(!i)return{message:t,signature:n};let{token:r}=await VB({address:e.address,authUrl:i,message:t,publicKey:e.capabilities?.admins?.[0]?.publicKey,signature:n});return{message:t,signature:n,token:r}})();return{...jL({address:e.address,keys:[...t??[],...n??[]]}),signInWithEthereum:r}}))})()}},async prepareCalls(e){let{account:n,internal:i}=e,{store:a,request:o}=i;if(o.method!==`wallet_prepareCalls`)throw Error(`Cannot prepare calls for method: `+o.method);if(!r.supportsHeadless)return t.actions.prepareCalls(e);let s=await lV(i,e),l=c(a),u=pP(oB.Response,await l.request({...o,params:[{...o.params?.[0],capabilities:{...o.params?.[0]?.capabilities,feeToken:s}}]}));return{account:n,chainId:Number(u.chainId),context:u.context,digest:u.digest,key:u.key,typedData:u.typedData}},async prepareUpgradeAccount(e){let{internal:n}=e,{client:i,store:a,request:o}=n;if(o.method!==`wallet_prepareUpgradeAccount`)throw Error(`Cannot prepare upgrade for method: `+o.method);if(!r.supportsHeadless)return t.actions.prepareUpgradeAccount(e);let[{capabilities:s}]=o._decoded.params??[{}],l=await DB(s?.grantPermissions,{chainId:i.chain.id}),u=l?fP(TB,EB(l)):void 0,{context:d,digests:f}=await c(a).request({...o,params:[{...o.params?.[0],capabilities:{...o.params?.[0]?.capabilities,grantPermissions:u}}]}),p=d.account.keys?.map(e=>e.id===l?.id?{...e,...l}:e);return{context:{...d,account:{...d.account,keys:p}},digests:f}},async revokeAdmin(e){let{account:t,id:n,internal:r}=e,{store:i,request:a}=r;if(a.method!==`wallet_revokeAdmin`)throw Error(`Cannot revoke admin for method: `+a.method);let o=t.keys?.find(e=>e.id===n);if(!o)return;if(o.type===`webauthn-p256`&&t.keys?.filter(e=>e.type===`webauthn-p256`).length===1)throw Error(`revoke the only WebAuthn key left.`);let s=await lV(r,e);return await c(i).request({...a,params:[{...a.params?.[0],capabilities:{...a.params?.[0]?.capabilities,feeToken:s}}]})},async revokePermissions(e){let{account:t,id:n,internal:r}=e,{store:i,request:a}=r;if(a.method!==`wallet_revokePermissions`)throw Error(`Cannot revoke permissions for method: `+a.method);let o=t.keys?.find(e=>e.id===n);if(o){if(o.role===`admin`)throw Error(`cannot revoke permissions.`);return await c(i).request(a)}},async sendCalls(e){let{account:n,asTxHash:i,calls:a,chainId:o,internal:s,merchantUrl:l,requiredFunds:u}=e,{client:d,store:f,request:p}=s,m=c(f),h=await lV(s,e),g=await xB({account:n,calls:a,permissionsId:e.permissionsId});if(g&&g.role===`session`){if(!r.supportsHeadless)return t.actions.sendCalls(e);try{let e=await m.request(fP(oB.Request,{method:`wallet_prepareCalls`,params:[{calls:a,capabilities:{...p._decoded.method===`wallet_sendCalls`?p._decoded.params?.[0]?.capabilities:void 0,feeToken:h,merchantUrl:l,requiredFunds:u},chainId:o,from:n.address,key:g}]})),t=e.capabilities?.quote?.quotes??[];if(t.some((e,n)=>n===t.length-1&&t.length>1?!1:Jf(e.feeTokenDeficit)>0n))throw Error(`insufficient funds`);let r=await TL(g,{address:null,payload:e.digest,wrap:!1}),s=(await m.request({method:`wallet_sendPreparedCalls`,params:[{...e,signature:r}]}))[0];if(!s)throw Error(`id not found`);if(i){let{id:e,receipts:t,status:n}=await Um(d,{id:s.id,pollingInterval:500});if(!t?.[0])throw n===`success`?new XM({message:`Call bundle with id: `+e+` not found.`}):new jM({message:`Transaction failed under call bundle id: `+e+`.`});return{id:t[0].transactionHash}}return s}catch{}}if(p.method===`eth_sendTransaction`)return{id:await m.request({...p,params:[{...p.params?.[0],capabilities:{feeToken:h,merchantUrl:l},...o?{chainId:L(o)}:{}}]})};if(p.method===`wallet_sendCalls`)return await m.request({method:`wallet_sendCalls`,params:[{...p.params?.[0],capabilities:{...p.params?.[0]?.capabilities,feeToken:h,merchantUrl:l},...o?{chainId:L(o)}:{}}]});throw Error(`Cannot execute for method: `+p.method)},async sendPreparedCalls(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_sendPreparedCalls`)throw Error(`Cannot send prepared calls for method: `+a.method);if(!r.supportsHeadless)return t.actions.sendPreparedCalls(e);let o=(await c(i).request(a))[0]?.id;if(!o)throw Error(`id not found`);return o},async signPersonalMessage(e){let{internal:t}=e,{store:n,request:r}=t;if(r.method!==`personal_sign`)throw Error(`Cannot sign personal message for method: `+r.method);return await c(n).request(r)},async signTypedData(e){let{internal:t}=e,{store:n,request:r}=t;if(r.method!==`eth_signTypedData_v4`)throw Error(`Cannot sign typed data for method: `+r.method);return await c(n).request(r)},async switchChain(e){let{internal:t}=e,{store:n,request:i}=t;if(i.method!==`wallet_switchEthereumChain`)throw Error(`Cannot switch chain for method: `+i.method);if(r.supportsHeadless)return await c(n).request(i)},async upgradeAccount(e){let{account:t,internal:n}=e,{store:r,request:i}=n;if(i.method!==`wallet_upgradeAccount`)throw Error(`Cannot upgrade account for method: `+i.method);return await c(r).request(i),{account:t}},async verifyEmail(e){let{internal:t}=e,{request:n,store:r}=t;if(n.method!==`account_verifyEmail`)throw Error(`Cannot verify email for method: `+n.method);return await c(r).request(n)}},config:e,name:`dialog`,setup(e){let{internal:t}=e,{store:s}=t,c=r.setup({host:n,internal:t,theme:i,themeController:a}),l=s.subscribe(e=>e.requestQueue,e=>{for(let t of o)t(e);let t=e.map(e=>e.status===`pending`?e:void 0).filter(Boolean);c.syncRequests(t).catch(()=>{}),t.length===0&&c.close()});return()=>{l(),c.destroy()}}})}async function lV(e,t){let{config:{feeToken:n}}=e,{feeToken:r}=t??{};return r??n}function uV(e,{storage:t}){if(!e)return;let n=UB(e,typeof window<`u`?window.location.origin:void 0);return n&&t.setItem(`porto.authUrl`,n),n}var dV=new Map,fV=e=>{let t=dV.get(e);return t?Object.fromEntries(Object.entries(t.stores).map(([e,t])=>[e,t.getState()])):{}},pV=(e,t,n)=>{if(e===void 0)return{type:`untracked`,connection:t.connect(n)};let r=dV.get(n.name);if(r)return{type:`tracked`,store:e,...r};let i={connection:t.connect(n),stores:{}};return dV.set(n.name,i),{type:`tracked`,store:e,...i}},mV=(e,t)=>{if(t===void 0)return;let n=dV.get(e);n&&(delete n.stores[t],Object.keys(n.stores).length===0&&dV.delete(e))},hV=e=>{if(!e)return;let t=e.split(` -`),n=t.findIndex(e=>e.includes(`api.setState`));if(n<0)return;let r=t[n+1]?.trim()||``;return/.+ (.+) .+/.exec(r)?.[1]},gV=(e,t={})=>(n,r,i)=>{let{enabled:a,anonymousActionType:o,store:s,...c}=t,l;try{l=(a??!1)&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!l)return e(n,r,i);let{connection:u,...d}=pV(s,l,c),f=!0;i.setState=((e,t,a)=>{let l=n(e,t);if(!f)return l;let d=a===void 0?{type:o||hV(Error().stack)||`anonymous`}:typeof a==`string`?{type:a}:a;return s===void 0?(u?.send(d,r()),l):(u?.send({...d,type:`${s}/${d.type}`},{...fV(c.name),[s]:i.getState()}),l)}),i.devtools={cleanup:()=>{u&&typeof u.unsubscribe==`function`&&u.unsubscribe(),mV(c.name,s)}};let p=(...e)=>{let t=f;f=!1,n(...e),f=t},m=e(i.setState,r,i);if(d.type===`untracked`?u?.init(m):(d.stores[d.store]=i,u?.init(Object.fromEntries(Object.entries(d.stores).map(([e,t])=>[e,e===d.store?m:t.getState()])))),i.dispatchFromDevtools&&typeof i.dispatch==`function`){let e=i.dispatch;i.dispatch=(...t)=>{e(...t)}}return u.subscribe(e=>{switch(e.type){case`ACTION`:if(typeof e.payload!=`string`){console.error(`[zustand devtools middleware] Unsupported action format`);return}return _V(e.payload,e=>{if(e.type===`__setState`){if(s===void 0){p(e.state);return}Object.keys(e.state).length!==1&&console.error(` +`,n+=KL(e));return new WL(n)}function KL(e,t=0){let n=qL(e.path),r=`- ${n?`${n}: `:``}`,i=` `.repeat(t+1),a=r;switch(e.code){case`invalid_type`:{let t=e.expected,n=e.input?JL(e):`undefined`;a+=`Expected ${t}. ${e.message===`Invalid input`?``:e.message}`,n!==`undefined`&&(a+=`but received ${n}`);break}case`too_big`:{let t=e.maximum,n=e.inclusive??!0;e.exact??!1?a+=`${e.origin} must be exactly ${t}`:a+=`${e.origin} must be ${n?`at most`:`less than`} ${t}`;break}case`too_small`:{let t=e.minimum,n=e.inclusive??!0;e.exact??!1?a+=`${e.origin} must be exactly ${t}`:a+=`${e.origin} must be ${n?`at least`:`greater than`} ${t}`;break}case`invalid_format`:switch(e.format){case`regex`:a+=`Must match pattern: ${e.pattern}`;break;case`starts_with`:a+=`Must start with "${e.prefix}"`;break;case`ends_with`:a+=`Must end with "${e.suffix}"`;break;case`includes`:a+=`Must include "${e.includes}"`;break;case`template_literal`:a+=`Must match pattern: ${e.pattern}`;break;default:a+=`Invalid ${e.format} format`}break;case`not_multiple_of`:a+=`Number must be a multiple of ${e.divisor}`;break;case`unrecognized_keys`:{let t=e.keys.map(e=>`"${e}"`).join(`, `);a+=`Unrecognized key${e.keys.length>1?`s`:``}: ${t}`;break}case`invalid_union`:{let n=e.errors&&e.errors.length>0;a+=`Invalid union value.`,n&&e.errors.forEach(e=>{e.length>0&&e.forEach(e=>{a+=` +`,a+=i,a+=KL(e,t+1)})});break}case`invalid_key`:a+=`Invalid ${e.origin} key`,e.issues&&e.issues.length>0&&e.issues.forEach(e=>{a+=` +`,a+=i,a+=KL(e,t+1)});break;case`invalid_element`:a+=`Invalid ${e.origin} element at key "${e.key}"`,e.issues&&e.issues.length>0&&e.issues.forEach(e=>{a+=` +`,a+=i,a+=KL(e,t+1)});break;case`invalid_value`:{let t=e.values.map(e=>JSON.stringify(e)).join(`, `);e.values.length>1?a+=`Expected one of: ${t}`:a+=`Expected ${t}`;break}case`custom`:a+=e.message||`Custom validation failed`;break;default:a+=e.message||`Validation failed`}return a}function qL(e){return e.length===0?``:"at `"+e.map((e,t)=>typeof e==`number`?`[${e}]`:typeof e==`symbol`?`[${e.toString()}]`:/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)&&t>0?`.${e}`:t===0&&/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(e)?e:`["${e}"]`).join(``)+"`"}function JL(e){let t=e.input;if(t===void 0)return`undefined`;if(t===null)return`null`;let n=typeof t;return n===`object`?Array.isArray(t)?`array`:t instanceof Date?`date`:t instanceof Map?`map`:t instanceof Set?`set`:`object`:n}const YL=U({selector:X(),to:Y(),type:K(`call`)}),XL=U({limit:Q(),period:W([K(`minute`),K(`hour`),K(`day`),K(`week`),K(`month`),K(`year`)]),token:q(W([Y(),AF()])),type:K(`spend`)}),ZL=W([YL,XL]),QL=U({expiry:Z(),prehash:q(wF()),publicKey:X(),role:W([K(`admin`),K(`normal`)]),type:W([K(`p256`),K(`secp256k1`),K(`webauthnp256`)])}),$L=U({...QL.shape,permissions:J(H(ZL))});var eR;(function(e){e.AssetDiffAsset=W([U({address:q(W([Y(),AF()])),decimals:q(W([V(),AF()])),direction:W([K(`incoming`),K(`outgoing`)]),fiat:q(U({currency:B(),value:tI(B(),V(),{decode:e=>Number(e),encode:e=>String(e)})})),name:q(W([B(),AF()])),symbol:B(),type:K(`erc20`),value:Q()}),U({address:q(W([Y(),AF()])),direction:W([K(`incoming`),K(`outgoing`)]),fiat:q(U({currency:B(),value:tI(B(),V(),{decode:e=>Number(e),encode:e=>String(e)})})),name:q(W([B(),AF()])),symbol:B(),type:K(`erc721`),uri:B(),value:Q()}),U({address:AF(),decimals:q(W([V(),AF()])),direction:W([K(`incoming`),K(`outgoing`)]),fiat:q(U({currency:B(),value:tI(B(),V(),{decode:e=>Number(e),encode:e=>String(e)})})),symbol:B(),type:AF(),value:Q()})]),e.Response=qF(X(),J(H(J(G([Y(),J(H(e.AssetDiffAsset))])))))})(eR||={});var tR;(function(e){e.Request=J(H($L)),e.Response=J(H(U({...$L.shape,hash:X()})))})(tR||={});var nR;(function(e){e.Response=qF(X(),U({currency:B(),value:B()}))})(nR||={});var rR;(function(e){e.Request=U({feePayer:q(Y()),feeToken:q(Y()),nonce:q(Q())})})(rR||={});var iR;(function(e){e.Request=J(H(U({address:Y(),value:Q()})))})(iR||={});var aR;(function(e){e.Request=J(H(U({hash:X()}))),e.Response=J(H(U({hash:X()})))})(aR||={});const oR=U({eoa:Y(),executionData:X(),nonce:X(),signature:X()}),sR=U({...oR.shape,chainId:Z()}),cR=W([U({combinedGas:Q(),encodedFundTransfers:J(H(X())),encodedPreCalls:J(H(X())),eoa:Y(),executionData:X(),expiry:Q(),funder:Y(),funderSignature:X(),isMultichain:wF(),nonce:Q(),payer:Y(),paymentAmount:Q(),paymentMaxAmount:Q(),paymentRecipient:Y(),paymentSignature:X(),paymentToken:Y(),settler:Y(),settlerContext:X(),signature:X(),supportedAccountImplementation:Y()}),U({combinedGas:Q(),encodedFundTransfers:J(H(X())),encodedPreCalls:J(H(X())),eoa:Y(),executionData:X(),expiry:Q(),funder:Y(),funderSignature:X(),isMultichain:wF(),nonce:Q(),payer:Y(),paymentRecipient:Y(),paymentSignature:X(),paymentToken:Y(),prePaymentAmount:Q(),prePaymentMaxAmount:Q(),settler:Y(),settlerContext:X(),signature:X(),supportedAccountImplementation:Y(),totalPaymentAmount:Q(),totalPaymentMaxAmount:Q()})]);U({eoa:Y(),executionData:X(),nonce:Q()});const lR=U({address:W([Y(),AF()]),decimals:q(V()),deficit:Q(),fiat:q(U({currency:B(),value:B()})),name:q(B()),required:Q(),symbol:q(B())}),uR=U({additionalAuthorization:QF(U({address:Y(),chainId:Z(),nonce:Z(),r:X(),s:X(),yParity:Z()})),assetDeficits:q(H(lR)),authorizationAddress:q(W([Y(),AF()])),chainId:Z(),ethPrice:Q(),extraPayment:Q(),feeTokenDeficit:Q(),intent:cR,nativeFeeEstimate:U({maxFeePerGas:Q(),maxPriorityFeePerGas:Q()}),orchestrator:Y(),paymentTokenDecimals:V(),txGas:Q()}),dR=U({multiChainRoot:q(W([X(),AF()])),quotes:J(H(uR)).check(vF(1)),ttl:V()}),fR=U({...dR.shape,hash:X(),r:X(),s:X(),v:q(X()),yParity:q(X())}),pR=U({address:Y(),decimals:V(),feeToken:q(wF()),interop:q(wF()),nativeRate:q(Q()),symbol:B(),uid:B()}),mR=B().check(yF(/^[A-Z0-9]+$/));var hR=U({address:Y(),chainId:Z(),nonce:Z()}),gR=U({...hR.shape,r:X(),s:X(),yParity:Z()}),_R=U({data:q(X()),to:Y(),value:q(Q())}),vR;(function(e){e.Parameters=U({address:Y(),secret:B()}),e.Request=U({method:K(`account_getOnrampContactInfo`),params:J(G([e.Parameters]))}),e.Response=U({email:q(B()),phone:q(B()),phoneVerifiedAt:q(V())})})(vR||={});var yR;(function(e){e.Parameters=U({address:Y()}),e.Request=U({method:K(`account_onrampStatus`),params:J(G([e.Parameters]))}),e.Response=U({email:q(V()),phone:q(V())})})(yR||={});var bR;(function(e){e.Parameters=U({phone:B(),walletAddress:Y()}),e.Request=U({method:K(`account_resendVerifyPhone`),params:J(G([e.Parameters]))}),e.Response=AF()})(bR||={});var xR;(function(e){e.Parameters=U({email:B().check(yF(/^.*@.*$/)),walletAddress:Y()}),e.Request=U({method:K(`account_setEmail`),params:J(G([e.Parameters]))}),e.Response=AF()})(xR||={});var SR;(function(e){e.Parameters=U({phone:B(),walletAddress:Y()}),e.Request=U({method:K(`account_setPhone`),params:J(G([e.Parameters]))}),e.Response=AF()})(SR||={});var CR;(function(e){e.Parameters=U({chainId:Z(),email:B(),signature:X(),token:B(),walletAddress:Y()}),e.Request=U({method:K(`account_verifyEmail`),params:J(G([e.Parameters]))}),e.Response=AF()})(CR||={});var wR;(function(e){e.Parameters=U({code:B(),phone:B(),walletAddress:Y()}),e.Request=U({method:K(`account_verifyPhone`),params:J(G([e.Parameters]))}),e.Response=AF()})(wR||={});var TR;(function(e){e.Request=U({method:K(`health`),params:OF()}),e.Response=U({quoteSigner:Y(),status:B(),version:B()})})(TR||={});var ER;(function(e){e.Parameters=U({address:Y(),chainId:Z(),tokenAddress:Y(),value:Q()}),e.Request=U({method:K(`wallet_addFaucetFunds`),params:J(G([e.Parameters]))}),e.Response=U({message:q(B()),transactionHash:X()})})(ER||={});var DR;(function(e){e.Parameters=U({chainId:Z(),id:X()}),e.Request=U({method:K(`wallet_getAccounts`),params:J(G([e.Parameters]))}),e.Response=J(H(U({address:Y(),keys:tR.Response})))})(DR||={});var OR;(function(e){e.Parameters=U({address:Y()}),e.Request=U({method:K(`wallet_getAuthorization`),params:J(G([e.Parameters]))}),e.Response=U({authorization:gR,data:X(),to:Y()})})(OR||={});var kR;(function(e){e.Request=U({method:K(`wallet_getCapabilities`),params:q(G([J(H(V()))]))});let t=U({address:Y(),version:q(W([B(),AF()]))});e.Response=qF(X(),U({contracts:U({accountImplementation:t,accountProxy:t,legacyAccountImplementations:J(H(t)),legacyOrchestrators:J(H(W([U({orchestrator:t,simulator:t}),t]))),orchestrator:t,simulator:t}),fees:U({quoteConfig:U({constantRate:q(W([V(),AF()])),gas:q(U({intentBuffer:q(V()),txBuffer:q(V())})),rateTtl:V(),ttl:V()}),recipient:Y(),tokens:J(H(pR))})}))})(kR||={});var AR;(function(e){let t=W([K(`native`),K(`erc20`),K(`erc721`),B()]);e.Parameters=U({account:Y(),assetFilter:q(qF(X(),J(H(U({address:W([Y(),K(`native`)]),type:t}))))),assetTypeFilter:q(J(H(t))),chainFilter:q(J(H(Z())))}),e.Request=U({method:K(`wallet_getAssets`),params:J(G([e.Parameters]))}),e.Price=U({currency:B(),value:tI(B(),V(),{decode:e=>Number(e),encode:e=>String(e)})}),e.Response=qF(B(),J(H(UL([U({address:Y(),balance:Q(),metadata:ZF(U({decimals:V(),fiat:QF(e.Price),name:B(),symbol:B()})),type:K(`erc20`)}),U({address:ZF(K(`native`)),balance:Q(),metadata:ZF(U({decimals:V(),fiat:QF(e.Price),name:q(B()),symbol:q(B())})),type:K(`native`)})]))))})(AR||={});var jR;(function(e){e.Request=U({method:K(`wallet_getCallsStatus`),params:J(G([X()]))}),e.Response=U({id:B(),receipts:q(J(H(U({blockHash:X(),blockNumber:Z(),chainId:Z(),gasUsed:Z(),logs:J(H(U({address:Y(),data:X(),topics:J(H(X()))}))),status:X(),transactionHash:X()})))),status:V()})})(jR||={});var MR;(function(e){e.Parameters=U({address:Y(),chainIds:q(J(H(Z())))}),e.Request=U({method:K(`wallet_getKeys`),params:J(G([e.Parameters]))}),e.Response=qF(X(),tR.Response)})(MR||={});var NR;(function(e){e.Capabilities=U({authorizeKeys:q(tR.Request),meta:rR.Request,preCall:q(wF()),preCalls:q(J(H(oR))),requiredFunds:q(iR.Request),revokeKeys:q(aR.Request)}),e.ResponseCapabilities=U({assetDiffs:q(eR.Response),authorizeKeys:QF(tR.Response),feePayerDigest:q(X()),feeSignature:q(X()),feeTotals:q(nR.Response),revokeKeys:QF(aR.Response)}),e.Parameters=U({calls:J(H(_R)),capabilities:e.Capabilities,chainId:Z(),from:q(Y()),key:q(U({prehash:wF(),publicKey:X(),type:QL.shape.type}))}),e.Request=U({method:K(`wallet_prepareCalls`),params:J(G([e.Parameters]))}),e.Response=U({capabilities:e.ResponseCapabilities,context:U({preCall:q(VF(sR)),quote:q(VF(fR))}),digest:X(),key:QF(U({prehash:wF(),publicKey:X(),type:QL.shape.type})),signature:X(),typedData:U({domain:W([U({chainId:W([Z(),V()]),name:B(),verifyingContract:Y(),version:B()}),U({})]),message:qF(B(),PF()),primaryType:B(),types:qF(B(),PF())})})})(NR||={});var PR;(function(e){e.Capabilities=U({authorizeKeys:tR.Request}),e.Parameters=U({address:Y(),capabilities:e.Capabilities,chainId:q(V()),delegation:Y()}),e.Request=U({method:K(`wallet_prepareUpgradeAccount`),params:J(G([e.Parameters]))}),e.Response=U({capabilities:e.Capabilities,chainId:Z(),context:U({address:Y(),authorization:hR,chainId:Z(),preCall:oR}),digests:U({auth:X(),exec:X()}),typedData:U({domain:W([U({chainId:W([Z(),V()]),name:B(),verifyingContract:Y(),version:B()}),U({})]),message:qF(B(),PF()),primaryType:B(),types:qF(B(),PF())})})})(PR||={});var FR;(function(e){e.Request=U({method:K(`wallet_feeTokens`),params:q(OF())}),e.Response=qF(X(),J(H(U({address:Y(),decimals:V(),nativeRate:q(Q()),symbol:B()}))))})(FR||={});var IR;(function(e){e.Parameters=U({capabilities:q(U({feeSignature:q(X())})),context:U({preCall:q(VF(sR)),quote:q(VF(fR))}),key:q(U({prehash:wF(),publicKey:X(),type:QL.shape.type})),signature:X()}),e.Request=U({method:K(`wallet_sendPreparedCalls`),params:J(G([e.Parameters]))}),e.Response=U({id:X()})})(IR||={});var LR;(function(e){e.Parameters=U({context:U({address:Y(),authorization:hR,chainId:Z(),preCall:oR}),signatures:U({auth:X(),exec:X()})}),e.Request=U({method:K(`wallet_upgradeAccount`),params:J(G([e.Parameters]))}),e.Response=OF()})(LR||={});var RR;(function(e){e.Parameters=U({address:X(),chainId:Z(),digest:X(),signature:X()}),e.Request=U({method:K(`wallet_verifySignature`),params:J(G([e.Parameters]))}),e.Response=U({proof:QF(U({account:Y(),initPreCall:QF(oR),keyHash:X()})),valid:wF()})})(RR||={}),Jd(),op();async function zR(e,t){try{let n=`wallet_getAuthorization`,r=await Tm(()=>e.request({method:n,params:[pP(OR.Parameters,t)]}),{cacheKey:`${e.uid}.${n}.${t.address}`});return mP(OR.Response,r)}catch(e){throw tz(e),e}}async function BR(e,t={}){let n=(()=>{if(t.chainId)return[t.chainId];if(t.chainIds!==`all`)return t.chainIds?t.chainIds:[e.chain.id]})();try{let r=`wallet_getCapabilities`,i=await Tm(()=>e.request({method:r,params:n?[n]:void 0},{retryCount:0}),{cacheKey:`${e.uid}.${r}.${n?.join(`,`)}`}),a=(()=>t.raw?i:mP(kR.Response,i))();return t.chainIds?a:Object.values(a)[0]}catch(e){throw tz(e),e}}async function VR(e,t){let{account:n,assetFilter:r,assetTypeFilter:i,chainFilter:a}=t;try{let t=await e.request({method:`wallet_getAssets`,params:[pP(AR.Parameters,{account:n,assetFilter:r,assetTypeFilter:i,chainFilter:a})]}),o=mP(AR.Response,t),s=Object.entries(o).reduce((e,[t,n])=>(e[Xf(t)]=n,e),{}),c={};for(let e of Object.values(s))for(let t of e){let e=JSON.stringify(t.metadata);c[e]={...t,balance:t.balance+(c[e]?.balance??0n)}}return{...s,0:Object.values(c)}}catch(e){throw tz(e),e}}async function HR(e,t){let{id:n}=t;try{let t=await e.request({method:`wallet_getCallsStatus`,params:[n]});return mP(jR.Response,t)}catch(e){throw tz(e),e}}async function UR(e,t){let{address:n,chainIds:r}=t;try{let t=await e.request({method:`wallet_getKeys`,params:[pP(MR.Parameters,{address:n,chainIds:r})]});return mP(MR.Response,t)}catch(e){throw tz(e),e}}async function WR(e){let t=`health`,n=await Tm(()=>e.request({method:t}),{cacheKey:`${e.uid}.${t}`});return mP(TR.Response,n)}async function GR(e,t){let{address:n,capabilities:r,chain:i=e.chain,key:a}=t,o=t.calls.map(e=>({data:e.abi?Y_(X_(e.abi,e.functionName),e.args):e.data??`0x`,to:e.to,value:e.value??0n}));try{let t=await e.request({method:`wallet_prepareCalls`,params:[pP(NR.Parameters,{calls:o,capabilities:{...r,meta:{...r?.meta}},chainId:i?.id,from:n,key:a?{prehash:a.prehash,publicKey:a.publicKey,type:a.type}:void 0})]},{retryCount:0});return Object.assign(mP(NR.Response,t),{_raw:t})}catch(e){throw tz(e),$R(e,{calls:t.calls}),e}}async function KR(e,t){let{address:n,chain:r=e.chain,delegation:i,...a}=t;try{let t=await e.request({method:`wallet_prepareUpgradeAccount`,params:[pP(PR.Parameters,pN({address:n,capabilities:a,chainId:r?.id,delegation:i}))]},{retryCount:0});return mP(PR.Response,t)}catch(e){throw tz(e),$R(e),e}}async function qR(e,t){let{capabilities:n,context:r,key:i,signature:a}=t;try{let t=await e.request({method:`wallet_sendPreparedCalls`,params:[pP(IR.Parameters,{capabilities:n,context:{preCall:r.preCall,quote:r.quote},key:i?{prehash:i.prehash,publicKey:i.publicKey,type:i.type}:void 0,signature:a})]},{retryCount:0});return mP(IR.Response,t)}catch(e){throw tz(e),$R(e),e}}async function JR(e,t){let{email:n,walletAddress:r}=t;try{let t=await e.request({method:`account_setEmail`,params:[pP(xR.Parameters,{email:n,walletAddress:r})]},{retryCount:0});return mP(xR.Response,t)}catch(e){throw tz(e),$R(e),e}}async function YR(e,t){let{context:n,signatures:r}=t;try{await e.request({method:`wallet_upgradeAccount`,params:[pP(LR.Parameters,{context:n,signatures:r})]},{retryCount:0})}catch(e){throw tz(e),$R(e),e}}async function XR(e,t){let{chainId:n,email:r,signature:i,token:a,walletAddress:o}=t;try{let t=await e.request({method:`account_verifyEmail`,params:[pP(CR.Parameters,{chainId:n,email:r,signature:i,token:a,walletAddress:o})]},{retryCount:0});return mP(CR.Response,t)}catch(e){throw tz(e),$R(e),e}}async function ZR(e,t){let{signature:n}=t,{signature:r,capabilities:{feeSignature:i,...a},...o}=t.response,s=ez({capabilities:a,...o}),c=Hh(Uf(JSON.stringify(s))),l=O_({payload:c,signature:o_(n)}),{quoteSigner:u}=await WR(e);return l===u}async function QR(e,t){let{address:n,chain:r=e.chain,digest:i,signature:a}=t;try{async function t(){return{proof:null,valid:await iv(e,{address:n,hash:i,signature:a})}}let o=await(async()=>{let o=await e.request({method:`wallet_verifySignature`,params:[pP(RR.Parameters,{address:n,chainId:r?.id,digest:i,signature:a})]},{retryCount:0}).catch(t);return o.valid?o:t()})();return mP(RR.Response,o)}catch(e){throw tz(e),e}}function $R(e,{calls:t}={}){if(!(e instanceof D))return;let n=e=>{try{if(e.name===`ContractFunctionExecutionError`){let t=e.cause.name===`ContractFunctionRevertedError`?e.cause.data:void 0;if(t)return LL([t.abiItem],t.errorName)}let t=e.walk(e=>!(e instanceof Error)&&e.code===3);if(!t)return;let{data:n,message:r}=t;return n===`0xd0d5039b`?IL(`error Unauthorized()`):{inputs:[],name:(r??n).split(`(`)[0],type:`error`}}catch{return}},r=HL(e,{calls:t??[]}),i=n(r);if(!(r===e&&!i))throw new nz(Object.assign(r,{abiError:i}))}function ez(e){if(typeof e==`object`&&e){if(Array.isArray(e))return e.map(ez);let t={};for(let n of Object.keys(e).sort())t[n]=ez(e[n]);return t}return e}function tz(e){if(e.name===`$ZodError`)throw GL(e)}var nz=class extends P{constructor(e){super(`An error occurred while executing calls.`,{cause:e,metaMessages:[e.abiError&&`Reason: `+e.abiError.name].filter(Boolean)}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Rpc.ExecutionError`}),Object.defineProperty(this,`abiError`,{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abiError=e.abiError}};const rz={anvil:{http:`http://localhost:9119`},prod:{http:`https://rpc.porto.sh`},stg:{http:`https://stg-rpc.porto.sh`}};function iz(e){return t=>{let n=e.public(t),r=e.relay(t);return Nv({key:iz.type,name:`Relay Proxy`,async request({method:e,params:t},i){return az(e)?r.request({method:e,params:t},i):n.request({method:e,params:t},i)},type:iz.type})}}(function(e){e.type=`relayProxy`})(iz||={});function az(e){return!!(e.startsWith(`wallet_`)||e.startsWith(`account_`)||e===`health`)}pf();var oz=new Map;function sz(e,t={}){let{config:n,id:r,store:i}=e._internal,{chains:a,relay:o}=n,s=i.getState(),c=t.chainId??s.chainIds[0],l=a.find(e=>e.id===c);if(!l)throw Error([`Could not find a compatible Porto chain on the given chain configuration.`,``,`Provided chains: [${a.map(e=>`${e.name} (id: ${e.id})`).join(`, `)}]`,`Needed chain (id): ${c}`,`Please add this chain (id) to your chain configuration.`].join(` +`));let u=iz({public:n.transports[l.id]??Fv(l.rpcUrls.default.http.map(e=>zv(e))),relay:o}),d=[r,df(l)].filter(Boolean).join(`:`);if(oz.has(d))return oz.get(d);let f=Xm({...t,chain:l,pollingInterval:1e3,transport:u});return oz.set(d,f),f}const cz=U({chainId:q(Z()),expiry:Z(),hash:X(),id:X(),prehash:q(wF()),publicKey:X(),role:W([K(`admin`),K(`session`)]),type:W([K(`address`),K(`p256`),K(`secp256k1`),K(`webauthn-p256`)])}),lz=J(H(UL([U({signature:B(),to:Y()}),U({signature:B()}),U({to:Y()})])).check(vF(1))),uz=U({limit:W([iI([V(),`.`,V()]),iI([V()])]).check(yF(/^\d+(\.\d+)?$/)),symbol:q(W([K(`native`),mR]))}),dz=U({addresses:J(H(Y()))}),fz=J(H(U({limit:Q(),period:W([K(`minute`),K(`hour`),K(`day`),K(`week`),K(`month`),K(`year`)]),token:q(Y())}))),pz=U({calls:q(lz),signatureVerification:q(dz),spend:q(fz)}),mz=U({...cz.shape,feeToken:q(ZF(uz)),permissions:q(pz)}),hz=U({address:Y(),chainId:q(Z()),expiry:V(),id:X(),key:zF(cz,{publicKey:!0,type:!0}),permissions:U({calls:lz,signatureVerification:q(dz),spend:q(fz)})}),gz=U({address:q(Y()),chainId:q(Z()),expiry:V().check(_F(1)),feeToken:ZF(uz),key:q(zF(cz,{publicKey:!0,type:!0})),permissions:U({calls:lz,signatureVerification:q(dz),spend:q(fz)})}),_z=hz;function vz(e,t){let{chainId:n,expiry:r,permissions:i,id:a,publicKey:o,type:s}=e,{address:c}=t;return{address:c,chainId:n,expiry:r,id:a,key:{publicKey:o,type:s},permissions:i??{}}}function yz(e){let{chainId:t,expiry:n,key:r}=e;return vL({chainId:t,expiry:n,permissions:e.permissions??{},publicKey:r.publicKey,role:`session`,type:r.type})}var bz;(function(e){e.GetCapabilitiesResponse=U({status:W([K(`supported`),K(`unsupported`)])})})(bz||={});var xz;(function(e){e.Request=W([wF(),U({chainId:q(Z()),label:q(B())})])})(xz||={});var Sz;(function(e){e.Request=UL([U({chainId:q(V()),domain:q(B()),expirationTime:q(IF()),issuedAt:q(IF()),nonce:B(),notBefore:q(IF()),requestId:q(B()),resources:q(J(H(B()))),scheme:q(B()),statement:q(B()),uri:q(B()),version:q(K(`1`))}),U({authUrl:W([B(),U({logout:B(),nonce:B(),verify:B()})]),chainId:q(Z()),domain:q(B()),expirationTime:q(IF()),issuedAt:q(IF()),notBefore:q(IF()),requestId:q(B()),resources:q(J(H(B()))),scheme:q(B()),statement:q(B()),uri:q(B()),version:q(K(`1`))})]),e.Response=U({message:B(),signature:X(),token:q(B())})})(Sz||={});var Cz;(function(e){e.GetCapabilitiesResponse=U({supported:wF(),tokens:J(H(pR))}),e.Request=W([mR,Y()])})(Cz||={});var wz;(function(e){e.Request=gz})(wz||={});var Tz;(function(e){e.GetCapabilitiesResponse=U({supported:wF()})})(Tz||={});var Ez;(function(e){e.GetCapabilitiesResponse=U({supported:wF()}),e.Request=U({id:q(W([X(),AF()]))}),e.Response=J(H(hz))})(Ez||={});var Dz;(function(e){e.Request=J(H(U({context:PF(),signature:X()}))),e.Response=e.Request})(Dz||={});var Oz;(function(e){e.Request=B()})(Oz||={});var kz;(function(e){e.GetCapabilitiesResponse=U({supported:wF(),tokens:J(H(pR))}),e.Request=J(H(UL([U({address:Y(),value:Q()}),U({symbol:mR,value:W([iI([V(),`.`,V()]),iI([V()])]).check(yF(/^\d+(\.\d+)?$/))})])))})(kz||={});var Az=U({...zF(cz,{id:!0,publicKey:!0,type:!0}).shape,credentialId:q(B()),privateKey:q(MF())}),jz;(function(e){e.Parameters=U({address:Y(),secret:B()}),e.Request=U({method:K(`account_getOnrampContactInfo`),params:J(G([e.Parameters]))}),e.Response=U({email:q(B()),phone:q(B()),phoneVerifiedAt:q(V())})})(jz||={});var Mz;(function(e){e.Parameters=U({address:Y()}),e.Request=U({method:K(`account_onrampStatus`),params:J(G([e.Parameters]))}),e.Response=U({email:q(V()),phone:q(V())})})(Mz||={});var Nz;(function(e){e.Parameters=U({email:B(),walletAddress:Y()}),e.Request=U({method:K(`account_resendVerifyPhone`),params:J(G([e.Parameters]))}),e.Response=AF()})(Nz||={});var Pz;(function(e){e.Parameters=U({email:B(),walletAddress:Y()}),e.Request=U({method:K(`account_setEmail`),params:J(G([e.Parameters]))}),e.Response=AF()})(Pz||={});var Fz;(function(e){e.Parameters=U({email:B(),walletAddress:Y()}),e.Request=U({method:K(`account_setPhone`),params:J(G([e.Parameters]))}),e.Response=AF()})(Fz||={});var Iz;(function(e){e.Parameters=U({chainId:Z(),email:B(),token:B(),walletAddress:Y()}),e.Request=U({method:K(`account_verifyEmail`),params:J(G([e.Parameters]))}),e.Response=AF()})(Iz||={});var Lz;(function(e){e.Parameters=U({code:B(),phone:B(),walletAddress:Y()}),e.Request=U({method:K(`account_verifyPhone`),params:J(G([e.Parameters]))}),e.Response=AF()})(Lz||={});var Rz;(function(e){e.Parameters=U({address:q(Y()),chainId:q(Z()),token:q(Y()),value:q(B())}),e.Request=U({method:K(`wallet_addFunds`),params:J(G([e.Parameters]))}),e.Response=U({id:X()})})(Rz||={});var zz;(function(e){e.Request=U({method:K(`eth_accounts`),params:q(PF())}),e.Response=J(H(Y()))})(zz||={});var Bz;(function(e){e.Request=U({method:K(`eth_chainId`),params:q(PF())}),e.Response=X()})(Bz||={});var Vz;(function(e){e.Request=U({method:K(`eth_requestAccounts`),params:q(PF())}),e.Response=J(H(Y()))})(Vz||={});var Hz;(function(e){e.Request=U({method:K(`eth_sendTransaction`),params:J(G([U({capabilities:q(U({feeToken:q(Cz.Request),merchantUrl:q(Oz.Request),preCalls:q(Dz.Request)})),chainId:q(Z()),data:q(X()),from:q(Y()),to:Y(),value:q(Q())})]))}),e.Response=X()})(Hz||={});var Uz;(function(e){e.Request=U({method:K(`eth_signTypedData_v4`),params:J(G([Y(),B()]))}),e.Response=X()})(Uz||={});var Wz;(function(e){e.Parameters=U({address:q(Y()),chainId:q(Z())}),e.Request=U({method:K(`wallet_getAdmins`),params:q(J(G([e.Parameters])))}),e.Key=Az,e.Response=U({address:Y(),chainId:Z(),keys:J(H(e.Key))})})(Wz||={});var Gz;(function(e){e.Capabilities=U({feeToken:q(Cz.Request)}),e.Parameters=U({address:q(Y()),capabilities:q(e.Capabilities),chainId:q(Z()),key:zF(cz,{publicKey:!0,type:!0})}),e.Request=U({method:K(`wallet_grantAdmin`),params:J(G([e.Parameters]))}),e.Response=U({address:Y(),chainId:Z(),key:Wz.Key})})(Gz||={});var Kz;(function(e){e.Parameters=gz,e.Request=U({method:K(`wallet_grantPermissions`),params:J(G([e.Parameters]))}),e.ResponseCapabilities=U({preCalls:q(Dz.Response)}),e.Response=U({...hz.shape,capabilities:q(MF())})})(Kz||={});var qz;(function(e){e.Parameters=U({address:q(Y())}),e.Request=U({method:K(`wallet_getAccountVersion`),params:q(J(G([e.Parameters])))}),e.Response=U({current:B(),latest:B()})})(qz||={});var Jz;(function(e){e.Parameters=U({address:q(Y()),chainIds:q(J(H(Z())))}),e.Request=U({method:K(`wallet_getPermissions`),params:q(J(G([e.Parameters])))}),e.Response=Ez.Response})(Jz||={});var Yz;(function(e){e.Capabilities=U({feeToken:q(Cz.Request)}),e.Parameters=U({address:q(Y()),capabilities:q(e.Capabilities),chainId:q(Z()),id:X()}),e.Request=U({method:K(`wallet_revokeAdmin`),params:J(G([e.Parameters]))}),e.Response=void 0})(Yz||={});var Xz;(function(e){e.Capabilities=U({feeToken:q(Cz.Request)}),e.Parameters=U({address:q(Y()),capabilities:q(e.Capabilities),id:X()}),e.Request=U({method:K(`wallet_revokePermissions`),params:J(G([e.Parameters]))}),e.Response=void 0})(Xz||={});var Zz;(function(e){e.Request=U({method:K(`wallet_switchEthereumChain`),params:J(G([U({chainId:X()})]))})})(Zz||={});var Qz;(function(e){e.Parameters=U({context:PF(),signatures:U({auth:X(),exec:X()})}),e.Request=U({method:K(`wallet_upgradeAccount`),params:J(G([e.Parameters]))}),e.ResponseCapabilities=U({admins:q(J(H(Wz.Key))),permissions:q(Ez.Response)}),e.Response=U({address:Y(),capabilities:q(e.ResponseCapabilities)})})(Qz||={});var $z;(function(e){e.Request=U({method:K(`personal_sign`),params:J(G([X(),Y()]))}),e.Response=X()})($z||={});var eB;(function(e){e.Request=U({method:K(`porto_ping`),params:q(OF())}),e.Response=K(`pong`)})(eB||={});var tB;(function(e){e.Capabilities=U({createAccount:q(xz.Request),email:q(wF()),grantAdmins:q(J(H(zF(cz,{publicKey:!0,type:!0})))),grantPermissions:q(wz.Request),preCalls:q(Dz.Request),selectAccount:q(W([wF(),U({address:Y(),key:q(U({credentialId:q(B()),publicKey:X()}))})])),signInWithEthereum:q(Sz.Request)}),e.Parameters=U({capabilities:q(e.Capabilities),chainIds:q(J(H(Z())))}),e.Request=U({method:K(`wallet_connect`),params:q(J(G([e.Parameters])))}),e.ResponseCapabilities=U({admins:q(J(H(U({...zF(cz,{id:!0,publicKey:!0,type:!0}).shape,credentialId:q(B())})))),permissions:q(Ez.Response),preCalls:q(Dz.Response),signInWithEthereum:q(Sz.Response)}),e.Response=U({accounts:J(H(U({address:Y(),capabilities:q(e.ResponseCapabilities)}))),chainIds:J(H(Z()))})})(tB||={});var nB;(function(e){e.Request=U({method:K(`wallet_disconnect`),params:q(PF())}),e.Response=void 0})(nB||={});var rB;(function(e){e.Parameters=AR.Parameters,e.Request=AR.Request,e.Response=AR.Response})(rB||={});var iB;(function(e){e.Request=U({method:K(`wallet_getCallsStatus`),params:G([X()])}),e.Response=U({atomic:wF(),chainId:Z(),id:B(),receipts:q(J(H(U({blockHash:X(),blockNumber:X(),gasUsed:X(),logs:J(H(U({address:Y(),data:X(),topics:J(H(X()))}))),status:X(),transactionHash:X()})))),status:V(),version:B()})})(iB||={});var aB;(function(e){e.Request=U({method:K(`wallet_getCapabilities`),params:q(W([J(G([W([X(),OF()])])),J(G([W([X(),OF()]),J(H(Z()))]))]))}),e.Response=qF(X(),U({atomic:bz.GetCapabilitiesResponse,feeToken:Cz.GetCapabilitiesResponse,merchant:Tz.GetCapabilitiesResponse,permissions:Ez.GetCapabilitiesResponse,requiredFunds:kz.GetCapabilitiesResponse}))})(aB||={});var oB;(function(e){e.Parameters=U({address:Y(),chainIds:q(J(H(Z())))}),e.Request=U({method:K(`wallet_getKeys`),params:J(G([e.Parameters]))}),e.Response=J(H(mz))})(oB||={});var sB;(function(e){e.Capabilities=U({feeToken:q(Cz.Request),merchantUrl:q(Oz.Request),permissions:q(Ez.Request),preCalls:q(Dz.Request),requiredFunds:q(kz.Request)}),e.Parameters=U({calls:J(H(U({data:q(X()),to:Y(),value:q(Q())}))),capabilities:q(e.Capabilities),chainId:q(Z()),from:q(Y()),key:q(zF(cz,{prehash:!0,publicKey:!0,type:!0})),version:q(B())}),e.Request=U({method:K(`wallet_prepareCalls`),params:J(G([e.Parameters]))}),e.Response=U({capabilities:q(U({...NR.ResponseCapabilities.shape,quote:q(fR)})),chainId:X(),context:U({account:U({address:Y()}),calls:e.Parameters.shape.calls,nonce:Q(),quote:q(VF(fR))}),digest:X(),key:zF(cz,{prehash:!0,publicKey:!0,type:!0}),typedData:U({domain:W([U({chainId:Z(),name:B(),verifyingContract:Y(),version:B()}),U({})]),message:qF(B(),PF()),primaryType:B(),types:qF(B(),PF())})})})(sB||={});var cB;(function(e){e.Capabilities=U({...tB.Capabilities.shape,label:q(B())}),e.Parameters=U({address:Y(),capabilities:q(e.Capabilities),chainId:q(Z())}),e.Request=U({method:K(`wallet_prepareUpgradeAccount`),params:J(G([e.Parameters]))}),e.Response=U({context:PF(),digests:U({auth:X(),exec:X()})})})(cB||={});var lB;(function(e){e.Capabilities=sB.Capabilities,e.Request=U({method:K(`wallet_sendCalls`),params:J(G([BF(sB.Parameters,{key:!0})]))}),e.Response=U({id:X()})})(lB||={});var uB;(function(e){e.Parameters=U({capabilities:sB.Response.shape.capabilities,chainId:X(),context:sB.Response.shape.context,key:sB.Response.shape.key,signature:X()}),e.Request=U({method:K(`wallet_sendPreparedCalls`),params:J(G([e.Parameters]))}),e.Response=J(H(U({capabilities:q(qF(B(),PF())),id:X()})))})(uB||={});var dB;(function(e){e.Parameters=U({address:Y(),chainId:q(Z()),digest:X(),signature:X()}),e.Request=U({method:K(`wallet_verifySignature`),params:J(G([e.Parameters]))}),e.Response=U({address:Y(),chainId:Z(),proof:q(PF()),valid:wF()})})(dB||={});const fB=WF(`method`,[Iz.Request,Rz.Request,zz.Request,Bz.Request,Vz.Request,Hz.Request,Uz.Request,qz.Request,Wz.Request,Jz.Request,Gz.Request,Kz.Request,cB.Request,Yz.Request,Xz.Request,Qz.Request,$z.Request,eB.Request,tB.Request,nB.Request,rB.Request,iB.Request,aB.Request,oB.Request,sB.Request,lB.Request,uB.Request,Zz.Request,dB.Request]);function pB(e,t){let n=dP(e,t);if(n.error){let e=n.error.issues.at(0);throw e?.code===`invalid_union`&&e.note===`No matching discriminator`?new NM:new RM(GL(n.error))}return{...t,_decoded:n.data}}async function mB(e){e.persist.hasHydrated()||await new Promise(t=>{e.persist.onFinishHydration(()=>t(!0)),setTimeout(()=>t(!0),100)})}function hB(e){if(e)return e.startsWith(`/`)?`${window.location.origin}${e}`:e}op(),pf();function gB(e){let{config:t,getMode:n,id:r,store:i}=e,{announceProvider:a}=t;function o(e={}){let a=s(),o=e.request??pB(fB,{method:`wallet_getCapabilities`,params:e.chainIds?[void 0,e.chainIds]:void 0});return Tm(()=>n().actions.getCapabilities({chainIds:e.chainIds,internal:{client:a,config:t,request:o,store:i}}),{cacheKey:`getCapabilities.${r}.${e.chainIds?.join(`,`)}`})}function s(t){let n=typeof t==`string`?Xf(t):t;return sz({_internal:e},{chainId:n})}let c=new Map,l=[],u=tN(),d=nN({...u,async request(e){await mB(i);let r=[`eth_accounts`,`eth_chainId`,`eth_requestAccounts`,`wallet_getAssets`,`wallet_getCapabilities`,`wallet_getKeys`,`wallet_getPermissions`,`wallet_getAccountVersion`,`wallet_connect`].includes(e.method);return gN(async()=>{let r;try{r=pB(fB,e)}catch(t){let n=t;if(!(n instanceof NM))throw n;if(e.method.startsWith(`wallet_`))throw new WM;return s().request(e)}let a=i.getState();switch(r.method){case`account_verifyEmail`:{if(a.accounts.length===0)throw new GM;let[e]=r._decoded.params,{chainId:o,email:c,token:l,walletAddress:u}=e,d=s(o);if(o&&o!==d.chain.id)throw new KM;let f=u?a.accounts.find(e=>ag(e.address,u)):a.accounts[0];if(!f)throw new UM;return await n().actions.verifyEmail({account:f,chainId:o,email:c,internal:{client:d,config:t,request:r,store:i},token:l,walletAddress:u})}case`wallet_addFunds`:{if(a.accounts.length===0)throw new GM;let{address:e,value:o,token:c}=r.params[0]??{},l=e?a.accounts.find(t=>ag(t.address,e)):a.accounts[0];if(!l)throw new UM;let d=s(),f=await n().actions.addFunds({address:l.address,internal:{client:d,config:t,request:r,store:i},token:c,value:o});return u.emit(`message`,{data:null,type:`assetsChanged`}),f}case`eth_accounts`:if(a.accounts.length===0)throw new GM;return a.accounts.map(bB);case`eth_chainId`:return I(a.chainIds[0]);case`eth_requestAccounts`:{if(a.accounts.length>0&&c.get(`eth_requestAccounts`))return a.accounts.map(bB);let e=s(),{accounts:o}=await n().actions.loadAccounts({internal:{client:e,config:t,request:r,store:i}});return i.setState(e=>({...e,accounts:o})),u.emit(`connect`,{chainId:I(e.chain.id)}),c.set(`eth_requestAccounts`,!0),setTimeout(()=>c.delete(`eth_requestAccounts`),1e3),o.map(bB)}case`eth_sendTransaction`:{if(a.accounts.length===0)throw new GM;let[{capabilities:e,chainId:o,data:c=`0x`,from:l,to:u,value:d}]=r._decoded.params,f=s(o);if(o&&o!==f.chain.id)throw new KM;let p=l?a.accounts.find(e=>ag(e.address,l)):a.accounts[0];if(!p)throw new UM;let{id:m}=await n().actions.sendCalls({account:p,asTxHash:!0,calls:[{data:c,to:u,value:d}],chainId:f.chain.id,internal:{client:f,config:t,request:r,store:i},merchantUrl:hB(t.merchantUrl??e?.merchantUrl)});return m}case`eth_signTypedData_v4`:{if(a.accounts.length===0)throw new GM;let[e,o]=r._decoded.params,c=a.accounts.find(t=>ag(t.address,e));if(!c)throw new UM;let l=s();return await n().actions.signTypedData({account:c,data:o,internal:{client:l,config:t,request:r,store:i}})}case`wallet_grantAdmin`:{if(a.accounts.length===0)throw new GM;let[{address:e,capabilities:o,chainId:c,key:l}]=r._decoded.params??[{}],d=e?a.accounts.find(t=>ag(t.address,e)):a.accounts[0];if(!d)throw new UM;let f=s(c);if(vB([...d.keys??[]])?.some(e=>e.publicKey?.toLowerCase()===l.publicKey.toLowerCase()))throw new RM({message:`Key already granted as admin.`});let{key:p}=await n().actions.grantAdmin({account:d,feeToken:o?.feeToken,internal:{client:f,config:t,request:r,store:i},key:l});i.setState(e=>{let t=e.accounts.findIndex(e=>d?ag(e.address,d.address):!0);return t===-1?e:{...e,accounts:e.accounts.map((e,n)=>n===t?{...e,keys:[...e.keys??[],p]}:e)}});let m=vB([...d.keys??[],p]);return u.emit(`message`,{data:null,type:`adminsChanged`}),pP(Gz.Response,{address:d.address,chainId:f.chain.id,key:m.at(-1)})}case`wallet_grantPermissions`:{if(a.accounts.length===0)throw new GM;let[{address:e,chainId:o,...c}]=r._decoded.params??[{}],l=e?a.accounts.find(t=>ag(t.address,e)):a.accounts[0];if(!l)throw new UM;let d=s(o),{key:f}=await n().actions.grantPermissions({account:l,internal:{client:d,config:t,request:r,store:i},permissions:c});return i.setState(e=>{let t=e.accounts.findIndex(e=>l?ag(e.address,l.address):!0);return t===-1?e:{...e,accounts:e.accounts.map((e,n)=>n===t?{...e,keys:[...e.keys??[],f]}:e)}}),u.emit(`message`,{data:null,type:`permissionsChanged`}),pP(Kz.Response,{...vz(f,{address:l.address})})}case`wallet_getAdmins`:{if(a.accounts.length===0)throw new GM;let[{address:e,chainId:o}]=r._decoded.params??[{}],c=e?a.accounts.find(t=>ag(t.address,e)):a.accounts[0];if(!c)throw new UM;let l=s(o),u=await n().actions.getKeys({account:c,internal:{client:l,config:t,request:r,store:i}}),d=vB(u);return pP(Wz.Response,{address:c.address,chainId:l.chain.id,keys:d})}case`wallet_prepareUpgradeAccount`:{let[{address:e,capabilities:a,chainId:o}]=r._decoded.params??[{}],{email:c,label:u,grantPermissions:d}=a??{},f=s(o),{context:p,digests:m}=await n().actions.prepareUpgradeAccount({address:e,email:c,internal:{client:f,config:t,request:r,store:i},label:u,permissions:d});return l.push(p.account),{context:p,digests:m}}case`wallet_getAccountVersion`:{if(a.accounts.length===0)throw new GM;let[{address:e}]=r._decoded.params??[{}],o=e?a.accounts.find(t=>ag(t.address,e)):a.accounts[0];if(!o)throw new UM;let c=s(),{current:l,latest:u}=await n().actions.getAccountVersion({address:o.address,internal:{client:c,config:t,request:r,store:i}});return{current:l,latest:u}}case`wallet_getKeys`:{if(a.accounts.length===0)throw new GM;let[{address:e,chainIds:o}]=r._decoded.params??[{}],c=a.accounts.find(t=>ag(t.address,e));if(!c)throw new UM;let l=s(),u=await n().actions.getKeys({account:c,chainIds:o,internal:{client:l,config:t,request:r,store:i}});return pP(oB.Response,u)}case`wallet_getPermissions`:{if(a.accounts.length===0)throw new GM;let[{address:e,chainIds:o}]=r._decoded.params??[{}],c=e?a.accounts.find(t=>ag(t.address,e)):a.accounts[0];if(!c)throw new UM;let l=s(),u=await n().actions.getKeys({account:c,chainIds:o,internal:{client:l,config:t,request:r,store:i}});return yB(u,{address:c.address})}case`wallet_revokeAdmin`:{if(a.accounts.length===0)throw new GM;let[{address:e,capabilities:o,id:c}]=r._decoded.params,l=e?a.accounts.find(t=>ag(t.address,e)):a.accounts[0];if(!l)throw new UM;let d=s();await n().actions.revokeAdmin({account:l,feeToken:o?.feeToken,id:c,internal:{client:d,config:t,request:r,store:i}});let f=l.keys?.filter(e=>e.id.toLowerCase()!==c.toLowerCase());i.setState(e=>({...e,accounts:e.accounts.map(e=>ag(e.address,l.address)?{...e,keys:f}:e)})),u.emit(`message`,{data:null,type:`adminsChanged`});return}case`wallet_revokePermissions`:{if(a.accounts.length===0)throw new GM;let[{address:e,capabilities:o,id:c}]=r._decoded.params,l=e?a.accounts.find(t=>ag(t.address,e)):a.accounts[0];if(!l)throw new UM;let d=s();await n().actions.revokePermissions({account:l,feeToken:o?.feeToken,id:c,internal:{client:d,config:t,request:r,store:i}});let f=l.keys?.filter(e=>e.id.toLowerCase()!==c.toLowerCase());i.setState(e=>({...e,accounts:e.accounts.map(e=>ag(e.address,l.address)?{...e,keys:f}:e)})),u.emit(`message`,{data:null,type:`permissionsChanged`});return}case`wallet_upgradeAccount`:{let[{context:e,signatures:a}]=r._decoded.params??[{}],o=s(),c=l.find(t=>ag(t.address,e.account.address));if(!c)throw new UM;let{account:d}=await n().actions.upgradeAccount({account:c,context:e,internal:{client:o,config:t,request:r,store:i},signatures:a}),f=vB(d.keys??[]),p=yB(d.keys??[],{address:d.address});return i.setState(e=>({...e,accounts:[d]})),u.emit(`connect`,{chainId:I(o.chain.id)}),{address:d.address,capabilities:{admins:f,...p.length>0?{permissions:p}:{}}}}case`porto_ping`:return`pong`;case`personal_sign`:{if(a.accounts.length===0)throw new GM;let[e,o]=r._decoded.params,c=a.accounts.find(e=>ag(e.address,o));if(!c)throw new UM;let l=s();return await n().actions.signPersonalMessage({account:c,data:e,internal:{client:l,config:t,request:r,store:i}})}case`wallet_connect`:{let[{capabilities:e,chainIds:o}]=r._decoded.params??[{}],c=s(o?.[0]),l=c.chain.id,{createAccount:d,email:f,grantAdmins:p,grantPermissions:m,selectAccount:h,signInWithEthereum:g}=e??{},_={client:c,config:t,request:r,store:i},{accounts:v}=await(async()=>{if(f||d){let{label:e=void 0}=typeof d==`object`?d:{},{account:t}=await n().actions.createAccount({admins:p,email:f,internal:_,label:e,permissions:m,signInWithEthereum:g});return{accounts:[t]}}let e=a.accounts[0],{address:t,key:r}=(()=>{if(h)return typeof h==`object`?h:{address:void 0,key:void 0};for(let t of e?.keys??[])if(t.type===`webauthn-p256`&&t.role===`admin`)return{address:e?.address,key:{credentialId:t.credentialId??t.privateKey?.credential?.id,publicKey:t.publicKey}};return{address:void 0,key:void 0}})(),i={internal:_,permissions:m,signInWithEthereum:g};try{return await n().actions.loadAccounts({address:t,key:r,...i})}catch(e){if(e instanceof HM)throw e;if(t&&r)return await n().actions.loadAccounts(i);throw e}})();i.setState(e=>({...e,accounts:v}));let y=[l,...i.getState().chainIds.filter(e=>e!==l)];return u.emit(`connect`,{chainId:I(y[0])}),{accounts:v.map(e=>({address:bB(e),capabilities:{admins:e.keys?vB(e.keys):[],permissions:e.keys?yB(e.keys,{address:e.address}):[],...e.signInWithEthereum&&{signInWithEthereum:e.signInWithEthereum}}})),chainIds:y.map(e=>I(e))}}case`wallet_disconnect`:{let e=s();await n().actions.disconnect?.({internal:{client:e,config:t,request:r,store:i}}),i.setState(e=>({...e,accounts:[]})),u.emit(`disconnect`,new GM);return}case`wallet_getAssets`:{let[e]=r._decoded.params??[],{account:a,chainFilter:o,assetFilter:c,assetTypeFilter:l}=e,u=s(),d=await n().actions.getAssets({account:a,assetFilter:c,assetTypeFilter:l,chainFilter:o,internal:{client:u,config:t,request:r,store:i}}),f=Object.entries(d).reduce((e,[t,n])=>(e[I(Number(t))]=n,e),{});return pP(rB.Response,f)}case`wallet_getCallsStatus`:{let[e]=r._decoded.params??[],a=s();return await n().actions.getCallsStatus({id:e,internal:{client:a,config:t,request:r,store:i}})}case`wallet_getCapabilities`:{let[e,t]=r.params??[];return await o({chainIds:t,request:r})}case`wallet_prepareCalls`:{let[e]=r._decoded.params,{calls:o,capabilities:c,chainId:l,key:u,from:d}=e,f=s(l),p=d??a.accounts[0];if(!p)throw new UM;if(l&&l!==f.chain.id)throw new KM;let{digest:m,...h}=await n().actions.prepareCalls({account:ML(p),calls:o,feeToken:c?.feeToken,internal:{client:f,config:t,request:r,store:i},key:u,merchantUrl:hB(t.merchantUrl??c?.merchantUrl),requiredFunds:c?.requiredFunds});return pP(sB.Response,{capabilities:h.capabilities,chainId:I(h.chainId??f.chain.id),context:{...h.context,account:{address:h.account.address},calls:h.context.calls??[],nonce:h.context.nonce??0n},digest:m,key:h.key,typedData:h.typedData})}case`wallet_sendPreparedCalls`:{let[e]=r._decoded.params,{chainId:a,context:o,key:c,signature:l}=e,{account:u}=e.context,d=s(a);if(a&&Xf(a)!==d.chain.id)throw new KM;return[{id:await n().actions.sendPreparedCalls({account:ML(u),context:o,internal:{client:d,config:t,request:r,store:i},key:c,signature:l})}]}case`wallet_sendCalls`:{if(a.accounts.length===0)throw new GM;let[e]=r._decoded.params,{calls:o,capabilities:c,chainId:l,from:u}=e,d=s(l);if(l&&l!==d.chain.id)throw new KM;let f=u?a.accounts.find(e=>ag(e.address,u)):a.accounts[0];if(!f)throw new UM;let{id:p}=await n().actions.sendCalls({account:f,calls:o,chainId:d.chain.id,feeToken:c?.feeToken,internal:{client:d,config:t,request:r,store:i},merchantUrl:hB(t.merchantUrl??c?.merchantUrl),permissionsId:c?.permissions?.id,requiredFunds:c?.requiredFunds});return{id:p}}case`wallet_switchEthereumChain`:{let[e]=r._decoded.params,{chainId:a}=e,o=Xf(a);if(!t.chains.find(e=>e.id===o))throw new YM;let c=s(a);await n().actions.switchChain?.({chainId:c.chain.id,internal:{client:c,config:t,request:r,store:i}}),i.setState(e=>({...e,chainIds:[o,...e.chainIds.filter(e=>e!==o)]}));return}case`wallet_verifySignature`:{let[e]=r._decoded.params,{address:t,chainId:n,digest:i,signature:a}=e,o=s(n);return{...await QR(o,{address:t,digest:i,signature:a}),address:t,chainId:I(o.chain.id)}}}},{enabled:r,id:df(e)})}});function f(){let e=()=>{},t=()=>{};mB(i).then(()=>{o().catch(()=>{}),e(),e=i.subscribe(e=>e.accounts,e=>{u.emit(`accountsChanged`,e.map(bB))},{equalityFn:(e,t)=>e.every((e,n)=>e.address===t[n]?.address)}),t(),t=i.subscribe(e=>e.chainIds[0],(e,t)=>{e!==t&&u.emit(`chainChanged`,I(e))})});let n=_B(d,a);return()=>{e(),t(),n()}}let p=f();return Object.assign(d,{_internal:{destroy:p}})}function _B(e,t){if(!t||typeof window>`u`||!window.dispatchEvent)return()=>{};let{icon:n=`data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIyIiBoZWlnaHQ9IjQyMiIgdmlld0JveD0iMCAwIDQyMiA0MjIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI0MjIiIGhlaWdodD0iNDIyIiBmaWxsPSJibGFjayIvPgo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMV8xNSkiPgo8cGF0aCBkPSJNODEgMjg2LjM2NkM4MSAyODAuODkzIDg1LjQ1MDUgMjc2LjQ1NSA5MC45NDA0IDI3Ni40NTVIMzI5LjUxMUMzMzUuMDAxIDI3Ni40NTUgMzM5LjQ1MiAyODAuODkzIDMzOS40NTIgMjg2LjM2NlYzMDYuMTg4QzMzOS40NTIgMzExLjY2MiAzMzUuMDAxIDMxNi4wOTkgMzI5LjUxMSAzMTYuMDk5SDkwLjk0MDRDODUuNDUwNSAzMTYuMDk5IDgxIDMxMS42NjIgODEgMzA2LjE4OFYyODYuMzY2WiIgZmlsbD0id2hpdGUiIGZpbGwtb3BhY2l0eT0iMC41Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTAuOTQwNCAyMzQuODI4Qzg1LjQ1MDUgMjM0LjgyOCA4MSAyMzkuMjY2IDgxIDI0NC43MzlWMjcxLjUzMUM4My44NDMyIDI2OS42MzMgODcuMjYyMiAyNjguNTI2IDkwLjk0MDQgMjY4LjUyNkgzMjkuNTExQzMzMy4xODggMjY4LjUyNiAzMzYuNjA4IDI2OS42MzMgMzM5LjQ1MiAyNzEuNTMxVjI0NC43MzlDMzM5LjQ1MiAyMzkuMjY2IDMzNS4wMDEgMjM0LjgyOCAzMjkuNTExIDIzNC44MjhIOTAuOTQwNFpNMzM5LjQ1MiAyODYuMzY2QzMzOS40NTIgMjgwLjg5MyAzMzUuMDAxIDI3Ni40NTUgMzI5LjUxMSAyNzYuNDU1SDkwLjk0MDRDODUuNDUwNSAyNzYuNDU1IDgxIDI4MC44OTMgODEgMjg2LjM2NlYzMDYuMTlDODEgMzExLjY2NCA4NS40NTA1IDMxNi4xMDEgOTAuOTQwNCAzMTYuMTAxSDMyOS41MTFDMzM1LjAwMSAzMTYuMTAxIDMzOS40NTIgMzExLjY2NCAzMzkuNDUyIDMwNi4xOVYyODYuMzY2WiIgZmlsbD0id2hpdGUiIGZpbGwtb3BhY2l0eT0iMC41Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTAuOTQwNCAxOTMuMjAxQzg1LjQ1MDUgMTkzLjIwMSA4MSAxOTcuNjM4IDgxIDIwMy4xMTJWMjI5LjkwM0M4My44NDMyIDIyOC4wMDYgODcuMjYyMiAyMjYuODk5IDkwLjk0MDQgMjI2Ljg5OUgzMjkuNTExQzMzMy4xODggMjI2Ljg5OSAzMzYuNjA4IDIyOC4wMDYgMzM5LjQ1MiAyMjkuOTAzVjIwMy4xMTJDMzM5LjQ1MiAxOTcuNjM4IDMzNS4wMDEgMTkzLjIwMSAzMjkuNTExIDE5My4yMDFIOTAuOTQwNFpNMzM5LjQ1MiAyNDQuNzM5QzMzOS40NTIgMjM5LjI2NSAzMzUuMDAxIDIzNC44MjggMzI5LjUxMSAyMzQuODI4SDkwLjk0MDRDODUuNDUwNSAyMzQuODI4IDgxIDIzOS4yNjUgODEgMjQ0LjczOVYyNzEuNTNDODEuMjE3NSAyNzEuMzg1IDgxLjQzODMgMjcxLjI0NSA4MS42NjI0IDI3MS4xMDlDODMuODMyNSAyNjkuNzk0IDg2LjMwNTQgMjY4LjkyNyA4OC45NTIzIDI2OC42MzVDODkuNjA1MSAyNjguNTYzIDkwLjI2ODQgMjY4LjUyNiA5MC45NDA0IDI2OC41MjZIMzI5LjUxMUMzMzAuMTgzIDI2OC41MjYgMzMwLjg0NiAyNjguNTYzIDMzMS40OTggMjY4LjYzNUMzMzQuNDE5IDI2OC45NTcgMzM3LjEyOCAyNjkuOTggMzM5LjQ1MiAyNzEuNTNWMjQ0LjczOVpNMzM5LjQ1MiAyODYuMzY2QzMzOS40NTIgMjgxLjAyMSAzMzUuMjA2IDI3Ni42NjMgMzI5Ljg5MyAyNzYuNDYyQzMyOS43NjcgMjc2LjQ1NyAzMjkuNjQgMjc2LjQ1NSAzMjkuNTExIDI3Ni40NTVIOTAuOTQwNEM4NS40NTA1IDI3Ni40NTUgODEgMjgwLjg5MyA4MSAyODYuMzY2VjMwNi4xODhDODEgMzExLjY2MiA4NS40NTA1IDMxNi4xMDEgOTAuOTQwNCAzMTYuMTAxSDMyOS41MTFDMzM1LjAwMSAzMTYuMTAxIDMzOS40NTIgMzExLjY2MiAzMzkuNDUyIDMwNi4xODhWMjg2LjM2NloiIGZpbGw9IndoaXRlIiBmaWxsLW9wYWNpdHk9IjAuNSIvPgo8cGF0aCBvcGFjaXR5PSIwLjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOTguMDE0NiAxMDRDODguNjE3NyAxMDQgODEgMTExLjU5NSA4MSAxMjAuOTY1VjE4OC4yNzZDODMuODQzMiAxODYuMzc5IDg3LjI2MjIgMTg1LjI3MiA5MC45NDA0IDE4NS4yNzJIMzI5LjUxMUMzMzMuMTg4IDE4NS4yNzIgMzM2LjYwOCAxODYuMzc5IDMzOS40NTIgMTg4LjI3NlYxMjAuOTY1QzMzOS40NTIgMTExLjU5NSAzMzEuODMzIDEwNCAzMjIuNDM3IDEwNEg5OC4wMTQ2Wk0zMzkuNDUyIDIwMy4xMTJDMzM5LjQ1MiAxOTcuNjM4IDMzNS4wMDEgMTkzLjIwMSAzMjkuNTExIDE5My4yMDFIOTAuOTQwNEM4NS40NTA1IDE5My4yMDEgODEgMTk3LjYzOCA4MSAyMDMuMTEyVjIyOS45MDNDODEuMjE3NSAyMjkuNzU4IDgxLjQzODMgMjI5LjYxOCA4MS42NjI0IDIyOS40ODJDODMuODMyNSAyMjguMTY3IDg2LjMwNTQgMjI3LjMgODguOTUyMyAyMjcuMDA4Qzg5LjYwNTEgMjI2LjkzNiA5MC4yNjg0IDIyNi44OTkgOTAuOTQwNCAyMjYuODk5SDMyOS41MTFDMzMwLjE4MyAyMjYuODk5IDMzMC44NDYgMjI2LjkzNiAzMzEuNDk4IDIyNy4wMDhDMzM0LjQxOSAyMjcuMzMgMzM3LjEyOCAyMjguMzUyIDMzOS40NTIgMjI5LjkwM1YyMDMuMTEyWk0zMzkuNDUyIDI0NC43MzlDMzM5LjQ1MiAyMzkuMzkzIDMzNS4yMDYgMjM1LjAzNiAzMjkuODkzIDIzNC44MzVDMzI5Ljc2NyAyMzQuODMgMzI5LjY0IDIzNC44MjggMzI5LjUxMSAyMzQuODI4SDkwLjk0MDRDODUuNDUwNSAyMzQuODI4IDgxIDIzOS4yNjUgODEgMjQ0LjczOVYyNzEuNTNMODEuMDcwNyAyNzEuNDgzQzgxLjI2NTMgMjcxLjM1NSA4MS40NjI1IDI3MS4yMyA4MS42NjI0IDI3MS4xMDlDODEuOTA4MyAyNzAuOTYgODIuMTU4MSAyNzAuODE3IDgyLjQxMTcgMjcwLjY3OUM4NC4zOTUzIDI2OS42MDUgODYuNjA1NCAyNjguODk0IDg4Ljk1MjMgMjY4LjYzNUM4OS4wMDUyIDI2OC42MjkgODkuMDU4IDI2OC42MjQgODkuMTExIDI2OC42MThDODkuNzEyNSAyNjguNTU3IDkwLjMyMjggMjY4LjUyNiA5MC45NDA0IDI2OC41MjZIMzI5LjUxMUMzMjkuNzM4IDI2OC41MjYgMzI5Ljk2NSAyNjguNTMgMzMwLjE5MiAyNjguNTM5QzMzMC42MzEgMjY4LjU1NSAzMzEuMDY3IDI2OC41ODcgMzMxLjQ5OCAyNjguNjM1QzMzNC40MTkgMjY4Ljk1NyAzMzcuMTI4IDI2OS45OCAzMzkuNDUyIDI3MS41M1YyNDQuNzM5Wk0zMzkuNDUyIDI4Ni4zNjZDMzM5LjQ1MiAyODEuMDIxIDMzNS4yMDYgMjc2LjY2MyAzMjkuODkzIDI3Ni40NjJMMzI5Ljg2NSAyNzYuNDYxQzMyOS43NDggMjc2LjQ1NyAzMjkuNjI5IDI3Ni40NTUgMzI5LjUxMSAyNzYuNDU1SDkwLjk0MDRDODUuNDUwNSAyNzYuNDU1IDgxIDI4MC44OTMgODEgMjg2LjM2NlYzMDYuMTg4QzgxIDMxMS42NjIgODUuNDUwNSAzMTYuMTAxIDkwLjk0MDQgMzE2LjEwMUgzMjkuNTExQzMzNS4wMDEgMzE2LjEwMSAzMzkuNDUyIDMxMS42NjIgMzM5LjQ1MiAzMDYuMTg4VjI4Ni4zNjZaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjY5Ljg2OCAxMzEuNzUyQzI2OS44NjggMTI2LjI3OCAyNzQuMzE4IDEyMS44NCAyNzkuODA4IDEyMS44NEgzMTEuNjE4QzMxNy4xMDggMTIxLjg0IDMyMS41NTggMTI2LjI3OCAzMjEuNTU4IDEzMS43NTJWMTYxLjQ4NUMzMjEuNTU4IDE2Ni45NTkgMzE3LjEwOCAxNzEuMzk2IDMxMS42MTggMTcxLjM5NkgyNzkuODA4QzI3NC4zMTggMTcxLjM5NiAyNjkuODY4IDE2Ni45NTkgMjY5Ljg2OCAxNjEuNDg1VjEzMS43NTJaIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzFfMTUiPgo8cmVjdCB3aWR0aD0iMjU5IiBoZWlnaHQ9IjIxMyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgxIDEwNCkiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K`,name:r=`Porto`,rdns:i=`xyz.ithaca.porto`}=typeof t==`object`?t:{};return jN({info:{icon:n,name:r,rdns:i,uuid:hN()},provider:e})}function vB(e){return e.map(e=>{if(e.role===`admin`)try{return pP(Wz.Key,{id:e.id??e.publicKey,publicKey:e.publicKey,type:e.type,...e.type===`webauthn-p256`?{credentialId:e.privateKey?.credential?.id,privateKey:{credential:{id:e.privateKey?.credential?.id},rpId:e.privateKey?.rpId}}:{}})}catch{return}}).filter(Boolean)}function yB(e,{address:t}){return e.map(e=>{if(e.chainId&&e.role===`session`&&!(e.expiry>0&&e.expiry()=>{})}}async function SB(e){let{account:t,calls:n,permissionsId:r}=e;if(r!==void 0){if(r===null)return;let e=t.keys?.find(e=>e.publicKey===r&&e.privateKey);if(!e)throw Error(`permission (id: ${r}) does not exist.`);return e}let i=t.keys?.find(e=>!e.privateKey||e.role!==`session`||e.expirye.permissions?.calls?.some(e=>{if(e.to&&e.to!==t.to)return!1;if(e.signature){if(!t.data)return!1;let n=Kf(t.data,0,4);if(Zf(e.signature))return e.signature===n;if(W_(e.signature)!==n)return!1}return!0}))),a=t.keys?.find(e=>e.role===`admin`&&e.privateKey);return i??a}function CB(e={}){let t=e.id??0;return{prepare(e){return wB({id:t++,...e})},get id(){return t}}}function wB(e){return{...e,jsonrpc:`2.0`}}function TB(){return null}const EB=gz;function DB(e){let{expiry:t,feeToken:n,permissions:r,publicKey:i,type:a}=e;return{expiry:t,feeToken:n??null,key:{publicKey:i,type:a},permissions:r??{}}}async function OB(e,t={}){if(!e)return;let n=t.chainId??e.chainId,r=e.expiry??0,i=e.feeToken,a=OL(e,{feeTokens:t.feeTokens}),o={chainId:n,expiry:r,feeToken:i,permissions:a,role:`session`};if(e?.key)return vL({...o,publicKey:e.key.publicKey,type:e.key.type??`secp256k1`});if(typeof globalThis.crypto?.subtle?.generateKey==`function`)try{return await _L(o)}catch(e){if(!kB(e))throw e}return mL(o)}function kB(e){if(!(e instanceof Error))return!1;let t=e.message?.toLowerCase()??``;return e.name===`TypeError`||e.name===`ReferenceError`||t.includes(`subtle`)||t.includes(`generatekey`)}Jd();const AB=/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(:[0-9]{1,5})?$/,jB=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:[0-9]{1,5})?$/,MB=/^localhost(:[0-9]{1,5})?$/,NB=/^[a-zA-Z0-9]{8,}$/,PB=/^([a-zA-Z][a-zA-Z0-9+-.]*)$/,FB=/^(?:(?[a-zA-Z][a-zA-Z0-9+-.]*):\/\/)?(?[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\n)(?
0x[a-fA-F0-9]{40})\n\n(?:(?.*)\n\n)?/,IB=/(?:URI: (?.+))\n(?:Version: (?.+))\n(?:Chain ID: (?\d+))\n(?:Nonce: (?[a-zA-Z0-9]+))\n(?:Issued At: (?.+))(?:\nExpiration Time: (?.+))?(?:\nNot Before: (?.+))?(?:\nRequest ID: (?.+))?/;function LB(e){let{chainId:t,domain:n,expirationTime:r,issuedAt:i=new Date,nonce:a,notBefore:o,requestId:s,resources:c,scheme:l,uri:u,version:d}=e;{if(t!==Math.floor(t))throw new VB({field:`chainId`,metaMessages:[`- Chain ID must be a EIP-155 chain ID.`,`- See https://eips.ethereum.org/EIPS/eip-155`,``,`Provided value: ${t}`]});if(!(AB.test(n)||jB.test(n)||MB.test(n)))throw new VB({field:`domain`,metaMessages:[`- Domain must be an RFC 3986 authority.`,`- See https://www.rfc-editor.org/rfc/rfc3986`,``,`Provided value: ${n}`]});if(!NB.test(a))throw new VB({field:`nonce`,metaMessages:[`- Nonce must be at least 8 characters.`,`- Nonce must be alphanumeric.`,``,`Provided value: ${a}`]});if(!RB(u))throw new VB({field:`uri`,metaMessages:[`- URI must be a RFC 3986 URI referring to the resource that is the subject of the signing.`,`- See https://www.rfc-editor.org/rfc/rfc3986`,``,`Provided value: ${u}`]});if(d!==`1`)throw new VB({field:`version`,metaMessages:[`- Version must be '1'.`,``,`Provided value: ${d}`]});if(l&&!PB.test(l))throw new VB({field:`scheme`,metaMessages:[`- Scheme must be an RFC 3986 URI scheme.`,`- See https://www.rfc-editor.org/rfc/rfc3986#section-3.1`,``,`Provided value: ${l}`]});let r=e.statement;if(r?.includes(` +`))throw new VB({field:`statement`,metaMessages:[`- Statement must not include '\\n'.`,``,`Provided value: ${r}`]})}let f=rg(e.address,{checksum:!0}),p=(()=>l?`${l}://${n}`:n)(),m=(()=>e.statement?`${e.statement}\n`:``)(),h=`${p} wants you to sign in with your Ethereum account:\n${f}\n\n${m}`,g=`URI: ${u}\nVersion: ${d}\nChain ID: ${t}\nNonce: ${a}\nIssued At: ${i.toISOString()}`;if(r&&(g+=`\nExpiration Time: ${r.toISOString()}`),o&&(g+=`\nNot Before: ${o.toISOString()}`),s&&(g+=`\nRequest ID: ${s}`),c){let e=` +Resources:`;for(let t of c){if(!RB(t))throw new VB({field:`resources`,metaMessages:[`- Every resource must be a RFC 3986 URI.`,`- See https://www.rfc-editor.org/rfc/rfc3986`,``,`Provided value: ${t}`]});e+=`\n- ${t}`}g+=e}return`${h}\n${g}`}function RB(e){if(/[^a-z0-9:/?#[\]@!$&'()*+,;=.\-_~%]/i.test(e)||/%[^0-9a-f]/i.test(e)||/%[0-9a-f](:?[^0-9a-f]|$)/i.test(e))return!1;let t=zB(e),n=t[1],r=t[2],i=t[3],a=t[4],o=t[5];if(!(n?.length&&i&&i.length>=0))return!1;if(r?.length){if(!(i.length===0||/^\//.test(i)))return!1}else if(/^\/\//.test(i))return!1;if(!/^[a-z][a-z0-9+\-.]*$/.test(n.toLowerCase()))return!1;let s=``;return s+=`${n}:`,r?.length&&(s+=`//${r}`),s+=i,a?.length&&(s+=`?${a}`),o?.length&&(s+=`#${o}`),s}function zB(e){return e.match(/(?:([^:/?#]+):)?(?:\/\/([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/)}function BB(e){let{scheme:t,statement:n,...r}=e.match(FB)?.groups??{},{chainId:i,expirationTime:a,issuedAt:o,notBefore:s,requestId:c,...l}=e.match(IB)?.groups??{},u=e.split(`Resources:`)[1]?.split(` +- `).slice(1);return{...r,...l,...i?{chainId:Number(i)}:{},...a?{expirationTime:new Date(a)}:{},...o?{issuedAt:new Date(o)}:{},...s?{notBefore:new Date(s)}:{},...c?{requestId:c}:{},...u?{resources:u}:{},...t?{scheme:t}:{},...n?{statement:n}:{}}}var VB=class extends P{constructor(e){let{field:t,metaMessages:n}=e;super(`Invalid Sign-In with Ethereum message field "${t}".`,{metaMessages:n}),Object.defineProperty(this,`name`,{enumerable:!0,configurable:!0,writable:!0,value:`Siwe.InvalidMessageFieldError`})}};async function HB(e){let{address:t,authUrl:n,message:r,signature:i,publicKey:a}=e,{chainId:o}=BB(r);return await fetch(n.verify,{body:JSON.stringify({address:t,chainId:o,message:r,signature:i,walletAddress:t,...a&&{publicKey:a}}),credentials:`include`,headers:{"Content-Type":`application/json`},method:`POST`}).then(e=>e.json())}async function UB(e,t,n){let{chainId:r=e.chain?.id,domain:i,uri:a,resources:o,version:s=`1`}=t,{address:c}=n,l=t.authUrl?WB(t.authUrl):void 0;if(!r)throw Error("`chainId` is required.");if(!i)throw Error("`domain` is required.");if(!t.nonce&&!l?.nonce)throw Error("`nonce` or `authUrl.nonce` is required.");if(!a)throw Error("`uri` is required.");let u=await(async()=>{if(t.nonce)return t.nonce;if(!l?.nonce)throw Error("`nonce` or `authUrl.nonce` is required.");let e=await(await fetch(l.nonce,{body:JSON.stringify({address:c,chainId:r,walletAddress:c}),headers:{"Content-Type":`application/json`},method:`POST`})).json().catch(()=>void 0);if(!e?.nonce)throw Error("`nonce` or `authUrl.nonce` is required.");return e.nonce})();return LB({...t,address:n.address,chainId:r,domain:i,nonce:u,resources:o,uri:a,version:s})}function WB(e,t=``){if(!e)return;let n=(()=>{if(typeof e==`string`){let t=e.replace(/\/$/,``);return{logout:t+`/logout`,nonce:t+`/nonce`,verify:t+`/verify`}}return e})();return{logout:GB(n.logout,t),nonce:GB(n.nonce,t),verify:GB(n.verify,t)}}function GB(e,t){return!t||!e.startsWith(`/`)?e:t+e}op();function KB(e){let t=Bf(e);return zf(`0x19`,Uf(`Ethereum Signed Message: +`+qf(t)),t)}function qB(e){return Hh(KB(e))}async function JB(e,t){let{account:n=e.account}=t,r=n?ML(n):void 0;if(!r)throw Error(`account is required.`);let{domain:{name:i,version:a}}=await $m(e,{address:r.address});if(!e.chain)throw Error(`client.chain is required`);return{chainId:e.chain.id,name:i,verifyingContract:r.address,version:a}}async function YB(e,t){let{account:n=e.account,chainIds:r}=t,i=n?ML(n):void 0;if(!i)throw Error(`account is required.`);let a=await UR(e,{address:i.address,chainIds:r});return Object.entries(a).flatMap(([e,t])=>t.map(t=>bL(t,{chainId:Number(e)})))}async function XB(e,t){let{account:n=e.account,calls:r,chain:i=e.chain,feePayer:a,merchantUrl:o,nonce:s,preCalls:c,requiredFunds:l,revokeKeys:u}=t,d=n?ML(n):void 0,f=t.key??(d?PL(d,{role:`admin`}):void 0),p=t.authorizeKeys?.some(e=>e.role===`session`),{contracts:m,fees:{tokens:h}}=await BR(e,{chainId:i?.id}),g=p?m.orchestrator.address:void 0,_=(t.authorizeKeys??[]).map(e=>DL(e,{feeTokens:h,orchestrator:g})),v=(()=>t.feeToken?t.feeToken:f?.permissions?.spend?.[0]?.token)(),y=typeof c==`boolean`?c:!1,b=typeof c==`object`?c.map(({context:e,signature:t})=>({...e.preCall,signature:t})):void 0,x={address:d?.address,calls:r??[],capabilities:{authorizeKeys:_,meta:{feePayer:a,feeToken:v,nonce:s},preCall:y,preCalls:b,requiredFunds:l,revokeKeys:u?.map(e=>({hash:e.hash}))},chain:i,key:f?DL(f,{feeTokens:h}):void 0},S=await(async()=>{if(o){let t=Xm({chain:e.chain,transport:zv(o)});return await GR(t,x).catch(t=>(console.error(t),GR(e,x)))}return await GR(e,x)})(),{capabilities:C,context:w,digest:ee,signature:te,typedData:ne}=S;if(o&&!await ZR(e,{response:S._raw,signature:te}))throw Error(`cannot verify integrity of \`wallet_prepareCalls\` response from ${o}`);return{capabilities:{...C,quote:w.quote},context:w,digest:ee,key:f,typedData:ne}}async function ZB(e,t){let{address:n,authorizeKeys:r,chain:i=e.chain}=t;if(!i)throw Error(`chain is required.`);let{contracts:a,fees:{tokens:o}}=await BR(e,{chainId:i.id}),s=t.delegation??a.accountProxy.address,c=r.some(e=>e.role===`session`)?a.orchestrator.address:void 0,l=r.map(e=>{let t=e.role===`session`?e.permissions:{};return DL({...e,permissions:t},{feeTokens:o,orchestrator:c})}),{capabilities:u,chainId:d,context:f,digests:p,typedData:m}=await KR(e,{address:n,authorizeKeys:l,chain:i,delegation:s}),h=ML({address:n,keys:r});return{capabilities:u,chainId:d,context:{...f,account:h},digests:p,typedData:m}}async function QB(e,t){let{account:n=e.account,chain:r=e.chain,webAuthn:i}=t;if(!r)throw Error("`chain` is required.");let a=n?ML(n):void 0;if(!a)throw Error("`account` is required.");let o=t.key??PL(a,t);if(!o&&!a.sign)throw Error("`key` or `account` with `sign` is required");let s=await Promise.all((t.preCalls??[]).map(async n=>{if(n.signature)return n;let{authorizeKeys:o,key:s,calls:c,revokeKeys:l}=n,{context:u,digest:d}=await XB(e,{account:a,authorizeKeys:o,calls:c,chain:r,feeToken:t.feeToken,key:s,preCalls:!0,revokeKeys:l}),f=await EL(s,{address:null,payload:d,webAuthn:i});return{context:u,signature:f}})),{capabilities:c,context:l,digest:u}=await XB(e,{...t,account:a,chain:r,key:o,preCalls:s}),d=await(async()=>o?await EL(o,{address:null,payload:u,webAuthn:i,wrap:!1}):await a.sign({hash:u}))();return await $B(e,{capabilities:c.feeSignature?{feeSignature:c.feeSignature}:void 0,context:l,key:o,signature:d})}async function $B(e,t){let{capabilities:n,context:r,key:i,signature:a}=t;return await qR(e,{capabilities:n,context:r,key:i?DL(i):void 0,signature:a})}async function eV(e,t){let{email:n,walletAddress:r}=t;return await JR(e,{email:n,walletAddress:r})}async function tV(e,t){if(t.account){let{account:n}=t,r=[...n.keys??[],...t.authorizeKeys??[]].filter((e,t,n)=>n.findIndex(t=>t.id===e.id)===t),{digests:i,...a}=await ZB(e,{...t,address:n.address,authorizeKeys:r}),o={auth:await n.sign({hash:i.auth}),exec:await n.sign({hash:i.exec})};return await tV(e,{...a,signatures:o})}let{context:n,signatures:r}=t,i=ML(n.account);return await YR(e,{context:n,signatures:r}),i}async function nV(e,t){let{chainId:n,email:r,signature:i,token:a,walletAddress:o}=t;return await XR(e,{chainId:n,email:r,signature:i,token:a,walletAddress:o})}async function rV(e,t){let{address:n}=t,{authorization:r,data:i,to:a}=await zR(e,{address:n});return P_({authorization:{...r,nonce:BigInt(r.nonce),r:BigInt(r.r),s:BigInt(r.s)},data:i,signature:t.signature,to:a})}function iV(e,t){let{tokens:n}=t,r=n.filter(e=>e.interop);return e.map(e=>{if(e.address)return e;let t=r.find(t=>t.symbol===e.symbol);if(!t)throw Error(`interop token not found: ${e.symbol}`);return{address:t.address,value:LI(e.value,t.decimals)}})}async function aV(e,t){let{chain:n=e.chain}=t??{};return await BR(e,{chainId:n?.id}).then(e=>e.fees.tokens)}async function oV(e,t){let{addressOrSymbol:n}=t;return(await aV(e,t)).find(oV.predicate(n))}(function(e){function t(e){return t=>e?og(e)?ag(t.address,e):e===`native`?t.address===Q_:e===t.symbol:!1}e.predicate=t})(oV||={});async function sV(e,t){let{chain:n=e.chain,store:r}=t??{},i=r?.getState()??{},a=t?.addressOrSymbol??i.feeToken;return(await aV(e,{chain:n}).then(e=>e.filter(e=>e.feeToken)))?.find(e=>a?a===`native`&&e.address===`0x0000000000000000000000000000000000000000`||og(a)&&ag(e.address,a)?!0:a===e.symbol:!1)}Lf(),op(),pf();function cV(e={}){let t=e,{mock:n,multichain:r=!0,webAuthn:i}=t,a,o,s=(()=>{if(t.keystoreHost!==`self`&&!(typeof window<`u`&&window.location?.hostname===`localhost`))return t.keystoreHost})();return xB({actions:{async addFunds(){throw new WM},async createAccount(e){let{admins:t,email:r,label:o,permissions:c,internal:l,signInWithEthereum:u}=e,{client:d}=l,f=NL(D_()),p=await aV(d),m=n?gL():await hL({createFn:i?.createFn,label:o||`${f.address.slice(0,8)}\u2026${f.address.slice(-6)}`,rpId:s,userId:hf(f.address)}),h=await OB(c,{chainId:d.chain.id,feeTokens:p}),g=t?.map(e=>vL(e)),_=await tV(d,{account:f,authorizeKeys:[m,...g??[],...h?[h]:[]]});a=f.address,r&&o&&await eV(d,{email:o,walletAddress:_.address});let v=await(async()=>{if(!u)return;let e=await UB(d,u,{address:_.address}),t=await FL(f,{payload:qB(Uf(e))}),n=await rV(d,{address:_.address,signature:t});return{message:e,signature:n}})();return{account:{..._,signInWithEthereum:v}}},async getAccountVersion(e){let{address:t,internal:n}=e,{client:r}=n,{contracts:i}=await BR(r),{accountImplementation:a}=i,o=await JB(r,{account:ML(a)}).then(e=>e.version),s=await JB(r,{account:t}).then(e=>e.version).catch(()=>o);if(!s||!o)throw Error(`version not found.`);return{current:s,latest:o}},async getAssets(e){let{account:t,chainFilter:n,assetFilter:r,assetTypeFilter:i,internal:a}=e,{client:o}=a;return await VR(o,{account:t,assetFilter:r,assetTypeFilter:i,chainFilter:n})},async getCallsStatus(e){let{id:t,internal:n}=e,{client:r}=n,i=await HR(r,{id:t});return{atomic:!0,chainId:I(r.chain.id),id:t,receipts:i.receipts?.map(e=>({blockHash:e.blockHash,blockNumber:I(e.blockNumber),gasUsed:I(e.gasUsed),logs:e.logs,status:e.status,transactionHash:e.transactionHash})),status:i.status,version:`1.0`}},async getCapabilities(e){let{chainIds:t,internal:n}=e,{client:i}=n,a={atomic:{status:`supported`},atomicBatch:{supported:!0},feeToken:{supported:!0,tokens:[]},merchant:{supported:!0},permissions:{supported:!0},requiredFunds:{supported:!!r,tokens:[]}},o=await BR(i,{chainIds:t?t.map(e=>Xf(e)):`all`,raw:!0});return Object.entries(o).reduce((e,[t,n])=>({...e,[t]:{...a,...n,feeToken:{supported:!0,tokens:n.fees.tokens},requiredFunds:{supported:!!r,tokens:r?n.fees.tokens.filter(e=>e.interop):[]}}}),{})},async getKeys(e){let{account:t,chainIds:n,internal:r}=e,{client:i}=r,a=await YB(i,{account:t,chainIds:n});return mN([...a,...t.keys??[]],e=>e.publicKey)},async grantAdmin(e){let{account:t,internal:n}=e,{client:r}=n,a=vL(e.key,{chainId:r.chain.id}),o=await sV(r,{addressOrSymbol:e.feeToken,store:n.store}),{id:s}=await QB(r,{account:t,authorizeKeys:[a],feeToken:o?.address,webAuthn:i});return await Wm(r,{id:s,pollingInterval:500}),{key:a}},async grantPermissions(e){let{account:t,internal:n,permissions:r}=e,{client:i}=n,a=await aV(i),o=await OB(r,{chainId:i.chain.id,feeTokens:a});if(!o)throw Error(`key to authorize not found.`);let s=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!s)throw Error(`admin key not found.`);let{context:c,digest:l}=await XB(i,{account:t,authorizeKeys:[o],key:s,preCalls:!0}),u=await EL(s,{address:null,payload:l});return await $B(i,{context:c,key:s,signature:u}),{key:o}},async loadAccounts(e){let{internal:t,permissions:r,signInWithEthereum:o}=e,{client:c}=t,l=await aV(c),u=await OB(r,{chainId:c.chain.id,feeTokens:l}),{digest:d,digestType:f,message:p}=await(async()=>{if(o&&e.address){let t=await UB(c,o,{address:e.address});return{context:void 0,digest:qB(Uf(t)),digestType:`siwe`,message:t}}return{context:void 0,digest:`0x`,message:void 0}})(),{address:m,credentialId:h,webAuthnSignature:g}=await(async()=>{if(n){if(!a)throw Error(`address_internal not found.`);return{address:a,credentialId:void 0}}if(e.address&&e.key)return{address:e.address,credentialId:e.key.credentialId};let t=await tL({challenge:d,getFn:i?.getFn,rpId:s}),r=t.raw.response,o=wf(new Uint8Array(r.userHandle)),c=t.raw.id;return{address:o,credentialId:c,webAuthnSignature:t}})(),_=await YB(c,{account:m,chainIds:[c.chain.id]}),v=ML({address:m,keys:[..._,...u?[u]:[]].map((e,t)=>t===0&&e.type===`webauthn-p256`?xL({...e,credential:{id:h,publicKey:qh(e.publicKey)},id:m,rpId:s}):e)}),y=PL(v,{role:`admin`}),b=await(async()=>{if(d!==`0x`)return g?jL(AL(g),{keyType:`webauthn-p256`,publicKey:y.publicKey}):await EL(y,{address:v.address,payload:d})})();if(u){let{context:e,digest:t}=await XB(c,{account:v,authorizeKeys:[u],preCalls:!0}),n=await EL(y,{address:null,payload:t});await $B(c,{context:e,key:y,signature:n})}let x=await(async()=>{if(o){if(f===`siwe`&&p&&b){let e=await rV(c,{address:v.address,signature:b});return{message:p,signature:e}}{let e=await UB(c,o,{address:v.address}),t=await FL(v,{payload:qB(Uf(e)),role:`admin`}),n=await rV(c,{address:v.address,signature:t});return{message:e,signature:n}}}})();return{accounts:[{...v,signInWithEthereum:x}]}},async prepareCalls(e){let{account:t,calls:n,internal:i,merchantUrl:a}=e,{client:o}=i,s=e.key??await SB({account:t,calls:n});if(!s)throw Error(`cannot find authorized key to sign with.`);let[c,l]=await Promise.all([aV(o),sV(o,{addressOrSymbol:e.feeToken,store:i.store})]),u=iV(e.requiredFunds??[],{tokens:c}),{capabilities:d,context:f,digest:p,typedData:m}=await XB(o,{account:t,calls:n,feeToken:l?.address,key:s,merchantUrl:a,requiredFunds:r?u:void 0}),h=f.quote?.quotes??[],g=h[h.length-1];return{account:t,capabilities:{...d,quote:f.quote},chainId:o.chain.id,context:{...f,account:t,calls:n,nonce:g?.intent.nonce},digest:p,key:s,typedData:m}},async prepareUpgradeAccount(e){let{address:t,email:r,label:a,internal:c,permissions:l}=e,{client:u}=c,[d,f]=await Promise.all([aV(u),sV(u,{store:c.store})]),p=n?gL():await hL({createFn:i?.createFn,label:a||`${t.slice(0,8)}\u2026${t.slice(-6)}`,rpId:s,userId:hf(t)}),m=await OB(l,{chainId:u.chain.id,feeTokens:d}),{context:h,digests:g}=await ZB(u,{address:t,authorizeKeys:[p,...m?[m]:[]],feeToken:f?.address});return r&&(o=a),{context:h,digests:g}},async revokeAdmin(e){let{account:t,id:n,internal:r}=e,{client:a}=r,o=t.keys?.find(e=>e.id===n);if(o){if(o.type===`webauthn-p256`&&t.keys?.filter(e=>e.type===`webauthn-p256`).length===1)throw Error(`revoke the only WebAuthn key left.`);try{let n=await sV(a,{addressOrSymbol:e.feeToken,store:r.store}),{id:s}=await QB(a,{account:t,feeToken:n?.address,revokeKeys:[o],webAuthn:i});await Wm(a,{id:s})}catch(e){let t=e;if(t.name===`Rpc.ExecutionError`&&t.abiError?.name===`KeyDoesNotExist`)return;throw e}}},async revokePermissions(e){let{account:t,id:n,internal:r}=e,{client:a}=r,o=t.keys?.find(e=>e.id===n);if(o){if(o.role===`admin`)throw Error(`cannot revoke admins.`);try{let n=await sV(a,{addressOrSymbol:e.feeToken,store:r.store}),{id:s}=await QB(a,{account:t,feeToken:n?.address,revokeKeys:[o],webAuthn:i});await Wm(a,{id:s})}catch(e){let t=e;if(t.name===`Rpc.ExecutionError`&&t.abiError?.name===`KeyDoesNotExist`)return;throw e}}},async sendCalls(e){let{account:t,asTxHash:n,calls:a,chainId:o,internal:s,merchantUrl:c}=e,{client:l}=s,u=await SB({account:t,calls:a,permissionsId:e.permissionsId}),[d,f]=await Promise.all([aV(l),sV(l,{addressOrSymbol:e.feeToken,store:s.store})]),p=iV(e.requiredFunds??[],{tokens:d}),m=await QB(l,{account:t,calls:a,feeToken:f?.address,key:u,merchantUrl:c,requiredFunds:r?p:void 0,webAuthn:i,...o?{chain:{id:o}}:{}});if(n){let{id:e,receipts:t,status:n}=await Wm(l,{id:m.id,pollingInterval:500});if(!t?.[0])throw n===`success`?new ZM({message:`Call bundle with id: `+e+` not found.`}):new MM({message:`Transaction failed under call bundle id: `+e+`.`});return{id:t[0].transactionHash}}return m},async sendPreparedCalls(e){let{context:t,key:n,internal:r,signature:i}=e,{client:a}=r,{id:o}=await $B(a,{context:t,key:n,signature:i});return o},async signPersonalMessage(e){let{account:t,data:n,internal:r}=e,{client:a}=r,o=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!o)throw Error(`cannot find admin key to sign with.`);let s=await FL(t,{key:o,payload:qB(n),webAuthn:i});return rV(a,{address:t.address,signature:s})},async signTypedData(e){let{account:t,internal:n}=e,{client:r}=n,a=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!a)throw Error(`cannot find admin key to sign with.`);let o=uf(e.data),s=o.domain?.name===`Orchestrator`,c=await FL(t,{key:a,payload:lI(o),replaySafe:!s,webAuthn:i});return s?c:rV(r,{address:t.address,signature:c})},async upgradeAccount(e){let{account:t,context:n,internal:r,signatures:i}=e,{client:a}=r;return await tV(a,{context:n,signatures:i}),o&&await eV(a,{email:o,walletAddress:t.address}),{account:t}},async verifyEmail(e){let{account:t,chainId:n,email:r,token:a,internal:o,walletAddress:s}=e,{client:c}=o,l=t.keys?.find(e=>e.role===`admin`&&e.privateKey);if(!l)throw Error(`cannot find admin key to sign with.`);let u=await FL(t,{key:l,payload:Hh(Uf(`${r}${a}`)),webAuthn:i});return await nV(c,{chainId:n,email:r,signature:u,token:a,walletAddress:s})}},config:e,name:`rpc`})}op();function lV(e={}){let{fallback:t=cV(),host:n=bN.prod,renderer:r=SN(),theme:i,themeController:a}=e,o=new Set,s=CB();function c(e){return nN({async request(t){let n=s.prepare(t);return e.setState(e=>{let t=e.accounts[0],r=t?.keys?.find(e=>e.role===`admin`&&e.type===`webauthn-p256`);return{...e,requestQueue:[...e.requestQueue,{account:t?{address:t.address,key:r?{credentialId:r?.credentialId,publicKey:r.publicKey}:void 0}:void 0,request:n,status:`pending`}]}}),new Promise((t,r)=>{let i=a=>{let s=a.find(e=>e.request.id===n.id);if(!s&&a.length===0){o.delete(i),r(new HM);return}s&&(s.status!==`success`&&s.status!==`error`||(o.delete(i),s.status===`success`?t(s.result):r(rN(s.error)),e.setState(e=>({...e,requestQueue:e.requestQueue.filter(e=>e.request.id!==n.id)}))))};o.add(i)})}},{schema:TB()})}return xB({actions:{async addFunds(e){let{internal:t}=e,{request:n,store:r}=t;if(n.method!==`wallet_addFunds`)throw Error(`Cannot add funds for method: `+n.method);return await c(r).request(n)},async createAccount(e){let{internal:t}=e,{client:n,config:r,request:i,store:a}=t,{storage:o}=r,s=c(a);return{account:await(async()=>{if(i.method===`wallet_connect`){let[{capabilities:e,chainIds:t}]=i._decoded.params??[{}],a=dV(e?.signInWithEthereum?.authUrl??r.authUrl,{storage:o}),c=i.params?.[0]?.capabilities?.signInWithEthereum,l=await OB(e?.grantPermissions,{chainId:n.chain.id}),u=l?pP(EB,DB(l)):void 0,{accounts:d}=await s.request({...i,params:[{capabilities:{...i.params?.[0]?.capabilities,grantPermissions:u,signInWithEthereum:a||c?{...c,authUrl:a}:void 0},chainIds:t?.map(e=>I(e))}]}),[f]=d;if(!f)throw Error(`no account found.`);let p=f.capabilities?.admins?.map(e=>vL(e,{chainId:n.chain.id})).filter(Boolean),m=f.capabilities?.permissions?.map(e=>{try{let t=yz(mP(_z,e));return t.id===l?.id?{...t,...l,permissions:t.permissions}:t}catch{return}}).filter(Boolean),h=await(async()=>{if(!f.capabilities?.signInWithEthereum)return;let{message:e,signature:t}=f.capabilities.signInWithEthereum;if(!a)return{message:e,signature:t};let{token:n}=await HB({address:f.address,authUrl:a,message:e,publicKey:f.capabilities?.admins?.[0]?.publicKey,signature:t});return{message:e,signature:t,token:n}})();return{...ML({address:f.address,keys:[...p??[],...m??[]]}),signInWithEthereum:h}}throw Error(`Account creation not supported on method: ${i.method}`)})()}},async disconnect(e){let{internal:t}=e,{config:n}=t,{storage:r}=n,i=await r.getItem(`porto.authUrl`)||void 0,a=dV(n.authUrl??i,{storage:r});a&&await fetch(a.logout,{credentials:`include`,method:`POST`}).catch(()=>{})},async getAccountVersion(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getAccountVersion`)throw Error(`Cannot get version for method: `+a.method);return r.supportsHeadless?await c(i).request(a):t.actions.getAccountVersion(e)},async getAssets(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getAssets`)throw Error(`Cannot get assets for method: `+a.method);if(!r.supportsHeadless)return t.actions.getAssets(e);let o=await c(i).request(a);return mP(rB.Response,o)},async getCallsStatus(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getCallsStatus`)throw Error(`Cannot get status for method: `+a.method);return r.supportsHeadless?await c(i).request(a):t.actions.getCallsStatus(e)},async getCapabilities(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_getCapabilities`)throw Error(`Cannot get capabilities for method: `+a.method);return r.supportsHeadless?await c(i).request(a):t.actions.getCapabilities(e)},async getKeys(e){let{account:n,chainIds:i,internal:a}=e,{store:o}=a,s=await(async()=>{if(!r.supportsHeadless)return t.actions.getKeys(e);let a=await c(o).request({method:`wallet_getKeys`,params:[pP(oB.Parameters,{address:n.address,chainIds:i})]});return mP(oB.Response,a)})();return mN([...s,...n.keys??[]],e=>e.publicKey)},async grantAdmin(e){let{internal:t}=e,{request:n,store:r}=t;if(n.method!==`wallet_grantAdmin`)throw Error(`Cannot authorize admin for method: `+n.method);let[i]=n._decoded.params,a=vL(i.key);if(!a)throw Error(`no key found.`);let o=await uV(t,e);return await c(r).request({method:`wallet_grantAdmin`,params:[{...n.params?.[0],capabilities:{...n.params?.[0]?.capabilities,feeToken:o}}]}),{key:a}},async grantPermissions(e){let{internal:t}=e,{client:n,request:r,store:i}=t;if(r.method!==`wallet_grantPermissions`)throw Error(`Cannot grant permissions for method: `+r.method);let[{address:a,...o}]=r._decoded.params,s=await OB(o,{chainId:n.chain.id});if(!s)throw Error(`no key found.`);let l=pP(EB,DB(s));return await c(i).request({method:`wallet_grantPermissions`,params:[l]}),{key:s}},async loadAccounts(e){let{internal:t}=e,{client:n,config:r,store:i}=t,{storage:a}=r,o=c(i),s=t.request;if(s.method!==`wallet_connect`&&s.method!==`eth_requestAccounts`)throw Error(`Cannot load accounts for method: `+s.method);return{accounts:await(async()=>{let[e]=s._decoded.params??[],{capabilities:t}=e??{},i=dV(t?.signInWithEthereum?.authUrl??r.authUrl,{storage:a}),c=s.params?.[0]?.capabilities?.signInWithEthereum,l=await OB(t?.grantPermissions,{chainId:n.chain.id}),u=l?pP(EB,DB(l)):void 0,{accounts:d}=await o.request({method:`wallet_connect`,params:[{...s.params?.[0],capabilities:{...s.params?.[0]?.capabilities,grantPermissions:u,signInWithEthereum:i||c?{...c,authUrl:i}:void 0}}]});return Promise.all(d.map(async e=>{let t=e.capabilities?.admins?.map(e=>vL(e)).filter(Boolean),n=e.capabilities?.permissions?.map(e=>{try{let t=yz(mP(_z,e));return t.id===l?.id?{...t,...l,permissions:t.permissions}:t}catch{return}}).filter(Boolean),r=await(async()=>{if(!e.capabilities?.signInWithEthereum)return;let{message:t,signature:n}=e.capabilities.signInWithEthereum;if(!i)return{message:t,signature:n};let{token:r}=await HB({address:e.address,authUrl:i,message:t,publicKey:e.capabilities?.admins?.[0]?.publicKey,signature:n});return{message:t,signature:n,token:r}})();return{...ML({address:e.address,keys:[...t??[],...n??[]]}),signInWithEthereum:r}}))})()}},async prepareCalls(e){let{account:n,internal:i}=e,{store:a,request:o}=i;if(o.method!==`wallet_prepareCalls`)throw Error(`Cannot prepare calls for method: `+o.method);if(!r.supportsHeadless)return t.actions.prepareCalls(e);let s=await uV(i,e),l=c(a),u=mP(sB.Response,await l.request({...o,params:[{...o.params?.[0],capabilities:{...o.params?.[0]?.capabilities,feeToken:s}}]}));return{account:n,chainId:Number(u.chainId),context:u.context,digest:u.digest,key:u.key,typedData:u.typedData}},async prepareUpgradeAccount(e){let{internal:n}=e,{client:i,store:a,request:o}=n;if(o.method!==`wallet_prepareUpgradeAccount`)throw Error(`Cannot prepare upgrade for method: `+o.method);if(!r.supportsHeadless)return t.actions.prepareUpgradeAccount(e);let[{capabilities:s}]=o._decoded.params??[{}],l=await OB(s?.grantPermissions,{chainId:i.chain.id}),u=l?pP(EB,DB(l)):void 0,{context:d,digests:f}=await c(a).request({...o,params:[{...o.params?.[0],capabilities:{...o.params?.[0]?.capabilities,grantPermissions:u}}]}),p=d.account.keys?.map(e=>e.id===l?.id?{...e,...l}:e);return{context:{...d,account:{...d.account,keys:p}},digests:f}},async revokeAdmin(e){let{account:t,id:n,internal:r}=e,{store:i,request:a}=r;if(a.method!==`wallet_revokeAdmin`)throw Error(`Cannot revoke admin for method: `+a.method);let o=t.keys?.find(e=>e.id===n);if(!o)return;if(o.type===`webauthn-p256`&&t.keys?.filter(e=>e.type===`webauthn-p256`).length===1)throw Error(`revoke the only WebAuthn key left.`);let s=await uV(r,e);return await c(i).request({...a,params:[{...a.params?.[0],capabilities:{...a.params?.[0]?.capabilities,feeToken:s}}]})},async revokePermissions(e){let{account:t,id:n,internal:r}=e,{store:i,request:a}=r;if(a.method!==`wallet_revokePermissions`)throw Error(`Cannot revoke permissions for method: `+a.method);let o=t.keys?.find(e=>e.id===n);if(o){if(o.role===`admin`)throw Error(`cannot revoke permissions.`);return await c(i).request(a)}},async sendCalls(e){let{account:n,asTxHash:i,calls:a,chainId:o,internal:s,merchantUrl:l,requiredFunds:u}=e,{client:d,store:f,request:p}=s,m=c(f),h=await uV(s,e),g=await SB({account:n,calls:a,permissionsId:e.permissionsId});if(g&&g.role===`session`){if(!r.supportsHeadless)return t.actions.sendCalls(e);try{let e=await m.request(pP(sB.Request,{method:`wallet_prepareCalls`,params:[{calls:a,capabilities:{...p._decoded.method===`wallet_sendCalls`?p._decoded.params?.[0]?.capabilities:void 0,feeToken:h,merchantUrl:l,requiredFunds:u},chainId:o,from:n.address,key:g}]})),t=e.capabilities?.quote?.quotes??[];if(t.some((e,n)=>n===t.length-1&&t.length>1?!1:Yf(e.feeTokenDeficit)>0n))throw Error(`insufficient funds`);let r=await EL(g,{address:null,payload:e.digest,wrap:!1}),s=(await m.request({method:`wallet_sendPreparedCalls`,params:[{...e,signature:r}]}))[0];if(!s)throw Error(`id not found`);if(i){let{id:e,receipts:t,status:n}=await Wm(d,{id:s.id,pollingInterval:500});if(!t?.[0])throw n===`success`?new ZM({message:`Call bundle with id: `+e+` not found.`}):new MM({message:`Transaction failed under call bundle id: `+e+`.`});return{id:t[0].transactionHash}}return s}catch{}}if(p.method===`eth_sendTransaction`)return{id:await m.request({...p,params:[{...p.params?.[0],capabilities:{feeToken:h,merchantUrl:l},...o?{chainId:I(o)}:{}}]})};if(p.method===`wallet_sendCalls`)return await m.request({method:`wallet_sendCalls`,params:[{...p.params?.[0],capabilities:{...p.params?.[0]?.capabilities,feeToken:h,merchantUrl:l},...o?{chainId:I(o)}:{}}]});throw Error(`Cannot execute for method: `+p.method)},async sendPreparedCalls(e){let{internal:n}=e,{store:i,request:a}=n;if(a.method!==`wallet_sendPreparedCalls`)throw Error(`Cannot send prepared calls for method: `+a.method);if(!r.supportsHeadless)return t.actions.sendPreparedCalls(e);let o=(await c(i).request(a))[0]?.id;if(!o)throw Error(`id not found`);return o},async signPersonalMessage(e){let{internal:t}=e,{store:n,request:r}=t;if(r.method!==`personal_sign`)throw Error(`Cannot sign personal message for method: `+r.method);return await c(n).request(r)},async signTypedData(e){let{internal:t}=e,{store:n,request:r}=t;if(r.method!==`eth_signTypedData_v4`)throw Error(`Cannot sign typed data for method: `+r.method);return await c(n).request(r)},async switchChain(e){let{internal:t}=e,{store:n,request:i}=t;if(i.method!==`wallet_switchEthereumChain`)throw Error(`Cannot switch chain for method: `+i.method);if(r.supportsHeadless)return await c(n).request(i)},async upgradeAccount(e){let{account:t,internal:n}=e,{store:r,request:i}=n;if(i.method!==`wallet_upgradeAccount`)throw Error(`Cannot upgrade account for method: `+i.method);return await c(r).request(i),{account:t}},async verifyEmail(e){let{internal:t}=e,{request:n,store:r}=t;if(n.method!==`account_verifyEmail`)throw Error(`Cannot verify email for method: `+n.method);return await c(r).request(n)}},config:e,name:`dialog`,setup(e){let{internal:t}=e,{store:s}=t,c=r.setup({host:n,internal:t,theme:i,themeController:a}),l=s.subscribe(e=>e.requestQueue,e=>{for(let t of o)t(e);let t=e.map(e=>e.status===`pending`?e:void 0).filter(Boolean);c.syncRequests(t).catch(()=>{}),t.length===0&&c.close()});return()=>{l(),c.destroy()}}})}async function uV(e,t){let{config:{feeToken:n}}=e,{feeToken:r}=t??{};return r??n}function dV(e,{storage:t}){if(!e)return;let n=WB(e,typeof window<`u`?window.location.origin:void 0);return n&&t.setItem(`porto.authUrl`,n),n}var fV=new Map,pV=e=>{let t=fV.get(e);return t?Object.fromEntries(Object.entries(t.stores).map(([e,t])=>[e,t.getState()])):{}},mV=(e,t,n)=>{if(e===void 0)return{type:`untracked`,connection:t.connect(n)};let r=fV.get(n.name);if(r)return{type:`tracked`,store:e,...r};let i={connection:t.connect(n),stores:{}};return fV.set(n.name,i),{type:`tracked`,store:e,...i}},hV=(e,t)=>{if(t===void 0)return;let n=fV.get(e);n&&(delete n.stores[t],Object.keys(n.stores).length===0&&fV.delete(e))},gV=e=>{if(!e)return;let t=e.split(` +`),n=t.findIndex(e=>e.includes(`api.setState`));if(n<0)return;let r=t[n+1]?.trim()||``;return/.+ (.+) .+/.exec(r)?.[1]},_V=(e,t={})=>(n,r,i)=>{let{enabled:a,anonymousActionType:o,store:s,...c}=t,l;try{l=(a??!1)&&window.__REDUX_DEVTOOLS_EXTENSION__}catch{}if(!l)return e(n,r,i);let{connection:u,...d}=mV(s,l,c),f=!0;i.setState=((e,t,a)=>{let l=n(e,t);if(!f)return l;let d=a===void 0?{type:o||gV(Error().stack)||`anonymous`}:typeof a==`string`?{type:a}:a;return s===void 0?(u?.send(d,r()),l):(u?.send({...d,type:`${s}/${d.type}`},{...pV(c.name),[s]:i.getState()}),l)}),i.devtools={cleanup:()=>{u&&typeof u.unsubscribe==`function`&&u.unsubscribe(),hV(c.name,s)}};let p=(...e)=>{let t=f;f=!1,n(...e),f=t},m=e(i.setState,r,i);if(d.type===`untracked`?u?.init(m):(d.stores[d.store]=i,u?.init(Object.fromEntries(Object.entries(d.stores).map(([e,t])=>[e,e===d.store?m:t.getState()])))),i.dispatchFromDevtools&&typeof i.dispatch==`function`){let e=i.dispatch;i.dispatch=(...t)=>{e(...t)}}return u.subscribe(e=>{switch(e.type){case`ACTION`:if(typeof e.payload!=`string`){console.error(`[zustand devtools middleware] Unsupported action format`);return}return vV(e.payload,e=>{if(e.type===`__setState`){if(s===void 0){p(e.state);return}Object.keys(e.state).length!==1&&console.error(` [zustand devtools middleware] Unsupported __setState action format. When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(), and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } } - `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&p(t);return}i.dispatchFromDevtools&&typeof i.dispatch==`function`&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return p(m),s===void 0?u?.init(i.getState()):u?.init(fV(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(fV(c.name));case`ROLLBACK`:return _V(e.state,e=>{if(s===void 0){p(e),u?.init(i.getState());return}p(e[s]),u?.init(fV(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return _V(e.state,e=>{if(s===void 0){p(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&p(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;p(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),m},_V=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}n!==void 0&&t(n)},vV=e=>(t,n,r)=>{let i=r.subscribe;return r.subscribe=((e,t,n)=>{let a=e;if(t){let i=n?.equalityFn||Object.is,o=e(r.getState());a=n=>{let r=e(n);if(!i(o,r)){let e=o;t(o=r,e)}},n?.fireImmediately&&t(o,o)}return i(a)}),e(t,n,r)};function yV(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var bV=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return bV(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return bV(t)(e)}}}},xV=(e,t)=>(n,r,i)=>{let a={storage:yV(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=new Set,c=new Set,l=a.storage;if(!l)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let u=()=>{let e=a.partialize({...r()});return l.setItem(a.name,{state:e,version:a.version})},d=i.setState;i.setState=(e,t)=>(d(e,t),u());let f=e((...e)=>(n(...e),u()),r,i);i.getInitialState=()=>f;let p,m=()=>{if(!l)return;o=!1,s.forEach(e=>e(r()??f));let e=a.onRehydrateStorage?.call(a,r()??f)||void 0;return bV(l.getItem.bind(l))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(e=>{let[t,i]=e;if(p=a.merge(i,r()??f),n(p,!0),t)return u()}).then(()=>{e?.(p,void 0),p=r(),o=!0,c.forEach(e=>e(p))}).catch(t=>{e?.(void 0,t)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(l=e.storage)},clearStorage:()=>{l?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:e=>(s.add(e),()=>{s.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||m(),p||f},SV=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},CV=(e=>e?SV(e):SV);function wV(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function TV(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=wV(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var EV;function DV(){return EV||=TV(`keyval-store`,`keyval`),EV}function OV(e,t=DV()){return t(`readonly`,t=>wV(t.get(e)))}function kV(e,t,n=DV()){return n(`readwrite`,n=>(n.put(t,e),wV(n.transaction)))}function AV(e,t=DV()){return t(`readwrite`,t=>(t.delete(e),wV(t.transaction)))}function jV(e){return e}function MV(){let e=typeof indexedDB<`u`?TV(`porto`,`store`):void 0;return jV({async getItem(t){let n=await OV(t,e);return n===null?null:n},async removeItem(t){await AV(t,e)},async setItem(t,n){await kV(t,fN(n),e)},sizeLimit:1024*1024*50})}function NV(){let e=new Map;return jV({getItem(t){return e.get(t)??null},removeItem(t){e.delete(t)},setItem(t,n){e.set(t,n)},sizeLimit:1/0})}var PV=typeof window<`u`&&typeof document<`u`;const FV={announceProvider:!0,chains:SM,mode:PV?cV({host:yN.prod}):sV(),relay:Rv(nz.prod.http),storage:PV&&typeof indexedDB<`u`?MV():NV(),storageKey:`porto.store`};function IV(e={}){let t=e.chains??FV.chains,n=Object.fromEntries(t.map(t=>[t.id,e.transports?.[t.id]??Rv()])),r={announceProvider:e.announceProvider??FV.announceProvider,authUrl:e.authUrl,chains:t,feeToken:e.feeToken,merchantUrl:e.merchantUrl,mode:e.mode??FV.mode,relay:e.relay??FV.relay,storage:e.storage??FV.storage,storageKey:e.storageKey??FV.storageKey,transports:n},i=CV(gV(vV(xV(e=>({accounts:[],chainIds:r.chains.map(e=>e.id),feeToken:r.feeToken,requestQueue:[]}),{merge(e,t){let n=e,i=r.chains.find(e=>e.id===n.chainIds[0])?.id??r.chains[0].id,a=[i,...r.chains.map(e=>e.id).filter(e=>e!==i)];return{...t,...n,chainIds:a}},name:r.storageKey,partialize:e=>({accounts:e.accounts.map(e=>fN(e)),chainIds:e.chainIds}),storage:r.storage,version:5})))),a=r.mode,o={config:r,getMode(){return a},id:mN(),setMode(e){return c?.(),a=e,c=e.setup({internal:o}),c},store:i},s=hB(o),c=a===null?()=>{}:a.setup({internal:o});return{_internal:o,config:r,destroy(){c(),s._internal.destroy()},provider:s}}const LV=Object.freeze(Object.values(bM)),RV=e=>LV.find(t=>t.id===e);var zV=e=>{if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e!=`string`)return;let t=e.trim();if(/^0x[0-9a-fA-F]+$/.test(t)){let e=Number.parseInt(t,16);return Number.isNaN(e)?void 0:e}if(/^\d+$/.test(t)){let e=Number.parseInt(t,10);return Number.isNaN(e)?void 0:e}};const BV=(e,t,n)=>{let r=zV(e);t(r),n(r==null?void 0:RV(r))},VV=async(e,t=`GET`,n)=>{let r={"Content-Type":`application/json`},i=typeof window<`u`?window.__SESSION_TOKEN__:void 0;i&&(r[`X-Session-Token`]=i);let a=await fetch(`http://127.0.0.1:9545${e}`,{method:t,headers:r,body:n===void 0?void 0:JSON.stringify(n)});if(!a.ok)throw Error(`API request failed: ${a.status} ${a.statusText}`);try{return await a.json()}catch{throw Error(`Invalid JSON response`)}},HV=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2),UV=e=>!!e&&e.status===`ok`;var WV=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),GV=u(s(((e,t)=>{t.exports=WV()}))());function KV(){(0,y.useEffect)(()=>{window.__PORTO__||(window.__PORTO__=IV())},[]);let[e,t]=(0,y.useState)([]),[n,r]=(0,y.useState)(!1),[i,a]=(0,y.useState)(null),[o,s]=(0,y.useState)(null),c=e.find(e=>e.info.uuid===o)??null,[l,u]=(0,y.useState)(),[d,f]=(0,y.useState)(),[p,m]=(0,y.useState)(),[h,g]=(0,y.useState)(null),[_,v]=(0,y.useState)(null),b=(0,y.useRef)(null),x=(0,y.useRef)(null),S=async()=>{if(!c||n)return;let e=await c.provider.request({method:`eth_requestAccounts`});u(e?.[0]??void 0);try{let e=await c.provider.request({method:`eth_chainId`});BV(e,f,m)}catch{f(void 0),m(void 0)}},C=async()=>{if(!(!l||d==null)){try{await VV(`/api/connection`,`POST`,[l,d])}catch{return}r(!0)}},w=async()=>{if(!c||!i?.request)return;let e=jv({transport:Nv(c.provider),chain:p??void 0});try{let t=await c.provider.request({method:`eth_sendTransaction`,params:[i.request]});v(t),await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:t,error:null}),console.log(`sent tx:`,t);let n=await lv(e,{hash:t});g(n),console.log(`tx receipt:`,n)}catch(e){let t=typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:String(e);console.error(`send failed:`,t);try{await VV(`/api/transaction/response`,`POST`,{id:i.id,hash:null,error:t})}catch{}}},ee=(0,y.useCallback)(()=>{b.current&&=(window.clearInterval(b.current),null),a(null),v(null),g(null),u(void 0),f(void 0),m(void 0),r(!1),VV(`/api/connection`,`POST`,null)},[]);return(0,y.useEffect)(()=>{x.current&&o&&x.current!==o&&ee(),x.current=o},[o,ee]),(0,y.useEffect)(()=>{e.length===1&&!c&&s(e[0].info.uuid)},[e,c]),(0,y.useEffect)(()=>{let e=e=>{let{info:n,provider:r}=e.detail;t(e=>e.some(e=>e.info.uuid===n.uuid)?e:[...e,{info:n,provider:r}])};return window.addEventListener(`eip6963:announceProvider`,e),window.dispatchEvent(new Event(`eip6963:requestProvider`)),()=>window.removeEventListener(`eip6963:announceProvider`,e)},[]),(0,y.useEffect)(()=>{if(!c)return;let e=e=>{n||u(e[0]??void 0)},t=e=>{n||BV(e,f,m)};return c.provider.on?.(`accountsChanged`,e),c.provider.on?.(`chainChanged`,t),()=>{c.provider.removeListener?.(`accountsChanged`,e),c.provider.removeListener?.(`chainChanged`,t)}},[c,n]),(0,y.useEffect)(()=>{if(!n||i)return;let e=!0,t=window.setInterval(async()=>{if(e)try{let n=await VV(`/api/transaction/request`);UV(n)&&(window.clearInterval(t),e&&a(n.data))}catch{}},1e3);return b.current=t,()=>{e=!1,window.clearInterval(t),b.current===t&&(b.current=null)}},[n,i]),(0,GV.jsx)(`div`,{className:`wrapper`,children:(0,GV.jsxs)(`div`,{className:`container`,children:[(0,GV.jsx)(`img`,{className:`banner`,src:`banner.png`,alt:`Foundry Browser Wallet`}),e.length>1&&(0,GV.jsx)(`div`,{className:`wallet-selector`,children:(0,GV.jsx)(`label`,{children:(0,GV.jsxs)(`select`,{value:o??``,onChange:e=>s(e.target.value||null),disabled:n,children:[(0,GV.jsx)(`option`,{value:``,disabled:!0,children:`Select wallet…`}),e.map(({info:e})=>(0,GV.jsxs)(`option`,{value:e.uuid,children:[e.name,` (`,e.rdns,`)`]},e.uuid))]})})}),e.length===0&&(0,GV.jsx)(`p`,{children:`No wallets found.`}),c&&!l&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-connect`,onClick:S,disabled:n,children:`Connect Wallet`}),c&&l&&!n&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-confirm`,onClick:C,disabled:!l||d==null,children:`Confirm Connection`}),c&&l&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Connected`}),(0,GV.jsx)(`pre`,{className:`box`,children:`\ -account: ${l} -chain: ${p?`${p.name} (${d})`:d??`unknown`} -rpc: ${p?.rpcUrls?.default?.http?.[0]??p?.rpcUrls?.public?.http?.[0]??`unknown`}`})]}),c&&l&&n&&!_&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`To Sign`}),(0,GV.jsx)(`div`,{className:`box`,children:(0,GV.jsx)(`pre`,{children:i?HV(i):`No pending transaction`})})]}),c&&l&&_&&(0,GV.jsxs)(GV.Fragment,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Transaction Hash`}),(0,GV.jsx)(`pre`,{className:`box`,children:_}),(0,GV.jsxs)(`div`,{children:[(0,GV.jsx)(`div`,{className:`section-title`,children:`Receipt`}),(0,GV.jsx)(`pre`,{className:`box`,children:h?HV(h):`Waiting for receipt...`})]})]}),c&&l&&i&&n&&!_&&(0,GV.jsx)(`button`,{type:`button`,className:`wallet-send`,onClick:w,children:`Sign & Send`})]})})}var qV=document.getElementById(`root`);if(qV)(0,v.createRoot)(qV).render((0,GV.jsx)(y.StrictMode,{children:(0,GV.jsx)(KV,{})}));else throw Error(`Root element with id "root" not found`); \ No newline at end of file + `);let t=e.state[s];if(t==null)return;JSON.stringify(i.getState())!==JSON.stringify(t)&&p(t);return}i.dispatchFromDevtools&&typeof i.dispatch==`function`&&i.dispatch(e)});case`DISPATCH`:switch(e.payload.type){case`RESET`:return p(m),s===void 0?u?.init(i.getState()):u?.init(pV(c.name));case`COMMIT`:if(s===void 0){u?.init(i.getState());return}return u?.init(pV(c.name));case`ROLLBACK`:return vV(e.state,e=>{if(s===void 0){p(e),u?.init(i.getState());return}p(e[s]),u?.init(pV(c.name))});case`JUMP_TO_STATE`:case`JUMP_TO_ACTION`:return vV(e.state,e=>{if(s===void 0){p(e);return}JSON.stringify(i.getState())!==JSON.stringify(e[s])&&p(e[s])});case`IMPORT_STATE`:{let{nextLiftedState:t}=e.payload,n=t.computedStates.slice(-1)[0]?.state;if(!n)return;p(s===void 0?n:n[s]),u?.send(null,t);return}case`PAUSE_RECORDING`:return f=!f}return}}),m},vV=(e,t)=>{let n;try{n=JSON.parse(e)}catch(e){console.error(`[zustand devtools middleware] Could not parse the received json`,e)}n!==void 0&&t(n)},yV=e=>(t,n,r)=>{let i=r.subscribe;return r.subscribe=((e,t,n)=>{let a=e;if(t){let i=n?.equalityFn||Object.is,o=e(r.getState());a=n=>{let r=e(n);if(!i(o,r)){let e=o;t(o=r,e)}},n?.fireImmediately&&t(o,o)}return i(a)}),e(t,n,r)};function bV(e,t){let n;try{n=e()}catch{return}return{getItem:e=>{let r=e=>e===null?null:JSON.parse(e,t?.reviver),i=n.getItem(e)??null;return i instanceof Promise?i.then(r):r(i)},setItem:(e,r)=>n.setItem(e,JSON.stringify(r,t?.replacer)),removeItem:e=>n.removeItem(e)}}var xV=e=>t=>{try{let n=e(t);return n instanceof Promise?n:{then(e){return xV(e)(n)},catch(e){return this}}}catch(e){return{then(e){return this},catch(t){return xV(t)(e)}}}},SV=(e,t)=>(n,r,i)=>{let a={storage:bV(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},o=!1,s=new Set,c=new Set,l=a.storage;if(!l)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...e)},r,i);let u=()=>{let e=a.partialize({...r()});return l.setItem(a.name,{state:e,version:a.version})},d=i.setState;i.setState=(e,t)=>(d(e,t),u());let f=e((...e)=>(n(...e),u()),r,i);i.getInitialState=()=>f;let p,m=()=>{if(!l)return;o=!1,s.forEach(e=>e(r()??f));let e=a.onRehydrateStorage?.call(a,r()??f)||void 0;return xV(l.getItem.bind(l))(a.name).then(e=>{if(e)if(typeof e.version==`number`&&e.version!==a.version){if(a.migrate){let t=a.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`)}else return[!1,e.state];return[!1,void 0]}).then(e=>{let[t,i]=e;if(p=a.merge(i,r()??f),n(p,!0),t)return u()}).then(()=>{e?.(p,void 0),p=r(),o=!0,c.forEach(e=>e(p))}).catch(t=>{e?.(void 0,t)})};return i.persist={setOptions:e=>{a={...a,...e},e.storage&&(l=e.storage)},clearStorage:()=>{l?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>m(),hasHydrated:()=>o,onHydrate:e=>(s.add(e),()=>{s.delete(e)}),onFinishHydration:e=>(c.add(e),()=>{c.delete(e)})},a.skipHydration||m(),p||f},CV=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},wV=(e=>e?CV(e):CV);function TV(e){return new Promise((t,n)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>n(e.error)})}function EV(e,t){let n,r=()=>{if(n)return n;let r=indexedDB.open(e);return r.onupgradeneeded=()=>r.result.createObjectStore(t),n=TV(r),n.then(e=>{e.onclose=()=>n=void 0},()=>{}),n};return(e,n)=>r().then(r=>n(r.transaction(t,e).objectStore(t)))}var DV;function OV(){return DV||=EV(`keyval-store`,`keyval`),DV}function kV(e,t=OV()){return t(`readonly`,t=>TV(t.get(e)))}function AV(e,t,n=OV()){return n(`readwrite`,n=>(n.put(t,e),TV(n.transaction)))}function jV(e,t=OV()){return t(`readwrite`,t=>(t.delete(e),TV(t.transaction)))}function MV(e){return e}function NV(){let e=typeof indexedDB<`u`?EV(`porto`,`store`):void 0;return MV({async getItem(t){let n=await kV(t,e);return n===null?null:n},async removeItem(t){await jV(t,e)},async setItem(t,n){await AV(t,pN(n),e)},sizeLimit:1024*1024*50})}function PV(){let e=new Map;return MV({getItem(t){return e.get(t)??null},removeItem(t){e.delete(t)},setItem(t,n){e.set(t,n)},sizeLimit:1/0})}var FV=typeof window<`u`&&typeof document<`u`;const IV={announceProvider:!0,chains:CM,mode:FV?lV({host:bN.prod}):cV(),relay:zv(rz.prod.http),storage:FV&&typeof indexedDB<`u`?NV():PV(),storageKey:`porto.store`};function LV(e={}){let t=e.chains??IV.chains,n=Object.fromEntries(t.map(t=>[t.id,e.transports?.[t.id]??zv()])),r={announceProvider:e.announceProvider??IV.announceProvider,authUrl:e.authUrl,chains:t,feeToken:e.feeToken,merchantUrl:e.merchantUrl,mode:e.mode??IV.mode,relay:e.relay??IV.relay,storage:e.storage??IV.storage,storageKey:e.storageKey??IV.storageKey,transports:n},i=wV(_V(yV(SV(e=>({accounts:[],chainIds:r.chains.map(e=>e.id),feeToken:r.feeToken,requestQueue:[]}),{merge(e,t){let n=e,i=r.chains.find(e=>e.id===n.chainIds[0])?.id??r.chains[0].id,a=[i,...r.chains.map(e=>e.id).filter(e=>e!==i)];return{...t,...n,chainIds:a}},name:r.storageKey,partialize:e=>({accounts:e.accounts.map(e=>pN(e)),chainIds:e.chainIds}),storage:r.storage,version:5})))),a=r.mode,o={config:r,getMode(){return a},id:hN(),setMode(e){return c?.(),a=e,c=e.setup({internal:o}),c},store:i},s=gB(o),c=a===null?()=>{}:a.setup({internal:o});return{_internal:o,config:r,destroy(){c(),s._internal.destroy()},provider:s}}const RV=Object.freeze(Object.values(xM)),zV=e=>RV.find(t=>t.id===e);var BV=e=>{if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(typeof e!=`string`)return;let t=e.trim();if(/^0x[0-9a-fA-F]+$/.test(t)){let e=Number.parseInt(t,16);return Number.isNaN(e)?void 0:e}if(/^\d+$/.test(t)){let e=Number.parseInt(t,10);return Number.isNaN(e)?void 0:e}};const VV=(e,t,n)=>{let r=BV(e);t(r),n(r==null?void 0:zV(r))},HV=async(e,t=`GET`,n)=>{let r={"Content-Type":`application/json`},i=typeof window<`u`?window.__SESSION_TOKEN__:void 0;i&&(r[`X-Session-Token`]=i);let a=await fetch(`http://127.0.0.1:9545${e}`,{method:t,headers:r,body:n===void 0?void 0:JSON.stringify(n)});if(!a.ok)throw Error(`API request failed: ${a.status} ${a.statusText}`);try{return await a.json()}catch{throw Error(`Invalid JSON response`)}},UV=e=>JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2),WV=e=>{if(e==null)return UV(e);if(typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`){let t=e;try{let n=JSON.parse(t.message);return UV({...e,message:n})}catch{return UV(e)}}return UV(e)},GV=e=>!!e&&e.status===`ok`;var KV=s((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),$=u(s(((e,t)=>{t.exports=KV()}))());function qV(){(0,y.useEffect)(()=>{window.__PORTO__||(window.__PORTO__=LV())},[]);let[e,t]=(0,y.useState)([]),[n,r]=(0,y.useState)(!1),[i,a]=(0,y.useState)(null),[o,s]=(0,y.useState)(null),[c,l]=(0,y.useState)(null),u=e.find(e=>e.info.uuid===c)??null,[d,f]=(0,y.useState)(),[p,m]=(0,y.useState)(),[h,g]=(0,y.useState)(),[_,v]=(0,y.useState)(null),[b,x]=(0,y.useState)(null),[S,C]=(0,y.useState)(null),w=(0,y.useRef)(null),ee=(0,y.useRef)(null),te=(0,y.useRef)(null),ne=async()=>{if(!u||n)return;let e=await u.provider.request({method:`eth_requestAccounts`});f(e?.[0]??void 0);try{let e=await u.provider.request({method:`eth_chainId`});VV(e,m,g)}catch{m(void 0),g(void 0)}},re=async()=>{if(!(!d||p==null)){try{await HV(`/api/connection`,`POST`,[d,p])}catch{return}r(!0)}},ie=async()=>{if(!u||!o)return;let{id:e,signType:t,request:n}=o,r=n.address,i=n.message;try{let n;switch(t){case`PersonalSign`:n=await u.provider.request({method:`personal_sign`,params:[i,r]});break;case`SignTypedDataV4`:n=await u.provider.request({method:`eth_signTypedData_v4`,params:[r,i]});break;default:throw Error(`Unsupported signType: ${t}`)}await HV(`/api/signing/response`,`POST`,{id:e,signature:n,error:null}),C(n),s(null)}catch(t){let n=typeof t==`object`&&t&&`message`in t&&typeof t.message==`string`?t.message:String(t);try{await HV(`/api/signing/response`,`POST`,{id:e,signature:null,error:n})}catch{}C(null),s(null)}},ae=async()=>{if(!u||!i?.request)return;let e=Mv({transport:Pv(u.provider),chain:h??void 0});try{let t=await u.provider.request({method:`eth_sendTransaction`,params:[i.request]});x(t),await HV(`/api/transaction/response`,`POST`,{id:i.id,hash:t,error:null});let n=await uv(e,{hash:t});v(n)}catch(e){let t=typeof e==`object`&&e&&`message`in e&&typeof e.message==`string`?e.message:String(e);console.error(`send failed:`,t);try{await HV(`/api/transaction/response`,`POST`,{id:i.id,hash:null,error:t})}catch{}}},oe=(0,y.useCallback)(()=>{w.current&&=(window.clearInterval(w.current),null),ee.current&&=(window.clearInterval(ee.current),null),a(null),s(null),x(null),v(null),f(void 0),m(void 0),g(void 0),r(!1),HV(`/api/connection`,`POST`,null)},[]);return(0,y.useEffect)(()=>{te.current&&c&&te.current!==c&&oe(),te.current=c},[c,oe]),(0,y.useEffect)(()=>{e.length===1&&!u&&l(e[0].info.uuid)},[e,u]),(0,y.useEffect)(()=>{let e=e=>{let{info:n,provider:r}=e.detail;t(e=>e.some(e=>e.info.uuid===n.uuid)?e:[...e,{info:n,provider:r}])};return window.addEventListener(`eip6963:announceProvider`,e),window.dispatchEvent(new Event(`eip6963:requestProvider`)),()=>window.removeEventListener(`eip6963:announceProvider`,e)},[]),(0,y.useEffect)(()=>{if(!u)return;let e=e=>{n||f(e[0]??void 0)},t=e=>{n||VV(e,m,g)};return u.provider.on?.(`accountsChanged`,e),u.provider.on?.(`chainChanged`,t),()=>{u.provider.removeListener?.(`accountsChanged`,e),u.provider.removeListener?.(`chainChanged`,t)}},[u,n]),(0,y.useEffect)(()=>{if(!n||i||o)return;let e=!0,t=window.setInterval(async()=>{if(e)try{let n=await HV(`/api/transaction/request`);GV(n)&&(window.clearInterval(t),e&&a(n.data))}catch{}},1e3);return w.current=t,()=>{e=!1,window.clearInterval(t),w.current===t&&(w.current=null)}},[n,i,o]),(0,y.useEffect)(()=>{if(!n||o||i)return;let e=!0,t=window.setInterval(async()=>{if(e)try{let n=await HV(`/api/signing/request`);GV(n)&&(window.clearInterval(t),e&&s(n.data))}catch{}},1e3);return ee.current=t,()=>{e=!1,window.clearInterval(t),ee.current===t&&(ee.current=null)}},[n,o,i]),(0,$.jsx)(`div`,{className:`wrapper`,children:(0,$.jsxs)(`div`,{className:`container`,children:[(0,$.jsx)(`div`,{className:`notice`,children:`Browser wallet is still in early development. Use with caution!`}),(0,$.jsx)(`img`,{className:`banner`,src:`banner.png`,alt:`Foundry Browser Wallet`}),e.length>1&&(0,$.jsx)(`div`,{className:`wallet-selector`,children:(0,$.jsx)(`label`,{children:(0,$.jsxs)(`select`,{value:c??``,onChange:e=>l(e.target.value||null),disabled:n,children:[(0,$.jsx)(`option`,{value:``,disabled:!0,children:`Select wallet…`}),e.map(({info:e})=>(0,$.jsxs)(`option`,{value:e.uuid,children:[e.name,` (`,e.rdns,`)`]},e.uuid))]})})}),e.length===0&&(0,$.jsx)(`p`,{children:`No wallets found.`}),u&&!d&&(0,$.jsx)(`button`,{type:`button`,className:`wallet-connect`,onClick:ne,disabled:n,children:`Connect Wallet`}),u&&d&&!n&&(0,$.jsx)(`button`,{type:`button`,className:`wallet-confirm`,onClick:re,disabled:!d||p==null,children:`Confirm Connection`}),u&&d&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`section-title`,children:`Connected`}),(0,$.jsx)(`pre`,{className:`box`,children:`\ +account: ${d} +chain: ${h?`${h.name} (${p})`:p??`unknown`} +rpc: ${h?.rpcUrls?.default?.http?.[0]??h?.rpcUrls?.public?.http?.[0]??`unknown`}`})]}),u&&d&&n&&!i&&!o&&!b&&!S&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`section-title`,children:`Transaction To Sign`}),(0,$.jsx)(`div`,{className:`box`,children:(0,$.jsx)(`pre`,{children:`No pending transaction or signing request`})})]}),u&&d&&n&&!b&&i&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`section-title`,children:`Transaction to Sign & Send`}),(0,$.jsx)(`div`,{className:`box`,children:(0,$.jsx)(`pre`,{children:UV(i.request)})}),(0,$.jsx)(`button`,{type:`button`,className:`wallet-send`,onClick:ae,children:`Sign & Send`})]}),u&&d&&n&&!i&&o&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`section-title`,children:`Message / Data to Sign`}),(0,$.jsx)(`div`,{className:`box`,children:(0,$.jsx)(`pre`,{children:WV(o.request)})}),(0,$.jsx)(`button`,{type:`button`,className:`wallet-send`,onClick:ie,children:`Sign`})]}),u&&d&&b&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`section-title`,children:`Transaction Hash`}),(0,$.jsx)(`pre`,{className:`box`,children:b}),(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`div`,{className:`section-title`,children:`Receipt`}),(0,$.jsx)(`pre`,{className:`box`,children:_?UV(_):`Waiting for receipt...`})]})]}),u&&d&&n&&S&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`section-title`,children:`Signature Result`}),(0,$.jsx)(`pre`,{className:`box`,children:S})]})]})})}var JV=document.getElementById(`root`);if(JV)(0,v.createRoot)(JV).render((0,$.jsx)(y.StrictMode,{children:(0,$.jsx)(qV,{})}));else throw Error(`Root element with id "root" not found`); \ No newline at end of file diff --git a/crates/wallets/src/wallet_browser/app/assets/styles.css b/crates/wallets/src/wallet_browser/app/assets/styles.css index a0e6ab87b926e..b2c9cd369d41f 100644 --- a/crates/wallets/src/wallet_browser/app/assets/styles.css +++ b/crates/wallets/src/wallet_browser/app/assets/styles.css @@ -1,2 +1,2 @@ -*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;color:inherit;letter-spacing:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;color:inherit;letter-spacing:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html,body,#root{color:#f8f8f8;background-color:#13151b;width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}button{color:#f8f8f8;cursor:pointer;background-color:#3a3f51;border:1px solid #e1e4e8;border-radius:4px;padding:8px 12px}button:hover{background-color:#50566e}select{color:#f8f8f8;cursor:pointer;background-color:#1e2026;border:1px solid #e1e4e8;border-radius:8px;margin-bottom:16px;padding:8px}option{color:#f8f8f8;background-color:#1e2026}pre{white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere}.wrapper{flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.container{background-color:#3b3b3b;border-radius:8px;flex-direction:column;align-items:flex-start;max-width:600px;padding:16px;display:flex}.banner{border-radius:8px;width:100%;height:auto}.wallet-selector,.wallet-connect,.wallet-send,.wallet-confirm{align-self:center;margin-top:16px}.title,.section-title{color:#f8f8f8}.title{margin-bottom:24px;font-size:36px}.section-title{margin-bottom:16px;font-size:24px}.box{border:1px solid #e1e4e8;border-radius:8px;margin-bottom:16px;padding:8px 12px;font-size:13px} +*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;color:inherit;letter-spacing:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;color:inherit;letter-spacing:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html,body,#root{color:#f8f8f8;background-color:#13151b;width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}button{color:#f8f8f8;cursor:pointer;background-color:#3a3f51;border:1px solid #e1e4e8;border-radius:4px;padding:8px 12px}button:hover{background-color:#50566e}select{color:#f8f8f8;cursor:pointer;background-color:#1e2026;border:1px solid #e1e4e8;border-radius:8px;margin-bottom:16px;padding:8px}option{color:#f8f8f8;background-color:#1e2026}pre{white-space:pre-wrap;word-break:break-all;overflow-wrap:anywhere}.wrapper{flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.container{background-color:#3b3b3b;border-radius:8px;flex-direction:column;align-items:flex-start;max-width:600px;padding:16px;display:flex}.notice{color:#333;text-align:center;background-color:#fc0;border-radius:8px;width:100%;margin-bottom:16px;padding:8px;font-size:13px;font-weight:700}.banner{border-radius:8px;width:100%;height:auto}.wallet-selector,.wallet-connect,.wallet-send,.wallet-confirm{align-self:center;margin-top:16px}.title,.section-title{color:#f8f8f8}.title{margin-bottom:24px;font-size:36px}.section-title{margin-bottom:16px;font-size:24px}.box{border:1px solid #e1e4e8;border-radius:8px;margin-bottom:16px;padding:8px 12px;font-size:13px} /*$vite$:1*/ \ No newline at end of file From 253c2902612a63e8d8a8135910a4fcac919333d7 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 3 Nov 2025 18:34:31 +0100 Subject: [PATCH 40/42] prefer fields --- crates/wallets/src/wallet_browser/mod.rs | 10 +++++----- crates/wallets/src/wallet_browser/signer.rs | 2 +- crates/wallets/src/wallet_browser/types.rs | 9 +++++++-- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index f980fa5963bfc..6e80e4b4a074d 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -67,7 +67,7 @@ mod tests { connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Check connection state - let Connection(address, chain_id) = + let Connection { address, chain_id } = server.get_connection().expect("expected an active wallet connection"); assert_eq!(address, ALICE); assert_eq!(chain_id, 1); @@ -82,7 +82,7 @@ mod tests { connect_wallet(&client, &server, Connection::new(BOB, 42)).await; // Check connection state - let Connection(address, chain_id) = + let Connection { address, chain_id } = server.get_connection().expect("expected an active wallet connection"); assert_eq!(address, BOB); assert_eq!(chain_id, 42); @@ -99,14 +99,14 @@ mod tests { // Connect Alice, assert connected connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; - let Connection(address, chain_id) = + let Connection { address, chain_id } = server.get_connection().expect("expected an active wallet connection"); assert_eq!(address, ALICE); assert_eq!(chain_id, 1); // Connect Bob, assert switched connect_wallet(&client, &server, Connection::new(BOB, 42)).await; - let Connection(address, chain_id) = + let Connection { address, chain_id } = server.get_connection().expect("expected an active wallet connection"); assert_eq!(address, BOB); assert_eq!(chain_id, 42); @@ -317,7 +317,7 @@ mod tests { let mut server = create_server(); let client = client_with_token(&server); server.start().await.unwrap(); - connect_wallet(&client, &server, Connection(ALICE, 1)).await; + connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; // Create a browser transaction request let (tx_request_id, tx_request) = create_browser_transaction_request(); diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs index bda2dada4f67d..719fb2d8095a0 100644 --- a/crates/wallets/src/wallet_browser/signer.rs +++ b/crates/wallets/src/wallet_browser/signer.rs @@ -44,7 +44,7 @@ impl BrowserSigner { let start = Instant::now(); loop { - if let Some(Connection(address, chain_id)) = server.get_connection() { + if let Some(Connection { address, chain_id }) = server.get_connection() { let _ = sh_println!("Wallet connected: {}", address); let _ = sh_println!("Chain ID: {}", chain_id); diff --git a/crates/wallets/src/wallet_browser/types.rs b/crates/wallets/src/wallet_browser/types.rs index 52e6238bbbc0c..61f3edf3d85ca 100644 --- a/crates/wallets/src/wallet_browser/types.rs +++ b/crates/wallets/src/wallet_browser/types.rs @@ -112,11 +112,16 @@ pub(crate) struct BrowserSignResponse { /// Represents an active connection to a browser wallet. #[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)] -pub struct Connection(pub Address, pub ChainId); +pub struct Connection { + /// The address of the connected wallet. + pub address: Address, + /// The chain ID of the connected wallet. + pub chain_id: ChainId, +} impl Connection { /// Create a new connection instance. pub fn new(address: Address, chain_id: ChainId) -> Self { - Self(address, chain_id) + Self { address, chain_id } } } From ef21e1ece1f50eb7272a750411c0f97388592498 Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 3 Nov 2025 18:50:05 +0100 Subject: [PATCH 41/42] prefer non-blocking async api --- Cargo.lock | 1 - crates/wallets/Cargo.toml | 1 - crates/wallets/src/wallet_browser/handlers.rs | 16 ++--- crates/wallets/src/wallet_browser/mod.rs | 12 ++-- crates/wallets/src/wallet_browser/server.rs | 24 +++---- crates/wallets/src/wallet_browser/signer.rs | 2 +- crates/wallets/src/wallet_browser/state.rs | 66 +++++++++---------- 7 files changed, 60 insertions(+), 62 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b67a8a742d86c..9435cc63b2a35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5020,7 +5020,6 @@ dependencies = [ "eyre", "foundry-common", "foundry-config", - "parking_lot", "reqwest", "rpassword", "serde", diff --git a/crates/wallets/Cargo.toml b/crates/wallets/Cargo.toml index 78f593844e726..be5ebc7419880 100644 --- a/crates/wallets/Cargo.toml +++ b/crates/wallets/Cargo.toml @@ -31,7 +31,6 @@ axum.workspace = true foundry-common.workspace = true serde_json.workspace = true tokio = { workspace = true, features = ["macros"] } -parking_lot.workspace = true uuid.workspace = true webbrowser = "1.0.6" diff --git a/crates/wallets/src/wallet_browser/handlers.rs b/crates/wallets/src/wallet_browser/handlers.rs index 7a4adcfd07353..918bdbb161131 100644 --- a/crates/wallets/src/wallet_browser/handlers.rs +++ b/crates/wallets/src/wallet_browser/handlers.rs @@ -84,7 +84,7 @@ pub(crate) async fn serve_logo_png() -> impl axum::response::IntoResponse { pub(crate) async fn get_next_transaction_request( State(state): State>, ) -> Json> { - match state.read_next_transaction_request() { + match state.read_next_transaction_request().await { Some(tx) => Json(BrowserApiResponse::with_data(tx)), None => Json(BrowserApiResponse::error("No pending transaction request")), } @@ -97,7 +97,7 @@ pub(crate) async fn post_transaction_response( Json(body): Json, ) -> Json { // Ensure that the transaction request exists. - if !state.has_transaction_request(&body.id) { + if !state.has_transaction_request(&body.id).await { return Json(BrowserApiResponse::error("Unknown transaction id")); } @@ -127,7 +127,7 @@ pub(crate) async fn post_transaction_response( } } - state.add_transaction_response(body); + state.add_transaction_response(body).await; Json(BrowserApiResponse::ok()) } @@ -137,7 +137,7 @@ pub(crate) async fn post_transaction_response( pub(crate) async fn get_next_signing_request( State(state): State>, ) -> Json> { - match state.read_next_signing_request() { + match state.read_next_signing_request().await { Some(req) => Json(BrowserApiResponse::with_data(req)), None => Json(BrowserApiResponse::error("No pending signing request")), } @@ -150,7 +150,7 @@ pub(crate) async fn post_signing_response( Json(body): Json, ) -> Json { // Ensure that the signing request exists. - if !state.has_signing_request(&body.id) { + if !state.has_signing_request(&body.id).await { return Json(BrowserApiResponse::error("Unknown signing request id")); } @@ -167,7 +167,7 @@ pub(crate) async fn post_signing_response( _ => {} } - state.add_signing_response(body); + state.add_signing_response(body).await; Json(BrowserApiResponse::ok()) } @@ -177,7 +177,7 @@ pub(crate) async fn post_signing_response( pub(crate) async fn get_connection_info( State(state): State>, ) -> Json>> { - let connection = state.get_connection(); + let connection = state.get_connection().await; Json(BrowserApiResponse::with_data(connection)) } @@ -188,7 +188,7 @@ pub(crate) async fn post_connection_update( State(state): State>, Json(body): Json>, ) -> Json { - state.set_connection(body); + state.set_connection(body).await; Json(BrowserApiResponse::ok()) } diff --git a/crates/wallets/src/wallet_browser/mod.rs b/crates/wallets/src/wallet_browser/mod.rs index 6e80e4b4a074d..00cf2b46b1c44 100644 --- a/crates/wallets/src/wallet_browser/mod.rs +++ b/crates/wallets/src/wallet_browser/mod.rs @@ -40,7 +40,7 @@ mod tests { let client = client_with_token(&server); // Check initial state - assert!(!server.is_connected()); + assert!(!server.is_connected().await); assert!(!server.open_browser()); assert!(server.timeout() == DEFAULT_TIMEOUT); @@ -68,7 +68,7 @@ mod tests { // Check connection state let Connection { address, chain_id } = - server.get_connection().expect("expected an active wallet connection"); + server.get_connection().await.expect("expected an active wallet connection"); assert_eq!(address, ALICE); assert_eq!(chain_id, 1); @@ -76,14 +76,14 @@ mod tests { disconnect_wallet(&client, &server).await; // Check disconnected state - assert!(!server.is_connected()); + assert!(!server.is_connected().await); // Connect Bob's wallet connect_wallet(&client, &server, Connection::new(BOB, 42)).await; // Check connection state let Connection { address, chain_id } = - server.get_connection().expect("expected an active wallet connection"); + server.get_connection().await.expect("expected an active wallet connection"); assert_eq!(address, BOB); assert_eq!(chain_id, 42); @@ -100,14 +100,14 @@ mod tests { // Connect Alice, assert connected connect_wallet(&client, &server, Connection::new(ALICE, 1)).await; let Connection { address, chain_id } = - server.get_connection().expect("expected an active wallet connection"); + server.get_connection().await.expect("expected an active wallet connection"); assert_eq!(address, ALICE); assert_eq!(chain_id, 1); // Connect Bob, assert switched connect_wallet(&client, &server, Connection::new(BOB, 42)).await; let Connection { address, chain_id } = - server.get_connection().expect("expected an active wallet connection"); + server.get_connection().await.expect("expected an active wallet connection"); assert_eq!(address, BOB); assert_eq!(chain_id, 42); diff --git a/crates/wallets/src/wallet_browser/server.rs b/crates/wallets/src/wallet_browser/server.rs index 7373b9758b6d7..4f067c3bbcbab 100644 --- a/crates/wallets/src/wallet_browser/server.rs +++ b/crates/wallets/src/wallet_browser/server.rs @@ -106,13 +106,13 @@ impl BrowserWalletServer { } /// Check if a wallet is connected. - pub fn is_connected(&self) -> bool { - self.state.is_connected() + pub async fn is_connected(&self) -> bool { + self.state.is_connected().await } /// Get current wallet connection. - pub fn get_connection(&self) -> Option { - self.state.get_connection() + pub async fn get_connection(&self) -> Option { + self.state.get_connection().await } /// Request a transaction to be signed and sent via the browser wallet. @@ -120,18 +120,18 @@ impl BrowserWalletServer { &self, request: BrowserTransactionRequest, ) -> Result { - if !self.is_connected() { + if !self.is_connected().await { return Err(BrowserWalletError::NotConnected); } let tx_id = request.id; - self.state.add_transaction_request(request); + self.state.add_transaction_request(request).await; let start = Instant::now(); loop { - if let Some(response) = self.state.get_transaction_response(&tx_id) { + if let Some(response) = self.state.get_transaction_response(&tx_id).await { if let Some(hash) = response.hash { return Ok(hash); } else if let Some(error) = response.error { @@ -147,7 +147,7 @@ impl BrowserWalletServer { } if start.elapsed() > self.timeout { - self.state.remove_transaction_request(&tx_id); + self.state.remove_transaction_request(&tx_id).await; return Err(BrowserWalletError::Timeout { operation: "Transaction" }); } @@ -160,18 +160,18 @@ impl BrowserWalletServer { &self, request: BrowserSignRequest, ) -> Result { - if !self.is_connected() { + if !self.is_connected().await { return Err(BrowserWalletError::NotConnected); } let tx_id = request.id; - self.state.add_signing_request(request); + self.state.add_signing_request(request).await; let start = Instant::now(); loop { - if let Some(response) = self.state.get_signing_response(&tx_id) { + if let Some(response) = self.state.get_signing_response(&tx_id).await { if let Some(signature) = response.signature { return Ok(signature); } else if let Some(error) = response.error { @@ -187,7 +187,7 @@ impl BrowserWalletServer { } if start.elapsed() > self.timeout { - self.state.remove_signing_request(&tx_id); + self.state.remove_signing_request(&tx_id).await; return Err(BrowserWalletError::Timeout { operation: "Signing" }); } diff --git a/crates/wallets/src/wallet_browser/signer.rs b/crates/wallets/src/wallet_browser/signer.rs index 719fb2d8095a0..1e3df775e2598 100644 --- a/crates/wallets/src/wallet_browser/signer.rs +++ b/crates/wallets/src/wallet_browser/signer.rs @@ -44,7 +44,7 @@ impl BrowserSigner { let start = Instant::now(); loop { - if let Some(Connection { address, chain_id }) = server.get_connection() { + if let Some(Connection { address, chain_id }) = server.get_connection().await { let _ = sh_println!("Wallet connected: {}", address); let _ = sh_println!("Chain ID: {}", chain_id); diff --git a/crates/wallets/src/wallet_browser/state.rs b/crates/wallets/src/wallet_browser/state.rs index a88c79932d330..07954654a7185 100644 --- a/crates/wallets/src/wallet_browser/state.rs +++ b/crates/wallets/src/wallet_browser/state.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use parking_lot::Mutex; +use tokio::sync::{Mutex, RwLock}; use uuid::Uuid; use crate::wallet_browser::{ @@ -14,7 +14,7 @@ use crate::wallet_browser::{ #[derive(Debug, Clone)] pub(crate) struct BrowserWalletState { /// Current information about the wallet connection. - connection: Arc>>, + connection: Arc>>, /// Request/response queue for transactions. transactions: Arc>>, /// Request/response queue for signings. @@ -33,7 +33,7 @@ impl BrowserWalletState { /// Create a new browser wallet state. pub fn new(session_token: String, development: bool) -> Self { Self { - connection: Arc::new(Mutex::new(None)), + connection: Arc::new(RwLock::new(None)), transactions: Arc::new(Mutex::new(RequestQueue::new())), signings: Arc::new(Mutex::new(RequestQueue::new())), session_token, @@ -55,83 +55,83 @@ impl BrowserWalletState { } /// Check if wallet is connected. - pub fn is_connected(&self) -> bool { - self.connection.lock().is_some() + pub async fn is_connected(&self) -> bool { + self.connection.read().await.is_some() } /// Get current connection information. - pub fn get_connection(&self) -> Option { - *self.connection.lock() + pub async fn get_connection(&self) -> Option { + *self.connection.read().await } /// Set connection information. - pub fn set_connection(&self, connection: Option) { - *self.connection.lock() = connection; + pub async fn set_connection(&self, connection: Option) { + *self.connection.write().await = connection; } /// Add a transaction request. - pub fn add_transaction_request(&self, request: BrowserTransactionRequest) { - self.transactions.lock().add_request(request); + pub async fn add_transaction_request(&self, request: BrowserTransactionRequest) { + self.transactions.lock().await.add_request(request); } /// Check if a transaction request exists. - pub fn has_transaction_request(&self, id: &Uuid) -> bool { - self.transactions.lock().has_request(id) + pub async fn has_transaction_request(&self, id: &Uuid) -> bool { + self.transactions.lock().await.has_request(id) } /// Read the next transaction request. - pub fn read_next_transaction_request(&self) -> Option { - self.transactions.lock().read_request().cloned() + pub async fn read_next_transaction_request(&self) -> Option { + self.transactions.lock().await.read_request().cloned() } // Remove a transaction request. - pub fn remove_transaction_request(&self, id: &Uuid) { - self.transactions.lock().remove_request(id); + pub async fn remove_transaction_request(&self, id: &Uuid) { + self.transactions.lock().await.remove_request(id); } /// Add transaction response. - pub fn add_transaction_response(&self, response: BrowserTransactionResponse) { + pub async fn add_transaction_response(&self, response: BrowserTransactionResponse) { let id = response.id; - let mut transactions = self.transactions.lock(); + let mut transactions = self.transactions.lock().await; transactions.add_response(id, response); transactions.remove_request(&id); } /// Get transaction response, removing it from the queue. - pub fn get_transaction_response(&self, id: &Uuid) -> Option { - self.transactions.lock().get_response(id) + pub async fn get_transaction_response(&self, id: &Uuid) -> Option { + self.transactions.lock().await.get_response(id) } /// Add a signing request. - pub fn add_signing_request(&self, request: BrowserSignRequest) { - self.signings.lock().add_request(request); + pub async fn add_signing_request(&self, request: BrowserSignRequest) { + self.signings.lock().await.add_request(request); } /// Check if a signing request exists. - pub fn has_signing_request(&self, id: &Uuid) -> bool { - self.signings.lock().has_request(id) + pub async fn has_signing_request(&self, id: &Uuid) -> bool { + self.signings.lock().await.has_request(id) } /// Read the next signing request. - pub fn read_next_signing_request(&self) -> Option { - self.signings.lock().read_request().cloned() + pub async fn read_next_signing_request(&self) -> Option { + self.signings.lock().await.read_request().cloned() } /// Remove a signing request. - pub fn remove_signing_request(&self, id: &Uuid) { - self.signings.lock().remove_request(id); + pub async fn remove_signing_request(&self, id: &Uuid) { + self.signings.lock().await.remove_request(id); } /// Add signing response. - pub fn add_signing_response(&self, response: BrowserSignResponse) { + pub async fn add_signing_response(&self, response: BrowserSignResponse) { let id = response.id; - let mut signings = self.signings.lock(); + let mut signings = self.signings.lock().await; signings.add_response(id, response); signings.remove_request(&id); } /// Get signing response, removing it from the queue. - pub fn get_signing_response(&self, id: &Uuid) -> Option { - self.signings.lock().get_response(id) + pub async fn get_signing_response(&self, id: &Uuid) -> Option { + self.signings.lock().await.get_response(id) } } From 64c7f72b3eb947d2f3d5d156d8565dda7d2b3d6f Mon Sep 17 00:00:00 2001 From: zerosnacks Date: Mon, 10 Nov 2025 20:38:55 +0100 Subject: [PATCH 42/42] remove unintended bump of proptest --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 011d01d5d3c61..16c8d8e4aa8e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -345,7 +345,7 @@ mesc = "0.3" memchr = "2.7" num-format = "0.4" parking_lot = "0.12" -proptest = "1.9.0" +proptest = "1.8.0" rand = "0.9" rand_08 = { package = "rand", version = "0.8" } rand_chacha = "0.9.0"