///Module containing a contract's types and functions.
/**
```solidity
library BN254 {
struct G1Point { uint256 X; uint256 Y; }
struct G2Point { uint256[2] X; uint256[2] Y; }
}
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style,
clippy::empty_structs_with_brackets
)]
pub mod BN254 {
use super::*;
use alloy::sol_types as alloy_sol_types;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct G1Point { uint256 X; uint256 Y; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct G1Point {
#[allow(missing_docs)]
pub X: alloy::sol_types::private::primitives::aliases::U256,
#[allow(missing_docs)]
pub Y: alloy::sol_types::private::primitives::aliases::U256,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Uint<256>,
alloy::sol_types::sol_data::Uint<256>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::primitives::aliases::U256,
alloy::sol_types::private::primitives::aliases::U256,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
fn from(value: G1Point) -> Self {
(value.X, value.Y)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
X: tuple.0,
Y: tuple.1,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for G1Point {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.X,
),
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.Y,
),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for G1Point {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for G1Point {
const NAME: &'static str = "G1Point";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)")
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::SolType>::eip712_data_word(&self.X)
.0,
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::SolType>::eip712_data_word(&self.Y)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for G1Point {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X)
+ <alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out);
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct G2Point { uint256[2] X; uint256[2] Y; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct G2Point {
#[allow(missing_docs)]
pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize],
#[allow(missing_docs)]
pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize],
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::FixedArray<alloy::sol_types::sol_data::Uint<256>, 2usize>,
alloy::sol_types::sol_data::FixedArray<alloy::sol_types::sol_data::Uint<256>, 2usize>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
[alloy::sol_types::private::primitives::aliases::U256; 2usize],
[alloy::sol_types::private::primitives::aliases::U256; 2usize],
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
fn from(value: G2Point) -> Self {
(value.X, value.Y)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
X: tuple.0,
Y: tuple.1,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for G2Point {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::SolType>::tokenize(&self.X),
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::SolType>::tokenize(&self.Y),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for G2Point {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for G2Point {
const NAME: &'static str = "G2Point";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)")
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::SolType>::eip712_data_word(&self.X)
.0,
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::SolType>::eip712_data_word(&self.Y)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for G2Point {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.X
)
+ <alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.Y
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.X, out
);
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.Y, out
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
use alloy::contract as alloy_contract;
/**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
See the [wrapper's documentation](`BN254Instance`) for more details.*/
#[inline]
pub const fn new<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> BN254Instance<P, N> {
BN254Instance::<P, N>::new(address, provider)
}
/**A [`BN254`](self) instance.
Contains type-safe methods for interacting with an on-chain instance of the
[`BN254`](self) contract located at a given `address`, using a given
provider `P`.
If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
documentation on how to provide it), the `deploy` and `deploy_builder` methods can
be used to deploy a new instance of the contract.
See the [module-level documentation](self) for all the available methods.*/
#[derive(Clone)]
pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_tuple("BN254Instance").field(&self.address).finish()
}
}
/// Instantiation and getters/setters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BN254Instance<P, N>
{
/**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
See the [wrapper's documentation](`BN254Instance`) for more details.*/
#[inline]
pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
Self {
address,
provider,
_network: ::core::marker::PhantomData,
}
}
/// Returns a reference to the address.
#[inline]
pub const fn address(&self) -> &alloy_sol_types::private::Address {
&self.address
}
/// Sets the address.
#[inline]
pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
self.address = address;
}
/// Sets the address and returns `self`.
pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
self.set_address(address);
self
}
/// Returns a reference to the provider.
#[inline]
pub const fn provider(&self) -> &P {
&self.provider
}
}
impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
BN254Instance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BN254Instance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BN254Instance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
alloy_contract::Event::new_sol(&self.provider, &self.address)
}
}
}
///Module containing a contract's types and functions.
/**
```solidity
library IBLSSignatureChecker {
struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; }
}
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style,
clippy::empty_structs_with_brackets
)]
pub mod IBLSSignatureChecker {
use super::*;
use alloy::sol_types as alloy_sol_types;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct NonSignerStakesAndSignature { uint32[] nonSignerQuorumBitmapIndices; BN254.G1Point[] nonSignerPubkeys; BN254.G1Point[] quorumApks; BN254.G2Point apkG2; BN254.G1Point sigma; uint32[] quorumApkIndices; uint32[] totalStakeIndices; uint32[][] nonSignerStakeIndices; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct NonSignerStakesAndSignature {
#[allow(missing_docs)]
pub nonSignerQuorumBitmapIndices: alloy::sol_types::private::Vec<u32>,
#[allow(missing_docs)]
pub nonSignerPubkeys:
alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>,
#[allow(missing_docs)]
pub quorumApks:
alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>,
#[allow(missing_docs)]
pub apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub quorumApkIndices: alloy::sol_types::private::Vec<u32>,
#[allow(missing_docs)]
pub totalStakeIndices: alloy::sol_types::private::Vec<u32>,
#[allow(missing_docs)]
pub nonSignerStakeIndices:
alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
alloy::sol_types::sol_data::Array<BN254::G1Point>,
alloy::sol_types::sol_data::Array<BN254::G1Point>,
BN254::G2Point,
BN254::G1Point,
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Vec<u32>,
alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>,
alloy::sol_types::private::Vec<<BN254::G1Point as alloy::sol_types::SolType>::RustType>,
<BN254::G2Point as alloy::sol_types::SolType>::RustType,
<BN254::G1Point as alloy::sol_types::SolType>::RustType,
alloy::sol_types::private::Vec<u32>,
alloy::sol_types::private::Vec<u32>,
alloy::sol_types::private::Vec<alloy::sol_types::private::Vec<u32>>,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<NonSignerStakesAndSignature> for UnderlyingRustTuple<'_> {
fn from(value: NonSignerStakesAndSignature) -> Self {
(
value.nonSignerQuorumBitmapIndices,
value.nonSignerPubkeys,
value.quorumApks,
value.apkG2,
value.sigma,
value.quorumApkIndices,
value.totalStakeIndices,
value.nonSignerStakeIndices,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for NonSignerStakesAndSignature {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
nonSignerQuorumBitmapIndices: tuple.0,
nonSignerPubkeys: tuple.1,
quorumApks: tuple.2,
apkG2: tuple.3,
sigma: tuple.4,
quorumApkIndices: tuple.5,
totalStakeIndices: tuple.6,
nonSignerStakeIndices: tuple.7,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for NonSignerStakesAndSignature {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for NonSignerStakesAndSignature {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::SolType>::tokenize(
&self.nonSignerQuorumBitmapIndices,
),
<alloy::sol_types::sol_data::Array<
BN254::G1Point,
> as alloy_sol_types::SolType>::tokenize(&self.nonSignerPubkeys),
<alloy::sol_types::sol_data::Array<
BN254::G1Point,
> as alloy_sol_types::SolType>::tokenize(&self.quorumApks),
<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.apkG2),
<BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma),
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::SolType>::tokenize(&self.quorumApkIndices),
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::SolType>::tokenize(&self.totalStakeIndices),
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
>,
> as alloy_sol_types::SolType>::tokenize(&self.nonSignerStakeIndices),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for NonSignerStakesAndSignature {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for NonSignerStakesAndSignature {
const NAME: &'static str = "NonSignerStakesAndSignature";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed(
"NonSignerStakesAndSignature(uint32[] nonSignerQuorumBitmapIndices,BN254.G1Point[] nonSignerPubkeys,BN254.G1Point[] quorumApks,BN254.G2Point apkG2,BN254.G1Point sigma,uint32[] quorumApkIndices,uint32[] totalStakeIndices,uint32[][] nonSignerStakeIndices)",
)
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
let mut components = alloy_sol_types::private::Vec::with_capacity(4);
components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
components
.extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
components
.extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
components.push(<BN254::G2Point as alloy_sol_types::SolStruct>::eip712_root_type());
components
.extend(<BN254::G2Point as alloy_sol_types::SolStruct>::eip712_components());
components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
components
.extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
components
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.nonSignerQuorumBitmapIndices,
)
.0,
<alloy::sol_types::sol_data::Array<
BN254::G1Point,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.nonSignerPubkeys,
)
.0,
<alloy::sol_types::sol_data::Array<
BN254::G1Point,
> as alloy_sol_types::SolType>::eip712_data_word(&self.quorumApks)
.0,
<BN254::G2Point as alloy_sol_types::SolType>::eip712_data_word(
&self.apkG2,
)
.0,
<BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
&self.sigma,
)
.0,
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.quorumApkIndices,
)
.0,
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.totalStakeIndices,
)
.0,
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
>,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.nonSignerStakeIndices,
)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for NonSignerStakesAndSignature {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.nonSignerQuorumBitmapIndices,
)
+ <alloy::sol_types::sol_data::Array<
BN254::G1Point,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.nonSignerPubkeys,
)
+ <alloy::sol_types::sol_data::Array<
BN254::G1Point,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.quorumApks,
)
+ <BN254::G2Point as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.apkG2,
)
+ <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.sigma,
)
+ <alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.quorumApkIndices,
)
+ <alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.totalStakeIndices,
)
+ <alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
>,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.nonSignerStakeIndices,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.nonSignerQuorumBitmapIndices,
out,
);
<alloy::sol_types::sol_data::Array<
BN254::G1Point,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.nonSignerPubkeys,
out,
);
<alloy::sol_types::sol_data::Array<
BN254::G1Point,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.quorumApks,
out,
);
<BN254::G2Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.apkG2,
out,
);
<BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.sigma,
out,
);
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.quorumApkIndices,
out,
);
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.totalStakeIndices,
out,
);
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.nonSignerStakeIndices,
out,
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct QuorumStakeTotals { uint96[] signedStakeForQuorum; uint96[] totalStakeForQuorum; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct QuorumStakeTotals {
#[allow(missing_docs)]
pub signedStakeForQuorum:
alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
#[allow(missing_docs)]
pub totalStakeForQuorum:
alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<96>>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U96>,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<QuorumStakeTotals> for UnderlyingRustTuple<'_> {
fn from(value: QuorumStakeTotals) -> Self {
(value.signedStakeForQuorum, value.totalStakeForQuorum)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumStakeTotals {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
signedStakeForQuorum: tuple.0,
totalStakeForQuorum: tuple.1,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for QuorumStakeTotals {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for QuorumStakeTotals {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<96>,
> as alloy_sol_types::SolType>::tokenize(&self.signedStakeForQuorum),
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<96>,
> as alloy_sol_types::SolType>::tokenize(&self.totalStakeForQuorum),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for QuorumStakeTotals {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for QuorumStakeTotals {
const NAME: &'static str = "QuorumStakeTotals";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed(
"QuorumStakeTotals(uint96[] signedStakeForQuorum,uint96[] totalStakeForQuorum)",
)
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<96>,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.signedStakeForQuorum,
)
.0,
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<96>,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.totalStakeForQuorum,
)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for QuorumStakeTotals {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<96>,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.signedStakeForQuorum,
)
+ <alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<96>,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.totalStakeForQuorum,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<96>,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.signedStakeForQuorum,
out,
);
<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<96>,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.totalStakeForQuorum,
out,
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
use alloy::contract as alloy_contract;
/**Creates a new wrapper around an on-chain [`IBLSSignatureChecker`](self) contract instance.
See the [wrapper's documentation](`IBLSSignatureCheckerInstance`) for more details.*/
#[inline]
pub const fn new<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> IBLSSignatureCheckerInstance<P, N> {
IBLSSignatureCheckerInstance::<P, N>::new(address, provider)
}
/**A [`IBLSSignatureChecker`](self) instance.
Contains type-safe methods for interacting with an on-chain instance of the
[`IBLSSignatureChecker`](self) contract located at a given `address`, using a given
provider `P`.
If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
documentation on how to provide it), the `deploy` and `deploy_builder` methods can
be used to deploy a new instance of the contract.
See the [module-level documentation](self) for all the available methods.*/
#[derive(Clone)]
pub struct IBLSSignatureCheckerInstance<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for IBLSSignatureCheckerInstance<P, N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_tuple("IBLSSignatureCheckerInstance")
.field(&self.address)
.finish()
}
}
/// Instantiation and getters/setters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IBLSSignatureCheckerInstance<P, N>
{
/**Creates a new wrapper around an on-chain [`IBLSSignatureChecker`](self) contract instance.
See the [wrapper's documentation](`IBLSSignatureCheckerInstance`) for more details.*/
#[inline]
pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
Self {
address,
provider,
_network: ::core::marker::PhantomData,
}
}
/// Returns a reference to the address.
#[inline]
pub const fn address(&self) -> &alloy_sol_types::private::Address {
&self.address
}
/// Sets the address.
#[inline]
pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
self.address = address;
}
/// Sets the address and returns `self`.
pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
self.set_address(address);
self
}
/// Returns a reference to the provider.
#[inline]
pub const fn provider(&self) -> &P {
&self.provider
}
}
impl<P: ::core::clone::Clone, N> IBLSSignatureCheckerInstance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> IBLSSignatureCheckerInstance<P, N> {
IBLSSignatureCheckerInstance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IBLSSignatureCheckerInstance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IBLSSignatureCheckerInstance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
alloy_contract::Event::new_sol(&self.provider, &self.address)
}
}
}
///Module containing a contract's types and functions.
/**
```solidity
library IRewardsCoordinator {
struct OperatorDirectedRewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; OperatorReward[] operatorRewards; uint32 startTimestamp; uint32 duration; string description; }
struct OperatorReward { address operator; uint256 amount; }
struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; }
struct StrategyAndMultiplier { address strategy; uint96 multiplier; }
}
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style,
clippy::empty_structs_with_brackets
)]
pub mod IRewardsCoordinator {
use super::*;
use alloy::sol_types as alloy_sol_types;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct OperatorDirectedRewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; OperatorReward[] operatorRewards; uint32 startTimestamp; uint32 duration; string description; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct OperatorDirectedRewardsSubmission {
#[allow(missing_docs)]
pub strategiesAndMultipliers: alloy::sol_types::private::Vec<
<StrategyAndMultiplier as alloy::sol_types::SolType>::RustType,
>,
#[allow(missing_docs)]
pub token: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub operatorRewards:
alloy::sol_types::private::Vec<<OperatorReward as alloy::sol_types::SolType>::RustType>,
#[allow(missing_docs)]
pub startTimestamp: u32,
#[allow(missing_docs)]
pub duration: u32,
#[allow(missing_docs)]
pub description: alloy::sol_types::private::String,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Array<StrategyAndMultiplier>,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Array<OperatorReward>,
alloy::sol_types::sol_data::Uint<32>,
alloy::sol_types::sol_data::Uint<32>,
alloy::sol_types::sol_data::String,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Vec<
<StrategyAndMultiplier as alloy::sol_types::SolType>::RustType,
>,
alloy::sol_types::private::Address,
alloy::sol_types::private::Vec<<OperatorReward as alloy::sol_types::SolType>::RustType>,
u32,
u32,
alloy::sol_types::private::String,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<OperatorDirectedRewardsSubmission> for UnderlyingRustTuple<'_> {
fn from(value: OperatorDirectedRewardsSubmission) -> Self {
(
value.strategiesAndMultipliers,
value.token,
value.operatorRewards,
value.startTimestamp,
value.duration,
value.description,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorDirectedRewardsSubmission {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
strategiesAndMultipliers: tuple.0,
token: tuple.1,
operatorRewards: tuple.2,
startTimestamp: tuple.3,
duration: tuple.4,
description: tuple.5,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for OperatorDirectedRewardsSubmission {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for OperatorDirectedRewardsSubmission {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Array<
StrategyAndMultiplier,
> as alloy_sol_types::SolType>::tokenize(
&self.strategiesAndMultipliers,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.token,
),
<alloy::sol_types::sol_data::Array<
OperatorReward,
> as alloy_sol_types::SolType>::tokenize(&self.operatorRewards),
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::tokenize(&self.startTimestamp),
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::tokenize(&self.duration),
<alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
&self.description,
),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for OperatorDirectedRewardsSubmission {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for OperatorDirectedRewardsSubmission {
const NAME: &'static str = "OperatorDirectedRewardsSubmission";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed(
"OperatorDirectedRewardsSubmission(StrategyAndMultiplier[] strategiesAndMultipliers,address token,OperatorReward[] operatorRewards,uint32 startTimestamp,uint32 duration,string description)",
)
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
let mut components = alloy_sol_types::private::Vec::with_capacity(2);
components.push(
<StrategyAndMultiplier as alloy_sol_types::SolStruct>::eip712_root_type(),
);
components.extend(
<StrategyAndMultiplier as alloy_sol_types::SolStruct>::eip712_components(),
);
components.push(<OperatorReward as alloy_sol_types::SolStruct>::eip712_root_type());
components
.extend(<OperatorReward as alloy_sol_types::SolStruct>::eip712_components());
components
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Array<
StrategyAndMultiplier,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.strategiesAndMultipliers,
)
.0,
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
&self.token,
)
.0,
<alloy::sol_types::sol_data::Array<
OperatorReward,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.operatorRewards,
)
.0,
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.startTimestamp,
)
.0,
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::eip712_data_word(&self.duration)
.0,
<alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::eip712_data_word(
&self.description,
)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for OperatorDirectedRewardsSubmission {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::Array<
StrategyAndMultiplier,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.strategiesAndMultipliers,
)
+ <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.token,
)
+ <alloy::sol_types::sol_data::Array<
OperatorReward,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.operatorRewards,
)
+ <alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.startTimestamp,
)
+ <alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.duration,
)
+ <alloy::sol_types::sol_data::String as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.description,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Array<
StrategyAndMultiplier,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.strategiesAndMultipliers,
out,
);
<alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.token,
out,
);
<alloy::sol_types::sol_data::Array<
OperatorReward,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.operatorRewards,
out,
);
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.startTimestamp,
out,
);
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.duration,
out,
);
<alloy::sol_types::sol_data::String as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.description,
out,
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct OperatorReward { address operator; uint256 amount; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct OperatorReward {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub amount: alloy::sol_types::private::primitives::aliases::U256,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Uint<256>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
alloy::sol_types::private::primitives::aliases::U256,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<OperatorReward> for UnderlyingRustTuple<'_> {
fn from(value: OperatorReward) -> Self {
(value.operator, value.amount)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorReward {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operator: tuple.0,
amount: tuple.1,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for OperatorReward {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for OperatorReward {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.amount,
),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for OperatorReward {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for OperatorReward {
const NAME: &'static str = "OperatorReward";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed(
"OperatorReward(address operator,uint256 amount)",
)
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
&self.operator,
)
.0,
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::SolType>::eip712_data_word(&self.amount)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for OperatorReward {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.operator,
)
+ <alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.amount,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.operator,
out,
);
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.amount,
out,
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct RewardsSubmission { StrategyAndMultiplier[] strategiesAndMultipliers; address token; uint256 amount; uint32 startTimestamp; uint32 duration; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct RewardsSubmission {
#[allow(missing_docs)]
pub strategiesAndMultipliers: alloy::sol_types::private::Vec<
<StrategyAndMultiplier as alloy::sol_types::SolType>::RustType,
>,
#[allow(missing_docs)]
pub token: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub amount: alloy::sol_types::private::primitives::aliases::U256,
#[allow(missing_docs)]
pub startTimestamp: u32,
#[allow(missing_docs)]
pub duration: u32,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Array<StrategyAndMultiplier>,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Uint<256>,
alloy::sol_types::sol_data::Uint<32>,
alloy::sol_types::sol_data::Uint<32>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Vec<
<StrategyAndMultiplier as alloy::sol_types::SolType>::RustType,
>,
alloy::sol_types::private::Address,
alloy::sol_types::private::primitives::aliases::U256,
u32,
u32,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<RewardsSubmission> for UnderlyingRustTuple<'_> {
fn from(value: RewardsSubmission) -> Self {
(
value.strategiesAndMultipliers,
value.token,
value.amount,
value.startTimestamp,
value.duration,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for RewardsSubmission {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
strategiesAndMultipliers: tuple.0,
token: tuple.1,
amount: tuple.2,
startTimestamp: tuple.3,
duration: tuple.4,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for RewardsSubmission {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for RewardsSubmission {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Array<
StrategyAndMultiplier,
> as alloy_sol_types::SolType>::tokenize(
&self.strategiesAndMultipliers,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.token,
),
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::SolType>::tokenize(&self.amount),
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::tokenize(&self.startTimestamp),
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::tokenize(&self.duration),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for RewardsSubmission {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for RewardsSubmission {
const NAME: &'static str = "RewardsSubmission";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed(
"RewardsSubmission(StrategyAndMultiplier[] strategiesAndMultipliers,address token,uint256 amount,uint32 startTimestamp,uint32 duration)",
)
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
let mut components = alloy_sol_types::private::Vec::with_capacity(1);
components.push(
<StrategyAndMultiplier as alloy_sol_types::SolStruct>::eip712_root_type(),
);
components.extend(
<StrategyAndMultiplier as alloy_sol_types::SolStruct>::eip712_components(),
);
components
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Array<
StrategyAndMultiplier,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.strategiesAndMultipliers,
)
.0,
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
&self.token,
)
.0,
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::SolType>::eip712_data_word(&self.amount)
.0,
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.startTimestamp,
)
.0,
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::eip712_data_word(&self.duration)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for RewardsSubmission {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::Array<
StrategyAndMultiplier,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.strategiesAndMultipliers,
)
+ <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.token,
)
+ <alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.amount,
)
+ <alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.startTimestamp,
)
+ <alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.duration,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Array<
StrategyAndMultiplier,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.strategiesAndMultipliers,
out,
);
<alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.token,
out,
);
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.amount,
out,
);
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.startTimestamp,
out,
);
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.duration,
out,
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct StrategyAndMultiplier { address strategy; uint96 multiplier; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct StrategyAndMultiplier {
#[allow(missing_docs)]
pub strategy: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub multiplier: alloy::sol_types::private::primitives::aliases::U96,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Uint<96>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
alloy::sol_types::private::primitives::aliases::U96,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<StrategyAndMultiplier> for UnderlyingRustTuple<'_> {
fn from(value: StrategyAndMultiplier) -> Self {
(value.strategy, value.multiplier)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for StrategyAndMultiplier {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
strategy: tuple.0,
multiplier: tuple.1,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for StrategyAndMultiplier {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for StrategyAndMultiplier {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.strategy,
),
<alloy::sol_types::sol_data::Uint<96> as alloy_sol_types::SolType>::tokenize(
&self.multiplier,
),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for StrategyAndMultiplier {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for StrategyAndMultiplier {
const NAME: &'static str = "StrategyAndMultiplier";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed(
"StrategyAndMultiplier(address strategy,uint96 multiplier)",
)
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::eip712_data_word(
&self.strategy,
)
.0,
<alloy::sol_types::sol_data::Uint<
96,
> as alloy_sol_types::SolType>::eip712_data_word(&self.multiplier)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for StrategyAndMultiplier {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.strategy,
)
+ <alloy::sol_types::sol_data::Uint<
96,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.multiplier,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.strategy,
out,
);
<alloy::sol_types::sol_data::Uint<
96,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.multiplier,
out,
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
use alloy::contract as alloy_contract;
/**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance.
See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/
#[inline]
pub const fn new<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> IRewardsCoordinatorInstance<P, N> {
IRewardsCoordinatorInstance::<P, N>::new(address, provider)
}
/**A [`IRewardsCoordinator`](self) instance.
Contains type-safe methods for interacting with an on-chain instance of the
[`IRewardsCoordinator`](self) contract located at a given `address`, using a given
provider `P`.
If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
documentation on how to provide it), the `deploy` and `deploy_builder` methods can
be used to deploy a new instance of the contract.
See the [module-level documentation](self) for all the available methods.*/
#[derive(Clone)]
pub struct IRewardsCoordinatorInstance<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for IRewardsCoordinatorInstance<P, N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_tuple("IRewardsCoordinatorInstance")
.field(&self.address)
.finish()
}
}
/// Instantiation and getters/setters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IRewardsCoordinatorInstance<P, N>
{
/**Creates a new wrapper around an on-chain [`IRewardsCoordinator`](self) contract instance.
See the [wrapper's documentation](`IRewardsCoordinatorInstance`) for more details.*/
#[inline]
pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
Self {
address,
provider,
_network: ::core::marker::PhantomData,
}
}
/// Returns a reference to the address.
#[inline]
pub const fn address(&self) -> &alloy_sol_types::private::Address {
&self.address
}
/// Sets the address.
#[inline]
pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
self.address = address;
}
/// Sets the address and returns `self`.
pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
self.set_address(address);
self
}
/// Returns a reference to the provider.
#[inline]
pub const fn provider(&self) -> &P {
&self.provider
}
}
impl<P: ::core::clone::Clone, N> IRewardsCoordinatorInstance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> IRewardsCoordinatorInstance<P, N> {
IRewardsCoordinatorInstance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IRewardsCoordinatorInstance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IRewardsCoordinatorInstance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
alloy_contract::Event::new_sol(&self.provider, &self.address)
}
}
}
///Module containing a contract's types and functions.
/**
```solidity
library ISignatureUtils {
struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; }
}
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style,
clippy::empty_structs_with_brackets
)]
pub mod ISignatureUtils {
use super::*;
use alloy::sol_types as alloy_sol_types;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct SignatureWithSaltAndExpiry { bytes signature; bytes32 salt; uint256 expiry; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct SignatureWithSaltAndExpiry {
#[allow(missing_docs)]
pub signature: alloy::sol_types::private::Bytes,
#[allow(missing_docs)]
pub salt: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub expiry: alloy::sol_types::private::primitives::aliases::U256,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Bytes,
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Uint<256>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Bytes,
alloy::sol_types::private::FixedBytes<32>,
alloy::sol_types::private::primitives::aliases::U256,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<SignatureWithSaltAndExpiry> for UnderlyingRustTuple<'_> {
fn from(value: SignatureWithSaltAndExpiry) -> Self {
(value.signature, value.salt, value.expiry)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for SignatureWithSaltAndExpiry {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
signature: tuple.0,
salt: tuple.1,
expiry: tuple.2,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for SignatureWithSaltAndExpiry {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for SignatureWithSaltAndExpiry {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.signature,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.salt),
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::SolType>::tokenize(&self.expiry),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for SignatureWithSaltAndExpiry {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for SignatureWithSaltAndExpiry {
const NAME: &'static str = "SignatureWithSaltAndExpiry";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed(
"SignatureWithSaltAndExpiry(bytes signature,bytes32 salt,uint256 expiry)",
)
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::eip712_data_word(
&self.signature,
)
.0,
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::eip712_data_word(&self.salt)
.0,
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::SolType>::eip712_data_word(&self.expiry)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for SignatureWithSaltAndExpiry {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.signature,
)
+ <alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.salt)
+ <alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.expiry,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.signature,
out,
);
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.salt,
out,
);
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.expiry,
out,
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
use alloy::contract as alloy_contract;
/**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance.
See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/
#[inline]
pub const fn new<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> ISignatureUtilsInstance<P, N> {
ISignatureUtilsInstance::<P, N>::new(address, provider)
}
/**A [`ISignatureUtils`](self) instance.
Contains type-safe methods for interacting with an on-chain instance of the
[`ISignatureUtils`](self) contract located at a given `address`, using a given
provider `P`.
If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
documentation on how to provide it), the `deploy` and `deploy_builder` methods can
be used to deploy a new instance of the contract.
See the [module-level documentation](self) for all the available methods.*/
#[derive(Clone)]
pub struct ISignatureUtilsInstance<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for ISignatureUtilsInstance<P, N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_tuple("ISignatureUtilsInstance")
.field(&self.address)
.finish()
}
}
/// Instantiation and getters/setters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
ISignatureUtilsInstance<P, N>
{
/**Creates a new wrapper around an on-chain [`ISignatureUtils`](self) contract instance.
See the [wrapper's documentation](`ISignatureUtilsInstance`) for more details.*/
#[inline]
pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
Self {
address,
provider,
_network: ::core::marker::PhantomData,
}
}
/// Returns a reference to the address.
#[inline]
pub const fn address(&self) -> &alloy_sol_types::private::Address {
&self.address
}
/// Sets the address.
#[inline]
pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
self.address = address;
}
/// Sets the address and returns `self`.
pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
self.set_address(address);
self
}
/// Returns a reference to the provider.
#[inline]
pub const fn provider(&self) -> &P {
&self.provider
}
}
impl<P: ::core::clone::Clone, N> ISignatureUtilsInstance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> ISignatureUtilsInstance<P, N> {
ISignatureUtilsInstance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
ISignatureUtilsInstance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
ISignatureUtilsInstance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
alloy_contract::Event::new_sol(&self.provider, &self.address)
}
}
}
/**
Generated by the following Solidity interface...
```solidity
library BN254 {
struct G1Point {
uint256 X;
uint256 Y;
}
struct G2Point {
uint256[2] X;
uint256[2] Y;
}
}
library IBLSSignatureChecker {
struct NonSignerStakesAndSignature {
uint32[] nonSignerQuorumBitmapIndices;
BN254.G1Point[] nonSignerPubkeys;
BN254.G1Point[] quorumApks;
BN254.G2Point apkG2;
BN254.G1Point sigma;
uint32[] quorumApkIndices;
uint32[] totalStakeIndices;
uint32[][] nonSignerStakeIndices;
}
struct QuorumStakeTotals {
uint96[] signedStakeForQuorum;
uint96[] totalStakeForQuorum;
}
}
library IRewardsCoordinator {
struct OperatorDirectedRewardsSubmission {
StrategyAndMultiplier[] strategiesAndMultipliers;
address token;
OperatorReward[] operatorRewards;
uint32 startTimestamp;
uint32 duration;
string description;
}
struct OperatorReward {
address operator;
uint256 amount;
}
struct RewardsSubmission {
StrategyAndMultiplier[] strategiesAndMultipliers;
address token;
uint256 amount;
uint32 startTimestamp;
uint32 duration;
}
struct StrategyAndMultiplier {
address strategy;
uint96 multiplier;
}
}
library ISignatureUtils {
struct SignatureWithSaltAndExpiry {
bytes signature;
bytes32 salt;
uint256 expiry;
}
}
interface MockAvsServiceManager {
event Initialized(uint8 version);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator);
event StaleStakesForbiddenUpdate(bool value);
constructor(address _avsDirectory, address _registryCoordinator, address _stakeRegistry, address rewards_coordinator);
function avsDirectory() external view returns (address);
function blsApkRegistry() external view returns (address);
function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureChecker.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureChecker.QuorumStakeTotals memory, bytes32);
function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external;
function createOperatorDirectedAVSRewardsSubmission(IRewardsCoordinator.OperatorDirectedRewardsSubmission[] memory operatorDirectedRewardsSubmissions) external;
function delegation() external view returns (address);
function deregisterOperatorFromAVS(address operator) external;
function getOperatorRestakedStrategies(address operator) external view returns (address[] memory);
function getRestakeableStrategies() external view returns (address[] memory);
function initialize(address _initialOwner) external;
function owner() external view returns (address);
function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external;
function registryCoordinator() external view returns (address);
function renounceOwnership() external;
function rewardsInitiator() external view returns (address);
function setClaimerFor(address claimer) external;
function setRewardsInitiator(address newRewardsInitiator) external;
function setStaleStakesForbidden(bool value) external;
function stakeRegistry() external view returns (address);
function staleStakesForbidden() external view returns (bool);
function transferOwnership(address newOwner) external;
function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid);
function updateAVSMetadataURI(string memory _metadataURI) external;
}
```
...which was generated by the following JSON ABI:
```json
[
{
"type": "constructor",
"inputs": [
{
"name": "_avsDirectory",
"type": "address",
"internalType": "contract IAVSDirectory"
},
{
"name": "_registryCoordinator",
"type": "address",
"internalType": "contract IRegistryCoordinator"
},
{
"name": "_stakeRegistry",
"type": "address",
"internalType": "contract IStakeRegistry"
},
{
"name": "rewards_coordinator",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "avsDirectory",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "blsApkRegistry",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IBLSApkRegistry"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "checkSignatures",
"inputs": [
{
"name": "msgHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "quorumNumbers",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "referenceBlockNumber",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "params",
"type": "tuple",
"internalType": "struct IBLSSignatureChecker.NonSignerStakesAndSignature",
"components": [
{
"name": "nonSignerQuorumBitmapIndices",
"type": "uint32[]",
"internalType": "uint32[]"
},
{
"name": "nonSignerPubkeys",
"type": "tuple[]",
"internalType": "struct BN254.G1Point[]",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "quorumApks",
"type": "tuple[]",
"internalType": "struct BN254.G1Point[]",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "apkG2",
"type": "tuple",
"internalType": "struct BN254.G2Point",
"components": [
{
"name": "X",
"type": "uint256[2]",
"internalType": "uint256[2]"
},
{
"name": "Y",
"type": "uint256[2]",
"internalType": "uint256[2]"
}
]
},
{
"name": "sigma",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "quorumApkIndices",
"type": "uint32[]",
"internalType": "uint32[]"
},
{
"name": "totalStakeIndices",
"type": "uint32[]",
"internalType": "uint32[]"
},
{
"name": "nonSignerStakeIndices",
"type": "uint32[][]",
"internalType": "uint32[][]"
}
]
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct IBLSSignatureChecker.QuorumStakeTotals",
"components": [
{
"name": "signedStakeForQuorum",
"type": "uint96[]",
"internalType": "uint96[]"
},
{
"name": "totalStakeForQuorum",
"type": "uint96[]",
"internalType": "uint96[]"
}
]
},
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "createAVSRewardsSubmission",
"inputs": [
{
"name": "rewardsSubmissions",
"type": "tuple[]",
"internalType": "struct IRewardsCoordinator.RewardsSubmission[]",
"components": [
{
"name": "strategiesAndMultipliers",
"type": "tuple[]",
"internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]",
"components": [
{
"name": "strategy",
"type": "address",
"internalType": "contract IStrategy"
},
{
"name": "multiplier",
"type": "uint96",
"internalType": "uint96"
}
]
},
{
"name": "token",
"type": "address",
"internalType": "contract IERC20"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "startTimestamp",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "duration",
"type": "uint32",
"internalType": "uint32"
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "createOperatorDirectedAVSRewardsSubmission",
"inputs": [
{
"name": "operatorDirectedRewardsSubmissions",
"type": "tuple[]",
"internalType": "struct IRewardsCoordinator.OperatorDirectedRewardsSubmission[]",
"components": [
{
"name": "strategiesAndMultipliers",
"type": "tuple[]",
"internalType": "struct IRewardsCoordinator.StrategyAndMultiplier[]",
"components": [
{
"name": "strategy",
"type": "address",
"internalType": "contract IStrategy"
},
{
"name": "multiplier",
"type": "uint96",
"internalType": "uint96"
}
]
},
{
"name": "token",
"type": "address",
"internalType": "contract IERC20"
},
{
"name": "operatorRewards",
"type": "tuple[]",
"internalType": "struct IRewardsCoordinator.OperatorReward[]",
"components": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "startTimestamp",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "duration",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "description",
"type": "string",
"internalType": "string"
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "delegation",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IDelegationManager"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "deregisterOperatorFromAVS",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "getOperatorRestakedStrategies",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "address[]",
"internalType": "address[]"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getRestakeableStrategies",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address[]",
"internalType": "address[]"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "initialize",
"inputs": [
{
"name": "_initialOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "owner",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "registerOperatorToAVS",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "operatorSignature",
"type": "tuple",
"internalType": "struct ISignatureUtils.SignatureWithSaltAndExpiry",
"components": [
{
"name": "signature",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "expiry",
"type": "uint256",
"internalType": "uint256"
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "registryCoordinator",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IRegistryCoordinator"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "renounceOwnership",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "rewardsInitiator",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "setClaimerFor",
"inputs": [
{
"name": "claimer",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setRewardsInitiator",
"inputs": [
{
"name": "newRewardsInitiator",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setStaleStakesForbidden",
"inputs": [
{
"name": "value",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "stakeRegistry",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IStakeRegistry"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "staleStakesForbidden",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "transferOwnership",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "trySignatureAndApkVerification",
"inputs": [
{
"name": "msgHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "apk",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "apkG2",
"type": "tuple",
"internalType": "struct BN254.G2Point",
"components": [
{
"name": "X",
"type": "uint256[2]",
"internalType": "uint256[2]"
},
{
"name": "Y",
"type": "uint256[2]",
"internalType": "uint256[2]"
}
]
},
{
"name": "sigma",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
}
],
"outputs": [
{
"name": "pairingSuccessful",
"type": "bool",
"internalType": "bool"
},
{
"name": "siganatureIsValid",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "updateAVSMetadataURI",
"inputs": [
{
"name": "_metadataURI",
"type": "string",
"internalType": "string"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "event",
"name": "Initialized",
"inputs": [
{
"name": "version",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
}
],
"anonymous": false
},
{
"type": "event",
"name": "OwnershipTransferred",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "RewardsInitiatorUpdated",
"inputs": [
{
"name": "prevRewardsInitiator",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "newRewardsInitiator",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "StaleStakesForbiddenUpdate",
"inputs": [
{
"name": "value",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
}
]
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style,
clippy::empty_structs_with_brackets
)]
pub mod MockAvsServiceManager {
use super::*;
use alloy::sol_types as alloy_sol_types;
/// The creation / init bytecode of the contract.
///
/// ```text
///0x61018080604052346102415760808161405c8038038091610020828561036a565b833981010312610241578051906001600160a01b03821682036102415760208101516001600160a01b03811692909190838303610241576060610065604084016103a1565b9201516001600160a01b03811691908290036102415760805260a0528160c05260e0525f5460ff8160081c166103155760ff808216106102db575b5061010052604051636830483560e01b8152602081600481855afa90811561024d575f9161029a575b5061012052604051632efa2ca360e11b815290602090829060049082905afa90811561024d575f91610258575b50610140526101205160405163df5cf72360e01b815290602090829060049082906001600160a01b03165afa90811561024d575f91610207575b5061016052604051613ca690816103b6823960805181818161065801528181610e6101528181610f16015261270b015260a051818181610c0601528181610ce601526111c4015260c051818181610e3101528181611558015281816126db0152612b19015260e0518181816115f40152612b6501526101005181818161048f0152818161069c01528181611e5801528181611f4b01526125160152610120518181816106140152818161226901526123c70152610140518181816105d001526121a50152610160518181816110a8015261205e0152f35b90506020813d602011610245575b816102226020938361036a565b8101031261024157516001600160a01b0381168103610241575f610130565b5f80fd5b3d9150610215565b6040513d5f823e3d90fd5b90506020813d602011610292575b816102736020938361036a565b8101031261024157516001600160a01b0381168103610241575f6100f6565b3d9150610266565b90506020813d6020116102d3575b816102b56020938361036a565b81010312610241576004916102cb6020926103a1565b9150916100c9565b3d91506102a8565b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f6100a0565b60405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b601f909101601f19168101906001600160401b0382119082101761038d57604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036102415756fe60806040526004361015610011575f80fd5b5f3560e01c8063171f1d5b1461018457806333cfb7b71461017f5780633bc28c8c1461017a578063416c7e5e146101755780635df4594614610170578063683048351461016b5780636b3aa72e146101665780636d14a987146101615780636efb46361461015c578063715018a6146101575780638da5cb5b146101525780639926ee7d1461014d578063a0169ddd14610148578063a20b99bf14610143578063a364f4da1461013e578063a98fb35514610139578063b98d090814610134578063c4d66de81461012f578063df5cf7231461012a578063e481af9d14610125578063f2fde38b14610120578063fc299dee1461011b5763fce36c7d14610116575f80fd5b6111ab565b611183565b6110f2565b6110d7565b611093565b610f9e565b610f7c565b610eca565b610e0d565b610ccd565b610bde565b610b42565b610ac9565b610a6e565b6109d9565b610687565b610643565b6105ff565b6105bb565b61045d565b610424565b6103ec565b610331565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176101b857604052565b610189565b606081019081106001600160401b038211176101b857604052565b90601f801991011681019081106001600160401b038211176101b857604052565b60405190610209610100836101d8565b565b604051906102096040836101d8565b9061020960405192836101d8565b60409060e319011261025157604051906102418261019d565b60e4358252610104356020830152565b5f80fd5b91908260409103126102515760405161026d8161019d565b6020808294803584520135910152565b9080601f8301121561025157604051916102986040846101d8565b82906040810192831161025157905b8282106102b45750505090565b81358152602091820191016102a7565b906080606319830112610251576040516102dd8161019d565b60206102f882946102ef81606461027d565b845260a461027d565b910152565b91906080838203126102515760206102f86040519261031b8461019d565b60408496610329838261027d565b86520161027d565b34610251576101203660031901126102515760043560403660231901126102515761038960409182516103638161019d565b60243581526044356020820152610379366102c4565b9061038336610228565b926112bd565b8251911515825215156020820152f35b6001600160a01b0381160361025157565b60206040818301928281528451809452019201905f5b8181106103cd5750505090565b82516001600160a01b03168452602093840193909201916001016103c0565b346102515760203660031901126102515761042061041460043561040f81610399565b611539565b604051918291826103aa565b0390f35b346102515760203660031901126102515761045160043561044481610399565b61044c613369565b6133c1565b005b8015150361025157565b346102515760203660031901126102515760043561047a81610453565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ac575f91610571575b506001600160a01b031633036104e0576104519061341f565b60405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a490fd5b90506020813d6020116105a4575b8161058c602093836101d8565b81010312610251575161059e81610399565b5f6104c7565b3d915061057f565b6113b2565b5f91031261025157565b34610251575f366003190112610251576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610251575f366003190112610251576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610251575f366003190112610251576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610251575f366003190112610251576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6044359063ffffffff8216820361025157565b359063ffffffff8216820361025157565b6001600160401b0381116101b85760051b60200190565b9080601f8301121561025157813561071d816106ef565b9261072b60405194856101d8565b81845260208085019260051b82010192831161025157602001905b8282106107535750505090565b60208091610760846106de565b815201910190610746565b81601f82011215610251578035610781816106ef565b9261078f60405194856101d8565b81845260208085019260061b8401019281841161025157602001915b8383106107b9575050505090565b60206040916107c88486610255565b8152019201916107ab565b9080601f830112156102515781356107ea816106ef565b926107f860405194856101d8565b81845260208085019260051b820101918383116102515760208201905b83821061082457505050505090565b81356001600160401b0381116102515760209161084687848094880101610706565b815201910190610815565b91909161018081840312610251576108676101f9565b9281356001600160401b0381116102515781610884918401610706565b845260208201356001600160401b03811161025157816108a591840161076b565b602085015260408201356001600160401b03811161025157816108c991840161076b565b60408501526108db81606084016102fd565b60608501526108ed8160e08401610255565b60808501526101208201356001600160401b0381116102515781610912918401610706565b60a08501526101408201356001600160401b0381116102515781610937918401610706565b60c08501526101608201356001600160401b0381116102515761095a92016107d3565b60e0830152565b90602080835192838152019201905f5b81811061097e5750505090565b82516001600160601b0316845260209384019390920191600101610971565b9291906109d460209160408652826109c082516040808a01526080890190610961565b910151868203603f19016060880152610961565b930152565b34610251576080366003190112610251576004356024356001600160401b03811161025157366023820112156102515780600401356001600160401b03811161025157366024828401011161025157610a306106cb565b90606435936001600160401b038511610251576024610a56610a5e963690600401610851565b940190611d7b565b906104206040519283928361099d565b34610251575f36600319011261025157610a86613369565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610251575f366003190112610251576033546040516001600160a01b039091168152602090f35b6001600160401b0381116101b857601f01601f191660200190565b929192610b1882610af1565b91610b2660405193846101d8565b829481845281830111610251578281602093845f960137010152565b3461025157604036600319011261025157600435610b5f81610399565b602435906001600160401b03821161025157606060031983360301126102515760405190610b8c826101bd565b82600401356001600160401b038111610251578301366023820112156102515761045193610bc66044923690602460048201359101610b0c565b845260248101356020850152013560408301526126d5565b34610251575f602036600319011261025157600435610bfc81610399565b610c04613369565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156102515760405163a0169ddd60e01b81526001600160a01b039091166004820152905f908290602490829084905af180156105ac57610c6f575080f35b61045191505f906101d8565b906020600319830112610251576004356001600160401b0381116102515760040182601f82011215610251578035926001600160401b038411610251576020808301928560051b010111610251579190565b3461025157610cdb36610c7b565b90610ce46136c8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915f5b818110610d685750823b1561025157610d44925f9283604051809681958294634e5cd2fd60e11b84523060048501612926565b03925af180156105ac57610d5457005b80610d625f610451936101d8565b806105b1565b915f93915f915b610d87610d7d8684846127d3565b60408101906127f5565b9050831015610dc3576001610db981976020610db187610dab610d7d8c8a8a6127d3565b9061282a565b0135906114bf565b9301929550610d6f565b9390929460019250610e0790610df1813088610dec6020610de6898c33956127d3565b0161283a565b61375c565b86610e026020610de686898b6127d3565b6137a5565b01610d11565b34610251575f602036600319011261025157600435610e2b81610399565b610e5f337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614612648565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15610251576040516351b27a6d60e11b81526001600160a01b039091166004820152905f908290602490829084905af180156105ac57610c6f575080f35b34610251575f6020366003190112610251576004356001600160401b038111610251573660238201121561025157610f0c903690602481600401359101610b0c565b610f14613369565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156102515760405163a98fb35560e01b8152915f918391829084908290610f6a9060048301612a96565b03925af180156105ac57610c6f575080f35b34610251575f36600319011261025157602060ff609754166040519015158152f35b3461025157602036600319011261025157600435610fbb81610399565b61100b5f5491610fef610fd9610fd58560ff9060081c1690565b1590565b80948195611085575b8115611065575b50612aa7565b82611000600160ff195f5416175f55565b61104e575b8061384f565b61101157005b61101f61ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b61106061010061ff00195f5416175f55565b611005565b303b15915081611077575b505f610fe9565b60ff1660011490505f611070565b600160ff8216109150610fe2565b34610251575f366003190112610251576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610251575f36600319011261025157610420610414612b0a565b346102515760203660031901126102515760043561110f81610399565b611117613369565b6001600160a01b0381161561112f5761045190613680565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b34610251575f366003190112610251576065546040516001600160a01b039091168152602090f35b34610251576111b936610c7b565b906111c26136c8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915f5b8181106112215750823b1561025157610d44925f928360405180968195829463fce36c7d60e01b845260048401612d59565b806112506112376020610de66001958789612d37565b6040611244848789612d37565b0135903090339061375c565b6112796112636020610de6848789612d37565b86604061127185888a612d37565b0135916137a5565b016111ef565b634e487b7160e01b5f52603260045260245ffd5b9060028110156112a45760051b0190565b61127f565b634e487b7160e01b5f52601260045260245ffd5b61139961137661139f9561137061136985875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e084015261010083015261134081610120840103601f1981018352826101d8565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096612e72565b90612eb8565b9261137061138b611385612f40565b94613037565b91611394613153565b612e72565b9161319d565b9091565b90816020910312610251575190565b6040513d5f823e3d90fd5b9081602091031261025157516001600160c01b03811681036102515790565b90816020910312610251575160ff811681036102515790565b604051906114046020836101d8565b5f808352366020840137565b9061141a826106ef565b61142760405191826101d8565b8281528092611438601f19916106ef565b0190602036910137565b8051156112a45760200190565b9081518110156112a4570160200190565b634e487b7160e01b5f52601160045260245ffd5b906001820180921161148257565b611460565b906002820180921161148257565b906003820180921161148257565b906004820180921161148257565b906005820180921161148257565b9190820180921161148257565b6001600160601b0381160361025157565b90816040910312610251576020604051916114f78361019d565b805161150281610399565b8352015161150f816114cc565b602082015290565b80518210156112a45760209160051b010190565b5f1981146114825760010190565b6040516309aa152760e11b81526001600160a01b0391821660048201527f000000000000000000000000000000000000000000000000000000000000000090911690602081602481855afa9081156105ac576115b9916020915f916118b8575b506040518093819263871ef04960e01b8352600483019190602083019252565b0381855afa9081156105ac575f91611889575b506001600160c01b0316908115908115611826575b5061181a576115ef906132cb565b5f91907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690835b81518510156116cb57611674602061165161164b61163d898761144f565b516001600160f81b03191690565b60f81c90565b604051633ca5a5f560e01b815260ff909116600482015291829081906024820190565b0381875afa80156105ac57600192611693925f9261169b575b506114bf565b94019361161f565b6116bd91925060203d81116116c4575b6116b581836101d8565b8101906113a3565b905f61168d565b503d6116ab565b6116d6919450611410565b925f905f5b8151811015611814576116f461164b61163d838561144f565b604051633ca5a5f560e01b815260ff8216600482015290602082602481895afa9182156105ac575f926117f4575b50905f915b818310611739575050506001016116db565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa9182156105ac576117b88b6117a9836117a36117976001986117bd985f916117c6575b50516001600160a01b031690565b6001600160a01b031690565b92611517565b6001600160a01b039091169052565b61152b565b95019190611727565b6117e7915060403d81116117ed575b6117df81836101d8565b8101906114dd565b5f611789565b503d6117d5565b61180d91925060203d81116116c4576116b581836101d8565b905f611722565b50505050565b506118236113f5565b90565b604051639aa1653d60e01b81529150602090829060049082905afa80156105ac5760ff915f9161185a575b5016155f6115e1565b61187c915060203d602011611882575b61187481836101d8565b8101906113dc565b5f611851565b503d61186a565b6118ab915060203d6020116118b1575b6118a381836101d8565b8101906113bd565b5f6115cc565b503d611899565b6118cf9150823d84116116c4576116b581836101d8565b5f611599565b604051906118e28261019d565b60606020838281520152565b156118f557565b60405162461bcd60e51b815260206004820152603760248201525f516020613c515f395f51905f5260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608490fd5b1561195457565b60405162461bcd60e51b815260206004820152604160248201525f516020613c515f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a490fd5b156119bd57565b60a460405162461bcd60e51b815260206004820152604460248201525f516020613c515f395f51905f5260448201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b6084820152fd5b15611a2857565b60405162461bcd60e51b815260206004820152603c60248201525f516020613c515f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608490fd5b5f1981019190821161148257565b15611a9557565b608460405162461bcd60e51b815260206004820152604060248201525f516020613c515f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152fd5b908210156112a4570190565b15611aff57565b60405162461bcd60e51b815260206004820152606660248201525f516020613c515f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c490fd5b90816020910312610251575167ffffffffffffffff19811681036102515790565b15611bb457565b60405162461bcd60e51b815260206004820152606160248201525f516020613c515f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c490fd5b908160209103126102515751611823816114cc565b906001600160601b03809116911603906001600160601b03821161148257565b15611c7857565b60405162461bcd60e51b815260206004820152604360248201525f516020613c515f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a490fd5b15611ce357565b60405162461bcd60e51b815260206004820152603960248201525f516020613c515f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b818110611d655750505090565b8251845260209384019390920191600101611d58565b949392909193611d896118d5565b50611d958515156118ee565b60408401515185148061263a575b8061262c575b8061261e575b611db89061194d565b611dca602085015151855151146119b6565b611de163ffffffff431663ffffffff841610611a21565b611de961020b565b5f81525f602082015292611dfb6118d5565b611e0487611410565b6020820152611e1287611410565b8152611e1c6118d5565b92611e2b602088015151611410565b8452611e3b602088015151611410565b602085810191909152604051639aa1653d60e01b815290816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105ac57611ea4915f916125ff575b50611e9f368b87610b0c565b61345d565b985f965b6020890151805189101561202057602088611f15611f0b8c611f038f96868e611ee8611ed5868095611517565b5180515f526020015160205260405f2090565b611ef58484840151611517565b5282611fed575b0151611517565b519551611517565b5163ffffffff1690565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9182156105ac576113708a611fc28f611fbb8f8460208f92611fb293611faa8460019e611fc89e5f91611fd0575b508f8060c01b03169251611517565b520151611517565b51938d51611517565b51166134e4565b90613515565b970196611ea8565b611fe79150863d81116118b1576118a381836101d8565b5f611f9b565b61201b611ffd8484840151611517565b516120148484015161200e87611a80565b90611517565b5110611a8e565b611efc565b509095979496506120359198939299506135fb565b9161204260975460ff1690565b9081156125f7576040516318891fd760e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ac575f916125d8575b5091905b5f925b818410612101575050505050926120da6120d56120ce6120fb95856120ed98608060606020990151920151926112bd565b9190611c71565b611cdc565b0151604051928391602083019586611d3b565b03601f1981018352826101d8565b51902090565b92989596909399919794878b888c888d6124d5575b611f0b8260a061216461164b6121568461216c97612150612142611ed58f9c604060209f9e0151611517565b67ffffffffffffffff191690565b9b611aec565b356001600160f81b03191690565b970151611517565b604051631a2f32ab60e21b815260ff95909516600486015263ffffffff9182166024860152166044840152826064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105ac57612230611f0b8f958f906122288f978f96848f61222260c09661221b848f60209f90611efc6121569960409361164b9c5f916124a7575b5067ffffffffffffffff19918216911614611bad565b5190612eb8565b9c611aec565b960151611517565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105ac576122bd918c8f925f92612483575b5060206122af92930151611517565b906001600160601b03169052565b6122ea8c6122af8c6122e36122d6826020860151611517565b516001600160601b031690565b9251611517565b5f985f5b60208a01515181101561246a578b8d61232c8961231f61164b612156868f896123179151611517565b519487611aec565b60ff161c60019081161490565b61233b575b50506001016122ee565b8a8a6123c3859f948f968661237d8f9360e0612374611f0b95602061236c61164b612156839f6123839c8991611aec565b9a0151611517565b519b0151611517565b51611517565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830196909652919094166064850152839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ac578f612429908f936001959486955f92612434575b506117a36122af929351936124246122d68487611517565b611c51565b019a90508b8d612331565b6122af925061245c6117a39160203d8111612463575b61245481836101d8565b810190611c3c565b925061240c565b503d61244a565b5093919796996001919699509a94929a0192919061209d565b6122af92506124a0602091823d81116124635761245481836101d8565b92506122a0565b60206124c892503d81116124ce575b6124c081836101d8565b810190611b8c565b5f612205565b503d6124b6565b61251294506124ef925061164b9161215691602095611aec565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105ac5760208961216c8f938f60a08f9761164b6121568f8f90612150612142611ed58f60408b96918f61259990611f0b9f8a956121649e5f926125af575b5063ffffffff612593929316926114bf565b11611af8565b5050505050509750505050505092935050612116565b6020612593935063ffffffff916125d1913d81116116c4576116b581836101d8565b9250612581565b6125f1915060203d6020116116c4576116b581836101d8565b5f612096565b5f919061209a565b612618915060203d6020116118825761187481836101d8565b5f611e93565b5060e0840151518514611daf565b5060c0840151518514611da9565b5060a0840151518514611da3565b1561264f57565b60405162461bcd60e51b815260206004820152605260248201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360448201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560648201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608482015260a490fd5b612709337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614612648565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b15610251575f928392604051948580948193639926ee7d60e01b835260018060a01b0316600483015260406024830152604061277e82516060604486015260a48501906127af565b91602081015160648501520151608483015203925af180156105ac576127a15750565b80610d625f610209936101d8565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b91908110156112a45760051b8101359060be1981360301821215610251570190565b903590601e198136030182121561025157018035906001600160401b03821161025157602001918160061b3603831361025157565b91908110156112a45760061b0190565b3561182381610399565b9035601e19823603018112156102515701602081359101916001600160401b038211610251578160061b3603831361025157565b916020908281520191905f5b8181106128915750505090565b90919260408060019286356128a581610399565b848060a01b031681526001600160601b0360208801356128c4816114cc565b166020820152019401929101612884565b9035601e19823603018112156102515701602081359101916001600160401b03821161025157813603831361025157565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b0390911681526040602082018190528101839052600583901b810160609081019383923684900360be1901925f91908101905b838310612971575050505050505090565b90919293949596605f19828203018352873586811215610251578701906129a961299b8380612844565b60c0845260c0840191612878565b9160208101356129b881610399565b6001600160a01b03166020838101919091526129d76040830183612844565b848603604086015280865294909101935f5b818110612a6257505050612a51600193602093612a4384612a1d612a1060608998016106de565b63ffffffff166060850152565b612a39612a2c608083016106de565b63ffffffff166080850152565b60a08101906128d5565b9160a0818503910152612906565b990193019301919594939290612960565b9091946040806001928835612a7681610399565b848060a01b031681526020890135602082015201960191019190916129e9565b9060206118239281815201906127af565b15612aae57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b604051639aa1653d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa80156105ac5760ff915f91612d18575b50168015612d0e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316905f9081905b808310612cca5750612ba59150611410565b925f905f5b604051639aa1653d60e01b8152602081600481895afa80156105ac5760ff915f91612cac575b5016811015612ca557604051633ca5a5f560e01b815260ff821660048201819052602082602481895afa9182156105ac575f92612c85575b50905f915b818310612c1f57505050600101612baa565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa9182156105ac576117b88b6117a9836117a3611797600198612c7c985f916117c65750516001600160a01b031690565b95019190612c0d565b612c9e91925060203d81116116c4576116b581836101d8565b905f612c08565b5092505050565b612cc4915060203d81116118825761187481836101d8565b5f612bd0565b604051633ca5a5f560e01b815260ff84166004820152909190602081602481885afa80156105ac57600192612d05925f9261169b57506114bf565b92019190612b93565b50506118236113f5565b612d31915060203d6020116118825761187481836101d8565b5f612b5b565b91908110156112a45760051b81013590609e1981360301821215610251570190565b909180602083016020845252604082019260408260051b8401019381935f91609e1984360301915b858410612d92575050505050505090565b90919293949596603f19828203018352873590848212156102515760208091886001940190608063ffffffff612e1982612ddd612dcf8780612844565b60a0885260a0880191612878565b9587810135612deb81610399565b8a8060a01b0316888701526040810135604087015283612e0d606083016106de565b166060870152016106de565b16910152990193019401929195949390612d81565b60405190612e3b8261019d565b5f6020838281520152565b60405190610180612e5781846101d8565b368337565b60405190612e6b6020836101d8565b6020368337565b91906040906060612e81612e2e565b9485926020855192612e9385856101d8565b8436853780518452015160208301528482015260076107cf195a01fa15612eb657565bfe5b602092916080604092612ec9612e2e565b95869381865193612eda86866101d8565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa8015612eb65715612f0b57565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b604051612f4c8161019d565b6040908151612f5b83826101d8565b8236823781526020825191612f7084846101d8565b8336843701528051612f8282826101d8565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6020820152815190612fd883836101d8565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d602083015261302d835193846101d8565b8252602082015290565b5f516020613c315f395f51905f529061304e612e2e565b505f919006602060c0835b61314e575f935f516020613c315f395f51905f526003818681818009090860405161308485826101d8565b8436823784818560405161309882826101d8565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020613c315f395f51905f5260a082015260056107cf195a01fa8015612eb65761310290613b71565b519161314e575f516020613c315f395f51905f528280091461313957505f516020613c315f395f51905f5260015f94089293613059565b9293505061314561020b565b92835282015290565b6112a9565b61315b612e2e565b506040516131688161019d565b600181526002602082015290565b9060068202918083046006149015171561148257565b90600c8110156112a45760051b0190565b939290916131ab604061021a565b94855260208501526131bd604061021a565b91825260208201526131cd612e46565b925f5b600281106131fa575050506020610180926131e9612e5c565b93849160086201d4c0fa9151151590565b80613206600192613176565b6132108285611293565b515161321c828961318c565b5260206132298386611293565b51015161323e61323883611474565b8961318c565b526132498286611293565b51515161325861323883611487565b5261326e6132668387611293565b515160200190565b5161327b61323883611495565b5260206132888387611293565b51015151613298613238836114a3565b526132c46132be6132b760206132ae868a611293565b51015160200190565b51926114b1565b8861318c565b52016131d0565b61ffff6132d7826134e4565b166132e181610af1565b906132ef60405192836101d8565b8082526132fe601f1991610af1565b013660208301375f5f5b825182108061335e575b15613357576001811b8416613330575b61332b9061152b565b613308565b90600161332b9160ff60f81b8460f81b165f1a61334d828761144f565b5301919050613322565b5050905090565b506101008110613312565b6033546001600160a01b0316330361337d57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b606554604080516001600160a01b038084168252841660208201529192917fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e39190a16001600160a01b03166001600160a01b03199190911617606555565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b90600161346b60ff93613944565b928392161b11156134795790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b805f915b6134f0575090565b5f1981018181116114825761ffff9116911661ffff81146114825760010190806134e8565b9061351e612e2e565b5061ffff8116906102008210156135c357600182146135be5761353f61020b565b5f81525f602082015292906001905f925b61ffff831685101561356457505050505090565b600161ffff831660ff86161c81161461359e575b60016135946135898360ff94612eb8565b9460011b61fffe1690565b9401169291613550565b9460016135946135896135b38960ff95612eb8565b989350505050613578565b505090565b60405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606490fd5b613603612e2e565b50805190811580613674575b156136305750506040516136246040826101d8565b5f81525f602082015290565b60205f516020613c315f395f51905f52910151065f516020613c315f395f51905f52035f516020613c315f395f51905f528111611482576040519161302d8361019d565b5060208101511561360f565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6065546001600160a01b031633036136dc57565b60405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a490fd5b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152610209916137a06084836101d8565b613a9f565b604051636eb1769f60e11b81523060048201526001600160a01b0383166024820152602081806044810103816001600160a01b0386165afa9081156105ac57610209946137a0926137fc925f9161383057506114bf565b60405163095ea7b360e01b60208201526001600160a01b0394909416602485015260448085019190915283526064836101d8565b613849915060203d6020116116c4576116b581836101d8565b5f61168d565b9060ff5f5460081c16156138695761044c61020992613680565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b156138c957565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b906101008251116139b4578151156139af5761397261396861164b61163d85611442565b60ff600191161b90565b6001905b83518210156139aa5760019061399561396861164b61163d868961144f565b906139a18183116138c2565b17910190613976565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b90816020910312610251575161182381610453565b15613a4757565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b60018060a01b03169060405190613ab76040836101d8565b602082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020830152823b15613b2c575f81613b07948260208195519301915af1613b01613bbd565b90613bec565b805180613b12575050565b81602080613b27936102099501019101613a2b565b613a40565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b15613b7857565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fd5b3d15613be7573d90613bce82610af1565b91613bdc60405193846101d8565b82523d5f602084013e565b606090565b90919015613bf8575090565b815115613c085750805190602001fd5b60405162461bcd60e51b815260206004820152908190613c2c9060248301906127af565b0390fdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122072b4b98d2c34347f1c3b40046af199ce34fe4bad7aa7dd02570af40e3decdf7964736f6c634300081b0033
/// ```
#[rustfmt::skip]
#[allow(clippy::all)]
pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
b"a\x01\x80\x80`@R4a\x02AW`\x80\x81a@\\\x808\x03\x80\x91a\0 \x82\x85a\x03jV[\x839\x81\x01\x03\x12a\x02AW\x80Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x02AW` \x81\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x92\x90\x91\x90\x83\x83\x03a\x02AW``a\0e`@\x84\x01a\x03\xA1V[\x92\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x91\x90\x82\x90\x03a\x02AW`\x80R`\xA0R\x81`\xC0R`\xE0R_T`\xFF\x81`\x08\x1C\x16a\x03\x15W`\xFF\x80\x82\x16\x10a\x02\xDBW[Pa\x01\0R`@Qch0H5`\xE0\x1B\x81R` \x81`\x04\x81\x85Z\xFA\x90\x81\x15a\x02MW_\x91a\x02\x9AW[Pa\x01 R`@Qc.\xFA,\xA3`\xE1\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90Z\xFA\x90\x81\x15a\x02MW_\x91a\x02XW[Pa\x01@Ra\x01 Q`@Qc\xDF\\\xF7#`\xE0\x1B\x81R\x90` \x90\x82\x90`\x04\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x02MW_\x91a\x02\x07W[Pa\x01`R`@Qa<\xA6\x90\x81a\x03\xB6\x829`\x80Q\x81\x81\x81a\x06X\x01R\x81\x81a\x0Ea\x01R\x81\x81a\x0F\x16\x01Ra'\x0B\x01R`\xA0Q\x81\x81\x81a\x0C\x06\x01R\x81\x81a\x0C\xE6\x01Ra\x11\xC4\x01R`\xC0Q\x81\x81\x81a\x0E1\x01R\x81\x81a\x15X\x01R\x81\x81a&\xDB\x01Ra+\x19\x01R`\xE0Q\x81\x81\x81a\x15\xF4\x01Ra+e\x01Ra\x01\0Q\x81\x81\x81a\x04\x8F\x01R\x81\x81a\x06\x9C\x01R\x81\x81a\x1EX\x01R\x81\x81a\x1FK\x01Ra%\x16\x01Ra\x01 Q\x81\x81\x81a\x06\x14\x01R\x81\x81a\"i\x01Ra#\xC7\x01Ra\x01@Q\x81\x81\x81a\x05\xD0\x01Ra!\xA5\x01Ra\x01`Q\x81\x81\x81a\x10\xA8\x01Ra ^\x01R\xF3[\x90P` \x81=` \x11a\x02EW[\x81a\x02\"` \x93\x83a\x03jV[\x81\x01\x03\x12a\x02AWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02AW_a\x010V[_\x80\xFD[=\x91Pa\x02\x15V[`@Q=_\x82>=\x90\xFD[\x90P` \x81=` \x11a\x02\x92W[\x81a\x02s` \x93\x83a\x03jV[\x81\x01\x03\x12a\x02AWQ`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x02AW_a\0\xF6V[=\x91Pa\x02fV[\x90P` \x81=` \x11a\x02\xD3W[\x81a\x02\xB5` \x93\x83a\x03jV[\x81\x01\x03\x12a\x02AW`\x04\x91a\x02\xCB` \x92a\x03\xA1V[\x91P\x91a\0\xC9V[=\x91Pa\x02\xA8V[`\xFF\x90\x81\x19\x16\x17_U\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98` `@Q`\xFF\x81R\xA1_a\0\xA0V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x90\xFD[`\x1F\x90\x91\x01`\x1F\x19\x16\x81\x01\x90`\x01`\x01`@\x1B\x03\x82\x11\x90\x82\x10\x17a\x03\x8DW`@RV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[Q\x90`\x01`\x01`\xA0\x1B\x03\x82\x16\x82\x03a\x02AWV\xFE`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x17\x1F\x1D[\x14a\x01\x84W\x80c3\xCF\xB7\xB7\x14a\x01\x7FW\x80c;\xC2\x8C\x8C\x14a\x01zW\x80cAl~^\x14a\x01uW\x80c]\xF4YF\x14a\x01pW\x80ch0H5\x14a\x01kW\x80ck:\xA7.\x14a\x01fW\x80cm\x14\xA9\x87\x14a\x01aW\x80cn\xFBF6\x14a\x01\\W\x80cqP\x18\xA6\x14a\x01WW\x80c\x8D\xA5\xCB[\x14a\x01RW\x80c\x99&\xEE}\x14a\x01MW\x80c\xA0\x16\x9D\xDD\x14a\x01HW\x80c\xA2\x0B\x99\xBF\x14a\x01CW\x80c\xA3d\xF4\xDA\x14a\x01>W\x80c\xA9\x8F\xB3U\x14a\x019W\x80c\xB9\x8D\t\x08\x14a\x014W\x80c\xC4\xD6m\xE8\x14a\x01/W\x80c\xDF\\\xF7#\x14a\x01*W\x80c\xE4\x81\xAF\x9D\x14a\x01%W\x80c\xF2\xFD\xE3\x8B\x14a\x01 W\x80c\xFC)\x9D\xEE\x14a\x01\x1BWc\xFC\xE3l}\x14a\x01\x16W_\x80\xFD[a\x11\xABV[a\x11\x83V[a\x10\xF2V[a\x10\xD7V[a\x10\x93V[a\x0F\x9EV[a\x0F|V[a\x0E\xCAV[a\x0E\rV[a\x0C\xCDV[a\x0B\xDEV[a\x0BBV[a\n\xC9V[a\nnV[a\t\xD9V[a\x06\x87V[a\x06CV[a\x05\xFFV[a\x05\xBBV[a\x04]V[a\x04$V[a\x03\xECV[a\x031V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x01\xB8W`@RV[a\x01\x89V[``\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x01\xB8W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x01\xB8W`@RV[`@Q\x90a\x02\ta\x01\0\x83a\x01\xD8V[V[`@Q\x90a\x02\t`@\x83a\x01\xD8V[\x90a\x02\t`@Q\x92\x83a\x01\xD8V[`@\x90`\xE3\x19\x01\x12a\x02QW`@Q\x90a\x02A\x82a\x01\x9DV[`\xE45\x82Ra\x01\x045` \x83\x01RV[_\x80\xFD[\x91\x90\x82`@\x91\x03\x12a\x02QW`@Qa\x02m\x81a\x01\x9DV[` \x80\x82\x94\x805\x84R\x015\x91\x01RV[\x90\x80`\x1F\x83\x01\x12\x15a\x02QW`@Q\x91a\x02\x98`@\x84a\x01\xD8V[\x82\x90`@\x81\x01\x92\x83\x11a\x02QW\x90[\x82\x82\x10a\x02\xB4WPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x02\xA7V[\x90`\x80`c\x19\x83\x01\x12a\x02QW`@Qa\x02\xDD\x81a\x01\x9DV[` a\x02\xF8\x82\x94a\x02\xEF\x81`da\x02}V[\x84R`\xA4a\x02}V[\x91\x01RV[\x91\x90`\x80\x83\x82\x03\x12a\x02QW` a\x02\xF8`@Q\x92a\x03\x1B\x84a\x01\x9DV[`@\x84\x96a\x03)\x83\x82a\x02}V[\x86R\x01a\x02}V[4a\x02QWa\x01 6`\x03\x19\x01\x12a\x02QW`\x045`@6`#\x19\x01\x12a\x02QWa\x03\x89`@\x91\x82Qa\x03c\x81a\x01\x9DV[`$5\x81R`D5` \x82\x01Ra\x03y6a\x02\xC4V[\x90a\x03\x836a\x02(V[\x92a\x12\xBDV[\x82Q\x91\x15\x15\x82R\x15\x15` \x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x02QWV[` `@\x81\x83\x01\x92\x82\x81R\x84Q\x80\x94R\x01\x92\x01\x90_[\x81\x81\x10a\x03\xCDWPPP\x90V[\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x03\xC0V[4a\x02QW` 6`\x03\x19\x01\x12a\x02QWa\x04 a\x04\x14`\x045a\x04\x0F\x81a\x03\x99V[a\x159V[`@Q\x91\x82\x91\x82a\x03\xAAV[\x03\x90\xF3[4a\x02QW` 6`\x03\x19\x01\x12a\x02QWa\x04Q`\x045a\x04D\x81a\x03\x99V[a\x04La3iV[a3\xC1V[\0[\x80\x15\x15\x03a\x02QWV[4a\x02QW` 6`\x03\x19\x01\x12a\x02QW`\x045a\x04z\x81a\x04SV[`@Qc\x8D\xA5\xCB[`\xE0\x1B\x81R` \x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x05\xACW_\x91a\x05qW[P`\x01`\x01`\xA0\x1B\x03\x163\x03a\x04\xE0Wa\x04Q\x90a4\x1FV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FBLSSignatureChecker.onlyCoordina`D\x82\x01R\x7FtorOwner: caller is not the owne`d\x82\x01R\x7Fr of the registryCoordinator\0\0\0\0`\x84\x82\x01R`\xA4\x90\xFD[\x90P` \x81=` \x11a\x05\xA4W[\x81a\x05\x8C` \x93\x83a\x01\xD8V[\x81\x01\x03\x12a\x02QWQa\x05\x9E\x81a\x03\x99V[_a\x04\xC7V[=\x91Pa\x05\x7FV[a\x13\xB2V[_\x91\x03\x12a\x02QWV[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[`D5\x90c\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02QWV[5\x90c\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02QWV[`\x01`\x01`@\x1B\x03\x81\x11a\x01\xB8W`\x05\x1B` \x01\x90V[\x90\x80`\x1F\x83\x01\x12\x15a\x02QW\x815a\x07\x1D\x81a\x06\xEFV[\x92a\x07+`@Q\x94\x85a\x01\xD8V[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x02QW` \x01\x90[\x82\x82\x10a\x07SWPPP\x90V[` \x80\x91a\x07`\x84a\x06\xDEV[\x81R\x01\x91\x01\x90a\x07FV[\x81`\x1F\x82\x01\x12\x15a\x02QW\x805a\x07\x81\x81a\x06\xEFV[\x92a\x07\x8F`@Q\x94\x85a\x01\xD8V[\x81\x84R` \x80\x85\x01\x92`\x06\x1B\x84\x01\x01\x92\x81\x84\x11a\x02QW` \x01\x91[\x83\x83\x10a\x07\xB9WPPPP\x90V[` `@\x91a\x07\xC8\x84\x86a\x02UV[\x81R\x01\x92\x01\x91a\x07\xABV[\x90\x80`\x1F\x83\x01\x12\x15a\x02QW\x815a\x07\xEA\x81a\x06\xEFV[\x92a\x07\xF8`@Q\x94\x85a\x01\xD8V[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x91\x83\x83\x11a\x02QW` \x82\x01\x90[\x83\x82\x10a\x08$WPPPPP\x90V[\x815`\x01`\x01`@\x1B\x03\x81\x11a\x02QW` \x91a\x08F\x87\x84\x80\x94\x88\x01\x01a\x07\x06V[\x81R\x01\x91\x01\x90a\x08\x15V[\x91\x90\x91a\x01\x80\x81\x84\x03\x12a\x02QWa\x08ga\x01\xF9V[\x92\x815`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x81a\x08\x84\x91\x84\x01a\x07\x06V[\x84R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x81a\x08\xA5\x91\x84\x01a\x07kV[` \x85\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x81a\x08\xC9\x91\x84\x01a\x07kV[`@\x85\x01Ra\x08\xDB\x81``\x84\x01a\x02\xFDV[``\x85\x01Ra\x08\xED\x81`\xE0\x84\x01a\x02UV[`\x80\x85\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x81a\t\x12\x91\x84\x01a\x07\x06V[`\xA0\x85\x01Ra\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x81a\t7\x91\x84\x01a\x07\x06V[`\xC0\x85\x01Ra\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QWa\tZ\x92\x01a\x07\xD3V[`\xE0\x83\x01RV[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\t~WPPP\x90V[\x82Q`\x01`\x01``\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\tqV[\x92\x91\x90a\t\xD4` \x91`@\x86R\x82a\t\xC0\x82Q`@\x80\x8A\x01R`\x80\x89\x01\x90a\taV[\x91\x01Q\x86\x82\x03`?\x19\x01``\x88\x01Ra\taV[\x93\x01RV[4a\x02QW`\x806`\x03\x19\x01\x12a\x02QW`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x02QW6`#\x82\x01\x12\x15a\x02QW\x80`\x04\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW6`$\x82\x84\x01\x01\x11a\x02QWa\n0a\x06\xCBV[\x90`d5\x93`\x01`\x01`@\x1B\x03\x85\x11a\x02QW`$a\nVa\n^\x966\x90`\x04\x01a\x08QV[\x94\x01\x90a\x1D{V[\x90a\x04 `@Q\x92\x83\x92\x83a\t\x9DV[4a\x02QW_6`\x03\x19\x01\x12a\x02QWa\n\x86a3iV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x90\x91U_\x90`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x82\x80\xA3\0[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`3T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`\x01`\x01`@\x1B\x03\x81\x11a\x01\xB8W`\x1F\x01`\x1F\x19\x16` \x01\x90V[\x92\x91\x92a\x0B\x18\x82a\n\xF1V[\x91a\x0B&`@Q\x93\x84a\x01\xD8V[\x82\x94\x81\x84R\x81\x83\x01\x11a\x02QW\x82\x81` \x93\x84_\x96\x017\x01\x01RV[4a\x02QW`@6`\x03\x19\x01\x12a\x02QW`\x045a\x0B_\x81a\x03\x99V[`$5\x90`\x01`\x01`@\x1B\x03\x82\x11a\x02QW```\x03\x19\x836\x03\x01\x12a\x02QW`@Q\x90a\x0B\x8C\x82a\x01\xBDV[\x82`\x04\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x83\x016`#\x82\x01\x12\x15a\x02QWa\x04Q\x93a\x0B\xC6`D\x926\x90`$`\x04\x82\x015\x91\x01a\x0B\x0CV[\x84R`$\x81\x015` \x85\x01R\x015`@\x83\x01Ra&\xD5V[4a\x02QW_` 6`\x03\x19\x01\x12a\x02QW`\x045a\x0B\xFC\x81a\x03\x99V[a\x0C\x04a3iV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x02QW`@Qc\xA0\x16\x9D\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R\x90_\x90\x82\x90`$\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x05\xACWa\x0CoWP\x80\xF3[a\x04Q\x91P_\x90a\x01\xD8V[\x90` `\x03\x19\x83\x01\x12a\x02QW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x02QW`\x04\x01\x82`\x1F\x82\x01\x12\x15a\x02QW\x805\x92`\x01`\x01`@\x1B\x03\x84\x11a\x02QW` \x80\x83\x01\x92\x85`\x05\x1B\x01\x01\x11a\x02QW\x91\x90V[4a\x02QWa\x0C\xDB6a\x0C{V[\x90a\x0C\xE4a6\xC8V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x91_[\x81\x81\x10a\rhWP\x82;\x15a\x02QWa\rD\x92_\x92\x83`@Q\x80\x96\x81\x95\x82\x94cN\\\xD2\xFD`\xE1\x1B\x84R0`\x04\x85\x01a)&V[\x03\x92Z\xF1\x80\x15a\x05\xACWa\rTW\0[\x80a\rb_a\x04Q\x93a\x01\xD8V[\x80a\x05\xB1V[\x91_\x93\x91_\x91[a\r\x87a\r}\x86\x84\x84a'\xD3V[`@\x81\x01\x90a'\xF5V[\x90P\x83\x10\x15a\r\xC3W`\x01a\r\xB9\x81\x97` a\r\xB1\x87a\r\xABa\r}\x8C\x8A\x8Aa'\xD3V[\x90a(*V[\x015\x90a\x14\xBFV[\x93\x01\x92\x95Pa\roV[\x93\x90\x92\x94`\x01\x92Pa\x0E\x07\x90a\r\xF1\x810\x88a\r\xEC` a\r\xE6\x89\x8C3\x95a'\xD3V[\x01a(:V[a7\\V[\x86a\x0E\x02` a\r\xE6\x86\x89\x8Ba'\xD3V[a7\xA5V[\x01a\r\x11V[4a\x02QW_` 6`\x03\x19\x01\x12a\x02QW`\x045a\x0E+\x81a\x03\x99V[a\x0E_3\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x14a&HV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x02QW`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R\x90_\x90\x82\x90`$\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x05\xACWa\x0CoWP\x80\xF3[4a\x02QW_` 6`\x03\x19\x01\x12a\x02QW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x02QW6`#\x82\x01\x12\x15a\x02QWa\x0F\x0C\x906\x90`$\x81`\x04\x015\x91\x01a\x0B\x0CV[a\x0F\x14a3iV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x02QW`@Qc\xA9\x8F\xB3U`\xE0\x1B\x81R\x91_\x91\x83\x91\x82\x90\x84\x90\x82\x90a\x0Fj\x90`\x04\x83\x01a*\x96V[\x03\x92Z\xF1\x80\x15a\x05\xACWa\x0CoWP\x80\xF3[4a\x02QW_6`\x03\x19\x01\x12a\x02QW` `\xFF`\x97T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x02QW` 6`\x03\x19\x01\x12a\x02QW`\x045a\x0F\xBB\x81a\x03\x99V[a\x10\x0B_T\x91a\x0F\xEFa\x0F\xD9a\x0F\xD5\x85`\xFF\x90`\x08\x1C\x16\x90V[\x15\x90V[\x80\x94\x81\x95a\x10\x85W[\x81\x15a\x10eW[Pa*\xA7V[\x82a\x10\0`\x01`\xFF\x19_T\x16\x17_UV[a\x10NW[\x80a8OV[a\x10\x11W\0[a\x10\x1Fa\xFF\0\x19_T\x16_UV[`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x90\xA1\0[a\x10`a\x01\0a\xFF\0\x19_T\x16\x17_UV[a\x10\x05V[0;\x15\x91P\x81a\x10wW[P_a\x0F\xE9V[`\xFF\x16`\x01\x14\x90P_a\x10pV[`\x01`\xFF\x82\x16\x10\x91Pa\x0F\xE2V[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x02QW_6`\x03\x19\x01\x12a\x02QWa\x04 a\x04\x14a+\nV[4a\x02QW` 6`\x03\x19\x01\x12a\x02QW`\x045a\x11\x0F\x81a\x03\x99V[a\x11\x17a3iV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\x11/Wa\x04Q\x90a6\x80V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x90\xFD[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`eT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x02QWa\x11\xB96a\x0C{V[\x90a\x11\xC2a6\xC8V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x91_[\x81\x81\x10a\x12!WP\x82;\x15a\x02QWa\rD\x92_\x92\x83`@Q\x80\x96\x81\x95\x82\x94c\xFC\xE3l}`\xE0\x1B\x84R`\x04\x84\x01a-YV[\x80a\x12Pa\x127` a\r\xE6`\x01\x95\x87\x89a-7V[`@a\x12D\x84\x87\x89a-7V[\x015\x900\x903\x90a7\\V[a\x12ya\x12c` a\r\xE6\x84\x87\x89a-7V[\x86`@a\x12q\x85\x88\x8Aa-7V[\x015\x91a7\xA5V[\x01a\x11\xEFV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x90`\x02\x81\x10\x15a\x12\xA4W`\x05\x1B\x01\x90V[a\x12\x7FV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[a\x13\x99a\x13va\x13\x9F\x95a\x13pa\x13i\x85\x87Q` \x89\x01Q\x8AQQ` \x8CQ\x01Q` \x8D\x01` \x81QQ\x91Q\x01Q\x91\x89Q\x93` \x8B\x01Q\x95`@Q\x97` \x89\x01\x99\x8AR` \x8A\x01R`@\x89\x01R``\x88\x01R`\x80\x87\x01R`\xA0\x86\x01R`\xC0\x85\x01R`\xE0\x84\x01Ra\x01\0\x83\x01Ra\x13@\x81a\x01 \x84\x01\x03`\x1F\x19\x81\x01\x83R\x82a\x01\xD8V[Q\x90 \x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x90\x06\x90V[\x80\x96a.rV[\x90a.\xB8V[\x92a\x13pa\x13\x8Ba\x13\x85a/@V[\x94a07V[\x91a\x13\x94a1SV[a.rV[\x91a1\x9DV[\x90\x91V[\x90\x81` \x91\x03\x12a\x02QWQ\x90V[`@Q=_\x82>=\x90\xFD[\x90\x81` \x91\x03\x12a\x02QWQ`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x03a\x02QW\x90V[\x90\x81` \x91\x03\x12a\x02QWQ`\xFF\x81\x16\x81\x03a\x02QW\x90V[`@Q\x90a\x14\x04` \x83a\x01\xD8V[_\x80\x83R6` \x84\x017V[\x90a\x14\x1A\x82a\x06\xEFV[a\x14'`@Q\x91\x82a\x01\xD8V[\x82\x81R\x80\x92a\x148`\x1F\x19\x91a\x06\xEFV[\x01\x90` 6\x91\x017V[\x80Q\x15a\x12\xA4W` \x01\x90V[\x90\x81Q\x81\x10\x15a\x12\xA4W\x01` \x01\x90V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x90`\x01\x82\x01\x80\x92\x11a\x14\x82WV[a\x14`V[\x90`\x02\x82\x01\x80\x92\x11a\x14\x82WV[\x90`\x03\x82\x01\x80\x92\x11a\x14\x82WV[\x90`\x04\x82\x01\x80\x92\x11a\x14\x82WV[\x90`\x05\x82\x01\x80\x92\x11a\x14\x82WV[\x91\x90\x82\x01\x80\x92\x11a\x14\x82WV[`\x01`\x01``\x1B\x03\x81\x16\x03a\x02QWV[\x90\x81`@\x91\x03\x12a\x02QW` `@Q\x91a\x14\xF7\x83a\x01\x9DV[\x80Qa\x15\x02\x81a\x03\x99V[\x83R\x01Qa\x15\x0F\x81a\x14\xCCV[` \x82\x01R\x90V[\x80Q\x82\x10\x15a\x12\xA4W` \x91`\x05\x1B\x01\x01\x90V[_\x19\x81\x14a\x14\x82W`\x01\x01\x90V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90` \x81`$\x81\x85Z\xFA\x90\x81\x15a\x05\xACWa\x15\xB9\x91` \x91_\x91a\x18\xB8W[P`@Q\x80\x93\x81\x92c\x87\x1E\xF0I`\xE0\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x85Z\xFA\x90\x81\x15a\x05\xACW_\x91a\x18\x89W[P`\x01`\x01`\xC0\x1B\x03\x16\x90\x81\x15\x90\x81\x15a\x18&W[Pa\x18\x1AWa\x15\xEF\x90a2\xCBV[_\x91\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90\x83[\x81Q\x85\x10\x15a\x16\xCBWa\x16t` a\x16Qa\x16Ka\x16=\x89\x87a\x14OV[Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[`\xF8\x1C\x90V[`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x90\x91\x16`\x04\x82\x01R\x91\x82\x90\x81\x90`$\x82\x01\x90V[\x03\x81\x87Z\xFA\x80\x15a\x05\xACW`\x01\x92a\x16\x93\x92_\x92a\x16\x9BW[Pa\x14\xBFV[\x94\x01\x93a\x16\x1FV[a\x16\xBD\x91\x92P` =\x81\x11a\x16\xC4W[a\x16\xB5\x81\x83a\x01\xD8V[\x81\x01\x90a\x13\xA3V[\x90_a\x16\x8DV[P=a\x16\xABV[a\x16\xD6\x91\x94Pa\x14\x10V[\x92_\x90_[\x81Q\x81\x10\x15a\x18\x14Wa\x16\xF4a\x16Ka\x16=\x83\x85a\x14OV[`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R\x90` \x82`$\x81\x89Z\xFA\x91\x82\x15a\x05\xACW_\x92a\x17\xF4W[P\x90_\x91[\x81\x83\x10a\x179WPPP`\x01\x01a\x16\xDBV[`@\x80QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x93\x96\x92\x93\x91\x92\x91\x90\x81`D\x81\x8BZ\xFA\x91\x82\x15a\x05\xACWa\x17\xB8\x8Ba\x17\xA9\x83a\x17\xA3a\x17\x97`\x01\x98a\x17\xBD\x98_\x91a\x17\xC6W[PQ`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x92a\x15\x17V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90RV[a\x15+V[\x95\x01\x91\x90a\x17'V[a\x17\xE7\x91P`@=\x81\x11a\x17\xEDW[a\x17\xDF\x81\x83a\x01\xD8V[\x81\x01\x90a\x14\xDDV[_a\x17\x89V[P=a\x17\xD5V[a\x18\r\x91\x92P` =\x81\x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[\x90_a\x17\"V[PPPPV[Pa\x18#a\x13\xF5V[\x90V[`@Qc\x9A\xA1e=`\xE0\x1B\x81R\x91P` \x90\x82\x90`\x04\x90\x82\x90Z\xFA\x80\x15a\x05\xACW`\xFF\x91_\x91a\x18ZW[P\x16\x15_a\x15\xE1V[a\x18|\x91P` =` \x11a\x18\x82W[a\x18t\x81\x83a\x01\xD8V[\x81\x01\x90a\x13\xDCV[_a\x18QV[P=a\x18jV[a\x18\xAB\x91P` =` \x11a\x18\xB1W[a\x18\xA3\x81\x83a\x01\xD8V[\x81\x01\x90a\x13\xBDV[_a\x15\xCCV[P=a\x18\x99V[a\x18\xCF\x91P\x82=\x84\x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[_a\x15\x99V[`@Q\x90a\x18\xE2\x82a\x01\x9DV[``` \x83\x82\x81R\x01RV[\x15a\x18\xF5WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x90\xFD[\x15a\x19TWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x90\xFD[\x15a\x19\xBDWV[`\xA4`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R\xFD[\x15a\x1A(WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x90\xFD[_\x19\x81\x01\x91\x90\x82\x11a\x14\x82WV[\x15a\x1A\x95WV[`\x84`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`@`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R\xFD[\x90\x82\x10\x15a\x12\xA4W\x01\x90V[\x15a\x1A\xFFWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x90\xFD[\x90\x81` \x91\x03\x12a\x02QWQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x03a\x02QW\x90V[\x15a\x1B\xB4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: quorumApk hash in storage d`d\x82\x01R\x7Foes not match provided quorum ap`\x84\x82\x01R`k`\xF8\x1B`\xA4\x82\x01R`\xC4\x90\xFD[\x90\x81` \x91\x03\x12a\x02QWQa\x18#\x81a\x14\xCCV[\x90`\x01`\x01``\x1B\x03\x80\x91\x16\x91\x16\x03\x90`\x01`\x01``\x1B\x03\x82\x11a\x14\x82WV[\x15a\x1CxWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x90\xFD[\x15a\x1C\xE3WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x90\xFD[`\x04\x91c\xFF\xFF\xFF\xFF`\xE0\x1B\x90`\xE0\x1B\x16\x81R\x01` \x82Q\x91\x92\x01\x90_[\x81\x81\x10a\x1DeWPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x1DXV[\x94\x93\x92\x90\x91\x93a\x1D\x89a\x18\xD5V[Pa\x1D\x95\x85\x15\x15a\x18\xEEV[`@\x84\x01QQ\x85\x14\x80a&:W[\x80a&,W[\x80a&\x1EW[a\x1D\xB8\x90a\x19MV[a\x1D\xCA` \x85\x01QQ\x85QQ\x14a\x19\xB6V[a\x1D\xE1c\xFF\xFF\xFF\xFFC\x16c\xFF\xFF\xFF\xFF\x84\x16\x10a\x1A!V[a\x1D\xE9a\x02\x0BV[_\x81R_` \x82\x01R\x92a\x1D\xFBa\x18\xD5V[a\x1E\x04\x87a\x14\x10V[` \x82\x01Ra\x1E\x12\x87a\x14\x10V[\x81Ra\x1E\x1Ca\x18\xD5V[\x92a\x1E+` \x88\x01QQa\x14\x10V[\x84Ra\x1E;` \x88\x01QQa\x14\x10V[` \x85\x81\x01\x91\x90\x91R`@Qc\x9A\xA1e=`\xE0\x1B\x81R\x90\x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x05\xACWa\x1E\xA4\x91_\x91a%\xFFW[Pa\x1E\x9F6\x8B\x87a\x0B\x0CV[a4]V[\x98_\x96[` \x89\x01Q\x80Q\x89\x10\x15a W` \x88a\x1F\x15a\x1F\x0B\x8Ca\x1F\x03\x8F\x96\x86\x8Ea\x1E\xE8a\x1E\xD5\x86\x80\x95a\x15\x17V[Q\x80Q_R` \x01Q` R`@_ \x90V[a\x1E\xF5\x84\x84\x84\x01Qa\x15\x17V[R\x82a\x1F\xEDW[\x01Qa\x15\x17V[Q\x95Qa\x15\x17V[Qc\xFF\xFF\xFF\xFF\x16\x90V[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x94\x90\x94Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x91\x82\x15a\x05\xACWa\x13p\x8Aa\x1F\xC2\x8Fa\x1F\xBB\x8F\x84` \x8F\x92a\x1F\xB2\x93a\x1F\xAA\x84`\x01\x9Ea\x1F\xC8\x9E_\x91a\x1F\xD0W[P\x8F\x80`\xC0\x1B\x03\x16\x92Qa\x15\x17V[R\x01Qa\x15\x17V[Q\x93\x8DQa\x15\x17V[Q\x16a4\xE4V[\x90a5\x15V[\x97\x01\x96a\x1E\xA8V[a\x1F\xE7\x91P\x86=\x81\x11a\x18\xB1Wa\x18\xA3\x81\x83a\x01\xD8V[_a\x1F\x9BV[a \x1Ba\x1F\xFD\x84\x84\x84\x01Qa\x15\x17V[Qa \x14\x84\x84\x01Qa \x0E\x87a\x1A\x80V[\x90a\x15\x17V[Q\x10a\x1A\x8EV[a\x1E\xFCV[P\x90\x95\x97\x94\x96Pa 5\x91\x98\x93\x92\x99Pa5\xFBV[\x91a B`\x97T`\xFF\x16\x90V[\x90\x81\x15a%\xF7W`@Qc\x18\x89\x1F\xD7`\xE3\x1B\x81R` \x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x05\xACW_\x91a%\xD8W[P\x91\x90[_\x92[\x81\x84\x10a!\x01WPPPPP\x92a \xDAa \xD5a \xCEa \xFB\x95\x85a \xED\x98`\x80``` \x99\x01Q\x92\x01Q\x92a\x12\xBDV[\x91\x90a\x1CqV[a\x1C\xDCV[\x01Q`@Q\x92\x83\x91` \x83\x01\x95\x86a\x1D;V[\x03`\x1F\x19\x81\x01\x83R\x82a\x01\xD8V[Q\x90 \x90V[\x92\x98\x95\x96\x90\x93\x99\x91\x97\x94\x87\x8B\x88\x8C\x88\x8Da$\xD5W[a\x1F\x0B\x82`\xA0a!da\x16Ka!V\x84a!l\x97a!Pa!Ba\x1E\xD5\x8F\x9C`@` \x9F\x9E\x01Qa\x15\x17V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90V[\x9Ba\x1A\xECV[5`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[\x97\x01Qa\x15\x17V[`@Qc\x1A/2\xAB`\xE2\x1B\x81R`\xFF\x95\x90\x95\x16`\x04\x86\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x86\x01R\x16`D\x84\x01R\x82`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x90\x81\x15a\x05\xACWa\"0a\x1F\x0B\x8F\x95\x8F\x90a\"(\x8F\x97\x8F\x96\x84\x8Fa\"\"`\xC0\x96a\"\x1B\x84\x8F` \x9F\x90a\x1E\xFCa!V\x99`@\x93a\x16K\x9C_\x91a$\xA7W[Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91\x82\x16\x91\x16\x14a\x1B\xADV[Q\x90a.\xB8V[\x9Ca\x1A\xECV[\x96\x01Qa\x15\x17V[`@Qcd\x14\xA6+`\xE1\x1B\x81R`\xFF\x94\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x90\x81\x15a\x05\xACWa\"\xBD\x91\x8C\x8F\x92_\x92a$\x83W[P` a\"\xAF\x92\x93\x01Qa\x15\x17V[\x90`\x01`\x01``\x1B\x03\x16\x90RV[a\"\xEA\x8Ca\"\xAF\x8Ca\"\xE3a\"\xD6\x82` \x86\x01Qa\x15\x17V[Q`\x01`\x01``\x1B\x03\x16\x90V[\x92Qa\x15\x17V[_\x98_[` \x8A\x01QQ\x81\x10\x15a$jW\x8B\x8Da#,\x89a#\x1Fa\x16Ka!V\x86\x8F\x89a#\x17\x91Qa\x15\x17V[Q\x94\x87a\x1A\xECV[`\xFF\x16\x1C`\x01\x90\x81\x16\x14\x90V[a#;W[PP`\x01\x01a\"\xEEV[\x8A\x8Aa#\xC3\x85\x9F\x94\x8F\x96\x86a#}\x8F\x93`\xE0a#ta\x1F\x0B\x95` a#la\x16Ka!V\x83\x9Fa#\x83\x9C\x89\x91a\x1A\xECV[\x9A\x01Qa\x15\x17V[Q\x9B\x01Qa\x15\x17V[Qa\x15\x17V[`@Qcy_JW`\xE1\x1B\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x93\x84\x16`$\x84\x01R`D\x83\x01\x96\x90\x96R\x91\x90\x94\x16`d\x85\x01R\x83\x90\x81\x90`\x84\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x05\xACW\x8Fa$)\x90\x8F\x93`\x01\x95\x94\x86\x95_\x92a$4W[Pa\x17\xA3a\"\xAF\x92\x93Q\x93a$$a\"\xD6\x84\x87a\x15\x17V[a\x1CQV[\x01\x9A\x90P\x8B\x8Da#1V[a\"\xAF\x92Pa$\\a\x17\xA3\x91` =\x81\x11a$cW[a$T\x81\x83a\x01\xD8V[\x81\x01\x90a\x1C<V[\x92Pa$\x0CV[P=a$JV[P\x93\x91\x97\x96\x99`\x01\x91\x96\x99P\x9A\x94\x92\x9A\x01\x92\x91\x90a \x9DV[a\"\xAF\x92Pa$\xA0` \x91\x82=\x81\x11a$cWa$T\x81\x83a\x01\xD8V[\x92Pa\"\xA0V[` a$\xC8\x92P=\x81\x11a$\xCEW[a$\xC0\x81\x83a\x01\xD8V[\x81\x01\x90a\x1B\x8CV[_a\"\x05V[P=a$\xB6V[a%\x12\x94Pa$\xEF\x92Pa\x16K\x91a!V\x91` \x95a\x1A\xECV[`@Qc\x12M\x06!`\xE1\x1B\x81R`\xFF\x90\x91\x16`\x04\x82\x01R\x91\x82\x90\x81\x90`$\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x05\xACW` \x89a!l\x8F\x93\x8F`\xA0\x8F\x97a\x16Ka!V\x8F\x8F\x90a!Pa!Ba\x1E\xD5\x8F`@\x8B\x96\x91\x8Fa%\x99\x90a\x1F\x0B\x9F\x8A\x95a!d\x9E_\x92a%\xAFW[Pc\xFF\xFF\xFF\xFFa%\x93\x92\x93\x16\x92a\x14\xBFV[\x11a\x1A\xF8V[PPPPPP\x97PPPPPP\x92\x93PPa!\x16V[` a%\x93\x93Pc\xFF\xFF\xFF\xFF\x91a%\xD1\x91=\x81\x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[\x92Pa%\x81V[a%\xF1\x91P` =` \x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[_a \x96V[_\x91\x90a \x9AV[a&\x18\x91P` =` \x11a\x18\x82Wa\x18t\x81\x83a\x01\xD8V[_a\x1E\x93V[P`\xE0\x84\x01QQ\x85\x14a\x1D\xAFV[P`\xC0\x84\x01QQ\x85\x14a\x1D\xA9V[P`\xA0\x84\x01QQ\x85\x14a\x1D\xA3V[\x15a&OWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FServiceManagerBase.onlyRegistryC`D\x82\x01R\x7Foordinator: caller is not the re`d\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x84\x82\x01R`\xA4\x90\xFD[a'\t3\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x14a&HV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x91\x82;\x15a\x02QW_\x92\x83\x92`@Q\x94\x85\x80\x94\x81\x93c\x99&\xEE}`\xE0\x1B\x83R`\x01\x80`\xA0\x1B\x03\x16`\x04\x83\x01R`@`$\x83\x01R`@a'~\x82Q```D\x86\x01R`\xA4\x85\x01\x90a'\xAFV[\x91` \x81\x01Q`d\x85\x01R\x01Q`\x84\x83\x01R\x03\x92Z\xF1\x80\x15a\x05\xACWa'\xA1WPV[\x80a\rb_a\x02\t\x93a\x01\xD8V[\x80Q\x80\x83R` \x92\x91\x81\x90\x84\x01\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x91\x90\x81\x10\x15a\x12\xA4W`\x05\x1B\x81\x015\x90`\xBE\x19\x816\x03\x01\x82\x12\x15a\x02QW\x01\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x02QW\x01\x805\x90`\x01`\x01`@\x1B\x03\x82\x11a\x02QW` \x01\x91\x81`\x06\x1B6\x03\x83\x13a\x02QWV[\x91\x90\x81\x10\x15a\x12\xA4W`\x06\x1B\x01\x90V[5a\x18#\x81a\x03\x99V[\x905`\x1E\x19\x826\x03\x01\x81\x12\x15a\x02QW\x01` \x815\x91\x01\x91`\x01`\x01`@\x1B\x03\x82\x11a\x02QW\x81`\x06\x1B6\x03\x83\x13a\x02QWV[\x91` \x90\x82\x81R\x01\x91\x90_[\x81\x81\x10a(\x91WPPP\x90V[\x90\x91\x92`@\x80`\x01\x92\x865a(\xA5\x81a\x03\x99V[\x84\x80`\xA0\x1B\x03\x16\x81R`\x01`\x01``\x1B\x03` \x88\x015a(\xC4\x81a\x14\xCCV[\x16` \x82\x01R\x01\x94\x01\x92\x91\x01a(\x84V[\x905`\x1E\x19\x826\x03\x01\x81\x12\x15a\x02QW\x01` \x815\x91\x01\x91`\x01`\x01`@\x1B\x03\x82\x11a\x02QW\x816\x03\x83\x13a\x02QWV[\x90\x80` \x93\x92\x81\x84R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x83\x90R`\x05\x83\x90\x1B\x81\x01``\x90\x81\x01\x93\x83\x926\x84\x90\x03`\xBE\x19\x01\x92_\x91\x90\x81\x01\x90[\x83\x83\x10a)qWPPPPPPP\x90V[\x90\x91\x92\x93\x94\x95\x96`_\x19\x82\x82\x03\x01\x83R\x875\x86\x81\x12\x15a\x02QW\x87\x01\x90a)\xA9a)\x9B\x83\x80a(DV[`\xC0\x84R`\xC0\x84\x01\x91a(xV[\x91` \x81\x015a)\xB8\x81a\x03\x99V[`\x01`\x01`\xA0\x1B\x03\x16` \x83\x81\x01\x91\x90\x91Ra)\xD7`@\x83\x01\x83a(DV[\x84\x86\x03`@\x86\x01R\x80\x86R\x94\x90\x91\x01\x93_[\x81\x81\x10a*bWPPPa*Q`\x01\x93` \x93a*C\x84a*\x1Da*\x10``\x89\x98\x01a\x06\xDEV[c\xFF\xFF\xFF\xFF\x16``\x85\x01RV[a*9a*,`\x80\x83\x01a\x06\xDEV[c\xFF\xFF\xFF\xFF\x16`\x80\x85\x01RV[`\xA0\x81\x01\x90a(\xD5V[\x91`\xA0\x81\x85\x03\x91\x01Ra)\x06V[\x99\x01\x93\x01\x93\x01\x91\x95\x94\x93\x92\x90a)`V[\x90\x91\x94`@\x80`\x01\x92\x885a*v\x81a\x03\x99V[\x84\x80`\xA0\x1B\x03\x16\x81R` \x89\x015` \x82\x01R\x01\x96\x01\x91\x01\x91\x90\x91a)\xE9V[\x90` a\x18#\x92\x81\x81R\x01\x90a'\xAFV[\x15a*\xAEWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x90\xFD[`@Qc\x9A\xA1e=`\xE0\x1B\x81R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90` \x81`\x04\x81\x85Z\xFA\x80\x15a\x05\xACW`\xFF\x91_\x91a-\x18W[P\x16\x80\x15a-\x0EW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90_\x90\x81\x90[\x80\x83\x10a,\xCAWPa+\xA5\x91Pa\x14\x10V[\x92_\x90_[`@Qc\x9A\xA1e=`\xE0\x1B\x81R` \x81`\x04\x81\x89Z\xFA\x80\x15a\x05\xACW`\xFF\x91_\x91a,\xACW[P\x16\x81\x10\x15a,\xA5W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01\x81\x90R` \x82`$\x81\x89Z\xFA\x91\x82\x15a\x05\xACW_\x92a,\x85W[P\x90_\x91[\x81\x83\x10a,\x1FWPPP`\x01\x01a+\xAAV[`@\x80QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x93\x96\x92\x93\x91\x92\x91\x90\x81`D\x81\x8BZ\xFA\x91\x82\x15a\x05\xACWa\x17\xB8\x8Ba\x17\xA9\x83a\x17\xA3a\x17\x97`\x01\x98a,|\x98_\x91a\x17\xC6WPQ`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x95\x01\x91\x90a,\rV[a,\x9E\x91\x92P` =\x81\x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[\x90_a,\x08V[P\x92PPPV[a,\xC4\x91P` =\x81\x11a\x18\x82Wa\x18t\x81\x83a\x01\xD8V[_a+\xD0V[`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R\x90\x91\x90` \x81`$\x81\x88Z\xFA\x80\x15a\x05\xACW`\x01\x92a-\x05\x92_\x92a\x16\x9BWPa\x14\xBFV[\x92\x01\x91\x90a+\x93V[PPa\x18#a\x13\xF5V[a-1\x91P` =` \x11a\x18\x82Wa\x18t\x81\x83a\x01\xD8V[_a+[V[\x91\x90\x81\x10\x15a\x12\xA4W`\x05\x1B\x81\x015\x90`\x9E\x19\x816\x03\x01\x82\x12\x15a\x02QW\x01\x90V[\x90\x91\x80` \x83\x01` \x84RR`@\x82\x01\x92`@\x82`\x05\x1B\x84\x01\x01\x93\x81\x93_\x91`\x9E\x19\x846\x03\x01\x91[\x85\x84\x10a-\x92WPPPPPPP\x90V[\x90\x91\x92\x93\x94\x95\x96`?\x19\x82\x82\x03\x01\x83R\x875\x90\x84\x82\x12\x15a\x02QW` \x80\x91\x88`\x01\x94\x01\x90`\x80c\xFF\xFF\xFF\xFFa.\x19\x82a-\xDDa-\xCF\x87\x80a(DV[`\xA0\x88R`\xA0\x88\x01\x91a(xV[\x95\x87\x81\x015a-\xEB\x81a\x03\x99V[\x8A\x80`\xA0\x1B\x03\x16\x88\x87\x01R`@\x81\x015`@\x87\x01R\x83a.\r``\x83\x01a\x06\xDEV[\x16``\x87\x01R\x01a\x06\xDEV[\x16\x91\x01R\x99\x01\x93\x01\x94\x01\x92\x91\x95\x94\x93\x90a-\x81V[`@Q\x90a.;\x82a\x01\x9DV[_` \x83\x82\x81R\x01RV[`@Q\x90a\x01\x80a.W\x81\x84a\x01\xD8V[6\x837V[`@Q\x90a.k` \x83a\x01\xD8V[` 6\x837V[\x91\x90`@\x90``a.\x81a..V[\x94\x85\x92` \x85Q\x92a.\x93\x85\x85a\x01\xD8V[\x846\x857\x80Q\x84R\x01Q` \x83\x01R\x84\x82\x01R`\x07a\x07\xCF\x19Z\x01\xFA\x15a.\xB6WV[\xFE[` \x92\x91`\x80`@\x92a.\xC9a..V[\x95\x86\x93\x81\x86Q\x93a.\xDA\x86\x86a\x01\xD8V[\x856\x867\x80Q\x85R\x01Q\x82\x84\x01R\x80Q\x86\x84\x01R\x01Q``\x82\x01R`\x06a\x07\xCF\x19Z\x01\xFA\x80\x15a.\xB6W\x15a/\x0BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x90\xFD[`@Qa/L\x81a\x01\x9DV[`@\x90\x81Qa/[\x83\x82a\x01\xD8V[\x826\x827\x81R` \x82Q\x91a/p\x84\x84a\x01\xD8V[\x836\x847\x01R\x80Qa/\x82\x82\x82a\x01\xD8V[\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED` \x82\x01R\x81Q\x90a/\xD8\x83\x83a\x01\xD8V[\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x01Ra0-\x83Q\x93\x84a\x01\xD8V[\x82R` \x82\x01R\x90V[_Q` a<1_9_Q\x90_R\x90a0Na..V[P_\x91\x90\x06` `\xC0\x83[a1NW_\x93_Q` a<1_9_Q\x90_R`\x03\x81\x86\x81\x81\x80\t\t\x08`@Qa0\x84\x85\x82a\x01\xD8V[\x846\x827\x84\x81\x85`@Qa0\x98\x82\x82a\x01\xD8V[\x816\x827\x83\x81R\x83` \x82\x01R\x83`@\x82\x01R\x85``\x82\x01R\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\x80\x82\x01R_Q` a<1_9_Q\x90_R`\xA0\x82\x01R`\x05a\x07\xCF\x19Z\x01\xFA\x80\x15a.\xB6Wa1\x02\x90a;qV[Q\x91a1NW_Q` a<1_9_Q\x90_R\x82\x80\t\x14a19WP_Q` a<1_9_Q\x90_R`\x01_\x94\x08\x92\x93a0YV[\x92\x93PPa1Ea\x02\x0BV[\x92\x83R\x82\x01R\x90V[a\x12\xA9V[a1[a..V[P`@Qa1h\x81a\x01\x9DV[`\x01\x81R`\x02` \x82\x01R\x90V[\x90`\x06\x82\x02\x91\x80\x83\x04`\x06\x14\x90\x15\x17\x15a\x14\x82WV[\x90`\x0C\x81\x10\x15a\x12\xA4W`\x05\x1B\x01\x90V[\x93\x92\x90\x91a1\xAB`@a\x02\x1AV[\x94\x85R` \x85\x01Ra1\xBD`@a\x02\x1AV[\x91\x82R` \x82\x01Ra1\xCDa.FV[\x92_[`\x02\x81\x10a1\xFAWPPP` a\x01\x80\x92a1\xE9a.\\V[\x93\x84\x91`\x08b\x01\xD4\xC0\xFA\x91Q\x15\x15\x90V[\x80a2\x06`\x01\x92a1vV[a2\x10\x82\x85a\x12\x93V[QQa2\x1C\x82\x89a1\x8CV[R` a2)\x83\x86a\x12\x93V[Q\x01Qa2>a28\x83a\x14tV[\x89a1\x8CV[Ra2I\x82\x86a\x12\x93V[QQQa2Xa28\x83a\x14\x87V[Ra2na2f\x83\x87a\x12\x93V[QQ` \x01\x90V[Qa2{a28\x83a\x14\x95V[R` a2\x88\x83\x87a\x12\x93V[Q\x01QQa2\x98a28\x83a\x14\xA3V[Ra2\xC4a2\xBEa2\xB7` a2\xAE\x86\x8Aa\x12\x93V[Q\x01Q` \x01\x90V[Q\x92a\x14\xB1V[\x88a1\x8CV[R\x01a1\xD0V[a\xFF\xFFa2\xD7\x82a4\xE4V[\x16a2\xE1\x81a\n\xF1V[\x90a2\xEF`@Q\x92\x83a\x01\xD8V[\x80\x82Ra2\xFE`\x1F\x19\x91a\n\xF1V[\x016` \x83\x017__[\x82Q\x82\x10\x80a3^W[\x15a3WW`\x01\x81\x1B\x84\x16a30W[a3+\x90a\x15+V[a3\x08V[\x90`\x01a3+\x91`\xFF`\xF8\x1B\x84`\xF8\x1B\x16_\x1Aa3M\x82\x87a\x14OV[S\x01\x91\x90Pa3\"V[PP\x90P\x90V[Pa\x01\0\x81\x10a3\x12V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x03a3}WV[`d`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R` `$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\xFD[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x80\x84\x16\x82R\x84\x16` \x82\x01R\x91\x92\x91\x7F\xE1\x1C\xDD\xF1\x81jC1\x8C\xA1u\xBB\xC5,\xD0\x18T6\xE9\xCB\xEA\xD7\xC8:\xCCT\xA7>F\x17\x17\xE3\x91\x90\xA1`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x90\x91\x16\x17`eUV[` \x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x91\x15\x15`\xFF\x19`\x97T\x16`\xFF\x82\x16\x17`\x97U`@Q\x90\x81R\xA1V[\x90`\x01a4k`\xFF\x93a9DV[\x92\x83\x92\x16\x1B\x11\x15a4yW\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x90\xFD[\x80_\x91[a4\xF0WP\x90V[_\x19\x81\x01\x81\x81\x11a\x14\x82Wa\xFF\xFF\x91\x16\x91\x16a\xFF\xFF\x81\x14a\x14\x82W`\x01\x01\x90\x80a4\xE8V[\x90a5\x1Ea..V[Pa\xFF\xFF\x81\x16\x90a\x02\0\x82\x10\x15a5\xC3W`\x01\x82\x14a5\xBEWa5?a\x02\x0BV[_\x81R_` \x82\x01R\x92\x90`\x01\x90_\x92[a\xFF\xFF\x83\x16\x85\x10\x15a5dWPPPPP\x90V[`\x01a\xFF\xFF\x83\x16`\xFF\x86\x16\x1C\x81\x16\x14a5\x9EW[`\x01a5\x94a5\x89\x83`\xFF\x94a.\xB8V[\x94`\x01\x1Ba\xFF\xFE\x16\x90V[\x94\x01\x16\x92\x91a5PV[\x94`\x01a5\x94a5\x89a5\xB3\x89`\xFF\x95a.\xB8V[\x98\x93PPPPa5xV[PP\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x90\xFD[a6\x03a..V[P\x80Q\x90\x81\x15\x80a6tW[\x15a60WPP`@Qa6$`@\x82a\x01\xD8V[_\x81R_` \x82\x01R\x90V[` _Q` a<1_9_Q\x90_R\x91\x01Q\x06_Q` a<1_9_Q\x90_R\x03_Q` a<1_9_Q\x90_R\x81\x11a\x14\x82W`@Q\x91a0-\x83a\x01\x9DV[P` \x81\x01Q\x15a6\x0FV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x90\x92U\x90\x91\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0_\x80\xA3V[`eT`\x01`\x01`\xA0\x1B\x03\x163\x03a6\xDCWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FServiceManagerBase.onlyRewardsIn`D\x82\x01R\x7Fitiator: caller is not the rewar`d\x82\x01Rk29\x904\xB74\xBA4\xB0\xBA7\xB9`\xA1\x1B`\x84\x82\x01R`\xA4\x90\xFD[`@Qc#\xB8r\xDD`\xE0\x1B` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`$\x82\x01R\x92\x90\x91\x16`D\x83\x01R`d\x80\x83\x01\x93\x90\x93R\x91\x81Ra\x02\t\x91a7\xA0`\x84\x83a\x01\xD8V[a:\x9FV[`@Qcn\xB1v\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x83\x16`$\x82\x01R` \x81\x80`D\x81\x01\x03\x81`\x01`\x01`\xA0\x1B\x03\x86\x16Z\xFA\x90\x81\x15a\x05\xACWa\x02\t\x94a7\xA0\x92a7\xFC\x92_\x91a80WPa\x14\xBFV[`@Qc\t^\xA7\xB3`\xE0\x1B` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16`$\x85\x01R`D\x80\x85\x01\x91\x90\x91R\x83R`d\x83a\x01\xD8V[a8I\x91P` =` \x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[_a\x16\x8DV[\x90`\xFF_T`\x08\x1C\x16\x15a8iWa\x04La\x02\t\x92a6\x80V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x90\xFD[\x15a8\xC9WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x90\xFD[\x90a\x01\0\x82Q\x11a9\xB4W\x81Q\x15a9\xAFWa9ra9ha\x16Ka\x16=\x85a\x14BV[`\xFF`\x01\x91\x16\x1B\x90V[`\x01\x90[\x83Q\x82\x10\x15a9\xAAW`\x01\x90a9\x95a9ha\x16Ka\x16=\x86\x89a\x14OV[\x90a9\xA1\x81\x83\x11a8\xC2V[\x17\x91\x01\x90a9vV[\x92PPV[_\x91PV[`\xA4`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R\xFD[\x90\x81` \x91\x03\x12a\x02QWQa\x18#\x81a\x04SV[\x15a:GWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x90\xFD[`\x01\x80`\xA0\x1B\x03\x16\x90`@Q\x90a:\xB7`@\x83a\x01\xD8V[` \x82R\x7FSafeERC20: low-level call failed` \x83\x01R\x82;\x15a;,W_\x81a;\x07\x94\x82` \x81\x95Q\x93\x01\x91Z\xF1a;\x01a;\xBDV[\x90a;\xECV[\x80Q\x80a;\x12WPPV[\x81` \x80a;'\x93a\x02\t\x95\x01\x01\x91\x01a:+V[a:@V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x90\xFD[\x15a;xWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[=\x15a;\xE7W=\x90a;\xCE\x82a\n\xF1V[\x91a;\xDC`@Q\x93\x84a\x01\xD8V[\x82R=_` \x84\x01>V[``\x90V[\x90\x91\x90\x15a;\xF8WP\x90V[\x81Q\x15a<\x08WP\x80Q\x90` \x01\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R\x90\x81\x90a<,\x90`$\x83\x01\x90a'\xAFV[\x03\x90\xFD\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 r\xB4\xB9\x8D,44\x7F\x1C;@\x04j\xF1\x99\xCE4\xFEK\xADz\xA7\xDD\x02W\n\xF4\x0E=\xEC\xDFydsolcC\0\x08\x1B\x003",
);
/// The runtime bytecode of the contract, as deployed on the network.
///
/// ```text
///0x60806040526004361015610011575f80fd5b5f3560e01c8063171f1d5b1461018457806333cfb7b71461017f5780633bc28c8c1461017a578063416c7e5e146101755780635df4594614610170578063683048351461016b5780636b3aa72e146101665780636d14a987146101615780636efb46361461015c578063715018a6146101575780638da5cb5b146101525780639926ee7d1461014d578063a0169ddd14610148578063a20b99bf14610143578063a364f4da1461013e578063a98fb35514610139578063b98d090814610134578063c4d66de81461012f578063df5cf7231461012a578063e481af9d14610125578063f2fde38b14610120578063fc299dee1461011b5763fce36c7d14610116575f80fd5b6111ab565b611183565b6110f2565b6110d7565b611093565b610f9e565b610f7c565b610eca565b610e0d565b610ccd565b610bde565b610b42565b610ac9565b610a6e565b6109d9565b610687565b610643565b6105ff565b6105bb565b61045d565b610424565b6103ec565b610331565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176101b857604052565b610189565b606081019081106001600160401b038211176101b857604052565b90601f801991011681019081106001600160401b038211176101b857604052565b60405190610209610100836101d8565b565b604051906102096040836101d8565b9061020960405192836101d8565b60409060e319011261025157604051906102418261019d565b60e4358252610104356020830152565b5f80fd5b91908260409103126102515760405161026d8161019d565b6020808294803584520135910152565b9080601f8301121561025157604051916102986040846101d8565b82906040810192831161025157905b8282106102b45750505090565b81358152602091820191016102a7565b906080606319830112610251576040516102dd8161019d565b60206102f882946102ef81606461027d565b845260a461027d565b910152565b91906080838203126102515760206102f86040519261031b8461019d565b60408496610329838261027d565b86520161027d565b34610251576101203660031901126102515760043560403660231901126102515761038960409182516103638161019d565b60243581526044356020820152610379366102c4565b9061038336610228565b926112bd565b8251911515825215156020820152f35b6001600160a01b0381160361025157565b60206040818301928281528451809452019201905f5b8181106103cd5750505090565b82516001600160a01b03168452602093840193909201916001016103c0565b346102515760203660031901126102515761042061041460043561040f81610399565b611539565b604051918291826103aa565b0390f35b346102515760203660031901126102515761045160043561044481610399565b61044c613369565b6133c1565b005b8015150361025157565b346102515760203660031901126102515760043561047a81610453565b604051638da5cb5b60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ac575f91610571575b506001600160a01b031633036104e0576104519061341f565b60405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a490fd5b90506020813d6020116105a4575b8161058c602093836101d8565b81010312610251575161059e81610399565b5f6104c7565b3d915061057f565b6113b2565b5f91031261025157565b34610251575f366003190112610251576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610251575f366003190112610251576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610251575f366003190112610251576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610251575f366003190112610251576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b6044359063ffffffff8216820361025157565b359063ffffffff8216820361025157565b6001600160401b0381116101b85760051b60200190565b9080601f8301121561025157813561071d816106ef565b9261072b60405194856101d8565b81845260208085019260051b82010192831161025157602001905b8282106107535750505090565b60208091610760846106de565b815201910190610746565b81601f82011215610251578035610781816106ef565b9261078f60405194856101d8565b81845260208085019260061b8401019281841161025157602001915b8383106107b9575050505090565b60206040916107c88486610255565b8152019201916107ab565b9080601f830112156102515781356107ea816106ef565b926107f860405194856101d8565b81845260208085019260051b820101918383116102515760208201905b83821061082457505050505090565b81356001600160401b0381116102515760209161084687848094880101610706565b815201910190610815565b91909161018081840312610251576108676101f9565b9281356001600160401b0381116102515781610884918401610706565b845260208201356001600160401b03811161025157816108a591840161076b565b602085015260408201356001600160401b03811161025157816108c991840161076b565b60408501526108db81606084016102fd565b60608501526108ed8160e08401610255565b60808501526101208201356001600160401b0381116102515781610912918401610706565b60a08501526101408201356001600160401b0381116102515781610937918401610706565b60c08501526101608201356001600160401b0381116102515761095a92016107d3565b60e0830152565b90602080835192838152019201905f5b81811061097e5750505090565b82516001600160601b0316845260209384019390920191600101610971565b9291906109d460209160408652826109c082516040808a01526080890190610961565b910151868203603f19016060880152610961565b930152565b34610251576080366003190112610251576004356024356001600160401b03811161025157366023820112156102515780600401356001600160401b03811161025157366024828401011161025157610a306106cb565b90606435936001600160401b038511610251576024610a56610a5e963690600401610851565b940190611d7b565b906104206040519283928361099d565b34610251575f36600319011261025157610a86613369565b603380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610251575f366003190112610251576033546040516001600160a01b039091168152602090f35b6001600160401b0381116101b857601f01601f191660200190565b929192610b1882610af1565b91610b2660405193846101d8565b829481845281830111610251578281602093845f960137010152565b3461025157604036600319011261025157600435610b5f81610399565b602435906001600160401b03821161025157606060031983360301126102515760405190610b8c826101bd565b82600401356001600160401b038111610251578301366023820112156102515761045193610bc66044923690602460048201359101610b0c565b845260248101356020850152013560408301526126d5565b34610251575f602036600319011261025157600435610bfc81610399565b610c04613369565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156102515760405163a0169ddd60e01b81526001600160a01b039091166004820152905f908290602490829084905af180156105ac57610c6f575080f35b61045191505f906101d8565b906020600319830112610251576004356001600160401b0381116102515760040182601f82011215610251578035926001600160401b038411610251576020808301928560051b010111610251579190565b3461025157610cdb36610c7b565b90610ce46136c8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915f5b818110610d685750823b1561025157610d44925f9283604051809681958294634e5cd2fd60e11b84523060048501612926565b03925af180156105ac57610d5457005b80610d625f610451936101d8565b806105b1565b915f93915f915b610d87610d7d8684846127d3565b60408101906127f5565b9050831015610dc3576001610db981976020610db187610dab610d7d8c8a8a6127d3565b9061282a565b0135906114bf565b9301929550610d6f565b9390929460019250610e0790610df1813088610dec6020610de6898c33956127d3565b0161283a565b61375c565b86610e026020610de686898b6127d3565b6137a5565b01610d11565b34610251575f602036600319011261025157600435610e2b81610399565b610e5f337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614612648565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b15610251576040516351b27a6d60e11b81526001600160a01b039091166004820152905f908290602490829084905af180156105ac57610c6f575080f35b34610251575f6020366003190112610251576004356001600160401b038111610251573660238201121561025157610f0c903690602481600401359101610b0c565b610f14613369565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156102515760405163a98fb35560e01b8152915f918391829084908290610f6a9060048301612a96565b03925af180156105ac57610c6f575080f35b34610251575f36600319011261025157602060ff609754166040519015158152f35b3461025157602036600319011261025157600435610fbb81610399565b61100b5f5491610fef610fd9610fd58560ff9060081c1690565b1590565b80948195611085575b8115611065575b50612aa7565b82611000600160ff195f5416175f55565b61104e575b8061384f565b61101157005b61101f61ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a1005b61106061010061ff00195f5416175f55565b611005565b303b15915081611077575b505f610fe9565b60ff1660011490505f611070565b600160ff8216109150610fe2565b34610251575f366003190112610251576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34610251575f36600319011261025157610420610414612b0a565b346102515760203660031901126102515760043561110f81610399565b611117613369565b6001600160a01b0381161561112f5761045190613680565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b34610251575f366003190112610251576065546040516001600160a01b039091168152602090f35b34610251576111b936610c7b565b906111c26136c8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915f5b8181106112215750823b1561025157610d44925f928360405180968195829463fce36c7d60e01b845260048401612d59565b806112506112376020610de66001958789612d37565b6040611244848789612d37565b0135903090339061375c565b6112796112636020610de6848789612d37565b86604061127185888a612d37565b0135916137a5565b016111ef565b634e487b7160e01b5f52603260045260245ffd5b9060028110156112a45760051b0190565b61127f565b634e487b7160e01b5f52601260045260245ffd5b61139961137661139f9561137061136985875160208901518a515160208c51015160208d016020815151915101519189519360208b0151956040519760208901998a5260208a015260408901526060880152608087015260a086015260c085015260e084015261010083015261134081610120840103601f1981018352826101d8565b5190207f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001900690565b8096612e72565b90612eb8565b9261137061138b611385612f40565b94613037565b91611394613153565b612e72565b9161319d565b9091565b90816020910312610251575190565b6040513d5f823e3d90fd5b9081602091031261025157516001600160c01b03811681036102515790565b90816020910312610251575160ff811681036102515790565b604051906114046020836101d8565b5f808352366020840137565b9061141a826106ef565b61142760405191826101d8565b8281528092611438601f19916106ef565b0190602036910137565b8051156112a45760200190565b9081518110156112a4570160200190565b634e487b7160e01b5f52601160045260245ffd5b906001820180921161148257565b611460565b906002820180921161148257565b906003820180921161148257565b906004820180921161148257565b906005820180921161148257565b9190820180921161148257565b6001600160601b0381160361025157565b90816040910312610251576020604051916114f78361019d565b805161150281610399565b8352015161150f816114cc565b602082015290565b80518210156112a45760209160051b010190565b5f1981146114825760010190565b6040516309aa152760e11b81526001600160a01b0391821660048201527f000000000000000000000000000000000000000000000000000000000000000090911690602081602481855afa9081156105ac576115b9916020915f916118b8575b506040518093819263871ef04960e01b8352600483019190602083019252565b0381855afa9081156105ac575f91611889575b506001600160c01b0316908115908115611826575b5061181a576115ef906132cb565b5f91907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690835b81518510156116cb57611674602061165161164b61163d898761144f565b516001600160f81b03191690565b60f81c90565b604051633ca5a5f560e01b815260ff909116600482015291829081906024820190565b0381875afa80156105ac57600192611693925f9261169b575b506114bf565b94019361161f565b6116bd91925060203d81116116c4575b6116b581836101d8565b8101906113a3565b905f61168d565b503d6116ab565b6116d6919450611410565b925f905f5b8151811015611814576116f461164b61163d838561144f565b604051633ca5a5f560e01b815260ff8216600482015290602082602481895afa9182156105ac575f926117f4575b50905f915b818310611739575050506001016116db565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa9182156105ac576117b88b6117a9836117a36117976001986117bd985f916117c6575b50516001600160a01b031690565b6001600160a01b031690565b92611517565b6001600160a01b039091169052565b61152b565b95019190611727565b6117e7915060403d81116117ed575b6117df81836101d8565b8101906114dd565b5f611789565b503d6117d5565b61180d91925060203d81116116c4576116b581836101d8565b905f611722565b50505050565b506118236113f5565b90565b604051639aa1653d60e01b81529150602090829060049082905afa80156105ac5760ff915f9161185a575b5016155f6115e1565b61187c915060203d602011611882575b61187481836101d8565b8101906113dc565b5f611851565b503d61186a565b6118ab915060203d6020116118b1575b6118a381836101d8565b8101906113bd565b5f6115cc565b503d611899565b6118cf9150823d84116116c4576116b581836101d8565b5f611599565b604051906118e28261019d565b60606020838281520152565b156118f557565b60405162461bcd60e51b815260206004820152603760248201525f516020613c515f395f51905f5260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608490fd5b1561195457565b60405162461bcd60e51b815260206004820152604160248201525f516020613c515f395f51905f5260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a490fd5b156119bd57565b60a460405162461bcd60e51b815260206004820152604460248201525f516020613c515f395f51905f5260448201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b6084820152fd5b15611a2857565b60405162461bcd60e51b815260206004820152603c60248201525f516020613c515f395f51905f5260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608490fd5b5f1981019190821161148257565b15611a9557565b608460405162461bcd60e51b815260206004820152604060248201525f516020613c515f395f51905f5260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152fd5b908210156112a4570190565b15611aff57565b60405162461bcd60e51b815260206004820152606660248201525f516020613c515f395f51905f5260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c490fd5b90816020910312610251575167ffffffffffffffff19811681036102515790565b15611bb457565b60405162461bcd60e51b815260206004820152606160248201525f516020613c515f395f51905f5260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c490fd5b908160209103126102515751611823816114cc565b906001600160601b03809116911603906001600160601b03821161148257565b15611c7857565b60405162461bcd60e51b815260206004820152604360248201525f516020613c515f395f51905f5260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a490fd5b15611ce357565b60405162461bcd60e51b815260206004820152603960248201525f516020613c515f395f51905f5260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608490fd5b60049163ffffffff60e01b9060e01b1681520160208251919201905f5b818110611d655750505090565b8251845260209384019390920191600101611d58565b949392909193611d896118d5565b50611d958515156118ee565b60408401515185148061263a575b8061262c575b8061261e575b611db89061194d565b611dca602085015151855151146119b6565b611de163ffffffff431663ffffffff841610611a21565b611de961020b565b5f81525f602082015292611dfb6118d5565b611e0487611410565b6020820152611e1287611410565b8152611e1c6118d5565b92611e2b602088015151611410565b8452611e3b602088015151611410565b602085810191909152604051639aa1653d60e01b815290816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105ac57611ea4915f916125ff575b50611e9f368b87610b0c565b61345d565b985f965b6020890151805189101561202057602088611f15611f0b8c611f038f96868e611ee8611ed5868095611517565b5180515f526020015160205260405f2090565b611ef58484840151611517565b5282611fed575b0151611517565b519551611517565b5163ffffffff1690565b6040516304ec635160e01b8152600481019490945263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9182156105ac576113708a611fc28f611fbb8f8460208f92611fb293611faa8460019e611fc89e5f91611fd0575b508f8060c01b03169251611517565b520151611517565b51938d51611517565b51166134e4565b90613515565b970196611ea8565b611fe79150863d81116118b1576118a381836101d8565b5f611f9b565b61201b611ffd8484840151611517565b516120148484015161200e87611a80565b90611517565b5110611a8e565b611efc565b509095979496506120359198939299506135fb565b9161204260975460ff1690565b9081156125f7576040516318891fd760e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ac575f916125d8575b5091905b5f925b818410612101575050505050926120da6120d56120ce6120fb95856120ed98608060606020990151920151926112bd565b9190611c71565b611cdc565b0151604051928391602083019586611d3b565b03601f1981018352826101d8565b51902090565b92989596909399919794878b888c888d6124d5575b611f0b8260a061216461164b6121568461216c97612150612142611ed58f9c604060209f9e0151611517565b67ffffffffffffffff191690565b9b611aec565b356001600160f81b03191690565b970151611517565b604051631a2f32ab60e21b815260ff95909516600486015263ffffffff9182166024860152166044840152826064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105ac57612230611f0b8f958f906122288f978f96848f61222260c09661221b848f60209f90611efc6121569960409361164b9c5f916124a7575b5067ffffffffffffffff19918216911614611bad565b5190612eb8565b9c611aec565b960151611517565b604051636414a62b60e11b815260ff94909416600485015263ffffffff9182166024850152166044830152816064816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156105ac576122bd918c8f925f92612483575b5060206122af92930151611517565b906001600160601b03169052565b6122ea8c6122af8c6122e36122d6826020860151611517565b516001600160601b031690565b9251611517565b5f985f5b60208a01515181101561246a578b8d61232c8961231f61164b612156868f896123179151611517565b519487611aec565b60ff161c60019081161490565b61233b575b50506001016122ee565b8a8a6123c3859f948f968661237d8f9360e0612374611f0b95602061236c61164b612156839f6123839c8991611aec565b9a0151611517565b519b0151611517565b51611517565b60405163795f4a5760e11b815260ff909316600484015263ffffffff93841660248401526044830196909652919094166064850152839081906084820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105ac578f612429908f936001959486955f92612434575b506117a36122af929351936124246122d68487611517565b611c51565b019a90508b8d612331565b6122af925061245c6117a39160203d8111612463575b61245481836101d8565b810190611c3c565b925061240c565b503d61244a565b5093919796996001919699509a94929a0192919061209d565b6122af92506124a0602091823d81116124635761245481836101d8565b92506122a0565b60206124c892503d81116124ce575b6124c081836101d8565b810190611b8c565b5f612205565b503d6124b6565b61251294506124ef925061164b9161215691602095611aec565b60405163124d062160e11b815260ff909116600482015291829081906024820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156105ac5760208961216c8f938f60a08f9761164b6121568f8f90612150612142611ed58f60408b96918f61259990611f0b9f8a956121649e5f926125af575b5063ffffffff612593929316926114bf565b11611af8565b5050505050509750505050505092935050612116565b6020612593935063ffffffff916125d1913d81116116c4576116b581836101d8565b9250612581565b6125f1915060203d6020116116c4576116b581836101d8565b5f612096565b5f919061209a565b612618915060203d6020116118825761187481836101d8565b5f611e93565b5060e0840151518514611daf565b5060c0840151518514611da9565b5060a0840151518514611da3565b1561264f57565b60405162461bcd60e51b815260206004820152605260248201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360448201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560648201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608482015260a490fd5b612709337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614612648565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691823b15610251575f928392604051948580948193639926ee7d60e01b835260018060a01b0316600483015260406024830152604061277e82516060604486015260a48501906127af565b91602081015160648501520151608483015203925af180156105ac576127a15750565b80610d625f610209936101d8565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b91908110156112a45760051b8101359060be1981360301821215610251570190565b903590601e198136030182121561025157018035906001600160401b03821161025157602001918160061b3603831361025157565b91908110156112a45760061b0190565b3561182381610399565b9035601e19823603018112156102515701602081359101916001600160401b038211610251578160061b3603831361025157565b916020908281520191905f5b8181106128915750505090565b90919260408060019286356128a581610399565b848060a01b031681526001600160601b0360208801356128c4816114cc565b166020820152019401929101612884565b9035601e19823603018112156102515701602081359101916001600160401b03821161025157813603831361025157565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b0390911681526040602082018190528101839052600583901b810160609081019383923684900360be1901925f91908101905b838310612971575050505050505090565b90919293949596605f19828203018352873586811215610251578701906129a961299b8380612844565b60c0845260c0840191612878565b9160208101356129b881610399565b6001600160a01b03166020838101919091526129d76040830183612844565b848603604086015280865294909101935f5b818110612a6257505050612a51600193602093612a4384612a1d612a1060608998016106de565b63ffffffff166060850152565b612a39612a2c608083016106de565b63ffffffff166080850152565b60a08101906128d5565b9160a0818503910152612906565b990193019301919594939290612960565b9091946040806001928835612a7681610399565b848060a01b031681526020890135602082015201960191019190916129e9565b9060206118239281815201906127af565b15612aae57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b604051639aa1653d60e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690602081600481855afa80156105ac5760ff915f91612d18575b50168015612d0e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316905f9081905b808310612cca5750612ba59150611410565b925f905f5b604051639aa1653d60e01b8152602081600481895afa80156105ac5760ff915f91612cac575b5016811015612ca557604051633ca5a5f560e01b815260ff821660048201819052602082602481895afa9182156105ac575f92612c85575b50905f915b818310612c1f57505050600101612baa565b604080516356e4026d60e11b815260ff83166004820152602481018590529396929391929190816044818b5afa9182156105ac576117b88b6117a9836117a3611797600198612c7c985f916117c65750516001600160a01b031690565b95019190612c0d565b612c9e91925060203d81116116c4576116b581836101d8565b905f612c08565b5092505050565b612cc4915060203d81116118825761187481836101d8565b5f612bd0565b604051633ca5a5f560e01b815260ff84166004820152909190602081602481885afa80156105ac57600192612d05925f9261169b57506114bf565b92019190612b93565b50506118236113f5565b612d31915060203d6020116118825761187481836101d8565b5f612b5b565b91908110156112a45760051b81013590609e1981360301821215610251570190565b909180602083016020845252604082019260408260051b8401019381935f91609e1984360301915b858410612d92575050505050505090565b90919293949596603f19828203018352873590848212156102515760208091886001940190608063ffffffff612e1982612ddd612dcf8780612844565b60a0885260a0880191612878565b9587810135612deb81610399565b8a8060a01b0316888701526040810135604087015283612e0d606083016106de565b166060870152016106de565b16910152990193019401929195949390612d81565b60405190612e3b8261019d565b5f6020838281520152565b60405190610180612e5781846101d8565b368337565b60405190612e6b6020836101d8565b6020368337565b91906040906060612e81612e2e565b9485926020855192612e9385856101d8565b8436853780518452015160208301528482015260076107cf195a01fa15612eb657565bfe5b602092916080604092612ec9612e2e565b95869381865193612eda86866101d8565b85368637805185520151828401528051868401520151606082015260066107cf195a01fa8015612eb65715612f0b57565b60405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606490fd5b604051612f4c8161019d565b6040908151612f5b83826101d8565b8236823781526020825191612f7084846101d8565b8336843701528051612f8282826101d8565b7f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6020820152815190612fd883836101d8565b7f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d602083015261302d835193846101d8565b8252602082015290565b5f516020613c315f395f51905f529061304e612e2e565b505f919006602060c0835b61314e575f935f516020613c315f395f51905f526003818681818009090860405161308485826101d8565b8436823784818560405161309882826101d8565b813682378381528360208201528360408201528560608201527f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f5260808201525f516020613c315f395f51905f5260a082015260056107cf195a01fa8015612eb65761310290613b71565b519161314e575f516020613c315f395f51905f528280091461313957505f516020613c315f395f51905f5260015f94089293613059565b9293505061314561020b565b92835282015290565b6112a9565b61315b612e2e565b506040516131688161019d565b600181526002602082015290565b9060068202918083046006149015171561148257565b90600c8110156112a45760051b0190565b939290916131ab604061021a565b94855260208501526131bd604061021a565b91825260208201526131cd612e46565b925f5b600281106131fa575050506020610180926131e9612e5c565b93849160086201d4c0fa9151151590565b80613206600192613176565b6132108285611293565b515161321c828961318c565b5260206132298386611293565b51015161323e61323883611474565b8961318c565b526132498286611293565b51515161325861323883611487565b5261326e6132668387611293565b515160200190565b5161327b61323883611495565b5260206132888387611293565b51015151613298613238836114a3565b526132c46132be6132b760206132ae868a611293565b51015160200190565b51926114b1565b8861318c565b52016131d0565b61ffff6132d7826134e4565b166132e181610af1565b906132ef60405192836101d8565b8082526132fe601f1991610af1565b013660208301375f5f5b825182108061335e575b15613357576001811b8416613330575b61332b9061152b565b613308565b90600161332b9160ff60f81b8460f81b165f1a61334d828761144f565b5301919050613322565b5050905090565b506101008110613312565b6033546001600160a01b0316330361337d57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b606554604080516001600160a01b038084168252841660208201529192917fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e39190a16001600160a01b03166001600160a01b03199190911617606555565b60207f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc91151560ff196097541660ff821617609755604051908152a1565b90600161346b60ff93613944565b928392161b11156134795790565b60405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608490fd5b805f915b6134f0575090565b5f1981018181116114825761ffff9116911661ffff81146114825760010190806134e8565b9061351e612e2e565b5061ffff8116906102008210156135c357600182146135be5761353f61020b565b5f81525f602082015292906001905f925b61ffff831685101561356457505050505090565b600161ffff831660ff86161c81161461359e575b60016135946135898360ff94612eb8565b9460011b61fffe1690565b9401169291613550565b9460016135946135896135b38960ff95612eb8565b989350505050613578565b505090565b60405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606490fd5b613603612e2e565b50805190811580613674575b156136305750506040516136246040826101d8565b5f81525f602082015290565b60205f516020613c315f395f51905f52910151065f516020613c315f395f51905f52035f516020613c315f395f51905f528111611482576040519161302d8361019d565b5060208101511561360f565b603380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b6065546001600160a01b031633036136dc57565b60405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a490fd5b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152610209916137a06084836101d8565b613a9f565b604051636eb1769f60e11b81523060048201526001600160a01b0383166024820152602081806044810103816001600160a01b0386165afa9081156105ac57610209946137a0926137fc925f9161383057506114bf565b60405163095ea7b360e01b60208201526001600160a01b0394909416602485015260448085019190915283526064836101d8565b613849915060203d6020116116c4576116b581836101d8565b5f61168d565b9060ff5f5460081c16156138695761044c61020992613680565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b156138c957565b60405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a490fd5b906101008251116139b4578151156139af5761397261396861164b61163d85611442565b60ff600191161b90565b6001905b83518210156139aa5760019061399561396861164b61163d868961144f565b906139a18183116138c2565b17910190613976565b925050565b5f9150565b60a460405162461bcd60e51b815260206004820152604460248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b6084820152fd5b90816020910312610251575161182381610453565b15613a4757565b60405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608490fd5b60018060a01b03169060405190613ab76040836101d8565b602082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65646020830152823b15613b2c575f81613b07948260208195519301915af1613b01613bbd565b90613bec565b805180613b12575050565b81602080613b27936102099501019101613a2b565b613a40565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b15613b7857565b60405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606490fd5b3d15613be7573d90613bce82610af1565b91613bdc60405193846101d8565b82523d5f602084013e565b606090565b90919015613bf8575090565b815115613c085750805190602001fd5b60405162461bcd60e51b815260206004820152908190613c2c9060248301906127af565b0390fdfe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a264697066735822122072b4b98d2c34347f1c3b40046af199ce34fe4bad7aa7dd02570af40e3decdf7964736f6c634300081b0033
/// ```
#[rustfmt::skip]
#[allow(clippy::all)]
pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
b"`\x80`@R`\x046\x10\x15a\0\x11W_\x80\xFD[_5`\xE0\x1C\x80c\x17\x1F\x1D[\x14a\x01\x84W\x80c3\xCF\xB7\xB7\x14a\x01\x7FW\x80c;\xC2\x8C\x8C\x14a\x01zW\x80cAl~^\x14a\x01uW\x80c]\xF4YF\x14a\x01pW\x80ch0H5\x14a\x01kW\x80ck:\xA7.\x14a\x01fW\x80cm\x14\xA9\x87\x14a\x01aW\x80cn\xFBF6\x14a\x01\\W\x80cqP\x18\xA6\x14a\x01WW\x80c\x8D\xA5\xCB[\x14a\x01RW\x80c\x99&\xEE}\x14a\x01MW\x80c\xA0\x16\x9D\xDD\x14a\x01HW\x80c\xA2\x0B\x99\xBF\x14a\x01CW\x80c\xA3d\xF4\xDA\x14a\x01>W\x80c\xA9\x8F\xB3U\x14a\x019W\x80c\xB9\x8D\t\x08\x14a\x014W\x80c\xC4\xD6m\xE8\x14a\x01/W\x80c\xDF\\\xF7#\x14a\x01*W\x80c\xE4\x81\xAF\x9D\x14a\x01%W\x80c\xF2\xFD\xE3\x8B\x14a\x01 W\x80c\xFC)\x9D\xEE\x14a\x01\x1BWc\xFC\xE3l}\x14a\x01\x16W_\x80\xFD[a\x11\xABV[a\x11\x83V[a\x10\xF2V[a\x10\xD7V[a\x10\x93V[a\x0F\x9EV[a\x0F|V[a\x0E\xCAV[a\x0E\rV[a\x0C\xCDV[a\x0B\xDEV[a\x0BBV[a\n\xC9V[a\nnV[a\t\xD9V[a\x06\x87V[a\x06CV[a\x05\xFFV[a\x05\xBBV[a\x04]V[a\x04$V[a\x03\xECV[a\x031V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x01\xB8W`@RV[a\x01\x89V[``\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x01\xB8W`@RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x01\xB8W`@RV[`@Q\x90a\x02\ta\x01\0\x83a\x01\xD8V[V[`@Q\x90a\x02\t`@\x83a\x01\xD8V[\x90a\x02\t`@Q\x92\x83a\x01\xD8V[`@\x90`\xE3\x19\x01\x12a\x02QW`@Q\x90a\x02A\x82a\x01\x9DV[`\xE45\x82Ra\x01\x045` \x83\x01RV[_\x80\xFD[\x91\x90\x82`@\x91\x03\x12a\x02QW`@Qa\x02m\x81a\x01\x9DV[` \x80\x82\x94\x805\x84R\x015\x91\x01RV[\x90\x80`\x1F\x83\x01\x12\x15a\x02QW`@Q\x91a\x02\x98`@\x84a\x01\xD8V[\x82\x90`@\x81\x01\x92\x83\x11a\x02QW\x90[\x82\x82\x10a\x02\xB4WPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x02\xA7V[\x90`\x80`c\x19\x83\x01\x12a\x02QW`@Qa\x02\xDD\x81a\x01\x9DV[` a\x02\xF8\x82\x94a\x02\xEF\x81`da\x02}V[\x84R`\xA4a\x02}V[\x91\x01RV[\x91\x90`\x80\x83\x82\x03\x12a\x02QW` a\x02\xF8`@Q\x92a\x03\x1B\x84a\x01\x9DV[`@\x84\x96a\x03)\x83\x82a\x02}V[\x86R\x01a\x02}V[4a\x02QWa\x01 6`\x03\x19\x01\x12a\x02QW`\x045`@6`#\x19\x01\x12a\x02QWa\x03\x89`@\x91\x82Qa\x03c\x81a\x01\x9DV[`$5\x81R`D5` \x82\x01Ra\x03y6a\x02\xC4V[\x90a\x03\x836a\x02(V[\x92a\x12\xBDV[\x82Q\x91\x15\x15\x82R\x15\x15` \x82\x01R\xF3[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x02QWV[` `@\x81\x83\x01\x92\x82\x81R\x84Q\x80\x94R\x01\x92\x01\x90_[\x81\x81\x10a\x03\xCDWPPP\x90V[\x82Q`\x01`\x01`\xA0\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x03\xC0V[4a\x02QW` 6`\x03\x19\x01\x12a\x02QWa\x04 a\x04\x14`\x045a\x04\x0F\x81a\x03\x99V[a\x159V[`@Q\x91\x82\x91\x82a\x03\xAAV[\x03\x90\xF3[4a\x02QW` 6`\x03\x19\x01\x12a\x02QWa\x04Q`\x045a\x04D\x81a\x03\x99V[a\x04La3iV[a3\xC1V[\0[\x80\x15\x15\x03a\x02QWV[4a\x02QW` 6`\x03\x19\x01\x12a\x02QW`\x045a\x04z\x81a\x04SV[`@Qc\x8D\xA5\xCB[`\xE0\x1B\x81R` \x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x05\xACW_\x91a\x05qW[P`\x01`\x01`\xA0\x1B\x03\x163\x03a\x04\xE0Wa\x04Q\x90a4\x1FV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\\`$\x82\x01R\x7FBLSSignatureChecker.onlyCoordina`D\x82\x01R\x7FtorOwner: caller is not the owne`d\x82\x01R\x7Fr of the registryCoordinator\0\0\0\0`\x84\x82\x01R`\xA4\x90\xFD[\x90P` \x81=` \x11a\x05\xA4W[\x81a\x05\x8C` \x93\x83a\x01\xD8V[\x81\x01\x03\x12a\x02QWQa\x05\x9E\x81a\x03\x99V[_a\x04\xC7V[=\x91Pa\x05\x7FV[a\x13\xB2V[_\x91\x03\x12a\x02QWV[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[`D5\x90c\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02QWV[5\x90c\xFF\xFF\xFF\xFF\x82\x16\x82\x03a\x02QWV[`\x01`\x01`@\x1B\x03\x81\x11a\x01\xB8W`\x05\x1B` \x01\x90V[\x90\x80`\x1F\x83\x01\x12\x15a\x02QW\x815a\x07\x1D\x81a\x06\xEFV[\x92a\x07+`@Q\x94\x85a\x01\xD8V[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x92\x83\x11a\x02QW` \x01\x90[\x82\x82\x10a\x07SWPPP\x90V[` \x80\x91a\x07`\x84a\x06\xDEV[\x81R\x01\x91\x01\x90a\x07FV[\x81`\x1F\x82\x01\x12\x15a\x02QW\x805a\x07\x81\x81a\x06\xEFV[\x92a\x07\x8F`@Q\x94\x85a\x01\xD8V[\x81\x84R` \x80\x85\x01\x92`\x06\x1B\x84\x01\x01\x92\x81\x84\x11a\x02QW` \x01\x91[\x83\x83\x10a\x07\xB9WPPPP\x90V[` `@\x91a\x07\xC8\x84\x86a\x02UV[\x81R\x01\x92\x01\x91a\x07\xABV[\x90\x80`\x1F\x83\x01\x12\x15a\x02QW\x815a\x07\xEA\x81a\x06\xEFV[\x92a\x07\xF8`@Q\x94\x85a\x01\xD8V[\x81\x84R` \x80\x85\x01\x92`\x05\x1B\x82\x01\x01\x91\x83\x83\x11a\x02QW` \x82\x01\x90[\x83\x82\x10a\x08$WPPPPP\x90V[\x815`\x01`\x01`@\x1B\x03\x81\x11a\x02QW` \x91a\x08F\x87\x84\x80\x94\x88\x01\x01a\x07\x06V[\x81R\x01\x91\x01\x90a\x08\x15V[\x91\x90\x91a\x01\x80\x81\x84\x03\x12a\x02QWa\x08ga\x01\xF9V[\x92\x815`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x81a\x08\x84\x91\x84\x01a\x07\x06V[\x84R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x81a\x08\xA5\x91\x84\x01a\x07kV[` \x85\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x81a\x08\xC9\x91\x84\x01a\x07kV[`@\x85\x01Ra\x08\xDB\x81``\x84\x01a\x02\xFDV[``\x85\x01Ra\x08\xED\x81`\xE0\x84\x01a\x02UV[`\x80\x85\x01Ra\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x81a\t\x12\x91\x84\x01a\x07\x06V[`\xA0\x85\x01Ra\x01@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x81a\t7\x91\x84\x01a\x07\x06V[`\xC0\x85\x01Ra\x01`\x82\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QWa\tZ\x92\x01a\x07\xD3V[`\xE0\x83\x01RV[\x90` \x80\x83Q\x92\x83\x81R\x01\x92\x01\x90_[\x81\x81\x10a\t~WPPP\x90V[\x82Q`\x01`\x01``\x1B\x03\x16\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\tqV[\x92\x91\x90a\t\xD4` \x91`@\x86R\x82a\t\xC0\x82Q`@\x80\x8A\x01R`\x80\x89\x01\x90a\taV[\x91\x01Q\x86\x82\x03`?\x19\x01``\x88\x01Ra\taV[\x93\x01RV[4a\x02QW`\x806`\x03\x19\x01\x12a\x02QW`\x045`$5`\x01`\x01`@\x1B\x03\x81\x11a\x02QW6`#\x82\x01\x12\x15a\x02QW\x80`\x04\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW6`$\x82\x84\x01\x01\x11a\x02QWa\n0a\x06\xCBV[\x90`d5\x93`\x01`\x01`@\x1B\x03\x85\x11a\x02QW`$a\nVa\n^\x966\x90`\x04\x01a\x08QV[\x94\x01\x90a\x1D{V[\x90a\x04 `@Q\x92\x83\x92\x83a\t\x9DV[4a\x02QW_6`\x03\x19\x01\x12a\x02QWa\n\x86a3iV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x90\x91U_\x90`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x82\x80\xA3\0[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`3T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[`\x01`\x01`@\x1B\x03\x81\x11a\x01\xB8W`\x1F\x01`\x1F\x19\x16` \x01\x90V[\x92\x91\x92a\x0B\x18\x82a\n\xF1V[\x91a\x0B&`@Q\x93\x84a\x01\xD8V[\x82\x94\x81\x84R\x81\x83\x01\x11a\x02QW\x82\x81` \x93\x84_\x96\x017\x01\x01RV[4a\x02QW`@6`\x03\x19\x01\x12a\x02QW`\x045a\x0B_\x81a\x03\x99V[`$5\x90`\x01`\x01`@\x1B\x03\x82\x11a\x02QW```\x03\x19\x836\x03\x01\x12a\x02QW`@Q\x90a\x0B\x8C\x82a\x01\xBDV[\x82`\x04\x015`\x01`\x01`@\x1B\x03\x81\x11a\x02QW\x83\x016`#\x82\x01\x12\x15a\x02QWa\x04Q\x93a\x0B\xC6`D\x926\x90`$`\x04\x82\x015\x91\x01a\x0B\x0CV[\x84R`$\x81\x015` \x85\x01R\x015`@\x83\x01Ra&\xD5V[4a\x02QW_` 6`\x03\x19\x01\x12a\x02QW`\x045a\x0B\xFC\x81a\x03\x99V[a\x0C\x04a3iV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x02QW`@Qc\xA0\x16\x9D\xDD`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R\x90_\x90\x82\x90`$\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x05\xACWa\x0CoWP\x80\xF3[a\x04Q\x91P_\x90a\x01\xD8V[\x90` `\x03\x19\x83\x01\x12a\x02QW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x02QW`\x04\x01\x82`\x1F\x82\x01\x12\x15a\x02QW\x805\x92`\x01`\x01`@\x1B\x03\x84\x11a\x02QW` \x80\x83\x01\x92\x85`\x05\x1B\x01\x01\x11a\x02QW\x91\x90V[4a\x02QWa\x0C\xDB6a\x0C{V[\x90a\x0C\xE4a6\xC8V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x91_[\x81\x81\x10a\rhWP\x82;\x15a\x02QWa\rD\x92_\x92\x83`@Q\x80\x96\x81\x95\x82\x94cN\\\xD2\xFD`\xE1\x1B\x84R0`\x04\x85\x01a)&V[\x03\x92Z\xF1\x80\x15a\x05\xACWa\rTW\0[\x80a\rb_a\x04Q\x93a\x01\xD8V[\x80a\x05\xB1V[\x91_\x93\x91_\x91[a\r\x87a\r}\x86\x84\x84a'\xD3V[`@\x81\x01\x90a'\xF5V[\x90P\x83\x10\x15a\r\xC3W`\x01a\r\xB9\x81\x97` a\r\xB1\x87a\r\xABa\r}\x8C\x8A\x8Aa'\xD3V[\x90a(*V[\x015\x90a\x14\xBFV[\x93\x01\x92\x95Pa\roV[\x93\x90\x92\x94`\x01\x92Pa\x0E\x07\x90a\r\xF1\x810\x88a\r\xEC` a\r\xE6\x89\x8C3\x95a'\xD3V[\x01a(:V[a7\\V[\x86a\x0E\x02` a\r\xE6\x86\x89\x8Ba'\xD3V[a7\xA5V[\x01a\r\x11V[4a\x02QW_` 6`\x03\x19\x01\x12a\x02QW`\x045a\x0E+\x81a\x03\x99V[a\x0E_3\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x14a&HV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90\x81;\x15a\x02QW`@QcQ\xB2zm`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16`\x04\x82\x01R\x90_\x90\x82\x90`$\x90\x82\x90\x84\x90Z\xF1\x80\x15a\x05\xACWa\x0CoWP\x80\xF3[4a\x02QW_` 6`\x03\x19\x01\x12a\x02QW`\x045`\x01`\x01`@\x1B\x03\x81\x11a\x02QW6`#\x82\x01\x12\x15a\x02QWa\x0F\x0C\x906\x90`$\x81`\x04\x015\x91\x01a\x0B\x0CV[a\x0F\x14a3iV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x80;\x15a\x02QW`@Qc\xA9\x8F\xB3U`\xE0\x1B\x81R\x91_\x91\x83\x91\x82\x90\x84\x90\x82\x90a\x0Fj\x90`\x04\x83\x01a*\x96V[\x03\x92Z\xF1\x80\x15a\x05\xACWa\x0CoWP\x80\xF3[4a\x02QW_6`\x03\x19\x01\x12a\x02QW` `\xFF`\x97T\x16`@Q\x90\x15\x15\x81R\xF3[4a\x02QW` 6`\x03\x19\x01\x12a\x02QW`\x045a\x0F\xBB\x81a\x03\x99V[a\x10\x0B_T\x91a\x0F\xEFa\x0F\xD9a\x0F\xD5\x85`\xFF\x90`\x08\x1C\x16\x90V[\x15\x90V[\x80\x94\x81\x95a\x10\x85W[\x81\x15a\x10eW[Pa*\xA7V[\x82a\x10\0`\x01`\xFF\x19_T\x16\x17_UV[a\x10NW[\x80a8OV[a\x10\x11W\0[a\x10\x1Fa\xFF\0\x19_T\x16_UV[`@Q`\x01\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x90\xA1\0[a\x10`a\x01\0a\xFF\0\x19_T\x16\x17_UV[a\x10\x05V[0;\x15\x91P\x81a\x10wW[P_a\x0F\xE9V[`\xFF\x16`\x01\x14\x90P_a\x10pV[`\x01`\xFF\x82\x16\x10\x91Pa\x0F\xE2V[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x81R` \x90\xF3[4a\x02QW_6`\x03\x19\x01\x12a\x02QWa\x04 a\x04\x14a+\nV[4a\x02QW` 6`\x03\x19\x01\x12a\x02QW`\x045a\x11\x0F\x81a\x03\x99V[a\x11\x17a3iV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\x11/Wa\x04Q\x90a6\x80V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x90\xFD[4a\x02QW_6`\x03\x19\x01\x12a\x02QW`eT`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x02QWa\x11\xB96a\x0C{V[\x90a\x11\xC2a6\xC8V[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x91_[\x81\x81\x10a\x12!WP\x82;\x15a\x02QWa\rD\x92_\x92\x83`@Q\x80\x96\x81\x95\x82\x94c\xFC\xE3l}`\xE0\x1B\x84R`\x04\x84\x01a-YV[\x80a\x12Pa\x127` a\r\xE6`\x01\x95\x87\x89a-7V[`@a\x12D\x84\x87\x89a-7V[\x015\x900\x903\x90a7\\V[a\x12ya\x12c` a\r\xE6\x84\x87\x89a-7V[\x86`@a\x12q\x85\x88\x8Aa-7V[\x015\x91a7\xA5V[\x01a\x11\xEFV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x90`\x02\x81\x10\x15a\x12\xA4W`\x05\x1B\x01\x90V[a\x12\x7FV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[a\x13\x99a\x13va\x13\x9F\x95a\x13pa\x13i\x85\x87Q` \x89\x01Q\x8AQQ` \x8CQ\x01Q` \x8D\x01` \x81QQ\x91Q\x01Q\x91\x89Q\x93` \x8B\x01Q\x95`@Q\x97` \x89\x01\x99\x8AR` \x8A\x01R`@\x89\x01R``\x88\x01R`\x80\x87\x01R`\xA0\x86\x01R`\xC0\x85\x01R`\xE0\x84\x01Ra\x01\0\x83\x01Ra\x13@\x81a\x01 \x84\x01\x03`\x1F\x19\x81\x01\x83R\x82a\x01\xD8V[Q\x90 \x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x90\x06\x90V[\x80\x96a.rV[\x90a.\xB8V[\x92a\x13pa\x13\x8Ba\x13\x85a/@V[\x94a07V[\x91a\x13\x94a1SV[a.rV[\x91a1\x9DV[\x90\x91V[\x90\x81` \x91\x03\x12a\x02QWQ\x90V[`@Q=_\x82>=\x90\xFD[\x90\x81` \x91\x03\x12a\x02QWQ`\x01`\x01`\xC0\x1B\x03\x81\x16\x81\x03a\x02QW\x90V[\x90\x81` \x91\x03\x12a\x02QWQ`\xFF\x81\x16\x81\x03a\x02QW\x90V[`@Q\x90a\x14\x04` \x83a\x01\xD8V[_\x80\x83R6` \x84\x017V[\x90a\x14\x1A\x82a\x06\xEFV[a\x14'`@Q\x91\x82a\x01\xD8V[\x82\x81R\x80\x92a\x148`\x1F\x19\x91a\x06\xEFV[\x01\x90` 6\x91\x017V[\x80Q\x15a\x12\xA4W` \x01\x90V[\x90\x81Q\x81\x10\x15a\x12\xA4W\x01` \x01\x90V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x90`\x01\x82\x01\x80\x92\x11a\x14\x82WV[a\x14`V[\x90`\x02\x82\x01\x80\x92\x11a\x14\x82WV[\x90`\x03\x82\x01\x80\x92\x11a\x14\x82WV[\x90`\x04\x82\x01\x80\x92\x11a\x14\x82WV[\x90`\x05\x82\x01\x80\x92\x11a\x14\x82WV[\x91\x90\x82\x01\x80\x92\x11a\x14\x82WV[`\x01`\x01``\x1B\x03\x81\x16\x03a\x02QWV[\x90\x81`@\x91\x03\x12a\x02QW` `@Q\x91a\x14\xF7\x83a\x01\x9DV[\x80Qa\x15\x02\x81a\x03\x99V[\x83R\x01Qa\x15\x0F\x81a\x14\xCCV[` \x82\x01R\x90V[\x80Q\x82\x10\x15a\x12\xA4W` \x91`\x05\x1B\x01\x01\x90V[_\x19\x81\x14a\x14\x82W`\x01\x01\x90V[`@Qc\t\xAA\x15'`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\x04\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90\x91\x16\x90` \x81`$\x81\x85Z\xFA\x90\x81\x15a\x05\xACWa\x15\xB9\x91` \x91_\x91a\x18\xB8W[P`@Q\x80\x93\x81\x92c\x87\x1E\xF0I`\xE0\x1B\x83R`\x04\x83\x01\x91\x90` \x83\x01\x92RV[\x03\x81\x85Z\xFA\x90\x81\x15a\x05\xACW_\x91a\x18\x89W[P`\x01`\x01`\xC0\x1B\x03\x16\x90\x81\x15\x90\x81\x15a\x18&W[Pa\x18\x1AWa\x15\xEF\x90a2\xCBV[_\x91\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90\x83[\x81Q\x85\x10\x15a\x16\xCBWa\x16t` a\x16Qa\x16Ka\x16=\x89\x87a\x14OV[Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[`\xF8\x1C\x90V[`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x90\x91\x16`\x04\x82\x01R\x91\x82\x90\x81\x90`$\x82\x01\x90V[\x03\x81\x87Z\xFA\x80\x15a\x05\xACW`\x01\x92a\x16\x93\x92_\x92a\x16\x9BW[Pa\x14\xBFV[\x94\x01\x93a\x16\x1FV[a\x16\xBD\x91\x92P` =\x81\x11a\x16\xC4W[a\x16\xB5\x81\x83a\x01\xD8V[\x81\x01\x90a\x13\xA3V[\x90_a\x16\x8DV[P=a\x16\xABV[a\x16\xD6\x91\x94Pa\x14\x10V[\x92_\x90_[\x81Q\x81\x10\x15a\x18\x14Wa\x16\xF4a\x16Ka\x16=\x83\x85a\x14OV[`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01R\x90` \x82`$\x81\x89Z\xFA\x91\x82\x15a\x05\xACW_\x92a\x17\xF4W[P\x90_\x91[\x81\x83\x10a\x179WPPP`\x01\x01a\x16\xDBV[`@\x80QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x93\x96\x92\x93\x91\x92\x91\x90\x81`D\x81\x8BZ\xFA\x91\x82\x15a\x05\xACWa\x17\xB8\x8Ba\x17\xA9\x83a\x17\xA3a\x17\x97`\x01\x98a\x17\xBD\x98_\x91a\x17\xC6W[PQ`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x92a\x15\x17V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90RV[a\x15+V[\x95\x01\x91\x90a\x17'V[a\x17\xE7\x91P`@=\x81\x11a\x17\xEDW[a\x17\xDF\x81\x83a\x01\xD8V[\x81\x01\x90a\x14\xDDV[_a\x17\x89V[P=a\x17\xD5V[a\x18\r\x91\x92P` =\x81\x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[\x90_a\x17\"V[PPPPV[Pa\x18#a\x13\xF5V[\x90V[`@Qc\x9A\xA1e=`\xE0\x1B\x81R\x91P` \x90\x82\x90`\x04\x90\x82\x90Z\xFA\x80\x15a\x05\xACW`\xFF\x91_\x91a\x18ZW[P\x16\x15_a\x15\xE1V[a\x18|\x91P` =` \x11a\x18\x82W[a\x18t\x81\x83a\x01\xD8V[\x81\x01\x90a\x13\xDCV[_a\x18QV[P=a\x18jV[a\x18\xAB\x91P` =` \x11a\x18\xB1W[a\x18\xA3\x81\x83a\x01\xD8V[\x81\x01\x90a\x13\xBDV[_a\x15\xCCV[P=a\x18\x99V[a\x18\xCF\x91P\x82=\x84\x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[_a\x15\x99V[`@Q\x90a\x18\xE2\x82a\x01\x9DV[``` \x83\x82\x81R\x01RV[\x15a\x18\xF5WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: empty quorum input\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x90\xFD[\x15a\x19TWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`A`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: input quorum length mismatc`d\x82\x01R`\r`\xFB\x1B`\x84\x82\x01R`\xA4\x90\xFD[\x15a\x19\xBDWV[`\xA4`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: input nonsigner length mism`d\x82\x01Rc\x0C.\x8Cm`\xE3\x1B`\x84\x82\x01R\xFD[\x15a\x1A(WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`<`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: invalid reference block\0\0\0\0`d\x82\x01R`\x84\x90\xFD[_\x19\x81\x01\x91\x90\x82\x11a\x14\x82WV[\x15a\x1A\x95WV[`\x84`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`@`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: nonSignerPubkeys not sorted`d\x82\x01R\xFD[\x90\x82\x10\x15a\x12\xA4W\x01\x90V[\x15a\x1A\xFFWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`f`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: StakeRegistry updates must `d\x82\x01R\x7Fbe within withdrawalDelayBlocks `\x84\x82\x01Rewindow`\xD0\x1B`\xA4\x82\x01R`\xC4\x90\xFD[\x90\x81` \x91\x03\x12a\x02QWQg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x16\x81\x03a\x02QW\x90V[\x15a\x1B\xB4WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`a`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: quorumApk hash in storage d`d\x82\x01R\x7Foes not match provided quorum ap`\x84\x82\x01R`k`\xF8\x1B`\xA4\x82\x01R`\xC4\x90\xFD[\x90\x81` \x91\x03\x12a\x02QWQa\x18#\x81a\x14\xCCV[\x90`\x01`\x01``\x1B\x03\x80\x91\x16\x91\x16\x03\x90`\x01`\x01``\x1B\x03\x82\x11a\x14\x82WV[\x15a\x1CxWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`C`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: pairing precompile call fai`d\x82\x01Rb\x1B\x19Y`\xEA\x1B`\x84\x82\x01R`\xA4\x90\xFD[\x15a\x1C\xE3WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`9`$\x82\x01R_Q` a<Q_9_Q\x90_R`D\x82\x01R\x7Fres: signature is invalid\0\0\0\0\0\0\0`d\x82\x01R`\x84\x90\xFD[`\x04\x91c\xFF\xFF\xFF\xFF`\xE0\x1B\x90`\xE0\x1B\x16\x81R\x01` \x82Q\x91\x92\x01\x90_[\x81\x81\x10a\x1DeWPPP\x90V[\x82Q\x84R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x1DXV[\x94\x93\x92\x90\x91\x93a\x1D\x89a\x18\xD5V[Pa\x1D\x95\x85\x15\x15a\x18\xEEV[`@\x84\x01QQ\x85\x14\x80a&:W[\x80a&,W[\x80a&\x1EW[a\x1D\xB8\x90a\x19MV[a\x1D\xCA` \x85\x01QQ\x85QQ\x14a\x19\xB6V[a\x1D\xE1c\xFF\xFF\xFF\xFFC\x16c\xFF\xFF\xFF\xFF\x84\x16\x10a\x1A!V[a\x1D\xE9a\x02\x0BV[_\x81R_` \x82\x01R\x92a\x1D\xFBa\x18\xD5V[a\x1E\x04\x87a\x14\x10V[` \x82\x01Ra\x1E\x12\x87a\x14\x10V[\x81Ra\x1E\x1Ca\x18\xD5V[\x92a\x1E+` \x88\x01QQa\x14\x10V[\x84Ra\x1E;` \x88\x01QQa\x14\x10V[` \x85\x81\x01\x91\x90\x91R`@Qc\x9A\xA1e=`\xE0\x1B\x81R\x90\x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x05\xACWa\x1E\xA4\x91_\x91a%\xFFW[Pa\x1E\x9F6\x8B\x87a\x0B\x0CV[a4]V[\x98_\x96[` \x89\x01Q\x80Q\x89\x10\x15a W` \x88a\x1F\x15a\x1F\x0B\x8Ca\x1F\x03\x8F\x96\x86\x8Ea\x1E\xE8a\x1E\xD5\x86\x80\x95a\x15\x17V[Q\x80Q_R` \x01Q` R`@_ \x90V[a\x1E\xF5\x84\x84\x84\x01Qa\x15\x17V[R\x82a\x1F\xEDW[\x01Qa\x15\x17V[Q\x95Qa\x15\x17V[Qc\xFF\xFF\xFF\xFF\x16\x90V[`@Qc\x04\xECcQ`\xE0\x1B\x81R`\x04\x81\x01\x94\x90\x94Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x91\x82\x15a\x05\xACWa\x13p\x8Aa\x1F\xC2\x8Fa\x1F\xBB\x8F\x84` \x8F\x92a\x1F\xB2\x93a\x1F\xAA\x84`\x01\x9Ea\x1F\xC8\x9E_\x91a\x1F\xD0W[P\x8F\x80`\xC0\x1B\x03\x16\x92Qa\x15\x17V[R\x01Qa\x15\x17V[Q\x93\x8DQa\x15\x17V[Q\x16a4\xE4V[\x90a5\x15V[\x97\x01\x96a\x1E\xA8V[a\x1F\xE7\x91P\x86=\x81\x11a\x18\xB1Wa\x18\xA3\x81\x83a\x01\xD8V[_a\x1F\x9BV[a \x1Ba\x1F\xFD\x84\x84\x84\x01Qa\x15\x17V[Qa \x14\x84\x84\x01Qa \x0E\x87a\x1A\x80V[\x90a\x15\x17V[Q\x10a\x1A\x8EV[a\x1E\xFCV[P\x90\x95\x97\x94\x96Pa 5\x91\x98\x93\x92\x99Pa5\xFBV[\x91a B`\x97T`\xFF\x16\x90V[\x90\x81\x15a%\xF7W`@Qc\x18\x89\x1F\xD7`\xE3\x1B\x81R` \x81`\x04\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x05\xACW_\x91a%\xD8W[P\x91\x90[_\x92[\x81\x84\x10a!\x01WPPPPP\x92a \xDAa \xD5a \xCEa \xFB\x95\x85a \xED\x98`\x80``` \x99\x01Q\x92\x01Q\x92a\x12\xBDV[\x91\x90a\x1CqV[a\x1C\xDCV[\x01Q`@Q\x92\x83\x91` \x83\x01\x95\x86a\x1D;V[\x03`\x1F\x19\x81\x01\x83R\x82a\x01\xD8V[Q\x90 \x90V[\x92\x98\x95\x96\x90\x93\x99\x91\x97\x94\x87\x8B\x88\x8C\x88\x8Da$\xD5W[a\x1F\x0B\x82`\xA0a!da\x16Ka!V\x84a!l\x97a!Pa!Ba\x1E\xD5\x8F\x9C`@` \x9F\x9E\x01Qa\x15\x17V[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x90V[\x9Ba\x1A\xECV[5`\x01`\x01`\xF8\x1B\x03\x19\x16\x90V[\x97\x01Qa\x15\x17V[`@Qc\x1A/2\xAB`\xE2\x1B\x81R`\xFF\x95\x90\x95\x16`\x04\x86\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x86\x01R\x16`D\x84\x01R\x82`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x90\x81\x15a\x05\xACWa\"0a\x1F\x0B\x8F\x95\x8F\x90a\"(\x8F\x97\x8F\x96\x84\x8Fa\"\"`\xC0\x96a\"\x1B\x84\x8F` \x9F\x90a\x1E\xFCa!V\x99`@\x93a\x16K\x9C_\x91a$\xA7W[Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x91\x82\x16\x91\x16\x14a\x1B\xADV[Q\x90a.\xB8V[\x9Ca\x1A\xECV[\x96\x01Qa\x15\x17V[`@Qcd\x14\xA6+`\xE1\x1B\x81R`\xFF\x94\x90\x94\x16`\x04\x85\x01Rc\xFF\xFF\xFF\xFF\x91\x82\x16`$\x85\x01R\x16`D\x83\x01R\x81`d\x81`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16Z\xFA\x90\x81\x15a\x05\xACWa\"\xBD\x91\x8C\x8F\x92_\x92a$\x83W[P` a\"\xAF\x92\x93\x01Qa\x15\x17V[\x90`\x01`\x01``\x1B\x03\x16\x90RV[a\"\xEA\x8Ca\"\xAF\x8Ca\"\xE3a\"\xD6\x82` \x86\x01Qa\x15\x17V[Q`\x01`\x01``\x1B\x03\x16\x90V[\x92Qa\x15\x17V[_\x98_[` \x8A\x01QQ\x81\x10\x15a$jW\x8B\x8Da#,\x89a#\x1Fa\x16Ka!V\x86\x8F\x89a#\x17\x91Qa\x15\x17V[Q\x94\x87a\x1A\xECV[`\xFF\x16\x1C`\x01\x90\x81\x16\x14\x90V[a#;W[PP`\x01\x01a\"\xEEV[\x8A\x8Aa#\xC3\x85\x9F\x94\x8F\x96\x86a#}\x8F\x93`\xE0a#ta\x1F\x0B\x95` a#la\x16Ka!V\x83\x9Fa#\x83\x9C\x89\x91a\x1A\xECV[\x9A\x01Qa\x15\x17V[Q\x9B\x01Qa\x15\x17V[Qa\x15\x17V[`@Qcy_JW`\xE1\x1B\x81R`\xFF\x90\x93\x16`\x04\x84\x01Rc\xFF\xFF\xFF\xFF\x93\x84\x16`$\x84\x01R`D\x83\x01\x96\x90\x96R\x91\x90\x94\x16`d\x85\x01R\x83\x90\x81\x90`\x84\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x05\xACW\x8Fa$)\x90\x8F\x93`\x01\x95\x94\x86\x95_\x92a$4W[Pa\x17\xA3a\"\xAF\x92\x93Q\x93a$$a\"\xD6\x84\x87a\x15\x17V[a\x1CQV[\x01\x9A\x90P\x8B\x8Da#1V[a\"\xAF\x92Pa$\\a\x17\xA3\x91` =\x81\x11a$cW[a$T\x81\x83a\x01\xD8V[\x81\x01\x90a\x1C<V[\x92Pa$\x0CV[P=a$JV[P\x93\x91\x97\x96\x99`\x01\x91\x96\x99P\x9A\x94\x92\x9A\x01\x92\x91\x90a \x9DV[a\"\xAF\x92Pa$\xA0` \x91\x82=\x81\x11a$cWa$T\x81\x83a\x01\xD8V[\x92Pa\"\xA0V[` a$\xC8\x92P=\x81\x11a$\xCEW[a$\xC0\x81\x83a\x01\xD8V[\x81\x01\x90a\x1B\x8CV[_a\"\x05V[P=a$\xB6V[a%\x12\x94Pa$\xEF\x92Pa\x16K\x91a!V\x91` \x95a\x1A\xECV[`@Qc\x12M\x06!`\xE1\x1B\x81R`\xFF\x90\x91\x16`\x04\x82\x01R\x91\x82\x90\x81\x90`$\x82\x01\x90V[\x03\x81\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x80\x15a\x05\xACW` \x89a!l\x8F\x93\x8F`\xA0\x8F\x97a\x16Ka!V\x8F\x8F\x90a!Pa!Ba\x1E\xD5\x8F`@\x8B\x96\x91\x8Fa%\x99\x90a\x1F\x0B\x9F\x8A\x95a!d\x9E_\x92a%\xAFW[Pc\xFF\xFF\xFF\xFFa%\x93\x92\x93\x16\x92a\x14\xBFV[\x11a\x1A\xF8V[PPPPPP\x97PPPPPP\x92\x93PPa!\x16V[` a%\x93\x93Pc\xFF\xFF\xFF\xFF\x91a%\xD1\x91=\x81\x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[\x92Pa%\x81V[a%\xF1\x91P` =` \x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[_a \x96V[_\x91\x90a \x9AV[a&\x18\x91P` =` \x11a\x18\x82Wa\x18t\x81\x83a\x01\xD8V[_a\x1E\x93V[P`\xE0\x84\x01QQ\x85\x14a\x1D\xAFV[P`\xC0\x84\x01QQ\x85\x14a\x1D\xA9V[P`\xA0\x84\x01QQ\x85\x14a\x1D\xA3V[\x15a&OWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`R`$\x82\x01R\x7FServiceManagerBase.onlyRegistryC`D\x82\x01R\x7Foordinator: caller is not the re`d\x82\x01Rq3\xB4\xB9\xBA9<\x901\xB7\xB7\xB924\xB70\xBA7\xB9`q\x1B`\x84\x82\x01R`\xA4\x90\xFD[a'\t3\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x14a&HV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x91\x82;\x15a\x02QW_\x92\x83\x92`@Q\x94\x85\x80\x94\x81\x93c\x99&\xEE}`\xE0\x1B\x83R`\x01\x80`\xA0\x1B\x03\x16`\x04\x83\x01R`@`$\x83\x01R`@a'~\x82Q```D\x86\x01R`\xA4\x85\x01\x90a'\xAFV[\x91` \x81\x01Q`d\x85\x01R\x01Q`\x84\x83\x01R\x03\x92Z\xF1\x80\x15a\x05\xACWa'\xA1WPV[\x80a\rb_a\x02\t\x93a\x01\xD8V[\x80Q\x80\x83R` \x92\x91\x81\x90\x84\x01\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x91\x90\x81\x10\x15a\x12\xA4W`\x05\x1B\x81\x015\x90`\xBE\x19\x816\x03\x01\x82\x12\x15a\x02QW\x01\x90V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x02QW\x01\x805\x90`\x01`\x01`@\x1B\x03\x82\x11a\x02QW` \x01\x91\x81`\x06\x1B6\x03\x83\x13a\x02QWV[\x91\x90\x81\x10\x15a\x12\xA4W`\x06\x1B\x01\x90V[5a\x18#\x81a\x03\x99V[\x905`\x1E\x19\x826\x03\x01\x81\x12\x15a\x02QW\x01` \x815\x91\x01\x91`\x01`\x01`@\x1B\x03\x82\x11a\x02QW\x81`\x06\x1B6\x03\x83\x13a\x02QWV[\x91` \x90\x82\x81R\x01\x91\x90_[\x81\x81\x10a(\x91WPPP\x90V[\x90\x91\x92`@\x80`\x01\x92\x865a(\xA5\x81a\x03\x99V[\x84\x80`\xA0\x1B\x03\x16\x81R`\x01`\x01``\x1B\x03` \x88\x015a(\xC4\x81a\x14\xCCV[\x16` \x82\x01R\x01\x94\x01\x92\x91\x01a(\x84V[\x905`\x1E\x19\x826\x03\x01\x81\x12\x15a\x02QW\x01` \x815\x91\x01\x91`\x01`\x01`@\x1B\x03\x82\x11a\x02QW\x816\x03\x83\x13a\x02QWV[\x90\x80` \x93\x92\x81\x84R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R`@` \x82\x01\x81\x90R\x81\x01\x83\x90R`\x05\x83\x90\x1B\x81\x01``\x90\x81\x01\x93\x83\x926\x84\x90\x03`\xBE\x19\x01\x92_\x91\x90\x81\x01\x90[\x83\x83\x10a)qWPPPPPPP\x90V[\x90\x91\x92\x93\x94\x95\x96`_\x19\x82\x82\x03\x01\x83R\x875\x86\x81\x12\x15a\x02QW\x87\x01\x90a)\xA9a)\x9B\x83\x80a(DV[`\xC0\x84R`\xC0\x84\x01\x91a(xV[\x91` \x81\x015a)\xB8\x81a\x03\x99V[`\x01`\x01`\xA0\x1B\x03\x16` \x83\x81\x01\x91\x90\x91Ra)\xD7`@\x83\x01\x83a(DV[\x84\x86\x03`@\x86\x01R\x80\x86R\x94\x90\x91\x01\x93_[\x81\x81\x10a*bWPPPa*Q`\x01\x93` \x93a*C\x84a*\x1Da*\x10``\x89\x98\x01a\x06\xDEV[c\xFF\xFF\xFF\xFF\x16``\x85\x01RV[a*9a*,`\x80\x83\x01a\x06\xDEV[c\xFF\xFF\xFF\xFF\x16`\x80\x85\x01RV[`\xA0\x81\x01\x90a(\xD5V[\x91`\xA0\x81\x85\x03\x91\x01Ra)\x06V[\x99\x01\x93\x01\x93\x01\x91\x95\x94\x93\x92\x90a)`V[\x90\x91\x94`@\x80`\x01\x92\x885a*v\x81a\x03\x99V[\x84\x80`\xA0\x1B\x03\x16\x81R` \x89\x015` \x82\x01R\x01\x96\x01\x91\x01\x91\x90\x91a)\xE9V[\x90` a\x18#\x92\x81\x81R\x01\x90a'\xAFV[\x15a*\xAEWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`.`$\x82\x01R\x7FInitializable: contract is alrea`D\x82\x01Rm\x19\x1EH\x1A[\x9A]\x1AX[\x1A^\x99Y`\x92\x1B`d\x82\x01R`\x84\x90\xFD[`@Qc\x9A\xA1e=`\xE0\x1B\x81R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90` \x81`\x04\x81\x85Z\xFA\x80\x15a\x05\xACW`\xFF\x91_\x91a-\x18W[P\x16\x80\x15a-\x0EW\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16\x90_\x90\x81\x90[\x80\x83\x10a,\xCAWPa+\xA5\x91Pa\x14\x10V[\x92_\x90_[`@Qc\x9A\xA1e=`\xE0\x1B\x81R` \x81`\x04\x81\x89Z\xFA\x80\x15a\x05\xACW`\xFF\x91_\x91a,\xACW[P\x16\x81\x10\x15a,\xA5W`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x82\x16`\x04\x82\x01\x81\x90R` \x82`$\x81\x89Z\xFA\x91\x82\x15a\x05\xACW_\x92a,\x85W[P\x90_\x91[\x81\x83\x10a,\x1FWPPP`\x01\x01a+\xAAV[`@\x80QcV\xE4\x02m`\xE1\x1B\x81R`\xFF\x83\x16`\x04\x82\x01R`$\x81\x01\x85\x90R\x93\x96\x92\x93\x91\x92\x91\x90\x81`D\x81\x8BZ\xFA\x91\x82\x15a\x05\xACWa\x17\xB8\x8Ba\x17\xA9\x83a\x17\xA3a\x17\x97`\x01\x98a,|\x98_\x91a\x17\xC6WPQ`\x01`\x01`\xA0\x1B\x03\x16\x90V[\x95\x01\x91\x90a,\rV[a,\x9E\x91\x92P` =\x81\x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[\x90_a,\x08V[P\x92PPPV[a,\xC4\x91P` =\x81\x11a\x18\x82Wa\x18t\x81\x83a\x01\xD8V[_a+\xD0V[`@Qc<\xA5\xA5\xF5`\xE0\x1B\x81R`\xFF\x84\x16`\x04\x82\x01R\x90\x91\x90` \x81`$\x81\x88Z\xFA\x80\x15a\x05\xACW`\x01\x92a-\x05\x92_\x92a\x16\x9BWPa\x14\xBFV[\x92\x01\x91\x90a+\x93V[PPa\x18#a\x13\xF5V[a-1\x91P` =` \x11a\x18\x82Wa\x18t\x81\x83a\x01\xD8V[_a+[V[\x91\x90\x81\x10\x15a\x12\xA4W`\x05\x1B\x81\x015\x90`\x9E\x19\x816\x03\x01\x82\x12\x15a\x02QW\x01\x90V[\x90\x91\x80` \x83\x01` \x84RR`@\x82\x01\x92`@\x82`\x05\x1B\x84\x01\x01\x93\x81\x93_\x91`\x9E\x19\x846\x03\x01\x91[\x85\x84\x10a-\x92WPPPPPPP\x90V[\x90\x91\x92\x93\x94\x95\x96`?\x19\x82\x82\x03\x01\x83R\x875\x90\x84\x82\x12\x15a\x02QW` \x80\x91\x88`\x01\x94\x01\x90`\x80c\xFF\xFF\xFF\xFFa.\x19\x82a-\xDDa-\xCF\x87\x80a(DV[`\xA0\x88R`\xA0\x88\x01\x91a(xV[\x95\x87\x81\x015a-\xEB\x81a\x03\x99V[\x8A\x80`\xA0\x1B\x03\x16\x88\x87\x01R`@\x81\x015`@\x87\x01R\x83a.\r``\x83\x01a\x06\xDEV[\x16``\x87\x01R\x01a\x06\xDEV[\x16\x91\x01R\x99\x01\x93\x01\x94\x01\x92\x91\x95\x94\x93\x90a-\x81V[`@Q\x90a.;\x82a\x01\x9DV[_` \x83\x82\x81R\x01RV[`@Q\x90a\x01\x80a.W\x81\x84a\x01\xD8V[6\x837V[`@Q\x90a.k` \x83a\x01\xD8V[` 6\x837V[\x91\x90`@\x90``a.\x81a..V[\x94\x85\x92` \x85Q\x92a.\x93\x85\x85a\x01\xD8V[\x846\x857\x80Q\x84R\x01Q` \x83\x01R\x84\x82\x01R`\x07a\x07\xCF\x19Z\x01\xFA\x15a.\xB6WV[\xFE[` \x92\x91`\x80`@\x92a.\xC9a..V[\x95\x86\x93\x81\x86Q\x93a.\xDA\x86\x86a\x01\xD8V[\x856\x867\x80Q\x85R\x01Q\x82\x84\x01R\x80Q\x86\x84\x01R\x01Q``\x82\x01R`\x06a\x07\xCF\x19Z\x01\xFA\x80\x15a.\xB6W\x15a/\x0BWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\r`$\x82\x01Rl\x19X\xCBXY\x19\x0BY\x98Z[\x19Y`\x9A\x1B`D\x82\x01R`d\x90\xFD[`@Qa/L\x81a\x01\x9DV[`@\x90\x81Qa/[\x83\x82a\x01\xD8V[\x826\x827\x81R` \x82Q\x91a/p\x84\x84a\x01\xD8V[\x836\x847\x01R\x80Qa/\x82\x82\x82a\x01\xD8V[\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED` \x82\x01R\x81Q\x90a/\xD8\x83\x83a\x01\xD8V[\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x01Ra0-\x83Q\x93\x84a\x01\xD8V[\x82R` \x82\x01R\x90V[_Q` a<1_9_Q\x90_R\x90a0Na..V[P_\x91\x90\x06` `\xC0\x83[a1NW_\x93_Q` a<1_9_Q\x90_R`\x03\x81\x86\x81\x81\x80\t\t\x08`@Qa0\x84\x85\x82a\x01\xD8V[\x846\x827\x84\x81\x85`@Qa0\x98\x82\x82a\x01\xD8V[\x816\x827\x83\x81R\x83` \x82\x01R\x83`@\x82\x01R\x85``\x82\x01R\x7F\x0C\x19\x13\x9C\xB8Lh\nn\x14\x11m\xA0`V\x17e\xE0Z\xA4Z\x1Cr\xA3O\x08#\x05\xB6\x1F?R`\x80\x82\x01R_Q` a<1_9_Q\x90_R`\xA0\x82\x01R`\x05a\x07\xCF\x19Z\x01\xFA\x80\x15a.\xB6Wa1\x02\x90a;qV[Q\x91a1NW_Q` a<1_9_Q\x90_R\x82\x80\t\x14a19WP_Q` a<1_9_Q\x90_R`\x01_\x94\x08\x92\x93a0YV[\x92\x93PPa1Ea\x02\x0BV[\x92\x83R\x82\x01R\x90V[a\x12\xA9V[a1[a..V[P`@Qa1h\x81a\x01\x9DV[`\x01\x81R`\x02` \x82\x01R\x90V[\x90`\x06\x82\x02\x91\x80\x83\x04`\x06\x14\x90\x15\x17\x15a\x14\x82WV[\x90`\x0C\x81\x10\x15a\x12\xA4W`\x05\x1B\x01\x90V[\x93\x92\x90\x91a1\xAB`@a\x02\x1AV[\x94\x85R` \x85\x01Ra1\xBD`@a\x02\x1AV[\x91\x82R` \x82\x01Ra1\xCDa.FV[\x92_[`\x02\x81\x10a1\xFAWPPP` a\x01\x80\x92a1\xE9a.\\V[\x93\x84\x91`\x08b\x01\xD4\xC0\xFA\x91Q\x15\x15\x90V[\x80a2\x06`\x01\x92a1vV[a2\x10\x82\x85a\x12\x93V[QQa2\x1C\x82\x89a1\x8CV[R` a2)\x83\x86a\x12\x93V[Q\x01Qa2>a28\x83a\x14tV[\x89a1\x8CV[Ra2I\x82\x86a\x12\x93V[QQQa2Xa28\x83a\x14\x87V[Ra2na2f\x83\x87a\x12\x93V[QQ` \x01\x90V[Qa2{a28\x83a\x14\x95V[R` a2\x88\x83\x87a\x12\x93V[Q\x01QQa2\x98a28\x83a\x14\xA3V[Ra2\xC4a2\xBEa2\xB7` a2\xAE\x86\x8Aa\x12\x93V[Q\x01Q` \x01\x90V[Q\x92a\x14\xB1V[\x88a1\x8CV[R\x01a1\xD0V[a\xFF\xFFa2\xD7\x82a4\xE4V[\x16a2\xE1\x81a\n\xF1V[\x90a2\xEF`@Q\x92\x83a\x01\xD8V[\x80\x82Ra2\xFE`\x1F\x19\x91a\n\xF1V[\x016` \x83\x017__[\x82Q\x82\x10\x80a3^W[\x15a3WW`\x01\x81\x1B\x84\x16a30W[a3+\x90a\x15+V[a3\x08V[\x90`\x01a3+\x91`\xFF`\xF8\x1B\x84`\xF8\x1B\x16_\x1Aa3M\x82\x87a\x14OV[S\x01\x91\x90Pa3\"V[PP\x90P\x90V[Pa\x01\0\x81\x10a3\x12V[`3T`\x01`\x01`\xA0\x1B\x03\x163\x03a3}WV[`d`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R` `$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R\xFD[`eT`@\x80Q`\x01`\x01`\xA0\x1B\x03\x80\x84\x16\x82R\x84\x16` \x82\x01R\x91\x92\x91\x7F\xE1\x1C\xDD\xF1\x81jC1\x8C\xA1u\xBB\xC5,\xD0\x18T6\xE9\xCB\xEA\xD7\xC8:\xCCT\xA7>F\x17\x17\xE3\x91\x90\xA1`\x01`\x01`\xA0\x1B\x03\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x90\x91\x16\x17`eUV[` \x7F@\xE4\xED\x88\n)\xE0\xF6\xDD\xCE0tW\xFBu\xCD\xDFO\xEE\xF7\xD3\xEC\xB00\x1B\xFD\xF4\x97j\x0E-\xFC\x91\x15\x15`\xFF\x19`\x97T\x16`\xFF\x82\x16\x17`\x97U`@Q\x90\x81R\xA1V[\x90`\x01a4k`\xFF\x93a9DV[\x92\x83\x92\x16\x1B\x11\x15a4yW\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: bitmap exceeds max value\0`d\x82\x01R`\x84\x90\xFD[\x80_\x91[a4\xF0WP\x90V[_\x19\x81\x01\x81\x81\x11a\x14\x82Wa\xFF\xFF\x91\x16\x91\x16a\xFF\xFF\x81\x14a\x14\x82W`\x01\x01\x90\x80a4\xE8V[\x90a5\x1Ea..V[Pa\xFF\xFF\x81\x16\x90a\x02\0\x82\x10\x15a5\xC3W`\x01\x82\x14a5\xBEWa5?a\x02\x0BV[_\x81R_` \x82\x01R\x92\x90`\x01\x90_\x92[a\xFF\xFF\x83\x16\x85\x10\x15a5dWPPPPP\x90V[`\x01a\xFF\xFF\x83\x16`\xFF\x86\x16\x1C\x81\x16\x14a5\x9EW[`\x01a5\x94a5\x89\x83`\xFF\x94a.\xB8V[\x94`\x01\x1Ba\xFF\xFE\x16\x90V[\x94\x01\x16\x92\x91a5PV[\x94`\x01a5\x94a5\x89a5\xB3\x89`\xFF\x95a.\xB8V[\x98\x93PPPPa5xV[PP\x90V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x10`$\x82\x01Roscalar-too-large`\x80\x1B`D\x82\x01R`d\x90\xFD[a6\x03a..V[P\x80Q\x90\x81\x15\x80a6tW[\x15a60WPP`@Qa6$`@\x82a\x01\xD8V[_\x81R_` \x82\x01R\x90V[` _Q` a<1_9_Q\x90_R\x91\x01Q\x06_Q` a<1_9_Q\x90_R\x03_Q` a<1_9_Q\x90_R\x81\x11a\x14\x82W`@Q\x91a0-\x83a\x01\x9DV[P` \x81\x01Q\x15a6\x0FV[`3\x80T`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x90\x92U\x90\x91\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0_\x80\xA3V[`eT`\x01`\x01`\xA0\x1B\x03\x163\x03a6\xDCWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`L`$\x82\x01R\x7FServiceManagerBase.onlyRewardsIn`D\x82\x01R\x7Fitiator: caller is not the rewar`d\x82\x01Rk29\x904\xB74\xBA4\xB0\xBA7\xB9`\xA1\x1B`\x84\x82\x01R`\xA4\x90\xFD[`@Qc#\xB8r\xDD`\xE0\x1B` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`$\x82\x01R\x92\x90\x91\x16`D\x83\x01R`d\x80\x83\x01\x93\x90\x93R\x91\x81Ra\x02\t\x91a7\xA0`\x84\x83a\x01\xD8V[a:\x9FV[`@Qcn\xB1v\x9F`\xE1\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x83\x16`$\x82\x01R` \x81\x80`D\x81\x01\x03\x81`\x01`\x01`\xA0\x1B\x03\x86\x16Z\xFA\x90\x81\x15a\x05\xACWa\x02\t\x94a7\xA0\x92a7\xFC\x92_\x91a80WPa\x14\xBFV[`@Qc\t^\xA7\xB3`\xE0\x1B` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x94\x90\x94\x16`$\x85\x01R`D\x80\x85\x01\x91\x90\x91R\x83R`d\x83a\x01\xD8V[a8I\x91P` =` \x11a\x16\xC4Wa\x16\xB5\x81\x83a\x01\xD8V[_a\x16\x8DV[\x90`\xFF_T`\x08\x1C\x16\x15a8iWa\x04La\x02\t\x92a6\x80V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FInitializable: contract is not i`D\x82\x01Rjnitializing`\xA8\x1B`d\x82\x01R`\x84\x90\xFD[\x15a8\xC9WV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`G`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is not `d\x82\x01Rf\x1B\xDC\x99\x19\\\x99Y`\xCA\x1B`\x84\x82\x01R`\xA4\x90\xFD[\x90a\x01\0\x82Q\x11a9\xB4W\x81Q\x15a9\xAFWa9ra9ha\x16Ka\x16=\x85a\x14BV[`\xFF`\x01\x91\x16\x1B\x90V[`\x01\x90[\x83Q\x82\x10\x15a9\xAAW`\x01\x90a9\x95a9ha\x16Ka\x16=\x86\x89a\x14OV[\x90a9\xA1\x81\x83\x11a8\xC2V[\x17\x91\x01\x90a9vV[\x92PPV[_\x91PV[`\xA4`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`D`$\x82\x01R\x7FBitmapUtils.orderedBytesArrayToB`D\x82\x01R\x7Fitmap: orderedBytesArray is too `d\x82\x01Rclong`\xE0\x1B`\x84\x82\x01R\xFD[\x90\x81` \x91\x03\x12a\x02QWQa\x18#\x81a\x04SV[\x15a:GWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x90\xFD[`\x01\x80`\xA0\x1B\x03\x16\x90`@Q\x90a:\xB7`@\x83a\x01\xD8V[` \x82R\x7FSafeERC20: low-level call failed` \x83\x01R\x82;\x15a;,W_\x81a;\x07\x94\x82` \x81\x95Q\x93\x01\x91Z\xF1a;\x01a;\xBDV[\x90a;\xECV[\x80Q\x80a;\x12WPPV[\x81` \x80a;'\x93a\x02\t\x95\x01\x01\x91\x01a:+V[a:@V[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x90\xFD[\x15a;xWV[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1A`$\x82\x01R\x7FBN254.expMod: call failure\0\0\0\0\0\0`D\x82\x01R`d\x90\xFD[=\x15a;\xE7W=\x90a;\xCE\x82a\n\xF1V[\x91a;\xDC`@Q\x93\x84a\x01\xD8V[\x82R=_` \x84\x01>V[``\x90V[\x90\x91\x90\x15a;\xF8WP\x90V[\x81Q\x15a<\x08WP\x80Q\x90` \x01\xFD[`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R\x90\x81\x90a<,\x90`$\x83\x01\x90a'\xAFV[\x03\x90\xFD\xFE0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGBLSSignatureChecker.checkSignatu\xA2dipfsX\"\x12 r\xB4\xB9\x8D,44\x7F\x1C;@\x04j\xF1\x99\xCE4\xFEK\xADz\xA7\xDD\x02W\n\xF4\x0E=\xEC\xDFydsolcC\0\x08\x1B\x003",
);
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
```solidity
event Initialized(uint8 version);
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
#[derive(Clone)]
pub struct Initialized {
#[allow(missing_docs)]
pub version: u8,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[automatically_derived]
impl alloy_sol_types::SolEvent for Initialized {
type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
const SIGNATURE: &'static str = "Initialized(uint8)";
const SIGNATURE_HASH: alloy_sol_types::private::B256 =
alloy_sol_types::private::B256::new([
127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8,
56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8,
96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
]);
const ANONYMOUS: bool = false;
#[allow(unused_variables)]
#[inline]
fn new(
topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self { version: data.0 }
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
&self.version,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
Ok(())
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for Initialized {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
From::from(self)
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
From::from(&self)
}
}
#[automatically_derived]
impl From<&Initialized> for alloy_sol_types::private::LogData {
#[inline]
fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
alloy_sol_types::SolEvent::encode_log_data(this)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
```solidity
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
#[derive(Clone)]
pub struct OwnershipTransferred {
#[allow(missing_docs)]
pub previousOwner: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub newOwner: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[automatically_derived]
impl alloy_sol_types::SolEvent for OwnershipTransferred {
type DataTuple<'a> = ();
type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
type TopicList = (
alloy_sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
);
const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
const SIGNATURE_HASH: alloy_sol_types::private::B256 =
alloy_sol_types::private::B256::new([
139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8,
208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8,
175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
]);
const ANONYMOUS: bool = false;
#[allow(unused_variables)]
#[inline]
fn new(
topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
previousOwner: topics.1,
newOwner: topics.2,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
()
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(
Self::SIGNATURE_HASH.into(),
self.previousOwner.clone(),
self.newOwner.clone(),
)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
&self.previousOwner,
);
out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
&self.newOwner,
);
Ok(())
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
From::from(self)
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
From::from(&self)
}
}
#[automatically_derived]
impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
#[inline]
fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
alloy_sol_types::SolEvent::encode_log_data(this)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Event with signature `RewardsInitiatorUpdated(address,address)` and selector `0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3`.
```solidity
event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator);
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
#[derive(Clone)]
pub struct RewardsInitiatorUpdated {
#[allow(missing_docs)]
pub prevRewardsInitiator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub newRewardsInitiator: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[automatically_derived]
impl alloy_sol_types::SolEvent for RewardsInitiatorUpdated {
type DataTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
);
type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
const SIGNATURE: &'static str = "RewardsInitiatorUpdated(address,address)";
const SIGNATURE_HASH: alloy_sol_types::private::B256 =
alloy_sol_types::private::B256::new([
225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8,
187u8, 197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8,
58u8, 204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8,
]);
const ANONYMOUS: bool = false;
#[allow(unused_variables)]
#[inline]
fn new(
topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
prevRewardsInitiator: data.0,
newRewardsInitiator: data.1,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.prevRewardsInitiator,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.newRewardsInitiator,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
Ok(())
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for RewardsInitiatorUpdated {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
From::from(self)
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
From::from(&self)
}
}
#[automatically_derived]
impl From<&RewardsInitiatorUpdated> for alloy_sol_types::private::LogData {
#[inline]
fn from(this: &RewardsInitiatorUpdated) -> alloy_sol_types::private::LogData {
alloy_sol_types::SolEvent::encode_log_data(this)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Event with signature `StaleStakesForbiddenUpdate(bool)` and selector `0x40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc`.
```solidity
event StaleStakesForbiddenUpdate(bool value);
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
#[derive(Clone)]
pub struct StaleStakesForbiddenUpdate {
#[allow(missing_docs)]
pub value: bool,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[automatically_derived]
impl alloy_sol_types::SolEvent for StaleStakesForbiddenUpdate {
type DataTuple<'a> = (alloy::sol_types::sol_data::Bool,);
type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
const SIGNATURE: &'static str = "StaleStakesForbiddenUpdate(bool)";
const SIGNATURE_HASH: alloy_sol_types::private::B256 =
alloy_sol_types::private::B256::new([
64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8,
87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8,
48u8, 27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8,
]);
const ANONYMOUS: bool = false;
#[allow(unused_variables)]
#[inline]
fn new(
topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self { value: data.0 }
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
&self.value,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
Ok(())
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for StaleStakesForbiddenUpdate {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
From::from(self)
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
From::from(&self)
}
}
#[automatically_derived]
impl From<&StaleStakesForbiddenUpdate> for alloy_sol_types::private::LogData {
#[inline]
fn from(this: &StaleStakesForbiddenUpdate) -> alloy_sol_types::private::LogData {
alloy_sol_types::SolEvent::encode_log_data(this)
}
}
};
/**Constructor`.
```solidity
constructor(address _avsDirectory, address _registryCoordinator, address _stakeRegistry, address rewards_coordinator);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct constructorCall {
#[allow(missing_docs)]
pub _avsDirectory: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub _registryCoordinator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub _stakeRegistry: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub rewards_coordinator: alloy::sol_types::private::Address,
}
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
alloy::sol_types::private::Address,
alloy::sol_types::private::Address,
alloy::sol_types::private::Address,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
fn from(value: constructorCall) -> Self {
(
value._avsDirectory,
value._registryCoordinator,
value._stakeRegistry,
value.rewards_coordinator,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
_avsDirectory: tuple.0,
_registryCoordinator: tuple.1,
_stakeRegistry: tuple.2,
rewards_coordinator: tuple.3,
}
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolConstructor for constructorCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self._avsDirectory,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self._registryCoordinator,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self._stakeRegistry,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.rewards_coordinator,
),
)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `avsDirectory()` and selector `0x6b3aa72e`.
```solidity
function avsDirectory() external view returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct avsDirectoryCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`avsDirectory()`](avsDirectoryCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct avsDirectoryReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<avsDirectoryCall> for UnderlyingRustTuple<'_> {
fn from(value: avsDirectoryCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for avsDirectoryCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<avsDirectoryReturn> for UnderlyingRustTuple<'_> {
fn from(value: avsDirectoryReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for avsDirectoryReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for avsDirectoryCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "avsDirectory()";
const SELECTOR: [u8; 4] = [107u8, 58u8, 167u8, 46u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: avsDirectoryReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: avsDirectoryReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `blsApkRegistry()` and selector `0x5df45946`.
```solidity
function blsApkRegistry() external view returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct blsApkRegistryCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`blsApkRegistry()`](blsApkRegistryCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct blsApkRegistryReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<blsApkRegistryCall> for UnderlyingRustTuple<'_> {
fn from(value: blsApkRegistryCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsApkRegistryCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<blsApkRegistryReturn> for UnderlyingRustTuple<'_> {
fn from(value: blsApkRegistryReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for blsApkRegistryReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for blsApkRegistryCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "blsApkRegistry()";
const SELECTOR: [u8; 4] = [93u8, 244u8, 89u8, 70u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: blsApkRegistryReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: blsApkRegistryReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))` and selector `0x6efb4636`.
```solidity
function checkSignatures(bytes32 msgHash, bytes memory quorumNumbers, uint32 referenceBlockNumber, IBLSSignatureChecker.NonSignerStakesAndSignature memory params) external view returns (IBLSSignatureChecker.QuorumStakeTotals memory, bytes32);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct checkSignaturesCall {
#[allow(missing_docs)]
pub msgHash: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub quorumNumbers: alloy::sol_types::private::Bytes,
#[allow(missing_docs)]
pub referenceBlockNumber: u32,
#[allow(missing_docs)]
pub params: <IBLSSignatureChecker::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))`](checkSignaturesCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct checkSignaturesReturn {
#[allow(missing_docs)]
pub _0: <IBLSSignatureChecker::QuorumStakeTotals as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub _1: alloy::sol_types::private::FixedBytes<32>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
alloy::sol_types::sol_data::Uint<32>,
IBLSSignatureChecker::NonSignerStakesAndSignature,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::FixedBytes<32>,
alloy::sol_types::private::Bytes,
u32,
<IBLSSignatureChecker::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<checkSignaturesCall> for UnderlyingRustTuple<'_> {
fn from(value: checkSignaturesCall) -> Self {
(
value.msgHash,
value.quorumNumbers,
value.referenceBlockNumber,
value.params,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for checkSignaturesCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
msgHash: tuple.0,
quorumNumbers: tuple.1,
referenceBlockNumber: tuple.2,
params: tuple.3,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
IBLSSignatureChecker::QuorumStakeTotals,
alloy::sol_types::sol_data::FixedBytes<32>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
<IBLSSignatureChecker::QuorumStakeTotals as alloy::sol_types::SolType>::RustType,
alloy::sol_types::private::FixedBytes<32>,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<checkSignaturesReturn> for UnderlyingRustTuple<'_> {
fn from(value: checkSignaturesReturn) -> Self {
(value._0, value._1)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for checkSignaturesReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
_0: tuple.0,
_1: tuple.1,
}
}
}
}
impl checkSignaturesReturn {
fn _tokenize(
&self,
) -> <checkSignaturesCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
(
<IBLSSignatureChecker::QuorumStakeTotals as alloy_sol_types::SolType>::tokenize(
&self._0,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self._1),
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for checkSignaturesCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
alloy::sol_types::sol_data::Uint<32>,
IBLSSignatureChecker::NonSignerStakesAndSignature,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = checkSignaturesReturn;
type ReturnTuple<'a> = (
IBLSSignatureChecker::QuorumStakeTotals,
alloy::sol_types::sol_data::FixedBytes<32>,
);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "checkSignatures(bytes32,bytes,uint32,(uint32[],(uint256,uint256)[],(uint256,uint256)[],(uint256[2],uint256[2]),(uint256,uint256),uint32[],uint32[],uint32[][]))";
const SELECTOR: [u8; 4] = [110u8, 251u8, 70u8, 54u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.msgHash),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.quorumNumbers,
),
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::tokenize(&self.referenceBlockNumber),
<IBLSSignatureChecker::NonSignerStakesAndSignature as alloy_sol_types::SolType>::tokenize(
&self.params,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
checkSignaturesReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize)]
/**Function with signature `createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])` and selector `0xfce36c7d`.
```solidity
function createAVSRewardsSubmission(IRewardsCoordinator.RewardsSubmission[] memory rewardsSubmissions) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct createAVSRewardsSubmissionCall {
#[allow(missing_docs)]
pub rewardsSubmissions: alloy::sol_types::private::Vec<
<IRewardsCoordinator::RewardsSubmission as alloy::sol_types::SolType>::RustType,
>,
}
///Container type for the return parameters of the [`createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])`](createAVSRewardsSubmissionCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct createAVSRewardsSubmissionReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> =
(alloy::sol_types::sol_data::Array<IRewardsCoordinator::RewardsSubmission>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Vec<
<IRewardsCoordinator::RewardsSubmission as alloy::sol_types::SolType>::RustType,
>,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<createAVSRewardsSubmissionCall> for UnderlyingRustTuple<'_> {
fn from(value: createAVSRewardsSubmissionCall) -> Self {
(value.rewardsSubmissions,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for createAVSRewardsSubmissionCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
rewardsSubmissions: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<createAVSRewardsSubmissionReturn> for UnderlyingRustTuple<'_> {
fn from(value: createAVSRewardsSubmissionReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for createAVSRewardsSubmissionReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl createAVSRewardsSubmissionReturn {
fn _tokenize(
&self,
) -> <createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for createAVSRewardsSubmissionCall {
type Parameters<'a> =
(alloy::sol_types::sol_data::Array<IRewardsCoordinator::RewardsSubmission>,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = createAVSRewardsSubmissionReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str =
"createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[])";
const SELECTOR: [u8; 4] = [252u8, 227u8, 108u8, 125u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(<alloy::sol_types::sol_data::Array<
IRewardsCoordinator::RewardsSubmission,
> as alloy_sol_types::SolType>::tokenize(
&self.rewardsSubmissions,
),)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
createAVSRewardsSubmissionReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize)]
/**Function with signature `createOperatorDirectedAVSRewardsSubmission(((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[])` and selector `0xa20b99bf`.
```solidity
function createOperatorDirectedAVSRewardsSubmission(IRewardsCoordinator.OperatorDirectedRewardsSubmission[] memory operatorDirectedRewardsSubmissions) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct createOperatorDirectedAVSRewardsSubmissionCall {
#[allow(missing_docs)]
pub operatorDirectedRewardsSubmissions: alloy::sol_types::private::Vec<
<IRewardsCoordinator::OperatorDirectedRewardsSubmission as alloy::sol_types::SolType>::RustType,
>,
}
///Container type for the return parameters of the [`createOperatorDirectedAVSRewardsSubmission(((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[])`](createOperatorDirectedAVSRewardsSubmissionCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct createOperatorDirectedAVSRewardsSubmissionReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Array<
IRewardsCoordinator::OperatorDirectedRewardsSubmission,
>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Vec<
<IRewardsCoordinator::OperatorDirectedRewardsSubmission as alloy::sol_types::SolType>::RustType,
>,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<createOperatorDirectedAVSRewardsSubmissionCall>
for UnderlyingRustTuple<'_>
{
fn from(value: createOperatorDirectedAVSRewardsSubmissionCall) -> Self {
(value.operatorDirectedRewardsSubmissions,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>>
for createOperatorDirectedAVSRewardsSubmissionCall
{
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operatorDirectedRewardsSubmissions: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<createOperatorDirectedAVSRewardsSubmissionReturn>
for UnderlyingRustTuple<'_>
{
fn from(value: createOperatorDirectedAVSRewardsSubmissionReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>>
for createOperatorDirectedAVSRewardsSubmissionReturn
{
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl createOperatorDirectedAVSRewardsSubmissionReturn {
fn _tokenize(
&self,
) -> <createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::ReturnToken<
'_,
>{
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for createOperatorDirectedAVSRewardsSubmissionCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Array<
IRewardsCoordinator::OperatorDirectedRewardsSubmission,
>,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = createOperatorDirectedAVSRewardsSubmissionReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "createOperatorDirectedAVSRewardsSubmission(((address,uint96)[],address,(address,uint256)[],uint32,uint32,string)[])";
const SELECTOR: [u8; 4] = [162u8, 11u8, 153u8, 191u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(<alloy::sol_types::sol_data::Array<
IRewardsCoordinator::OperatorDirectedRewardsSubmission,
> as alloy_sol_types::SolType>::tokenize(
&self.operatorDirectedRewardsSubmissions,
),)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
createOperatorDirectedAVSRewardsSubmissionReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `delegation()` and selector `0xdf5cf723`.
```solidity
function delegation() external view returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct delegationCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`delegation()`](delegationCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct delegationReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<delegationCall> for UnderlyingRustTuple<'_> {
fn from(value: delegationCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<delegationReturn> for UnderlyingRustTuple<'_> {
fn from(value: delegationReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for delegationReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for delegationCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "delegation()";
const SELECTOR: [u8; 4] = [223u8, 92u8, 247u8, 35u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: delegationReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: delegationReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `deregisterOperatorFromAVS(address)` and selector `0xa364f4da`.
```solidity
function deregisterOperatorFromAVS(address operator) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct deregisterOperatorFromAVSCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
}
///Container type for the return parameters of the [`deregisterOperatorFromAVS(address)`](deregisterOperatorFromAVSCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct deregisterOperatorFromAVSReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<deregisterOperatorFromAVSCall> for UnderlyingRustTuple<'_> {
fn from(value: deregisterOperatorFromAVSCall) -> Self {
(value.operator,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for deregisterOperatorFromAVSCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { operator: tuple.0 }
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<deregisterOperatorFromAVSReturn> for UnderlyingRustTuple<'_> {
fn from(value: deregisterOperatorFromAVSReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for deregisterOperatorFromAVSReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl deregisterOperatorFromAVSReturn {
fn _tokenize(
&self,
) -> <deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for deregisterOperatorFromAVSCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = deregisterOperatorFromAVSReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "deregisterOperatorFromAVS(address)";
const SELECTOR: [u8; 4] = [163u8, 100u8, 244u8, 218u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
deregisterOperatorFromAVSReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getOperatorRestakedStrategies(address)` and selector `0x33cfb7b7`.
```solidity
function getOperatorRestakedStrategies(address operator) external view returns (address[] memory);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getOperatorRestakedStrategiesCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getOperatorRestakedStrategies(address)`](getOperatorRestakedStrategiesCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getOperatorRestakedStrategiesReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getOperatorRestakedStrategiesCall> for UnderlyingRustTuple<'_> {
fn from(value: getOperatorRestakedStrategiesCall) -> Self {
(value.operator,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorRestakedStrategiesCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { operator: tuple.0 }
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> =
(alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getOperatorRestakedStrategiesReturn> for UnderlyingRustTuple<'_> {
fn from(value: getOperatorRestakedStrategiesReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorRestakedStrategiesReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getOperatorRestakedStrategiesCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Vec<alloy::sol_types::private::Address>;
type ReturnTuple<'a> =
(alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getOperatorRestakedStrategies(address)";
const SELECTOR: [u8; 4] = [51u8, 207u8, 183u8, 183u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Address,
> as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getOperatorRestakedStrategiesReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getOperatorRestakedStrategiesReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getRestakeableStrategies()` and selector `0xe481af9d`.
```solidity
function getRestakeableStrategies() external view returns (address[] memory);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getRestakeableStrategiesCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getRestakeableStrategies()`](getRestakeableStrategiesCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getRestakeableStrategiesReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getRestakeableStrategiesCall> for UnderlyingRustTuple<'_> {
fn from(value: getRestakeableStrategiesCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRestakeableStrategiesCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> =
(alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getRestakeableStrategiesReturn> for UnderlyingRustTuple<'_> {
fn from(value: getRestakeableStrategiesReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRestakeableStrategiesReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getRestakeableStrategiesCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Vec<alloy::sol_types::private::Address>;
type ReturnTuple<'a> =
(alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getRestakeableStrategies()";
const SELECTOR: [u8; 4] = [228u8, 129u8, 175u8, 157u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Address,
> as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getRestakeableStrategiesReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getRestakeableStrategiesReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `initialize(address)` and selector `0xc4d66de8`.
```solidity
function initialize(address _initialOwner) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct initializeCall {
#[allow(missing_docs)]
pub _initialOwner: alloy::sol_types::private::Address,
}
///Container type for the return parameters of the [`initialize(address)`](initializeCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct initializeReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
fn from(value: initializeCall) -> Self {
(value._initialOwner,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
_initialOwner: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
fn from(value: initializeReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl initializeReturn {
fn _tokenize(&self) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for initializeCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = initializeReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "initialize(address)";
const SELECTOR: [u8; 4] = [196u8, 214u8, 109u8, 232u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self._initialOwner,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
initializeReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `owner()` and selector `0x8da5cb5b`.
```solidity
function owner() external view returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ownerCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`owner()`](ownerCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ownerReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
fn from(value: ownerCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
fn from(value: ownerReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for ownerCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "owner()";
const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: ownerReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: ownerReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `registerOperatorToAVS(address,(bytes,bytes32,uint256))` and selector `0x9926ee7d`.
```solidity
function registerOperatorToAVS(address operator, ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct registerOperatorToAVSCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub operatorSignature:
<ISignatureUtils::SignatureWithSaltAndExpiry as alloy::sol_types::SolType>::RustType,
}
///Container type for the return parameters of the [`registerOperatorToAVS(address,(bytes,bytes32,uint256))`](registerOperatorToAVSCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct registerOperatorToAVSReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
ISignatureUtils::SignatureWithSaltAndExpiry,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
<ISignatureUtils::SignatureWithSaltAndExpiry as alloy::sol_types::SolType>::RustType,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<registerOperatorToAVSCall> for UnderlyingRustTuple<'_> {
fn from(value: registerOperatorToAVSCall) -> Self {
(value.operator, value.operatorSignature)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerOperatorToAVSCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operator: tuple.0,
operatorSignature: tuple.1,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<registerOperatorToAVSReturn> for UnderlyingRustTuple<'_> {
fn from(value: registerOperatorToAVSReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerOperatorToAVSReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl registerOperatorToAVSReturn {
fn _tokenize(
&self,
) -> <registerOperatorToAVSCall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for registerOperatorToAVSCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Address,
ISignatureUtils::SignatureWithSaltAndExpiry,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = registerOperatorToAVSReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str =
"registerOperatorToAVS(address,(bytes,bytes32,uint256))";
const SELECTOR: [u8; 4] = [153u8, 38u8, 238u8, 125u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
<ISignatureUtils::SignatureWithSaltAndExpiry as alloy_sol_types::SolType>::tokenize(
&self.operatorSignature,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
registerOperatorToAVSReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `registryCoordinator()` and selector `0x6d14a987`.
```solidity
function registryCoordinator() external view returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct registryCoordinatorCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct registryCoordinatorReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<registryCoordinatorCall> for UnderlyingRustTuple<'_> {
fn from(value: registryCoordinatorCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for registryCoordinatorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<registryCoordinatorReturn> for UnderlyingRustTuple<'_> {
fn from(value: registryCoordinatorReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for registryCoordinatorReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for registryCoordinatorCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "registryCoordinator()";
const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: registryCoordinatorReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: registryCoordinatorReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `renounceOwnership()` and selector `0x715018a6`.
```solidity
function renounceOwnership() external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct renounceOwnershipCall;
///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct renounceOwnershipReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> {
fn from(value: renounceOwnershipCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> {
fn from(value: renounceOwnershipReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl renounceOwnershipReturn {
fn _tokenize(
&self,
) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for renounceOwnershipCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = renounceOwnershipReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "renounceOwnership()";
const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
renounceOwnershipReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `rewardsInitiator()` and selector `0xfc299dee`.
```solidity
function rewardsInitiator() external view returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct rewardsInitiatorCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`rewardsInitiator()`](rewardsInitiatorCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct rewardsInitiatorReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<rewardsInitiatorCall> for UnderlyingRustTuple<'_> {
fn from(value: rewardsInitiatorCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for rewardsInitiatorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<rewardsInitiatorReturn> for UnderlyingRustTuple<'_> {
fn from(value: rewardsInitiatorReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for rewardsInitiatorReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for rewardsInitiatorCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "rewardsInitiator()";
const SELECTOR: [u8; 4] = [252u8, 41u8, 157u8, 238u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: rewardsInitiatorReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: rewardsInitiatorReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `setClaimerFor(address)` and selector `0xa0169ddd`.
```solidity
function setClaimerFor(address claimer) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct setClaimerForCall {
#[allow(missing_docs)]
pub claimer: alloy::sol_types::private::Address,
}
///Container type for the return parameters of the [`setClaimerFor(address)`](setClaimerForCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct setClaimerForReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<setClaimerForCall> for UnderlyingRustTuple<'_> {
fn from(value: setClaimerForCall) -> Self {
(value.claimer,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for setClaimerForCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { claimer: tuple.0 }
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<setClaimerForReturn> for UnderlyingRustTuple<'_> {
fn from(value: setClaimerForReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for setClaimerForReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl setClaimerForReturn {
fn _tokenize(
&self,
) -> <setClaimerForCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for setClaimerForCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = setClaimerForReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "setClaimerFor(address)";
const SELECTOR: [u8; 4] = [160u8, 22u8, 157u8, 221u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.claimer,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
setClaimerForReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `setRewardsInitiator(address)` and selector `0x3bc28c8c`.
```solidity
function setRewardsInitiator(address newRewardsInitiator) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct setRewardsInitiatorCall {
#[allow(missing_docs)]
pub newRewardsInitiator: alloy::sol_types::private::Address,
}
///Container type for the return parameters of the [`setRewardsInitiator(address)`](setRewardsInitiatorCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct setRewardsInitiatorReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<setRewardsInitiatorCall> for UnderlyingRustTuple<'_> {
fn from(value: setRewardsInitiatorCall) -> Self {
(value.newRewardsInitiator,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for setRewardsInitiatorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
newRewardsInitiator: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<setRewardsInitiatorReturn> for UnderlyingRustTuple<'_> {
fn from(value: setRewardsInitiatorReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for setRewardsInitiatorReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl setRewardsInitiatorReturn {
fn _tokenize(
&self,
) -> <setRewardsInitiatorCall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for setRewardsInitiatorCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = setRewardsInitiatorReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "setRewardsInitiator(address)";
const SELECTOR: [u8; 4] = [59u8, 194u8, 140u8, 140u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.newRewardsInitiator,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
setRewardsInitiatorReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `setStaleStakesForbidden(bool)` and selector `0x416c7e5e`.
```solidity
function setStaleStakesForbidden(bool value) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct setStaleStakesForbiddenCall {
#[allow(missing_docs)]
pub value: bool,
}
///Container type for the return parameters of the [`setStaleStakesForbidden(bool)`](setStaleStakesForbiddenCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct setStaleStakesForbiddenReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (bool,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<setStaleStakesForbiddenCall> for UnderlyingRustTuple<'_> {
fn from(value: setStaleStakesForbiddenCall) -> Self {
(value.value,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStaleStakesForbiddenCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { value: tuple.0 }
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<setStaleStakesForbiddenReturn> for UnderlyingRustTuple<'_> {
fn from(value: setStaleStakesForbiddenReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStaleStakesForbiddenReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl setStaleStakesForbiddenReturn {
fn _tokenize(
&self,
) -> <setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for setStaleStakesForbiddenCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Bool,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = setStaleStakesForbiddenReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "setStaleStakesForbidden(bool)";
const SELECTOR: [u8; 4] = [65u8, 108u8, 126u8, 94u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
&self.value,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
setStaleStakesForbiddenReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `stakeRegistry()` and selector `0x68304835`.
```solidity
function stakeRegistry() external view returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct stakeRegistryCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`stakeRegistry()`](stakeRegistryCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct stakeRegistryReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<stakeRegistryCall> for UnderlyingRustTuple<'_> {
fn from(value: stakeRegistryCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeRegistryCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<stakeRegistryReturn> for UnderlyingRustTuple<'_> {
fn from(value: stakeRegistryReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for stakeRegistryReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for stakeRegistryCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "stakeRegistry()";
const SELECTOR: [u8; 4] = [104u8, 48u8, 72u8, 53u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: stakeRegistryReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: stakeRegistryReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `staleStakesForbidden()` and selector `0xb98d0908`.
```solidity
function staleStakesForbidden() external view returns (bool);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct staleStakesForbiddenCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`staleStakesForbidden()`](staleStakesForbiddenCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct staleStakesForbiddenReturn {
#[allow(missing_docs)]
pub _0: bool,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<staleStakesForbiddenCall> for UnderlyingRustTuple<'_> {
fn from(value: staleStakesForbiddenCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for staleStakesForbiddenCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (bool,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<staleStakesForbiddenReturn> for UnderlyingRustTuple<'_> {
fn from(value: staleStakesForbiddenReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for staleStakesForbiddenReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for staleStakesForbiddenCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = bool;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "staleStakesForbidden()";
const SELECTOR: [u8; 4] = [185u8, 141u8, 9u8, 8u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: staleStakesForbiddenReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: staleStakesForbiddenReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
```solidity
function transferOwnership(address newOwner) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct transferOwnershipCall {
#[allow(missing_docs)]
pub newOwner: alloy::sol_types::private::Address,
}
///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct transferOwnershipReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> {
fn from(value: transferOwnershipCall) -> Self {
(value.newOwner,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { newOwner: tuple.0 }
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> {
fn from(value: transferOwnershipReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl transferOwnershipReturn {
fn _tokenize(
&self,
) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for transferOwnershipCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = transferOwnershipReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "transferOwnership(address)";
const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.newOwner,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
transferOwnershipReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))` and selector `0x171f1d5b`.
```solidity
function trySignatureAndApkVerification(bytes32 msgHash, BN254.G1Point memory apk, BN254.G2Point memory apkG2, BN254.G1Point memory sigma) external view returns (bool pairingSuccessful, bool siganatureIsValid);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct trySignatureAndApkVerificationCall {
#[allow(missing_docs)]
pub msgHash: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub apk: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))`](trySignatureAndApkVerificationCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct trySignatureAndApkVerificationReturn {
#[allow(missing_docs)]
pub pairingSuccessful: bool,
#[allow(missing_docs)]
pub siganatureIsValid: bool,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::FixedBytes<32>,
BN254::G1Point,
BN254::G2Point,
BN254::G1Point,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::FixedBytes<32>,
<BN254::G1Point as alloy::sol_types::SolType>::RustType,
<BN254::G2Point as alloy::sol_types::SolType>::RustType,
<BN254::G1Point as alloy::sol_types::SolType>::RustType,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<trySignatureAndApkVerificationCall> for UnderlyingRustTuple<'_> {
fn from(value: trySignatureAndApkVerificationCall) -> Self {
(value.msgHash, value.apk, value.apkG2, value.sigma)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for trySignatureAndApkVerificationCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
msgHash: tuple.0,
apk: tuple.1,
apkG2: tuple.2,
sigma: tuple.3,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Bool,
alloy::sol_types::sol_data::Bool,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (bool, bool);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<trySignatureAndApkVerificationReturn> for UnderlyingRustTuple<'_> {
fn from(value: trySignatureAndApkVerificationReturn) -> Self {
(value.pairingSuccessful, value.siganatureIsValid)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for trySignatureAndApkVerificationReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
pairingSuccessful: tuple.0,
siganatureIsValid: tuple.1,
}
}
}
}
impl trySignatureAndApkVerificationReturn {
fn _tokenize(
&self,
) -> <trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
(
<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
&self.pairingSuccessful,
),
<alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
&self.siganatureIsValid,
),
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for trySignatureAndApkVerificationCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::FixedBytes<32>,
BN254::G1Point,
BN254::G2Point,
BN254::G1Point,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = trySignatureAndApkVerificationReturn;
type ReturnTuple<'a> = (
alloy::sol_types::sol_data::Bool,
alloy::sol_types::sol_data::Bool,
);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "trySignatureAndApkVerification(bytes32,(uint256,uint256),(uint256[2],uint256[2]),(uint256,uint256))";
const SELECTOR: [u8; 4] = [23u8, 31u8, 29u8, 91u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.msgHash),
<BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.apk),
<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.apkG2),
<BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
trySignatureAndApkVerificationReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `updateAVSMetadataURI(string)` and selector `0xa98fb355`.
```solidity
function updateAVSMetadataURI(string memory _metadataURI) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct updateAVSMetadataURICall {
#[allow(missing_docs)]
pub _metadataURI: alloy::sol_types::private::String,
}
///Container type for the return parameters of the [`updateAVSMetadataURI(string)`](updateAVSMetadataURICall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct updateAVSMetadataURIReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<updateAVSMetadataURICall> for UnderlyingRustTuple<'_> {
fn from(value: updateAVSMetadataURICall) -> Self {
(value._metadataURI,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateAVSMetadataURICall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
_metadataURI: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<updateAVSMetadataURIReturn> for UnderlyingRustTuple<'_> {
fn from(value: updateAVSMetadataURIReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateAVSMetadataURIReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl updateAVSMetadataURIReturn {
fn _tokenize(
&self,
) -> <updateAVSMetadataURICall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for updateAVSMetadataURICall {
type Parameters<'a> = (alloy::sol_types::sol_data::String,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = updateAVSMetadataURIReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "updateAVSMetadataURI(string)";
const SELECTOR: [u8; 4] = [169u8, 143u8, 179u8, 85u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
&self._metadataURI,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
updateAVSMetadataURIReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
///Container for all the [`MockAvsServiceManager`](self) function calls.
#[derive(serde::Serialize, serde::Deserialize)]
pub enum MockAvsServiceManagerCalls {
#[allow(missing_docs)]
avsDirectory(avsDirectoryCall),
#[allow(missing_docs)]
blsApkRegistry(blsApkRegistryCall),
#[allow(missing_docs)]
checkSignatures(checkSignaturesCall),
#[allow(missing_docs)]
createAVSRewardsSubmission(createAVSRewardsSubmissionCall),
#[allow(missing_docs)]
createOperatorDirectedAVSRewardsSubmission(createOperatorDirectedAVSRewardsSubmissionCall),
#[allow(missing_docs)]
delegation(delegationCall),
#[allow(missing_docs)]
deregisterOperatorFromAVS(deregisterOperatorFromAVSCall),
#[allow(missing_docs)]
getOperatorRestakedStrategies(getOperatorRestakedStrategiesCall),
#[allow(missing_docs)]
getRestakeableStrategies(getRestakeableStrategiesCall),
#[allow(missing_docs)]
initialize(initializeCall),
#[allow(missing_docs)]
owner(ownerCall),
#[allow(missing_docs)]
registerOperatorToAVS(registerOperatorToAVSCall),
#[allow(missing_docs)]
registryCoordinator(registryCoordinatorCall),
#[allow(missing_docs)]
renounceOwnership(renounceOwnershipCall),
#[allow(missing_docs)]
rewardsInitiator(rewardsInitiatorCall),
#[allow(missing_docs)]
setClaimerFor(setClaimerForCall),
#[allow(missing_docs)]
setRewardsInitiator(setRewardsInitiatorCall),
#[allow(missing_docs)]
setStaleStakesForbidden(setStaleStakesForbiddenCall),
#[allow(missing_docs)]
stakeRegistry(stakeRegistryCall),
#[allow(missing_docs)]
staleStakesForbidden(staleStakesForbiddenCall),
#[allow(missing_docs)]
transferOwnership(transferOwnershipCall),
#[allow(missing_docs)]
trySignatureAndApkVerification(trySignatureAndApkVerificationCall),
#[allow(missing_docs)]
updateAVSMetadataURI(updateAVSMetadataURICall),
}
#[automatically_derived]
impl MockAvsServiceManagerCalls {
/// All the selectors of this enum.
///
/// Note that the selectors might not be in the same order as the variants.
/// No guarantees are made about the order of the selectors.
///
/// Prefer using `SolInterface` methods instead.
pub const SELECTORS: &'static [[u8; 4usize]] = &[
[23u8, 31u8, 29u8, 91u8],
[51u8, 207u8, 183u8, 183u8],
[59u8, 194u8, 140u8, 140u8],
[65u8, 108u8, 126u8, 94u8],
[93u8, 244u8, 89u8, 70u8],
[104u8, 48u8, 72u8, 53u8],
[107u8, 58u8, 167u8, 46u8],
[109u8, 20u8, 169u8, 135u8],
[110u8, 251u8, 70u8, 54u8],
[113u8, 80u8, 24u8, 166u8],
[141u8, 165u8, 203u8, 91u8],
[153u8, 38u8, 238u8, 125u8],
[160u8, 22u8, 157u8, 221u8],
[162u8, 11u8, 153u8, 191u8],
[163u8, 100u8, 244u8, 218u8],
[169u8, 143u8, 179u8, 85u8],
[185u8, 141u8, 9u8, 8u8],
[196u8, 214u8, 109u8, 232u8],
[223u8, 92u8, 247u8, 35u8],
[228u8, 129u8, 175u8, 157u8],
[242u8, 253u8, 227u8, 139u8],
[252u8, 41u8, 157u8, 238u8],
[252u8, 227u8, 108u8, 125u8],
];
}
#[automatically_derived]
impl alloy_sol_types::SolInterface for MockAvsServiceManagerCalls {
const NAME: &'static str = "MockAvsServiceManagerCalls";
const MIN_DATA_LENGTH: usize = 0usize;
const COUNT: usize = 23usize;
#[inline]
fn selector(&self) -> [u8; 4] {
match self {
Self::avsDirectory(_) => {
<avsDirectoryCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::blsApkRegistry(_) => {
<blsApkRegistryCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::checkSignatures(_) => {
<checkSignaturesCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::createAVSRewardsSubmission(_) => {
<createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::createOperatorDirectedAVSRewardsSubmission(_) => {
<createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::delegation(_) => {
<delegationCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::deregisterOperatorFromAVS(_) => {
<deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::getOperatorRestakedStrategies(_) => {
<getOperatorRestakedStrategiesCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::getRestakeableStrategies(_) => {
<getRestakeableStrategiesCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::initialize(_) => {
<initializeCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
Self::registerOperatorToAVS(_) => {
<registerOperatorToAVSCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::registryCoordinator(_) => {
<registryCoordinatorCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::renounceOwnership(_) => {
<renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::rewardsInitiator(_) => {
<rewardsInitiatorCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::setClaimerFor(_) => {
<setClaimerForCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::setRewardsInitiator(_) => {
<setRewardsInitiatorCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::setStaleStakesForbidden(_) => {
<setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::stakeRegistry(_) => {
<stakeRegistryCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::staleStakesForbidden(_) => {
<staleStakesForbiddenCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::transferOwnership(_) => {
<transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::trySignatureAndApkVerification(_) => {
<trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::updateAVSMetadataURI(_) => {
<updateAVSMetadataURICall as alloy_sol_types::SolCall>::SELECTOR
}
}
}
#[inline]
fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
Self::SELECTORS.get(i).copied()
}
#[inline]
fn valid_selector(selector: [u8; 4]) -> bool {
Self::SELECTORS.binary_search(&selector).is_ok()
}
#[inline]
#[allow(non_snake_case)]
fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
static DECODE_SHIMS: &[fn(
&[u8],
)
-> alloy_sol_types::Result<MockAvsServiceManagerCalls>] = &[
{
fn trySignatureAndApkVerification(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(
MockAvsServiceManagerCalls::trySignatureAndApkVerification,
)
}
trySignatureAndApkVerification
},
{
fn getOperatorRestakedStrategies(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<getOperatorRestakedStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(
MockAvsServiceManagerCalls::getOperatorRestakedStrategies,
)
}
getOperatorRestakedStrategies
},
{
fn setRewardsInitiator(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<setRewardsInitiatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::setRewardsInitiator)
}
setRewardsInitiator
},
{
fn setStaleStakesForbidden(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(MockAvsServiceManagerCalls::setStaleStakesForbidden)
}
setStaleStakesForbidden
},
{
fn blsApkRegistry(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<blsApkRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::blsApkRegistry)
}
blsApkRegistry
},
{
fn stakeRegistry(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<stakeRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::stakeRegistry)
}
stakeRegistry
},
{
fn avsDirectory(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<avsDirectoryCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::avsDirectory)
}
avsDirectory
},
{
fn registryCoordinator(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::registryCoordinator)
}
registryCoordinator
},
{
fn checkSignatures(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<checkSignaturesCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::checkSignatures)
}
checkSignatures
},
{
fn renounceOwnership(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::renounceOwnership)
}
renounceOwnership
},
{
fn owner(data: &[u8]) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::owner)
}
owner
},
{
fn registerOperatorToAVS(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<registerOperatorToAVSCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(MockAvsServiceManagerCalls::registerOperatorToAVS)
}
registerOperatorToAVS
},
{
fn setClaimerFor(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<setClaimerForCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::setClaimerFor)
}
setClaimerFor
},
{
fn createOperatorDirectedAVSRewardsSubmission(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(
MockAvsServiceManagerCalls::createOperatorDirectedAVSRewardsSubmission,
)
}
createOperatorDirectedAVSRewardsSubmission
},
{
fn deregisterOperatorFromAVS(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(MockAvsServiceManagerCalls::deregisterOperatorFromAVS)
}
deregisterOperatorFromAVS
},
{
fn updateAVSMetadataURI(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<updateAVSMetadataURICall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::updateAVSMetadataURI)
}
updateAVSMetadataURI
},
{
fn staleStakesForbidden(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::staleStakesForbidden)
}
staleStakesForbidden
},
{
fn initialize(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::initialize)
}
initialize
},
{
fn delegation(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<delegationCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::delegation)
}
delegation
},
{
fn getRestakeableStrategies(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<getRestakeableStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(MockAvsServiceManagerCalls::getRestakeableStrategies)
}
getRestakeableStrategies
},
{
fn transferOwnership(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::transferOwnership)
}
transferOwnership
},
{
fn rewardsInitiator(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<rewardsInitiatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(MockAvsServiceManagerCalls::rewardsInitiator)
}
rewardsInitiator
},
{
fn createAVSRewardsSubmission(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(MockAvsServiceManagerCalls::createAVSRewardsSubmission)
}
createAVSRewardsSubmission
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
));
};
DECODE_SHIMS[idx](data)
}
#[inline]
#[allow(non_snake_case)]
fn abi_decode_raw_validate(
selector: [u8; 4],
data: &[u8],
) -> alloy_sol_types::Result<Self> {
static DECODE_VALIDATE_SHIMS: &[fn(
&[u8],
) -> alloy_sol_types::Result<
MockAvsServiceManagerCalls,
>] = &[
{
fn trySignatureAndApkVerification(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(
MockAvsServiceManagerCalls::trySignatureAndApkVerification,
)
}
trySignatureAndApkVerification
},
{
fn getOperatorRestakedStrategies(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<getOperatorRestakedStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(
MockAvsServiceManagerCalls::getOperatorRestakedStrategies,
)
}
getOperatorRestakedStrategies
},
{
fn setRewardsInitiator(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<setRewardsInitiatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::setRewardsInitiator)
}
setRewardsInitiator
},
{
fn setStaleStakesForbidden(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::setStaleStakesForbidden)
}
setStaleStakesForbidden
},
{
fn blsApkRegistry(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<blsApkRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::blsApkRegistry)
}
blsApkRegistry
},
{
fn stakeRegistry(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<stakeRegistryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::stakeRegistry)
}
stakeRegistry
},
{
fn avsDirectory(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<avsDirectoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::avsDirectory)
}
avsDirectory
},
{
fn registryCoordinator(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::registryCoordinator)
}
registryCoordinator
},
{
fn checkSignatures(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<checkSignaturesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::checkSignatures)
}
checkSignatures
},
{
fn renounceOwnership(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::renounceOwnership)
}
renounceOwnership
},
{
fn owner(data: &[u8]) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
.map(MockAvsServiceManagerCalls::owner)
}
owner
},
{
fn registerOperatorToAVS(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<registerOperatorToAVSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::registerOperatorToAVS)
}
registerOperatorToAVS
},
{
fn setClaimerFor(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<setClaimerForCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::setClaimerFor)
}
setClaimerFor
},
{
fn createOperatorDirectedAVSRewardsSubmission(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(
MockAvsServiceManagerCalls::createOperatorDirectedAVSRewardsSubmission,
)
}
createOperatorDirectedAVSRewardsSubmission
},
{
fn deregisterOperatorFromAVS(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::deregisterOperatorFromAVS)
}
deregisterOperatorFromAVS
},
{
fn updateAVSMetadataURI(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<updateAVSMetadataURICall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::updateAVSMetadataURI)
}
updateAVSMetadataURI
},
{
fn staleStakesForbidden(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::staleStakesForbidden)
}
staleStakesForbidden
},
{
fn initialize(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
.map(MockAvsServiceManagerCalls::initialize)
}
initialize
},
{
fn delegation(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<delegationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
.map(MockAvsServiceManagerCalls::delegation)
}
delegation
},
{
fn getRestakeableStrategies(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<getRestakeableStrategiesCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::getRestakeableStrategies)
}
getRestakeableStrategies
},
{
fn transferOwnership(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::transferOwnership)
}
transferOwnership
},
{
fn rewardsInitiator(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<rewardsInitiatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::rewardsInitiator)
}
rewardsInitiator
},
{
fn createAVSRewardsSubmission(
data: &[u8],
) -> alloy_sol_types::Result<MockAvsServiceManagerCalls> {
<createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(MockAvsServiceManagerCalls::createAVSRewardsSubmission)
}
createAVSRewardsSubmission
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
));
};
DECODE_VALIDATE_SHIMS[idx](data)
}
#[inline]
fn abi_encoded_size(&self) -> usize {
match self {
Self::avsDirectory(inner) => {
<avsDirectoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::blsApkRegistry(inner) => {
<blsApkRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::checkSignatures(inner) => {
<checkSignaturesCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::createAVSRewardsSubmission(inner) => {
<createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::createOperatorDirectedAVSRewardsSubmission(inner) => {
<createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::delegation(inner) => {
<delegationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::deregisterOperatorFromAVS(inner) => {
<deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getOperatorRestakedStrategies(inner) => {
<getOperatorRestakedStrategiesCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getRestakeableStrategies(inner) => {
<getRestakeableStrategiesCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::initialize(inner) => {
<initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::owner(inner) => {
<ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::registerOperatorToAVS(inner) => {
<registerOperatorToAVSCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::registryCoordinator(inner) => {
<registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::renounceOwnership(inner) => {
<renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::rewardsInitiator(inner) => {
<rewardsInitiatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::setClaimerFor(inner) => {
<setClaimerForCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::setRewardsInitiator(inner) => {
<setRewardsInitiatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::setStaleStakesForbidden(inner) => {
<setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::stakeRegistry(inner) => {
<stakeRegistryCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::staleStakesForbidden(inner) => {
<staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::transferOwnership(inner) => {
<transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::trySignatureAndApkVerification(inner) => {
<trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::updateAVSMetadataURI(inner) => {
<updateAVSMetadataURICall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
}
}
#[inline]
fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
match self {
Self::avsDirectory(inner) => {
<avsDirectoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::blsApkRegistry(inner) => {
<blsApkRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::checkSignatures(inner) => {
<checkSignaturesCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::createAVSRewardsSubmission(inner) => {
<createAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::createOperatorDirectedAVSRewardsSubmission(inner) => {
<createOperatorDirectedAVSRewardsSubmissionCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::delegation(inner) => {
<delegationCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::deregisterOperatorFromAVS(inner) => {
<deregisterOperatorFromAVSCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getOperatorRestakedStrategies(inner) => {
<getOperatorRestakedStrategiesCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getRestakeableStrategies(inner) => {
<getRestakeableStrategiesCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::initialize(inner) => {
<initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::owner(inner) => {
<ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
}
Self::registerOperatorToAVS(inner) => {
<registerOperatorToAVSCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::registryCoordinator(inner) => {
<registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::renounceOwnership(inner) => {
<renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::rewardsInitiator(inner) => {
<rewardsInitiatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::setClaimerFor(inner) => {
<setClaimerForCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::setRewardsInitiator(inner) => {
<setRewardsInitiatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::setStaleStakesForbidden(inner) => {
<setStaleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::stakeRegistry(inner) => {
<stakeRegistryCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::staleStakesForbidden(inner) => {
<staleStakesForbiddenCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::transferOwnership(inner) => {
<transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::trySignatureAndApkVerification(inner) => {
<trySignatureAndApkVerificationCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::updateAVSMetadataURI(inner) => {
<updateAVSMetadataURICall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
}
}
}
///Container for all the [`MockAvsServiceManager`](self) events.
#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
pub enum MockAvsServiceManagerEvents {
#[allow(missing_docs)]
Initialized(Initialized),
#[allow(missing_docs)]
OwnershipTransferred(OwnershipTransferred),
#[allow(missing_docs)]
RewardsInitiatorUpdated(RewardsInitiatorUpdated),
#[allow(missing_docs)]
StaleStakesForbiddenUpdate(StaleStakesForbiddenUpdate),
}
#[automatically_derived]
impl MockAvsServiceManagerEvents {
/// All the selectors of this enum.
///
/// Note that the selectors might not be in the same order as the variants.
/// No guarantees are made about the order of the selectors.
///
/// Prefer using `SolInterface` methods instead.
pub const SELECTORS: &'static [[u8; 32usize]] = &[
[
64u8, 228u8, 237u8, 136u8, 10u8, 41u8, 224u8, 246u8, 221u8, 206u8, 48u8, 116u8,
87u8, 251u8, 117u8, 205u8, 223u8, 79u8, 238u8, 247u8, 211u8, 236u8, 176u8, 48u8,
27u8, 253u8, 244u8, 151u8, 106u8, 14u8, 45u8, 252u8,
],
[
127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8,
82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8,
206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
],
[
139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8,
164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8,
180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
],
[
225u8, 28u8, 221u8, 241u8, 129u8, 106u8, 67u8, 49u8, 140u8, 161u8, 117u8, 187u8,
197u8, 44u8, 208u8, 24u8, 84u8, 54u8, 233u8, 203u8, 234u8, 215u8, 200u8, 58u8,
204u8, 84u8, 167u8, 62u8, 70u8, 23u8, 23u8, 227u8,
],
];
}
#[automatically_derived]
impl alloy_sol_types::SolEventInterface for MockAvsServiceManagerEvents {
const NAME: &'static str = "MockAvsServiceManagerEvents";
const COUNT: usize = 4usize;
fn decode_raw_log(
topics: &[alloy_sol_types::Word],
data: &[u8],
) -> alloy_sol_types::Result<Self> {
match topics.first().copied() {
Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<Initialized as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
.map(Self::Initialized)
}
Some(<OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::OwnershipTransferred)
}
Some(<RewardsInitiatorUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<RewardsInitiatorUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::RewardsInitiatorUpdated)
}
Some(<StaleStakesForbiddenUpdate as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<StaleStakesForbiddenUpdate as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::StaleStakesForbiddenUpdate)
}
_ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
name: <Self as alloy_sol_types::SolEventInterface>::NAME,
log: alloy_sol_types::private::Box::new(
alloy_sol_types::private::LogData::new_unchecked(
topics.to_vec(),
data.to_vec().into(),
),
),
}),
}
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for MockAvsServiceManagerEvents {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
match self {
Self::Initialized(inner) => {
alloy_sol_types::private::IntoLogData::to_log_data(inner)
}
Self::OwnershipTransferred(inner) => {
alloy_sol_types::private::IntoLogData::to_log_data(inner)
}
Self::RewardsInitiatorUpdated(inner) => {
alloy_sol_types::private::IntoLogData::to_log_data(inner)
}
Self::StaleStakesForbiddenUpdate(inner) => {
alloy_sol_types::private::IntoLogData::to_log_data(inner)
}
}
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
match self {
Self::Initialized(inner) => {
alloy_sol_types::private::IntoLogData::into_log_data(inner)
}
Self::OwnershipTransferred(inner) => {
alloy_sol_types::private::IntoLogData::into_log_data(inner)
}
Self::RewardsInitiatorUpdated(inner) => {
alloy_sol_types::private::IntoLogData::into_log_data(inner)
}
Self::StaleStakesForbiddenUpdate(inner) => {
alloy_sol_types::private::IntoLogData::into_log_data(inner)
}
}
}
}
use alloy::contract as alloy_contract;
/**Creates a new wrapper around an on-chain [`MockAvsServiceManager`](self) contract instance.
See the [wrapper's documentation](`MockAvsServiceManagerInstance`) for more details.*/
#[inline]
pub const fn new<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> MockAvsServiceManagerInstance<P, N> {
MockAvsServiceManagerInstance::<P, N>::new(address, provider)
}
/**Deploys this contract using the given `provider` and constructor arguments, if any.
Returns a new instance of the contract, if the deployment was successful.
For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
#[inline]
pub fn deploy<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>(
provider: P,
_avsDirectory: alloy::sol_types::private::Address,
_registryCoordinator: alloy::sol_types::private::Address,
_stakeRegistry: alloy::sol_types::private::Address,
rewards_coordinator: alloy::sol_types::private::Address,
) -> impl ::core::future::Future<Output = alloy_contract::Result<MockAvsServiceManagerInstance<P, N>>>
{
MockAvsServiceManagerInstance::<P, N>::deploy(
provider,
_avsDirectory,
_registryCoordinator,
_stakeRegistry,
rewards_coordinator,
)
}
/**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
and constructor arguments, if any.
This is a simple wrapper around creating a `RawCallBuilder` with the data set to
the bytecode concatenated with the constructor's ABI-encoded arguments.*/
#[inline]
pub fn deploy_builder<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
provider: P,
_avsDirectory: alloy::sol_types::private::Address,
_registryCoordinator: alloy::sol_types::private::Address,
_stakeRegistry: alloy::sol_types::private::Address,
rewards_coordinator: alloy::sol_types::private::Address,
) -> alloy_contract::RawCallBuilder<P, N> {
MockAvsServiceManagerInstance::<P, N>::deploy_builder(
provider,
_avsDirectory,
_registryCoordinator,
_stakeRegistry,
rewards_coordinator,
)
}
/**A [`MockAvsServiceManager`](self) instance.
Contains type-safe methods for interacting with an on-chain instance of the
[`MockAvsServiceManager`](self) contract located at a given `address`, using a given
provider `P`.
If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
documentation on how to provide it), the `deploy` and `deploy_builder` methods can
be used to deploy a new instance of the contract.
See the [module-level documentation](self) for all the available methods.*/
#[derive(Clone)]
pub struct MockAvsServiceManagerInstance<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for MockAvsServiceManagerInstance<P, N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_tuple("MockAvsServiceManagerInstance")
.field(&self.address)
.finish()
}
}
/// Instantiation and getters/setters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
MockAvsServiceManagerInstance<P, N>
{
/**Creates a new wrapper around an on-chain [`MockAvsServiceManager`](self) contract instance.
See the [wrapper's documentation](`MockAvsServiceManagerInstance`) for more details.*/
#[inline]
pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
Self {
address,
provider,
_network: ::core::marker::PhantomData,
}
}
/**Deploys this contract using the given `provider` and constructor arguments, if any.
Returns a new instance of the contract, if the deployment was successful.
For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
#[inline]
pub async fn deploy(
provider: P,
_avsDirectory: alloy::sol_types::private::Address,
_registryCoordinator: alloy::sol_types::private::Address,
_stakeRegistry: alloy::sol_types::private::Address,
rewards_coordinator: alloy::sol_types::private::Address,
) -> alloy_contract::Result<MockAvsServiceManagerInstance<P, N>> {
let call_builder = Self::deploy_builder(
provider,
_avsDirectory,
_registryCoordinator,
_stakeRegistry,
rewards_coordinator,
);
let contract_address = call_builder.deploy().await?;
Ok(Self::new(contract_address, call_builder.provider))
}
/**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
and constructor arguments, if any.
This is a simple wrapper around creating a `RawCallBuilder` with the data set to
the bytecode concatenated with the constructor's ABI-encoded arguments.*/
#[inline]
pub fn deploy_builder(
provider: P,
_avsDirectory: alloy::sol_types::private::Address,
_registryCoordinator: alloy::sol_types::private::Address,
_stakeRegistry: alloy::sol_types::private::Address,
rewards_coordinator: alloy::sol_types::private::Address,
) -> alloy_contract::RawCallBuilder<P, N> {
alloy_contract::RawCallBuilder::new_raw_deploy(
provider,
[
&BYTECODE[..],
&alloy_sol_types::SolConstructor::abi_encode(&constructorCall {
_avsDirectory,
_registryCoordinator,
_stakeRegistry,
rewards_coordinator,
})[..],
]
.concat()
.into(),
)
}
/// Returns a reference to the address.
#[inline]
pub const fn address(&self) -> &alloy_sol_types::private::Address {
&self.address
}
/// Sets the address.
#[inline]
pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
self.address = address;
}
/// Sets the address and returns `self`.
pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
self.set_address(address);
self
}
/// Returns a reference to the provider.
#[inline]
pub const fn provider(&self) -> &P {
&self.provider
}
}
impl<P: ::core::clone::Clone, N> MockAvsServiceManagerInstance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> MockAvsServiceManagerInstance<P, N> {
MockAvsServiceManagerInstance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
MockAvsServiceManagerInstance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
///Creates a new call builder for the [`avsDirectory`] function.
pub fn avsDirectory(&self) -> alloy_contract::SolCallBuilder<&P, avsDirectoryCall, N> {
self.call_builder(&avsDirectoryCall)
}
///Creates a new call builder for the [`blsApkRegistry`] function.
pub fn blsApkRegistry(&self) -> alloy_contract::SolCallBuilder<&P, blsApkRegistryCall, N> {
self.call_builder(&blsApkRegistryCall)
}
///Creates a new call builder for the [`checkSignatures`] function.
pub fn checkSignatures(
&self,
msgHash: alloy::sol_types::private::FixedBytes<32>,
quorumNumbers: alloy::sol_types::private::Bytes,
referenceBlockNumber: u32,
params: <IBLSSignatureChecker::NonSignerStakesAndSignature as alloy::sol_types::SolType>::RustType,
) -> alloy_contract::SolCallBuilder<&P, checkSignaturesCall, N> {
self.call_builder(&checkSignaturesCall {
msgHash,
quorumNumbers,
referenceBlockNumber,
params,
})
}
///Creates a new call builder for the [`createAVSRewardsSubmission`] function.
pub fn createAVSRewardsSubmission(
&self,
rewardsSubmissions: alloy::sol_types::private::Vec<
<IRewardsCoordinator::RewardsSubmission as alloy::sol_types::SolType>::RustType,
>,
) -> alloy_contract::SolCallBuilder<&P, createAVSRewardsSubmissionCall, N> {
self.call_builder(&createAVSRewardsSubmissionCall { rewardsSubmissions })
}
///Creates a new call builder for the [`createOperatorDirectedAVSRewardsSubmission`] function.
pub fn createOperatorDirectedAVSRewardsSubmission(
&self,
operatorDirectedRewardsSubmissions: alloy::sol_types::private::Vec<
<IRewardsCoordinator::OperatorDirectedRewardsSubmission as alloy::sol_types::SolType>::RustType,
>,
) -> alloy_contract::SolCallBuilder<&P, createOperatorDirectedAVSRewardsSubmissionCall, N>
{
self.call_builder(&createOperatorDirectedAVSRewardsSubmissionCall {
operatorDirectedRewardsSubmissions,
})
}
///Creates a new call builder for the [`delegation`] function.
pub fn delegation(&self) -> alloy_contract::SolCallBuilder<&P, delegationCall, N> {
self.call_builder(&delegationCall)
}
///Creates a new call builder for the [`deregisterOperatorFromAVS`] function.
pub fn deregisterOperatorFromAVS(
&self,
operator: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, deregisterOperatorFromAVSCall, N> {
self.call_builder(&deregisterOperatorFromAVSCall { operator })
}
///Creates a new call builder for the [`getOperatorRestakedStrategies`] function.
pub fn getOperatorRestakedStrategies(
&self,
operator: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, getOperatorRestakedStrategiesCall, N> {
self.call_builder(&getOperatorRestakedStrategiesCall { operator })
}
///Creates a new call builder for the [`getRestakeableStrategies`] function.
pub fn getRestakeableStrategies(
&self,
) -> alloy_contract::SolCallBuilder<&P, getRestakeableStrategiesCall, N> {
self.call_builder(&getRestakeableStrategiesCall)
}
///Creates a new call builder for the [`initialize`] function.
pub fn initialize(
&self,
_initialOwner: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
self.call_builder(&initializeCall { _initialOwner })
}
///Creates a new call builder for the [`owner`] function.
pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
self.call_builder(&ownerCall)
}
///Creates a new call builder for the [`registerOperatorToAVS`] function.
pub fn registerOperatorToAVS(
&self,
operator: alloy::sol_types::private::Address,
operatorSignature: <ISignatureUtils::SignatureWithSaltAndExpiry as alloy::sol_types::SolType>::RustType,
) -> alloy_contract::SolCallBuilder<&P, registerOperatorToAVSCall, N> {
self.call_builder(®isterOperatorToAVSCall {
operator,
operatorSignature,
})
}
///Creates a new call builder for the [`registryCoordinator`] function.
pub fn registryCoordinator(
&self,
) -> alloy_contract::SolCallBuilder<&P, registryCoordinatorCall, N> {
self.call_builder(®istryCoordinatorCall)
}
///Creates a new call builder for the [`renounceOwnership`] function.
pub fn renounceOwnership(
&self,
) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
self.call_builder(&renounceOwnershipCall)
}
///Creates a new call builder for the [`rewardsInitiator`] function.
pub fn rewardsInitiator(
&self,
) -> alloy_contract::SolCallBuilder<&P, rewardsInitiatorCall, N> {
self.call_builder(&rewardsInitiatorCall)
}
///Creates a new call builder for the [`setClaimerFor`] function.
pub fn setClaimerFor(
&self,
claimer: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, setClaimerForCall, N> {
self.call_builder(&setClaimerForCall { claimer })
}
///Creates a new call builder for the [`setRewardsInitiator`] function.
pub fn setRewardsInitiator(
&self,
newRewardsInitiator: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, setRewardsInitiatorCall, N> {
self.call_builder(&setRewardsInitiatorCall {
newRewardsInitiator,
})
}
///Creates a new call builder for the [`setStaleStakesForbidden`] function.
pub fn setStaleStakesForbidden(
&self,
value: bool,
) -> alloy_contract::SolCallBuilder<&P, setStaleStakesForbiddenCall, N> {
self.call_builder(&setStaleStakesForbiddenCall { value })
}
///Creates a new call builder for the [`stakeRegistry`] function.
pub fn stakeRegistry(&self) -> alloy_contract::SolCallBuilder<&P, stakeRegistryCall, N> {
self.call_builder(&stakeRegistryCall)
}
///Creates a new call builder for the [`staleStakesForbidden`] function.
pub fn staleStakesForbidden(
&self,
) -> alloy_contract::SolCallBuilder<&P, staleStakesForbiddenCall, N> {
self.call_builder(&staleStakesForbiddenCall)
}
///Creates a new call builder for the [`transferOwnership`] function.
pub fn transferOwnership(
&self,
newOwner: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
self.call_builder(&transferOwnershipCall { newOwner })
}
///Creates a new call builder for the [`trySignatureAndApkVerification`] function.
pub fn trySignatureAndApkVerification(
&self,
msgHash: alloy::sol_types::private::FixedBytes<32>,
apk: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
apkG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
sigma: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
) -> alloy_contract::SolCallBuilder<&P, trySignatureAndApkVerificationCall, N> {
self.call_builder(&trySignatureAndApkVerificationCall {
msgHash,
apk,
apkG2,
sigma,
})
}
///Creates a new call builder for the [`updateAVSMetadataURI`] function.
pub fn updateAVSMetadataURI(
&self,
_metadataURI: alloy::sol_types::private::String,
) -> alloy_contract::SolCallBuilder<&P, updateAVSMetadataURICall, N> {
self.call_builder(&updateAVSMetadataURICall { _metadataURI })
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
MockAvsServiceManagerInstance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
alloy_contract::Event::new_sol(&self.provider, &self.address)
}
///Creates a new event filter for the [`Initialized`] event.
pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
self.event_filter::<Initialized>()
}
///Creates a new event filter for the [`OwnershipTransferred`] event.
pub fn OwnershipTransferred_filter(
&self,
) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
self.event_filter::<OwnershipTransferred>()
}
///Creates a new event filter for the [`RewardsInitiatorUpdated`] event.
pub fn RewardsInitiatorUpdated_filter(
&self,
) -> alloy_contract::Event<&P, RewardsInitiatorUpdated, N> {
self.event_filter::<RewardsInitiatorUpdated>()
}
///Creates a new event filter for the [`StaleStakesForbiddenUpdate`] event.
pub fn StaleStakesForbiddenUpdate_filter(
&self,
) -> alloy_contract::Event<&P, StaleStakesForbiddenUpdate, N> {
self.event_filter::<StaleStakesForbiddenUpdate>()
}
}
}