hotshot_contract_adapter/bindings/
lightclientarbitrumv2.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use alloy::sol_types as alloy_sol_types;
20
21    use super::*;
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30            for alloy::sol_types::private::primitives::aliases::U256
31        {
32            #[inline]
33            fn stv_to_tokens(
34                &self,
35            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
36            {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
44                    .0
45            }
46            #[inline]
47            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
48                <alloy::sol_types::sol_data::Uint<
49                    256,
50                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
51            }
52            #[inline]
53            fn stv_abi_packed_encoded_size(&self) -> usize {
54                <alloy::sol_types::sol_data::Uint<
55                    256,
56                > as alloy_sol_types::SolType>::abi_encoded_size(self)
57            }
58        }
59        #[automatically_derived]
60        impl BaseField {
61            /// The Solidity type name.
62            pub const NAME: &'static str = stringify!(@ name);
63            /// Convert from the underlying value type.
64            #[inline]
65            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
66                Self(value)
67            }
68            /// Return the underlying value.
69            #[inline]
70            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
71                self.0
72            }
73            /// Return the single encoding of this value, delegating to the
74            /// underlying type.
75            #[inline]
76            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
77                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
78            }
79            /// Return the packed encoding of this value, delegating to the
80            /// underlying type.
81            #[inline]
82            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
83                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
84            }
85        }
86        #[automatically_derived]
87        impl alloy_sol_types::SolType for BaseField {
88            type RustType = alloy::sol_types::private::primitives::aliases::U256;
89            type Token<'a> =
90                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
91            const SOL_NAME: &'static str = Self::NAME;
92            const ENCODED_SIZE: Option<usize> =
93                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
94            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
95                256,
96            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
97            #[inline]
98            fn valid_token(token: &Self::Token<'_>) -> bool {
99                Self::type_check(token).is_ok()
100            }
101            #[inline]
102            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
103                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
104                    token,
105                )
106            }
107            #[inline]
108            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
109                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
110                    token,
111                )
112            }
113        }
114        #[automatically_derived]
115        impl alloy_sol_types::EventTopic for BaseField {
116            #[inline]
117            fn topic_preimage_length(rust: &Self::RustType) -> usize {
118                <alloy::sol_types::sol_data::Uint<
119                    256,
120                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
121            }
122            #[inline]
123            fn encode_topic_preimage(
124                rust: &Self::RustType,
125                out: &mut alloy_sol_types::private::Vec<u8>,
126            ) {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
130            }
131            #[inline]
132            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
133                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
134                    rust,
135                )
136            }
137        }
138    };
139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
141    #[derive(Clone)]
142    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
143    const _: () = {
144        use alloy::sol_types as alloy_sol_types;
145        #[automatically_derived]
146        impl alloy_sol_types::private::SolTypeValue<ScalarField>
147            for alloy::sol_types::private::primitives::aliases::U256
148        {
149            #[inline]
150            fn stv_to_tokens(
151                &self,
152            ) -> <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'_>
153            {
154                alloy_sol_types::private::SolTypeValue::<
155                    alloy::sol_types::sol_data::Uint<256>,
156                >::stv_to_tokens(self)
157            }
158            #[inline]
159            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
160                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(self)
161                    .0
162            }
163            #[inline]
164            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
165                <alloy::sol_types::sol_data::Uint<
166                    256,
167                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
168            }
169            #[inline]
170            fn stv_abi_packed_encoded_size(&self) -> usize {
171                <alloy::sol_types::sol_data::Uint<
172                    256,
173                > as alloy_sol_types::SolType>::abi_encoded_size(self)
174            }
175        }
176        #[automatically_derived]
177        impl ScalarField {
178            /// The Solidity type name.
179            pub const NAME: &'static str = stringify!(@ name);
180            /// Convert from the underlying value type.
181            #[inline]
182            pub const fn from(value: alloy::sol_types::private::primitives::aliases::U256) -> Self {
183                Self(value)
184            }
185            /// Return the underlying value.
186            #[inline]
187            pub const fn into(self) -> alloy::sol_types::private::primitives::aliases::U256 {
188                self.0
189            }
190            /// Return the single encoding of this value, delegating to the
191            /// underlying type.
192            #[inline]
193            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
194                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
195            }
196            /// Return the packed encoding of this value, delegating to the
197            /// underlying type.
198            #[inline]
199            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
200                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
201            }
202        }
203        #[automatically_derived]
204        impl alloy_sol_types::SolType for ScalarField {
205            type RustType = alloy::sol_types::private::primitives::aliases::U256;
206            type Token<'a> =
207                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::Token<'a>;
208            const SOL_NAME: &'static str = Self::NAME;
209            const ENCODED_SIZE: Option<usize> =
210                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::ENCODED_SIZE;
211            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
212                256,
213            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
214            #[inline]
215            fn valid_token(token: &Self::Token<'_>) -> bool {
216                Self::type_check(token).is_ok()
217            }
218            #[inline]
219            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
220                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::type_check(
221                    token,
222                )
223            }
224            #[inline]
225            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
226                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::detokenize(
227                    token,
228                )
229            }
230        }
231        #[automatically_derived]
232        impl alloy_sol_types::EventTopic for ScalarField {
233            #[inline]
234            fn topic_preimage_length(rust: &Self::RustType) -> usize {
235                <alloy::sol_types::sol_data::Uint<
236                    256,
237                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
238            }
239            #[inline]
240            fn encode_topic_preimage(
241                rust: &Self::RustType,
242                out: &mut alloy_sol_types::private::Vec<u8>,
243            ) {
244                <alloy::sol_types::sol_data::Uint<
245                    256,
246                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
247            }
248            #[inline]
249            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
250                <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::EventTopic>::encode_topic(
251                    rust,
252                )
253            }
254        }
255    };
256    #[derive(Default, Debug, PartialEq, Eq, Hash)]
257    /**```solidity
258    struct G1Point { BaseField x; BaseField y; }
259    ```*/
260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
261    #[derive(Clone)]
262    pub struct G1Point {
263        #[allow(missing_docs)]
264        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
265        #[allow(missing_docs)]
266        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
267    }
268    #[allow(
269        non_camel_case_types,
270        non_snake_case,
271        clippy::pub_underscore_fields,
272        clippy::style
273    )]
274    const _: () = {
275        use alloy::sol_types as alloy_sol_types;
276        #[doc(hidden)]
277        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
278        #[doc(hidden)]
279        type UnderlyingRustTuple<'a> = (
280            <BaseField as alloy::sol_types::SolType>::RustType,
281            <BaseField as alloy::sol_types::SolType>::RustType,
282        );
283        #[cfg(test)]
284        #[allow(dead_code, unreachable_patterns)]
285        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
286            match _t {
287                alloy_sol_types::private::AssertTypeEq::<
288                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
289                >(_) => {},
290            }
291        }
292        #[automatically_derived]
293        #[doc(hidden)]
294        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
295            fn from(value: G1Point) -> Self {
296                (value.x, value.y)
297            }
298        }
299        #[automatically_derived]
300        #[doc(hidden)]
301        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
302            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
303                Self {
304                    x: tuple.0,
305                    y: tuple.1,
306                }
307            }
308        }
309        #[automatically_derived]
310        impl alloy_sol_types::SolValue for G1Point {
311            type SolType = Self;
312        }
313        #[automatically_derived]
314        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
315            #[inline]
316            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
317                (
318                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
319                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
320                )
321            }
322            #[inline]
323            fn stv_abi_encoded_size(&self) -> usize {
324                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
325                    return size;
326                }
327                let tuple =
328                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
329                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
330            }
331            #[inline]
332            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
333                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
334            }
335            #[inline]
336            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
337                let tuple =
338                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
339                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
340                    &tuple, out,
341                )
342            }
343            #[inline]
344            fn stv_abi_packed_encoded_size(&self) -> usize {
345                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
346                    return size;
347                }
348                let tuple =
349                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
350                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
351                    &tuple,
352                )
353            }
354        }
355        #[automatically_derived]
356        impl alloy_sol_types::SolType for G1Point {
357            type RustType = Self;
358            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
359            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
360            const ENCODED_SIZE: Option<usize> =
361                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
362            const PACKED_ENCODED_SIZE: Option<usize> =
363                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
364            #[inline]
365            fn valid_token(token: &Self::Token<'_>) -> bool {
366                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
367            }
368            #[inline]
369            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
370                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
371                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
372            }
373        }
374        #[automatically_derived]
375        impl alloy_sol_types::SolStruct for G1Point {
376            const NAME: &'static str = "G1Point";
377            #[inline]
378            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
379                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
380            }
381            #[inline]
382            fn eip712_components(
383            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
384            {
385                alloy_sol_types::private::Vec::new()
386            }
387            #[inline]
388            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
389                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
390            }
391            #[inline]
392            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
393                [
394                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
395                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
396                ]
397                .concat()
398            }
399        }
400        #[automatically_derived]
401        impl alloy_sol_types::EventTopic for G1Point {
402            #[inline]
403            fn topic_preimage_length(rust: &Self::RustType) -> usize {
404                0usize
405                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.x)
406                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.y)
407            }
408            #[inline]
409            fn encode_topic_preimage(
410                rust: &Self::RustType,
411                out: &mut alloy_sol_types::private::Vec<u8>,
412            ) {
413                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
414                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.x, out);
415                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.y, out);
416            }
417            #[inline]
418            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
419                let mut out = alloy_sol_types::private::Vec::new();
420                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
421                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
422            }
423        }
424    };
425    use alloy::contract as alloy_contract;
426    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
427
428    See the [wrapper's documentation](`BN254Instance`) for more details.*/
429    #[inline]
430    pub const fn new<
431        T: alloy_contract::private::Transport + ::core::clone::Clone,
432        P: alloy_contract::private::Provider<T, N>,
433        N: alloy_contract::private::Network,
434    >(
435        address: alloy_sol_types::private::Address,
436        provider: P,
437    ) -> BN254Instance<T, P, N> {
438        BN254Instance::<T, P, N>::new(address, provider)
439    }
440    /**A [`BN254`](self) instance.
441
442    Contains type-safe methods for interacting with an on-chain instance of the
443    [`BN254`](self) contract located at a given `address`, using a given
444    provider `P`.
445
446    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
447    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
448    be used to deploy a new instance of the contract.
449
450    See the [module-level documentation](self) for all the available methods.*/
451    #[derive(Clone)]
452    pub struct BN254Instance<T, P, N = alloy_contract::private::Ethereum> {
453        address: alloy_sol_types::private::Address,
454        provider: P,
455        _network_transport: ::core::marker::PhantomData<(N, T)>,
456    }
457    #[automatically_derived]
458    impl<T, P, N> ::core::fmt::Debug for BN254Instance<T, P, N> {
459        #[inline]
460        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
461            f.debug_tuple("BN254Instance").field(&self.address).finish()
462        }
463    }
464    /// Instantiation and getters/setters.
465    #[automatically_derived]
466    impl<
467            T: alloy_contract::private::Transport + ::core::clone::Clone,
468            P: alloy_contract::private::Provider<T, N>,
469            N: alloy_contract::private::Network,
470        > BN254Instance<T, P, N>
471    {
472        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
473
474        See the [wrapper's documentation](`BN254Instance`) for more details.*/
475        #[inline]
476        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
477            Self {
478                address,
479                provider,
480                _network_transport: ::core::marker::PhantomData,
481            }
482        }
483        /// Returns a reference to the address.
484        #[inline]
485        pub const fn address(&self) -> &alloy_sol_types::private::Address {
486            &self.address
487        }
488        /// Sets the address.
489        #[inline]
490        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
491            self.address = address;
492        }
493        /// Sets the address and returns `self`.
494        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
495            self.set_address(address);
496            self
497        }
498        /// Returns a reference to the provider.
499        #[inline]
500        pub const fn provider(&self) -> &P {
501            &self.provider
502        }
503    }
504    impl<T, P: ::core::clone::Clone, N> BN254Instance<T, &P, N> {
505        /// Clones the provider and returns a new instance with the cloned provider.
506        #[inline]
507        pub fn with_cloned_provider(self) -> BN254Instance<T, P, N> {
508            BN254Instance {
509                address: self.address,
510                provider: ::core::clone::Clone::clone(&self.provider),
511                _network_transport: ::core::marker::PhantomData,
512            }
513        }
514    }
515    /// Function calls.
516    #[automatically_derived]
517    impl<
518            T: alloy_contract::private::Transport + ::core::clone::Clone,
519            P: alloy_contract::private::Provider<T, N>,
520            N: alloy_contract::private::Network,
521        > BN254Instance<T, P, N>
522    {
523        /// Creates a new call builder using this contract instance's provider and address.
524        ///
525        /// Note that the call can be any function call, not just those defined in this
526        /// contract. Prefer using the other methods for building type-safe contract calls.
527        pub fn call_builder<C: alloy_sol_types::SolCall>(
528            &self,
529            call: &C,
530        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
531            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
532        }
533    }
534    /// Event filters.
535    #[automatically_derived]
536    impl<
537            T: alloy_contract::private::Transport + ::core::clone::Clone,
538            P: alloy_contract::private::Provider<T, N>,
539            N: alloy_contract::private::Network,
540        > BN254Instance<T, P, N>
541    {
542        /// Creates a new event filter using this contract instance's provider and address.
543        ///
544        /// Note that the type can be any event, not just those defined in this contract.
545        /// Prefer using the other methods for building type-safe event filters.
546        pub fn event_filter<E: alloy_sol_types::SolEvent>(
547            &self,
548        ) -> alloy_contract::Event<T, &P, E, N> {
549            alloy_contract::Event::new_sol(&self.provider, &self.address)
550        }
551    }
552}
553///Module containing a contract's types and functions.
554/**
555
556```solidity
557library IPlonkVerifier {
558    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
559    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
560}
561```*/
562#[allow(
563    non_camel_case_types,
564    non_snake_case,
565    clippy::pub_underscore_fields,
566    clippy::style,
567    clippy::empty_structs_with_brackets
568)]
569pub mod IPlonkVerifier {
570    use alloy::sol_types as alloy_sol_types;
571
572    use super::*;
573    #[derive()]
574    /**```solidity
575    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
576    ```*/
577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
578    #[derive(Clone)]
579    pub struct PlonkProof {
580        #[allow(missing_docs)]
581        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
582        #[allow(missing_docs)]
583        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
584        #[allow(missing_docs)]
585        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
586        #[allow(missing_docs)]
587        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
588        #[allow(missing_docs)]
589        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
590        #[allow(missing_docs)]
591        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
592        #[allow(missing_docs)]
593        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
594        #[allow(missing_docs)]
595        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
596        #[allow(missing_docs)]
597        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
598        #[allow(missing_docs)]
599        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
600        #[allow(missing_docs)]
601        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
602        #[allow(missing_docs)]
603        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
604        #[allow(missing_docs)]
605        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
606        #[allow(missing_docs)]
607        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
608        #[allow(missing_docs)]
609        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
610        #[allow(missing_docs)]
611        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
612        #[allow(missing_docs)]
613        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
614        #[allow(missing_docs)]
615        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
616        #[allow(missing_docs)]
617        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
618        #[allow(missing_docs)]
619        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
620        #[allow(missing_docs)]
621        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
622        #[allow(missing_docs)]
623        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
624        #[allow(missing_docs)]
625        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
626    }
627    #[allow(
628        non_camel_case_types,
629        non_snake_case,
630        clippy::pub_underscore_fields,
631        clippy::style
632    )]
633    const _: () = {
634        use alloy::sol_types as alloy_sol_types;
635        #[doc(hidden)]
636        type UnderlyingSolTuple<'a> = (
637            BN254::G1Point,
638            BN254::G1Point,
639            BN254::G1Point,
640            BN254::G1Point,
641            BN254::G1Point,
642            BN254::G1Point,
643            BN254::G1Point,
644            BN254::G1Point,
645            BN254::G1Point,
646            BN254::G1Point,
647            BN254::G1Point,
648            BN254::G1Point,
649            BN254::G1Point,
650            BN254::ScalarField,
651            BN254::ScalarField,
652            BN254::ScalarField,
653            BN254::ScalarField,
654            BN254::ScalarField,
655            BN254::ScalarField,
656            BN254::ScalarField,
657            BN254::ScalarField,
658            BN254::ScalarField,
659            BN254::ScalarField,
660        );
661        #[doc(hidden)]
662        type UnderlyingRustTuple<'a> = (
663            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
677            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
678            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
679            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
680            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
681            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
682            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
683            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
684            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
686        );
687        #[cfg(test)]
688        #[allow(dead_code, unreachable_patterns)]
689        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
690            match _t {
691                alloy_sol_types::private::AssertTypeEq::<
692                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
693                >(_) => {},
694            }
695        }
696        #[automatically_derived]
697        #[doc(hidden)]
698        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
699            fn from(value: PlonkProof) -> Self {
700                (
701                    value.wire0,
702                    value.wire1,
703                    value.wire2,
704                    value.wire3,
705                    value.wire4,
706                    value.prodPerm,
707                    value.split0,
708                    value.split1,
709                    value.split2,
710                    value.split3,
711                    value.split4,
712                    value.zeta,
713                    value.zetaOmega,
714                    value.wireEval0,
715                    value.wireEval1,
716                    value.wireEval2,
717                    value.wireEval3,
718                    value.wireEval4,
719                    value.sigmaEval0,
720                    value.sigmaEval1,
721                    value.sigmaEval2,
722                    value.sigmaEval3,
723                    value.prodPermZetaOmegaEval,
724                )
725            }
726        }
727        #[automatically_derived]
728        #[doc(hidden)]
729        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
730            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
731                Self {
732                    wire0: tuple.0,
733                    wire1: tuple.1,
734                    wire2: tuple.2,
735                    wire3: tuple.3,
736                    wire4: tuple.4,
737                    prodPerm: tuple.5,
738                    split0: tuple.6,
739                    split1: tuple.7,
740                    split2: tuple.8,
741                    split3: tuple.9,
742                    split4: tuple.10,
743                    zeta: tuple.11,
744                    zetaOmega: tuple.12,
745                    wireEval0: tuple.13,
746                    wireEval1: tuple.14,
747                    wireEval2: tuple.15,
748                    wireEval3: tuple.16,
749                    wireEval4: tuple.17,
750                    sigmaEval0: tuple.18,
751                    sigmaEval1: tuple.19,
752                    sigmaEval2: tuple.20,
753                    sigmaEval3: tuple.21,
754                    prodPermZetaOmegaEval: tuple.22,
755                }
756            }
757        }
758        #[automatically_derived]
759        impl alloy_sol_types::SolValue for PlonkProof {
760            type SolType = Self;
761        }
762        #[automatically_derived]
763        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
764            #[inline]
765            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
766                (
767                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
768                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
769                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
770                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
771                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
772                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.prodPerm),
773                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
774                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
775                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
776                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
777                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
778                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
779                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zetaOmega),
780                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval0),
781                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval1),
782                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval2),
783                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval3),
784                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.wireEval4),
785                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval0),
786                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval1),
787                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval2),
788                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.sigmaEval3),
789                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
790                        &self.prodPermZetaOmegaEval,
791                    ),
792                )
793            }
794            #[inline]
795            fn stv_abi_encoded_size(&self) -> usize {
796                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
797                    return size;
798                }
799                let tuple =
800                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
801                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
802            }
803            #[inline]
804            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
805                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
806            }
807            #[inline]
808            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
809                let tuple =
810                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
811                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
812                    &tuple, out,
813                )
814            }
815            #[inline]
816            fn stv_abi_packed_encoded_size(&self) -> usize {
817                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
818                    return size;
819                }
820                let tuple =
821                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
822                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
823                    &tuple,
824                )
825            }
826        }
827        #[automatically_derived]
828        impl alloy_sol_types::SolType for PlonkProof {
829            type RustType = Self;
830            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
831            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
832            const ENCODED_SIZE: Option<usize> =
833                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
834            const PACKED_ENCODED_SIZE: Option<usize> =
835                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
836            #[inline]
837            fn valid_token(token: &Self::Token<'_>) -> bool {
838                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
839            }
840            #[inline]
841            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
842                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
843                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
844            }
845        }
846        #[automatically_derived]
847        impl alloy_sol_types::SolStruct for PlonkProof {
848            const NAME: &'static str = "PlonkProof";
849            #[inline]
850            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
851                alloy_sol_types::private::Cow::Borrowed(
852                    "PlonkProof(BN254.G1Point wire0,BN254.G1Point wire1,BN254.G1Point wire2,BN254.G1Point wire3,BN254.G1Point wire4,BN254.G1Point prodPerm,BN254.G1Point split0,BN254.G1Point split1,BN254.G1Point split2,BN254.G1Point split3,BN254.G1Point split4,BN254.G1Point zeta,BN254.G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
853                )
854            }
855            #[inline]
856            fn eip712_components(
857            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
858            {
859                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
860                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
861                components
862                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
863                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
864                components
865                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
866                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
867                components
868                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
869                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
870                components
871                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
872                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
873                components
874                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
875                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
876                components
877                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
878                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
879                components
880                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
881                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
882                components
883                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
884                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
885                components
886                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
887                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
888                components
889                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
890                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
891                components
892                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
893                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
894                components
895                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
896                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
897                components
898                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
899                components
900            }
901            #[inline]
902            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
903                [
904                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire0).0,
905                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire1).0,
906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire2).0,
907                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire3).0,
908                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.wire4).0,
909                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.prodPerm)
910                        .0,
911                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split0).0,
912                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split1).0,
913                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split2).0,
914                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split3).0,
915                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.split4).0,
916                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zeta).0,
917                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.zetaOmega)
918                        .0,
919                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
920                        &self.wireEval0,
921                    )
922                    .0,
923                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
924                        &self.wireEval1,
925                    )
926                    .0,
927                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
928                        &self.wireEval2,
929                    )
930                    .0,
931                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
932                        &self.wireEval3,
933                    )
934                    .0,
935                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
936                        &self.wireEval4,
937                    )
938                    .0,
939                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
940                        &self.sigmaEval0,
941                    )
942                    .0,
943                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
944                        &self.sigmaEval1,
945                    )
946                    .0,
947                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
948                        &self.sigmaEval2,
949                    )
950                    .0,
951                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
952                        &self.sigmaEval3,
953                    )
954                    .0,
955                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
956                        &self.prodPermZetaOmegaEval,
957                    )
958                    .0,
959                ]
960                .concat()
961            }
962        }
963        #[automatically_derived]
964        impl alloy_sol_types::EventTopic for PlonkProof {
965            #[inline]
966            fn topic_preimage_length(rust: &Self::RustType) -> usize {
967                0usize
968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
969                        &rust.wire0,
970                    )
971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
972                        &rust.wire1,
973                    )
974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
975                        &rust.wire2,
976                    )
977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
978                        &rust.wire3,
979                    )
980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
981                        &rust.wire4,
982                    )
983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
984                        &rust.prodPerm,
985                    )
986                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
987                        &rust.split0,
988                    )
989                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
990                        &rust.split1,
991                    )
992                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
993                        &rust.split2,
994                    )
995                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
996                        &rust.split3,
997                    )
998                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
999                        &rust.split4,
1000                    )
1001                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1002                        &rust.zeta,
1003                    )
1004                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1005                        &rust.zetaOmega,
1006                    )
1007                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1008                        &rust.wireEval0,
1009                    )
1010                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1011                        &rust.wireEval1,
1012                    )
1013                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1014                        &rust.wireEval2,
1015                    )
1016                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1017                        &rust.wireEval3,
1018                    )
1019                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1020                        &rust.wireEval4,
1021                    )
1022                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1023                        &rust.sigmaEval0,
1024                    )
1025                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1026                        &rust.sigmaEval1,
1027                    )
1028                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1029                        &rust.sigmaEval2,
1030                    )
1031                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1032                        &rust.sigmaEval3,
1033                    )
1034                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1035                        &rust.prodPermZetaOmegaEval,
1036                    )
1037            }
1038            #[inline]
1039            fn encode_topic_preimage(
1040                rust: &Self::RustType,
1041                out: &mut alloy_sol_types::private::Vec<u8>,
1042            ) {
1043                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1044                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1045                    &rust.wire0,
1046                    out,
1047                );
1048                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1049                    &rust.wire1,
1050                    out,
1051                );
1052                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1053                    &rust.wire2,
1054                    out,
1055                );
1056                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1057                    &rust.wire3,
1058                    out,
1059                );
1060                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1061                    &rust.wire4,
1062                    out,
1063                );
1064                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1065                    &rust.prodPerm,
1066                    out,
1067                );
1068                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1069                    &rust.split0,
1070                    out,
1071                );
1072                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1073                    &rust.split1,
1074                    out,
1075                );
1076                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1077                    &rust.split2,
1078                    out,
1079                );
1080                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1081                    &rust.split3,
1082                    out,
1083                );
1084                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1085                    &rust.split4,
1086                    out,
1087                );
1088                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1089                    &rust.zeta, out,
1090                );
1091                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1092                    &rust.zetaOmega,
1093                    out,
1094                );
1095                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1096                    &rust.wireEval0,
1097                    out,
1098                );
1099                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1100                    &rust.wireEval1,
1101                    out,
1102                );
1103                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1104                    &rust.wireEval2,
1105                    out,
1106                );
1107                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1108                    &rust.wireEval3,
1109                    out,
1110                );
1111                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1112                    &rust.wireEval4,
1113                    out,
1114                );
1115                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1116                    &rust.sigmaEval0,
1117                    out,
1118                );
1119                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1120                    &rust.sigmaEval1,
1121                    out,
1122                );
1123                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1124                    &rust.sigmaEval2,
1125                    out,
1126                );
1127                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1128                    &rust.sigmaEval3,
1129                    out,
1130                );
1131                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1132                    &rust.prodPermZetaOmegaEval,
1133                    out,
1134                );
1135            }
1136            #[inline]
1137            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1138                let mut out = alloy_sol_types::private::Vec::new();
1139                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1140                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1141            }
1142        }
1143    };
1144    #[derive()]
1145    /**```solidity
1146    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1147    ```*/
1148    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1149    #[derive(Clone)]
1150    pub struct VerifyingKey {
1151        #[allow(missing_docs)]
1152        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1153        #[allow(missing_docs)]
1154        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1155        #[allow(missing_docs)]
1156        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1157        #[allow(missing_docs)]
1158        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1159        #[allow(missing_docs)]
1160        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1161        #[allow(missing_docs)]
1162        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1163        #[allow(missing_docs)]
1164        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1165        #[allow(missing_docs)]
1166        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1167        #[allow(missing_docs)]
1168        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1169        #[allow(missing_docs)]
1170        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1171        #[allow(missing_docs)]
1172        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1173        #[allow(missing_docs)]
1174        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1175        #[allow(missing_docs)]
1176        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1177        #[allow(missing_docs)]
1178        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1179        #[allow(missing_docs)]
1180        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1181        #[allow(missing_docs)]
1182        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1183        #[allow(missing_docs)]
1184        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1185        #[allow(missing_docs)]
1186        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1187        #[allow(missing_docs)]
1188        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1189        #[allow(missing_docs)]
1190        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1191        #[allow(missing_docs)]
1192        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1193        #[allow(missing_docs)]
1194        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1195    }
1196    #[allow(
1197        non_camel_case_types,
1198        non_snake_case,
1199        clippy::pub_underscore_fields,
1200        clippy::style
1201    )]
1202    const _: () = {
1203        use alloy::sol_types as alloy_sol_types;
1204        #[doc(hidden)]
1205        type UnderlyingSolTuple<'a> = (
1206            alloy::sol_types::sol_data::Uint<256>,
1207            alloy::sol_types::sol_data::Uint<256>,
1208            BN254::G1Point,
1209            BN254::G1Point,
1210            BN254::G1Point,
1211            BN254::G1Point,
1212            BN254::G1Point,
1213            BN254::G1Point,
1214            BN254::G1Point,
1215            BN254::G1Point,
1216            BN254::G1Point,
1217            BN254::G1Point,
1218            BN254::G1Point,
1219            BN254::G1Point,
1220            BN254::G1Point,
1221            BN254::G1Point,
1222            BN254::G1Point,
1223            BN254::G1Point,
1224            BN254::G1Point,
1225            BN254::G1Point,
1226            alloy::sol_types::sol_data::FixedBytes<32>,
1227            alloy::sol_types::sol_data::FixedBytes<32>,
1228        );
1229        #[doc(hidden)]
1230        type UnderlyingRustTuple<'a> = (
1231            alloy::sol_types::private::primitives::aliases::U256,
1232            alloy::sol_types::private::primitives::aliases::U256,
1233            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1234            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1235            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1236            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1237            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1238            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1239            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1240            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1241            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1242            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1243            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1244            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1245            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1246            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1247            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1248            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1249            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1250            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1251            alloy::sol_types::private::FixedBytes<32>,
1252            alloy::sol_types::private::FixedBytes<32>,
1253        );
1254        #[cfg(test)]
1255        #[allow(dead_code, unreachable_patterns)]
1256        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1257            match _t {
1258                alloy_sol_types::private::AssertTypeEq::<
1259                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1260                >(_) => {},
1261            }
1262        }
1263        #[automatically_derived]
1264        #[doc(hidden)]
1265        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1266            fn from(value: VerifyingKey) -> Self {
1267                (
1268                    value.domainSize,
1269                    value.numInputs,
1270                    value.sigma0,
1271                    value.sigma1,
1272                    value.sigma2,
1273                    value.sigma3,
1274                    value.sigma4,
1275                    value.q1,
1276                    value.q2,
1277                    value.q3,
1278                    value.q4,
1279                    value.qM12,
1280                    value.qM34,
1281                    value.qO,
1282                    value.qC,
1283                    value.qH1,
1284                    value.qH2,
1285                    value.qH3,
1286                    value.qH4,
1287                    value.qEcc,
1288                    value.g2LSB,
1289                    value.g2MSB,
1290                )
1291            }
1292        }
1293        #[automatically_derived]
1294        #[doc(hidden)]
1295        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1296            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1297                Self {
1298                    domainSize: tuple.0,
1299                    numInputs: tuple.1,
1300                    sigma0: tuple.2,
1301                    sigma1: tuple.3,
1302                    sigma2: tuple.4,
1303                    sigma3: tuple.5,
1304                    sigma4: tuple.6,
1305                    q1: tuple.7,
1306                    q2: tuple.8,
1307                    q3: tuple.9,
1308                    q4: tuple.10,
1309                    qM12: tuple.11,
1310                    qM34: tuple.12,
1311                    qO: tuple.13,
1312                    qC: tuple.14,
1313                    qH1: tuple.15,
1314                    qH2: tuple.16,
1315                    qH3: tuple.17,
1316                    qH4: tuple.18,
1317                    qEcc: tuple.19,
1318                    g2LSB: tuple.20,
1319                    g2MSB: tuple.21,
1320                }
1321            }
1322        }
1323        #[automatically_derived]
1324        impl alloy_sol_types::SolValue for VerifyingKey {
1325            type SolType = Self;
1326        }
1327        #[automatically_derived]
1328        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1329            #[inline]
1330            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1331                (
1332                    <alloy::sol_types::sol_data::Uint<
1333                        256,
1334                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1335                    <alloy::sol_types::sol_data::Uint<
1336                        256,
1337                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1338                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1339                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1340                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1341                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1342                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1343                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1344                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1345                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1346                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1347                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1348                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1349                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1350                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1351                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1352                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1353                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1354                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1355                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1356                    <alloy::sol_types::sol_data::FixedBytes<
1357                        32,
1358                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1359                    <alloy::sol_types::sol_data::FixedBytes<
1360                        32,
1361                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1362                )
1363            }
1364            #[inline]
1365            fn stv_abi_encoded_size(&self) -> usize {
1366                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1367                    return size;
1368                }
1369                let tuple =
1370                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1371                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1372            }
1373            #[inline]
1374            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1375                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1376            }
1377            #[inline]
1378            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1379                let tuple =
1380                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1381                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
1382                    &tuple, out,
1383                )
1384            }
1385            #[inline]
1386            fn stv_abi_packed_encoded_size(&self) -> usize {
1387                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1388                    return size;
1389                }
1390                let tuple =
1391                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1392                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
1393                    &tuple,
1394                )
1395            }
1396        }
1397        #[automatically_derived]
1398        impl alloy_sol_types::SolType for VerifyingKey {
1399            type RustType = Self;
1400            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1401            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1402            const ENCODED_SIZE: Option<usize> =
1403                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
1404            const PACKED_ENCODED_SIZE: Option<usize> =
1405                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1406            #[inline]
1407            fn valid_token(token: &Self::Token<'_>) -> bool {
1408                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1409            }
1410            #[inline]
1411            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1412                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
1413                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1414            }
1415        }
1416        #[automatically_derived]
1417        impl alloy_sol_types::SolStruct for VerifyingKey {
1418            const NAME: &'static str = "VerifyingKey";
1419            #[inline]
1420            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1421                alloy_sol_types::private::Cow::Borrowed(
1422                    "VerifyingKey(uint256 domainSize,uint256 numInputs,BN254.G1Point sigma0,BN254.G1Point sigma1,BN254.G1Point sigma2,BN254.G1Point sigma3,BN254.G1Point sigma4,BN254.G1Point q1,BN254.G1Point q2,BN254.G1Point q3,BN254.G1Point q4,BN254.G1Point qM12,BN254.G1Point qM34,BN254.G1Point qO,BN254.G1Point qC,BN254.G1Point qH1,BN254.G1Point qH2,BN254.G1Point qH3,BN254.G1Point qH4,BN254.G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1423                )
1424            }
1425            #[inline]
1426            fn eip712_components(
1427            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
1428            {
1429                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1430                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1431                components
1432                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1433                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1434                components
1435                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1436                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1437                components
1438                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1439                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1440                components
1441                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1442                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1443                components
1444                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1445                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1446                components
1447                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1448                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1449                components
1450                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1451                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1452                components
1453                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1454                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1455                components
1456                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1457                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1458                components
1459                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1460                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1461                components
1462                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1463                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1464                components
1465                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1466                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1467                components
1468                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1469                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1470                components
1471                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1472                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1473                components
1474                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1475                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1476                components
1477                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1478                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1479                components
1480                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1481                components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
1482                components
1483                    .extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
1484                components
1485            }
1486            #[inline]
1487            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1488                [
1489                    <alloy::sol_types::sol_data::Uint<
1490                        256,
1491                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1492                        .0,
1493                    <alloy::sol_types::sol_data::Uint<
1494                        256,
1495                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1496                        .0,
1497                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1498                            &self.sigma0,
1499                        )
1500                        .0,
1501                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1502                            &self.sigma1,
1503                        )
1504                        .0,
1505                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1506                            &self.sigma2,
1507                        )
1508                        .0,
1509                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1510                            &self.sigma3,
1511                        )
1512                        .0,
1513                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1514                            &self.sigma4,
1515                        )
1516                        .0,
1517                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1518                            &self.q1,
1519                        )
1520                        .0,
1521                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1522                            &self.q2,
1523                        )
1524                        .0,
1525                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1526                            &self.q3,
1527                        )
1528                        .0,
1529                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1530                            &self.q4,
1531                        )
1532                        .0,
1533                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1534                            &self.qM12,
1535                        )
1536                        .0,
1537                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1538                            &self.qM34,
1539                        )
1540                        .0,
1541                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1542                            &self.qO,
1543                        )
1544                        .0,
1545                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1546                            &self.qC,
1547                        )
1548                        .0,
1549                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1550                            &self.qH1,
1551                        )
1552                        .0,
1553                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1554                            &self.qH2,
1555                        )
1556                        .0,
1557                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1558                            &self.qH3,
1559                        )
1560                        .0,
1561                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1562                            &self.qH4,
1563                        )
1564                        .0,
1565                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1566                            &self.qEcc,
1567                        )
1568                        .0,
1569                    <alloy::sol_types::sol_data::FixedBytes<
1570                        32,
1571                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1572                        .0,
1573                    <alloy::sol_types::sol_data::FixedBytes<
1574                        32,
1575                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1576                        .0,
1577                ]
1578                    .concat()
1579            }
1580        }
1581        #[automatically_derived]
1582        impl alloy_sol_types::EventTopic for VerifyingKey {
1583            #[inline]
1584            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1585                0usize
1586                    + <alloy::sol_types::sol_data::Uint<
1587                        256,
1588                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1589                        &rust.domainSize,
1590                    )
1591                    + <alloy::sol_types::sol_data::Uint<
1592                        256,
1593                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1594                        &rust.numInputs,
1595                    )
1596                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1597                        &rust.sigma0,
1598                    )
1599                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1600                        &rust.sigma1,
1601                    )
1602                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1603                        &rust.sigma2,
1604                    )
1605                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1606                        &rust.sigma3,
1607                    )
1608                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1609                        &rust.sigma4,
1610                    )
1611                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1612                        &rust.q1,
1613                    )
1614                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1615                        &rust.q2,
1616                    )
1617                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1618                        &rust.q3,
1619                    )
1620                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1621                        &rust.q4,
1622                    )
1623                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1624                        &rust.qM12,
1625                    )
1626                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1627                        &rust.qM34,
1628                    )
1629                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1630                        &rust.qO,
1631                    )
1632                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1633                        &rust.qC,
1634                    )
1635                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1636                        &rust.qH1,
1637                    )
1638                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1639                        &rust.qH2,
1640                    )
1641                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1642                        &rust.qH3,
1643                    )
1644                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1645                        &rust.qH4,
1646                    )
1647                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1648                        &rust.qEcc,
1649                    )
1650                    + <alloy::sol_types::sol_data::FixedBytes<
1651                        32,
1652                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1653                    + <alloy::sol_types::sol_data::FixedBytes<
1654                        32,
1655                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1656            }
1657            #[inline]
1658            fn encode_topic_preimage(
1659                rust: &Self::RustType,
1660                out: &mut alloy_sol_types::private::Vec<u8>,
1661            ) {
1662                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
1663                <alloy::sol_types::sol_data::Uint<
1664                    256,
1665                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1666                    &rust.domainSize,
1667                    out,
1668                );
1669                <alloy::sol_types::sol_data::Uint<
1670                    256,
1671                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1672                    &rust.numInputs,
1673                    out,
1674                );
1675                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1676                    &rust.sigma0,
1677                    out,
1678                );
1679                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1680                    &rust.sigma1,
1681                    out,
1682                );
1683                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1684                    &rust.sigma2,
1685                    out,
1686                );
1687                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1688                    &rust.sigma3,
1689                    out,
1690                );
1691                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1692                    &rust.sigma4,
1693                    out,
1694                );
1695                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1696                    &rust.q1, out,
1697                );
1698                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1699                    &rust.q2, out,
1700                );
1701                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1702                    &rust.q3, out,
1703                );
1704                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1705                    &rust.q4, out,
1706                );
1707                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1708                    &rust.qM12, out,
1709                );
1710                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1711                    &rust.qM34, out,
1712                );
1713                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1714                    &rust.qO, out,
1715                );
1716                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1717                    &rust.qC, out,
1718                );
1719                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1720                    &rust.qH1, out,
1721                );
1722                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1723                    &rust.qH2, out,
1724                );
1725                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1726                    &rust.qH3, out,
1727                );
1728                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1729                    &rust.qH4, out,
1730                );
1731                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1732                    &rust.qEcc, out,
1733                );
1734                <alloy::sol_types::sol_data::FixedBytes<
1735                    32,
1736                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1737                    &rust.g2LSB,
1738                    out,
1739                );
1740                <alloy::sol_types::sol_data::FixedBytes<
1741                    32,
1742                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
1743                    &rust.g2MSB,
1744                    out,
1745                );
1746            }
1747            #[inline]
1748            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
1749                let mut out = alloy_sol_types::private::Vec::new();
1750                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
1751                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
1752            }
1753        }
1754    };
1755    use alloy::contract as alloy_contract;
1756    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1757
1758    See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1759    #[inline]
1760    pub const fn new<
1761        T: alloy_contract::private::Transport + ::core::clone::Clone,
1762        P: alloy_contract::private::Provider<T, N>,
1763        N: alloy_contract::private::Network,
1764    >(
1765        address: alloy_sol_types::private::Address,
1766        provider: P,
1767    ) -> IPlonkVerifierInstance<T, P, N> {
1768        IPlonkVerifierInstance::<T, P, N>::new(address, provider)
1769    }
1770    /**A [`IPlonkVerifier`](self) instance.
1771
1772    Contains type-safe methods for interacting with an on-chain instance of the
1773    [`IPlonkVerifier`](self) contract located at a given `address`, using a given
1774    provider `P`.
1775
1776    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1777    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1778    be used to deploy a new instance of the contract.
1779
1780    See the [module-level documentation](self) for all the available methods.*/
1781    #[derive(Clone)]
1782    pub struct IPlonkVerifierInstance<T, P, N = alloy_contract::private::Ethereum> {
1783        address: alloy_sol_types::private::Address,
1784        provider: P,
1785        _network_transport: ::core::marker::PhantomData<(N, T)>,
1786    }
1787    #[automatically_derived]
1788    impl<T, P, N> ::core::fmt::Debug for IPlonkVerifierInstance<T, P, N> {
1789        #[inline]
1790        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1791            f.debug_tuple("IPlonkVerifierInstance")
1792                .field(&self.address)
1793                .finish()
1794        }
1795    }
1796    /// Instantiation and getters/setters.
1797    #[automatically_derived]
1798    impl<
1799            T: alloy_contract::private::Transport + ::core::clone::Clone,
1800            P: alloy_contract::private::Provider<T, N>,
1801            N: alloy_contract::private::Network,
1802        > IPlonkVerifierInstance<T, P, N>
1803    {
1804        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
1805
1806        See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
1807        #[inline]
1808        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
1809            Self {
1810                address,
1811                provider,
1812                _network_transport: ::core::marker::PhantomData,
1813            }
1814        }
1815        /// Returns a reference to the address.
1816        #[inline]
1817        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1818            &self.address
1819        }
1820        /// Sets the address.
1821        #[inline]
1822        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1823            self.address = address;
1824        }
1825        /// Sets the address and returns `self`.
1826        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1827            self.set_address(address);
1828            self
1829        }
1830        /// Returns a reference to the provider.
1831        #[inline]
1832        pub const fn provider(&self) -> &P {
1833            &self.provider
1834        }
1835    }
1836    impl<T, P: ::core::clone::Clone, N> IPlonkVerifierInstance<T, &P, N> {
1837        /// Clones the provider and returns a new instance with the cloned provider.
1838        #[inline]
1839        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<T, P, N> {
1840            IPlonkVerifierInstance {
1841                address: self.address,
1842                provider: ::core::clone::Clone::clone(&self.provider),
1843                _network_transport: ::core::marker::PhantomData,
1844            }
1845        }
1846    }
1847    /// Function calls.
1848    #[automatically_derived]
1849    impl<
1850            T: alloy_contract::private::Transport + ::core::clone::Clone,
1851            P: alloy_contract::private::Provider<T, N>,
1852            N: alloy_contract::private::Network,
1853        > IPlonkVerifierInstance<T, P, N>
1854    {
1855        /// Creates a new call builder using this contract instance's provider and address.
1856        ///
1857        /// Note that the call can be any function call, not just those defined in this
1858        /// contract. Prefer using the other methods for building type-safe contract calls.
1859        pub fn call_builder<C: alloy_sol_types::SolCall>(
1860            &self,
1861            call: &C,
1862        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
1863            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1864        }
1865    }
1866    /// Event filters.
1867    #[automatically_derived]
1868    impl<
1869            T: alloy_contract::private::Transport + ::core::clone::Clone,
1870            P: alloy_contract::private::Provider<T, N>,
1871            N: alloy_contract::private::Network,
1872        > IPlonkVerifierInstance<T, P, N>
1873    {
1874        /// Creates a new event filter using this contract instance's provider and address.
1875        ///
1876        /// Note that the type can be any event, not just those defined in this contract.
1877        /// Prefer using the other methods for building type-safe event filters.
1878        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1879            &self,
1880        ) -> alloy_contract::Event<T, &P, E, N> {
1881            alloy_contract::Event::new_sol(&self.provider, &self.address)
1882        }
1883    }
1884}
1885///Module containing a contract's types and functions.
1886/**
1887
1888```solidity
1889library LightClient {
1890    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
1891    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
1892}
1893```*/
1894#[allow(
1895    non_camel_case_types,
1896    non_snake_case,
1897    clippy::pub_underscore_fields,
1898    clippy::style,
1899    clippy::empty_structs_with_brackets
1900)]
1901pub mod LightClient {
1902    use alloy::sol_types as alloy_sol_types;
1903
1904    use super::*;
1905    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1906    /**```solidity
1907    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
1908    ```*/
1909    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1910    #[derive(Clone)]
1911    pub struct LightClientState {
1912        #[allow(missing_docs)]
1913        pub viewNum: u64,
1914        #[allow(missing_docs)]
1915        pub blockHeight: u64,
1916        #[allow(missing_docs)]
1917        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1918    }
1919    #[allow(
1920        non_camel_case_types,
1921        non_snake_case,
1922        clippy::pub_underscore_fields,
1923        clippy::style
1924    )]
1925    const _: () = {
1926        use alloy::sol_types as alloy_sol_types;
1927        #[doc(hidden)]
1928        type UnderlyingSolTuple<'a> = (
1929            alloy::sol_types::sol_data::Uint<64>,
1930            alloy::sol_types::sol_data::Uint<64>,
1931            BN254::ScalarField,
1932        );
1933        #[doc(hidden)]
1934        type UnderlyingRustTuple<'a> = (
1935            u64,
1936            u64,
1937            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1938        );
1939        #[cfg(test)]
1940        #[allow(dead_code, unreachable_patterns)]
1941        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1942            match _t {
1943                alloy_sol_types::private::AssertTypeEq::<
1944                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1945                >(_) => {},
1946            }
1947        }
1948        #[automatically_derived]
1949        #[doc(hidden)]
1950        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
1951            fn from(value: LightClientState) -> Self {
1952                (value.viewNum, value.blockHeight, value.blockCommRoot)
1953            }
1954        }
1955        #[automatically_derived]
1956        #[doc(hidden)]
1957        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
1958            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1959                Self {
1960                    viewNum: tuple.0,
1961                    blockHeight: tuple.1,
1962                    blockCommRoot: tuple.2,
1963                }
1964            }
1965        }
1966        #[automatically_derived]
1967        impl alloy_sol_types::SolValue for LightClientState {
1968            type SolType = Self;
1969        }
1970        #[automatically_derived]
1971        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
1972            #[inline]
1973            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1974                (
1975                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
1976                        &self.viewNum,
1977                    ),
1978                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
1979                        &self.blockHeight,
1980                    ),
1981                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.blockCommRoot),
1982                )
1983            }
1984            #[inline]
1985            fn stv_abi_encoded_size(&self) -> usize {
1986                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1987                    return size;
1988                }
1989                let tuple =
1990                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
1991                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1992            }
1993            #[inline]
1994            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1995                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1996            }
1997            #[inline]
1998            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1999                let tuple =
2000                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2001                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
2002                    &tuple, out,
2003                )
2004            }
2005            #[inline]
2006            fn stv_abi_packed_encoded_size(&self) -> usize {
2007                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2008                    return size;
2009                }
2010                let tuple =
2011                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2012                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
2013                    &tuple,
2014                )
2015            }
2016        }
2017        #[automatically_derived]
2018        impl alloy_sol_types::SolType for LightClientState {
2019            type RustType = Self;
2020            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2021            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2022            const ENCODED_SIZE: Option<usize> =
2023                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
2024            const PACKED_ENCODED_SIZE: Option<usize> =
2025                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2026            #[inline]
2027            fn valid_token(token: &Self::Token<'_>) -> bool {
2028                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2029            }
2030            #[inline]
2031            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2032                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
2033                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2034            }
2035        }
2036        #[automatically_derived]
2037        impl alloy_sol_types::SolStruct for LightClientState {
2038            const NAME: &'static str = "LightClientState";
2039            #[inline]
2040            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2041                alloy_sol_types::private::Cow::Borrowed(
2042                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2043                )
2044            }
2045            #[inline]
2046            fn eip712_components(
2047            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
2048            {
2049                alloy_sol_types::private::Vec::new()
2050            }
2051            #[inline]
2052            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2053                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2054            }
2055            #[inline]
2056            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2057                [
2058                    <alloy::sol_types::sol_data::Uint<
2059                        64,
2060                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2061                        .0,
2062                    <alloy::sol_types::sol_data::Uint<
2063                        64,
2064                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2065                        .0,
2066                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2067                            &self.blockCommRoot,
2068                        )
2069                        .0,
2070                ]
2071                    .concat()
2072            }
2073        }
2074        #[automatically_derived]
2075        impl alloy_sol_types::EventTopic for LightClientState {
2076            #[inline]
2077            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2078                0usize
2079                    + <alloy::sol_types::sol_data::Uint<
2080                        64,
2081                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2082                        &rust.viewNum,
2083                    )
2084                    + <alloy::sol_types::sol_data::Uint<
2085                        64,
2086                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2087                        &rust.blockHeight,
2088                    )
2089                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2090                        &rust.blockCommRoot,
2091                    )
2092            }
2093            #[inline]
2094            fn encode_topic_preimage(
2095                rust: &Self::RustType,
2096                out: &mut alloy_sol_types::private::Vec<u8>,
2097            ) {
2098                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
2099                <alloy::sol_types::sol_data::Uint<
2100                    64,
2101                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2102                    &rust.viewNum,
2103                    out,
2104                );
2105                <alloy::sol_types::sol_data::Uint<
2106                    64,
2107                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2108                    &rust.blockHeight,
2109                    out,
2110                );
2111                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2112                    &rust.blockCommRoot,
2113                    out,
2114                );
2115            }
2116            #[inline]
2117            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
2118                let mut out = alloy_sol_types::private::Vec::new();
2119                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
2120                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
2121            }
2122        }
2123    };
2124    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2125    /**```solidity
2126    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2127    ```*/
2128    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2129    #[derive(Clone)]
2130    pub struct StakeTableState {
2131        #[allow(missing_docs)]
2132        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2133        #[allow(missing_docs)]
2134        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2135        #[allow(missing_docs)]
2136        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2137        #[allow(missing_docs)]
2138        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2139    }
2140    #[allow(
2141        non_camel_case_types,
2142        non_snake_case,
2143        clippy::pub_underscore_fields,
2144        clippy::style
2145    )]
2146    const _: () = {
2147        use alloy::sol_types as alloy_sol_types;
2148        #[doc(hidden)]
2149        type UnderlyingSolTuple<'a> = (
2150            alloy::sol_types::sol_data::Uint<256>,
2151            BN254::ScalarField,
2152            BN254::ScalarField,
2153            BN254::ScalarField,
2154        );
2155        #[doc(hidden)]
2156        type UnderlyingRustTuple<'a> = (
2157            alloy::sol_types::private::primitives::aliases::U256,
2158            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2159            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2160            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2161        );
2162        #[cfg(test)]
2163        #[allow(dead_code, unreachable_patterns)]
2164        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2165            match _t {
2166                alloy_sol_types::private::AssertTypeEq::<
2167                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2168                >(_) => {},
2169            }
2170        }
2171        #[automatically_derived]
2172        #[doc(hidden)]
2173        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2174            fn from(value: StakeTableState) -> Self {
2175                (
2176                    value.threshold,
2177                    value.blsKeyComm,
2178                    value.schnorrKeyComm,
2179                    value.amountComm,
2180                )
2181            }
2182        }
2183        #[automatically_derived]
2184        #[doc(hidden)]
2185        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2186            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2187                Self {
2188                    threshold: tuple.0,
2189                    blsKeyComm: tuple.1,
2190                    schnorrKeyComm: tuple.2,
2191                    amountComm: tuple.3,
2192                }
2193            }
2194        }
2195        #[automatically_derived]
2196        impl alloy_sol_types::SolValue for StakeTableState {
2197            type SolType = Self;
2198        }
2199        #[automatically_derived]
2200        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2201            #[inline]
2202            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2203                (
2204                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2205                        &self.threshold,
2206                    ),
2207                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.blsKeyComm),
2208                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2209                        &self.schnorrKeyComm,
2210                    ),
2211                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(&self.amountComm),
2212                )
2213            }
2214            #[inline]
2215            fn stv_abi_encoded_size(&self) -> usize {
2216                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2217                    return size;
2218                }
2219                let tuple =
2220                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2221                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2222            }
2223            #[inline]
2224            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2225                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2226            }
2227            #[inline]
2228            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
2229                let tuple =
2230                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2231                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
2232                    &tuple, out,
2233                )
2234            }
2235            #[inline]
2236            fn stv_abi_packed_encoded_size(&self) -> usize {
2237                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2238                    return size;
2239                }
2240                let tuple =
2241                    <UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
2242                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
2243                    &tuple,
2244                )
2245            }
2246        }
2247        #[automatically_derived]
2248        impl alloy_sol_types::SolType for StakeTableState {
2249            type RustType = Self;
2250            type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2251            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2252            const ENCODED_SIZE: Option<usize> =
2253                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
2254            const PACKED_ENCODED_SIZE: Option<usize> =
2255                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2256            #[inline]
2257            fn valid_token(token: &Self::Token<'_>) -> bool {
2258                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2259            }
2260            #[inline]
2261            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2262                let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
2263                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2264            }
2265        }
2266        #[automatically_derived]
2267        impl alloy_sol_types::SolStruct for StakeTableState {
2268            const NAME: &'static str = "StakeTableState";
2269            #[inline]
2270            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2271                alloy_sol_types::private::Cow::Borrowed(
2272                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2273                )
2274            }
2275            #[inline]
2276            fn eip712_components(
2277            ) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
2278            {
2279                alloy_sol_types::private::Vec::new()
2280            }
2281            #[inline]
2282            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2283                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2284            }
2285            #[inline]
2286            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2287                [
2288                    <alloy::sol_types::sol_data::Uint<
2289                        256,
2290                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2291                        .0,
2292                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2293                            &self.blsKeyComm,
2294                        )
2295                        .0,
2296                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2297                            &self.schnorrKeyComm,
2298                        )
2299                        .0,
2300                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2301                            &self.amountComm,
2302                        )
2303                        .0,
2304                ]
2305                    .concat()
2306            }
2307        }
2308        #[automatically_derived]
2309        impl alloy_sol_types::EventTopic for StakeTableState {
2310            #[inline]
2311            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2312                0usize
2313                    + <alloy::sol_types::sol_data::Uint<
2314                        256,
2315                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2316                        &rust.threshold,
2317                    )
2318                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2319                        &rust.blsKeyComm,
2320                    )
2321                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2322                        &rust.schnorrKeyComm,
2323                    )
2324                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2325                        &rust.amountComm,
2326                    )
2327            }
2328            #[inline]
2329            fn encode_topic_preimage(
2330                rust: &Self::RustType,
2331                out: &mut alloy_sol_types::private::Vec<u8>,
2332            ) {
2333                out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
2334                <alloy::sol_types::sol_data::Uint<
2335                    256,
2336                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2337                    &rust.threshold,
2338                    out,
2339                );
2340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2341                    &rust.blsKeyComm,
2342                    out,
2343                );
2344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2345                    &rust.schnorrKeyComm,
2346                    out,
2347                );
2348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2349                    &rust.amountComm,
2350                    out,
2351                );
2352            }
2353            #[inline]
2354            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
2355                let mut out = alloy_sol_types::private::Vec::new();
2356                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
2357                alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
2358            }
2359        }
2360    };
2361    use alloy::contract as alloy_contract;
2362    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2363
2364    See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2365    #[inline]
2366    pub const fn new<
2367        T: alloy_contract::private::Transport + ::core::clone::Clone,
2368        P: alloy_contract::private::Provider<T, N>,
2369        N: alloy_contract::private::Network,
2370    >(
2371        address: alloy_sol_types::private::Address,
2372        provider: P,
2373    ) -> LightClientInstance<T, P, N> {
2374        LightClientInstance::<T, P, N>::new(address, provider)
2375    }
2376    /**A [`LightClient`](self) instance.
2377
2378    Contains type-safe methods for interacting with an on-chain instance of the
2379    [`LightClient`](self) contract located at a given `address`, using a given
2380    provider `P`.
2381
2382    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2383    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2384    be used to deploy a new instance of the contract.
2385
2386    See the [module-level documentation](self) for all the available methods.*/
2387    #[derive(Clone)]
2388    pub struct LightClientInstance<T, P, N = alloy_contract::private::Ethereum> {
2389        address: alloy_sol_types::private::Address,
2390        provider: P,
2391        _network_transport: ::core::marker::PhantomData<(N, T)>,
2392    }
2393    #[automatically_derived]
2394    impl<T, P, N> ::core::fmt::Debug for LightClientInstance<T, P, N> {
2395        #[inline]
2396        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2397            f.debug_tuple("LightClientInstance")
2398                .field(&self.address)
2399                .finish()
2400        }
2401    }
2402    /// Instantiation and getters/setters.
2403    #[automatically_derived]
2404    impl<
2405            T: alloy_contract::private::Transport + ::core::clone::Clone,
2406            P: alloy_contract::private::Provider<T, N>,
2407            N: alloy_contract::private::Network,
2408        > LightClientInstance<T, P, N>
2409    {
2410        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2411
2412        See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2413        #[inline]
2414        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
2415            Self {
2416                address,
2417                provider,
2418                _network_transport: ::core::marker::PhantomData,
2419            }
2420        }
2421        /// Returns a reference to the address.
2422        #[inline]
2423        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2424            &self.address
2425        }
2426        /// Sets the address.
2427        #[inline]
2428        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2429            self.address = address;
2430        }
2431        /// Sets the address and returns `self`.
2432        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2433            self.set_address(address);
2434            self
2435        }
2436        /// Returns a reference to the provider.
2437        #[inline]
2438        pub const fn provider(&self) -> &P {
2439            &self.provider
2440        }
2441    }
2442    impl<T, P: ::core::clone::Clone, N> LightClientInstance<T, &P, N> {
2443        /// Clones the provider and returns a new instance with the cloned provider.
2444        #[inline]
2445        pub fn with_cloned_provider(self) -> LightClientInstance<T, P, N> {
2446            LightClientInstance {
2447                address: self.address,
2448                provider: ::core::clone::Clone::clone(&self.provider),
2449                _network_transport: ::core::marker::PhantomData,
2450            }
2451        }
2452    }
2453    /// Function calls.
2454    #[automatically_derived]
2455    impl<
2456            T: alloy_contract::private::Transport + ::core::clone::Clone,
2457            P: alloy_contract::private::Provider<T, N>,
2458            N: alloy_contract::private::Network,
2459        > LightClientInstance<T, P, N>
2460    {
2461        /// Creates a new call builder using this contract instance's provider and address.
2462        ///
2463        /// Note that the call can be any function call, not just those defined in this
2464        /// contract. Prefer using the other methods for building type-safe contract calls.
2465        pub fn call_builder<C: alloy_sol_types::SolCall>(
2466            &self,
2467            call: &C,
2468        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
2469            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2470        }
2471    }
2472    /// Event filters.
2473    #[automatically_derived]
2474    impl<
2475            T: alloy_contract::private::Transport + ::core::clone::Clone,
2476            P: alloy_contract::private::Provider<T, N>,
2477            N: alloy_contract::private::Network,
2478        > LightClientInstance<T, P, N>
2479    {
2480        /// Creates a new event filter using this contract instance's provider and address.
2481        ///
2482        /// Note that the type can be any event, not just those defined in this contract.
2483        /// Prefer using the other methods for building type-safe event filters.
2484        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2485            &self,
2486        ) -> alloy_contract::Event<T, &P, E, N> {
2487            alloy_contract::Event::new_sol(&self.provider, &self.address)
2488        }
2489    }
2490}
2491/**
2492
2493Generated by the following Solidity interface...
2494```solidity
2495library BN254 {
2496    type BaseField is uint256;
2497    type ScalarField is uint256;
2498    struct G1Point {
2499        BaseField x;
2500        BaseField y;
2501    }
2502}
2503
2504library IPlonkVerifier {
2505    struct PlonkProof {
2506        BN254.G1Point wire0;
2507        BN254.G1Point wire1;
2508        BN254.G1Point wire2;
2509        BN254.G1Point wire3;
2510        BN254.G1Point wire4;
2511        BN254.G1Point prodPerm;
2512        BN254.G1Point split0;
2513        BN254.G1Point split1;
2514        BN254.G1Point split2;
2515        BN254.G1Point split3;
2516        BN254.G1Point split4;
2517        BN254.G1Point zeta;
2518        BN254.G1Point zetaOmega;
2519        BN254.ScalarField wireEval0;
2520        BN254.ScalarField wireEval1;
2521        BN254.ScalarField wireEval2;
2522        BN254.ScalarField wireEval3;
2523        BN254.ScalarField wireEval4;
2524        BN254.ScalarField sigmaEval0;
2525        BN254.ScalarField sigmaEval1;
2526        BN254.ScalarField sigmaEval2;
2527        BN254.ScalarField sigmaEval3;
2528        BN254.ScalarField prodPermZetaOmegaEval;
2529    }
2530    struct VerifyingKey {
2531        uint256 domainSize;
2532        uint256 numInputs;
2533        BN254.G1Point sigma0;
2534        BN254.G1Point sigma1;
2535        BN254.G1Point sigma2;
2536        BN254.G1Point sigma3;
2537        BN254.G1Point sigma4;
2538        BN254.G1Point q1;
2539        BN254.G1Point q2;
2540        BN254.G1Point q3;
2541        BN254.G1Point q4;
2542        BN254.G1Point qM12;
2543        BN254.G1Point qM34;
2544        BN254.G1Point qO;
2545        BN254.G1Point qC;
2546        BN254.G1Point qH1;
2547        BN254.G1Point qH2;
2548        BN254.G1Point qH3;
2549        BN254.G1Point qH4;
2550        BN254.G1Point qEcc;
2551        bytes32 g2LSB;
2552        bytes32 g2MSB;
2553    }
2554}
2555
2556library LightClient {
2557    struct LightClientState {
2558        uint64 viewNum;
2559        uint64 blockHeight;
2560        BN254.ScalarField blockCommRoot;
2561    }
2562    struct StakeTableState {
2563        uint256 threshold;
2564        BN254.ScalarField blsKeyComm;
2565        BN254.ScalarField schnorrKeyComm;
2566        BN254.ScalarField amountComm;
2567    }
2568}
2569
2570interface LightClientArbitrumV2 {
2571    error AddressEmptyCode(address target);
2572    error DeprecatedApi();
2573    error ERC1967InvalidImplementation(address implementation);
2574    error ERC1967NonPayable();
2575    error FailedInnerCall();
2576    error InsufficientSnapshotHistory();
2577    error InvalidAddress();
2578    error InvalidArgs();
2579    error InvalidHotShotBlockForCommitmentCheck();
2580    error InvalidInitialization();
2581    error InvalidMaxStateHistory();
2582    error InvalidProof();
2583    error MissingEpochRootUpdate();
2584    error NoChangeRequired();
2585    error NotInitializing();
2586    error OutdatedState();
2587    error OwnableInvalidOwner(address owner);
2588    error OwnableUnauthorizedAccount(address account);
2589    error ProverNotPermissioned();
2590    error UUPSUnauthorizedCallContext();
2591    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2592    error WrongStakeTableUsed();
2593
2594    event Initialized(uint64 version);
2595    event NewEpoch(uint64 epoch);
2596    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2597    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2598    event PermissionedProverNotRequired();
2599    event PermissionedProverRequired(address permissionedProver);
2600    event Upgrade(address implementation);
2601    event Upgraded(address indexed implementation);
2602
2603    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2604    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2605    function blocksPerEpoch() external view returns (uint64);
2606    function currentBlockNumber() external view returns (uint256);
2607    function currentEpoch() external view returns (uint64);
2608    function disablePermissionedProverMode() external;
2609    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
2610    function epochStartBlock() external view returns (uint64);
2611    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2612    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2613    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2614    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2615    function getStateHistoryCount() external view returns (uint256);
2616    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2617    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2618    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
2619    function isEpochRoot(uint64 blockHeight) external view returns (bool);
2620    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
2621    function isPermissionedProverEnabled() external view returns (bool);
2622    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
2623    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
2624    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
2625    function owner() external view returns (address);
2626    function permissionedProver() external view returns (address);
2627    function proxiableUUID() external view returns (bytes32);
2628    function renounceOwnership() external;
2629    function setPermissionedProver(address prover) external;
2630    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
2631    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
2632    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
2633    function stateHistoryFirstIndex() external view returns (uint64);
2634    function stateHistoryRetentionPeriod() external view returns (uint32);
2635    function transferOwnership(address newOwner) external;
2636    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
2637    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
2638    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2639}
2640```
2641
2642...which was generated by the following JSON ABI:
2643```json
2644[
2645  {
2646    "type": "function",
2647    "name": "UPGRADE_INTERFACE_VERSION",
2648    "inputs": [],
2649    "outputs": [
2650      {
2651        "name": "",
2652        "type": "string",
2653        "internalType": "string"
2654      }
2655    ],
2656    "stateMutability": "view"
2657  },
2658  {
2659    "type": "function",
2660    "name": "_getVk",
2661    "inputs": [],
2662    "outputs": [
2663      {
2664        "name": "vk",
2665        "type": "tuple",
2666        "internalType": "struct IPlonkVerifier.VerifyingKey",
2667        "components": [
2668          {
2669            "name": "domainSize",
2670            "type": "uint256",
2671            "internalType": "uint256"
2672          },
2673          {
2674            "name": "numInputs",
2675            "type": "uint256",
2676            "internalType": "uint256"
2677          },
2678          {
2679            "name": "sigma0",
2680            "type": "tuple",
2681            "internalType": "struct BN254.G1Point",
2682            "components": [
2683              {
2684                "name": "x",
2685                "type": "uint256",
2686                "internalType": "BN254.BaseField"
2687              },
2688              {
2689                "name": "y",
2690                "type": "uint256",
2691                "internalType": "BN254.BaseField"
2692              }
2693            ]
2694          },
2695          {
2696            "name": "sigma1",
2697            "type": "tuple",
2698            "internalType": "struct BN254.G1Point",
2699            "components": [
2700              {
2701                "name": "x",
2702                "type": "uint256",
2703                "internalType": "BN254.BaseField"
2704              },
2705              {
2706                "name": "y",
2707                "type": "uint256",
2708                "internalType": "BN254.BaseField"
2709              }
2710            ]
2711          },
2712          {
2713            "name": "sigma2",
2714            "type": "tuple",
2715            "internalType": "struct BN254.G1Point",
2716            "components": [
2717              {
2718                "name": "x",
2719                "type": "uint256",
2720                "internalType": "BN254.BaseField"
2721              },
2722              {
2723                "name": "y",
2724                "type": "uint256",
2725                "internalType": "BN254.BaseField"
2726              }
2727            ]
2728          },
2729          {
2730            "name": "sigma3",
2731            "type": "tuple",
2732            "internalType": "struct BN254.G1Point",
2733            "components": [
2734              {
2735                "name": "x",
2736                "type": "uint256",
2737                "internalType": "BN254.BaseField"
2738              },
2739              {
2740                "name": "y",
2741                "type": "uint256",
2742                "internalType": "BN254.BaseField"
2743              }
2744            ]
2745          },
2746          {
2747            "name": "sigma4",
2748            "type": "tuple",
2749            "internalType": "struct BN254.G1Point",
2750            "components": [
2751              {
2752                "name": "x",
2753                "type": "uint256",
2754                "internalType": "BN254.BaseField"
2755              },
2756              {
2757                "name": "y",
2758                "type": "uint256",
2759                "internalType": "BN254.BaseField"
2760              }
2761            ]
2762          },
2763          {
2764            "name": "q1",
2765            "type": "tuple",
2766            "internalType": "struct BN254.G1Point",
2767            "components": [
2768              {
2769                "name": "x",
2770                "type": "uint256",
2771                "internalType": "BN254.BaseField"
2772              },
2773              {
2774                "name": "y",
2775                "type": "uint256",
2776                "internalType": "BN254.BaseField"
2777              }
2778            ]
2779          },
2780          {
2781            "name": "q2",
2782            "type": "tuple",
2783            "internalType": "struct BN254.G1Point",
2784            "components": [
2785              {
2786                "name": "x",
2787                "type": "uint256",
2788                "internalType": "BN254.BaseField"
2789              },
2790              {
2791                "name": "y",
2792                "type": "uint256",
2793                "internalType": "BN254.BaseField"
2794              }
2795            ]
2796          },
2797          {
2798            "name": "q3",
2799            "type": "tuple",
2800            "internalType": "struct BN254.G1Point",
2801            "components": [
2802              {
2803                "name": "x",
2804                "type": "uint256",
2805                "internalType": "BN254.BaseField"
2806              },
2807              {
2808                "name": "y",
2809                "type": "uint256",
2810                "internalType": "BN254.BaseField"
2811              }
2812            ]
2813          },
2814          {
2815            "name": "q4",
2816            "type": "tuple",
2817            "internalType": "struct BN254.G1Point",
2818            "components": [
2819              {
2820                "name": "x",
2821                "type": "uint256",
2822                "internalType": "BN254.BaseField"
2823              },
2824              {
2825                "name": "y",
2826                "type": "uint256",
2827                "internalType": "BN254.BaseField"
2828              }
2829            ]
2830          },
2831          {
2832            "name": "qM12",
2833            "type": "tuple",
2834            "internalType": "struct BN254.G1Point",
2835            "components": [
2836              {
2837                "name": "x",
2838                "type": "uint256",
2839                "internalType": "BN254.BaseField"
2840              },
2841              {
2842                "name": "y",
2843                "type": "uint256",
2844                "internalType": "BN254.BaseField"
2845              }
2846            ]
2847          },
2848          {
2849            "name": "qM34",
2850            "type": "tuple",
2851            "internalType": "struct BN254.G1Point",
2852            "components": [
2853              {
2854                "name": "x",
2855                "type": "uint256",
2856                "internalType": "BN254.BaseField"
2857              },
2858              {
2859                "name": "y",
2860                "type": "uint256",
2861                "internalType": "BN254.BaseField"
2862              }
2863            ]
2864          },
2865          {
2866            "name": "qO",
2867            "type": "tuple",
2868            "internalType": "struct BN254.G1Point",
2869            "components": [
2870              {
2871                "name": "x",
2872                "type": "uint256",
2873                "internalType": "BN254.BaseField"
2874              },
2875              {
2876                "name": "y",
2877                "type": "uint256",
2878                "internalType": "BN254.BaseField"
2879              }
2880            ]
2881          },
2882          {
2883            "name": "qC",
2884            "type": "tuple",
2885            "internalType": "struct BN254.G1Point",
2886            "components": [
2887              {
2888                "name": "x",
2889                "type": "uint256",
2890                "internalType": "BN254.BaseField"
2891              },
2892              {
2893                "name": "y",
2894                "type": "uint256",
2895                "internalType": "BN254.BaseField"
2896              }
2897            ]
2898          },
2899          {
2900            "name": "qH1",
2901            "type": "tuple",
2902            "internalType": "struct BN254.G1Point",
2903            "components": [
2904              {
2905                "name": "x",
2906                "type": "uint256",
2907                "internalType": "BN254.BaseField"
2908              },
2909              {
2910                "name": "y",
2911                "type": "uint256",
2912                "internalType": "BN254.BaseField"
2913              }
2914            ]
2915          },
2916          {
2917            "name": "qH2",
2918            "type": "tuple",
2919            "internalType": "struct BN254.G1Point",
2920            "components": [
2921              {
2922                "name": "x",
2923                "type": "uint256",
2924                "internalType": "BN254.BaseField"
2925              },
2926              {
2927                "name": "y",
2928                "type": "uint256",
2929                "internalType": "BN254.BaseField"
2930              }
2931            ]
2932          },
2933          {
2934            "name": "qH3",
2935            "type": "tuple",
2936            "internalType": "struct BN254.G1Point",
2937            "components": [
2938              {
2939                "name": "x",
2940                "type": "uint256",
2941                "internalType": "BN254.BaseField"
2942              },
2943              {
2944                "name": "y",
2945                "type": "uint256",
2946                "internalType": "BN254.BaseField"
2947              }
2948            ]
2949          },
2950          {
2951            "name": "qH4",
2952            "type": "tuple",
2953            "internalType": "struct BN254.G1Point",
2954            "components": [
2955              {
2956                "name": "x",
2957                "type": "uint256",
2958                "internalType": "BN254.BaseField"
2959              },
2960              {
2961                "name": "y",
2962                "type": "uint256",
2963                "internalType": "BN254.BaseField"
2964              }
2965            ]
2966          },
2967          {
2968            "name": "qEcc",
2969            "type": "tuple",
2970            "internalType": "struct BN254.G1Point",
2971            "components": [
2972              {
2973                "name": "x",
2974                "type": "uint256",
2975                "internalType": "BN254.BaseField"
2976              },
2977              {
2978                "name": "y",
2979                "type": "uint256",
2980                "internalType": "BN254.BaseField"
2981              }
2982            ]
2983          },
2984          {
2985            "name": "g2LSB",
2986            "type": "bytes32",
2987            "internalType": "bytes32"
2988          },
2989          {
2990            "name": "g2MSB",
2991            "type": "bytes32",
2992            "internalType": "bytes32"
2993          }
2994        ]
2995      }
2996    ],
2997    "stateMutability": "pure"
2998  },
2999  {
3000    "type": "function",
3001    "name": "blocksPerEpoch",
3002    "inputs": [],
3003    "outputs": [
3004      {
3005        "name": "",
3006        "type": "uint64",
3007        "internalType": "uint64"
3008      }
3009    ],
3010    "stateMutability": "view"
3011  },
3012  {
3013    "type": "function",
3014    "name": "currentBlockNumber",
3015    "inputs": [],
3016    "outputs": [
3017      {
3018        "name": "",
3019        "type": "uint256",
3020        "internalType": "uint256"
3021      }
3022    ],
3023    "stateMutability": "view"
3024  },
3025  {
3026    "type": "function",
3027    "name": "currentEpoch",
3028    "inputs": [],
3029    "outputs": [
3030      {
3031        "name": "",
3032        "type": "uint64",
3033        "internalType": "uint64"
3034      }
3035    ],
3036    "stateMutability": "view"
3037  },
3038  {
3039    "type": "function",
3040    "name": "disablePermissionedProverMode",
3041    "inputs": [],
3042    "outputs": [],
3043    "stateMutability": "nonpayable"
3044  },
3045  {
3046    "type": "function",
3047    "name": "epochFromBlockNumber",
3048    "inputs": [
3049      {
3050        "name": "_blockNum",
3051        "type": "uint64",
3052        "internalType": "uint64"
3053      },
3054      {
3055        "name": "_blocksPerEpoch",
3056        "type": "uint64",
3057        "internalType": "uint64"
3058      }
3059    ],
3060    "outputs": [
3061      {
3062        "name": "",
3063        "type": "uint64",
3064        "internalType": "uint64"
3065      }
3066    ],
3067    "stateMutability": "pure"
3068  },
3069  {
3070    "type": "function",
3071    "name": "epochStartBlock",
3072    "inputs": [],
3073    "outputs": [
3074      {
3075        "name": "",
3076        "type": "uint64",
3077        "internalType": "uint64"
3078      }
3079    ],
3080    "stateMutability": "view"
3081  },
3082  {
3083    "type": "function",
3084    "name": "finalizedState",
3085    "inputs": [],
3086    "outputs": [
3087      {
3088        "name": "viewNum",
3089        "type": "uint64",
3090        "internalType": "uint64"
3091      },
3092      {
3093        "name": "blockHeight",
3094        "type": "uint64",
3095        "internalType": "uint64"
3096      },
3097      {
3098        "name": "blockCommRoot",
3099        "type": "uint256",
3100        "internalType": "BN254.ScalarField"
3101      }
3102    ],
3103    "stateMutability": "view"
3104  },
3105  {
3106    "type": "function",
3107    "name": "genesisStakeTableState",
3108    "inputs": [],
3109    "outputs": [
3110      {
3111        "name": "threshold",
3112        "type": "uint256",
3113        "internalType": "uint256"
3114      },
3115      {
3116        "name": "blsKeyComm",
3117        "type": "uint256",
3118        "internalType": "BN254.ScalarField"
3119      },
3120      {
3121        "name": "schnorrKeyComm",
3122        "type": "uint256",
3123        "internalType": "BN254.ScalarField"
3124      },
3125      {
3126        "name": "amountComm",
3127        "type": "uint256",
3128        "internalType": "BN254.ScalarField"
3129      }
3130    ],
3131    "stateMutability": "view"
3132  },
3133  {
3134    "type": "function",
3135    "name": "genesisState",
3136    "inputs": [],
3137    "outputs": [
3138      {
3139        "name": "viewNum",
3140        "type": "uint64",
3141        "internalType": "uint64"
3142      },
3143      {
3144        "name": "blockHeight",
3145        "type": "uint64",
3146        "internalType": "uint64"
3147      },
3148      {
3149        "name": "blockCommRoot",
3150        "type": "uint256",
3151        "internalType": "BN254.ScalarField"
3152      }
3153    ],
3154    "stateMutability": "view"
3155  },
3156  {
3157    "type": "function",
3158    "name": "getHotShotCommitment",
3159    "inputs": [
3160      {
3161        "name": "hotShotBlockHeight",
3162        "type": "uint256",
3163        "internalType": "uint256"
3164      }
3165    ],
3166    "outputs": [
3167      {
3168        "name": "hotShotBlockCommRoot",
3169        "type": "uint256",
3170        "internalType": "BN254.ScalarField"
3171      },
3172      {
3173        "name": "hotshotBlockHeight",
3174        "type": "uint64",
3175        "internalType": "uint64"
3176      }
3177    ],
3178    "stateMutability": "view"
3179  },
3180  {
3181    "type": "function",
3182    "name": "getStateHistoryCount",
3183    "inputs": [],
3184    "outputs": [
3185      {
3186        "name": "",
3187        "type": "uint256",
3188        "internalType": "uint256"
3189      }
3190    ],
3191    "stateMutability": "view"
3192  },
3193  {
3194    "type": "function",
3195    "name": "getVersion",
3196    "inputs": [],
3197    "outputs": [
3198      {
3199        "name": "majorVersion",
3200        "type": "uint8",
3201        "internalType": "uint8"
3202      },
3203      {
3204        "name": "minorVersion",
3205        "type": "uint8",
3206        "internalType": "uint8"
3207      },
3208      {
3209        "name": "patchVersion",
3210        "type": "uint8",
3211        "internalType": "uint8"
3212      }
3213    ],
3214    "stateMutability": "pure"
3215  },
3216  {
3217    "type": "function",
3218    "name": "initialize",
3219    "inputs": [
3220      {
3221        "name": "_genesis",
3222        "type": "tuple",
3223        "internalType": "struct LightClient.LightClientState",
3224        "components": [
3225          {
3226            "name": "viewNum",
3227            "type": "uint64",
3228            "internalType": "uint64"
3229          },
3230          {
3231            "name": "blockHeight",
3232            "type": "uint64",
3233            "internalType": "uint64"
3234          },
3235          {
3236            "name": "blockCommRoot",
3237            "type": "uint256",
3238            "internalType": "BN254.ScalarField"
3239          }
3240        ]
3241      },
3242      {
3243        "name": "_genesisStakeTableState",
3244        "type": "tuple",
3245        "internalType": "struct LightClient.StakeTableState",
3246        "components": [
3247          {
3248            "name": "threshold",
3249            "type": "uint256",
3250            "internalType": "uint256"
3251          },
3252          {
3253            "name": "blsKeyComm",
3254            "type": "uint256",
3255            "internalType": "BN254.ScalarField"
3256          },
3257          {
3258            "name": "schnorrKeyComm",
3259            "type": "uint256",
3260            "internalType": "BN254.ScalarField"
3261          },
3262          {
3263            "name": "amountComm",
3264            "type": "uint256",
3265            "internalType": "BN254.ScalarField"
3266          }
3267        ]
3268      },
3269      {
3270        "name": "_stateHistoryRetentionPeriod",
3271        "type": "uint32",
3272        "internalType": "uint32"
3273      },
3274      {
3275        "name": "owner",
3276        "type": "address",
3277        "internalType": "address"
3278      }
3279    ],
3280    "outputs": [],
3281    "stateMutability": "nonpayable"
3282  },
3283  {
3284    "type": "function",
3285    "name": "initializeV2",
3286    "inputs": [
3287      {
3288        "name": "_blocksPerEpoch",
3289        "type": "uint64",
3290        "internalType": "uint64"
3291      },
3292      {
3293        "name": "_epochStartBlock",
3294        "type": "uint64",
3295        "internalType": "uint64"
3296      }
3297    ],
3298    "outputs": [],
3299    "stateMutability": "nonpayable"
3300  },
3301  {
3302    "type": "function",
3303    "name": "isEpochRoot",
3304    "inputs": [
3305      {
3306        "name": "blockHeight",
3307        "type": "uint64",
3308        "internalType": "uint64"
3309      }
3310    ],
3311    "outputs": [
3312      {
3313        "name": "",
3314        "type": "bool",
3315        "internalType": "bool"
3316      }
3317    ],
3318    "stateMutability": "view"
3319  },
3320  {
3321    "type": "function",
3322    "name": "isGtEpochRoot",
3323    "inputs": [
3324      {
3325        "name": "blockHeight",
3326        "type": "uint64",
3327        "internalType": "uint64"
3328      }
3329    ],
3330    "outputs": [
3331      {
3332        "name": "",
3333        "type": "bool",
3334        "internalType": "bool"
3335      }
3336    ],
3337    "stateMutability": "view"
3338  },
3339  {
3340    "type": "function",
3341    "name": "isPermissionedProverEnabled",
3342    "inputs": [],
3343    "outputs": [
3344      {
3345        "name": "",
3346        "type": "bool",
3347        "internalType": "bool"
3348      }
3349    ],
3350    "stateMutability": "view"
3351  },
3352  {
3353    "type": "function",
3354    "name": "lagOverEscapeHatchThreshold",
3355    "inputs": [
3356      {
3357        "name": "blockNumber",
3358        "type": "uint256",
3359        "internalType": "uint256"
3360      },
3361      {
3362        "name": "blockThreshold",
3363        "type": "uint256",
3364        "internalType": "uint256"
3365      }
3366    ],
3367    "outputs": [
3368      {
3369        "name": "",
3370        "type": "bool",
3371        "internalType": "bool"
3372      }
3373    ],
3374    "stateMutability": "view"
3375  },
3376  {
3377    "type": "function",
3378    "name": "newFinalizedState",
3379    "inputs": [
3380      {
3381        "name": "",
3382        "type": "tuple",
3383        "internalType": "struct LightClient.LightClientState",
3384        "components": [
3385          {
3386            "name": "viewNum",
3387            "type": "uint64",
3388            "internalType": "uint64"
3389          },
3390          {
3391            "name": "blockHeight",
3392            "type": "uint64",
3393            "internalType": "uint64"
3394          },
3395          {
3396            "name": "blockCommRoot",
3397            "type": "uint256",
3398            "internalType": "BN254.ScalarField"
3399          }
3400        ]
3401      },
3402      {
3403        "name": "",
3404        "type": "tuple",
3405        "internalType": "struct IPlonkVerifier.PlonkProof",
3406        "components": [
3407          {
3408            "name": "wire0",
3409            "type": "tuple",
3410            "internalType": "struct BN254.G1Point",
3411            "components": [
3412              {
3413                "name": "x",
3414                "type": "uint256",
3415                "internalType": "BN254.BaseField"
3416              },
3417              {
3418                "name": "y",
3419                "type": "uint256",
3420                "internalType": "BN254.BaseField"
3421              }
3422            ]
3423          },
3424          {
3425            "name": "wire1",
3426            "type": "tuple",
3427            "internalType": "struct BN254.G1Point",
3428            "components": [
3429              {
3430                "name": "x",
3431                "type": "uint256",
3432                "internalType": "BN254.BaseField"
3433              },
3434              {
3435                "name": "y",
3436                "type": "uint256",
3437                "internalType": "BN254.BaseField"
3438              }
3439            ]
3440          },
3441          {
3442            "name": "wire2",
3443            "type": "tuple",
3444            "internalType": "struct BN254.G1Point",
3445            "components": [
3446              {
3447                "name": "x",
3448                "type": "uint256",
3449                "internalType": "BN254.BaseField"
3450              },
3451              {
3452                "name": "y",
3453                "type": "uint256",
3454                "internalType": "BN254.BaseField"
3455              }
3456            ]
3457          },
3458          {
3459            "name": "wire3",
3460            "type": "tuple",
3461            "internalType": "struct BN254.G1Point",
3462            "components": [
3463              {
3464                "name": "x",
3465                "type": "uint256",
3466                "internalType": "BN254.BaseField"
3467              },
3468              {
3469                "name": "y",
3470                "type": "uint256",
3471                "internalType": "BN254.BaseField"
3472              }
3473            ]
3474          },
3475          {
3476            "name": "wire4",
3477            "type": "tuple",
3478            "internalType": "struct BN254.G1Point",
3479            "components": [
3480              {
3481                "name": "x",
3482                "type": "uint256",
3483                "internalType": "BN254.BaseField"
3484              },
3485              {
3486                "name": "y",
3487                "type": "uint256",
3488                "internalType": "BN254.BaseField"
3489              }
3490            ]
3491          },
3492          {
3493            "name": "prodPerm",
3494            "type": "tuple",
3495            "internalType": "struct BN254.G1Point",
3496            "components": [
3497              {
3498                "name": "x",
3499                "type": "uint256",
3500                "internalType": "BN254.BaseField"
3501              },
3502              {
3503                "name": "y",
3504                "type": "uint256",
3505                "internalType": "BN254.BaseField"
3506              }
3507            ]
3508          },
3509          {
3510            "name": "split0",
3511            "type": "tuple",
3512            "internalType": "struct BN254.G1Point",
3513            "components": [
3514              {
3515                "name": "x",
3516                "type": "uint256",
3517                "internalType": "BN254.BaseField"
3518              },
3519              {
3520                "name": "y",
3521                "type": "uint256",
3522                "internalType": "BN254.BaseField"
3523              }
3524            ]
3525          },
3526          {
3527            "name": "split1",
3528            "type": "tuple",
3529            "internalType": "struct BN254.G1Point",
3530            "components": [
3531              {
3532                "name": "x",
3533                "type": "uint256",
3534                "internalType": "BN254.BaseField"
3535              },
3536              {
3537                "name": "y",
3538                "type": "uint256",
3539                "internalType": "BN254.BaseField"
3540              }
3541            ]
3542          },
3543          {
3544            "name": "split2",
3545            "type": "tuple",
3546            "internalType": "struct BN254.G1Point",
3547            "components": [
3548              {
3549                "name": "x",
3550                "type": "uint256",
3551                "internalType": "BN254.BaseField"
3552              },
3553              {
3554                "name": "y",
3555                "type": "uint256",
3556                "internalType": "BN254.BaseField"
3557              }
3558            ]
3559          },
3560          {
3561            "name": "split3",
3562            "type": "tuple",
3563            "internalType": "struct BN254.G1Point",
3564            "components": [
3565              {
3566                "name": "x",
3567                "type": "uint256",
3568                "internalType": "BN254.BaseField"
3569              },
3570              {
3571                "name": "y",
3572                "type": "uint256",
3573                "internalType": "BN254.BaseField"
3574              }
3575            ]
3576          },
3577          {
3578            "name": "split4",
3579            "type": "tuple",
3580            "internalType": "struct BN254.G1Point",
3581            "components": [
3582              {
3583                "name": "x",
3584                "type": "uint256",
3585                "internalType": "BN254.BaseField"
3586              },
3587              {
3588                "name": "y",
3589                "type": "uint256",
3590                "internalType": "BN254.BaseField"
3591              }
3592            ]
3593          },
3594          {
3595            "name": "zeta",
3596            "type": "tuple",
3597            "internalType": "struct BN254.G1Point",
3598            "components": [
3599              {
3600                "name": "x",
3601                "type": "uint256",
3602                "internalType": "BN254.BaseField"
3603              },
3604              {
3605                "name": "y",
3606                "type": "uint256",
3607                "internalType": "BN254.BaseField"
3608              }
3609            ]
3610          },
3611          {
3612            "name": "zetaOmega",
3613            "type": "tuple",
3614            "internalType": "struct BN254.G1Point",
3615            "components": [
3616              {
3617                "name": "x",
3618                "type": "uint256",
3619                "internalType": "BN254.BaseField"
3620              },
3621              {
3622                "name": "y",
3623                "type": "uint256",
3624                "internalType": "BN254.BaseField"
3625              }
3626            ]
3627          },
3628          {
3629            "name": "wireEval0",
3630            "type": "uint256",
3631            "internalType": "BN254.ScalarField"
3632          },
3633          {
3634            "name": "wireEval1",
3635            "type": "uint256",
3636            "internalType": "BN254.ScalarField"
3637          },
3638          {
3639            "name": "wireEval2",
3640            "type": "uint256",
3641            "internalType": "BN254.ScalarField"
3642          },
3643          {
3644            "name": "wireEval3",
3645            "type": "uint256",
3646            "internalType": "BN254.ScalarField"
3647          },
3648          {
3649            "name": "wireEval4",
3650            "type": "uint256",
3651            "internalType": "BN254.ScalarField"
3652          },
3653          {
3654            "name": "sigmaEval0",
3655            "type": "uint256",
3656            "internalType": "BN254.ScalarField"
3657          },
3658          {
3659            "name": "sigmaEval1",
3660            "type": "uint256",
3661            "internalType": "BN254.ScalarField"
3662          },
3663          {
3664            "name": "sigmaEval2",
3665            "type": "uint256",
3666            "internalType": "BN254.ScalarField"
3667          },
3668          {
3669            "name": "sigmaEval3",
3670            "type": "uint256",
3671            "internalType": "BN254.ScalarField"
3672          },
3673          {
3674            "name": "prodPermZetaOmegaEval",
3675            "type": "uint256",
3676            "internalType": "BN254.ScalarField"
3677          }
3678        ]
3679      }
3680    ],
3681    "outputs": [],
3682    "stateMutability": "pure"
3683  },
3684  {
3685    "type": "function",
3686    "name": "newFinalizedState",
3687    "inputs": [
3688      {
3689        "name": "newState",
3690        "type": "tuple",
3691        "internalType": "struct LightClient.LightClientState",
3692        "components": [
3693          {
3694            "name": "viewNum",
3695            "type": "uint64",
3696            "internalType": "uint64"
3697          },
3698          {
3699            "name": "blockHeight",
3700            "type": "uint64",
3701            "internalType": "uint64"
3702          },
3703          {
3704            "name": "blockCommRoot",
3705            "type": "uint256",
3706            "internalType": "BN254.ScalarField"
3707          }
3708        ]
3709      },
3710      {
3711        "name": "nextStakeTable",
3712        "type": "tuple",
3713        "internalType": "struct LightClient.StakeTableState",
3714        "components": [
3715          {
3716            "name": "threshold",
3717            "type": "uint256",
3718            "internalType": "uint256"
3719          },
3720          {
3721            "name": "blsKeyComm",
3722            "type": "uint256",
3723            "internalType": "BN254.ScalarField"
3724          },
3725          {
3726            "name": "schnorrKeyComm",
3727            "type": "uint256",
3728            "internalType": "BN254.ScalarField"
3729          },
3730          {
3731            "name": "amountComm",
3732            "type": "uint256",
3733            "internalType": "BN254.ScalarField"
3734          }
3735        ]
3736      },
3737      {
3738        "name": "proof",
3739        "type": "tuple",
3740        "internalType": "struct IPlonkVerifier.PlonkProof",
3741        "components": [
3742          {
3743            "name": "wire0",
3744            "type": "tuple",
3745            "internalType": "struct BN254.G1Point",
3746            "components": [
3747              {
3748                "name": "x",
3749                "type": "uint256",
3750                "internalType": "BN254.BaseField"
3751              },
3752              {
3753                "name": "y",
3754                "type": "uint256",
3755                "internalType": "BN254.BaseField"
3756              }
3757            ]
3758          },
3759          {
3760            "name": "wire1",
3761            "type": "tuple",
3762            "internalType": "struct BN254.G1Point",
3763            "components": [
3764              {
3765                "name": "x",
3766                "type": "uint256",
3767                "internalType": "BN254.BaseField"
3768              },
3769              {
3770                "name": "y",
3771                "type": "uint256",
3772                "internalType": "BN254.BaseField"
3773              }
3774            ]
3775          },
3776          {
3777            "name": "wire2",
3778            "type": "tuple",
3779            "internalType": "struct BN254.G1Point",
3780            "components": [
3781              {
3782                "name": "x",
3783                "type": "uint256",
3784                "internalType": "BN254.BaseField"
3785              },
3786              {
3787                "name": "y",
3788                "type": "uint256",
3789                "internalType": "BN254.BaseField"
3790              }
3791            ]
3792          },
3793          {
3794            "name": "wire3",
3795            "type": "tuple",
3796            "internalType": "struct BN254.G1Point",
3797            "components": [
3798              {
3799                "name": "x",
3800                "type": "uint256",
3801                "internalType": "BN254.BaseField"
3802              },
3803              {
3804                "name": "y",
3805                "type": "uint256",
3806                "internalType": "BN254.BaseField"
3807              }
3808            ]
3809          },
3810          {
3811            "name": "wire4",
3812            "type": "tuple",
3813            "internalType": "struct BN254.G1Point",
3814            "components": [
3815              {
3816                "name": "x",
3817                "type": "uint256",
3818                "internalType": "BN254.BaseField"
3819              },
3820              {
3821                "name": "y",
3822                "type": "uint256",
3823                "internalType": "BN254.BaseField"
3824              }
3825            ]
3826          },
3827          {
3828            "name": "prodPerm",
3829            "type": "tuple",
3830            "internalType": "struct BN254.G1Point",
3831            "components": [
3832              {
3833                "name": "x",
3834                "type": "uint256",
3835                "internalType": "BN254.BaseField"
3836              },
3837              {
3838                "name": "y",
3839                "type": "uint256",
3840                "internalType": "BN254.BaseField"
3841              }
3842            ]
3843          },
3844          {
3845            "name": "split0",
3846            "type": "tuple",
3847            "internalType": "struct BN254.G1Point",
3848            "components": [
3849              {
3850                "name": "x",
3851                "type": "uint256",
3852                "internalType": "BN254.BaseField"
3853              },
3854              {
3855                "name": "y",
3856                "type": "uint256",
3857                "internalType": "BN254.BaseField"
3858              }
3859            ]
3860          },
3861          {
3862            "name": "split1",
3863            "type": "tuple",
3864            "internalType": "struct BN254.G1Point",
3865            "components": [
3866              {
3867                "name": "x",
3868                "type": "uint256",
3869                "internalType": "BN254.BaseField"
3870              },
3871              {
3872                "name": "y",
3873                "type": "uint256",
3874                "internalType": "BN254.BaseField"
3875              }
3876            ]
3877          },
3878          {
3879            "name": "split2",
3880            "type": "tuple",
3881            "internalType": "struct BN254.G1Point",
3882            "components": [
3883              {
3884                "name": "x",
3885                "type": "uint256",
3886                "internalType": "BN254.BaseField"
3887              },
3888              {
3889                "name": "y",
3890                "type": "uint256",
3891                "internalType": "BN254.BaseField"
3892              }
3893            ]
3894          },
3895          {
3896            "name": "split3",
3897            "type": "tuple",
3898            "internalType": "struct BN254.G1Point",
3899            "components": [
3900              {
3901                "name": "x",
3902                "type": "uint256",
3903                "internalType": "BN254.BaseField"
3904              },
3905              {
3906                "name": "y",
3907                "type": "uint256",
3908                "internalType": "BN254.BaseField"
3909              }
3910            ]
3911          },
3912          {
3913            "name": "split4",
3914            "type": "tuple",
3915            "internalType": "struct BN254.G1Point",
3916            "components": [
3917              {
3918                "name": "x",
3919                "type": "uint256",
3920                "internalType": "BN254.BaseField"
3921              },
3922              {
3923                "name": "y",
3924                "type": "uint256",
3925                "internalType": "BN254.BaseField"
3926              }
3927            ]
3928          },
3929          {
3930            "name": "zeta",
3931            "type": "tuple",
3932            "internalType": "struct BN254.G1Point",
3933            "components": [
3934              {
3935                "name": "x",
3936                "type": "uint256",
3937                "internalType": "BN254.BaseField"
3938              },
3939              {
3940                "name": "y",
3941                "type": "uint256",
3942                "internalType": "BN254.BaseField"
3943              }
3944            ]
3945          },
3946          {
3947            "name": "zetaOmega",
3948            "type": "tuple",
3949            "internalType": "struct BN254.G1Point",
3950            "components": [
3951              {
3952                "name": "x",
3953                "type": "uint256",
3954                "internalType": "BN254.BaseField"
3955              },
3956              {
3957                "name": "y",
3958                "type": "uint256",
3959                "internalType": "BN254.BaseField"
3960              }
3961            ]
3962          },
3963          {
3964            "name": "wireEval0",
3965            "type": "uint256",
3966            "internalType": "BN254.ScalarField"
3967          },
3968          {
3969            "name": "wireEval1",
3970            "type": "uint256",
3971            "internalType": "BN254.ScalarField"
3972          },
3973          {
3974            "name": "wireEval2",
3975            "type": "uint256",
3976            "internalType": "BN254.ScalarField"
3977          },
3978          {
3979            "name": "wireEval3",
3980            "type": "uint256",
3981            "internalType": "BN254.ScalarField"
3982          },
3983          {
3984            "name": "wireEval4",
3985            "type": "uint256",
3986            "internalType": "BN254.ScalarField"
3987          },
3988          {
3989            "name": "sigmaEval0",
3990            "type": "uint256",
3991            "internalType": "BN254.ScalarField"
3992          },
3993          {
3994            "name": "sigmaEval1",
3995            "type": "uint256",
3996            "internalType": "BN254.ScalarField"
3997          },
3998          {
3999            "name": "sigmaEval2",
4000            "type": "uint256",
4001            "internalType": "BN254.ScalarField"
4002          },
4003          {
4004            "name": "sigmaEval3",
4005            "type": "uint256",
4006            "internalType": "BN254.ScalarField"
4007          },
4008          {
4009            "name": "prodPermZetaOmegaEval",
4010            "type": "uint256",
4011            "internalType": "BN254.ScalarField"
4012          }
4013        ]
4014      }
4015    ],
4016    "outputs": [],
4017    "stateMutability": "nonpayable"
4018  },
4019  {
4020    "type": "function",
4021    "name": "owner",
4022    "inputs": [],
4023    "outputs": [
4024      {
4025        "name": "",
4026        "type": "address",
4027        "internalType": "address"
4028      }
4029    ],
4030    "stateMutability": "view"
4031  },
4032  {
4033    "type": "function",
4034    "name": "permissionedProver",
4035    "inputs": [],
4036    "outputs": [
4037      {
4038        "name": "",
4039        "type": "address",
4040        "internalType": "address"
4041      }
4042    ],
4043    "stateMutability": "view"
4044  },
4045  {
4046    "type": "function",
4047    "name": "proxiableUUID",
4048    "inputs": [],
4049    "outputs": [
4050      {
4051        "name": "",
4052        "type": "bytes32",
4053        "internalType": "bytes32"
4054      }
4055    ],
4056    "stateMutability": "view"
4057  },
4058  {
4059    "type": "function",
4060    "name": "renounceOwnership",
4061    "inputs": [],
4062    "outputs": [],
4063    "stateMutability": "nonpayable"
4064  },
4065  {
4066    "type": "function",
4067    "name": "setPermissionedProver",
4068    "inputs": [
4069      {
4070        "name": "prover",
4071        "type": "address",
4072        "internalType": "address"
4073      }
4074    ],
4075    "outputs": [],
4076    "stateMutability": "nonpayable"
4077  },
4078  {
4079    "type": "function",
4080    "name": "setStateHistoryRetentionPeriod",
4081    "inputs": [
4082      {
4083        "name": "historySeconds",
4084        "type": "uint32",
4085        "internalType": "uint32"
4086      }
4087    ],
4088    "outputs": [],
4089    "stateMutability": "nonpayable"
4090  },
4091  {
4092    "type": "function",
4093    "name": "setstateHistoryRetentionPeriod",
4094    "inputs": [
4095      {
4096        "name": "historySeconds",
4097        "type": "uint32",
4098        "internalType": "uint32"
4099      }
4100    ],
4101    "outputs": [],
4102    "stateMutability": "nonpayable"
4103  },
4104  {
4105    "type": "function",
4106    "name": "stateHistoryCommitments",
4107    "inputs": [
4108      {
4109        "name": "",
4110        "type": "uint256",
4111        "internalType": "uint256"
4112      }
4113    ],
4114    "outputs": [
4115      {
4116        "name": "l1BlockHeight",
4117        "type": "uint64",
4118        "internalType": "uint64"
4119      },
4120      {
4121        "name": "l1BlockTimestamp",
4122        "type": "uint64",
4123        "internalType": "uint64"
4124      },
4125      {
4126        "name": "hotShotBlockHeight",
4127        "type": "uint64",
4128        "internalType": "uint64"
4129      },
4130      {
4131        "name": "hotShotBlockCommRoot",
4132        "type": "uint256",
4133        "internalType": "BN254.ScalarField"
4134      }
4135    ],
4136    "stateMutability": "view"
4137  },
4138  {
4139    "type": "function",
4140    "name": "stateHistoryFirstIndex",
4141    "inputs": [],
4142    "outputs": [
4143      {
4144        "name": "",
4145        "type": "uint64",
4146        "internalType": "uint64"
4147      }
4148    ],
4149    "stateMutability": "view"
4150  },
4151  {
4152    "type": "function",
4153    "name": "stateHistoryRetentionPeriod",
4154    "inputs": [],
4155    "outputs": [
4156      {
4157        "name": "",
4158        "type": "uint32",
4159        "internalType": "uint32"
4160      }
4161    ],
4162    "stateMutability": "view"
4163  },
4164  {
4165    "type": "function",
4166    "name": "transferOwnership",
4167    "inputs": [
4168      {
4169        "name": "newOwner",
4170        "type": "address",
4171        "internalType": "address"
4172      }
4173    ],
4174    "outputs": [],
4175    "stateMutability": "nonpayable"
4176  },
4177  {
4178    "type": "function",
4179    "name": "updateEpochStartBlock",
4180    "inputs": [
4181      {
4182        "name": "newEpochStartBlock",
4183        "type": "uint64",
4184        "internalType": "uint64"
4185      }
4186    ],
4187    "outputs": [],
4188    "stateMutability": "nonpayable"
4189  },
4190  {
4191    "type": "function",
4192    "name": "upgradeToAndCall",
4193    "inputs": [
4194      {
4195        "name": "newImplementation",
4196        "type": "address",
4197        "internalType": "address"
4198      },
4199      {
4200        "name": "data",
4201        "type": "bytes",
4202        "internalType": "bytes"
4203      }
4204    ],
4205    "outputs": [],
4206    "stateMutability": "payable"
4207  },
4208  {
4209    "type": "function",
4210    "name": "votingStakeTableState",
4211    "inputs": [],
4212    "outputs": [
4213      {
4214        "name": "threshold",
4215        "type": "uint256",
4216        "internalType": "uint256"
4217      },
4218      {
4219        "name": "blsKeyComm",
4220        "type": "uint256",
4221        "internalType": "BN254.ScalarField"
4222      },
4223      {
4224        "name": "schnorrKeyComm",
4225        "type": "uint256",
4226        "internalType": "BN254.ScalarField"
4227      },
4228      {
4229        "name": "amountComm",
4230        "type": "uint256",
4231        "internalType": "BN254.ScalarField"
4232      }
4233    ],
4234    "stateMutability": "view"
4235  },
4236  {
4237    "type": "event",
4238    "name": "Initialized",
4239    "inputs": [
4240      {
4241        "name": "version",
4242        "type": "uint64",
4243        "indexed": false,
4244        "internalType": "uint64"
4245      }
4246    ],
4247    "anonymous": false
4248  },
4249  {
4250    "type": "event",
4251    "name": "NewEpoch",
4252    "inputs": [
4253      {
4254        "name": "epoch",
4255        "type": "uint64",
4256        "indexed": false,
4257        "internalType": "uint64"
4258      }
4259    ],
4260    "anonymous": false
4261  },
4262  {
4263    "type": "event",
4264    "name": "NewState",
4265    "inputs": [
4266      {
4267        "name": "viewNum",
4268        "type": "uint64",
4269        "indexed": true,
4270        "internalType": "uint64"
4271      },
4272      {
4273        "name": "blockHeight",
4274        "type": "uint64",
4275        "indexed": true,
4276        "internalType": "uint64"
4277      },
4278      {
4279        "name": "blockCommRoot",
4280        "type": "uint256",
4281        "indexed": false,
4282        "internalType": "BN254.ScalarField"
4283      }
4284    ],
4285    "anonymous": false
4286  },
4287  {
4288    "type": "event",
4289    "name": "OwnershipTransferred",
4290    "inputs": [
4291      {
4292        "name": "previousOwner",
4293        "type": "address",
4294        "indexed": true,
4295        "internalType": "address"
4296      },
4297      {
4298        "name": "newOwner",
4299        "type": "address",
4300        "indexed": true,
4301        "internalType": "address"
4302      }
4303    ],
4304    "anonymous": false
4305  },
4306  {
4307    "type": "event",
4308    "name": "PermissionedProverNotRequired",
4309    "inputs": [],
4310    "anonymous": false
4311  },
4312  {
4313    "type": "event",
4314    "name": "PermissionedProverRequired",
4315    "inputs": [
4316      {
4317        "name": "permissionedProver",
4318        "type": "address",
4319        "indexed": false,
4320        "internalType": "address"
4321      }
4322    ],
4323    "anonymous": false
4324  },
4325  {
4326    "type": "event",
4327    "name": "Upgrade",
4328    "inputs": [
4329      {
4330        "name": "implementation",
4331        "type": "address",
4332        "indexed": false,
4333        "internalType": "address"
4334      }
4335    ],
4336    "anonymous": false
4337  },
4338  {
4339    "type": "event",
4340    "name": "Upgraded",
4341    "inputs": [
4342      {
4343        "name": "implementation",
4344        "type": "address",
4345        "indexed": true,
4346        "internalType": "address"
4347      }
4348    ],
4349    "anonymous": false
4350  },
4351  {
4352    "type": "error",
4353    "name": "AddressEmptyCode",
4354    "inputs": [
4355      {
4356        "name": "target",
4357        "type": "address",
4358        "internalType": "address"
4359      }
4360    ]
4361  },
4362  {
4363    "type": "error",
4364    "name": "DeprecatedApi",
4365    "inputs": []
4366  },
4367  {
4368    "type": "error",
4369    "name": "ERC1967InvalidImplementation",
4370    "inputs": [
4371      {
4372        "name": "implementation",
4373        "type": "address",
4374        "internalType": "address"
4375      }
4376    ]
4377  },
4378  {
4379    "type": "error",
4380    "name": "ERC1967NonPayable",
4381    "inputs": []
4382  },
4383  {
4384    "type": "error",
4385    "name": "FailedInnerCall",
4386    "inputs": []
4387  },
4388  {
4389    "type": "error",
4390    "name": "InsufficientSnapshotHistory",
4391    "inputs": []
4392  },
4393  {
4394    "type": "error",
4395    "name": "InvalidAddress",
4396    "inputs": []
4397  },
4398  {
4399    "type": "error",
4400    "name": "InvalidArgs",
4401    "inputs": []
4402  },
4403  {
4404    "type": "error",
4405    "name": "InvalidHotShotBlockForCommitmentCheck",
4406    "inputs": []
4407  },
4408  {
4409    "type": "error",
4410    "name": "InvalidInitialization",
4411    "inputs": []
4412  },
4413  {
4414    "type": "error",
4415    "name": "InvalidMaxStateHistory",
4416    "inputs": []
4417  },
4418  {
4419    "type": "error",
4420    "name": "InvalidProof",
4421    "inputs": []
4422  },
4423  {
4424    "type": "error",
4425    "name": "MissingEpochRootUpdate",
4426    "inputs": []
4427  },
4428  {
4429    "type": "error",
4430    "name": "NoChangeRequired",
4431    "inputs": []
4432  },
4433  {
4434    "type": "error",
4435    "name": "NotInitializing",
4436    "inputs": []
4437  },
4438  {
4439    "type": "error",
4440    "name": "OutdatedState",
4441    "inputs": []
4442  },
4443  {
4444    "type": "error",
4445    "name": "OwnableInvalidOwner",
4446    "inputs": [
4447      {
4448        "name": "owner",
4449        "type": "address",
4450        "internalType": "address"
4451      }
4452    ]
4453  },
4454  {
4455    "type": "error",
4456    "name": "OwnableUnauthorizedAccount",
4457    "inputs": [
4458      {
4459        "name": "account",
4460        "type": "address",
4461        "internalType": "address"
4462      }
4463    ]
4464  },
4465  {
4466    "type": "error",
4467    "name": "ProverNotPermissioned",
4468    "inputs": []
4469  },
4470  {
4471    "type": "error",
4472    "name": "UUPSUnauthorizedCallContext",
4473    "inputs": []
4474  },
4475  {
4476    "type": "error",
4477    "name": "UUPSUnsupportedProxiableUUID",
4478    "inputs": [
4479      {
4480        "name": "slot",
4481        "type": "bytes32",
4482        "internalType": "bytes32"
4483      }
4484    ]
4485  },
4486  {
4487    "type": "error",
4488    "name": "WrongStakeTableUsed",
4489    "inputs": []
4490  }
4491]
4492```*/
4493#[allow(
4494    non_camel_case_types,
4495    non_snake_case,
4496    clippy::pub_underscore_fields,
4497    clippy::style,
4498    clippy::empty_structs_with_brackets
4499)]
4500pub mod LightClientArbitrumV2 {
4501    use alloy::sol_types as alloy_sol_types;
4502
4503    use super::*;
4504    /// The creation / init bytecode of the contract.
4505    ///
4506    /// ```text
4507    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516134c46100f95f395f8181611b7c01528181611ba50152611d2201526134c45ff3fe608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106ff578063e03033011461072e578063f06820541461074d578063f2fde38b1461076c578063f9e50d191461078b575f5ffd5b80639fdb54a714610616578063ad3cb1cc1461066b578063b33bc491146106a8578063c23b9e9e146106c7575f5ffd5b80638584d23f116100e35780638584d23f146105415780638da5cb5b1461057d57806390c14390146105b957806396c1ca61146105d85780639baa3cc9146105f7575f5ffd5b8063715018a6146104db578063757c37ad146104ef578063766718081461050e578063826e41fc14610522575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d319414610460578063433dba9f146104815780634f1ef286146104a057806352d1902d146104b357806369cc6a04146104c7575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b1461043a575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a6102253660046127a1565b61079f565b005b348015610237575f5ffd5b5061024b6102463660046127ba565b610852565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a61089b565b60405161028091906127d1565b348015610322575f5ffd5b5061022a6103313660046129e8565b6108b0565b348015610341575f5ffd5b5061022a610350366004612caa565b610927565b348015610360575f5ffd5b5061037461036f3660046129e8565b610940565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc3660046129e8565b6109a2565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b5061042c610a10565b604051908152602001610280565b348015610445575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b34801561046b575f5ffd5b505f546001546002546003546102ab9392919084565b34801561048c575f5ffd5b5061022a61049b366004612cf1565b610a72565b61022a6104ae366004612d0a565b610a86565b3480156104be575f5ffd5b5061042c610aa5565b3480156104d2575f5ffd5b5061022a610ac0565b3480156104e6575f5ffd5b5061022a610b2e565b3480156104fa575f5ffd5b5061022a610509366004612e0d565b610b3f565b348015610519575f5ffd5b506103aa610e79565b34801561052d575f5ffd5b506008546001600160a01b03161515610374565b34801561054c575f5ffd5b5061056061055b3660046127ba565b610e9e565b604080519283526001600160401b03909116602083015201610280565b348015610588575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105c4575f5ffd5b506103aa6105d3366004612e51565b610fc9565b3480156105e3575f5ffd5b5061022a6105f2366004612cf1565b61103e565b348015610602575f5ffd5b5061022a610611366004612e79565b6110c7565b348015610621575f5ffd5b50600654600754610645916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610676575f5ffd5b5061069b604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612ece565b3480156106b3575f5ffd5b5061022a6106c2366004612e51565b6111e9565b3480156106d2575f5ffd5b506008546106ea90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b34801561070a575f5ffd5b50600454600554610645916001600160401b0380821692600160401b909204169083565b348015610739575f5ffd5b50610374610748366004612f03565b61134d565b348015610758575f5ffd5b50600a546103aa906001600160401b031681565b348015610777575f5ffd5b5061022a6107863660046127a1565b6114ac565b348015610796575f5ffd5b5060095461042c565b6107a76114eb565b6001600160a01b0381166107ce5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107fd5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610861575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6108a3612507565b6108ab611546565b905090565b6108b86114eb565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108fe94919091048116928116911617610fc9565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109605750600a546001600160401b0316155b1561096c57505f919050565b600a546001600160401b0316610983836005612f37565b61098d9190612f6a565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109c25750600a546001600160401b0316155b156109ce57505f919050565b600a546109e6906005906001600160401b0316612f97565b600a546001600160401b0391821691610a00911684612f6a565b6001600160401b03161192915050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ab9190612fb6565b610a7a6114eb565b610a838161103e565b50565b610a8e611b71565b610a9782611c15565b610aa18282611c56565b5050565b5f610aae611d17565b505f5160206134985f395f51905f5290565b610ac86114eb565b6008546001600160a01b031615610b1357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b366114eb565b610b2c5f611d60565b6008546001600160a01b031615158015610b6457506008546001600160a01b03163314155b15610b82576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610bbb575060065460208401516001600160401b03600160401b9092048216911611155b15610bd95760405163051c46ef60e01b815260040160405180910390fd5b610be68360400151611dd0565b610bf38260200151611dd0565b610c008260400151611dd0565b610c0d8260600151611dd0565b5f610c16610e79565b6020850151600a549192505f91610c3691906001600160401b0316610fc9565b600a549091506001600160401b03600160801b909104811690821610610c8157610c6385602001516109a2565b15610c815760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d34576002610cab8383612f97565b6001600160401b031610610cd25760405163080ae8d960e01b815260040160405180910390fd5b610cdd826001612f37565b6001600160401b0316816001600160401b0316148015610d165750600654610d1490600160401b90046001600160401b0316610940565b155b15610d345760405163080ae8d960e01b815260040160405180910390fd5b610d3f858585611e40565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d9e5750610d9e8560200151610940565b15610e08578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dec826001612f37565b6040516001600160401b03909116815260200160405180910390a15b610e1a610e13610a10565b4287611fb7565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e6a91815260200190565b60405180910390a35050505050565b600654600a545f916108ab916001600160401b03600160401b90920482169116610fc9565b600980545f91829190610eb2600183612fcd565b81548110610ec257610ec2612fe0565b5f918252602090912060029091020154600160801b90046001600160401b03168410610f0157604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610fc2578460098281548110610f3157610f31612fe0565b5f918252602090912060029091020154600160801b90046001600160401b03161115610fba5760098181548110610f6a57610f6a612fe0565b905f5260205f2090600202016001015460098281548110610f8d57610f8d612fe0565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610f15565b5050915091565b5f816001600160401b03165f03610fe157505f611038565b826001600160401b03165f03610ff957506001611038565b6110038284612f6a565b6001600160401b03165f036110235761101c8284612ff4565b9050611038565b61102d8284612ff4565b61101c906001612f37565b92915050565b6110466114eb565b610e108163ffffffff16108061106557506301e133808163ffffffff16115b80611083575060085463ffffffff600160a01b909104811690821611155b156110a1576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561110b5750825b90505f826001600160401b031660011480156111265750303b155b905081158015611134575080155b156111525760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561117c57845460ff60401b1916600160401b1785555b611185866121a0565b61118d6121b1565b6111988989896121b9565b83156111de57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611232575080546001600160401b03808416911610155b156112505760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611298576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112e18385610fc9565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9061135a610a10565b841180611365575080155b806113af5750600854600980549091600160c01b90046001600160401b031690811061139357611393612fe0565b5f9182526020909120600290910201546001600160401b031684105b156113cd5760405163b0b4387760e01b815260040160405180910390fd5b5f80806113db600185612fcd565b90505b8161147757600854600160c01b90046001600160401b0316811061147757866009828154811061141057611410612fe0565b5f9182526020909120600290910201546001600160401b03161161146557600191506009818154811061144557611445612fe0565b5f9182526020909120600290910201546001600160401b03169250611477565b8061146f81613021565b9150506113de565b816114955760405163b0b4387760e01b815260040160405180910390fd5b856114a08489612fcd565b11979650505050505050565b6114b46114eb565b6001600160a01b0381166114e257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a8381611d60565b3361151d7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b2c5760405163118cdaa760e01b81523360048201526024016114d9565b61154e612507565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611bf757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611beb5f5160206134985f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610b2c5760405163703e46dd60e11b815260040160405180910390fd5b611c1d6114eb565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610847565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611cb0575060408051601f3d908101601f19168201909252611cad91810190612fb6565b60015b611cd857604051634c9c8ce360e01b81526001600160a01b03831660048201526024016114d9565b5f5160206134985f395f51905f528114611d0857604051632a87526960e21b8152600481018290526024016114d9565b611d1283836122e5565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2c5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610aa15760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c64000000000060448201526064016114d9565b5f611e4961089b565b9050611e5361276c565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611ec35750611ec38560200151610940565b15611ef557602084015160e0820152604084015161010082015260608401516101208201528351610140820152611f19565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611f5490859085908890600401613218565b602060405180830381865af4158015611f6f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f939190613438565b611fb0576040516309bde33960e01b815260040160405180910390fd5b5050505050565b6009541580159061202c575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611ff757611ff7612fe0565b5f91825260209091206002909102015461202190600160401b90046001600160401b031684612f97565b6001600160401b0316115b156120bf57600854600980549091600160c01b90046001600160401b031690811061205957612059612fe0565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861209983613457565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6121a861233a565b610a8381612383565b610b2c61233a565b82516001600160401b03161515806121dd575060208301516001600160401b031615155b806121ea57506020820151155b806121f757506040820151155b8061220457506060820151155b8061220e57508151155b806122205750610e108163ffffffff16105b8061223457506301e133808163ffffffff16115b15612252576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6122ee8261238b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561233257611d1282826123ee565b610aa1612460565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b2c57604051631afcd79f60e31b815260040160405180910390fd5b6114b461233a565b806001600160a01b03163b5f036123c057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016114d9565b5f5160206134985f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161240a9190613481565b5f60405180830381855af49150503d805f8114612442576040519150601f19603f3d011682016040523d82523d5f602084013e612447565b606091505b509150915061245785838361247f565b95945050505050565b3415610b2c5760405163b398979f60e01b815260040160405180910390fd5b6060826124945761248f826124de565b6124d7565b81511580156124ab57506001600160a01b0384163b155b156124d457604051639996b31560e01b81526001600160a01b03851660048201526024016114d9565b50805b9392505050565b8051156124ee5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161253a60405180604001604052805f81526020015f81525090565b815260200161255a60405180604001604052805f81526020015f81525090565b815260200161257a60405180604001604052805f81526020015f81525090565b815260200161259a60405180604001604052805f81526020015f81525090565b81526020016125ba60405180604001604052805f81526020015f81525090565b81526020016125da60405180604001604052805f81526020015f81525090565b81526020016125fa60405180604001604052805f81526020015f81525090565b815260200161261a60405180604001604052805f81526020015f81525090565b815260200161263a60405180604001604052805f81526020015f81525090565b815260200161265a60405180604001604052805f81526020015f81525090565b815260200161267a60405180604001604052805f81526020015f81525090565b815260200161269a60405180604001604052805f81526020015f81525090565b81526020016126ba60405180604001604052805f81526020015f81525090565b81526020016126da60405180604001604052805f81526020015f81525090565b81526020016126fa60405180604001604052805f81526020015f81525090565b815260200161271a60405180604001604052805f81526020015f81525090565b815260200161273a60405180604001604052805f81526020015f81525090565b815260200161275a60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b038116811461099d575f5ffd5b5f602082840312156127b1575f5ffd5b6124d78261278b565b5f602082840312156127ca575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612803604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461099d575f5ffd5b5f602082840312156129f8575f5ffd5b6124d7826129d2565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612a3857612a38612a01565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a6657612a66612a01565b604052919050565b5f60608284031215612a7e575f5ffd5b604051606081016001600160401b0381118282101715612aa057612aa0612a01565b604052905080612aaf836129d2565b8152612abd602084016129d2565b6020820152604092830135920191909152919050565b5f60408284031215612ae3575f5ffd5b604080519081016001600160401b0381118282101715612b0557612b05612a01565b604052823581526020928301359281019290925250919050565b5f6104808284031215612b30575f5ffd5b612b38612a15565b9050612b448383612ad3565b8152612b538360408401612ad3565b6020820152612b658360808401612ad3565b6040820152612b778360c08401612ad3565b6060820152612b8a836101008401612ad3565b6080820152612b9d836101408401612ad3565b60a0820152612bb0836101808401612ad3565b60c0820152612bc3836101c08401612ad3565b60e0820152612bd6836102008401612ad3565b610100820152612bea836102408401612ad3565b610120820152612bfe836102808401612ad3565b610140820152612c12836102c08401612ad3565b610160820152612c26836103008401612ad3565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612cbc575f5ffd5b612cc68484612a6e565b9150612cd58460608501612b1f565b90509250929050565b803563ffffffff8116811461099d575f5ffd5b5f60208284031215612d01575f5ffd5b6124d782612cde565b5f5f60408385031215612d1b575f5ffd5b612d248361278b565b915060208301356001600160401b03811115612d3e575f5ffd5b8301601f81018513612d4e575f5ffd5b80356001600160401b03811115612d6757612d67612a01565b612d7a601f8201601f1916602001612a3e565b818152866020838501011115612d8e575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612dbd575f5ffd5b604051608081016001600160401b0381118282101715612ddf57612ddf612a01565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612e20575f5ffd5b612e2a8585612a6e565b9250612e398560608601612dad565b9150612e488560e08601612b1f565b90509250925092565b5f5f60408385031215612e62575f5ffd5b612e6b836129d2565b9150612cd5602084016129d2565b5f5f5f5f6101208587031215612e8d575f5ffd5b612e978686612a6e565b9350612ea68660608701612dad565b9250612eb460e08601612cde565b9150612ec3610100860161278b565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612f14575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216019081111561103857611038612f23565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f8257612f82612f56565b806001600160401b0384160691505092915050565b6001600160401b03828116828216039081111561103857611038612f23565b5f60208284031215612fc6575f5ffd5b5051919050565b8181038181111561103857611038612f23565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061300c5761300c612f56565b806001600160401b0384160491505092915050565b5f8161302f5761302f612f23565b505f190190565b805f5b600b811015613058578151845260209384019390910190600101613039565b50505050565b61307382825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae0820190508451825260208501516020830152604085015161324a604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613422610500830185613036565b61343061066083018461305e565b949350505050565b5f60208284031215613448575f5ffd5b815180151581146124d7575f5ffd5b5f6001600160401b0382166001600160401b03810361347857613478612f23565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4508    /// ```
4509    #[rustfmt::skip]
4510    #[allow(clippy::all)]
4511    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4512        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa4\xC4a\0\xF9_9_\x81\x81a\x1B|\x01R\x81\x81a\x1B\xA5\x01Ra\x1D\"\x01Ra4\xC4_\xF3\xFE`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xFFW\x80c\xE003\x01\x14a\x07.W\x80c\xF0h T\x14a\x07MW\x80c\xF2\xFD\xE3\x8B\x14a\x07lW\x80c\xF9\xE5\r\x19\x14a\x07\x8BW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x16W\x80c\xAD<\xB1\xCC\x14a\x06kW\x80c\xB3;\xC4\x91\x14a\x06\xA8W\x80c\xC2;\x9E\x9E\x14a\x06\xC7W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05AW\x80c\x8D\xA5\xCB[\x14a\x05}W\x80c\x90\xC1C\x90\x14a\x05\xB9W\x80c\x96\xC1\xCAa\x14a\x05\xD8W\x80c\x9B\xAA<\xC9\x14a\x05\xF7W__\xFD[\x80cqP\x18\xA6\x14a\x04\xDBW\x80cu|7\xAD\x14a\x04\xEFW\x80cvg\x18\x08\x14a\x05\x0EW\x80c\x82nA\xFC\x14a\x05\"W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04`W\x80cC=\xBA\x9F\x14a\x04\x81W\x80cO\x1E\xF2\x86\x14a\x04\xA0W\x80cR\xD1\x90-\x14a\x04\xB3W\x80ci\xCCj\x04\x14a\x04\xC7W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x04:W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'\xA1V[a\x07\x9FV[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'\xBAV[a\x08RV[`@Qa\x02\x80\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x9BV[`@Qa\x02\x80\x91\x90a'\xD1V[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)\xE8V[a\x08\xB0V[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,\xAAV[a\t'V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)\xE8V[a\t@V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)\xE8V[a\t\xA2V[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[Pa\x04,a\n\x10V[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04EW__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04kW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x8CW__\xFD[Pa\x02*a\x04\x9B6`\x04a,\xF1V[a\nrV[a\x02*a\x04\xAE6`\x04a-\nV[a\n\x86V[4\x80\x15a\x04\xBEW__\xFD[Pa\x04,a\n\xA5V[4\x80\x15a\x04\xD2W__\xFD[Pa\x02*a\n\xC0V[4\x80\x15a\x04\xE6W__\xFD[Pa\x02*a\x0B.V[4\x80\x15a\x04\xFAW__\xFD[Pa\x02*a\x05\t6`\x04a.\rV[a\x0B?V[4\x80\x15a\x05\x19W__\xFD[Pa\x03\xAAa\x0EyV[4\x80\x15a\x05-W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05LW__\xFD[Pa\x05`a\x05[6`\x04a'\xBAV[a\x0E\x9EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x88W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\0V[4\x80\x15a\x05\xC4W__\xFD[Pa\x03\xAAa\x05\xD36`\x04a.QV[a\x0F\xC9V[4\x80\x15a\x05\xE3W__\xFD[Pa\x02*a\x05\xF26`\x04a,\xF1V[a\x10>V[4\x80\x15a\x06\x02W__\xFD[Pa\x02*a\x06\x116`\x04a.yV[a\x10\xC7V[4\x80\x15a\x06!W__\xFD[P`\x06T`\x07Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\x80V[4\x80\x15a\x06vW__\xFD[Pa\x06\x9B`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.\xCEV[4\x80\x15a\x06\xB3W__\xFD[Pa\x02*a\x06\xC26`\x04a.QV[a\x11\xE9V[4\x80\x15a\x06\xD2W__\xFD[P`\x08Ta\x06\xEA\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\nW__\xFD[P`\x04T`\x05Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x079W__\xFD[Pa\x03ta\x07H6`\x04a/\x03V[a\x13MV[4\x80\x15a\x07XW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07wW__\xFD[Pa\x02*a\x07\x866`\x04a'\xA1V[a\x14\xACV[4\x80\x15a\x07\x96W__\xFD[P`\tTa\x04,V[a\x07\xA7a\x14\xEBV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xCEW`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\xFDW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08aW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x08\xA3a%\x07V[a\x08\xABa\x15FV[\x90P\x90V[a\x08\xB8a\x14\xEBV[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x08\xFE\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\xC9V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t`WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tlWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\x83\x83`\x05a/7V[a\t\x8D\x91\x90a/jV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xC2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCEWP_\x91\x90PV[`\nTa\t\xE6\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/\x97V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\0\x91\x16\x84a/jV[`\x01`\x01`@\x1B\x03\x16\x11\x92\x91PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nNW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAB\x91\x90a/\xB6V[a\nza\x14\xEBV[a\n\x83\x81a\x10>V[PV[a\n\x8Ea\x1BqV[a\n\x97\x82a\x1C\x15V[a\n\xA1\x82\x82a\x1CVV[PPV[_a\n\xAEa\x1D\x17V[P_Q` a4\x98_9_Q\x90_R\x90V[a\n\xC8a\x14\xEBV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\x13W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0B6a\x14\xEBV[a\x0B,_a\x1D`V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0BdWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0B\x82W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x0B\xBBWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\xD9W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xE6\x83`@\x01Qa\x1D\xD0V[a\x0B\xF3\x82` \x01Qa\x1D\xD0V[a\x0C\0\x82`@\x01Qa\x1D\xD0V[a\x0C\r\x82``\x01Qa\x1D\xD0V[_a\x0C\x16a\x0EyV[` \x85\x01Q`\nT\x91\x92P_\x91a\x0C6\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\xC9V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C\x81Wa\x0Cc\x85` \x01Qa\t\xA2V[\x15a\x0C\x81W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\r4W`\x02a\x0C\xAB\x83\x83a/\x97V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\xD2W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xDD\x82`\x01a/7V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\r\x16WP`\x06Ta\r\x14\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t@V[\x15[\x15a\r4W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r?\x85\x85\x85a\x1E@V[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\r\x9EWPa\r\x9E\x85` \x01Qa\t@V[\x15a\x0E\x08W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\r\xEC\x82`\x01a/7V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x0E\x1Aa\x0E\x13a\n\x10V[B\x87a\x1F\xB7V[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0Ej\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xAB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\xC9V[`\t\x80T_\x91\x82\x91\x90a\x0E\xB2`\x01\x83a/\xCDV[\x81T\x81\x10a\x0E\xC2Wa\x0E\xC2a/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0F\x01W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\x0F\xC2W\x84`\t\x82\x81T\x81\x10a\x0F1Wa\x0F1a/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\xBAW`\t\x81\x81T\x81\x10a\x0FjWa\x0Fja/\xE0V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0F\x8DWa\x0F\x8Da/\xE0V[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x0F\x15V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xE1WP_a\x108V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xF9WP`\x01a\x108V[a\x10\x03\x82\x84a/jV[`\x01`\x01`@\x1B\x03\x16_\x03a\x10#Wa\x10\x1C\x82\x84a/\xF4V[\x90Pa\x108V[a\x10-\x82\x84a/\xF4V[a\x10\x1C\x90`\x01a/7V[\x92\x91PPV[a\x10Fa\x14\xEBV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10eWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10\x83WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10\xA1W`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x11\x0BWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x11&WP0;\x15[\x90P\x81\x15\x80\x15a\x114WP\x80\x15[\x15a\x11RW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x11|W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11\x85\x86a!\xA0V[a\x11\x8Da!\xB1V[a\x11\x98\x89\x89\x89a!\xB9V[\x83\x15a\x11\xDEW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x122WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12PW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x12\x98W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x12\xE1\x83\x85a\x0F\xC9V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90a\x13Za\n\x10V[\x84\x11\x80a\x13eWP\x80\x15[\x80a\x13\xAFWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13\x93Wa\x13\x93a/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13\xCDW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\xDB`\x01\x85a/\xCDV[\x90P[\x81a\x14wW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14wW\x86`\t\x82\x81T\x81\x10a\x14\x10Wa\x14\x10a/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14eW`\x01\x91P`\t\x81\x81T\x81\x10a\x14EWa\x14Ea/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14wV[\x80a\x14o\x81a0!V[\x91PPa\x13\xDEV[\x81a\x14\x95W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14\xA0\x84\x89a/\xCDV[\x11\x97\x96PPPPPPPV[a\x14\xB4a\x14\xEBV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\xE2W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n\x83\x81a\x1D`V[3a\x15\x1D\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0B,W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\xD9V[a\x15Na%\x07V[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\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\x16\x14\x80a\x1B\xF7WP\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\x16a\x1B\xEB_Q` a4\x98_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0B,W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\x1Da\x14\xEBV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08GV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1C\xB0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1C\xAD\x91\x81\x01\x90a/\xB6V[`\x01[a\x1C\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\xD9V[_Q` a4\x98_9_Q\x90_R\x81\x14a\x1D\x08W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\xD9V[a\x1D\x12\x83\x83a\"\xE5V[PPPV[0`\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\x16\x14a\x0B,W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x14\xD9V[_a\x1EIa\x08\x9BV[\x90Pa\x1ESa'lV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1E\xC3WPa\x1E\xC3\x85` \x01Qa\t@V[\x15a\x1E\xF5W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1F\x19V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1FT\x90\x85\x90\x85\x90\x88\x90`\x04\x01a2\x18V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1FoW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\x93\x91\x90a48V[a\x1F\xB0W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a ,WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F\xF7Wa\x1F\xF7a/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta !\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/\x97V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a \xBFW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a YWa Ya/\xE0V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a \x99\x83a4WV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a!\xA8a#:V[a\n\x83\x81a#\x83V[a\x0B,a#:V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\xDDWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\xEAWP` \x82\x01Q\x15[\x80a!\xF7WP`@\x82\x01Q\x15[\x80a\"\x04WP``\x82\x01Q\x15[\x80a\"\x0EWP\x81Q\x15[\x80a\" WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"4WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\"RW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[a\"\xEE\x82a#\x8BV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a#2Wa\x1D\x12\x82\x82a#\xEEV[a\n\xA1a$`V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x0B,W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\xB4a#:V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#\xC0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\xD9V[_Q` a4\x98_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa$\n\x91\x90a4\x81V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a$BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a$GV[``\x91P[P\x91P\x91Pa$W\x85\x83\x83a$\x7FV[\x95\x94PPPPPV[4\x15a\x0B,W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$\x94Wa$\x8F\x82a$\xDEV[a$\xD7V[\x81Q\x15\x80\x15a$\xABWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$\xD4W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\xD9V[P\x80[\x93\x92PPPV[\x80Q\x15a$\xEEW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a%:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a':`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a'\xB1W__\xFD[a$\xD7\x82a'\x8BV[_` \x82\x84\x03\x12\x15a'\xCAW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa(\x03`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a)\xF8W__\xFD[a$\xD7\x82a)\xD2V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*8Wa*8a*\x01V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*fWa*fa*\x01V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*~W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\xA0Wa*\xA0a*\x01V[`@R\x90P\x80a*\xAF\x83a)\xD2V[\x81Ra*\xBD` \x84\x01a)\xD2V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*\xE3W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x05Wa+\x05a*\x01V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a+0W__\xFD[a+8a*\x15V[\x90Pa+D\x83\x83a*\xD3V[\x81Ra+S\x83`@\x84\x01a*\xD3V[` \x82\x01Ra+e\x83`\x80\x84\x01a*\xD3V[`@\x82\x01Ra+w\x83`\xC0\x84\x01a*\xD3V[``\x82\x01Ra+\x8A\x83a\x01\0\x84\x01a*\xD3V[`\x80\x82\x01Ra+\x9D\x83a\x01@\x84\x01a*\xD3V[`\xA0\x82\x01Ra+\xB0\x83a\x01\x80\x84\x01a*\xD3V[`\xC0\x82\x01Ra+\xC3\x83a\x01\xC0\x84\x01a*\xD3V[`\xE0\x82\x01Ra+\xD6\x83a\x02\0\x84\x01a*\xD3V[a\x01\0\x82\x01Ra+\xEA\x83a\x02@\x84\x01a*\xD3V[a\x01 \x82\x01Ra+\xFE\x83a\x02\x80\x84\x01a*\xD3V[a\x01@\x82\x01Ra,\x12\x83a\x02\xC0\x84\x01a*\xD3V[a\x01`\x82\x01Ra,&\x83a\x03\0\x84\x01a*\xD3V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a,\xBCW__\xFD[a,\xC6\x84\x84a*nV[\x91Pa,\xD5\x84``\x85\x01a+\x1FV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a-\x01W__\xFD[a$\xD7\x82a,\xDEV[__`@\x83\x85\x03\x12\x15a-\x1BW__\xFD[a-$\x83a'\x8BV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a->W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-NW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a-gWa-ga*\x01V[a-z`\x1F\x82\x01`\x1F\x19\x16` \x01a*>V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\x8EW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-\xBDW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\xDFWa-\xDFa*\x01V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a. W__\xFD[a.*\x85\x85a*nV[\x92Pa.9\x85``\x86\x01a-\xADV[\x91Pa.H\x85`\xE0\x86\x01a+\x1FV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a.bW__\xFD[a.k\x83a)\xD2V[\x91Pa,\xD5` \x84\x01a)\xD2V[____a\x01 \x85\x87\x03\x12\x15a.\x8DW__\xFD[a.\x97\x86\x86a*nV[\x93Pa.\xA6\x86``\x87\x01a-\xADV[\x92Pa.\xB4`\xE0\x86\x01a,\xDEV[\x91Pa.\xC3a\x01\0\x86\x01a'\x8BV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a/\x14W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x108Wa\x108a/#V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x82Wa/\x82a/VV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x108Wa\x108a/#V[_` \x82\x84\x03\x12\x15a/\xC6W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x108Wa\x108a/#V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a0\x0CWa0\x0Ca/VV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a0/Wa0/a/#V[P_\x19\x01\x90V[\x80_[`\x0B\x81\x10\x15a0XW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a09V[PPPPV[a0s\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa2J`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra4\"a\x05\0\x83\x01\x85a06V[a40a\x06`\x83\x01\x84a0^V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a4HW__\xFD[\x81Q\x80\x15\x15\x81\x14a$\xD7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4xWa4xa/#V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4513    );
4514    /// The runtime bytecode of the contract, as deployed on the network.
4515    ///
4516    /// ```text
4517    ///0x608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106ff578063e03033011461072e578063f06820541461074d578063f2fde38b1461076c578063f9e50d191461078b575f5ffd5b80639fdb54a714610616578063ad3cb1cc1461066b578063b33bc491146106a8578063c23b9e9e146106c7575f5ffd5b80638584d23f116100e35780638584d23f146105415780638da5cb5b1461057d57806390c14390146105b957806396c1ca61146105d85780639baa3cc9146105f7575f5ffd5b8063715018a6146104db578063757c37ad146104ef578063766718081461050e578063826e41fc14610522575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d319414610460578063433dba9f146104815780634f1ef286146104a057806352d1902d146104b357806369cc6a04146104c7575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b1461043a575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a6102253660046127a1565b61079f565b005b348015610237575f5ffd5b5061024b6102463660046127ba565b610852565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a61089b565b60405161028091906127d1565b348015610322575f5ffd5b5061022a6103313660046129e8565b6108b0565b348015610341575f5ffd5b5061022a610350366004612caa565b610927565b348015610360575f5ffd5b5061037461036f3660046129e8565b610940565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc3660046129e8565b6109a2565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b5061042c610a10565b604051908152602001610280565b348015610445575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b34801561046b575f5ffd5b505f546001546002546003546102ab9392919084565b34801561048c575f5ffd5b5061022a61049b366004612cf1565b610a72565b61022a6104ae366004612d0a565b610a86565b3480156104be575f5ffd5b5061042c610aa5565b3480156104d2575f5ffd5b5061022a610ac0565b3480156104e6575f5ffd5b5061022a610b2e565b3480156104fa575f5ffd5b5061022a610509366004612e0d565b610b3f565b348015610519575f5ffd5b506103aa610e79565b34801561052d575f5ffd5b506008546001600160a01b03161515610374565b34801561054c575f5ffd5b5061056061055b3660046127ba565b610e9e565b604080519283526001600160401b03909116602083015201610280565b348015610588575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105c4575f5ffd5b506103aa6105d3366004612e51565b610fc9565b3480156105e3575f5ffd5b5061022a6105f2366004612cf1565b61103e565b348015610602575f5ffd5b5061022a610611366004612e79565b6110c7565b348015610621575f5ffd5b50600654600754610645916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610676575f5ffd5b5061069b604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612ece565b3480156106b3575f5ffd5b5061022a6106c2366004612e51565b6111e9565b3480156106d2575f5ffd5b506008546106ea90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b34801561070a575f5ffd5b50600454600554610645916001600160401b0380821692600160401b909204169083565b348015610739575f5ffd5b50610374610748366004612f03565b61134d565b348015610758575f5ffd5b50600a546103aa906001600160401b031681565b348015610777575f5ffd5b5061022a6107863660046127a1565b6114ac565b348015610796575f5ffd5b5060095461042c565b6107a76114eb565b6001600160a01b0381166107ce5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107fd5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610861575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6108a3612507565b6108ab611546565b905090565b6108b86114eb565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108fe94919091048116928116911617610fc9565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109605750600a546001600160401b0316155b1561096c57505f919050565b600a546001600160401b0316610983836005612f37565b61098d9190612f6a565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109c25750600a546001600160401b0316155b156109ce57505f919050565b600a546109e6906005906001600160401b0316612f97565b600a546001600160401b0391821691610a00911684612f6a565b6001600160401b03161192915050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ab9190612fb6565b610a7a6114eb565b610a838161103e565b50565b610a8e611b71565b610a9782611c15565b610aa18282611c56565b5050565b5f610aae611d17565b505f5160206134985f395f51905f5290565b610ac86114eb565b6008546001600160a01b031615610b1357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b366114eb565b610b2c5f611d60565b6008546001600160a01b031615158015610b6457506008546001600160a01b03163314155b15610b82576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610bbb575060065460208401516001600160401b03600160401b9092048216911611155b15610bd95760405163051c46ef60e01b815260040160405180910390fd5b610be68360400151611dd0565b610bf38260200151611dd0565b610c008260400151611dd0565b610c0d8260600151611dd0565b5f610c16610e79565b6020850151600a549192505f91610c3691906001600160401b0316610fc9565b600a549091506001600160401b03600160801b909104811690821610610c8157610c6385602001516109a2565b15610c815760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d34576002610cab8383612f97565b6001600160401b031610610cd25760405163080ae8d960e01b815260040160405180910390fd5b610cdd826001612f37565b6001600160401b0316816001600160401b0316148015610d165750600654610d1490600160401b90046001600160401b0316610940565b155b15610d345760405163080ae8d960e01b815260040160405180910390fd5b610d3f858585611e40565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d9e5750610d9e8560200151610940565b15610e08578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dec826001612f37565b6040516001600160401b03909116815260200160405180910390a15b610e1a610e13610a10565b4287611fb7565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e6a91815260200190565b60405180910390a35050505050565b600654600a545f916108ab916001600160401b03600160401b90920482169116610fc9565b600980545f91829190610eb2600183612fcd565b81548110610ec257610ec2612fe0565b5f918252602090912060029091020154600160801b90046001600160401b03168410610f0157604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610fc2578460098281548110610f3157610f31612fe0565b5f918252602090912060029091020154600160801b90046001600160401b03161115610fba5760098181548110610f6a57610f6a612fe0565b905f5260205f2090600202016001015460098281548110610f8d57610f8d612fe0565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610f15565b5050915091565b5f816001600160401b03165f03610fe157505f611038565b826001600160401b03165f03610ff957506001611038565b6110038284612f6a565b6001600160401b03165f036110235761101c8284612ff4565b9050611038565b61102d8284612ff4565b61101c906001612f37565b92915050565b6110466114eb565b610e108163ffffffff16108061106557506301e133808163ffffffff16115b80611083575060085463ffffffff600160a01b909104811690821611155b156110a1576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561110b5750825b90505f826001600160401b031660011480156111265750303b155b905081158015611134575080155b156111525760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561117c57845460ff60401b1916600160401b1785555b611185866121a0565b61118d6121b1565b6111988989896121b9565b83156111de57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611232575080546001600160401b03808416911610155b156112505760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611298576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112e18385610fc9565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9061135a610a10565b841180611365575080155b806113af5750600854600980549091600160c01b90046001600160401b031690811061139357611393612fe0565b5f9182526020909120600290910201546001600160401b031684105b156113cd5760405163b0b4387760e01b815260040160405180910390fd5b5f80806113db600185612fcd565b90505b8161147757600854600160c01b90046001600160401b0316811061147757866009828154811061141057611410612fe0565b5f9182526020909120600290910201546001600160401b03161161146557600191506009818154811061144557611445612fe0565b5f9182526020909120600290910201546001600160401b03169250611477565b8061146f81613021565b9150506113de565b816114955760405163b0b4387760e01b815260040160405180910390fd5b856114a08489612fcd565b11979650505050505050565b6114b46114eb565b6001600160a01b0381166114e257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a8381611d60565b3361151d7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b2c5760405163118cdaa760e01b81523360048201526024016114d9565b61154e612507565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611bf757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611beb5f5160206134985f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610b2c5760405163703e46dd60e11b815260040160405180910390fd5b611c1d6114eb565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610847565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611cb0575060408051601f3d908101601f19168201909252611cad91810190612fb6565b60015b611cd857604051634c9c8ce360e01b81526001600160a01b03831660048201526024016114d9565b5f5160206134985f395f51905f528114611d0857604051632a87526960e21b8152600481018290526024016114d9565b611d1283836122e5565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2c5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610aa15760405162461bcd60e51b815260206004820152601b60248201527f426e3235343a20696e76616c6964207363616c6172206669656c64000000000060448201526064016114d9565b5f611e4961089b565b9050611e5361276c565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611ec35750611ec38560200151610940565b15611ef557602084015160e0820152604084015161010082015260608401516101208201528351610140820152611f19565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611f5490859085908890600401613218565b602060405180830381865af4158015611f6f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f939190613438565b611fb0576040516309bde33960e01b815260040160405180910390fd5b5050505050565b6009541580159061202c575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611ff757611ff7612fe0565b5f91825260209091206002909102015461202190600160401b90046001600160401b031684612f97565b6001600160401b0316115b156120bf57600854600980549091600160c01b90046001600160401b031690811061205957612059612fe0565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861209983613457565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6121a861233a565b610a8381612383565b610b2c61233a565b82516001600160401b03161515806121dd575060208301516001600160401b031615155b806121ea57506020820151155b806121f757506040820151155b8061220457506060820151155b8061220e57508151155b806122205750610e108163ffffffff16105b8061223457506301e133808163ffffffff16115b15612252576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6122ee8261238b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561233257611d1282826123ee565b610aa1612460565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b2c57604051631afcd79f60e31b815260040160405180910390fd5b6114b461233a565b806001600160a01b03163b5f036123c057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016114d9565b5f5160206134985f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161240a9190613481565b5f60405180830381855af49150503d805f8114612442576040519150601f19603f3d011682016040523d82523d5f602084013e612447565b606091505b509150915061245785838361247f565b95945050505050565b3415610b2c5760405163b398979f60e01b815260040160405180910390fd5b6060826124945761248f826124de565b6124d7565b81511580156124ab57506001600160a01b0384163b155b156124d457604051639996b31560e01b81526001600160a01b03851660048201526024016114d9565b50805b9392505050565b8051156124ee5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161253a60405180604001604052805f81526020015f81525090565b815260200161255a60405180604001604052805f81526020015f81525090565b815260200161257a60405180604001604052805f81526020015f81525090565b815260200161259a60405180604001604052805f81526020015f81525090565b81526020016125ba60405180604001604052805f81526020015f81525090565b81526020016125da60405180604001604052805f81526020015f81525090565b81526020016125fa60405180604001604052805f81526020015f81525090565b815260200161261a60405180604001604052805f81526020015f81525090565b815260200161263a60405180604001604052805f81526020015f81525090565b815260200161265a60405180604001604052805f81526020015f81525090565b815260200161267a60405180604001604052805f81526020015f81525090565b815260200161269a60405180604001604052805f81526020015f81525090565b81526020016126ba60405180604001604052805f81526020015f81525090565b81526020016126da60405180604001604052805f81526020015f81525090565b81526020016126fa60405180604001604052805f81526020015f81525090565b815260200161271a60405180604001604052805f81526020015f81525090565b815260200161273a60405180604001604052805f81526020015f81525090565b815260200161275a60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b038116811461099d575f5ffd5b5f602082840312156127b1575f5ffd5b6124d78261278b565b5f602082840312156127ca575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612803604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461099d575f5ffd5b5f602082840312156129f8575f5ffd5b6124d7826129d2565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612a3857612a38612a01565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a6657612a66612a01565b604052919050565b5f60608284031215612a7e575f5ffd5b604051606081016001600160401b0381118282101715612aa057612aa0612a01565b604052905080612aaf836129d2565b8152612abd602084016129d2565b6020820152604092830135920191909152919050565b5f60408284031215612ae3575f5ffd5b604080519081016001600160401b0381118282101715612b0557612b05612a01565b604052823581526020928301359281019290925250919050565b5f6104808284031215612b30575f5ffd5b612b38612a15565b9050612b448383612ad3565b8152612b538360408401612ad3565b6020820152612b658360808401612ad3565b6040820152612b778360c08401612ad3565b6060820152612b8a836101008401612ad3565b6080820152612b9d836101408401612ad3565b60a0820152612bb0836101808401612ad3565b60c0820152612bc3836101c08401612ad3565b60e0820152612bd6836102008401612ad3565b610100820152612bea836102408401612ad3565b610120820152612bfe836102808401612ad3565b610140820152612c12836102c08401612ad3565b610160820152612c26836103008401612ad3565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612cbc575f5ffd5b612cc68484612a6e565b9150612cd58460608501612b1f565b90509250929050565b803563ffffffff8116811461099d575f5ffd5b5f60208284031215612d01575f5ffd5b6124d782612cde565b5f5f60408385031215612d1b575f5ffd5b612d248361278b565b915060208301356001600160401b03811115612d3e575f5ffd5b8301601f81018513612d4e575f5ffd5b80356001600160401b03811115612d6757612d67612a01565b612d7a601f8201601f1916602001612a3e565b818152866020838501011115612d8e575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612dbd575f5ffd5b604051608081016001600160401b0381118282101715612ddf57612ddf612a01565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612e20575f5ffd5b612e2a8585612a6e565b9250612e398560608601612dad565b9150612e488560e08601612b1f565b90509250925092565b5f5f60408385031215612e62575f5ffd5b612e6b836129d2565b9150612cd5602084016129d2565b5f5f5f5f6101208587031215612e8d575f5ffd5b612e978686612a6e565b9350612ea68660608701612dad565b9250612eb460e08601612cde565b9150612ec3610100860161278b565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612f14575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216019081111561103857611038612f23565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f8257612f82612f56565b806001600160401b0384160691505092915050565b6001600160401b03828116828216039081111561103857611038612f23565b5f60208284031215612fc6575f5ffd5b5051919050565b8181038181111561103857611038612f23565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061300c5761300c612f56565b806001600160401b0384160491505092915050565b5f8161302f5761302f612f23565b505f190190565b805f5b600b811015613058578151845260209384019390910190600101613039565b50505050565b61307382825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae0820190508451825260208501516020830152604085015161324a604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613422610500830185613036565b61343061066083018461305e565b949350505050565b5f60208284031215613448575f5ffd5b815180151581146124d7575f5ffd5b5f6001600160401b0382166001600160401b03810361347857613478612f23565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4518    /// ```
4519    #[rustfmt::skip]
4520    #[allow(clippy::all)]
4521    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4522        b"`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xFFW\x80c\xE003\x01\x14a\x07.W\x80c\xF0h T\x14a\x07MW\x80c\xF2\xFD\xE3\x8B\x14a\x07lW\x80c\xF9\xE5\r\x19\x14a\x07\x8BW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x16W\x80c\xAD<\xB1\xCC\x14a\x06kW\x80c\xB3;\xC4\x91\x14a\x06\xA8W\x80c\xC2;\x9E\x9E\x14a\x06\xC7W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05AW\x80c\x8D\xA5\xCB[\x14a\x05}W\x80c\x90\xC1C\x90\x14a\x05\xB9W\x80c\x96\xC1\xCAa\x14a\x05\xD8W\x80c\x9B\xAA<\xC9\x14a\x05\xF7W__\xFD[\x80cqP\x18\xA6\x14a\x04\xDBW\x80cu|7\xAD\x14a\x04\xEFW\x80cvg\x18\x08\x14a\x05\x0EW\x80c\x82nA\xFC\x14a\x05\"W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04`W\x80cC=\xBA\x9F\x14a\x04\x81W\x80cO\x1E\xF2\x86\x14a\x04\xA0W\x80cR\xD1\x90-\x14a\x04\xB3W\x80ci\xCCj\x04\x14a\x04\xC7W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x04:W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'\xA1V[a\x07\x9FV[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'\xBAV[a\x08RV[`@Qa\x02\x80\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x9BV[`@Qa\x02\x80\x91\x90a'\xD1V[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)\xE8V[a\x08\xB0V[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,\xAAV[a\t'V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)\xE8V[a\t@V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)\xE8V[a\t\xA2V[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[Pa\x04,a\n\x10V[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04EW__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04kW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x8CW__\xFD[Pa\x02*a\x04\x9B6`\x04a,\xF1V[a\nrV[a\x02*a\x04\xAE6`\x04a-\nV[a\n\x86V[4\x80\x15a\x04\xBEW__\xFD[Pa\x04,a\n\xA5V[4\x80\x15a\x04\xD2W__\xFD[Pa\x02*a\n\xC0V[4\x80\x15a\x04\xE6W__\xFD[Pa\x02*a\x0B.V[4\x80\x15a\x04\xFAW__\xFD[Pa\x02*a\x05\t6`\x04a.\rV[a\x0B?V[4\x80\x15a\x05\x19W__\xFD[Pa\x03\xAAa\x0EyV[4\x80\x15a\x05-W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05LW__\xFD[Pa\x05`a\x05[6`\x04a'\xBAV[a\x0E\x9EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x88W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\0V[4\x80\x15a\x05\xC4W__\xFD[Pa\x03\xAAa\x05\xD36`\x04a.QV[a\x0F\xC9V[4\x80\x15a\x05\xE3W__\xFD[Pa\x02*a\x05\xF26`\x04a,\xF1V[a\x10>V[4\x80\x15a\x06\x02W__\xFD[Pa\x02*a\x06\x116`\x04a.yV[a\x10\xC7V[4\x80\x15a\x06!W__\xFD[P`\x06T`\x07Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\x80V[4\x80\x15a\x06vW__\xFD[Pa\x06\x9B`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.\xCEV[4\x80\x15a\x06\xB3W__\xFD[Pa\x02*a\x06\xC26`\x04a.QV[a\x11\xE9V[4\x80\x15a\x06\xD2W__\xFD[P`\x08Ta\x06\xEA\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\nW__\xFD[P`\x04T`\x05Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x079W__\xFD[Pa\x03ta\x07H6`\x04a/\x03V[a\x13MV[4\x80\x15a\x07XW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07wW__\xFD[Pa\x02*a\x07\x866`\x04a'\xA1V[a\x14\xACV[4\x80\x15a\x07\x96W__\xFD[P`\tTa\x04,V[a\x07\xA7a\x14\xEBV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xCEW`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\xFDW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08aW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x08\xA3a%\x07V[a\x08\xABa\x15FV[\x90P\x90V[a\x08\xB8a\x14\xEBV[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x08\xFE\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\xC9V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t`WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tlWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\x83\x83`\x05a/7V[a\t\x8D\x91\x90a/jV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xC2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCEWP_\x91\x90PV[`\nTa\t\xE6\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/\x97V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\0\x91\x16\x84a/jV[`\x01`\x01`@\x1B\x03\x16\x11\x92\x91PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nNW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAB\x91\x90a/\xB6V[a\nza\x14\xEBV[a\n\x83\x81a\x10>V[PV[a\n\x8Ea\x1BqV[a\n\x97\x82a\x1C\x15V[a\n\xA1\x82\x82a\x1CVV[PPV[_a\n\xAEa\x1D\x17V[P_Q` a4\x98_9_Q\x90_R\x90V[a\n\xC8a\x14\xEBV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B\x13W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x0B6a\x14\xEBV[a\x0B,_a\x1D`V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0BdWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0B\x82W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x0B\xBBWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\xD9W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xE6\x83`@\x01Qa\x1D\xD0V[a\x0B\xF3\x82` \x01Qa\x1D\xD0V[a\x0C\0\x82`@\x01Qa\x1D\xD0V[a\x0C\r\x82``\x01Qa\x1D\xD0V[_a\x0C\x16a\x0EyV[` \x85\x01Q`\nT\x91\x92P_\x91a\x0C6\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\xC9V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C\x81Wa\x0Cc\x85` \x01Qa\t\xA2V[\x15a\x0C\x81W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\r4W`\x02a\x0C\xAB\x83\x83a/\x97V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\xD2W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xDD\x82`\x01a/7V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\r\x16WP`\x06Ta\r\x14\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t@V[\x15[\x15a\r4W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r?\x85\x85\x85a\x1E@V[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\r\x9EWPa\r\x9E\x85` \x01Qa\t@V[\x15a\x0E\x08W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\r\xEC\x82`\x01a/7V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x0E\x1Aa\x0E\x13a\n\x10V[B\x87a\x1F\xB7V[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0Ej\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xAB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\xC9V[`\t\x80T_\x91\x82\x91\x90a\x0E\xB2`\x01\x83a/\xCDV[\x81T\x81\x10a\x0E\xC2Wa\x0E\xC2a/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0F\x01W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\x0F\xC2W\x84`\t\x82\x81T\x81\x10a\x0F1Wa\x0F1a/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\xBAW`\t\x81\x81T\x81\x10a\x0FjWa\x0Fja/\xE0V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0F\x8DWa\x0F\x8Da/\xE0V[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x0F\x15V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xE1WP_a\x108V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xF9WP`\x01a\x108V[a\x10\x03\x82\x84a/jV[`\x01`\x01`@\x1B\x03\x16_\x03a\x10#Wa\x10\x1C\x82\x84a/\xF4V[\x90Pa\x108V[a\x10-\x82\x84a/\xF4V[a\x10\x1C\x90`\x01a/7V[\x92\x91PPV[a\x10Fa\x14\xEBV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10eWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10\x83WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10\xA1W`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x11\x0BWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x11&WP0;\x15[\x90P\x81\x15\x80\x15a\x114WP\x80\x15[\x15a\x11RW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x11|W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11\x85\x86a!\xA0V[a\x11\x8Da!\xB1V[a\x11\x98\x89\x89\x89a!\xB9V[\x83\x15a\x11\xDEW\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x122WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12PW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x12\x98W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x12\xE1\x83\x85a\x0F\xC9V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90a\x13Za\n\x10V[\x84\x11\x80a\x13eWP\x80\x15[\x80a\x13\xAFWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13\x93Wa\x13\x93a/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13\xCDW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\xDB`\x01\x85a/\xCDV[\x90P[\x81a\x14wW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14wW\x86`\t\x82\x81T\x81\x10a\x14\x10Wa\x14\x10a/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14eW`\x01\x91P`\t\x81\x81T\x81\x10a\x14EWa\x14Ea/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14wV[\x80a\x14o\x81a0!V[\x91PPa\x13\xDEV[\x81a\x14\x95W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14\xA0\x84\x89a/\xCDV[\x11\x97\x96PPPPPPPV[a\x14\xB4a\x14\xEBV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\xE2W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n\x83\x81a\x1D`V[3a\x15\x1D\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0B,W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\xD9V[a\x15Na%\x07V[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\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\x16\x14\x80a\x1B\xF7WP\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\x16a\x1B\xEB_Q` a4\x98_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0B,W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C\x1Da\x14\xEBV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08GV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1C\xB0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1C\xAD\x91\x81\x01\x90a/\xB6V[`\x01[a\x1C\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\xD9V[_Q` a4\x98_9_Q\x90_R\x81\x14a\x1D\x08W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\xD9V[a\x1D\x12\x83\x83a\"\xE5V[PPPV[0`\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\x16\x14a\x0B,W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n\xA1W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1B`$\x82\x01R\x7FBn254: invalid scalar field\0\0\0\0\0`D\x82\x01R`d\x01a\x14\xD9V[_a\x1EIa\x08\x9BV[\x90Pa\x1ESa'lV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1E\xC3WPa\x1E\xC3\x85` \x01Qa\t@V[\x15a\x1E\xF5W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1F\x19V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1FT\x90\x85\x90\x85\x90\x88\x90`\x04\x01a2\x18V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1FoW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\x93\x91\x90a48V[a\x1F\xB0W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a ,WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F\xF7Wa\x1F\xF7a/\xE0V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta !\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/\x97V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a \xBFW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a YWa Ya/\xE0V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a \x99\x83a4WV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a!\xA8a#:V[a\n\x83\x81a#\x83V[a\x0B,a#:V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\xDDWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\xEAWP` \x82\x01Q\x15[\x80a!\xF7WP`@\x82\x01Q\x15[\x80a\"\x04WP``\x82\x01Q\x15[\x80a\"\x0EWP\x81Q\x15[\x80a\" WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"4WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\"RW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[a\"\xEE\x82a#\x8BV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a#2Wa\x1D\x12\x82\x82a#\xEEV[a\n\xA1a$`V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x0B,W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\xB4a#:V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#\xC0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\xD9V[_Q` a4\x98_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa$\n\x91\x90a4\x81V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a$BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a$GV[``\x91P[P\x91P\x91Pa$W\x85\x83\x83a$\x7FV[\x95\x94PPPPPV[4\x15a\x0B,W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$\x94Wa$\x8F\x82a$\xDEV[a$\xD7V[\x81Q\x15\x80\x15a$\xABWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$\xD4W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\xD9V[P\x80[\x93\x92PPPV[\x80Q\x15a$\xEEW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a%:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a':`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a'\xB1W__\xFD[a$\xD7\x82a'\x8BV[_` \x82\x84\x03\x12\x15a'\xCAW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa(\x03`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a)\xF8W__\xFD[a$\xD7\x82a)\xD2V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*8Wa*8a*\x01V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*fWa*fa*\x01V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*~W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\xA0Wa*\xA0a*\x01V[`@R\x90P\x80a*\xAF\x83a)\xD2V[\x81Ra*\xBD` \x84\x01a)\xD2V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*\xE3W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x05Wa+\x05a*\x01V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a+0W__\xFD[a+8a*\x15V[\x90Pa+D\x83\x83a*\xD3V[\x81Ra+S\x83`@\x84\x01a*\xD3V[` \x82\x01Ra+e\x83`\x80\x84\x01a*\xD3V[`@\x82\x01Ra+w\x83`\xC0\x84\x01a*\xD3V[``\x82\x01Ra+\x8A\x83a\x01\0\x84\x01a*\xD3V[`\x80\x82\x01Ra+\x9D\x83a\x01@\x84\x01a*\xD3V[`\xA0\x82\x01Ra+\xB0\x83a\x01\x80\x84\x01a*\xD3V[`\xC0\x82\x01Ra+\xC3\x83a\x01\xC0\x84\x01a*\xD3V[`\xE0\x82\x01Ra+\xD6\x83a\x02\0\x84\x01a*\xD3V[a\x01\0\x82\x01Ra+\xEA\x83a\x02@\x84\x01a*\xD3V[a\x01 \x82\x01Ra+\xFE\x83a\x02\x80\x84\x01a*\xD3V[a\x01@\x82\x01Ra,\x12\x83a\x02\xC0\x84\x01a*\xD3V[a\x01`\x82\x01Ra,&\x83a\x03\0\x84\x01a*\xD3V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a,\xBCW__\xFD[a,\xC6\x84\x84a*nV[\x91Pa,\xD5\x84``\x85\x01a+\x1FV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a-\x01W__\xFD[a$\xD7\x82a,\xDEV[__`@\x83\x85\x03\x12\x15a-\x1BW__\xFD[a-$\x83a'\x8BV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a->W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-NW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a-gWa-ga*\x01V[a-z`\x1F\x82\x01`\x1F\x19\x16` \x01a*>V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\x8EW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-\xBDW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\xDFWa-\xDFa*\x01V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a. W__\xFD[a.*\x85\x85a*nV[\x92Pa.9\x85``\x86\x01a-\xADV[\x91Pa.H\x85`\xE0\x86\x01a+\x1FV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a.bW__\xFD[a.k\x83a)\xD2V[\x91Pa,\xD5` \x84\x01a)\xD2V[____a\x01 \x85\x87\x03\x12\x15a.\x8DW__\xFD[a.\x97\x86\x86a*nV[\x93Pa.\xA6\x86``\x87\x01a-\xADV[\x92Pa.\xB4`\xE0\x86\x01a,\xDEV[\x91Pa.\xC3a\x01\0\x86\x01a'\x8BV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a/\x14W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x108Wa\x108a/#V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x82Wa/\x82a/VV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x108Wa\x108a/#V[_` \x82\x84\x03\x12\x15a/\xC6W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\x108Wa\x108a/#V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a0\x0CWa0\x0Ca/VV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a0/Wa0/a/#V[P_\x19\x01\x90V[\x80_[`\x0B\x81\x10\x15a0XW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a09V[PPPPV[a0s\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa2J`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra4\"a\x05\0\x83\x01\x85a06V[a40a\x06`\x83\x01\x84a0^V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a4HW__\xFD[\x81Q\x80\x15\x15\x81\x14a$\xD7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4xWa4xa/#V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4523    );
4524    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4525    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4526    ```solidity
4527    error AddressEmptyCode(address target);
4528    ```*/
4529    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4530    #[derive(Clone)]
4531    pub struct AddressEmptyCode {
4532        #[allow(missing_docs)]
4533        pub target: alloy::sol_types::private::Address,
4534    }
4535    #[allow(
4536        non_camel_case_types,
4537        non_snake_case,
4538        clippy::pub_underscore_fields,
4539        clippy::style
4540    )]
4541    const _: () = {
4542        use alloy::sol_types as alloy_sol_types;
4543        #[doc(hidden)]
4544        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4545        #[doc(hidden)]
4546        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4547        #[cfg(test)]
4548        #[allow(dead_code, unreachable_patterns)]
4549        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4550            match _t {
4551                alloy_sol_types::private::AssertTypeEq::<
4552                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4553                >(_) => {},
4554            }
4555        }
4556        #[automatically_derived]
4557        #[doc(hidden)]
4558        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4559            fn from(value: AddressEmptyCode) -> Self {
4560                (value.target,)
4561            }
4562        }
4563        #[automatically_derived]
4564        #[doc(hidden)]
4565        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4566            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4567                Self { target: tuple.0 }
4568            }
4569        }
4570        #[automatically_derived]
4571        impl alloy_sol_types::SolError for AddressEmptyCode {
4572            type Parameters<'a> = UnderlyingSolTuple<'a>;
4573            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4574            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4575            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4576            #[inline]
4577            fn new<'a>(
4578                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4579            ) -> Self {
4580                tuple.into()
4581            }
4582            #[inline]
4583            fn tokenize(&self) -> Self::Token<'_> {
4584                (
4585                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4586                        &self.target,
4587                    ),
4588                )
4589            }
4590        }
4591    };
4592    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4593    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
4594    ```solidity
4595    error DeprecatedApi();
4596    ```*/
4597    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4598    #[derive(Clone)]
4599    pub struct DeprecatedApi {}
4600    #[allow(
4601        non_camel_case_types,
4602        non_snake_case,
4603        clippy::pub_underscore_fields,
4604        clippy::style
4605    )]
4606    const _: () = {
4607        use alloy::sol_types as alloy_sol_types;
4608        #[doc(hidden)]
4609        type UnderlyingSolTuple<'a> = ();
4610        #[doc(hidden)]
4611        type UnderlyingRustTuple<'a> = ();
4612        #[cfg(test)]
4613        #[allow(dead_code, unreachable_patterns)]
4614        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4615            match _t {
4616                alloy_sol_types::private::AssertTypeEq::<
4617                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4618                >(_) => {},
4619            }
4620        }
4621        #[automatically_derived]
4622        #[doc(hidden)]
4623        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
4624            fn from(value: DeprecatedApi) -> Self {
4625                ()
4626            }
4627        }
4628        #[automatically_derived]
4629        #[doc(hidden)]
4630        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
4631            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4632                Self {}
4633            }
4634        }
4635        #[automatically_derived]
4636        impl alloy_sol_types::SolError for DeprecatedApi {
4637            type Parameters<'a> = UnderlyingSolTuple<'a>;
4638            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4639            const SIGNATURE: &'static str = "DeprecatedApi()";
4640            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
4641            #[inline]
4642            fn new<'a>(
4643                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4644            ) -> Self {
4645                tuple.into()
4646            }
4647            #[inline]
4648            fn tokenize(&self) -> Self::Token<'_> {
4649                ()
4650            }
4651        }
4652    };
4653    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4654    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4655    ```solidity
4656    error ERC1967InvalidImplementation(address implementation);
4657    ```*/
4658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4659    #[derive(Clone)]
4660    pub struct ERC1967InvalidImplementation {
4661        #[allow(missing_docs)]
4662        pub implementation: alloy::sol_types::private::Address,
4663    }
4664    #[allow(
4665        non_camel_case_types,
4666        non_snake_case,
4667        clippy::pub_underscore_fields,
4668        clippy::style
4669    )]
4670    const _: () = {
4671        use alloy::sol_types as alloy_sol_types;
4672        #[doc(hidden)]
4673        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4674        #[doc(hidden)]
4675        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4676        #[cfg(test)]
4677        #[allow(dead_code, unreachable_patterns)]
4678        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4679            match _t {
4680                alloy_sol_types::private::AssertTypeEq::<
4681                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4682                >(_) => {},
4683            }
4684        }
4685        #[automatically_derived]
4686        #[doc(hidden)]
4687        impl ::core::convert::From<ERC1967InvalidImplementation> for UnderlyingRustTuple<'_> {
4688            fn from(value: ERC1967InvalidImplementation) -> Self {
4689                (value.implementation,)
4690            }
4691        }
4692        #[automatically_derived]
4693        #[doc(hidden)]
4694        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967InvalidImplementation {
4695            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4696                Self {
4697                    implementation: tuple.0,
4698                }
4699            }
4700        }
4701        #[automatically_derived]
4702        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4703            type Parameters<'a> = UnderlyingSolTuple<'a>;
4704            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4705            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4706            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4707            #[inline]
4708            fn new<'a>(
4709                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4710            ) -> Self {
4711                tuple.into()
4712            }
4713            #[inline]
4714            fn tokenize(&self) -> Self::Token<'_> {
4715                (
4716                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4717                        &self.implementation,
4718                    ),
4719                )
4720            }
4721        }
4722    };
4723    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4724    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4725    ```solidity
4726    error ERC1967NonPayable();
4727    ```*/
4728    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4729    #[derive(Clone)]
4730    pub struct ERC1967NonPayable {}
4731    #[allow(
4732        non_camel_case_types,
4733        non_snake_case,
4734        clippy::pub_underscore_fields,
4735        clippy::style
4736    )]
4737    const _: () = {
4738        use alloy::sol_types as alloy_sol_types;
4739        #[doc(hidden)]
4740        type UnderlyingSolTuple<'a> = ();
4741        #[doc(hidden)]
4742        type UnderlyingRustTuple<'a> = ();
4743        #[cfg(test)]
4744        #[allow(dead_code, unreachable_patterns)]
4745        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4746            match _t {
4747                alloy_sol_types::private::AssertTypeEq::<
4748                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4749                >(_) => {},
4750            }
4751        }
4752        #[automatically_derived]
4753        #[doc(hidden)]
4754        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4755            fn from(value: ERC1967NonPayable) -> Self {
4756                ()
4757            }
4758        }
4759        #[automatically_derived]
4760        #[doc(hidden)]
4761        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4762            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4763                Self {}
4764            }
4765        }
4766        #[automatically_derived]
4767        impl alloy_sol_types::SolError for ERC1967NonPayable {
4768            type Parameters<'a> = UnderlyingSolTuple<'a>;
4769            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4770            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4771            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4772            #[inline]
4773            fn new<'a>(
4774                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4775            ) -> Self {
4776                tuple.into()
4777            }
4778            #[inline]
4779            fn tokenize(&self) -> Self::Token<'_> {
4780                ()
4781            }
4782        }
4783    };
4784    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4785    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4786    ```solidity
4787    error FailedInnerCall();
4788    ```*/
4789    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4790    #[derive(Clone)]
4791    pub struct FailedInnerCall {}
4792    #[allow(
4793        non_camel_case_types,
4794        non_snake_case,
4795        clippy::pub_underscore_fields,
4796        clippy::style
4797    )]
4798    const _: () = {
4799        use alloy::sol_types as alloy_sol_types;
4800        #[doc(hidden)]
4801        type UnderlyingSolTuple<'a> = ();
4802        #[doc(hidden)]
4803        type UnderlyingRustTuple<'a> = ();
4804        #[cfg(test)]
4805        #[allow(dead_code, unreachable_patterns)]
4806        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4807            match _t {
4808                alloy_sol_types::private::AssertTypeEq::<
4809                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4810                >(_) => {},
4811            }
4812        }
4813        #[automatically_derived]
4814        #[doc(hidden)]
4815        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4816            fn from(value: FailedInnerCall) -> Self {
4817                ()
4818            }
4819        }
4820        #[automatically_derived]
4821        #[doc(hidden)]
4822        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4823            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4824                Self {}
4825            }
4826        }
4827        #[automatically_derived]
4828        impl alloy_sol_types::SolError for FailedInnerCall {
4829            type Parameters<'a> = UnderlyingSolTuple<'a>;
4830            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4831            const SIGNATURE: &'static str = "FailedInnerCall()";
4832            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4833            #[inline]
4834            fn new<'a>(
4835                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4836            ) -> Self {
4837                tuple.into()
4838            }
4839            #[inline]
4840            fn tokenize(&self) -> Self::Token<'_> {
4841                ()
4842            }
4843        }
4844    };
4845    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4846    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4847    ```solidity
4848    error InsufficientSnapshotHistory();
4849    ```*/
4850    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4851    #[derive(Clone)]
4852    pub struct InsufficientSnapshotHistory {}
4853    #[allow(
4854        non_camel_case_types,
4855        non_snake_case,
4856        clippy::pub_underscore_fields,
4857        clippy::style
4858    )]
4859    const _: () = {
4860        use alloy::sol_types as alloy_sol_types;
4861        #[doc(hidden)]
4862        type UnderlyingSolTuple<'a> = ();
4863        #[doc(hidden)]
4864        type UnderlyingRustTuple<'a> = ();
4865        #[cfg(test)]
4866        #[allow(dead_code, unreachable_patterns)]
4867        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4868            match _t {
4869                alloy_sol_types::private::AssertTypeEq::<
4870                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4871                >(_) => {},
4872            }
4873        }
4874        #[automatically_derived]
4875        #[doc(hidden)]
4876        impl ::core::convert::From<InsufficientSnapshotHistory> for UnderlyingRustTuple<'_> {
4877            fn from(value: InsufficientSnapshotHistory) -> Self {
4878                ()
4879            }
4880        }
4881        #[automatically_derived]
4882        #[doc(hidden)]
4883        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InsufficientSnapshotHistory {
4884            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4885                Self {}
4886            }
4887        }
4888        #[automatically_derived]
4889        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4890            type Parameters<'a> = UnderlyingSolTuple<'a>;
4891            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4892            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4893            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4894            #[inline]
4895            fn new<'a>(
4896                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4897            ) -> Self {
4898                tuple.into()
4899            }
4900            #[inline]
4901            fn tokenize(&self) -> Self::Token<'_> {
4902                ()
4903            }
4904        }
4905    };
4906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4907    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4908    ```solidity
4909    error InvalidAddress();
4910    ```*/
4911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4912    #[derive(Clone)]
4913    pub struct InvalidAddress {}
4914    #[allow(
4915        non_camel_case_types,
4916        non_snake_case,
4917        clippy::pub_underscore_fields,
4918        clippy::style
4919    )]
4920    const _: () = {
4921        use alloy::sol_types as alloy_sol_types;
4922        #[doc(hidden)]
4923        type UnderlyingSolTuple<'a> = ();
4924        #[doc(hidden)]
4925        type UnderlyingRustTuple<'a> = ();
4926        #[cfg(test)]
4927        #[allow(dead_code, unreachable_patterns)]
4928        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4929            match _t {
4930                alloy_sol_types::private::AssertTypeEq::<
4931                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4932                >(_) => {},
4933            }
4934        }
4935        #[automatically_derived]
4936        #[doc(hidden)]
4937        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4938            fn from(value: InvalidAddress) -> Self {
4939                ()
4940            }
4941        }
4942        #[automatically_derived]
4943        #[doc(hidden)]
4944        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4945            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4946                Self {}
4947            }
4948        }
4949        #[automatically_derived]
4950        impl alloy_sol_types::SolError for InvalidAddress {
4951            type Parameters<'a> = UnderlyingSolTuple<'a>;
4952            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4953            const SIGNATURE: &'static str = "InvalidAddress()";
4954            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4955            #[inline]
4956            fn new<'a>(
4957                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4958            ) -> Self {
4959                tuple.into()
4960            }
4961            #[inline]
4962            fn tokenize(&self) -> Self::Token<'_> {
4963                ()
4964            }
4965        }
4966    };
4967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4968    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4969    ```solidity
4970    error InvalidArgs();
4971    ```*/
4972    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4973    #[derive(Clone)]
4974    pub struct InvalidArgs {}
4975    #[allow(
4976        non_camel_case_types,
4977        non_snake_case,
4978        clippy::pub_underscore_fields,
4979        clippy::style
4980    )]
4981    const _: () = {
4982        use alloy::sol_types as alloy_sol_types;
4983        #[doc(hidden)]
4984        type UnderlyingSolTuple<'a> = ();
4985        #[doc(hidden)]
4986        type UnderlyingRustTuple<'a> = ();
4987        #[cfg(test)]
4988        #[allow(dead_code, unreachable_patterns)]
4989        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4990            match _t {
4991                alloy_sol_types::private::AssertTypeEq::<
4992                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4993                >(_) => {},
4994            }
4995        }
4996        #[automatically_derived]
4997        #[doc(hidden)]
4998        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4999            fn from(value: InvalidArgs) -> Self {
5000                ()
5001            }
5002        }
5003        #[automatically_derived]
5004        #[doc(hidden)]
5005        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5006            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5007                Self {}
5008            }
5009        }
5010        #[automatically_derived]
5011        impl alloy_sol_types::SolError for InvalidArgs {
5012            type Parameters<'a> = UnderlyingSolTuple<'a>;
5013            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5014            const SIGNATURE: &'static str = "InvalidArgs()";
5015            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5016            #[inline]
5017            fn new<'a>(
5018                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5019            ) -> Self {
5020                tuple.into()
5021            }
5022            #[inline]
5023            fn tokenize(&self) -> Self::Token<'_> {
5024                ()
5025            }
5026        }
5027    };
5028    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5029    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5030    ```solidity
5031    error InvalidHotShotBlockForCommitmentCheck();
5032    ```*/
5033    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5034    #[derive(Clone)]
5035    pub struct InvalidHotShotBlockForCommitmentCheck {}
5036    #[allow(
5037        non_camel_case_types,
5038        non_snake_case,
5039        clippy::pub_underscore_fields,
5040        clippy::style
5041    )]
5042    const _: () = {
5043        use alloy::sol_types as alloy_sol_types;
5044        #[doc(hidden)]
5045        type UnderlyingSolTuple<'a> = ();
5046        #[doc(hidden)]
5047        type UnderlyingRustTuple<'a> = ();
5048        #[cfg(test)]
5049        #[allow(dead_code, unreachable_patterns)]
5050        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5051            match _t {
5052                alloy_sol_types::private::AssertTypeEq::<
5053                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5054                >(_) => {},
5055            }
5056        }
5057        #[automatically_derived]
5058        #[doc(hidden)]
5059        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck> for UnderlyingRustTuple<'_> {
5060            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5061                ()
5062            }
5063        }
5064        #[automatically_derived]
5065        #[doc(hidden)]
5066        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidHotShotBlockForCommitmentCheck {
5067            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5068                Self {}
5069            }
5070        }
5071        #[automatically_derived]
5072        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5073            type Parameters<'a> = UnderlyingSolTuple<'a>;
5074            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5075            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5076            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5077            #[inline]
5078            fn new<'a>(
5079                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5080            ) -> Self {
5081                tuple.into()
5082            }
5083            #[inline]
5084            fn tokenize(&self) -> Self::Token<'_> {
5085                ()
5086            }
5087        }
5088    };
5089    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5090    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5091    ```solidity
5092    error InvalidInitialization();
5093    ```*/
5094    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5095    #[derive(Clone)]
5096    pub struct InvalidInitialization {}
5097    #[allow(
5098        non_camel_case_types,
5099        non_snake_case,
5100        clippy::pub_underscore_fields,
5101        clippy::style
5102    )]
5103    const _: () = {
5104        use alloy::sol_types as alloy_sol_types;
5105        #[doc(hidden)]
5106        type UnderlyingSolTuple<'a> = ();
5107        #[doc(hidden)]
5108        type UnderlyingRustTuple<'a> = ();
5109        #[cfg(test)]
5110        #[allow(dead_code, unreachable_patterns)]
5111        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5112            match _t {
5113                alloy_sol_types::private::AssertTypeEq::<
5114                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5115                >(_) => {},
5116            }
5117        }
5118        #[automatically_derived]
5119        #[doc(hidden)]
5120        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5121            fn from(value: InvalidInitialization) -> Self {
5122                ()
5123            }
5124        }
5125        #[automatically_derived]
5126        #[doc(hidden)]
5127        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5128            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5129                Self {}
5130            }
5131        }
5132        #[automatically_derived]
5133        impl alloy_sol_types::SolError for InvalidInitialization {
5134            type Parameters<'a> = UnderlyingSolTuple<'a>;
5135            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5136            const SIGNATURE: &'static str = "InvalidInitialization()";
5137            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5138            #[inline]
5139            fn new<'a>(
5140                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5141            ) -> Self {
5142                tuple.into()
5143            }
5144            #[inline]
5145            fn tokenize(&self) -> Self::Token<'_> {
5146                ()
5147            }
5148        }
5149    };
5150    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5151    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5152    ```solidity
5153    error InvalidMaxStateHistory();
5154    ```*/
5155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5156    #[derive(Clone)]
5157    pub struct InvalidMaxStateHistory {}
5158    #[allow(
5159        non_camel_case_types,
5160        non_snake_case,
5161        clippy::pub_underscore_fields,
5162        clippy::style
5163    )]
5164    const _: () = {
5165        use alloy::sol_types as alloy_sol_types;
5166        #[doc(hidden)]
5167        type UnderlyingSolTuple<'a> = ();
5168        #[doc(hidden)]
5169        type UnderlyingRustTuple<'a> = ();
5170        #[cfg(test)]
5171        #[allow(dead_code, unreachable_patterns)]
5172        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5173            match _t {
5174                alloy_sol_types::private::AssertTypeEq::<
5175                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5176                >(_) => {},
5177            }
5178        }
5179        #[automatically_derived]
5180        #[doc(hidden)]
5181        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5182            fn from(value: InvalidMaxStateHistory) -> Self {
5183                ()
5184            }
5185        }
5186        #[automatically_derived]
5187        #[doc(hidden)]
5188        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5189            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5190                Self {}
5191            }
5192        }
5193        #[automatically_derived]
5194        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5195            type Parameters<'a> = UnderlyingSolTuple<'a>;
5196            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5197            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5198            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5199            #[inline]
5200            fn new<'a>(
5201                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5202            ) -> Self {
5203                tuple.into()
5204            }
5205            #[inline]
5206            fn tokenize(&self) -> Self::Token<'_> {
5207                ()
5208            }
5209        }
5210    };
5211    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5212    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5213    ```solidity
5214    error InvalidProof();
5215    ```*/
5216    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5217    #[derive(Clone)]
5218    pub struct InvalidProof {}
5219    #[allow(
5220        non_camel_case_types,
5221        non_snake_case,
5222        clippy::pub_underscore_fields,
5223        clippy::style
5224    )]
5225    const _: () = {
5226        use alloy::sol_types as alloy_sol_types;
5227        #[doc(hidden)]
5228        type UnderlyingSolTuple<'a> = ();
5229        #[doc(hidden)]
5230        type UnderlyingRustTuple<'a> = ();
5231        #[cfg(test)]
5232        #[allow(dead_code, unreachable_patterns)]
5233        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5234            match _t {
5235                alloy_sol_types::private::AssertTypeEq::<
5236                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5237                >(_) => {},
5238            }
5239        }
5240        #[automatically_derived]
5241        #[doc(hidden)]
5242        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5243            fn from(value: InvalidProof) -> Self {
5244                ()
5245            }
5246        }
5247        #[automatically_derived]
5248        #[doc(hidden)]
5249        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5250            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5251                Self {}
5252            }
5253        }
5254        #[automatically_derived]
5255        impl alloy_sol_types::SolError for InvalidProof {
5256            type Parameters<'a> = UnderlyingSolTuple<'a>;
5257            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5258            const SIGNATURE: &'static str = "InvalidProof()";
5259            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5260            #[inline]
5261            fn new<'a>(
5262                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5263            ) -> Self {
5264                tuple.into()
5265            }
5266            #[inline]
5267            fn tokenize(&self) -> Self::Token<'_> {
5268                ()
5269            }
5270        }
5271    };
5272    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5273    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
5274    ```solidity
5275    error MissingEpochRootUpdate();
5276    ```*/
5277    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5278    #[derive(Clone)]
5279    pub struct MissingEpochRootUpdate {}
5280    #[allow(
5281        non_camel_case_types,
5282        non_snake_case,
5283        clippy::pub_underscore_fields,
5284        clippy::style
5285    )]
5286    const _: () = {
5287        use alloy::sol_types as alloy_sol_types;
5288        #[doc(hidden)]
5289        type UnderlyingSolTuple<'a> = ();
5290        #[doc(hidden)]
5291        type UnderlyingRustTuple<'a> = ();
5292        #[cfg(test)]
5293        #[allow(dead_code, unreachable_patterns)]
5294        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5295            match _t {
5296                alloy_sol_types::private::AssertTypeEq::<
5297                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5298                >(_) => {},
5299            }
5300        }
5301        #[automatically_derived]
5302        #[doc(hidden)]
5303        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
5304            fn from(value: MissingEpochRootUpdate) -> Self {
5305                ()
5306            }
5307        }
5308        #[automatically_derived]
5309        #[doc(hidden)]
5310        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
5311            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5312                Self {}
5313            }
5314        }
5315        #[automatically_derived]
5316        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
5317            type Parameters<'a> = UnderlyingSolTuple<'a>;
5318            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5319            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
5320            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
5321            #[inline]
5322            fn new<'a>(
5323                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5324            ) -> Self {
5325                tuple.into()
5326            }
5327            #[inline]
5328            fn tokenize(&self) -> Self::Token<'_> {
5329                ()
5330            }
5331        }
5332    };
5333    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5334    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5335    ```solidity
5336    error NoChangeRequired();
5337    ```*/
5338    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5339    #[derive(Clone)]
5340    pub struct NoChangeRequired {}
5341    #[allow(
5342        non_camel_case_types,
5343        non_snake_case,
5344        clippy::pub_underscore_fields,
5345        clippy::style
5346    )]
5347    const _: () = {
5348        use alloy::sol_types as alloy_sol_types;
5349        #[doc(hidden)]
5350        type UnderlyingSolTuple<'a> = ();
5351        #[doc(hidden)]
5352        type UnderlyingRustTuple<'a> = ();
5353        #[cfg(test)]
5354        #[allow(dead_code, unreachable_patterns)]
5355        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5356            match _t {
5357                alloy_sol_types::private::AssertTypeEq::<
5358                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5359                >(_) => {},
5360            }
5361        }
5362        #[automatically_derived]
5363        #[doc(hidden)]
5364        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5365            fn from(value: NoChangeRequired) -> Self {
5366                ()
5367            }
5368        }
5369        #[automatically_derived]
5370        #[doc(hidden)]
5371        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5372            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5373                Self {}
5374            }
5375        }
5376        #[automatically_derived]
5377        impl alloy_sol_types::SolError for NoChangeRequired {
5378            type Parameters<'a> = UnderlyingSolTuple<'a>;
5379            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5380            const SIGNATURE: &'static str = "NoChangeRequired()";
5381            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5382            #[inline]
5383            fn new<'a>(
5384                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5385            ) -> Self {
5386                tuple.into()
5387            }
5388            #[inline]
5389            fn tokenize(&self) -> Self::Token<'_> {
5390                ()
5391            }
5392        }
5393    };
5394    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5395    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5396    ```solidity
5397    error NotInitializing();
5398    ```*/
5399    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5400    #[derive(Clone)]
5401    pub struct NotInitializing {}
5402    #[allow(
5403        non_camel_case_types,
5404        non_snake_case,
5405        clippy::pub_underscore_fields,
5406        clippy::style
5407    )]
5408    const _: () = {
5409        use alloy::sol_types as alloy_sol_types;
5410        #[doc(hidden)]
5411        type UnderlyingSolTuple<'a> = ();
5412        #[doc(hidden)]
5413        type UnderlyingRustTuple<'a> = ();
5414        #[cfg(test)]
5415        #[allow(dead_code, unreachable_patterns)]
5416        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5417            match _t {
5418                alloy_sol_types::private::AssertTypeEq::<
5419                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5420                >(_) => {},
5421            }
5422        }
5423        #[automatically_derived]
5424        #[doc(hidden)]
5425        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5426            fn from(value: NotInitializing) -> Self {
5427                ()
5428            }
5429        }
5430        #[automatically_derived]
5431        #[doc(hidden)]
5432        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5433            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5434                Self {}
5435            }
5436        }
5437        #[automatically_derived]
5438        impl alloy_sol_types::SolError for NotInitializing {
5439            type Parameters<'a> = UnderlyingSolTuple<'a>;
5440            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5441            const SIGNATURE: &'static str = "NotInitializing()";
5442            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5443            #[inline]
5444            fn new<'a>(
5445                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5446            ) -> Self {
5447                tuple.into()
5448            }
5449            #[inline]
5450            fn tokenize(&self) -> Self::Token<'_> {
5451                ()
5452            }
5453        }
5454    };
5455    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5456    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5457    ```solidity
5458    error OutdatedState();
5459    ```*/
5460    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5461    #[derive(Clone)]
5462    pub struct OutdatedState {}
5463    #[allow(
5464        non_camel_case_types,
5465        non_snake_case,
5466        clippy::pub_underscore_fields,
5467        clippy::style
5468    )]
5469    const _: () = {
5470        use alloy::sol_types as alloy_sol_types;
5471        #[doc(hidden)]
5472        type UnderlyingSolTuple<'a> = ();
5473        #[doc(hidden)]
5474        type UnderlyingRustTuple<'a> = ();
5475        #[cfg(test)]
5476        #[allow(dead_code, unreachable_patterns)]
5477        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5478            match _t {
5479                alloy_sol_types::private::AssertTypeEq::<
5480                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5481                >(_) => {},
5482            }
5483        }
5484        #[automatically_derived]
5485        #[doc(hidden)]
5486        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5487            fn from(value: OutdatedState) -> Self {
5488                ()
5489            }
5490        }
5491        #[automatically_derived]
5492        #[doc(hidden)]
5493        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5494            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5495                Self {}
5496            }
5497        }
5498        #[automatically_derived]
5499        impl alloy_sol_types::SolError for OutdatedState {
5500            type Parameters<'a> = UnderlyingSolTuple<'a>;
5501            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5502            const SIGNATURE: &'static str = "OutdatedState()";
5503            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5504            #[inline]
5505            fn new<'a>(
5506                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5507            ) -> Self {
5508                tuple.into()
5509            }
5510            #[inline]
5511            fn tokenize(&self) -> Self::Token<'_> {
5512                ()
5513            }
5514        }
5515    };
5516    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5517    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5518    ```solidity
5519    error OwnableInvalidOwner(address owner);
5520    ```*/
5521    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5522    #[derive(Clone)]
5523    pub struct OwnableInvalidOwner {
5524        #[allow(missing_docs)]
5525        pub owner: alloy::sol_types::private::Address,
5526    }
5527    #[allow(
5528        non_camel_case_types,
5529        non_snake_case,
5530        clippy::pub_underscore_fields,
5531        clippy::style
5532    )]
5533    const _: () = {
5534        use alloy::sol_types as alloy_sol_types;
5535        #[doc(hidden)]
5536        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5537        #[doc(hidden)]
5538        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5539        #[cfg(test)]
5540        #[allow(dead_code, unreachable_patterns)]
5541        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5542            match _t {
5543                alloy_sol_types::private::AssertTypeEq::<
5544                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5545                >(_) => {},
5546            }
5547        }
5548        #[automatically_derived]
5549        #[doc(hidden)]
5550        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5551            fn from(value: OwnableInvalidOwner) -> Self {
5552                (value.owner,)
5553            }
5554        }
5555        #[automatically_derived]
5556        #[doc(hidden)]
5557        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5558            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5559                Self { owner: tuple.0 }
5560            }
5561        }
5562        #[automatically_derived]
5563        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5564            type Parameters<'a> = UnderlyingSolTuple<'a>;
5565            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5566            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5567            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5568            #[inline]
5569            fn new<'a>(
5570                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5571            ) -> Self {
5572                tuple.into()
5573            }
5574            #[inline]
5575            fn tokenize(&self) -> Self::Token<'_> {
5576                (
5577                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5578                        &self.owner,
5579                    ),
5580                )
5581            }
5582        }
5583    };
5584    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5585    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5586    ```solidity
5587    error OwnableUnauthorizedAccount(address account);
5588    ```*/
5589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5590    #[derive(Clone)]
5591    pub struct OwnableUnauthorizedAccount {
5592        #[allow(missing_docs)]
5593        pub account: alloy::sol_types::private::Address,
5594    }
5595    #[allow(
5596        non_camel_case_types,
5597        non_snake_case,
5598        clippy::pub_underscore_fields,
5599        clippy::style
5600    )]
5601    const _: () = {
5602        use alloy::sol_types as alloy_sol_types;
5603        #[doc(hidden)]
5604        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5605        #[doc(hidden)]
5606        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5607        #[cfg(test)]
5608        #[allow(dead_code, unreachable_patterns)]
5609        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5610            match _t {
5611                alloy_sol_types::private::AssertTypeEq::<
5612                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5613                >(_) => {},
5614            }
5615        }
5616        #[automatically_derived]
5617        #[doc(hidden)]
5618        impl ::core::convert::From<OwnableUnauthorizedAccount> for UnderlyingRustTuple<'_> {
5619            fn from(value: OwnableUnauthorizedAccount) -> Self {
5620                (value.account,)
5621            }
5622        }
5623        #[automatically_derived]
5624        #[doc(hidden)]
5625        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableUnauthorizedAccount {
5626            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5627                Self { account: tuple.0 }
5628            }
5629        }
5630        #[automatically_derived]
5631        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5632            type Parameters<'a> = UnderlyingSolTuple<'a>;
5633            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5634            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5635            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5636            #[inline]
5637            fn new<'a>(
5638                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5639            ) -> Self {
5640                tuple.into()
5641            }
5642            #[inline]
5643            fn tokenize(&self) -> Self::Token<'_> {
5644                (
5645                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5646                        &self.account,
5647                    ),
5648                )
5649            }
5650        }
5651    };
5652    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5653    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5654    ```solidity
5655    error ProverNotPermissioned();
5656    ```*/
5657    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5658    #[derive(Clone)]
5659    pub struct ProverNotPermissioned {}
5660    #[allow(
5661        non_camel_case_types,
5662        non_snake_case,
5663        clippy::pub_underscore_fields,
5664        clippy::style
5665    )]
5666    const _: () = {
5667        use alloy::sol_types as alloy_sol_types;
5668        #[doc(hidden)]
5669        type UnderlyingSolTuple<'a> = ();
5670        #[doc(hidden)]
5671        type UnderlyingRustTuple<'a> = ();
5672        #[cfg(test)]
5673        #[allow(dead_code, unreachable_patterns)]
5674        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5675            match _t {
5676                alloy_sol_types::private::AssertTypeEq::<
5677                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5678                >(_) => {},
5679            }
5680        }
5681        #[automatically_derived]
5682        #[doc(hidden)]
5683        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5684            fn from(value: ProverNotPermissioned) -> Self {
5685                ()
5686            }
5687        }
5688        #[automatically_derived]
5689        #[doc(hidden)]
5690        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5691            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5692                Self {}
5693            }
5694        }
5695        #[automatically_derived]
5696        impl alloy_sol_types::SolError for ProverNotPermissioned {
5697            type Parameters<'a> = UnderlyingSolTuple<'a>;
5698            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5699            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5700            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5701            #[inline]
5702            fn new<'a>(
5703                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5704            ) -> Self {
5705                tuple.into()
5706            }
5707            #[inline]
5708            fn tokenize(&self) -> Self::Token<'_> {
5709                ()
5710            }
5711        }
5712    };
5713    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5714    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5715    ```solidity
5716    error UUPSUnauthorizedCallContext();
5717    ```*/
5718    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5719    #[derive(Clone)]
5720    pub struct UUPSUnauthorizedCallContext {}
5721    #[allow(
5722        non_camel_case_types,
5723        non_snake_case,
5724        clippy::pub_underscore_fields,
5725        clippy::style
5726    )]
5727    const _: () = {
5728        use alloy::sol_types as alloy_sol_types;
5729        #[doc(hidden)]
5730        type UnderlyingSolTuple<'a> = ();
5731        #[doc(hidden)]
5732        type UnderlyingRustTuple<'a> = ();
5733        #[cfg(test)]
5734        #[allow(dead_code, unreachable_patterns)]
5735        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5736            match _t {
5737                alloy_sol_types::private::AssertTypeEq::<
5738                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5739                >(_) => {},
5740            }
5741        }
5742        #[automatically_derived]
5743        #[doc(hidden)]
5744        impl ::core::convert::From<UUPSUnauthorizedCallContext> for UnderlyingRustTuple<'_> {
5745            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5746                ()
5747            }
5748        }
5749        #[automatically_derived]
5750        #[doc(hidden)]
5751        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnauthorizedCallContext {
5752            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5753                Self {}
5754            }
5755        }
5756        #[automatically_derived]
5757        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5758            type Parameters<'a> = UnderlyingSolTuple<'a>;
5759            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5760            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5761            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5762            #[inline]
5763            fn new<'a>(
5764                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5765            ) -> Self {
5766                tuple.into()
5767            }
5768            #[inline]
5769            fn tokenize(&self) -> Self::Token<'_> {
5770                ()
5771            }
5772        }
5773    };
5774    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5775    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5776    ```solidity
5777    error UUPSUnsupportedProxiableUUID(bytes32 slot);
5778    ```*/
5779    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5780    #[derive(Clone)]
5781    pub struct UUPSUnsupportedProxiableUUID {
5782        #[allow(missing_docs)]
5783        pub slot: alloy::sol_types::private::FixedBytes<32>,
5784    }
5785    #[allow(
5786        non_camel_case_types,
5787        non_snake_case,
5788        clippy::pub_underscore_fields,
5789        clippy::style
5790    )]
5791    const _: () = {
5792        use alloy::sol_types as alloy_sol_types;
5793        #[doc(hidden)]
5794        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5795        #[doc(hidden)]
5796        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5797        #[cfg(test)]
5798        #[allow(dead_code, unreachable_patterns)]
5799        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5800            match _t {
5801                alloy_sol_types::private::AssertTypeEq::<
5802                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5803                >(_) => {},
5804            }
5805        }
5806        #[automatically_derived]
5807        #[doc(hidden)]
5808        impl ::core::convert::From<UUPSUnsupportedProxiableUUID> for UnderlyingRustTuple<'_> {
5809            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5810                (value.slot,)
5811            }
5812        }
5813        #[automatically_derived]
5814        #[doc(hidden)]
5815        impl ::core::convert::From<UnderlyingRustTuple<'_>> for UUPSUnsupportedProxiableUUID {
5816            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5817                Self { slot: tuple.0 }
5818            }
5819        }
5820        #[automatically_derived]
5821        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5822            type Parameters<'a> = UnderlyingSolTuple<'a>;
5823            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5824            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5825            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5826            #[inline]
5827            fn new<'a>(
5828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5829            ) -> Self {
5830                tuple.into()
5831            }
5832            #[inline]
5833            fn tokenize(&self) -> Self::Token<'_> {
5834                (
5835                    <alloy::sol_types::sol_data::FixedBytes<
5836                        32,
5837                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5838                )
5839            }
5840        }
5841    };
5842    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5843    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5844    ```solidity
5845    error WrongStakeTableUsed();
5846    ```*/
5847    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5848    #[derive(Clone)]
5849    pub struct WrongStakeTableUsed {}
5850    #[allow(
5851        non_camel_case_types,
5852        non_snake_case,
5853        clippy::pub_underscore_fields,
5854        clippy::style
5855    )]
5856    const _: () = {
5857        use alloy::sol_types as alloy_sol_types;
5858        #[doc(hidden)]
5859        type UnderlyingSolTuple<'a> = ();
5860        #[doc(hidden)]
5861        type UnderlyingRustTuple<'a> = ();
5862        #[cfg(test)]
5863        #[allow(dead_code, unreachable_patterns)]
5864        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5865            match _t {
5866                alloy_sol_types::private::AssertTypeEq::<
5867                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5868                >(_) => {},
5869            }
5870        }
5871        #[automatically_derived]
5872        #[doc(hidden)]
5873        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5874            fn from(value: WrongStakeTableUsed) -> Self {
5875                ()
5876            }
5877        }
5878        #[automatically_derived]
5879        #[doc(hidden)]
5880        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5881            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5882                Self {}
5883            }
5884        }
5885        #[automatically_derived]
5886        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5887            type Parameters<'a> = UnderlyingSolTuple<'a>;
5888            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5889            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5890            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5891            #[inline]
5892            fn new<'a>(
5893                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5894            ) -> Self {
5895                tuple.into()
5896            }
5897            #[inline]
5898            fn tokenize(&self) -> Self::Token<'_> {
5899                ()
5900            }
5901        }
5902    };
5903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5904    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5905    ```solidity
5906    event Initialized(uint64 version);
5907    ```*/
5908    #[allow(
5909        non_camel_case_types,
5910        non_snake_case,
5911        clippy::pub_underscore_fields,
5912        clippy::style
5913    )]
5914    #[derive(Clone)]
5915    pub struct Initialized {
5916        #[allow(missing_docs)]
5917        pub version: u64,
5918    }
5919    #[allow(
5920        non_camel_case_types,
5921        non_snake_case,
5922        clippy::pub_underscore_fields,
5923        clippy::style
5924    )]
5925    const _: () = {
5926        use alloy::sol_types as alloy_sol_types;
5927        #[automatically_derived]
5928        impl alloy_sol_types::SolEvent for Initialized {
5929            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5930            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5931            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5932            const SIGNATURE: &'static str = "Initialized(uint64)";
5933            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
5934                alloy_sol_types::private::B256::new([
5935                    199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
5936                    244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
5937                    209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5938                ]);
5939            const ANONYMOUS: bool = false;
5940            #[allow(unused_variables)]
5941            #[inline]
5942            fn new(
5943                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5944                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5945            ) -> Self {
5946                Self { version: data.0 }
5947            }
5948            #[inline]
5949            fn check_signature(
5950                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5951            ) -> alloy_sol_types::Result<()> {
5952                if topics.0 != Self::SIGNATURE_HASH {
5953                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
5954                        Self::SIGNATURE,
5955                        topics.0,
5956                        Self::SIGNATURE_HASH,
5957                    ));
5958                }
5959                Ok(())
5960            }
5961            #[inline]
5962            fn tokenize_body(&self) -> Self::DataToken<'_> {
5963                (
5964                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
5965                        &self.version,
5966                    ),
5967                )
5968            }
5969            #[inline]
5970            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5971                (Self::SIGNATURE_HASH.into(),)
5972            }
5973            #[inline]
5974            fn encode_topics_raw(
5975                &self,
5976                out: &mut [alloy_sol_types::abi::token::WordToken],
5977            ) -> alloy_sol_types::Result<()> {
5978                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5979                    return Err(alloy_sol_types::Error::Overrun);
5980                }
5981                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
5982                Ok(())
5983            }
5984        }
5985        #[automatically_derived]
5986        impl alloy_sol_types::private::IntoLogData for Initialized {
5987            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
5988                From::from(self)
5989            }
5990            fn into_log_data(self) -> alloy_sol_types::private::LogData {
5991                From::from(&self)
5992            }
5993        }
5994        #[automatically_derived]
5995        impl From<&Initialized> for alloy_sol_types::private::LogData {
5996            #[inline]
5997            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
5998                alloy_sol_types::SolEvent::encode_log_data(this)
5999            }
6000        }
6001    };
6002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6003    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6004    ```solidity
6005    event NewEpoch(uint64 epoch);
6006    ```*/
6007    #[allow(
6008        non_camel_case_types,
6009        non_snake_case,
6010        clippy::pub_underscore_fields,
6011        clippy::style
6012    )]
6013    #[derive(Clone)]
6014    pub struct NewEpoch {
6015        #[allow(missing_docs)]
6016        pub epoch: u64,
6017    }
6018    #[allow(
6019        non_camel_case_types,
6020        non_snake_case,
6021        clippy::pub_underscore_fields,
6022        clippy::style
6023    )]
6024    const _: () = {
6025        use alloy::sol_types as alloy_sol_types;
6026        #[automatically_derived]
6027        impl alloy_sol_types::SolEvent for NewEpoch {
6028            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6029            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6030            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6031            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6032            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6033                alloy_sol_types::private::B256::new([
6034                    49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8, 210u8, 6u8,
6035                    171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8, 157u8, 15u8, 205u8,
6036                    239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6037                ]);
6038            const ANONYMOUS: bool = false;
6039            #[allow(unused_variables)]
6040            #[inline]
6041            fn new(
6042                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6043                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6044            ) -> Self {
6045                Self { epoch: data.0 }
6046            }
6047            #[inline]
6048            fn check_signature(
6049                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6050            ) -> alloy_sol_types::Result<()> {
6051                if topics.0 != Self::SIGNATURE_HASH {
6052                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6053                        Self::SIGNATURE,
6054                        topics.0,
6055                        Self::SIGNATURE_HASH,
6056                    ));
6057                }
6058                Ok(())
6059            }
6060            #[inline]
6061            fn tokenize_body(&self) -> Self::DataToken<'_> {
6062                (
6063                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
6064                        &self.epoch,
6065                    ),
6066                )
6067            }
6068            #[inline]
6069            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6070                (Self::SIGNATURE_HASH.into(),)
6071            }
6072            #[inline]
6073            fn encode_topics_raw(
6074                &self,
6075                out: &mut [alloy_sol_types::abi::token::WordToken],
6076            ) -> alloy_sol_types::Result<()> {
6077                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6078                    return Err(alloy_sol_types::Error::Overrun);
6079                }
6080                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6081                Ok(())
6082            }
6083        }
6084        #[automatically_derived]
6085        impl alloy_sol_types::private::IntoLogData for NewEpoch {
6086            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6087                From::from(self)
6088            }
6089            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6090                From::from(&self)
6091            }
6092        }
6093        #[automatically_derived]
6094        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
6095            #[inline]
6096            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
6097                alloy_sol_types::SolEvent::encode_log_data(this)
6098            }
6099        }
6100    };
6101    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6102    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6103    ```solidity
6104    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6105    ```*/
6106    #[allow(
6107        non_camel_case_types,
6108        non_snake_case,
6109        clippy::pub_underscore_fields,
6110        clippy::style
6111    )]
6112    #[derive(Clone)]
6113    pub struct NewState {
6114        #[allow(missing_docs)]
6115        pub viewNum: u64,
6116        #[allow(missing_docs)]
6117        pub blockHeight: u64,
6118        #[allow(missing_docs)]
6119        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6120    }
6121    #[allow(
6122        non_camel_case_types,
6123        non_snake_case,
6124        clippy::pub_underscore_fields,
6125        clippy::style
6126    )]
6127    const _: () = {
6128        use alloy::sol_types as alloy_sol_types;
6129        #[automatically_derived]
6130        impl alloy_sol_types::SolEvent for NewState {
6131            type DataTuple<'a> = (BN254::ScalarField,);
6132            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6133            type TopicList = (
6134                alloy_sol_types::sol_data::FixedBytes<32>,
6135                alloy::sol_types::sol_data::Uint<64>,
6136                alloy::sol_types::sol_data::Uint<64>,
6137            );
6138            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6139            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6140                alloy_sol_types::private::B256::new([
6141                    160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8, 55u8,
6142                    37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8, 189u8, 110u8,
6143                    252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6144                ]);
6145            const ANONYMOUS: bool = false;
6146            #[allow(unused_variables)]
6147            #[inline]
6148            fn new(
6149                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6150                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6151            ) -> Self {
6152                Self {
6153                    viewNum: topics.1,
6154                    blockHeight: topics.2,
6155                    blockCommRoot: data.0,
6156                }
6157            }
6158            #[inline]
6159            fn check_signature(
6160                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6161            ) -> alloy_sol_types::Result<()> {
6162                if topics.0 != Self::SIGNATURE_HASH {
6163                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6164                        Self::SIGNATURE,
6165                        topics.0,
6166                        Self::SIGNATURE_HASH,
6167                    ));
6168                }
6169                Ok(())
6170            }
6171            #[inline]
6172            fn tokenize_body(&self) -> Self::DataToken<'_> {
6173                (<BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6174                    &self.blockCommRoot,
6175                ),)
6176            }
6177            #[inline]
6178            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6179                (
6180                    Self::SIGNATURE_HASH.into(),
6181                    self.viewNum.clone(),
6182                    self.blockHeight.clone(),
6183                )
6184            }
6185            #[inline]
6186            fn encode_topics_raw(
6187                &self,
6188                out: &mut [alloy_sol_types::abi::token::WordToken],
6189            ) -> alloy_sol_types::Result<()> {
6190                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6191                    return Err(alloy_sol_types::Error::Overrun);
6192                }
6193                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6194                out[1usize] = <alloy::sol_types::sol_data::Uint<
6195                    64,
6196                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6197                out[2usize] = <alloy::sol_types::sol_data::Uint<
6198                    64,
6199                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6200                Ok(())
6201            }
6202        }
6203        #[automatically_derived]
6204        impl alloy_sol_types::private::IntoLogData for NewState {
6205            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6206                From::from(self)
6207            }
6208            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6209                From::from(&self)
6210            }
6211        }
6212        #[automatically_derived]
6213        impl From<&NewState> for alloy_sol_types::private::LogData {
6214            #[inline]
6215            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6216                alloy_sol_types::SolEvent::encode_log_data(this)
6217            }
6218        }
6219    };
6220    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6221    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6222    ```solidity
6223    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6224    ```*/
6225    #[allow(
6226        non_camel_case_types,
6227        non_snake_case,
6228        clippy::pub_underscore_fields,
6229        clippy::style
6230    )]
6231    #[derive(Clone)]
6232    pub struct OwnershipTransferred {
6233        #[allow(missing_docs)]
6234        pub previousOwner: alloy::sol_types::private::Address,
6235        #[allow(missing_docs)]
6236        pub newOwner: alloy::sol_types::private::Address,
6237    }
6238    #[allow(
6239        non_camel_case_types,
6240        non_snake_case,
6241        clippy::pub_underscore_fields,
6242        clippy::style
6243    )]
6244    const _: () = {
6245        use alloy::sol_types as alloy_sol_types;
6246        #[automatically_derived]
6247        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6248            type DataTuple<'a> = ();
6249            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6250            type TopicList = (
6251                alloy_sol_types::sol_data::FixedBytes<32>,
6252                alloy::sol_types::sol_data::Address,
6253                alloy::sol_types::sol_data::Address,
6254            );
6255            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6256            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6257                alloy_sol_types::private::B256::new([
6258                    139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8,
6259                    208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8,
6260                    175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6261                ]);
6262            const ANONYMOUS: bool = false;
6263            #[allow(unused_variables)]
6264            #[inline]
6265            fn new(
6266                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6267                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6268            ) -> Self {
6269                Self {
6270                    previousOwner: topics.1,
6271                    newOwner: topics.2,
6272                }
6273            }
6274            #[inline]
6275            fn check_signature(
6276                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6277            ) -> alloy_sol_types::Result<()> {
6278                if topics.0 != Self::SIGNATURE_HASH {
6279                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6280                        Self::SIGNATURE,
6281                        topics.0,
6282                        Self::SIGNATURE_HASH,
6283                    ));
6284                }
6285                Ok(())
6286            }
6287            #[inline]
6288            fn tokenize_body(&self) -> Self::DataToken<'_> {
6289                ()
6290            }
6291            #[inline]
6292            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6293                (
6294                    Self::SIGNATURE_HASH.into(),
6295                    self.previousOwner.clone(),
6296                    self.newOwner.clone(),
6297                )
6298            }
6299            #[inline]
6300            fn encode_topics_raw(
6301                &self,
6302                out: &mut [alloy_sol_types::abi::token::WordToken],
6303            ) -> alloy_sol_types::Result<()> {
6304                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6305                    return Err(alloy_sol_types::Error::Overrun);
6306                }
6307                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6308                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6309                    &self.previousOwner,
6310                );
6311                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6312                    &self.newOwner,
6313                );
6314                Ok(())
6315            }
6316        }
6317        #[automatically_derived]
6318        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6319            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6320                From::from(self)
6321            }
6322            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6323                From::from(&self)
6324            }
6325        }
6326        #[automatically_derived]
6327        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6328            #[inline]
6329            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6330                alloy_sol_types::SolEvent::encode_log_data(this)
6331            }
6332        }
6333    };
6334    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6335    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6336    ```solidity
6337    event PermissionedProverNotRequired();
6338    ```*/
6339    #[allow(
6340        non_camel_case_types,
6341        non_snake_case,
6342        clippy::pub_underscore_fields,
6343        clippy::style
6344    )]
6345    #[derive(Clone)]
6346    pub struct PermissionedProverNotRequired {}
6347    #[allow(
6348        non_camel_case_types,
6349        non_snake_case,
6350        clippy::pub_underscore_fields,
6351        clippy::style
6352    )]
6353    const _: () = {
6354        use alloy::sol_types as alloy_sol_types;
6355        #[automatically_derived]
6356        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6357            type DataTuple<'a> = ();
6358            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6359            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6360            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6361            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6362                alloy_sol_types::private::B256::new([
6363                    154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8, 94u8,
6364                    92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8, 168u8, 119u8,
6365                    109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6366                ]);
6367            const ANONYMOUS: bool = false;
6368            #[allow(unused_variables)]
6369            #[inline]
6370            fn new(
6371                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6372                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6373            ) -> Self {
6374                Self {}
6375            }
6376            #[inline]
6377            fn check_signature(
6378                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6379            ) -> alloy_sol_types::Result<()> {
6380                if topics.0 != Self::SIGNATURE_HASH {
6381                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6382                        Self::SIGNATURE,
6383                        topics.0,
6384                        Self::SIGNATURE_HASH,
6385                    ));
6386                }
6387                Ok(())
6388            }
6389            #[inline]
6390            fn tokenize_body(&self) -> Self::DataToken<'_> {
6391                ()
6392            }
6393            #[inline]
6394            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6395                (Self::SIGNATURE_HASH.into(),)
6396            }
6397            #[inline]
6398            fn encode_topics_raw(
6399                &self,
6400                out: &mut [alloy_sol_types::abi::token::WordToken],
6401            ) -> alloy_sol_types::Result<()> {
6402                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6403                    return Err(alloy_sol_types::Error::Overrun);
6404                }
6405                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6406                Ok(())
6407            }
6408        }
6409        #[automatically_derived]
6410        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6411            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6412                From::from(self)
6413            }
6414            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6415                From::from(&self)
6416            }
6417        }
6418        #[automatically_derived]
6419        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6420            #[inline]
6421            fn from(this: &PermissionedProverNotRequired) -> alloy_sol_types::private::LogData {
6422                alloy_sol_types::SolEvent::encode_log_data(this)
6423            }
6424        }
6425    };
6426    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6427    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6428    ```solidity
6429    event PermissionedProverRequired(address permissionedProver);
6430    ```*/
6431    #[allow(
6432        non_camel_case_types,
6433        non_snake_case,
6434        clippy::pub_underscore_fields,
6435        clippy::style
6436    )]
6437    #[derive(Clone)]
6438    pub struct PermissionedProverRequired {
6439        #[allow(missing_docs)]
6440        pub permissionedProver: alloy::sol_types::private::Address,
6441    }
6442    #[allow(
6443        non_camel_case_types,
6444        non_snake_case,
6445        clippy::pub_underscore_fields,
6446        clippy::style
6447    )]
6448    const _: () = {
6449        use alloy::sol_types as alloy_sol_types;
6450        #[automatically_derived]
6451        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6452            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6453            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6454            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6455            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6456            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6457                alloy_sol_types::private::B256::new([
6458                    128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6459                    212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8, 250u8,
6460                    133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6461                ]);
6462            const ANONYMOUS: bool = false;
6463            #[allow(unused_variables)]
6464            #[inline]
6465            fn new(
6466                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6467                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6468            ) -> Self {
6469                Self {
6470                    permissionedProver: data.0,
6471                }
6472            }
6473            #[inline]
6474            fn check_signature(
6475                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6476            ) -> alloy_sol_types::Result<()> {
6477                if topics.0 != Self::SIGNATURE_HASH {
6478                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6479                        Self::SIGNATURE,
6480                        topics.0,
6481                        Self::SIGNATURE_HASH,
6482                    ));
6483                }
6484                Ok(())
6485            }
6486            #[inline]
6487            fn tokenize_body(&self) -> Self::DataToken<'_> {
6488                (
6489                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6490                        &self.permissionedProver,
6491                    ),
6492                )
6493            }
6494            #[inline]
6495            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6496                (Self::SIGNATURE_HASH.into(),)
6497            }
6498            #[inline]
6499            fn encode_topics_raw(
6500                &self,
6501                out: &mut [alloy_sol_types::abi::token::WordToken],
6502            ) -> alloy_sol_types::Result<()> {
6503                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6504                    return Err(alloy_sol_types::Error::Overrun);
6505                }
6506                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6507                Ok(())
6508            }
6509        }
6510        #[automatically_derived]
6511        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6512            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6513                From::from(self)
6514            }
6515            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6516                From::from(&self)
6517            }
6518        }
6519        #[automatically_derived]
6520        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6521            #[inline]
6522            fn from(this: &PermissionedProverRequired) -> alloy_sol_types::private::LogData {
6523                alloy_sol_types::SolEvent::encode_log_data(this)
6524            }
6525        }
6526    };
6527    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6528    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6529    ```solidity
6530    event Upgrade(address implementation);
6531    ```*/
6532    #[allow(
6533        non_camel_case_types,
6534        non_snake_case,
6535        clippy::pub_underscore_fields,
6536        clippy::style
6537    )]
6538    #[derive(Clone)]
6539    pub struct Upgrade {
6540        #[allow(missing_docs)]
6541        pub implementation: alloy::sol_types::private::Address,
6542    }
6543    #[allow(
6544        non_camel_case_types,
6545        non_snake_case,
6546        clippy::pub_underscore_fields,
6547        clippy::style
6548    )]
6549    const _: () = {
6550        use alloy::sol_types as alloy_sol_types;
6551        #[automatically_derived]
6552        impl alloy_sol_types::SolEvent for Upgrade {
6553            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6554            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6555            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6556            const SIGNATURE: &'static str = "Upgrade(address)";
6557            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6558                alloy_sol_types::private::B256::new([
6559                    247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
6560                    22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8,
6561                    237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6562                ]);
6563            const ANONYMOUS: bool = false;
6564            #[allow(unused_variables)]
6565            #[inline]
6566            fn new(
6567                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6568                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6569            ) -> Self {
6570                Self {
6571                    implementation: data.0,
6572                }
6573            }
6574            #[inline]
6575            fn check_signature(
6576                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6577            ) -> alloy_sol_types::Result<()> {
6578                if topics.0 != Self::SIGNATURE_HASH {
6579                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6580                        Self::SIGNATURE,
6581                        topics.0,
6582                        Self::SIGNATURE_HASH,
6583                    ));
6584                }
6585                Ok(())
6586            }
6587            #[inline]
6588            fn tokenize_body(&self) -> Self::DataToken<'_> {
6589                (
6590                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6591                        &self.implementation,
6592                    ),
6593                )
6594            }
6595            #[inline]
6596            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6597                (Self::SIGNATURE_HASH.into(),)
6598            }
6599            #[inline]
6600            fn encode_topics_raw(
6601                &self,
6602                out: &mut [alloy_sol_types::abi::token::WordToken],
6603            ) -> alloy_sol_types::Result<()> {
6604                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6605                    return Err(alloy_sol_types::Error::Overrun);
6606                }
6607                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6608                Ok(())
6609            }
6610        }
6611        #[automatically_derived]
6612        impl alloy_sol_types::private::IntoLogData for Upgrade {
6613            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6614                From::from(self)
6615            }
6616            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6617                From::from(&self)
6618            }
6619        }
6620        #[automatically_derived]
6621        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6622            #[inline]
6623            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6624                alloy_sol_types::SolEvent::encode_log_data(this)
6625            }
6626        }
6627    };
6628    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6629    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6630    ```solidity
6631    event Upgraded(address indexed implementation);
6632    ```*/
6633    #[allow(
6634        non_camel_case_types,
6635        non_snake_case,
6636        clippy::pub_underscore_fields,
6637        clippy::style
6638    )]
6639    #[derive(Clone)]
6640    pub struct Upgraded {
6641        #[allow(missing_docs)]
6642        pub implementation: alloy::sol_types::private::Address,
6643    }
6644    #[allow(
6645        non_camel_case_types,
6646        non_snake_case,
6647        clippy::pub_underscore_fields,
6648        clippy::style
6649    )]
6650    const _: () = {
6651        use alloy::sol_types as alloy_sol_types;
6652        #[automatically_derived]
6653        impl alloy_sol_types::SolEvent for Upgraded {
6654            type DataTuple<'a> = ();
6655            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6656            type TopicList = (
6657                alloy_sol_types::sol_data::FixedBytes<32>,
6658                alloy::sol_types::sol_data::Address,
6659            );
6660            const SIGNATURE: &'static str = "Upgraded(address)";
6661            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
6662                alloy_sol_types::private::B256::new([
6663                    188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6664                    179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8,
6665                    192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6666                ]);
6667            const ANONYMOUS: bool = false;
6668            #[allow(unused_variables)]
6669            #[inline]
6670            fn new(
6671                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6672                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6673            ) -> Self {
6674                Self {
6675                    implementation: topics.1,
6676                }
6677            }
6678            #[inline]
6679            fn check_signature(
6680                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6681            ) -> alloy_sol_types::Result<()> {
6682                if topics.0 != Self::SIGNATURE_HASH {
6683                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
6684                        Self::SIGNATURE,
6685                        topics.0,
6686                        Self::SIGNATURE_HASH,
6687                    ));
6688                }
6689                Ok(())
6690            }
6691            #[inline]
6692            fn tokenize_body(&self) -> Self::DataToken<'_> {
6693                ()
6694            }
6695            #[inline]
6696            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6697                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6698            }
6699            #[inline]
6700            fn encode_topics_raw(
6701                &self,
6702                out: &mut [alloy_sol_types::abi::token::WordToken],
6703            ) -> alloy_sol_types::Result<()> {
6704                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6705                    return Err(alloy_sol_types::Error::Overrun);
6706                }
6707                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
6708                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6709                    &self.implementation,
6710                );
6711                Ok(())
6712            }
6713        }
6714        #[automatically_derived]
6715        impl alloy_sol_types::private::IntoLogData for Upgraded {
6716            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6717                From::from(self)
6718            }
6719            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6720                From::from(&self)
6721            }
6722        }
6723        #[automatically_derived]
6724        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6725            #[inline]
6726            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6727                alloy_sol_types::SolEvent::encode_log_data(this)
6728            }
6729        }
6730    };
6731    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6732    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6733    ```solidity
6734    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6735    ```*/
6736    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6737    #[derive(Clone)]
6738    pub struct UPGRADE_INTERFACE_VERSIONCall {}
6739    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6740    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6741    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6742    #[derive(Clone)]
6743    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6744        #[allow(missing_docs)]
6745        pub _0: alloy::sol_types::private::String,
6746    }
6747    #[allow(
6748        non_camel_case_types,
6749        non_snake_case,
6750        clippy::pub_underscore_fields,
6751        clippy::style
6752    )]
6753    const _: () = {
6754        use alloy::sol_types as alloy_sol_types;
6755        {
6756            #[doc(hidden)]
6757            type UnderlyingSolTuple<'a> = ();
6758            #[doc(hidden)]
6759            type UnderlyingRustTuple<'a> = ();
6760            #[cfg(test)]
6761            #[allow(dead_code, unreachable_patterns)]
6762            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6763                match _t {
6764                    alloy_sol_types::private::AssertTypeEq::<
6765                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6766                    >(_) => {},
6767                }
6768            }
6769            #[automatically_derived]
6770            #[doc(hidden)]
6771            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall> for UnderlyingRustTuple<'_> {
6772                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6773                    ()
6774                }
6775            }
6776            #[automatically_derived]
6777            #[doc(hidden)]
6778            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONCall {
6779                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6780                    Self {}
6781                }
6782            }
6783        }
6784        {
6785            #[doc(hidden)]
6786            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6787            #[doc(hidden)]
6788            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6789            #[cfg(test)]
6790            #[allow(dead_code, unreachable_patterns)]
6791            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6792                match _t {
6793                    alloy_sol_types::private::AssertTypeEq::<
6794                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6795                    >(_) => {},
6796                }
6797            }
6798            #[automatically_derived]
6799            #[doc(hidden)]
6800            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn> for UnderlyingRustTuple<'_> {
6801                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6802                    (value._0,)
6803                }
6804            }
6805            #[automatically_derived]
6806            #[doc(hidden)]
6807            impl ::core::convert::From<UnderlyingRustTuple<'_>> for UPGRADE_INTERFACE_VERSIONReturn {
6808                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6809                    Self { _0: tuple.0 }
6810                }
6811            }
6812        }
6813        #[automatically_derived]
6814        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6815            type Parameters<'a> = ();
6816            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6817            type Return = UPGRADE_INTERFACE_VERSIONReturn;
6818            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6819            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6820            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6821            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6822            #[inline]
6823            fn new<'a>(
6824                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6825            ) -> Self {
6826                tuple.into()
6827            }
6828            #[inline]
6829            fn tokenize(&self) -> Self::Token<'_> {
6830                ()
6831            }
6832            #[inline]
6833            fn abi_decode_returns(
6834                data: &[u8],
6835                validate: bool,
6836            ) -> alloy_sol_types::Result<Self::Return> {
6837                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6838                    data, validate,
6839                )
6840                .map(Into::into)
6841            }
6842        }
6843    };
6844    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6845    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6846    ```solidity
6847    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6848    ```*/
6849    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6850    #[derive(Clone)]
6851    pub struct _getVkCall {}
6852    #[derive()]
6853    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6854    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6855    #[derive(Clone)]
6856    pub struct _getVkReturn {
6857        #[allow(missing_docs)]
6858        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6859    }
6860    #[allow(
6861        non_camel_case_types,
6862        non_snake_case,
6863        clippy::pub_underscore_fields,
6864        clippy::style
6865    )]
6866    const _: () = {
6867        use alloy::sol_types as alloy_sol_types;
6868        {
6869            #[doc(hidden)]
6870            type UnderlyingSolTuple<'a> = ();
6871            #[doc(hidden)]
6872            type UnderlyingRustTuple<'a> = ();
6873            #[cfg(test)]
6874            #[allow(dead_code, unreachable_patterns)]
6875            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6876                match _t {
6877                    alloy_sol_types::private::AssertTypeEq::<
6878                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6879                    >(_) => {},
6880                }
6881            }
6882            #[automatically_derived]
6883            #[doc(hidden)]
6884            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6885                fn from(value: _getVkCall) -> Self {
6886                    ()
6887                }
6888            }
6889            #[automatically_derived]
6890            #[doc(hidden)]
6891            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6893                    Self {}
6894                }
6895            }
6896        }
6897        {
6898            #[doc(hidden)]
6899            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6900            #[doc(hidden)]
6901            type UnderlyingRustTuple<'a> =
6902                (<IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,);
6903            #[cfg(test)]
6904            #[allow(dead_code, unreachable_patterns)]
6905            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6906                match _t {
6907                    alloy_sol_types::private::AssertTypeEq::<
6908                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6909                    >(_) => {},
6910                }
6911            }
6912            #[automatically_derived]
6913            #[doc(hidden)]
6914            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
6915                fn from(value: _getVkReturn) -> Self {
6916                    (value.vk,)
6917                }
6918            }
6919            #[automatically_derived]
6920            #[doc(hidden)]
6921            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
6922                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6923                    Self { vk: tuple.0 }
6924                }
6925            }
6926        }
6927        #[automatically_derived]
6928        impl alloy_sol_types::SolCall for _getVkCall {
6929            type Parameters<'a> = ();
6930            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6931            type Return = _getVkReturn;
6932            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6933            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6934            const SIGNATURE: &'static str = "_getVk()";
6935            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
6936            #[inline]
6937            fn new<'a>(
6938                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6939            ) -> Self {
6940                tuple.into()
6941            }
6942            #[inline]
6943            fn tokenize(&self) -> Self::Token<'_> {
6944                ()
6945            }
6946            #[inline]
6947            fn abi_decode_returns(
6948                data: &[u8],
6949                validate: bool,
6950            ) -> alloy_sol_types::Result<Self::Return> {
6951                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6952                    data, validate,
6953                )
6954                .map(Into::into)
6955            }
6956        }
6957    };
6958    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6959    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
6960    ```solidity
6961    function blocksPerEpoch() external view returns (uint64);
6962    ```*/
6963    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6964    #[derive(Clone)]
6965    pub struct blocksPerEpochCall {}
6966    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6967    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
6968    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6969    #[derive(Clone)]
6970    pub struct blocksPerEpochReturn {
6971        #[allow(missing_docs)]
6972        pub _0: u64,
6973    }
6974    #[allow(
6975        non_camel_case_types,
6976        non_snake_case,
6977        clippy::pub_underscore_fields,
6978        clippy::style
6979    )]
6980    const _: () = {
6981        use alloy::sol_types as alloy_sol_types;
6982        {
6983            #[doc(hidden)]
6984            type UnderlyingSolTuple<'a> = ();
6985            #[doc(hidden)]
6986            type UnderlyingRustTuple<'a> = ();
6987            #[cfg(test)]
6988            #[allow(dead_code, unreachable_patterns)]
6989            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6990                match _t {
6991                    alloy_sol_types::private::AssertTypeEq::<
6992                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6993                    >(_) => {},
6994                }
6995            }
6996            #[automatically_derived]
6997            #[doc(hidden)]
6998            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
6999                fn from(value: blocksPerEpochCall) -> Self {
7000                    ()
7001                }
7002            }
7003            #[automatically_derived]
7004            #[doc(hidden)]
7005            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
7006                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7007                    Self {}
7008                }
7009            }
7010        }
7011        {
7012            #[doc(hidden)]
7013            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7014            #[doc(hidden)]
7015            type UnderlyingRustTuple<'a> = (u64,);
7016            #[cfg(test)]
7017            #[allow(dead_code, unreachable_patterns)]
7018            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7019                match _t {
7020                    alloy_sol_types::private::AssertTypeEq::<
7021                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7022                    >(_) => {},
7023                }
7024            }
7025            #[automatically_derived]
7026            #[doc(hidden)]
7027            impl ::core::convert::From<blocksPerEpochReturn> for UnderlyingRustTuple<'_> {
7028                fn from(value: blocksPerEpochReturn) -> Self {
7029                    (value._0,)
7030                }
7031            }
7032            #[automatically_derived]
7033            #[doc(hidden)]
7034            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochReturn {
7035                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7036                    Self { _0: tuple.0 }
7037                }
7038            }
7039        }
7040        #[automatically_derived]
7041        impl alloy_sol_types::SolCall for blocksPerEpochCall {
7042            type Parameters<'a> = ();
7043            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7044            type Return = blocksPerEpochReturn;
7045            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7046            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7047            const SIGNATURE: &'static str = "blocksPerEpoch()";
7048            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
7049            #[inline]
7050            fn new<'a>(
7051                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7052            ) -> Self {
7053                tuple.into()
7054            }
7055            #[inline]
7056            fn tokenize(&self) -> Self::Token<'_> {
7057                ()
7058            }
7059            #[inline]
7060            fn abi_decode_returns(
7061                data: &[u8],
7062                validate: bool,
7063            ) -> alloy_sol_types::Result<Self::Return> {
7064                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7065                    data, validate,
7066                )
7067                .map(Into::into)
7068            }
7069        }
7070    };
7071    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7072    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7073    ```solidity
7074    function currentBlockNumber() external view returns (uint256);
7075    ```*/
7076    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7077    #[derive(Clone)]
7078    pub struct currentBlockNumberCall {}
7079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7080    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7081    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7082    #[derive(Clone)]
7083    pub struct currentBlockNumberReturn {
7084        #[allow(missing_docs)]
7085        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7086    }
7087    #[allow(
7088        non_camel_case_types,
7089        non_snake_case,
7090        clippy::pub_underscore_fields,
7091        clippy::style
7092    )]
7093    const _: () = {
7094        use alloy::sol_types as alloy_sol_types;
7095        {
7096            #[doc(hidden)]
7097            type UnderlyingSolTuple<'a> = ();
7098            #[doc(hidden)]
7099            type UnderlyingRustTuple<'a> = ();
7100            #[cfg(test)]
7101            #[allow(dead_code, unreachable_patterns)]
7102            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7103                match _t {
7104                    alloy_sol_types::private::AssertTypeEq::<
7105                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7106                    >(_) => {},
7107                }
7108            }
7109            #[automatically_derived]
7110            #[doc(hidden)]
7111            impl ::core::convert::From<currentBlockNumberCall> for UnderlyingRustTuple<'_> {
7112                fn from(value: currentBlockNumberCall) -> Self {
7113                    ()
7114                }
7115            }
7116            #[automatically_derived]
7117            #[doc(hidden)]
7118            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentBlockNumberCall {
7119                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7120                    Self {}
7121                }
7122            }
7123        }
7124        {
7125            #[doc(hidden)]
7126            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7127            #[doc(hidden)]
7128            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
7129            #[cfg(test)]
7130            #[allow(dead_code, unreachable_patterns)]
7131            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7132                match _t {
7133                    alloy_sol_types::private::AssertTypeEq::<
7134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7135                    >(_) => {},
7136                }
7137            }
7138            #[automatically_derived]
7139            #[doc(hidden)]
7140            impl ::core::convert::From<currentBlockNumberReturn> for UnderlyingRustTuple<'_> {
7141                fn from(value: currentBlockNumberReturn) -> Self {
7142                    (value._0,)
7143                }
7144            }
7145            #[automatically_derived]
7146            #[doc(hidden)]
7147            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentBlockNumberReturn {
7148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7149                    Self { _0: tuple.0 }
7150                }
7151            }
7152        }
7153        #[automatically_derived]
7154        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7155            type Parameters<'a> = ();
7156            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7157            type Return = currentBlockNumberReturn;
7158            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7159            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7160            const SIGNATURE: &'static str = "currentBlockNumber()";
7161            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7162            #[inline]
7163            fn new<'a>(
7164                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7165            ) -> Self {
7166                tuple.into()
7167            }
7168            #[inline]
7169            fn tokenize(&self) -> Self::Token<'_> {
7170                ()
7171            }
7172            #[inline]
7173            fn abi_decode_returns(
7174                data: &[u8],
7175                validate: bool,
7176            ) -> alloy_sol_types::Result<Self::Return> {
7177                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7178                    data, validate,
7179                )
7180                .map(Into::into)
7181            }
7182        }
7183    };
7184    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7185    /**Function with signature `currentEpoch()` and selector `0x76671808`.
7186    ```solidity
7187    function currentEpoch() external view returns (uint64);
7188    ```*/
7189    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7190    #[derive(Clone)]
7191    pub struct currentEpochCall {}
7192    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7193    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
7194    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7195    #[derive(Clone)]
7196    pub struct currentEpochReturn {
7197        #[allow(missing_docs)]
7198        pub _0: u64,
7199    }
7200    #[allow(
7201        non_camel_case_types,
7202        non_snake_case,
7203        clippy::pub_underscore_fields,
7204        clippy::style
7205    )]
7206    const _: () = {
7207        use alloy::sol_types as alloy_sol_types;
7208        {
7209            #[doc(hidden)]
7210            type UnderlyingSolTuple<'a> = ();
7211            #[doc(hidden)]
7212            type UnderlyingRustTuple<'a> = ();
7213            #[cfg(test)]
7214            #[allow(dead_code, unreachable_patterns)]
7215            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7216                match _t {
7217                    alloy_sol_types::private::AssertTypeEq::<
7218                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7219                    >(_) => {},
7220                }
7221            }
7222            #[automatically_derived]
7223            #[doc(hidden)]
7224            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
7225                fn from(value: currentEpochCall) -> Self {
7226                    ()
7227                }
7228            }
7229            #[automatically_derived]
7230            #[doc(hidden)]
7231            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
7232                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7233                    Self {}
7234                }
7235            }
7236        }
7237        {
7238            #[doc(hidden)]
7239            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7240            #[doc(hidden)]
7241            type UnderlyingRustTuple<'a> = (u64,);
7242            #[cfg(test)]
7243            #[allow(dead_code, unreachable_patterns)]
7244            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7245                match _t {
7246                    alloy_sol_types::private::AssertTypeEq::<
7247                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7248                    >(_) => {},
7249                }
7250            }
7251            #[automatically_derived]
7252            #[doc(hidden)]
7253            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
7254                fn from(value: currentEpochReturn) -> Self {
7255                    (value._0,)
7256                }
7257            }
7258            #[automatically_derived]
7259            #[doc(hidden)]
7260            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
7261                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7262                    Self { _0: tuple.0 }
7263                }
7264            }
7265        }
7266        #[automatically_derived]
7267        impl alloy_sol_types::SolCall for currentEpochCall {
7268            type Parameters<'a> = ();
7269            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7270            type Return = currentEpochReturn;
7271            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7272            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7273            const SIGNATURE: &'static str = "currentEpoch()";
7274            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
7275            #[inline]
7276            fn new<'a>(
7277                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7278            ) -> Self {
7279                tuple.into()
7280            }
7281            #[inline]
7282            fn tokenize(&self) -> Self::Token<'_> {
7283                ()
7284            }
7285            #[inline]
7286            fn abi_decode_returns(
7287                data: &[u8],
7288                validate: bool,
7289            ) -> alloy_sol_types::Result<Self::Return> {
7290                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7291                    data, validate,
7292                )
7293                .map(Into::into)
7294            }
7295        }
7296    };
7297    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7298    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7299    ```solidity
7300    function disablePermissionedProverMode() external;
7301    ```*/
7302    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7303    #[derive(Clone)]
7304    pub struct disablePermissionedProverModeCall {}
7305    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7306    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7307    #[derive(Clone)]
7308    pub struct disablePermissionedProverModeReturn {}
7309    #[allow(
7310        non_camel_case_types,
7311        non_snake_case,
7312        clippy::pub_underscore_fields,
7313        clippy::style
7314    )]
7315    const _: () = {
7316        use alloy::sol_types as alloy_sol_types;
7317        {
7318            #[doc(hidden)]
7319            type UnderlyingSolTuple<'a> = ();
7320            #[doc(hidden)]
7321            type UnderlyingRustTuple<'a> = ();
7322            #[cfg(test)]
7323            #[allow(dead_code, unreachable_patterns)]
7324            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7325                match _t {
7326                    alloy_sol_types::private::AssertTypeEq::<
7327                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7328                    >(_) => {},
7329                }
7330            }
7331            #[automatically_derived]
7332            #[doc(hidden)]
7333            impl ::core::convert::From<disablePermissionedProverModeCall> for UnderlyingRustTuple<'_> {
7334                fn from(value: disablePermissionedProverModeCall) -> Self {
7335                    ()
7336                }
7337            }
7338            #[automatically_derived]
7339            #[doc(hidden)]
7340            impl ::core::convert::From<UnderlyingRustTuple<'_>> for disablePermissionedProverModeCall {
7341                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7342                    Self {}
7343                }
7344            }
7345        }
7346        {
7347            #[doc(hidden)]
7348            type UnderlyingSolTuple<'a> = ();
7349            #[doc(hidden)]
7350            type UnderlyingRustTuple<'a> = ();
7351            #[cfg(test)]
7352            #[allow(dead_code, unreachable_patterns)]
7353            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7354                match _t {
7355                    alloy_sol_types::private::AssertTypeEq::<
7356                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7357                    >(_) => {},
7358                }
7359            }
7360            #[automatically_derived]
7361            #[doc(hidden)]
7362            impl ::core::convert::From<disablePermissionedProverModeReturn> for UnderlyingRustTuple<'_> {
7363                fn from(value: disablePermissionedProverModeReturn) -> Self {
7364                    ()
7365                }
7366            }
7367            #[automatically_derived]
7368            #[doc(hidden)]
7369            impl ::core::convert::From<UnderlyingRustTuple<'_>> for disablePermissionedProverModeReturn {
7370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7371                    Self {}
7372                }
7373            }
7374        }
7375        #[automatically_derived]
7376        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7377            type Parameters<'a> = ();
7378            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7379            type Return = disablePermissionedProverModeReturn;
7380            type ReturnTuple<'a> = ();
7381            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7382            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7383            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7384            #[inline]
7385            fn new<'a>(
7386                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7387            ) -> Self {
7388                tuple.into()
7389            }
7390            #[inline]
7391            fn tokenize(&self) -> Self::Token<'_> {
7392                ()
7393            }
7394            #[inline]
7395            fn abi_decode_returns(
7396                data: &[u8],
7397                validate: bool,
7398            ) -> alloy_sol_types::Result<Self::Return> {
7399                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7400                    data, validate,
7401                )
7402                .map(Into::into)
7403            }
7404        }
7405    };
7406    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7407    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
7408    ```solidity
7409    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
7410    ```*/
7411    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7412    #[derive(Clone)]
7413    pub struct epochFromBlockNumberCall {
7414        #[allow(missing_docs)]
7415        pub _blockNum: u64,
7416        #[allow(missing_docs)]
7417        pub _blocksPerEpoch: u64,
7418    }
7419    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7420    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
7421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7422    #[derive(Clone)]
7423    pub struct epochFromBlockNumberReturn {
7424        #[allow(missing_docs)]
7425        pub _0: u64,
7426    }
7427    #[allow(
7428        non_camel_case_types,
7429        non_snake_case,
7430        clippy::pub_underscore_fields,
7431        clippy::style
7432    )]
7433    const _: () = {
7434        use alloy::sol_types as alloy_sol_types;
7435        {
7436            #[doc(hidden)]
7437            type UnderlyingSolTuple<'a> = (
7438                alloy::sol_types::sol_data::Uint<64>,
7439                alloy::sol_types::sol_data::Uint<64>,
7440            );
7441            #[doc(hidden)]
7442            type UnderlyingRustTuple<'a> = (u64, u64);
7443            #[cfg(test)]
7444            #[allow(dead_code, unreachable_patterns)]
7445            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7446                match _t {
7447                    alloy_sol_types::private::AssertTypeEq::<
7448                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7449                    >(_) => {},
7450                }
7451            }
7452            #[automatically_derived]
7453            #[doc(hidden)]
7454            impl ::core::convert::From<epochFromBlockNumberCall> for UnderlyingRustTuple<'_> {
7455                fn from(value: epochFromBlockNumberCall) -> Self {
7456                    (value._blockNum, value._blocksPerEpoch)
7457                }
7458            }
7459            #[automatically_derived]
7460            #[doc(hidden)]
7461            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochFromBlockNumberCall {
7462                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7463                    Self {
7464                        _blockNum: tuple.0,
7465                        _blocksPerEpoch: tuple.1,
7466                    }
7467                }
7468            }
7469        }
7470        {
7471            #[doc(hidden)]
7472            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7473            #[doc(hidden)]
7474            type UnderlyingRustTuple<'a> = (u64,);
7475            #[cfg(test)]
7476            #[allow(dead_code, unreachable_patterns)]
7477            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7478                match _t {
7479                    alloy_sol_types::private::AssertTypeEq::<
7480                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7481                    >(_) => {},
7482                }
7483            }
7484            #[automatically_derived]
7485            #[doc(hidden)]
7486            impl ::core::convert::From<epochFromBlockNumberReturn> for UnderlyingRustTuple<'_> {
7487                fn from(value: epochFromBlockNumberReturn) -> Self {
7488                    (value._0,)
7489                }
7490            }
7491            #[automatically_derived]
7492            #[doc(hidden)]
7493            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochFromBlockNumberReturn {
7494                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7495                    Self { _0: tuple.0 }
7496                }
7497            }
7498        }
7499        #[automatically_derived]
7500        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
7501            type Parameters<'a> = (
7502                alloy::sol_types::sol_data::Uint<64>,
7503                alloy::sol_types::sol_data::Uint<64>,
7504            );
7505            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7506            type Return = epochFromBlockNumberReturn;
7507            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7508            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7509            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
7510            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
7511            #[inline]
7512            fn new<'a>(
7513                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7514            ) -> Self {
7515                tuple.into()
7516            }
7517            #[inline]
7518            fn tokenize(&self) -> Self::Token<'_> {
7519                (
7520                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
7521                        &self._blockNum,
7522                    ),
7523                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
7524                        &self._blocksPerEpoch,
7525                    ),
7526                )
7527            }
7528            #[inline]
7529            fn abi_decode_returns(
7530                data: &[u8],
7531                validate: bool,
7532            ) -> alloy_sol_types::Result<Self::Return> {
7533                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7534                    data, validate,
7535                )
7536                .map(Into::into)
7537            }
7538        }
7539    };
7540    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7541    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
7542    ```solidity
7543    function epochStartBlock() external view returns (uint64);
7544    ```*/
7545    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7546    #[derive(Clone)]
7547    pub struct epochStartBlockCall {}
7548    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7549    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
7550    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7551    #[derive(Clone)]
7552    pub struct epochStartBlockReturn {
7553        #[allow(missing_docs)]
7554        pub _0: u64,
7555    }
7556    #[allow(
7557        non_camel_case_types,
7558        non_snake_case,
7559        clippy::pub_underscore_fields,
7560        clippy::style
7561    )]
7562    const _: () = {
7563        use alloy::sol_types as alloy_sol_types;
7564        {
7565            #[doc(hidden)]
7566            type UnderlyingSolTuple<'a> = ();
7567            #[doc(hidden)]
7568            type UnderlyingRustTuple<'a> = ();
7569            #[cfg(test)]
7570            #[allow(dead_code, unreachable_patterns)]
7571            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7572                match _t {
7573                    alloy_sol_types::private::AssertTypeEq::<
7574                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7575                    >(_) => {},
7576                }
7577            }
7578            #[automatically_derived]
7579            #[doc(hidden)]
7580            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
7581                fn from(value: epochStartBlockCall) -> Self {
7582                    ()
7583                }
7584            }
7585            #[automatically_derived]
7586            #[doc(hidden)]
7587            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
7588                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7589                    Self {}
7590                }
7591            }
7592        }
7593        {
7594            #[doc(hidden)]
7595            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7596            #[doc(hidden)]
7597            type UnderlyingRustTuple<'a> = (u64,);
7598            #[cfg(test)]
7599            #[allow(dead_code, unreachable_patterns)]
7600            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7601                match _t {
7602                    alloy_sol_types::private::AssertTypeEq::<
7603                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7604                    >(_) => {},
7605                }
7606            }
7607            #[automatically_derived]
7608            #[doc(hidden)]
7609            impl ::core::convert::From<epochStartBlockReturn> for UnderlyingRustTuple<'_> {
7610                fn from(value: epochStartBlockReturn) -> Self {
7611                    (value._0,)
7612                }
7613            }
7614            #[automatically_derived]
7615            #[doc(hidden)]
7616            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockReturn {
7617                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7618                    Self { _0: tuple.0 }
7619                }
7620            }
7621        }
7622        #[automatically_derived]
7623        impl alloy_sol_types::SolCall for epochStartBlockCall {
7624            type Parameters<'a> = ();
7625            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7626            type Return = epochStartBlockReturn;
7627            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7628            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7629            const SIGNATURE: &'static str = "epochStartBlock()";
7630            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
7631            #[inline]
7632            fn new<'a>(
7633                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7634            ) -> Self {
7635                tuple.into()
7636            }
7637            #[inline]
7638            fn tokenize(&self) -> Self::Token<'_> {
7639                ()
7640            }
7641            #[inline]
7642            fn abi_decode_returns(
7643                data: &[u8],
7644                validate: bool,
7645            ) -> alloy_sol_types::Result<Self::Return> {
7646                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7647                    data, validate,
7648                )
7649                .map(Into::into)
7650            }
7651        }
7652    };
7653    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7654    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7655    ```solidity
7656    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7657    ```*/
7658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7659    #[derive(Clone)]
7660    pub struct finalizedStateCall {}
7661    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7662    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7663    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7664    #[derive(Clone)]
7665    pub struct finalizedStateReturn {
7666        #[allow(missing_docs)]
7667        pub viewNum: u64,
7668        #[allow(missing_docs)]
7669        pub blockHeight: u64,
7670        #[allow(missing_docs)]
7671        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7672    }
7673    #[allow(
7674        non_camel_case_types,
7675        non_snake_case,
7676        clippy::pub_underscore_fields,
7677        clippy::style
7678    )]
7679    const _: () = {
7680        use alloy::sol_types as alloy_sol_types;
7681        {
7682            #[doc(hidden)]
7683            type UnderlyingSolTuple<'a> = ();
7684            #[doc(hidden)]
7685            type UnderlyingRustTuple<'a> = ();
7686            #[cfg(test)]
7687            #[allow(dead_code, unreachable_patterns)]
7688            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7689                match _t {
7690                    alloy_sol_types::private::AssertTypeEq::<
7691                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7692                    >(_) => {},
7693                }
7694            }
7695            #[automatically_derived]
7696            #[doc(hidden)]
7697            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7698                fn from(value: finalizedStateCall) -> Self {
7699                    ()
7700                }
7701            }
7702            #[automatically_derived]
7703            #[doc(hidden)]
7704            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7705                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7706                    Self {}
7707                }
7708            }
7709        }
7710        {
7711            #[doc(hidden)]
7712            type UnderlyingSolTuple<'a> = (
7713                alloy::sol_types::sol_data::Uint<64>,
7714                alloy::sol_types::sol_data::Uint<64>,
7715                BN254::ScalarField,
7716            );
7717            #[doc(hidden)]
7718            type UnderlyingRustTuple<'a> = (
7719                u64,
7720                u64,
7721                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7722            );
7723            #[cfg(test)]
7724            #[allow(dead_code, unreachable_patterns)]
7725            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7726                match _t {
7727                    alloy_sol_types::private::AssertTypeEq::<
7728                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7729                    >(_) => {},
7730                }
7731            }
7732            #[automatically_derived]
7733            #[doc(hidden)]
7734            impl ::core::convert::From<finalizedStateReturn> for UnderlyingRustTuple<'_> {
7735                fn from(value: finalizedStateReturn) -> Self {
7736                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7737                }
7738            }
7739            #[automatically_derived]
7740            #[doc(hidden)]
7741            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateReturn {
7742                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7743                    Self {
7744                        viewNum: tuple.0,
7745                        blockHeight: tuple.1,
7746                        blockCommRoot: tuple.2,
7747                    }
7748                }
7749            }
7750        }
7751        #[automatically_derived]
7752        impl alloy_sol_types::SolCall for finalizedStateCall {
7753            type Parameters<'a> = ();
7754            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7755            type Return = finalizedStateReturn;
7756            type ReturnTuple<'a> = (
7757                alloy::sol_types::sol_data::Uint<64>,
7758                alloy::sol_types::sol_data::Uint<64>,
7759                BN254::ScalarField,
7760            );
7761            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7762            const SIGNATURE: &'static str = "finalizedState()";
7763            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7764            #[inline]
7765            fn new<'a>(
7766                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7767            ) -> Self {
7768                tuple.into()
7769            }
7770            #[inline]
7771            fn tokenize(&self) -> Self::Token<'_> {
7772                ()
7773            }
7774            #[inline]
7775            fn abi_decode_returns(
7776                data: &[u8],
7777                validate: bool,
7778            ) -> alloy_sol_types::Result<Self::Return> {
7779                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7780                    data, validate,
7781                )
7782                .map(Into::into)
7783            }
7784        }
7785    };
7786    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7787    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7788    ```solidity
7789    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7790    ```*/
7791    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7792    #[derive(Clone)]
7793    pub struct genesisStakeTableStateCall {}
7794    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7795    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7796    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7797    #[derive(Clone)]
7798    pub struct genesisStakeTableStateReturn {
7799        #[allow(missing_docs)]
7800        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7801        #[allow(missing_docs)]
7802        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7803        #[allow(missing_docs)]
7804        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7805        #[allow(missing_docs)]
7806        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7807    }
7808    #[allow(
7809        non_camel_case_types,
7810        non_snake_case,
7811        clippy::pub_underscore_fields,
7812        clippy::style
7813    )]
7814    const _: () = {
7815        use alloy::sol_types as alloy_sol_types;
7816        {
7817            #[doc(hidden)]
7818            type UnderlyingSolTuple<'a> = ();
7819            #[doc(hidden)]
7820            type UnderlyingRustTuple<'a> = ();
7821            #[cfg(test)]
7822            #[allow(dead_code, unreachable_patterns)]
7823            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7824                match _t {
7825                    alloy_sol_types::private::AssertTypeEq::<
7826                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7827                    >(_) => {},
7828                }
7829            }
7830            #[automatically_derived]
7831            #[doc(hidden)]
7832            impl ::core::convert::From<genesisStakeTableStateCall> for UnderlyingRustTuple<'_> {
7833                fn from(value: genesisStakeTableStateCall) -> Self {
7834                    ()
7835                }
7836            }
7837            #[automatically_derived]
7838            #[doc(hidden)]
7839            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStakeTableStateCall {
7840                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7841                    Self {}
7842                }
7843            }
7844        }
7845        {
7846            #[doc(hidden)]
7847            type UnderlyingSolTuple<'a> = (
7848                alloy::sol_types::sol_data::Uint<256>,
7849                BN254::ScalarField,
7850                BN254::ScalarField,
7851                BN254::ScalarField,
7852            );
7853            #[doc(hidden)]
7854            type UnderlyingRustTuple<'a> = (
7855                alloy::sol_types::private::primitives::aliases::U256,
7856                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7857                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7858                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7859            );
7860            #[cfg(test)]
7861            #[allow(dead_code, unreachable_patterns)]
7862            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7863                match _t {
7864                    alloy_sol_types::private::AssertTypeEq::<
7865                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7866                    >(_) => {},
7867                }
7868            }
7869            #[automatically_derived]
7870            #[doc(hidden)]
7871            impl ::core::convert::From<genesisStakeTableStateReturn> for UnderlyingRustTuple<'_> {
7872                fn from(value: genesisStakeTableStateReturn) -> Self {
7873                    (
7874                        value.threshold,
7875                        value.blsKeyComm,
7876                        value.schnorrKeyComm,
7877                        value.amountComm,
7878                    )
7879                }
7880            }
7881            #[automatically_derived]
7882            #[doc(hidden)]
7883            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStakeTableStateReturn {
7884                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7885                    Self {
7886                        threshold: tuple.0,
7887                        blsKeyComm: tuple.1,
7888                        schnorrKeyComm: tuple.2,
7889                        amountComm: tuple.3,
7890                    }
7891                }
7892            }
7893        }
7894        #[automatically_derived]
7895        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7896            type Parameters<'a> = ();
7897            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
7898            type Return = genesisStakeTableStateReturn;
7899            type ReturnTuple<'a> = (
7900                alloy::sol_types::sol_data::Uint<256>,
7901                BN254::ScalarField,
7902                BN254::ScalarField,
7903                BN254::ScalarField,
7904            );
7905            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
7906            const SIGNATURE: &'static str = "genesisStakeTableState()";
7907            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7908            #[inline]
7909            fn new<'a>(
7910                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7911            ) -> Self {
7912                tuple.into()
7913            }
7914            #[inline]
7915            fn tokenize(&self) -> Self::Token<'_> {
7916                ()
7917            }
7918            #[inline]
7919            fn abi_decode_returns(
7920                data: &[u8],
7921                validate: bool,
7922            ) -> alloy_sol_types::Result<Self::Return> {
7923                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
7924                    data, validate,
7925                )
7926                .map(Into::into)
7927            }
7928        }
7929    };
7930    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7931    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7932    ```solidity
7933    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7934    ```*/
7935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7936    #[derive(Clone)]
7937    pub struct genesisStateCall {}
7938    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7939    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7941    #[derive(Clone)]
7942    pub struct genesisStateReturn {
7943        #[allow(missing_docs)]
7944        pub viewNum: u64,
7945        #[allow(missing_docs)]
7946        pub blockHeight: u64,
7947        #[allow(missing_docs)]
7948        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7949    }
7950    #[allow(
7951        non_camel_case_types,
7952        non_snake_case,
7953        clippy::pub_underscore_fields,
7954        clippy::style
7955    )]
7956    const _: () = {
7957        use alloy::sol_types as alloy_sol_types;
7958        {
7959            #[doc(hidden)]
7960            type UnderlyingSolTuple<'a> = ();
7961            #[doc(hidden)]
7962            type UnderlyingRustTuple<'a> = ();
7963            #[cfg(test)]
7964            #[allow(dead_code, unreachable_patterns)]
7965            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
7966                match _t {
7967                    alloy_sol_types::private::AssertTypeEq::<
7968                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7969                    >(_) => {},
7970                }
7971            }
7972            #[automatically_derived]
7973            #[doc(hidden)]
7974            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7975                fn from(value: genesisStateCall) -> Self {
7976                    ()
7977                }
7978            }
7979            #[automatically_derived]
7980            #[doc(hidden)]
7981            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7982                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7983                    Self {}
7984                }
7985            }
7986        }
7987        {
7988            #[doc(hidden)]
7989            type UnderlyingSolTuple<'a> = (
7990                alloy::sol_types::sol_data::Uint<64>,
7991                alloy::sol_types::sol_data::Uint<64>,
7992                BN254::ScalarField,
7993            );
7994            #[doc(hidden)]
7995            type UnderlyingRustTuple<'a> = (
7996                u64,
7997                u64,
7998                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7999            );
8000            #[cfg(test)]
8001            #[allow(dead_code, unreachable_patterns)]
8002            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8003                match _t {
8004                    alloy_sol_types::private::AssertTypeEq::<
8005                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8006                    >(_) => {},
8007                }
8008            }
8009            #[automatically_derived]
8010            #[doc(hidden)]
8011            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
8012                fn from(value: genesisStateReturn) -> Self {
8013                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8014                }
8015            }
8016            #[automatically_derived]
8017            #[doc(hidden)]
8018            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
8019                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8020                    Self {
8021                        viewNum: tuple.0,
8022                        blockHeight: tuple.1,
8023                        blockCommRoot: tuple.2,
8024                    }
8025                }
8026            }
8027        }
8028        #[automatically_derived]
8029        impl alloy_sol_types::SolCall for genesisStateCall {
8030            type Parameters<'a> = ();
8031            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8032            type Return = genesisStateReturn;
8033            type ReturnTuple<'a> = (
8034                alloy::sol_types::sol_data::Uint<64>,
8035                alloy::sol_types::sol_data::Uint<64>,
8036                BN254::ScalarField,
8037            );
8038            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8039            const SIGNATURE: &'static str = "genesisState()";
8040            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
8041            #[inline]
8042            fn new<'a>(
8043                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8044            ) -> Self {
8045                tuple.into()
8046            }
8047            #[inline]
8048            fn tokenize(&self) -> Self::Token<'_> {
8049                ()
8050            }
8051            #[inline]
8052            fn abi_decode_returns(
8053                data: &[u8],
8054                validate: bool,
8055            ) -> alloy_sol_types::Result<Self::Return> {
8056                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8057                    data, validate,
8058                )
8059                .map(Into::into)
8060            }
8061        }
8062    };
8063    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8064    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
8065    ```solidity
8066    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
8067    ```*/
8068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8069    #[derive(Clone)]
8070    pub struct getHotShotCommitmentCall {
8071        #[allow(missing_docs)]
8072        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
8073    }
8074    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8075    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
8076    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8077    #[derive(Clone)]
8078    pub struct getHotShotCommitmentReturn {
8079        #[allow(missing_docs)]
8080        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8081        #[allow(missing_docs)]
8082        pub hotshotBlockHeight: u64,
8083    }
8084    #[allow(
8085        non_camel_case_types,
8086        non_snake_case,
8087        clippy::pub_underscore_fields,
8088        clippy::style
8089    )]
8090    const _: () = {
8091        use alloy::sol_types as alloy_sol_types;
8092        {
8093            #[doc(hidden)]
8094            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8095            #[doc(hidden)]
8096            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8097            #[cfg(test)]
8098            #[allow(dead_code, unreachable_patterns)]
8099            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8100                match _t {
8101                    alloy_sol_types::private::AssertTypeEq::<
8102                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8103                    >(_) => {},
8104                }
8105            }
8106            #[automatically_derived]
8107            #[doc(hidden)]
8108            impl ::core::convert::From<getHotShotCommitmentCall> for UnderlyingRustTuple<'_> {
8109                fn from(value: getHotShotCommitmentCall) -> Self {
8110                    (value.hotShotBlockHeight,)
8111                }
8112            }
8113            #[automatically_derived]
8114            #[doc(hidden)]
8115            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getHotShotCommitmentCall {
8116                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8117                    Self {
8118                        hotShotBlockHeight: tuple.0,
8119                    }
8120                }
8121            }
8122        }
8123        {
8124            #[doc(hidden)]
8125            type UnderlyingSolTuple<'a> =
8126                (BN254::ScalarField, alloy::sol_types::sol_data::Uint<64>);
8127            #[doc(hidden)]
8128            type UnderlyingRustTuple<'a> = (
8129                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8130                u64,
8131            );
8132            #[cfg(test)]
8133            #[allow(dead_code, unreachable_patterns)]
8134            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8135                match _t {
8136                    alloy_sol_types::private::AssertTypeEq::<
8137                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8138                    >(_) => {},
8139                }
8140            }
8141            #[automatically_derived]
8142            #[doc(hidden)]
8143            impl ::core::convert::From<getHotShotCommitmentReturn> for UnderlyingRustTuple<'_> {
8144                fn from(value: getHotShotCommitmentReturn) -> Self {
8145                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8146                }
8147            }
8148            #[automatically_derived]
8149            #[doc(hidden)]
8150            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getHotShotCommitmentReturn {
8151                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8152                    Self {
8153                        hotShotBlockCommRoot: tuple.0,
8154                        hotshotBlockHeight: tuple.1,
8155                    }
8156                }
8157            }
8158        }
8159        #[automatically_derived]
8160        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8161            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8162            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8163            type Return = getHotShotCommitmentReturn;
8164            type ReturnTuple<'a> = (BN254::ScalarField, alloy::sol_types::sol_data::Uint<64>);
8165            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8166            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8167            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8168            #[inline]
8169            fn new<'a>(
8170                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8171            ) -> Self {
8172                tuple.into()
8173            }
8174            #[inline]
8175            fn tokenize(&self) -> Self::Token<'_> {
8176                (
8177                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
8178                        &self.hotShotBlockHeight,
8179                    ),
8180                )
8181            }
8182            #[inline]
8183            fn abi_decode_returns(
8184                data: &[u8],
8185                validate: bool,
8186            ) -> alloy_sol_types::Result<Self::Return> {
8187                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8188                    data, validate,
8189                )
8190                .map(Into::into)
8191            }
8192        }
8193    };
8194    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8195    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8196    ```solidity
8197    function getStateHistoryCount() external view returns (uint256);
8198    ```*/
8199    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8200    #[derive(Clone)]
8201    pub struct getStateHistoryCountCall {}
8202    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8203    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8204    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8205    #[derive(Clone)]
8206    pub struct getStateHistoryCountReturn {
8207        #[allow(missing_docs)]
8208        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8209    }
8210    #[allow(
8211        non_camel_case_types,
8212        non_snake_case,
8213        clippy::pub_underscore_fields,
8214        clippy::style
8215    )]
8216    const _: () = {
8217        use alloy::sol_types as alloy_sol_types;
8218        {
8219            #[doc(hidden)]
8220            type UnderlyingSolTuple<'a> = ();
8221            #[doc(hidden)]
8222            type UnderlyingRustTuple<'a> = ();
8223            #[cfg(test)]
8224            #[allow(dead_code, unreachable_patterns)]
8225            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8226                match _t {
8227                    alloy_sol_types::private::AssertTypeEq::<
8228                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8229                    >(_) => {},
8230                }
8231            }
8232            #[automatically_derived]
8233            #[doc(hidden)]
8234            impl ::core::convert::From<getStateHistoryCountCall> for UnderlyingRustTuple<'_> {
8235                fn from(value: getStateHistoryCountCall) -> Self {
8236                    ()
8237                }
8238            }
8239            #[automatically_derived]
8240            #[doc(hidden)]
8241            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStateHistoryCountCall {
8242                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8243                    Self {}
8244                }
8245            }
8246        }
8247        {
8248            #[doc(hidden)]
8249            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8250            #[doc(hidden)]
8251            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
8252            #[cfg(test)]
8253            #[allow(dead_code, unreachable_patterns)]
8254            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8255                match _t {
8256                    alloy_sol_types::private::AssertTypeEq::<
8257                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8258                    >(_) => {},
8259                }
8260            }
8261            #[automatically_derived]
8262            #[doc(hidden)]
8263            impl ::core::convert::From<getStateHistoryCountReturn> for UnderlyingRustTuple<'_> {
8264                fn from(value: getStateHistoryCountReturn) -> Self {
8265                    (value._0,)
8266                }
8267            }
8268            #[automatically_derived]
8269            #[doc(hidden)]
8270            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getStateHistoryCountReturn {
8271                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8272                    Self { _0: tuple.0 }
8273                }
8274            }
8275        }
8276        #[automatically_derived]
8277        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8278            type Parameters<'a> = ();
8279            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8280            type Return = getStateHistoryCountReturn;
8281            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8282            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8283            const SIGNATURE: &'static str = "getStateHistoryCount()";
8284            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8285            #[inline]
8286            fn new<'a>(
8287                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8288            ) -> Self {
8289                tuple.into()
8290            }
8291            #[inline]
8292            fn tokenize(&self) -> Self::Token<'_> {
8293                ()
8294            }
8295            #[inline]
8296            fn abi_decode_returns(
8297                data: &[u8],
8298                validate: bool,
8299            ) -> alloy_sol_types::Result<Self::Return> {
8300                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8301                    data, validate,
8302                )
8303                .map(Into::into)
8304            }
8305        }
8306    };
8307    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8308    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8309    ```solidity
8310    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8311    ```*/
8312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8313    #[derive(Clone)]
8314    pub struct getVersionCall {}
8315    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8316    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8317    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8318    #[derive(Clone)]
8319    pub struct getVersionReturn {
8320        #[allow(missing_docs)]
8321        pub majorVersion: u8,
8322        #[allow(missing_docs)]
8323        pub minorVersion: u8,
8324        #[allow(missing_docs)]
8325        pub patchVersion: u8,
8326    }
8327    #[allow(
8328        non_camel_case_types,
8329        non_snake_case,
8330        clippy::pub_underscore_fields,
8331        clippy::style
8332    )]
8333    const _: () = {
8334        use alloy::sol_types as alloy_sol_types;
8335        {
8336            #[doc(hidden)]
8337            type UnderlyingSolTuple<'a> = ();
8338            #[doc(hidden)]
8339            type UnderlyingRustTuple<'a> = ();
8340            #[cfg(test)]
8341            #[allow(dead_code, unreachable_patterns)]
8342            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8343                match _t {
8344                    alloy_sol_types::private::AssertTypeEq::<
8345                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8346                    >(_) => {},
8347                }
8348            }
8349            #[automatically_derived]
8350            #[doc(hidden)]
8351            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8352                fn from(value: getVersionCall) -> Self {
8353                    ()
8354                }
8355            }
8356            #[automatically_derived]
8357            #[doc(hidden)]
8358            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8359                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8360                    Self {}
8361                }
8362            }
8363        }
8364        {
8365            #[doc(hidden)]
8366            type UnderlyingSolTuple<'a> = (
8367                alloy::sol_types::sol_data::Uint<8>,
8368                alloy::sol_types::sol_data::Uint<8>,
8369                alloy::sol_types::sol_data::Uint<8>,
8370            );
8371            #[doc(hidden)]
8372            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8373            #[cfg(test)]
8374            #[allow(dead_code, unreachable_patterns)]
8375            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8376                match _t {
8377                    alloy_sol_types::private::AssertTypeEq::<
8378                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8379                    >(_) => {},
8380                }
8381            }
8382            #[automatically_derived]
8383            #[doc(hidden)]
8384            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8385                fn from(value: getVersionReturn) -> Self {
8386                    (value.majorVersion, value.minorVersion, value.patchVersion)
8387                }
8388            }
8389            #[automatically_derived]
8390            #[doc(hidden)]
8391            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8392                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8393                    Self {
8394                        majorVersion: tuple.0,
8395                        minorVersion: tuple.1,
8396                        patchVersion: tuple.2,
8397                    }
8398                }
8399            }
8400        }
8401        #[automatically_derived]
8402        impl alloy_sol_types::SolCall for getVersionCall {
8403            type Parameters<'a> = ();
8404            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8405            type Return = getVersionReturn;
8406            type ReturnTuple<'a> = (
8407                alloy::sol_types::sol_data::Uint<8>,
8408                alloy::sol_types::sol_data::Uint<8>,
8409                alloy::sol_types::sol_data::Uint<8>,
8410            );
8411            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8412            const SIGNATURE: &'static str = "getVersion()";
8413            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8414            #[inline]
8415            fn new<'a>(
8416                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8417            ) -> Self {
8418                tuple.into()
8419            }
8420            #[inline]
8421            fn tokenize(&self) -> Self::Token<'_> {
8422                ()
8423            }
8424            #[inline]
8425            fn abi_decode_returns(
8426                data: &[u8],
8427                validate: bool,
8428            ) -> alloy_sol_types::Result<Self::Return> {
8429                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8430                    data, validate,
8431                )
8432                .map(Into::into)
8433            }
8434        }
8435    };
8436    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8437    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8438    ```solidity
8439    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8440    ```*/
8441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8442    #[derive(Clone)]
8443    pub struct initializeCall {
8444        #[allow(missing_docs)]
8445        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8446        #[allow(missing_docs)]
8447        pub _genesisStakeTableState:
8448            <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8449        #[allow(missing_docs)]
8450        pub _stateHistoryRetentionPeriod: u32,
8451        #[allow(missing_docs)]
8452        pub owner: alloy::sol_types::private::Address,
8453    }
8454    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8455    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8456    #[derive(Clone)]
8457    pub struct initializeReturn {}
8458    #[allow(
8459        non_camel_case_types,
8460        non_snake_case,
8461        clippy::pub_underscore_fields,
8462        clippy::style
8463    )]
8464    const _: () = {
8465        use alloy::sol_types as alloy_sol_types;
8466        {
8467            #[doc(hidden)]
8468            type UnderlyingSolTuple<'a> = (
8469                LightClient::LightClientState,
8470                LightClient::StakeTableState,
8471                alloy::sol_types::sol_data::Uint<32>,
8472                alloy::sol_types::sol_data::Address,
8473            );
8474            #[doc(hidden)]
8475            type UnderlyingRustTuple<'a> = (
8476                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8477                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8478                u32,
8479                alloy::sol_types::private::Address,
8480            );
8481            #[cfg(test)]
8482            #[allow(dead_code, unreachable_patterns)]
8483            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8484                match _t {
8485                    alloy_sol_types::private::AssertTypeEq::<
8486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8487                    >(_) => {},
8488                }
8489            }
8490            #[automatically_derived]
8491            #[doc(hidden)]
8492            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8493                fn from(value: initializeCall) -> Self {
8494                    (
8495                        value._genesis,
8496                        value._genesisStakeTableState,
8497                        value._stateHistoryRetentionPeriod,
8498                        value.owner,
8499                    )
8500                }
8501            }
8502            #[automatically_derived]
8503            #[doc(hidden)]
8504            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8505                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8506                    Self {
8507                        _genesis: tuple.0,
8508                        _genesisStakeTableState: tuple.1,
8509                        _stateHistoryRetentionPeriod: tuple.2,
8510                        owner: tuple.3,
8511                    }
8512                }
8513            }
8514        }
8515        {
8516            #[doc(hidden)]
8517            type UnderlyingSolTuple<'a> = ();
8518            #[doc(hidden)]
8519            type UnderlyingRustTuple<'a> = ();
8520            #[cfg(test)]
8521            #[allow(dead_code, unreachable_patterns)]
8522            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8523                match _t {
8524                    alloy_sol_types::private::AssertTypeEq::<
8525                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8526                    >(_) => {},
8527                }
8528            }
8529            #[automatically_derived]
8530            #[doc(hidden)]
8531            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8532                fn from(value: initializeReturn) -> Self {
8533                    ()
8534                }
8535            }
8536            #[automatically_derived]
8537            #[doc(hidden)]
8538            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8539                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8540                    Self {}
8541                }
8542            }
8543        }
8544        #[automatically_derived]
8545        impl alloy_sol_types::SolCall for initializeCall {
8546            type Parameters<'a> = (
8547                LightClient::LightClientState,
8548                LightClient::StakeTableState,
8549                alloy::sol_types::sol_data::Uint<32>,
8550                alloy::sol_types::sol_data::Address,
8551            );
8552            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8553            type Return = initializeReturn;
8554            type ReturnTuple<'a> = ();
8555            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8556            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8557            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8558            #[inline]
8559            fn new<'a>(
8560                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8561            ) -> Self {
8562                tuple.into()
8563            }
8564            #[inline]
8565            fn tokenize(&self) -> Self::Token<'_> {
8566                (
8567                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8568                        &self._genesis,
8569                    ),
8570                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
8571                        &self._genesisStakeTableState,
8572                    ),
8573                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
8574                        &self._stateHistoryRetentionPeriod,
8575                    ),
8576                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8577                        &self.owner,
8578                    ),
8579                )
8580            }
8581            #[inline]
8582            fn abi_decode_returns(
8583                data: &[u8],
8584                validate: bool,
8585            ) -> alloy_sol_types::Result<Self::Return> {
8586                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8587                    data, validate,
8588                )
8589                .map(Into::into)
8590            }
8591        }
8592    };
8593    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8594    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
8595    ```solidity
8596    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
8597    ```*/
8598    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8599    #[derive(Clone)]
8600    pub struct initializeV2Call {
8601        #[allow(missing_docs)]
8602        pub _blocksPerEpoch: u64,
8603        #[allow(missing_docs)]
8604        pub _epochStartBlock: u64,
8605    }
8606    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
8607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8608    #[derive(Clone)]
8609    pub struct initializeV2Return {}
8610    #[allow(
8611        non_camel_case_types,
8612        non_snake_case,
8613        clippy::pub_underscore_fields,
8614        clippy::style
8615    )]
8616    const _: () = {
8617        use alloy::sol_types as alloy_sol_types;
8618        {
8619            #[doc(hidden)]
8620            type UnderlyingSolTuple<'a> = (
8621                alloy::sol_types::sol_data::Uint<64>,
8622                alloy::sol_types::sol_data::Uint<64>,
8623            );
8624            #[doc(hidden)]
8625            type UnderlyingRustTuple<'a> = (u64, u64);
8626            #[cfg(test)]
8627            #[allow(dead_code, unreachable_patterns)]
8628            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8629                match _t {
8630                    alloy_sol_types::private::AssertTypeEq::<
8631                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8632                    >(_) => {},
8633                }
8634            }
8635            #[automatically_derived]
8636            #[doc(hidden)]
8637            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
8638                fn from(value: initializeV2Call) -> Self {
8639                    (value._blocksPerEpoch, value._epochStartBlock)
8640                }
8641            }
8642            #[automatically_derived]
8643            #[doc(hidden)]
8644            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
8645                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8646                    Self {
8647                        _blocksPerEpoch: tuple.0,
8648                        _epochStartBlock: tuple.1,
8649                    }
8650                }
8651            }
8652        }
8653        {
8654            #[doc(hidden)]
8655            type UnderlyingSolTuple<'a> = ();
8656            #[doc(hidden)]
8657            type UnderlyingRustTuple<'a> = ();
8658            #[cfg(test)]
8659            #[allow(dead_code, unreachable_patterns)]
8660            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8661                match _t {
8662                    alloy_sol_types::private::AssertTypeEq::<
8663                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8664                    >(_) => {},
8665                }
8666            }
8667            #[automatically_derived]
8668            #[doc(hidden)]
8669            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
8670                fn from(value: initializeV2Return) -> Self {
8671                    ()
8672                }
8673            }
8674            #[automatically_derived]
8675            #[doc(hidden)]
8676            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
8677                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8678                    Self {}
8679                }
8680            }
8681        }
8682        #[automatically_derived]
8683        impl alloy_sol_types::SolCall for initializeV2Call {
8684            type Parameters<'a> = (
8685                alloy::sol_types::sol_data::Uint<64>,
8686                alloy::sol_types::sol_data::Uint<64>,
8687            );
8688            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8689            type Return = initializeV2Return;
8690            type ReturnTuple<'a> = ();
8691            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8692            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
8693            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
8694            #[inline]
8695            fn new<'a>(
8696                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8697            ) -> Self {
8698                tuple.into()
8699            }
8700            #[inline]
8701            fn tokenize(&self) -> Self::Token<'_> {
8702                (
8703                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
8704                        &self._blocksPerEpoch,
8705                    ),
8706                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
8707                        &self._epochStartBlock,
8708                    ),
8709                )
8710            }
8711            #[inline]
8712            fn abi_decode_returns(
8713                data: &[u8],
8714                validate: bool,
8715            ) -> alloy_sol_types::Result<Self::Return> {
8716                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8717                    data, validate,
8718                )
8719                .map(Into::into)
8720            }
8721        }
8722    };
8723    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8724    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
8725    ```solidity
8726    function isEpochRoot(uint64 blockHeight) external view returns (bool);
8727    ```*/
8728    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8729    #[derive(Clone)]
8730    pub struct isEpochRootCall {
8731        #[allow(missing_docs)]
8732        pub blockHeight: u64,
8733    }
8734    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8735    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
8736    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8737    #[derive(Clone)]
8738    pub struct isEpochRootReturn {
8739        #[allow(missing_docs)]
8740        pub _0: bool,
8741    }
8742    #[allow(
8743        non_camel_case_types,
8744        non_snake_case,
8745        clippy::pub_underscore_fields,
8746        clippy::style
8747    )]
8748    const _: () = {
8749        use alloy::sol_types as alloy_sol_types;
8750        {
8751            #[doc(hidden)]
8752            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8753            #[doc(hidden)]
8754            type UnderlyingRustTuple<'a> = (u64,);
8755            #[cfg(test)]
8756            #[allow(dead_code, unreachable_patterns)]
8757            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8758                match _t {
8759                    alloy_sol_types::private::AssertTypeEq::<
8760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8761                    >(_) => {},
8762                }
8763            }
8764            #[automatically_derived]
8765            #[doc(hidden)]
8766            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
8767                fn from(value: isEpochRootCall) -> Self {
8768                    (value.blockHeight,)
8769                }
8770            }
8771            #[automatically_derived]
8772            #[doc(hidden)]
8773            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
8774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8775                    Self {
8776                        blockHeight: tuple.0,
8777                    }
8778                }
8779            }
8780        }
8781        {
8782            #[doc(hidden)]
8783            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8784            #[doc(hidden)]
8785            type UnderlyingRustTuple<'a> = (bool,);
8786            #[cfg(test)]
8787            #[allow(dead_code, unreachable_patterns)]
8788            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8789                match _t {
8790                    alloy_sol_types::private::AssertTypeEq::<
8791                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8792                    >(_) => {},
8793                }
8794            }
8795            #[automatically_derived]
8796            #[doc(hidden)]
8797            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
8798                fn from(value: isEpochRootReturn) -> Self {
8799                    (value._0,)
8800                }
8801            }
8802            #[automatically_derived]
8803            #[doc(hidden)]
8804            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
8805                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8806                    Self { _0: tuple.0 }
8807                }
8808            }
8809        }
8810        #[automatically_derived]
8811        impl alloy_sol_types::SolCall for isEpochRootCall {
8812            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8813            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8814            type Return = isEpochRootReturn;
8815            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8816            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8817            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
8818            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
8819            #[inline]
8820            fn new<'a>(
8821                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8822            ) -> Self {
8823                tuple.into()
8824            }
8825            #[inline]
8826            fn tokenize(&self) -> Self::Token<'_> {
8827                (
8828                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
8829                        &self.blockHeight,
8830                    ),
8831                )
8832            }
8833            #[inline]
8834            fn abi_decode_returns(
8835                data: &[u8],
8836                validate: bool,
8837            ) -> alloy_sol_types::Result<Self::Return> {
8838                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8839                    data, validate,
8840                )
8841                .map(Into::into)
8842            }
8843        }
8844    };
8845    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8846    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
8847    ```solidity
8848    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
8849    ```*/
8850    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8851    #[derive(Clone)]
8852    pub struct isGtEpochRootCall {
8853        #[allow(missing_docs)]
8854        pub blockHeight: u64,
8855    }
8856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8857    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
8858    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8859    #[derive(Clone)]
8860    pub struct isGtEpochRootReturn {
8861        #[allow(missing_docs)]
8862        pub _0: bool,
8863    }
8864    #[allow(
8865        non_camel_case_types,
8866        non_snake_case,
8867        clippy::pub_underscore_fields,
8868        clippy::style
8869    )]
8870    const _: () = {
8871        use alloy::sol_types as alloy_sol_types;
8872        {
8873            #[doc(hidden)]
8874            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8875            #[doc(hidden)]
8876            type UnderlyingRustTuple<'a> = (u64,);
8877            #[cfg(test)]
8878            #[allow(dead_code, unreachable_patterns)]
8879            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8880                match _t {
8881                    alloy_sol_types::private::AssertTypeEq::<
8882                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8883                    >(_) => {},
8884                }
8885            }
8886            #[automatically_derived]
8887            #[doc(hidden)]
8888            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
8889                fn from(value: isGtEpochRootCall) -> Self {
8890                    (value.blockHeight,)
8891                }
8892            }
8893            #[automatically_derived]
8894            #[doc(hidden)]
8895            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
8896                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8897                    Self {
8898                        blockHeight: tuple.0,
8899                    }
8900                }
8901            }
8902        }
8903        {
8904            #[doc(hidden)]
8905            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8906            #[doc(hidden)]
8907            type UnderlyingRustTuple<'a> = (bool,);
8908            #[cfg(test)]
8909            #[allow(dead_code, unreachable_patterns)]
8910            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8911                match _t {
8912                    alloy_sol_types::private::AssertTypeEq::<
8913                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8914                    >(_) => {},
8915                }
8916            }
8917            #[automatically_derived]
8918            #[doc(hidden)]
8919            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
8920                fn from(value: isGtEpochRootReturn) -> Self {
8921                    (value._0,)
8922                }
8923            }
8924            #[automatically_derived]
8925            #[doc(hidden)]
8926            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
8927                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8928                    Self { _0: tuple.0 }
8929                }
8930            }
8931        }
8932        #[automatically_derived]
8933        impl alloy_sol_types::SolCall for isGtEpochRootCall {
8934            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8935            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
8936            type Return = isGtEpochRootReturn;
8937            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8938            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
8939            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
8940            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
8941            #[inline]
8942            fn new<'a>(
8943                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8944            ) -> Self {
8945                tuple.into()
8946            }
8947            #[inline]
8948            fn tokenize(&self) -> Self::Token<'_> {
8949                (
8950                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
8951                        &self.blockHeight,
8952                    ),
8953                )
8954            }
8955            #[inline]
8956            fn abi_decode_returns(
8957                data: &[u8],
8958                validate: bool,
8959            ) -> alloy_sol_types::Result<Self::Return> {
8960                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
8961                    data, validate,
8962                )
8963                .map(Into::into)
8964            }
8965        }
8966    };
8967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8968    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8969    ```solidity
8970    function isPermissionedProverEnabled() external view returns (bool);
8971    ```*/
8972    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8973    #[derive(Clone)]
8974    pub struct isPermissionedProverEnabledCall {}
8975    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8976    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8977    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8978    #[derive(Clone)]
8979    pub struct isPermissionedProverEnabledReturn {
8980        #[allow(missing_docs)]
8981        pub _0: bool,
8982    }
8983    #[allow(
8984        non_camel_case_types,
8985        non_snake_case,
8986        clippy::pub_underscore_fields,
8987        clippy::style
8988    )]
8989    const _: () = {
8990        use alloy::sol_types as alloy_sol_types;
8991        {
8992            #[doc(hidden)]
8993            type UnderlyingSolTuple<'a> = ();
8994            #[doc(hidden)]
8995            type UnderlyingRustTuple<'a> = ();
8996            #[cfg(test)]
8997            #[allow(dead_code, unreachable_patterns)]
8998            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
8999                match _t {
9000                    alloy_sol_types::private::AssertTypeEq::<
9001                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9002                    >(_) => {},
9003                }
9004            }
9005            #[automatically_derived]
9006            #[doc(hidden)]
9007            impl ::core::convert::From<isPermissionedProverEnabledCall> for UnderlyingRustTuple<'_> {
9008                fn from(value: isPermissionedProverEnabledCall) -> Self {
9009                    ()
9010                }
9011            }
9012            #[automatically_derived]
9013            #[doc(hidden)]
9014            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isPermissionedProverEnabledCall {
9015                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9016                    Self {}
9017                }
9018            }
9019        }
9020        {
9021            #[doc(hidden)]
9022            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9023            #[doc(hidden)]
9024            type UnderlyingRustTuple<'a> = (bool,);
9025            #[cfg(test)]
9026            #[allow(dead_code, unreachable_patterns)]
9027            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9028                match _t {
9029                    alloy_sol_types::private::AssertTypeEq::<
9030                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9031                    >(_) => {},
9032                }
9033            }
9034            #[automatically_derived]
9035            #[doc(hidden)]
9036            impl ::core::convert::From<isPermissionedProverEnabledReturn> for UnderlyingRustTuple<'_> {
9037                fn from(value: isPermissionedProverEnabledReturn) -> Self {
9038                    (value._0,)
9039                }
9040            }
9041            #[automatically_derived]
9042            #[doc(hidden)]
9043            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isPermissionedProverEnabledReturn {
9044                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9045                    Self { _0: tuple.0 }
9046                }
9047            }
9048        }
9049        #[automatically_derived]
9050        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
9051            type Parameters<'a> = ();
9052            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9053            type Return = isPermissionedProverEnabledReturn;
9054            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9055            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9056            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
9057            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
9058            #[inline]
9059            fn new<'a>(
9060                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9061            ) -> Self {
9062                tuple.into()
9063            }
9064            #[inline]
9065            fn tokenize(&self) -> Self::Token<'_> {
9066                ()
9067            }
9068            #[inline]
9069            fn abi_decode_returns(
9070                data: &[u8],
9071                validate: bool,
9072            ) -> alloy_sol_types::Result<Self::Return> {
9073                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9074                    data, validate,
9075                )
9076                .map(Into::into)
9077            }
9078        }
9079    };
9080    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9081    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
9082    ```solidity
9083    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
9084    ```*/
9085    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9086    #[derive(Clone)]
9087    pub struct lagOverEscapeHatchThresholdCall {
9088        #[allow(missing_docs)]
9089        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
9090        #[allow(missing_docs)]
9091        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
9092    }
9093    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9094    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
9095    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9096    #[derive(Clone)]
9097    pub struct lagOverEscapeHatchThresholdReturn {
9098        #[allow(missing_docs)]
9099        pub _0: bool,
9100    }
9101    #[allow(
9102        non_camel_case_types,
9103        non_snake_case,
9104        clippy::pub_underscore_fields,
9105        clippy::style
9106    )]
9107    const _: () = {
9108        use alloy::sol_types as alloy_sol_types;
9109        {
9110            #[doc(hidden)]
9111            type UnderlyingSolTuple<'a> = (
9112                alloy::sol_types::sol_data::Uint<256>,
9113                alloy::sol_types::sol_data::Uint<256>,
9114            );
9115            #[doc(hidden)]
9116            type UnderlyingRustTuple<'a> = (
9117                alloy::sol_types::private::primitives::aliases::U256,
9118                alloy::sol_types::private::primitives::aliases::U256,
9119            );
9120            #[cfg(test)]
9121            #[allow(dead_code, unreachable_patterns)]
9122            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9123                match _t {
9124                    alloy_sol_types::private::AssertTypeEq::<
9125                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9126                    >(_) => {},
9127                }
9128            }
9129            #[automatically_derived]
9130            #[doc(hidden)]
9131            impl ::core::convert::From<lagOverEscapeHatchThresholdCall> for UnderlyingRustTuple<'_> {
9132                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
9133                    (value.blockNumber, value.blockThreshold)
9134                }
9135            }
9136            #[automatically_derived]
9137            #[doc(hidden)]
9138            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lagOverEscapeHatchThresholdCall {
9139                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9140                    Self {
9141                        blockNumber: tuple.0,
9142                        blockThreshold: tuple.1,
9143                    }
9144                }
9145            }
9146        }
9147        {
9148            #[doc(hidden)]
9149            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9150            #[doc(hidden)]
9151            type UnderlyingRustTuple<'a> = (bool,);
9152            #[cfg(test)]
9153            #[allow(dead_code, unreachable_patterns)]
9154            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9155                match _t {
9156                    alloy_sol_types::private::AssertTypeEq::<
9157                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9158                    >(_) => {},
9159                }
9160            }
9161            #[automatically_derived]
9162            #[doc(hidden)]
9163            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn> for UnderlyingRustTuple<'_> {
9164                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
9165                    (value._0,)
9166                }
9167            }
9168            #[automatically_derived]
9169            #[doc(hidden)]
9170            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lagOverEscapeHatchThresholdReturn {
9171                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9172                    Self { _0: tuple.0 }
9173                }
9174            }
9175        }
9176        #[automatically_derived]
9177        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
9178            type Parameters<'a> = (
9179                alloy::sol_types::sol_data::Uint<256>,
9180                alloy::sol_types::sol_data::Uint<256>,
9181            );
9182            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9183            type Return = lagOverEscapeHatchThresholdReturn;
9184            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9185            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9186            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
9187            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
9188            #[inline]
9189            fn new<'a>(
9190                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9191            ) -> Self {
9192                tuple.into()
9193            }
9194            #[inline]
9195            fn tokenize(&self) -> Self::Token<'_> {
9196                (
9197                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
9198                        &self.blockNumber,
9199                    ),
9200                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
9201                        &self.blockThreshold,
9202                    ),
9203                )
9204            }
9205            #[inline]
9206            fn abi_decode_returns(
9207                data: &[u8],
9208                validate: bool,
9209            ) -> alloy_sol_types::Result<Self::Return> {
9210                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9211                    data, validate,
9212                )
9213                .map(Into::into)
9214            }
9215        }
9216    };
9217    #[derive()]
9218    /**Function with signature `newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x2063d4f7`.
9219    ```solidity
9220    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
9221    ```*/
9222    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9223    #[derive(Clone)]
9224    pub struct newFinalizedState_0Call {
9225        #[allow(missing_docs)]
9226        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9227        #[allow(missing_docs)]
9228        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9229    }
9230    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_0Call) function.
9231    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9232    #[derive(Clone)]
9233    pub struct newFinalizedState_0Return {}
9234    #[allow(
9235        non_camel_case_types,
9236        non_snake_case,
9237        clippy::pub_underscore_fields,
9238        clippy::style
9239    )]
9240    const _: () = {
9241        use alloy::sol_types as alloy_sol_types;
9242        {
9243            #[doc(hidden)]
9244            type UnderlyingSolTuple<'a> =
9245                (LightClient::LightClientState, IPlonkVerifier::PlonkProof);
9246            #[doc(hidden)]
9247            type UnderlyingRustTuple<'a> = (
9248                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9249                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9250            );
9251            #[cfg(test)]
9252            #[allow(dead_code, unreachable_patterns)]
9253            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9254                match _t {
9255                    alloy_sol_types::private::AssertTypeEq::<
9256                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9257                    >(_) => {},
9258                }
9259            }
9260            #[automatically_derived]
9261            #[doc(hidden)]
9262            impl ::core::convert::From<newFinalizedState_0Call> for UnderlyingRustTuple<'_> {
9263                fn from(value: newFinalizedState_0Call) -> Self {
9264                    (value._0, value._1)
9265                }
9266            }
9267            #[automatically_derived]
9268            #[doc(hidden)]
9269            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedState_0Call {
9270                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9271                    Self {
9272                        _0: tuple.0,
9273                        _1: tuple.1,
9274                    }
9275                }
9276            }
9277        }
9278        {
9279            #[doc(hidden)]
9280            type UnderlyingSolTuple<'a> = ();
9281            #[doc(hidden)]
9282            type UnderlyingRustTuple<'a> = ();
9283            #[cfg(test)]
9284            #[allow(dead_code, unreachable_patterns)]
9285            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9286                match _t {
9287                    alloy_sol_types::private::AssertTypeEq::<
9288                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9289                    >(_) => {},
9290                }
9291            }
9292            #[automatically_derived]
9293            #[doc(hidden)]
9294            impl ::core::convert::From<newFinalizedState_0Return> for UnderlyingRustTuple<'_> {
9295                fn from(value: newFinalizedState_0Return) -> Self {
9296                    ()
9297                }
9298            }
9299            #[automatically_derived]
9300            #[doc(hidden)]
9301            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedState_0Return {
9302                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9303                    Self {}
9304                }
9305            }
9306        }
9307        #[automatically_derived]
9308        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
9309            type Parameters<'a> = (LightClient::LightClientState, IPlonkVerifier::PlonkProof);
9310            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9311            type Return = newFinalizedState_0Return;
9312            type ReturnTuple<'a> = ();
9313            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9314            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
9315            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9316            #[inline]
9317            fn new<'a>(
9318                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9319            ) -> Self {
9320                tuple.into()
9321            }
9322            #[inline]
9323            fn tokenize(&self) -> Self::Token<'_> {
9324                (
9325                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(&self._0),
9326                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(&self._1),
9327                )
9328            }
9329            #[inline]
9330            fn abi_decode_returns(
9331                data: &[u8],
9332                validate: bool,
9333            ) -> alloy_sol_types::Result<Self::Return> {
9334                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9335                    data, validate,
9336                )
9337                .map(Into::into)
9338            }
9339        }
9340    };
9341    #[derive()]
9342    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x757c37ad`.
9343    ```solidity
9344    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
9345    ```*/
9346    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9347    #[derive(Clone)]
9348    pub struct newFinalizedState_1Call {
9349        #[allow(missing_docs)]
9350        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9351        #[allow(missing_docs)]
9352        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9353        #[allow(missing_docs)]
9354        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9355    }
9356    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_1Call) function.
9357    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9358    #[derive(Clone)]
9359    pub struct newFinalizedState_1Return {}
9360    #[allow(
9361        non_camel_case_types,
9362        non_snake_case,
9363        clippy::pub_underscore_fields,
9364        clippy::style
9365    )]
9366    const _: () = {
9367        use alloy::sol_types as alloy_sol_types;
9368        {
9369            #[doc(hidden)]
9370            type UnderlyingSolTuple<'a> = (
9371                LightClient::LightClientState,
9372                LightClient::StakeTableState,
9373                IPlonkVerifier::PlonkProof,
9374            );
9375            #[doc(hidden)]
9376            type UnderlyingRustTuple<'a> = (
9377                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9378                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9379                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9380            );
9381            #[cfg(test)]
9382            #[allow(dead_code, unreachable_patterns)]
9383            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9384                match _t {
9385                    alloy_sol_types::private::AssertTypeEq::<
9386                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9387                    >(_) => {},
9388                }
9389            }
9390            #[automatically_derived]
9391            #[doc(hidden)]
9392            impl ::core::convert::From<newFinalizedState_1Call> for UnderlyingRustTuple<'_> {
9393                fn from(value: newFinalizedState_1Call) -> Self {
9394                    (value.newState, value.nextStakeTable, value.proof)
9395                }
9396            }
9397            #[automatically_derived]
9398            #[doc(hidden)]
9399            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedState_1Call {
9400                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9401                    Self {
9402                        newState: tuple.0,
9403                        nextStakeTable: tuple.1,
9404                        proof: tuple.2,
9405                    }
9406                }
9407            }
9408        }
9409        {
9410            #[doc(hidden)]
9411            type UnderlyingSolTuple<'a> = ();
9412            #[doc(hidden)]
9413            type UnderlyingRustTuple<'a> = ();
9414            #[cfg(test)]
9415            #[allow(dead_code, unreachable_patterns)]
9416            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9417                match _t {
9418                    alloy_sol_types::private::AssertTypeEq::<
9419                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9420                    >(_) => {},
9421                }
9422            }
9423            #[automatically_derived]
9424            #[doc(hidden)]
9425            impl ::core::convert::From<newFinalizedState_1Return> for UnderlyingRustTuple<'_> {
9426                fn from(value: newFinalizedState_1Return) -> Self {
9427                    ()
9428                }
9429            }
9430            #[automatically_derived]
9431            #[doc(hidden)]
9432            impl ::core::convert::From<UnderlyingRustTuple<'_>> for newFinalizedState_1Return {
9433                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9434                    Self {}
9435                }
9436            }
9437        }
9438        #[automatically_derived]
9439        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
9440            type Parameters<'a> = (
9441                LightClient::LightClientState,
9442                LightClient::StakeTableState,
9443                IPlonkVerifier::PlonkProof,
9444            );
9445            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9446            type Return = newFinalizedState_1Return;
9447            type ReturnTuple<'a> = ();
9448            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9449            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
9450            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
9451            #[inline]
9452            fn new<'a>(
9453                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9454            ) -> Self {
9455                tuple.into()
9456            }
9457            #[inline]
9458            fn tokenize(&self) -> Self::Token<'_> {
9459                (
9460                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9461                        &self.newState,
9462                    ),
9463                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
9464                        &self.nextStakeTable,
9465                    ),
9466                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(&self.proof),
9467                )
9468            }
9469            #[inline]
9470            fn abi_decode_returns(
9471                data: &[u8],
9472                validate: bool,
9473            ) -> alloy_sol_types::Result<Self::Return> {
9474                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9475                    data, validate,
9476                )
9477                .map(Into::into)
9478            }
9479        }
9480    };
9481    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9482    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9483    ```solidity
9484    function owner() external view returns (address);
9485    ```*/
9486    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9487    #[derive(Clone)]
9488    pub struct ownerCall {}
9489    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9490    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9491    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9492    #[derive(Clone)]
9493    pub struct ownerReturn {
9494        #[allow(missing_docs)]
9495        pub _0: alloy::sol_types::private::Address,
9496    }
9497    #[allow(
9498        non_camel_case_types,
9499        non_snake_case,
9500        clippy::pub_underscore_fields,
9501        clippy::style
9502    )]
9503    const _: () = {
9504        use alloy::sol_types as alloy_sol_types;
9505        {
9506            #[doc(hidden)]
9507            type UnderlyingSolTuple<'a> = ();
9508            #[doc(hidden)]
9509            type UnderlyingRustTuple<'a> = ();
9510            #[cfg(test)]
9511            #[allow(dead_code, unreachable_patterns)]
9512            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9513                match _t {
9514                    alloy_sol_types::private::AssertTypeEq::<
9515                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9516                    >(_) => {},
9517                }
9518            }
9519            #[automatically_derived]
9520            #[doc(hidden)]
9521            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9522                fn from(value: ownerCall) -> Self {
9523                    ()
9524                }
9525            }
9526            #[automatically_derived]
9527            #[doc(hidden)]
9528            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9529                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9530                    Self {}
9531                }
9532            }
9533        }
9534        {
9535            #[doc(hidden)]
9536            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9537            #[doc(hidden)]
9538            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9539            #[cfg(test)]
9540            #[allow(dead_code, unreachable_patterns)]
9541            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9542                match _t {
9543                    alloy_sol_types::private::AssertTypeEq::<
9544                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9545                    >(_) => {},
9546                }
9547            }
9548            #[automatically_derived]
9549            #[doc(hidden)]
9550            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9551                fn from(value: ownerReturn) -> Self {
9552                    (value._0,)
9553                }
9554            }
9555            #[automatically_derived]
9556            #[doc(hidden)]
9557            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9558                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9559                    Self { _0: tuple.0 }
9560                }
9561            }
9562        }
9563        #[automatically_derived]
9564        impl alloy_sol_types::SolCall for ownerCall {
9565            type Parameters<'a> = ();
9566            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9567            type Return = ownerReturn;
9568            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9569            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9570            const SIGNATURE: &'static str = "owner()";
9571            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9572            #[inline]
9573            fn new<'a>(
9574                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9575            ) -> Self {
9576                tuple.into()
9577            }
9578            #[inline]
9579            fn tokenize(&self) -> Self::Token<'_> {
9580                ()
9581            }
9582            #[inline]
9583            fn abi_decode_returns(
9584                data: &[u8],
9585                validate: bool,
9586            ) -> alloy_sol_types::Result<Self::Return> {
9587                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9588                    data, validate,
9589                )
9590                .map(Into::into)
9591            }
9592        }
9593    };
9594    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9595    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9596    ```solidity
9597    function permissionedProver() external view returns (address);
9598    ```*/
9599    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9600    #[derive(Clone)]
9601    pub struct permissionedProverCall {}
9602    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9603    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9604    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9605    #[derive(Clone)]
9606    pub struct permissionedProverReturn {
9607        #[allow(missing_docs)]
9608        pub _0: alloy::sol_types::private::Address,
9609    }
9610    #[allow(
9611        non_camel_case_types,
9612        non_snake_case,
9613        clippy::pub_underscore_fields,
9614        clippy::style
9615    )]
9616    const _: () = {
9617        use alloy::sol_types as alloy_sol_types;
9618        {
9619            #[doc(hidden)]
9620            type UnderlyingSolTuple<'a> = ();
9621            #[doc(hidden)]
9622            type UnderlyingRustTuple<'a> = ();
9623            #[cfg(test)]
9624            #[allow(dead_code, unreachable_patterns)]
9625            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9626                match _t {
9627                    alloy_sol_types::private::AssertTypeEq::<
9628                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9629                    >(_) => {},
9630                }
9631            }
9632            #[automatically_derived]
9633            #[doc(hidden)]
9634            impl ::core::convert::From<permissionedProverCall> for UnderlyingRustTuple<'_> {
9635                fn from(value: permissionedProverCall) -> Self {
9636                    ()
9637                }
9638            }
9639            #[automatically_derived]
9640            #[doc(hidden)]
9641            impl ::core::convert::From<UnderlyingRustTuple<'_>> for permissionedProverCall {
9642                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9643                    Self {}
9644                }
9645            }
9646        }
9647        {
9648            #[doc(hidden)]
9649            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9650            #[doc(hidden)]
9651            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9652            #[cfg(test)]
9653            #[allow(dead_code, unreachable_patterns)]
9654            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9655                match _t {
9656                    alloy_sol_types::private::AssertTypeEq::<
9657                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9658                    >(_) => {},
9659                }
9660            }
9661            #[automatically_derived]
9662            #[doc(hidden)]
9663            impl ::core::convert::From<permissionedProverReturn> for UnderlyingRustTuple<'_> {
9664                fn from(value: permissionedProverReturn) -> Self {
9665                    (value._0,)
9666                }
9667            }
9668            #[automatically_derived]
9669            #[doc(hidden)]
9670            impl ::core::convert::From<UnderlyingRustTuple<'_>> for permissionedProverReturn {
9671                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9672                    Self { _0: tuple.0 }
9673                }
9674            }
9675        }
9676        #[automatically_derived]
9677        impl alloy_sol_types::SolCall for permissionedProverCall {
9678            type Parameters<'a> = ();
9679            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9680            type Return = permissionedProverReturn;
9681            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9682            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9683            const SIGNATURE: &'static str = "permissionedProver()";
9684            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9685            #[inline]
9686            fn new<'a>(
9687                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9688            ) -> Self {
9689                tuple.into()
9690            }
9691            #[inline]
9692            fn tokenize(&self) -> Self::Token<'_> {
9693                ()
9694            }
9695            #[inline]
9696            fn abi_decode_returns(
9697                data: &[u8],
9698                validate: bool,
9699            ) -> alloy_sol_types::Result<Self::Return> {
9700                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9701                    data, validate,
9702                )
9703                .map(Into::into)
9704            }
9705        }
9706    };
9707    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9708    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9709    ```solidity
9710    function proxiableUUID() external view returns (bytes32);
9711    ```*/
9712    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9713    #[derive(Clone)]
9714    pub struct proxiableUUIDCall {}
9715    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9716    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9717    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9718    #[derive(Clone)]
9719    pub struct proxiableUUIDReturn {
9720        #[allow(missing_docs)]
9721        pub _0: alloy::sol_types::private::FixedBytes<32>,
9722    }
9723    #[allow(
9724        non_camel_case_types,
9725        non_snake_case,
9726        clippy::pub_underscore_fields,
9727        clippy::style
9728    )]
9729    const _: () = {
9730        use alloy::sol_types as alloy_sol_types;
9731        {
9732            #[doc(hidden)]
9733            type UnderlyingSolTuple<'a> = ();
9734            #[doc(hidden)]
9735            type UnderlyingRustTuple<'a> = ();
9736            #[cfg(test)]
9737            #[allow(dead_code, unreachable_patterns)]
9738            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9739                match _t {
9740                    alloy_sol_types::private::AssertTypeEq::<
9741                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9742                    >(_) => {},
9743                }
9744            }
9745            #[automatically_derived]
9746            #[doc(hidden)]
9747            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9748                fn from(value: proxiableUUIDCall) -> Self {
9749                    ()
9750                }
9751            }
9752            #[automatically_derived]
9753            #[doc(hidden)]
9754            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9755                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9756                    Self {}
9757                }
9758            }
9759        }
9760        {
9761            #[doc(hidden)]
9762            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9763            #[doc(hidden)]
9764            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9765            #[cfg(test)]
9766            #[allow(dead_code, unreachable_patterns)]
9767            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9768                match _t {
9769                    alloy_sol_types::private::AssertTypeEq::<
9770                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9771                    >(_) => {},
9772                }
9773            }
9774            #[automatically_derived]
9775            #[doc(hidden)]
9776            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9777                fn from(value: proxiableUUIDReturn) -> Self {
9778                    (value._0,)
9779                }
9780            }
9781            #[automatically_derived]
9782            #[doc(hidden)]
9783            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9784                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9785                    Self { _0: tuple.0 }
9786                }
9787            }
9788        }
9789        #[automatically_derived]
9790        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9791            type Parameters<'a> = ();
9792            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9793            type Return = proxiableUUIDReturn;
9794            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9795            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9796            const SIGNATURE: &'static str = "proxiableUUID()";
9797            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9798            #[inline]
9799            fn new<'a>(
9800                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9801            ) -> Self {
9802                tuple.into()
9803            }
9804            #[inline]
9805            fn tokenize(&self) -> Self::Token<'_> {
9806                ()
9807            }
9808            #[inline]
9809            fn abi_decode_returns(
9810                data: &[u8],
9811                validate: bool,
9812            ) -> alloy_sol_types::Result<Self::Return> {
9813                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9814                    data, validate,
9815                )
9816                .map(Into::into)
9817            }
9818        }
9819    };
9820    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9821    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9822    ```solidity
9823    function renounceOwnership() external;
9824    ```*/
9825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9826    #[derive(Clone)]
9827    pub struct renounceOwnershipCall {}
9828    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9829    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9830    #[derive(Clone)]
9831    pub struct renounceOwnershipReturn {}
9832    #[allow(
9833        non_camel_case_types,
9834        non_snake_case,
9835        clippy::pub_underscore_fields,
9836        clippy::style
9837    )]
9838    const _: () = {
9839        use alloy::sol_types as alloy_sol_types;
9840        {
9841            #[doc(hidden)]
9842            type UnderlyingSolTuple<'a> = ();
9843            #[doc(hidden)]
9844            type UnderlyingRustTuple<'a> = ();
9845            #[cfg(test)]
9846            #[allow(dead_code, unreachable_patterns)]
9847            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9848                match _t {
9849                    alloy_sol_types::private::AssertTypeEq::<
9850                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9851                    >(_) => {},
9852                }
9853            }
9854            #[automatically_derived]
9855            #[doc(hidden)]
9856            impl ::core::convert::From<renounceOwnershipCall> for UnderlyingRustTuple<'_> {
9857                fn from(value: renounceOwnershipCall) -> Self {
9858                    ()
9859                }
9860            }
9861            #[automatically_derived]
9862            #[doc(hidden)]
9863            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipCall {
9864                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9865                    Self {}
9866                }
9867            }
9868        }
9869        {
9870            #[doc(hidden)]
9871            type UnderlyingSolTuple<'a> = ();
9872            #[doc(hidden)]
9873            type UnderlyingRustTuple<'a> = ();
9874            #[cfg(test)]
9875            #[allow(dead_code, unreachable_patterns)]
9876            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9877                match _t {
9878                    alloy_sol_types::private::AssertTypeEq::<
9879                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9880                    >(_) => {},
9881                }
9882            }
9883            #[automatically_derived]
9884            #[doc(hidden)]
9885            impl ::core::convert::From<renounceOwnershipReturn> for UnderlyingRustTuple<'_> {
9886                fn from(value: renounceOwnershipReturn) -> Self {
9887                    ()
9888                }
9889            }
9890            #[automatically_derived]
9891            #[doc(hidden)]
9892            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceOwnershipReturn {
9893                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9894                    Self {}
9895                }
9896            }
9897        }
9898        #[automatically_derived]
9899        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9900            type Parameters<'a> = ();
9901            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
9902            type Return = renounceOwnershipReturn;
9903            type ReturnTuple<'a> = ();
9904            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
9905            const SIGNATURE: &'static str = "renounceOwnership()";
9906            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
9907            #[inline]
9908            fn new<'a>(
9909                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9910            ) -> Self {
9911                tuple.into()
9912            }
9913            #[inline]
9914            fn tokenize(&self) -> Self::Token<'_> {
9915                ()
9916            }
9917            #[inline]
9918            fn abi_decode_returns(
9919                data: &[u8],
9920                validate: bool,
9921            ) -> alloy_sol_types::Result<Self::Return> {
9922                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
9923                    data, validate,
9924                )
9925                .map(Into::into)
9926            }
9927        }
9928    };
9929    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9930    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
9931    ```solidity
9932    function setPermissionedProver(address prover) external;
9933    ```*/
9934    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9935    #[derive(Clone)]
9936    pub struct setPermissionedProverCall {
9937        #[allow(missing_docs)]
9938        pub prover: alloy::sol_types::private::Address,
9939    }
9940    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
9941    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9942    #[derive(Clone)]
9943    pub struct setPermissionedProverReturn {}
9944    #[allow(
9945        non_camel_case_types,
9946        non_snake_case,
9947        clippy::pub_underscore_fields,
9948        clippy::style
9949    )]
9950    const _: () = {
9951        use alloy::sol_types as alloy_sol_types;
9952        {
9953            #[doc(hidden)]
9954            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9955            #[doc(hidden)]
9956            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9957            #[cfg(test)]
9958            #[allow(dead_code, unreachable_patterns)]
9959            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9960                match _t {
9961                    alloy_sol_types::private::AssertTypeEq::<
9962                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9963                    >(_) => {},
9964                }
9965            }
9966            #[automatically_derived]
9967            #[doc(hidden)]
9968            impl ::core::convert::From<setPermissionedProverCall> for UnderlyingRustTuple<'_> {
9969                fn from(value: setPermissionedProverCall) -> Self {
9970                    (value.prover,)
9971                }
9972            }
9973            #[automatically_derived]
9974            #[doc(hidden)]
9975            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPermissionedProverCall {
9976                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9977                    Self { prover: tuple.0 }
9978                }
9979            }
9980        }
9981        {
9982            #[doc(hidden)]
9983            type UnderlyingSolTuple<'a> = ();
9984            #[doc(hidden)]
9985            type UnderlyingRustTuple<'a> = ();
9986            #[cfg(test)]
9987            #[allow(dead_code, unreachable_patterns)]
9988            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
9989                match _t {
9990                    alloy_sol_types::private::AssertTypeEq::<
9991                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9992                    >(_) => {},
9993                }
9994            }
9995            #[automatically_derived]
9996            #[doc(hidden)]
9997            impl ::core::convert::From<setPermissionedProverReturn> for UnderlyingRustTuple<'_> {
9998                fn from(value: setPermissionedProverReturn) -> Self {
9999                    ()
10000                }
10001            }
10002            #[automatically_derived]
10003            #[doc(hidden)]
10004            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setPermissionedProverReturn {
10005                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10006                    Self {}
10007                }
10008            }
10009        }
10010        #[automatically_derived]
10011        impl alloy_sol_types::SolCall for setPermissionedProverCall {
10012            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10013            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10014            type Return = setPermissionedProverReturn;
10015            type ReturnTuple<'a> = ();
10016            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10017            const SIGNATURE: &'static str = "setPermissionedProver(address)";
10018            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
10019            #[inline]
10020            fn new<'a>(
10021                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10022            ) -> Self {
10023                tuple.into()
10024            }
10025            #[inline]
10026            fn tokenize(&self) -> Self::Token<'_> {
10027                (
10028                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10029                        &self.prover,
10030                    ),
10031                )
10032            }
10033            #[inline]
10034            fn abi_decode_returns(
10035                data: &[u8],
10036                validate: bool,
10037            ) -> alloy_sol_types::Result<Self::Return> {
10038                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10039                    data, validate,
10040                )
10041                .map(Into::into)
10042            }
10043        }
10044    };
10045    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10046    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
10047    ```solidity
10048    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
10049    ```*/
10050    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10051    #[derive(Clone)]
10052    pub struct setStateHistoryRetentionPeriodCall {
10053        #[allow(missing_docs)]
10054        pub historySeconds: u32,
10055    }
10056    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
10057    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10058    #[derive(Clone)]
10059    pub struct setStateHistoryRetentionPeriodReturn {}
10060    #[allow(
10061        non_camel_case_types,
10062        non_snake_case,
10063        clippy::pub_underscore_fields,
10064        clippy::style
10065    )]
10066    const _: () = {
10067        use alloy::sol_types as alloy_sol_types;
10068        {
10069            #[doc(hidden)]
10070            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10071            #[doc(hidden)]
10072            type UnderlyingRustTuple<'a> = (u32,);
10073            #[cfg(test)]
10074            #[allow(dead_code, unreachable_patterns)]
10075            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10076                match _t {
10077                    alloy_sol_types::private::AssertTypeEq::<
10078                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10079                    >(_) => {},
10080                }
10081            }
10082            #[automatically_derived]
10083            #[doc(hidden)]
10084            impl ::core::convert::From<setStateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
10085                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
10086                    (value.historySeconds,)
10087                }
10088            }
10089            #[automatically_derived]
10090            #[doc(hidden)]
10091            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryRetentionPeriodCall {
10092                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10093                    Self {
10094                        historySeconds: tuple.0,
10095                    }
10096                }
10097            }
10098        }
10099        {
10100            #[doc(hidden)]
10101            type UnderlyingSolTuple<'a> = ();
10102            #[doc(hidden)]
10103            type UnderlyingRustTuple<'a> = ();
10104            #[cfg(test)]
10105            #[allow(dead_code, unreachable_patterns)]
10106            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10107                match _t {
10108                    alloy_sol_types::private::AssertTypeEq::<
10109                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10110                    >(_) => {},
10111                }
10112            }
10113            #[automatically_derived]
10114            #[doc(hidden)]
10115            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
10116                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
10117                    ()
10118                }
10119            }
10120            #[automatically_derived]
10121            #[doc(hidden)]
10122            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryRetentionPeriodReturn {
10123                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10124                    Self {}
10125                }
10126            }
10127        }
10128        #[automatically_derived]
10129        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
10130            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10131            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10132            type Return = setStateHistoryRetentionPeriodReturn;
10133            type ReturnTuple<'a> = ();
10134            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10135            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
10136            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
10137            #[inline]
10138            fn new<'a>(
10139                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10140            ) -> Self {
10141                tuple.into()
10142            }
10143            #[inline]
10144            fn tokenize(&self) -> Self::Token<'_> {
10145                (
10146                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
10147                        &self.historySeconds,
10148                    ),
10149                )
10150            }
10151            #[inline]
10152            fn abi_decode_returns(
10153                data: &[u8],
10154                validate: bool,
10155            ) -> alloy_sol_types::Result<Self::Return> {
10156                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10157                    data, validate,
10158                )
10159                .map(Into::into)
10160            }
10161        }
10162    };
10163    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10164    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
10165    ```solidity
10166    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
10167    ```*/
10168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10169    #[derive(Clone)]
10170    pub struct setstateHistoryRetentionPeriodCall {
10171        #[allow(missing_docs)]
10172        pub historySeconds: u32,
10173    }
10174    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
10175    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10176    #[derive(Clone)]
10177    pub struct setstateHistoryRetentionPeriodReturn {}
10178    #[allow(
10179        non_camel_case_types,
10180        non_snake_case,
10181        clippy::pub_underscore_fields,
10182        clippy::style
10183    )]
10184    const _: () = {
10185        use alloy::sol_types as alloy_sol_types;
10186        {
10187            #[doc(hidden)]
10188            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10189            #[doc(hidden)]
10190            type UnderlyingRustTuple<'a> = (u32,);
10191            #[cfg(test)]
10192            #[allow(dead_code, unreachable_patterns)]
10193            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10194                match _t {
10195                    alloy_sol_types::private::AssertTypeEq::<
10196                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10197                    >(_) => {},
10198                }
10199            }
10200            #[automatically_derived]
10201            #[doc(hidden)]
10202            impl ::core::convert::From<setstateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
10203                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
10204                    (value.historySeconds,)
10205                }
10206            }
10207            #[automatically_derived]
10208            #[doc(hidden)]
10209            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setstateHistoryRetentionPeriodCall {
10210                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10211                    Self {
10212                        historySeconds: tuple.0,
10213                    }
10214                }
10215            }
10216        }
10217        {
10218            #[doc(hidden)]
10219            type UnderlyingSolTuple<'a> = ();
10220            #[doc(hidden)]
10221            type UnderlyingRustTuple<'a> = ();
10222            #[cfg(test)]
10223            #[allow(dead_code, unreachable_patterns)]
10224            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10225                match _t {
10226                    alloy_sol_types::private::AssertTypeEq::<
10227                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10228                    >(_) => {},
10229                }
10230            }
10231            #[automatically_derived]
10232            #[doc(hidden)]
10233            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
10234                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
10235                    ()
10236                }
10237            }
10238            #[automatically_derived]
10239            #[doc(hidden)]
10240            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setstateHistoryRetentionPeriodReturn {
10241                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10242                    Self {}
10243                }
10244            }
10245        }
10246        #[automatically_derived]
10247        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
10248            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10249            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10250            type Return = setstateHistoryRetentionPeriodReturn;
10251            type ReturnTuple<'a> = ();
10252            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10253            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
10254            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
10255            #[inline]
10256            fn new<'a>(
10257                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10258            ) -> Self {
10259                tuple.into()
10260            }
10261            #[inline]
10262            fn tokenize(&self) -> Self::Token<'_> {
10263                (
10264                    <alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
10265                        &self.historySeconds,
10266                    ),
10267                )
10268            }
10269            #[inline]
10270            fn abi_decode_returns(
10271                data: &[u8],
10272                validate: bool,
10273            ) -> alloy_sol_types::Result<Self::Return> {
10274                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10275                    data, validate,
10276                )
10277                .map(Into::into)
10278            }
10279        }
10280    };
10281    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10282    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
10283    ```solidity
10284    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
10285    ```*/
10286    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10287    #[derive(Clone)]
10288    pub struct stateHistoryCommitmentsCall {
10289        #[allow(missing_docs)]
10290        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10291    }
10292    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10293    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
10294    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10295    #[derive(Clone)]
10296    pub struct stateHistoryCommitmentsReturn {
10297        #[allow(missing_docs)]
10298        pub l1BlockHeight: u64,
10299        #[allow(missing_docs)]
10300        pub l1BlockTimestamp: u64,
10301        #[allow(missing_docs)]
10302        pub hotShotBlockHeight: u64,
10303        #[allow(missing_docs)]
10304        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10305    }
10306    #[allow(
10307        non_camel_case_types,
10308        non_snake_case,
10309        clippy::pub_underscore_fields,
10310        clippy::style
10311    )]
10312    const _: () = {
10313        use alloy::sol_types as alloy_sol_types;
10314        {
10315            #[doc(hidden)]
10316            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10317            #[doc(hidden)]
10318            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
10319            #[cfg(test)]
10320            #[allow(dead_code, unreachable_patterns)]
10321            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10322                match _t {
10323                    alloy_sol_types::private::AssertTypeEq::<
10324                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10325                    >(_) => {},
10326                }
10327            }
10328            #[automatically_derived]
10329            #[doc(hidden)]
10330            impl ::core::convert::From<stateHistoryCommitmentsCall> for UnderlyingRustTuple<'_> {
10331                fn from(value: stateHistoryCommitmentsCall) -> Self {
10332                    (value._0,)
10333                }
10334            }
10335            #[automatically_derived]
10336            #[doc(hidden)]
10337            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryCommitmentsCall {
10338                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10339                    Self { _0: tuple.0 }
10340                }
10341            }
10342        }
10343        {
10344            #[doc(hidden)]
10345            type UnderlyingSolTuple<'a> = (
10346                alloy::sol_types::sol_data::Uint<64>,
10347                alloy::sol_types::sol_data::Uint<64>,
10348                alloy::sol_types::sol_data::Uint<64>,
10349                BN254::ScalarField,
10350            );
10351            #[doc(hidden)]
10352            type UnderlyingRustTuple<'a> = (
10353                u64,
10354                u64,
10355                u64,
10356                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10357            );
10358            #[cfg(test)]
10359            #[allow(dead_code, unreachable_patterns)]
10360            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10361                match _t {
10362                    alloy_sol_types::private::AssertTypeEq::<
10363                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10364                    >(_) => {},
10365                }
10366            }
10367            #[automatically_derived]
10368            #[doc(hidden)]
10369            impl ::core::convert::From<stateHistoryCommitmentsReturn> for UnderlyingRustTuple<'_> {
10370                fn from(value: stateHistoryCommitmentsReturn) -> Self {
10371                    (
10372                        value.l1BlockHeight,
10373                        value.l1BlockTimestamp,
10374                        value.hotShotBlockHeight,
10375                        value.hotShotBlockCommRoot,
10376                    )
10377                }
10378            }
10379            #[automatically_derived]
10380            #[doc(hidden)]
10381            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryCommitmentsReturn {
10382                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10383                    Self {
10384                        l1BlockHeight: tuple.0,
10385                        l1BlockTimestamp: tuple.1,
10386                        hotShotBlockHeight: tuple.2,
10387                        hotShotBlockCommRoot: tuple.3,
10388                    }
10389                }
10390            }
10391        }
10392        #[automatically_derived]
10393        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
10394            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10395            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10396            type Return = stateHistoryCommitmentsReturn;
10397            type ReturnTuple<'a> = (
10398                alloy::sol_types::sol_data::Uint<64>,
10399                alloy::sol_types::sol_data::Uint<64>,
10400                alloy::sol_types::sol_data::Uint<64>,
10401                BN254::ScalarField,
10402            );
10403            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10404            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
10405            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
10406            #[inline]
10407            fn new<'a>(
10408                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10409            ) -> Self {
10410                tuple.into()
10411            }
10412            #[inline]
10413            fn tokenize(&self) -> Self::Token<'_> {
10414                (
10415                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
10416                        &self._0,
10417                    ),
10418                )
10419            }
10420            #[inline]
10421            fn abi_decode_returns(
10422                data: &[u8],
10423                validate: bool,
10424            ) -> alloy_sol_types::Result<Self::Return> {
10425                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10426                    data, validate,
10427                )
10428                .map(Into::into)
10429            }
10430        }
10431    };
10432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10433    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
10434    ```solidity
10435    function stateHistoryFirstIndex() external view returns (uint64);
10436    ```*/
10437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10438    #[derive(Clone)]
10439    pub struct stateHistoryFirstIndexCall {}
10440    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10441    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
10442    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10443    #[derive(Clone)]
10444    pub struct stateHistoryFirstIndexReturn {
10445        #[allow(missing_docs)]
10446        pub _0: u64,
10447    }
10448    #[allow(
10449        non_camel_case_types,
10450        non_snake_case,
10451        clippy::pub_underscore_fields,
10452        clippy::style
10453    )]
10454    const _: () = {
10455        use alloy::sol_types as alloy_sol_types;
10456        {
10457            #[doc(hidden)]
10458            type UnderlyingSolTuple<'a> = ();
10459            #[doc(hidden)]
10460            type UnderlyingRustTuple<'a> = ();
10461            #[cfg(test)]
10462            #[allow(dead_code, unreachable_patterns)]
10463            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10464                match _t {
10465                    alloy_sol_types::private::AssertTypeEq::<
10466                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10467                    >(_) => {},
10468                }
10469            }
10470            #[automatically_derived]
10471            #[doc(hidden)]
10472            impl ::core::convert::From<stateHistoryFirstIndexCall> for UnderlyingRustTuple<'_> {
10473                fn from(value: stateHistoryFirstIndexCall) -> Self {
10474                    ()
10475                }
10476            }
10477            #[automatically_derived]
10478            #[doc(hidden)]
10479            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryFirstIndexCall {
10480                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10481                    Self {}
10482                }
10483            }
10484        }
10485        {
10486            #[doc(hidden)]
10487            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10488            #[doc(hidden)]
10489            type UnderlyingRustTuple<'a> = (u64,);
10490            #[cfg(test)]
10491            #[allow(dead_code, unreachable_patterns)]
10492            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10493                match _t {
10494                    alloy_sol_types::private::AssertTypeEq::<
10495                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10496                    >(_) => {},
10497                }
10498            }
10499            #[automatically_derived]
10500            #[doc(hidden)]
10501            impl ::core::convert::From<stateHistoryFirstIndexReturn> for UnderlyingRustTuple<'_> {
10502                fn from(value: stateHistoryFirstIndexReturn) -> Self {
10503                    (value._0,)
10504                }
10505            }
10506            #[automatically_derived]
10507            #[doc(hidden)]
10508            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryFirstIndexReturn {
10509                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10510                    Self { _0: tuple.0 }
10511                }
10512            }
10513        }
10514        #[automatically_derived]
10515        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
10516            type Parameters<'a> = ();
10517            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10518            type Return = stateHistoryFirstIndexReturn;
10519            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10520            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10521            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
10522            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
10523            #[inline]
10524            fn new<'a>(
10525                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10526            ) -> Self {
10527                tuple.into()
10528            }
10529            #[inline]
10530            fn tokenize(&self) -> Self::Token<'_> {
10531                ()
10532            }
10533            #[inline]
10534            fn abi_decode_returns(
10535                data: &[u8],
10536                validate: bool,
10537            ) -> alloy_sol_types::Result<Self::Return> {
10538                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10539                    data, validate,
10540                )
10541                .map(Into::into)
10542            }
10543        }
10544    };
10545    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10546    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
10547    ```solidity
10548    function stateHistoryRetentionPeriod() external view returns (uint32);
10549    ```*/
10550    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10551    #[derive(Clone)]
10552    pub struct stateHistoryRetentionPeriodCall {}
10553    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10554    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
10555    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10556    #[derive(Clone)]
10557    pub struct stateHistoryRetentionPeriodReturn {
10558        #[allow(missing_docs)]
10559        pub _0: u32,
10560    }
10561    #[allow(
10562        non_camel_case_types,
10563        non_snake_case,
10564        clippy::pub_underscore_fields,
10565        clippy::style
10566    )]
10567    const _: () = {
10568        use alloy::sol_types as alloy_sol_types;
10569        {
10570            #[doc(hidden)]
10571            type UnderlyingSolTuple<'a> = ();
10572            #[doc(hidden)]
10573            type UnderlyingRustTuple<'a> = ();
10574            #[cfg(test)]
10575            #[allow(dead_code, unreachable_patterns)]
10576            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10577                match _t {
10578                    alloy_sol_types::private::AssertTypeEq::<
10579                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10580                    >(_) => {},
10581                }
10582            }
10583            #[automatically_derived]
10584            #[doc(hidden)]
10585            impl ::core::convert::From<stateHistoryRetentionPeriodCall> for UnderlyingRustTuple<'_> {
10586                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
10587                    ()
10588                }
10589            }
10590            #[automatically_derived]
10591            #[doc(hidden)]
10592            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryRetentionPeriodCall {
10593                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10594                    Self {}
10595                }
10596            }
10597        }
10598        {
10599            #[doc(hidden)]
10600            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10601            #[doc(hidden)]
10602            type UnderlyingRustTuple<'a> = (u32,);
10603            #[cfg(test)]
10604            #[allow(dead_code, unreachable_patterns)]
10605            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10606                match _t {
10607                    alloy_sol_types::private::AssertTypeEq::<
10608                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10609                    >(_) => {},
10610                }
10611            }
10612            #[automatically_derived]
10613            #[doc(hidden)]
10614            impl ::core::convert::From<stateHistoryRetentionPeriodReturn> for UnderlyingRustTuple<'_> {
10615                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
10616                    (value._0,)
10617                }
10618            }
10619            #[automatically_derived]
10620            #[doc(hidden)]
10621            impl ::core::convert::From<UnderlyingRustTuple<'_>> for stateHistoryRetentionPeriodReturn {
10622                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10623                    Self { _0: tuple.0 }
10624                }
10625            }
10626        }
10627        #[automatically_derived]
10628        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
10629            type Parameters<'a> = ();
10630            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10631            type Return = stateHistoryRetentionPeriodReturn;
10632            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10633            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10634            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
10635            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
10636            #[inline]
10637            fn new<'a>(
10638                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10639            ) -> Self {
10640                tuple.into()
10641            }
10642            #[inline]
10643            fn tokenize(&self) -> Self::Token<'_> {
10644                ()
10645            }
10646            #[inline]
10647            fn abi_decode_returns(
10648                data: &[u8],
10649                validate: bool,
10650            ) -> alloy_sol_types::Result<Self::Return> {
10651                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10652                    data, validate,
10653                )
10654                .map(Into::into)
10655            }
10656        }
10657    };
10658    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10659    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
10660    ```solidity
10661    function transferOwnership(address newOwner) external;
10662    ```*/
10663    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10664    #[derive(Clone)]
10665    pub struct transferOwnershipCall {
10666        #[allow(missing_docs)]
10667        pub newOwner: alloy::sol_types::private::Address,
10668    }
10669    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
10670    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10671    #[derive(Clone)]
10672    pub struct transferOwnershipReturn {}
10673    #[allow(
10674        non_camel_case_types,
10675        non_snake_case,
10676        clippy::pub_underscore_fields,
10677        clippy::style
10678    )]
10679    const _: () = {
10680        use alloy::sol_types as alloy_sol_types;
10681        {
10682            #[doc(hidden)]
10683            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10684            #[doc(hidden)]
10685            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10686            #[cfg(test)]
10687            #[allow(dead_code, unreachable_patterns)]
10688            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10689                match _t {
10690                    alloy_sol_types::private::AssertTypeEq::<
10691                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10692                    >(_) => {},
10693                }
10694            }
10695            #[automatically_derived]
10696            #[doc(hidden)]
10697            impl ::core::convert::From<transferOwnershipCall> for UnderlyingRustTuple<'_> {
10698                fn from(value: transferOwnershipCall) -> Self {
10699                    (value.newOwner,)
10700                }
10701            }
10702            #[automatically_derived]
10703            #[doc(hidden)]
10704            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipCall {
10705                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10706                    Self { newOwner: tuple.0 }
10707                }
10708            }
10709        }
10710        {
10711            #[doc(hidden)]
10712            type UnderlyingSolTuple<'a> = ();
10713            #[doc(hidden)]
10714            type UnderlyingRustTuple<'a> = ();
10715            #[cfg(test)]
10716            #[allow(dead_code, unreachable_patterns)]
10717            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10718                match _t {
10719                    alloy_sol_types::private::AssertTypeEq::<
10720                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10721                    >(_) => {},
10722                }
10723            }
10724            #[automatically_derived]
10725            #[doc(hidden)]
10726            impl ::core::convert::From<transferOwnershipReturn> for UnderlyingRustTuple<'_> {
10727                fn from(value: transferOwnershipReturn) -> Self {
10728                    ()
10729                }
10730            }
10731            #[automatically_derived]
10732            #[doc(hidden)]
10733            impl ::core::convert::From<UnderlyingRustTuple<'_>> for transferOwnershipReturn {
10734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10735                    Self {}
10736                }
10737            }
10738        }
10739        #[automatically_derived]
10740        impl alloy_sol_types::SolCall for transferOwnershipCall {
10741            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10742            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10743            type Return = transferOwnershipReturn;
10744            type ReturnTuple<'a> = ();
10745            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10746            const SIGNATURE: &'static str = "transferOwnership(address)";
10747            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
10748            #[inline]
10749            fn new<'a>(
10750                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10751            ) -> Self {
10752                tuple.into()
10753            }
10754            #[inline]
10755            fn tokenize(&self) -> Self::Token<'_> {
10756                (
10757                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10758                        &self.newOwner,
10759                    ),
10760                )
10761            }
10762            #[inline]
10763            fn abi_decode_returns(
10764                data: &[u8],
10765                validate: bool,
10766            ) -> alloy_sol_types::Result<Self::Return> {
10767                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10768                    data, validate,
10769                )
10770                .map(Into::into)
10771            }
10772        }
10773    };
10774    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10775    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
10776    ```solidity
10777    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
10778    ```*/
10779    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10780    #[derive(Clone)]
10781    pub struct updateEpochStartBlockCall {
10782        #[allow(missing_docs)]
10783        pub newEpochStartBlock: u64,
10784    }
10785    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
10786    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10787    #[derive(Clone)]
10788    pub struct updateEpochStartBlockReturn {}
10789    #[allow(
10790        non_camel_case_types,
10791        non_snake_case,
10792        clippy::pub_underscore_fields,
10793        clippy::style
10794    )]
10795    const _: () = {
10796        use alloy::sol_types as alloy_sol_types;
10797        {
10798            #[doc(hidden)]
10799            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10800            #[doc(hidden)]
10801            type UnderlyingRustTuple<'a> = (u64,);
10802            #[cfg(test)]
10803            #[allow(dead_code, unreachable_patterns)]
10804            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10805                match _t {
10806                    alloy_sol_types::private::AssertTypeEq::<
10807                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10808                    >(_) => {},
10809                }
10810            }
10811            #[automatically_derived]
10812            #[doc(hidden)]
10813            impl ::core::convert::From<updateEpochStartBlockCall> for UnderlyingRustTuple<'_> {
10814                fn from(value: updateEpochStartBlockCall) -> Self {
10815                    (value.newEpochStartBlock,)
10816                }
10817            }
10818            #[automatically_derived]
10819            #[doc(hidden)]
10820            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateEpochStartBlockCall {
10821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10822                    Self {
10823                        newEpochStartBlock: tuple.0,
10824                    }
10825                }
10826            }
10827        }
10828        {
10829            #[doc(hidden)]
10830            type UnderlyingSolTuple<'a> = ();
10831            #[doc(hidden)]
10832            type UnderlyingRustTuple<'a> = ();
10833            #[cfg(test)]
10834            #[allow(dead_code, unreachable_patterns)]
10835            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10836                match _t {
10837                    alloy_sol_types::private::AssertTypeEq::<
10838                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10839                    >(_) => {},
10840                }
10841            }
10842            #[automatically_derived]
10843            #[doc(hidden)]
10844            impl ::core::convert::From<updateEpochStartBlockReturn> for UnderlyingRustTuple<'_> {
10845                fn from(value: updateEpochStartBlockReturn) -> Self {
10846                    ()
10847                }
10848            }
10849            #[automatically_derived]
10850            #[doc(hidden)]
10851            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateEpochStartBlockReturn {
10852                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10853                    Self {}
10854                }
10855            }
10856        }
10857        #[automatically_derived]
10858        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
10859            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10860            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10861            type Return = updateEpochStartBlockReturn;
10862            type ReturnTuple<'a> = ();
10863            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10864            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
10865            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
10866            #[inline]
10867            fn new<'a>(
10868                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10869            ) -> Self {
10870                tuple.into()
10871            }
10872            #[inline]
10873            fn tokenize(&self) -> Self::Token<'_> {
10874                (
10875                    <alloy::sol_types::sol_data::Uint<64> as alloy_sol_types::SolType>::tokenize(
10876                        &self.newEpochStartBlock,
10877                    ),
10878                )
10879            }
10880            #[inline]
10881            fn abi_decode_returns(
10882                data: &[u8],
10883                validate: bool,
10884            ) -> alloy_sol_types::Result<Self::Return> {
10885                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
10886                    data, validate,
10887                )
10888                .map(Into::into)
10889            }
10890        }
10891    };
10892    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10893    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
10894    ```solidity
10895    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
10896    ```*/
10897    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10898    #[derive(Clone)]
10899    pub struct upgradeToAndCallCall {
10900        #[allow(missing_docs)]
10901        pub newImplementation: alloy::sol_types::private::Address,
10902        #[allow(missing_docs)]
10903        pub data: alloy::sol_types::private::Bytes,
10904    }
10905    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
10906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10907    #[derive(Clone)]
10908    pub struct upgradeToAndCallReturn {}
10909    #[allow(
10910        non_camel_case_types,
10911        non_snake_case,
10912        clippy::pub_underscore_fields,
10913        clippy::style
10914    )]
10915    const _: () = {
10916        use alloy::sol_types as alloy_sol_types;
10917        {
10918            #[doc(hidden)]
10919            type UnderlyingSolTuple<'a> = (
10920                alloy::sol_types::sol_data::Address,
10921                alloy::sol_types::sol_data::Bytes,
10922            );
10923            #[doc(hidden)]
10924            type UnderlyingRustTuple<'a> = (
10925                alloy::sol_types::private::Address,
10926                alloy::sol_types::private::Bytes,
10927            );
10928            #[cfg(test)]
10929            #[allow(dead_code, unreachable_patterns)]
10930            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10931                match _t {
10932                    alloy_sol_types::private::AssertTypeEq::<
10933                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10934                    >(_) => {},
10935                }
10936            }
10937            #[automatically_derived]
10938            #[doc(hidden)]
10939            impl ::core::convert::From<upgradeToAndCallCall> for UnderlyingRustTuple<'_> {
10940                fn from(value: upgradeToAndCallCall) -> Self {
10941                    (value.newImplementation, value.data)
10942                }
10943            }
10944            #[automatically_derived]
10945            #[doc(hidden)]
10946            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallCall {
10947                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10948                    Self {
10949                        newImplementation: tuple.0,
10950                        data: tuple.1,
10951                    }
10952                }
10953            }
10954        }
10955        {
10956            #[doc(hidden)]
10957            type UnderlyingSolTuple<'a> = ();
10958            #[doc(hidden)]
10959            type UnderlyingRustTuple<'a> = ();
10960            #[cfg(test)]
10961            #[allow(dead_code, unreachable_patterns)]
10962            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
10963                match _t {
10964                    alloy_sol_types::private::AssertTypeEq::<
10965                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10966                    >(_) => {},
10967                }
10968            }
10969            #[automatically_derived]
10970            #[doc(hidden)]
10971            impl ::core::convert::From<upgradeToAndCallReturn> for UnderlyingRustTuple<'_> {
10972                fn from(value: upgradeToAndCallReturn) -> Self {
10973                    ()
10974                }
10975            }
10976            #[automatically_derived]
10977            #[doc(hidden)]
10978            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToAndCallReturn {
10979                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10980                    Self {}
10981                }
10982            }
10983        }
10984        #[automatically_derived]
10985        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
10986            type Parameters<'a> = (
10987                alloy::sol_types::sol_data::Address,
10988                alloy::sol_types::sol_data::Bytes,
10989            );
10990            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
10991            type Return = upgradeToAndCallReturn;
10992            type ReturnTuple<'a> = ();
10993            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
10994            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
10995            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
10996            #[inline]
10997            fn new<'a>(
10998                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10999            ) -> Self {
11000                tuple.into()
11001            }
11002            #[inline]
11003            fn tokenize(&self) -> Self::Token<'_> {
11004                (
11005                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11006                        &self.newImplementation,
11007                    ),
11008                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11009                        &self.data,
11010                    ),
11011                )
11012            }
11013            #[inline]
11014            fn abi_decode_returns(
11015                data: &[u8],
11016                validate: bool,
11017            ) -> alloy_sol_types::Result<Self::Return> {
11018                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11019                    data, validate,
11020                )
11021                .map(Into::into)
11022            }
11023        }
11024    };
11025    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11026    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
11027    ```solidity
11028    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
11029    ```*/
11030    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11031    #[derive(Clone)]
11032    pub struct votingStakeTableStateCall {}
11033    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11034    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
11035    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11036    #[derive(Clone)]
11037    pub struct votingStakeTableStateReturn {
11038        #[allow(missing_docs)]
11039        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
11040        #[allow(missing_docs)]
11041        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11042        #[allow(missing_docs)]
11043        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11044        #[allow(missing_docs)]
11045        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11046    }
11047    #[allow(
11048        non_camel_case_types,
11049        non_snake_case,
11050        clippy::pub_underscore_fields,
11051        clippy::style
11052    )]
11053    const _: () = {
11054        use alloy::sol_types as alloy_sol_types;
11055        {
11056            #[doc(hidden)]
11057            type UnderlyingSolTuple<'a> = ();
11058            #[doc(hidden)]
11059            type UnderlyingRustTuple<'a> = ();
11060            #[cfg(test)]
11061            #[allow(dead_code, unreachable_patterns)]
11062            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11063                match _t {
11064                    alloy_sol_types::private::AssertTypeEq::<
11065                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11066                    >(_) => {},
11067                }
11068            }
11069            #[automatically_derived]
11070            #[doc(hidden)]
11071            impl ::core::convert::From<votingStakeTableStateCall> for UnderlyingRustTuple<'_> {
11072                fn from(value: votingStakeTableStateCall) -> Self {
11073                    ()
11074                }
11075            }
11076            #[automatically_derived]
11077            #[doc(hidden)]
11078            impl ::core::convert::From<UnderlyingRustTuple<'_>> for votingStakeTableStateCall {
11079                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11080                    Self {}
11081                }
11082            }
11083        }
11084        {
11085            #[doc(hidden)]
11086            type UnderlyingSolTuple<'a> = (
11087                alloy::sol_types::sol_data::Uint<256>,
11088                BN254::ScalarField,
11089                BN254::ScalarField,
11090                BN254::ScalarField,
11091            );
11092            #[doc(hidden)]
11093            type UnderlyingRustTuple<'a> = (
11094                alloy::sol_types::private::primitives::aliases::U256,
11095                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11096                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11097                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11098            );
11099            #[cfg(test)]
11100            #[allow(dead_code, unreachable_patterns)]
11101            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
11102                match _t {
11103                    alloy_sol_types::private::AssertTypeEq::<
11104                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11105                    >(_) => {},
11106                }
11107            }
11108            #[automatically_derived]
11109            #[doc(hidden)]
11110            impl ::core::convert::From<votingStakeTableStateReturn> for UnderlyingRustTuple<'_> {
11111                fn from(value: votingStakeTableStateReturn) -> Self {
11112                    (
11113                        value.threshold,
11114                        value.blsKeyComm,
11115                        value.schnorrKeyComm,
11116                        value.amountComm,
11117                    )
11118                }
11119            }
11120            #[automatically_derived]
11121            #[doc(hidden)]
11122            impl ::core::convert::From<UnderlyingRustTuple<'_>> for votingStakeTableStateReturn {
11123                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11124                    Self {
11125                        threshold: tuple.0,
11126                        blsKeyComm: tuple.1,
11127                        schnorrKeyComm: tuple.2,
11128                        amountComm: tuple.3,
11129                    }
11130                }
11131            }
11132        }
11133        #[automatically_derived]
11134        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
11135            type Parameters<'a> = ();
11136            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
11137            type Return = votingStakeTableStateReturn;
11138            type ReturnTuple<'a> = (
11139                alloy::sol_types::sol_data::Uint<256>,
11140                BN254::ScalarField,
11141                BN254::ScalarField,
11142                BN254::ScalarField,
11143            );
11144            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
11145            const SIGNATURE: &'static str = "votingStakeTableState()";
11146            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
11147            #[inline]
11148            fn new<'a>(
11149                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11150            ) -> Self {
11151                tuple.into()
11152            }
11153            #[inline]
11154            fn tokenize(&self) -> Self::Token<'_> {
11155                ()
11156            }
11157            #[inline]
11158            fn abi_decode_returns(
11159                data: &[u8],
11160                validate: bool,
11161            ) -> alloy_sol_types::Result<Self::Return> {
11162                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
11163                    data, validate,
11164                )
11165                .map(Into::into)
11166            }
11167        }
11168    };
11169    ///Container for all the [`LightClientArbitrumV2`](self) function calls.
11170    #[derive()]
11171    pub enum LightClientArbitrumV2Calls {
11172        #[allow(missing_docs)]
11173        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
11174        #[allow(missing_docs)]
11175        _getVk(_getVkCall),
11176        #[allow(missing_docs)]
11177        blocksPerEpoch(blocksPerEpochCall),
11178        #[allow(missing_docs)]
11179        currentBlockNumber(currentBlockNumberCall),
11180        #[allow(missing_docs)]
11181        currentEpoch(currentEpochCall),
11182        #[allow(missing_docs)]
11183        disablePermissionedProverMode(disablePermissionedProverModeCall),
11184        #[allow(missing_docs)]
11185        epochFromBlockNumber(epochFromBlockNumberCall),
11186        #[allow(missing_docs)]
11187        epochStartBlock(epochStartBlockCall),
11188        #[allow(missing_docs)]
11189        finalizedState(finalizedStateCall),
11190        #[allow(missing_docs)]
11191        genesisStakeTableState(genesisStakeTableStateCall),
11192        #[allow(missing_docs)]
11193        genesisState(genesisStateCall),
11194        #[allow(missing_docs)]
11195        getHotShotCommitment(getHotShotCommitmentCall),
11196        #[allow(missing_docs)]
11197        getStateHistoryCount(getStateHistoryCountCall),
11198        #[allow(missing_docs)]
11199        getVersion(getVersionCall),
11200        #[allow(missing_docs)]
11201        initialize(initializeCall),
11202        #[allow(missing_docs)]
11203        initializeV2(initializeV2Call),
11204        #[allow(missing_docs)]
11205        isEpochRoot(isEpochRootCall),
11206        #[allow(missing_docs)]
11207        isGtEpochRoot(isGtEpochRootCall),
11208        #[allow(missing_docs)]
11209        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
11210        #[allow(missing_docs)]
11211        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
11212        #[allow(missing_docs)]
11213        newFinalizedState_0(newFinalizedState_0Call),
11214        #[allow(missing_docs)]
11215        newFinalizedState_1(newFinalizedState_1Call),
11216        #[allow(missing_docs)]
11217        owner(ownerCall),
11218        #[allow(missing_docs)]
11219        permissionedProver(permissionedProverCall),
11220        #[allow(missing_docs)]
11221        proxiableUUID(proxiableUUIDCall),
11222        #[allow(missing_docs)]
11223        renounceOwnership(renounceOwnershipCall),
11224        #[allow(missing_docs)]
11225        setPermissionedProver(setPermissionedProverCall),
11226        #[allow(missing_docs)]
11227        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
11228        #[allow(missing_docs)]
11229        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
11230        #[allow(missing_docs)]
11231        stateHistoryCommitments(stateHistoryCommitmentsCall),
11232        #[allow(missing_docs)]
11233        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
11234        #[allow(missing_docs)]
11235        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
11236        #[allow(missing_docs)]
11237        transferOwnership(transferOwnershipCall),
11238        #[allow(missing_docs)]
11239        updateEpochStartBlock(updateEpochStartBlockCall),
11240        #[allow(missing_docs)]
11241        upgradeToAndCall(upgradeToAndCallCall),
11242        #[allow(missing_docs)]
11243        votingStakeTableState(votingStakeTableStateCall),
11244    }
11245    #[automatically_derived]
11246    impl LightClientArbitrumV2Calls {
11247        /// All the selectors of this enum.
11248        ///
11249        /// Note that the selectors might not be in the same order as the variants.
11250        /// No guarantees are made about the order of the selectors.
11251        ///
11252        /// Prefer using `SolInterface` methods instead.
11253        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11254            [1u8, 63u8, 165u8, 252u8],
11255            [2u8, 181u8, 146u8, 243u8],
11256            [6u8, 37u8, 225u8, 155u8],
11257            [13u8, 142u8, 110u8, 44u8],
11258            [18u8, 23u8, 60u8, 44u8],
11259            [22u8, 122u8, 198u8, 24u8],
11260            [32u8, 99u8, 212u8, 247u8],
11261            [37u8, 41u8, 116u8, 39u8],
11262            [47u8, 121u8, 136u8, 157u8],
11263            [48u8, 12u8, 137u8, 221u8],
11264            [49u8, 61u8, 247u8, 177u8],
11265            [55u8, 142u8, 194u8, 59u8],
11266            [62u8, 213u8, 91u8, 123u8],
11267            [66u8, 109u8, 49u8, 148u8],
11268            [67u8, 61u8, 186u8, 159u8],
11269            [79u8, 30u8, 242u8, 134u8],
11270            [82u8, 209u8, 144u8, 45u8],
11271            [105u8, 204u8, 106u8, 4u8],
11272            [113u8, 80u8, 24u8, 166u8],
11273            [117u8, 124u8, 55u8, 173u8],
11274            [118u8, 103u8, 24u8, 8u8],
11275            [130u8, 110u8, 65u8, 252u8],
11276            [133u8, 132u8, 210u8, 63u8],
11277            [141u8, 165u8, 203u8, 91u8],
11278            [144u8, 193u8, 67u8, 144u8],
11279            [150u8, 193u8, 202u8, 97u8],
11280            [155u8, 170u8, 60u8, 201u8],
11281            [159u8, 219u8, 84u8, 167u8],
11282            [173u8, 60u8, 177u8, 204u8],
11283            [179u8, 59u8, 196u8, 145u8],
11284            [194u8, 59u8, 158u8, 158u8],
11285            [210u8, 77u8, 147u8, 61u8],
11286            [224u8, 48u8, 51u8, 1u8],
11287            [240u8, 104u8, 32u8, 84u8],
11288            [242u8, 253u8, 227u8, 139u8],
11289            [249u8, 229u8, 13u8, 25u8],
11290        ];
11291    }
11292    #[automatically_derived]
11293    impl alloy_sol_types::SolInterface for LightClientArbitrumV2Calls {
11294        const NAME: &'static str = "LightClientArbitrumV2Calls";
11295        const MIN_DATA_LENGTH: usize = 0usize;
11296        const COUNT: usize = 36usize;
11297        #[inline]
11298        fn selector(&self) -> [u8; 4] {
11299            match self {
11300                Self::UPGRADE_INTERFACE_VERSION(_) => {
11301                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
11302                },
11303                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
11304                Self::blocksPerEpoch(_) => {
11305                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
11306                },
11307                Self::currentBlockNumber(_) => {
11308                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
11309                },
11310                Self::currentEpoch(_) => <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR,
11311                Self::disablePermissionedProverMode(_) => {
11312                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
11313                },
11314                Self::epochFromBlockNumber(_) => {
11315                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
11316                },
11317                Self::epochStartBlock(_) => {
11318                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
11319                },
11320                Self::finalizedState(_) => {
11321                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11322                },
11323                Self::genesisStakeTableState(_) => {
11324                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
11325                },
11326                Self::genesisState(_) => <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR,
11327                Self::getHotShotCommitment(_) => {
11328                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
11329                },
11330                Self::getStateHistoryCount(_) => {
11331                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
11332                },
11333                Self::getVersion(_) => <getVersionCall as alloy_sol_types::SolCall>::SELECTOR,
11334                Self::initialize(_) => <initializeCall as alloy_sol_types::SolCall>::SELECTOR,
11335                Self::initializeV2(_) => <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR,
11336                Self::isEpochRoot(_) => <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR,
11337                Self::isGtEpochRoot(_) => <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR,
11338                Self::isPermissionedProverEnabled(_) => {
11339                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
11340                },
11341                Self::lagOverEscapeHatchThreshold(_) => {
11342                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
11343                },
11344                Self::newFinalizedState_0(_) => {
11345                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
11346                },
11347                Self::newFinalizedState_1(_) => {
11348                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
11349                },
11350                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
11351                Self::permissionedProver(_) => {
11352                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
11353                },
11354                Self::proxiableUUID(_) => <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR,
11355                Self::renounceOwnership(_) => {
11356                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
11357                },
11358                Self::setPermissionedProver(_) => {
11359                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
11360                },
11361                Self::setStateHistoryRetentionPeriod(_) => {
11362                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11363                },
11364                Self::setstateHistoryRetentionPeriod(_) => {
11365                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11366                },
11367                Self::stateHistoryCommitments(_) => {
11368                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
11369                },
11370                Self::stateHistoryFirstIndex(_) => {
11371                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
11372                },
11373                Self::stateHistoryRetentionPeriod(_) => {
11374                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11375                },
11376                Self::transferOwnership(_) => {
11377                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
11378                },
11379                Self::updateEpochStartBlock(_) => {
11380                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
11381                },
11382                Self::upgradeToAndCall(_) => {
11383                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
11384                },
11385                Self::votingStakeTableState(_) => {
11386                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
11387                },
11388            }
11389        }
11390        #[inline]
11391        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11392            Self::SELECTORS.get(i).copied()
11393        }
11394        #[inline]
11395        fn valid_selector(selector: [u8; 4]) -> bool {
11396            Self::SELECTORS.binary_search(&selector).is_ok()
11397        }
11398        #[inline]
11399        #[allow(non_snake_case)]
11400        fn abi_decode_raw(
11401            selector: [u8; 4],
11402            data: &[u8],
11403            validate: bool,
11404        ) -> alloy_sol_types::Result<Self> {
11405            static DECODE_SHIMS: &[fn(
11406                &[u8],
11407                bool,
11408            )
11409                -> alloy_sol_types::Result<LightClientArbitrumV2Calls>] = &[
11410                {
11411                    fn setPermissionedProver(
11412                        data: &[u8],
11413                        validate: bool,
11414                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11415                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11416                            data, validate,
11417                        )
11418                        .map(LightClientArbitrumV2Calls::setPermissionedProver)
11419                    }
11420                    setPermissionedProver
11421                },
11422                {
11423                    fn stateHistoryCommitments(
11424                        data: &[u8],
11425                        validate: bool,
11426                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11427                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
11428                            data, validate,
11429                        )
11430                        .map(LightClientArbitrumV2Calls::stateHistoryCommitments)
11431                    }
11432                    stateHistoryCommitments
11433                },
11434                {
11435                    fn votingStakeTableState(
11436                        data: &[u8],
11437                        validate: bool,
11438                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11439                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11440                            data, validate,
11441                        )
11442                        .map(LightClientArbitrumV2Calls::votingStakeTableState)
11443                    }
11444                    votingStakeTableState
11445                },
11446                {
11447                    fn getVersion(
11448                        data: &[u8],
11449                        validate: bool,
11450                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11451                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
11452                            .map(LightClientArbitrumV2Calls::getVersion)
11453                    }
11454                    getVersion
11455                },
11456                {
11457                    fn _getVk(
11458                        data: &[u8],
11459                        validate: bool,
11460                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11461                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
11462                            .map(LightClientArbitrumV2Calls::_getVk)
11463                    }
11464                    _getVk
11465                },
11466                {
11467                    fn updateEpochStartBlock(
11468                        data: &[u8],
11469                        validate: bool,
11470                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11471                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
11472                            data, validate,
11473                        )
11474                        .map(LightClientArbitrumV2Calls::updateEpochStartBlock)
11475                    }
11476                    updateEpochStartBlock
11477                },
11478                {
11479                    fn newFinalizedState_0(
11480                        data: &[u8],
11481                        validate: bool,
11482                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11483                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
11484                            data, validate,
11485                        )
11486                        .map(LightClientArbitrumV2Calls::newFinalizedState_0)
11487                    }
11488                    newFinalizedState_0
11489                },
11490                {
11491                    fn isEpochRoot(
11492                        data: &[u8],
11493                        validate: bool,
11494                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11495                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
11496                            data, validate,
11497                        )
11498                        .map(LightClientArbitrumV2Calls::isEpochRoot)
11499                    }
11500                    isEpochRoot
11501                },
11502                {
11503                    fn stateHistoryFirstIndex(
11504                        data: &[u8],
11505                        validate: bool,
11506                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11507                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
11508                            data, validate,
11509                        )
11510                        .map(LightClientArbitrumV2Calls::stateHistoryFirstIndex)
11511                    }
11512                    stateHistoryFirstIndex
11513                },
11514                {
11515                    fn isGtEpochRoot(
11516                        data: &[u8],
11517                        validate: bool,
11518                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11519                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
11520                            data, validate,
11521                        )
11522                        .map(LightClientArbitrumV2Calls::isGtEpochRoot)
11523                    }
11524                    isGtEpochRoot
11525                },
11526                {
11527                    fn permissionedProver(
11528                        data: &[u8],
11529                        validate: bool,
11530                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11531                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11532                            data, validate,
11533                        )
11534                        .map(LightClientArbitrumV2Calls::permissionedProver)
11535                    }
11536                    permissionedProver
11537                },
11538                {
11539                    fn currentBlockNumber(
11540                        data: &[u8],
11541                        validate: bool,
11542                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11543                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
11544                            data, validate,
11545                        )
11546                        .map(LightClientArbitrumV2Calls::currentBlockNumber)
11547                    }
11548                    currentBlockNumber
11549                },
11550                {
11551                    fn epochStartBlock(
11552                        data: &[u8],
11553                        validate: bool,
11554                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11555                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
11556                            data, validate,
11557                        )
11558                        .map(LightClientArbitrumV2Calls::epochStartBlock)
11559                    }
11560                    epochStartBlock
11561                },
11562                {
11563                    fn genesisStakeTableState(
11564                        data: &[u8],
11565                        validate: bool,
11566                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11567                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11568                            data, validate,
11569                        )
11570                        .map(LightClientArbitrumV2Calls::genesisStakeTableState)
11571                    }
11572                    genesisStakeTableState
11573                },
11574                {
11575                    fn setStateHistoryRetentionPeriod(
11576                        data: &[u8],
11577                        validate: bool,
11578                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11579                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11580                                data,
11581                                validate,
11582                            )
11583                            .map(
11584                                LightClientArbitrumV2Calls::setStateHistoryRetentionPeriod,
11585                            )
11586                    }
11587                    setStateHistoryRetentionPeriod
11588                },
11589                {
11590                    fn upgradeToAndCall(
11591                        data: &[u8],
11592                        validate: bool,
11593                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11594                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
11595                            data, validate,
11596                        )
11597                        .map(LightClientArbitrumV2Calls::upgradeToAndCall)
11598                    }
11599                    upgradeToAndCall
11600                },
11601                {
11602                    fn proxiableUUID(
11603                        data: &[u8],
11604                        validate: bool,
11605                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11606                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
11607                            data, validate,
11608                        )
11609                        .map(LightClientArbitrumV2Calls::proxiableUUID)
11610                    }
11611                    proxiableUUID
11612                },
11613                {
11614                    fn disablePermissionedProverMode(
11615                        data: &[u8],
11616                        validate: bool,
11617                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11618                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11619                                data,
11620                                validate,
11621                            )
11622                            .map(
11623                                LightClientArbitrumV2Calls::disablePermissionedProverMode,
11624                            )
11625                    }
11626                    disablePermissionedProverMode
11627                },
11628                {
11629                    fn renounceOwnership(
11630                        data: &[u8],
11631                        validate: bool,
11632                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11633                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11634                            data, validate,
11635                        )
11636                        .map(LightClientArbitrumV2Calls::renounceOwnership)
11637                    }
11638                    renounceOwnership
11639                },
11640                {
11641                    fn newFinalizedState_1(
11642                        data: &[u8],
11643                        validate: bool,
11644                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11645                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
11646                            data, validate,
11647                        )
11648                        .map(LightClientArbitrumV2Calls::newFinalizedState_1)
11649                    }
11650                    newFinalizedState_1
11651                },
11652                {
11653                    fn currentEpoch(
11654                        data: &[u8],
11655                        validate: bool,
11656                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11657                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
11658                            data, validate,
11659                        )
11660                        .map(LightClientArbitrumV2Calls::currentEpoch)
11661                    }
11662                    currentEpoch
11663                },
11664                {
11665                    fn isPermissionedProverEnabled(
11666                        data: &[u8],
11667                        validate: bool,
11668                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11669                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
11670                                data,
11671                                validate,
11672                            )
11673                            .map(LightClientArbitrumV2Calls::isPermissionedProverEnabled)
11674                    }
11675                    isPermissionedProverEnabled
11676                },
11677                {
11678                    fn getHotShotCommitment(
11679                        data: &[u8],
11680                        validate: bool,
11681                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11682                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
11683                            data, validate,
11684                        )
11685                        .map(LightClientArbitrumV2Calls::getHotShotCommitment)
11686                    }
11687                    getHotShotCommitment
11688                },
11689                {
11690                    fn owner(
11691                        data: &[u8],
11692                        validate: bool,
11693                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11694                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
11695                            .map(LightClientArbitrumV2Calls::owner)
11696                    }
11697                    owner
11698                },
11699                {
11700                    fn epochFromBlockNumber(
11701                        data: &[u8],
11702                        validate: bool,
11703                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11704                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
11705                            data, validate,
11706                        )
11707                        .map(LightClientArbitrumV2Calls::epochFromBlockNumber)
11708                    }
11709                    epochFromBlockNumber
11710                },
11711                {
11712                    fn setstateHistoryRetentionPeriod(
11713                        data: &[u8],
11714                        validate: bool,
11715                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11716                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11717                                data,
11718                                validate,
11719                            )
11720                            .map(
11721                                LightClientArbitrumV2Calls::setstateHistoryRetentionPeriod,
11722                            )
11723                    }
11724                    setstateHistoryRetentionPeriod
11725                },
11726                {
11727                    fn initialize(
11728                        data: &[u8],
11729                        validate: bool,
11730                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11731                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
11732                            .map(LightClientArbitrumV2Calls::initialize)
11733                    }
11734                    initialize
11735                },
11736                {
11737                    fn finalizedState(
11738                        data: &[u8],
11739                        validate: bool,
11740                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11741                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11742                            data, validate,
11743                        )
11744                        .map(LightClientArbitrumV2Calls::finalizedState)
11745                    }
11746                    finalizedState
11747                },
11748                {
11749                    fn UPGRADE_INTERFACE_VERSION(
11750                        data: &[u8],
11751                        validate: bool,
11752                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11753                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
11754                            data, validate,
11755                        )
11756                        .map(LightClientArbitrumV2Calls::UPGRADE_INTERFACE_VERSION)
11757                    }
11758                    UPGRADE_INTERFACE_VERSION
11759                },
11760                {
11761                    fn initializeV2(
11762                        data: &[u8],
11763                        validate: bool,
11764                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11765                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
11766                            data, validate,
11767                        )
11768                        .map(LightClientArbitrumV2Calls::initializeV2)
11769                    }
11770                    initializeV2
11771                },
11772                {
11773                    fn stateHistoryRetentionPeriod(
11774                        data: &[u8],
11775                        validate: bool,
11776                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11777                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11778                                data,
11779                                validate,
11780                            )
11781                            .map(LightClientArbitrumV2Calls::stateHistoryRetentionPeriod)
11782                    }
11783                    stateHistoryRetentionPeriod
11784                },
11785                {
11786                    fn genesisState(
11787                        data: &[u8],
11788                        validate: bool,
11789                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11790                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11791                            data, validate,
11792                        )
11793                        .map(LightClientArbitrumV2Calls::genesisState)
11794                    }
11795                    genesisState
11796                },
11797                {
11798                    fn lagOverEscapeHatchThreshold(
11799                        data: &[u8],
11800                        validate: bool,
11801                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11802                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
11803                                data,
11804                                validate,
11805                            )
11806                            .map(LightClientArbitrumV2Calls::lagOverEscapeHatchThreshold)
11807                    }
11808                    lagOverEscapeHatchThreshold
11809                },
11810                {
11811                    fn blocksPerEpoch(
11812                        data: &[u8],
11813                        validate: bool,
11814                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11815                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
11816                            data, validate,
11817                        )
11818                        .map(LightClientArbitrumV2Calls::blocksPerEpoch)
11819                    }
11820                    blocksPerEpoch
11821                },
11822                {
11823                    fn transferOwnership(
11824                        data: &[u8],
11825                        validate: bool,
11826                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11827                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11828                            data, validate,
11829                        )
11830                        .map(LightClientArbitrumV2Calls::transferOwnership)
11831                    }
11832                    transferOwnership
11833                },
11834                {
11835                    fn getStateHistoryCount(
11836                        data: &[u8],
11837                        validate: bool,
11838                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
11839                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
11840                            data, validate,
11841                        )
11842                        .map(LightClientArbitrumV2Calls::getStateHistoryCount)
11843                    }
11844                    getStateHistoryCount
11845                },
11846            ];
11847            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11848                return Err(alloy_sol_types::Error::unknown_selector(
11849                    <Self as alloy_sol_types::SolInterface>::NAME,
11850                    selector,
11851                ));
11852            };
11853            DECODE_SHIMS[idx](data, validate)
11854        }
11855        #[inline]
11856        fn abi_encoded_size(&self) -> usize {
11857            match self {
11858                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11859                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
11860                        inner,
11861                    )
11862                }
11863                Self::_getVk(inner) => {
11864                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11865                }
11866                Self::blocksPerEpoch(inner) => {
11867                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
11868                        inner,
11869                    )
11870                }
11871                Self::currentBlockNumber(inner) => {
11872                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11873                        inner,
11874                    )
11875                }
11876                Self::currentEpoch(inner) => {
11877                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
11878                        inner,
11879                    )
11880                }
11881                Self::disablePermissionedProverMode(inner) => {
11882                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11883                        inner,
11884                    )
11885                }
11886                Self::epochFromBlockNumber(inner) => {
11887                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11888                        inner,
11889                    )
11890                }
11891                Self::epochStartBlock(inner) => {
11892                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
11893                        inner,
11894                    )
11895                }
11896                Self::finalizedState(inner) => {
11897                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11898                        inner,
11899                    )
11900                }
11901                Self::genesisStakeTableState(inner) => {
11902                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11903                        inner,
11904                    )
11905                }
11906                Self::genesisState(inner) => {
11907                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11908                        inner,
11909                    )
11910                }
11911                Self::getHotShotCommitment(inner) => {
11912                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
11913                        inner,
11914                    )
11915                }
11916                Self::getStateHistoryCount(inner) => {
11917                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
11918                        inner,
11919                    )
11920                }
11921                Self::getVersion(inner) => {
11922                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11923                }
11924                Self::initialize(inner) => {
11925                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11926                }
11927                Self::initializeV2(inner) => {
11928                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
11929                        inner,
11930                    )
11931                }
11932                Self::isEpochRoot(inner) => {
11933                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
11934                        inner,
11935                    )
11936                }
11937                Self::isGtEpochRoot(inner) => {
11938                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
11939                        inner,
11940                    )
11941                }
11942                Self::isPermissionedProverEnabled(inner) => {
11943                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
11944                        inner,
11945                    )
11946                }
11947                Self::lagOverEscapeHatchThreshold(inner) => {
11948                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
11949                        inner,
11950                    )
11951                }
11952                Self::newFinalizedState_0(inner) => {
11953                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
11954                        inner,
11955                    )
11956                }
11957                Self::newFinalizedState_1(inner) => {
11958                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
11959                        inner,
11960                    )
11961                }
11962                Self::owner(inner) => {
11963                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11964                }
11965                Self::permissionedProver(inner) => {
11966                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11967                        inner,
11968                    )
11969                }
11970                Self::proxiableUUID(inner) => {
11971                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
11972                        inner,
11973                    )
11974                }
11975                Self::renounceOwnership(inner) => {
11976                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11977                        inner,
11978                    )
11979                }
11980                Self::setPermissionedProver(inner) => {
11981                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11982                        inner,
11983                    )
11984                }
11985                Self::setStateHistoryRetentionPeriod(inner) => {
11986                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11987                        inner,
11988                    )
11989                }
11990                Self::setstateHistoryRetentionPeriod(inner) => {
11991                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11992                        inner,
11993                    )
11994                }
11995                Self::stateHistoryCommitments(inner) => {
11996                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11997                        inner,
11998                    )
11999                }
12000                Self::stateHistoryFirstIndex(inner) => {
12001                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
12002                        inner,
12003                    )
12004                }
12005                Self::stateHistoryRetentionPeriod(inner) => {
12006                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12007                        inner,
12008                    )
12009                }
12010                Self::transferOwnership(inner) => {
12011                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12012                        inner,
12013                    )
12014                }
12015                Self::updateEpochStartBlock(inner) => {
12016                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
12017                        inner,
12018                    )
12019                }
12020                Self::upgradeToAndCall(inner) => {
12021                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
12022                        inner,
12023                    )
12024                }
12025                Self::votingStakeTableState(inner) => {
12026                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12027                        inner,
12028                    )
12029                }
12030            }
12031        }
12032        #[inline]
12033        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12034            match self {
12035                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12036                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
12037                        inner, out,
12038                    )
12039                },
12040                Self::_getVk(inner) => {
12041                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12042                },
12043                Self::blocksPerEpoch(inner) => {
12044                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12045                },
12046                Self::currentBlockNumber(inner) => {
12047                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12048                },
12049                Self::currentEpoch(inner) => {
12050                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12051                },
12052                Self::disablePermissionedProverMode(inner) => {
12053                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
12054                        inner, out,
12055                    )
12056                },
12057                Self::epochFromBlockNumber(inner) => {
12058                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
12059                        inner, out,
12060                    )
12061                },
12062                Self::epochStartBlock(inner) => {
12063                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12064                },
12065                Self::finalizedState(inner) => {
12066                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12067                },
12068                Self::genesisStakeTableState(inner) => {
12069                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12070                        inner, out,
12071                    )
12072                },
12073                Self::genesisState(inner) => {
12074                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12075                },
12076                Self::getHotShotCommitment(inner) => {
12077                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
12078                        inner, out,
12079                    )
12080                },
12081                Self::getStateHistoryCount(inner) => {
12082                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
12083                        inner, out,
12084                    )
12085                },
12086                Self::getVersion(inner) => {
12087                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12088                },
12089                Self::initialize(inner) => {
12090                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12091                },
12092                Self::initializeV2(inner) => {
12093                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12094                },
12095                Self::isEpochRoot(inner) => {
12096                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12097                },
12098                Self::isGtEpochRoot(inner) => {
12099                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12100                },
12101                Self::isPermissionedProverEnabled(inner) => {
12102                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
12103                        inner, out,
12104                    )
12105                },
12106                Self::lagOverEscapeHatchThreshold(inner) => {
12107                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
12108                        inner, out,
12109                    )
12110                },
12111                Self::newFinalizedState_0(inner) => {
12112                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
12113                        inner, out,
12114                    )
12115                },
12116                Self::newFinalizedState_1(inner) => {
12117                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
12118                        inner, out,
12119                    )
12120                },
12121                Self::owner(inner) => {
12122                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12123                },
12124                Self::permissionedProver(inner) => {
12125                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12126                },
12127                Self::proxiableUUID(inner) => {
12128                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12129                },
12130                Self::renounceOwnership(inner) => {
12131                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12132                },
12133                Self::setPermissionedProver(inner) => {
12134                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
12135                        inner, out,
12136                    )
12137                },
12138                Self::setStateHistoryRetentionPeriod(inner) => {
12139                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
12140                        inner, out,
12141                    )
12142                },
12143                Self::setstateHistoryRetentionPeriod(inner) => {
12144                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
12145                        inner, out,
12146                    )
12147                },
12148                Self::stateHistoryCommitments(inner) => {
12149                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
12150                        inner, out,
12151                    )
12152                },
12153                Self::stateHistoryFirstIndex(inner) => {
12154                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
12155                        inner, out,
12156                    )
12157                },
12158                Self::stateHistoryRetentionPeriod(inner) => {
12159                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
12160                        inner, out,
12161                    )
12162                },
12163                Self::transferOwnership(inner) => {
12164                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12165                },
12166                Self::updateEpochStartBlock(inner) => {
12167                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
12168                        inner, out,
12169                    )
12170                },
12171                Self::upgradeToAndCall(inner) => {
12172                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12173                },
12174                Self::votingStakeTableState(inner) => {
12175                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12176                        inner, out,
12177                    )
12178                },
12179            }
12180        }
12181    }
12182    ///Container for all the [`LightClientArbitrumV2`](self) custom errors.
12183    #[derive(Debug, PartialEq, Eq, Hash)]
12184    pub enum LightClientArbitrumV2Errors {
12185        #[allow(missing_docs)]
12186        AddressEmptyCode(AddressEmptyCode),
12187        #[allow(missing_docs)]
12188        DeprecatedApi(DeprecatedApi),
12189        #[allow(missing_docs)]
12190        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
12191        #[allow(missing_docs)]
12192        ERC1967NonPayable(ERC1967NonPayable),
12193        #[allow(missing_docs)]
12194        FailedInnerCall(FailedInnerCall),
12195        #[allow(missing_docs)]
12196        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
12197        #[allow(missing_docs)]
12198        InvalidAddress(InvalidAddress),
12199        #[allow(missing_docs)]
12200        InvalidArgs(InvalidArgs),
12201        #[allow(missing_docs)]
12202        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
12203        #[allow(missing_docs)]
12204        InvalidInitialization(InvalidInitialization),
12205        #[allow(missing_docs)]
12206        InvalidMaxStateHistory(InvalidMaxStateHistory),
12207        #[allow(missing_docs)]
12208        InvalidProof(InvalidProof),
12209        #[allow(missing_docs)]
12210        MissingEpochRootUpdate(MissingEpochRootUpdate),
12211        #[allow(missing_docs)]
12212        NoChangeRequired(NoChangeRequired),
12213        #[allow(missing_docs)]
12214        NotInitializing(NotInitializing),
12215        #[allow(missing_docs)]
12216        OutdatedState(OutdatedState),
12217        #[allow(missing_docs)]
12218        OwnableInvalidOwner(OwnableInvalidOwner),
12219        #[allow(missing_docs)]
12220        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
12221        #[allow(missing_docs)]
12222        ProverNotPermissioned(ProverNotPermissioned),
12223        #[allow(missing_docs)]
12224        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
12225        #[allow(missing_docs)]
12226        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
12227        #[allow(missing_docs)]
12228        WrongStakeTableUsed(WrongStakeTableUsed),
12229    }
12230    #[automatically_derived]
12231    impl LightClientArbitrumV2Errors {
12232        /// All the selectors of this enum.
12233        ///
12234        /// Note that the selectors might not be in the same order as the variants.
12235        /// No guarantees are made about the order of the selectors.
12236        ///
12237        /// Prefer using `SolInterface` methods instead.
12238        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12239            [5u8, 28u8, 70u8, 239u8],
12240            [8u8, 10u8, 232u8, 217u8],
12241            [9u8, 189u8, 227u8, 57u8],
12242            [17u8, 140u8, 218u8, 167u8],
12243            [20u8, 37u8, 234u8, 66u8],
12244            [30u8, 79u8, 189u8, 247u8],
12245            [76u8, 156u8, 140u8, 227u8],
12246            [78u8, 64u8, 92u8, 141u8],
12247            [81u8, 97u8, 128u8, 137u8],
12248            [97u8, 90u8, 146u8, 100u8],
12249            [153u8, 150u8, 179u8, 21u8],
12250            [161u8, 186u8, 7u8, 238u8],
12251            [163u8, 166u8, 71u8, 128u8],
12252            [168u8, 99u8, 174u8, 201u8],
12253            [170u8, 29u8, 73u8, 164u8],
12254            [176u8, 180u8, 56u8, 119u8],
12255            [179u8, 152u8, 151u8, 159u8],
12256            [215u8, 230u8, 188u8, 248u8],
12257            [224u8, 124u8, 141u8, 186u8],
12258            [230u8, 196u8, 36u8, 123u8],
12259            [244u8, 160u8, 238u8, 224u8],
12260            [249u8, 46u8, 232u8, 169u8],
12261        ];
12262    }
12263    #[automatically_derived]
12264    impl alloy_sol_types::SolInterface for LightClientArbitrumV2Errors {
12265        const NAME: &'static str = "LightClientArbitrumV2Errors";
12266        const MIN_DATA_LENGTH: usize = 0usize;
12267        const COUNT: usize = 22usize;
12268        #[inline]
12269        fn selector(&self) -> [u8; 4] {
12270            match self {
12271                Self::AddressEmptyCode(_) => {
12272                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
12273                },
12274                Self::DeprecatedApi(_) => <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR,
12275                Self::ERC1967InvalidImplementation(_) => {
12276                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
12277                },
12278                Self::ERC1967NonPayable(_) => {
12279                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
12280                },
12281                Self::FailedInnerCall(_) => {
12282                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
12283                },
12284                Self::InsufficientSnapshotHistory(_) => {
12285                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
12286                },
12287                Self::InvalidAddress(_) => <InvalidAddress as alloy_sol_types::SolError>::SELECTOR,
12288                Self::InvalidArgs(_) => <InvalidArgs as alloy_sol_types::SolError>::SELECTOR,
12289                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
12290                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
12291                },
12292                Self::InvalidInitialization(_) => {
12293                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
12294                },
12295                Self::InvalidMaxStateHistory(_) => {
12296                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
12297                },
12298                Self::InvalidProof(_) => <InvalidProof as alloy_sol_types::SolError>::SELECTOR,
12299                Self::MissingEpochRootUpdate(_) => {
12300                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
12301                },
12302                Self::NoChangeRequired(_) => {
12303                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
12304                },
12305                Self::NotInitializing(_) => {
12306                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
12307                },
12308                Self::OutdatedState(_) => <OutdatedState as alloy_sol_types::SolError>::SELECTOR,
12309                Self::OwnableInvalidOwner(_) => {
12310                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
12311                },
12312                Self::OwnableUnauthorizedAccount(_) => {
12313                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
12314                },
12315                Self::ProverNotPermissioned(_) => {
12316                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
12317                },
12318                Self::UUPSUnauthorizedCallContext(_) => {
12319                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
12320                },
12321                Self::UUPSUnsupportedProxiableUUID(_) => {
12322                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
12323                },
12324                Self::WrongStakeTableUsed(_) => {
12325                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
12326                },
12327            }
12328        }
12329        #[inline]
12330        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
12331            Self::SELECTORS.get(i).copied()
12332        }
12333        #[inline]
12334        fn valid_selector(selector: [u8; 4]) -> bool {
12335            Self::SELECTORS.binary_search(&selector).is_ok()
12336        }
12337        #[inline]
12338        #[allow(non_snake_case)]
12339        fn abi_decode_raw(
12340            selector: [u8; 4],
12341            data: &[u8],
12342            validate: bool,
12343        ) -> alloy_sol_types::Result<Self> {
12344            static DECODE_SHIMS: &[fn(
12345                &[u8],
12346                bool,
12347            )
12348                -> alloy_sol_types::Result<LightClientArbitrumV2Errors>] = &[
12349                {
12350                    fn OutdatedState(
12351                        data: &[u8],
12352                        validate: bool,
12353                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12354                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
12355                            .map(LightClientArbitrumV2Errors::OutdatedState)
12356                    }
12357                    OutdatedState
12358                },
12359                {
12360                    fn MissingEpochRootUpdate(
12361                        data: &[u8],
12362                        validate: bool,
12363                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12364                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
12365                            data, validate,
12366                        )
12367                        .map(LightClientArbitrumV2Errors::MissingEpochRootUpdate)
12368                    }
12369                    MissingEpochRootUpdate
12370                },
12371                {
12372                    fn InvalidProof(
12373                        data: &[u8],
12374                        validate: bool,
12375                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12376                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
12377                            .map(LightClientArbitrumV2Errors::InvalidProof)
12378                    }
12379                    InvalidProof
12380                },
12381                {
12382                    fn OwnableUnauthorizedAccount(
12383                        data: &[u8],
12384                        validate: bool,
12385                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12386                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
12387                            data, validate,
12388                        )
12389                        .map(LightClientArbitrumV2Errors::OwnableUnauthorizedAccount)
12390                    }
12391                    OwnableUnauthorizedAccount
12392                },
12393                {
12394                    fn FailedInnerCall(
12395                        data: &[u8],
12396                        validate: bool,
12397                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12398                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
12399                            data, validate,
12400                        )
12401                        .map(LightClientArbitrumV2Errors::FailedInnerCall)
12402                    }
12403                    FailedInnerCall
12404                },
12405                {
12406                    fn OwnableInvalidOwner(
12407                        data: &[u8],
12408                        validate: bool,
12409                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12410                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
12411                            data, validate,
12412                        )
12413                        .map(LightClientArbitrumV2Errors::OwnableInvalidOwner)
12414                    }
12415                    OwnableInvalidOwner
12416                },
12417                {
12418                    fn ERC1967InvalidImplementation(
12419                        data: &[u8],
12420                        validate: bool,
12421                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12422                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
12423                            data, validate,
12424                        )
12425                        .map(LightClientArbitrumV2Errors::ERC1967InvalidImplementation)
12426                    }
12427                    ERC1967InvalidImplementation
12428                },
12429                {
12430                    fn DeprecatedApi(
12431                        data: &[u8],
12432                        validate: bool,
12433                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12434                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
12435                            .map(LightClientArbitrumV2Errors::DeprecatedApi)
12436                    }
12437                    DeprecatedApi
12438                },
12439                {
12440                    fn WrongStakeTableUsed(
12441                        data: &[u8],
12442                        validate: bool,
12443                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12444                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
12445                            data, validate,
12446                        )
12447                        .map(LightClientArbitrumV2Errors::WrongStakeTableUsed)
12448                    }
12449                    WrongStakeTableUsed
12450                },
12451                {
12452                    fn InvalidHotShotBlockForCommitmentCheck(
12453                        data: &[u8],
12454                        validate: bool,
12455                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12456                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
12457                                data,
12458                                validate,
12459                            )
12460                            .map(
12461                                LightClientArbitrumV2Errors::InvalidHotShotBlockForCommitmentCheck,
12462                            )
12463                    }
12464                    InvalidHotShotBlockForCommitmentCheck
12465                },
12466                {
12467                    fn AddressEmptyCode(
12468                        data: &[u8],
12469                        validate: bool,
12470                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12471                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
12472                            data, validate,
12473                        )
12474                        .map(LightClientArbitrumV2Errors::AddressEmptyCode)
12475                    }
12476                    AddressEmptyCode
12477                },
12478                {
12479                    fn InvalidArgs(
12480                        data: &[u8],
12481                        validate: bool,
12482                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12483                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data, validate)
12484                            .map(LightClientArbitrumV2Errors::InvalidArgs)
12485                    }
12486                    InvalidArgs
12487                },
12488                {
12489                    fn ProverNotPermissioned(
12490                        data: &[u8],
12491                        validate: bool,
12492                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12493                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
12494                            data, validate,
12495                        )
12496                        .map(LightClientArbitrumV2Errors::ProverNotPermissioned)
12497                    }
12498                    ProverNotPermissioned
12499                },
12500                {
12501                    fn NoChangeRequired(
12502                        data: &[u8],
12503                        validate: bool,
12504                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12505                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
12506                            data, validate,
12507                        )
12508                        .map(LightClientArbitrumV2Errors::NoChangeRequired)
12509                    }
12510                    NoChangeRequired
12511                },
12512                {
12513                    fn UUPSUnsupportedProxiableUUID(
12514                        data: &[u8],
12515                        validate: bool,
12516                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12517                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
12518                            data, validate,
12519                        )
12520                        .map(LightClientArbitrumV2Errors::UUPSUnsupportedProxiableUUID)
12521                    }
12522                    UUPSUnsupportedProxiableUUID
12523                },
12524                {
12525                    fn InsufficientSnapshotHistory(
12526                        data: &[u8],
12527                        validate: bool,
12528                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12529                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
12530                            data, validate,
12531                        )
12532                        .map(LightClientArbitrumV2Errors::InsufficientSnapshotHistory)
12533                    }
12534                    InsufficientSnapshotHistory
12535                },
12536                {
12537                    fn ERC1967NonPayable(
12538                        data: &[u8],
12539                        validate: bool,
12540                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12541                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
12542                            data, validate,
12543                        )
12544                        .map(LightClientArbitrumV2Errors::ERC1967NonPayable)
12545                    }
12546                    ERC1967NonPayable
12547                },
12548                {
12549                    fn NotInitializing(
12550                        data: &[u8],
12551                        validate: bool,
12552                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12553                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
12554                            data, validate,
12555                        )
12556                        .map(LightClientArbitrumV2Errors::NotInitializing)
12557                    }
12558                    NotInitializing
12559                },
12560                {
12561                    fn UUPSUnauthorizedCallContext(
12562                        data: &[u8],
12563                        validate: bool,
12564                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12565                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
12566                            data, validate,
12567                        )
12568                        .map(LightClientArbitrumV2Errors::UUPSUnauthorizedCallContext)
12569                    }
12570                    UUPSUnauthorizedCallContext
12571                },
12572                {
12573                    fn InvalidAddress(
12574                        data: &[u8],
12575                        validate: bool,
12576                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12577                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
12578                            data, validate,
12579                        )
12580                        .map(LightClientArbitrumV2Errors::InvalidAddress)
12581                    }
12582                    InvalidAddress
12583                },
12584                {
12585                    fn InvalidMaxStateHistory(
12586                        data: &[u8],
12587                        validate: bool,
12588                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12589                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
12590                            data, validate,
12591                        )
12592                        .map(LightClientArbitrumV2Errors::InvalidMaxStateHistory)
12593                    }
12594                    InvalidMaxStateHistory
12595                },
12596                {
12597                    fn InvalidInitialization(
12598                        data: &[u8],
12599                        validate: bool,
12600                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
12601                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
12602                            data, validate,
12603                        )
12604                        .map(LightClientArbitrumV2Errors::InvalidInitialization)
12605                    }
12606                    InvalidInitialization
12607                },
12608            ];
12609            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12610                return Err(alloy_sol_types::Error::unknown_selector(
12611                    <Self as alloy_sol_types::SolInterface>::NAME,
12612                    selector,
12613                ));
12614            };
12615            DECODE_SHIMS[idx](data, validate)
12616        }
12617        #[inline]
12618        fn abi_encoded_size(&self) -> usize {
12619            match self {
12620                Self::AddressEmptyCode(inner) => {
12621                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
12622                        inner,
12623                    )
12624                }
12625                Self::DeprecatedApi(inner) => {
12626                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
12627                }
12628                Self::ERC1967InvalidImplementation(inner) => {
12629                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
12630                        inner,
12631                    )
12632                }
12633                Self::ERC1967NonPayable(inner) => {
12634                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
12635                        inner,
12636                    )
12637                }
12638                Self::FailedInnerCall(inner) => {
12639                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
12640                        inner,
12641                    )
12642                }
12643                Self::InsufficientSnapshotHistory(inner) => {
12644                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
12645                        inner,
12646                    )
12647                }
12648                Self::InvalidAddress(inner) => {
12649                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
12650                        inner,
12651                    )
12652                }
12653                Self::InvalidArgs(inner) => {
12654                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
12655                }
12656                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12657                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
12658                        inner,
12659                    )
12660                }
12661                Self::InvalidInitialization(inner) => {
12662                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
12663                        inner,
12664                    )
12665                }
12666                Self::InvalidMaxStateHistory(inner) => {
12667                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
12668                        inner,
12669                    )
12670                }
12671                Self::InvalidProof(inner) => {
12672                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
12673                }
12674                Self::MissingEpochRootUpdate(inner) => {
12675                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
12676                        inner,
12677                    )
12678                }
12679                Self::NoChangeRequired(inner) => {
12680                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
12681                        inner,
12682                    )
12683                }
12684                Self::NotInitializing(inner) => {
12685                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
12686                        inner,
12687                    )
12688                }
12689                Self::OutdatedState(inner) => {
12690                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
12691                }
12692                Self::OwnableInvalidOwner(inner) => {
12693                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
12694                        inner,
12695                    )
12696                }
12697                Self::OwnableUnauthorizedAccount(inner) => {
12698                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
12699                        inner,
12700                    )
12701                }
12702                Self::ProverNotPermissioned(inner) => {
12703                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
12704                        inner,
12705                    )
12706                }
12707                Self::UUPSUnauthorizedCallContext(inner) => {
12708                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
12709                        inner,
12710                    )
12711                }
12712                Self::UUPSUnsupportedProxiableUUID(inner) => {
12713                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
12714                        inner,
12715                    )
12716                }
12717                Self::WrongStakeTableUsed(inner) => {
12718                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
12719                        inner,
12720                    )
12721                }
12722            }
12723        }
12724        #[inline]
12725        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12726            match self {
12727                Self::AddressEmptyCode(inner) => {
12728                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
12729                        inner,
12730                        out,
12731                    )
12732                }
12733                Self::DeprecatedApi(inner) => {
12734                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
12735                        inner,
12736                        out,
12737                    )
12738                }
12739                Self::ERC1967InvalidImplementation(inner) => {
12740                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
12741                        inner,
12742                        out,
12743                    )
12744                }
12745                Self::ERC1967NonPayable(inner) => {
12746                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
12747                        inner,
12748                        out,
12749                    )
12750                }
12751                Self::FailedInnerCall(inner) => {
12752                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
12753                        inner,
12754                        out,
12755                    )
12756                }
12757                Self::InsufficientSnapshotHistory(inner) => {
12758                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
12759                        inner,
12760                        out,
12761                    )
12762                }
12763                Self::InvalidAddress(inner) => {
12764                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
12765                        inner,
12766                        out,
12767                    )
12768                }
12769                Self::InvalidArgs(inner) => {
12770                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
12771                        inner,
12772                        out,
12773                    )
12774                }
12775                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12776                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
12777                        inner,
12778                        out,
12779                    )
12780                }
12781                Self::InvalidInitialization(inner) => {
12782                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
12783                        inner,
12784                        out,
12785                    )
12786                }
12787                Self::InvalidMaxStateHistory(inner) => {
12788                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
12789                        inner,
12790                        out,
12791                    )
12792                }
12793                Self::InvalidProof(inner) => {
12794                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
12795                        inner,
12796                        out,
12797                    )
12798                }
12799                Self::MissingEpochRootUpdate(inner) => {
12800                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
12801                        inner,
12802                        out,
12803                    )
12804                }
12805                Self::NoChangeRequired(inner) => {
12806                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
12807                        inner,
12808                        out,
12809                    )
12810                }
12811                Self::NotInitializing(inner) => {
12812                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12813                        inner,
12814                        out,
12815                    )
12816                }
12817                Self::OutdatedState(inner) => {
12818                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
12819                        inner,
12820                        out,
12821                    )
12822                }
12823                Self::OwnableInvalidOwner(inner) => {
12824                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12825                        inner,
12826                        out,
12827                    )
12828                }
12829                Self::OwnableUnauthorizedAccount(inner) => {
12830                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12831                        inner,
12832                        out,
12833                    )
12834                }
12835                Self::ProverNotPermissioned(inner) => {
12836                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
12837                        inner,
12838                        out,
12839                    )
12840                }
12841                Self::UUPSUnauthorizedCallContext(inner) => {
12842                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12843                        inner,
12844                        out,
12845                    )
12846                }
12847                Self::UUPSUnsupportedProxiableUUID(inner) => {
12848                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12849                        inner,
12850                        out,
12851                    )
12852                }
12853                Self::WrongStakeTableUsed(inner) => {
12854                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
12855                        inner,
12856                        out,
12857                    )
12858                }
12859            }
12860        }
12861    }
12862    ///Container for all the [`LightClientArbitrumV2`](self) events.
12863    #[derive(Debug, PartialEq, Eq, Hash)]
12864    pub enum LightClientArbitrumV2Events {
12865        #[allow(missing_docs)]
12866        Initialized(Initialized),
12867        #[allow(missing_docs)]
12868        NewEpoch(NewEpoch),
12869        #[allow(missing_docs)]
12870        NewState(NewState),
12871        #[allow(missing_docs)]
12872        OwnershipTransferred(OwnershipTransferred),
12873        #[allow(missing_docs)]
12874        PermissionedProverNotRequired(PermissionedProverNotRequired),
12875        #[allow(missing_docs)]
12876        PermissionedProverRequired(PermissionedProverRequired),
12877        #[allow(missing_docs)]
12878        Upgrade(Upgrade),
12879        #[allow(missing_docs)]
12880        Upgraded(Upgraded),
12881    }
12882    #[automatically_derived]
12883    impl LightClientArbitrumV2Events {
12884        /// All the selectors of this enum.
12885        ///
12886        /// Note that the selectors might not be in the same order as the variants.
12887        /// No guarantees are made about the order of the selectors.
12888        ///
12889        /// Prefer using `SolInterface` methods instead.
12890        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12891            [
12892                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8, 210u8, 6u8,
12893                171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8, 157u8, 15u8, 205u8,
12894                239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
12895            ],
12896            [
12897                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8, 212u8,
12898                15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8, 250u8, 133u8,
12899                216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
12900            ],
12901            [
12902                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8, 31u8, 208u8,
12903                164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8, 218u8, 175u8, 227u8,
12904                180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
12905            ],
12906            [
12907                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8, 94u8,
12908                92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8, 168u8, 119u8,
12909                109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
12910            ],
12911            [
12912                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8, 55u8, 37u8,
12913                245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8, 189u8, 110u8, 252u8,
12914                231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
12915            ],
12916            [
12917                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8, 179u8,
12918                32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8, 12u8, 192u8, 34u8,
12919                91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
12920            ],
12921            [
12922                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8, 19u8,
12923                244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8, 33u8, 238u8,
12924                209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
12925            ],
12926            [
12927                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8, 154u8,
12928                22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8, 185u8, 62u8, 237u8,
12929                168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
12930            ],
12931        ];
12932    }
12933    #[automatically_derived]
12934    impl alloy_sol_types::SolEventInterface for LightClientArbitrumV2Events {
12935        const NAME: &'static str = "LightClientArbitrumV2Events";
12936        const COUNT: usize = 8usize;
12937        fn decode_raw_log(
12938            topics: &[alloy_sol_types::Word],
12939            data: &[u8],
12940            validate: bool,
12941        ) -> alloy_sol_types::Result<Self> {
12942            match topics.first().copied() {
12943                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12944                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
12945                        topics, data, validate,
12946                    )
12947                    .map(Self::Initialized)
12948                },
12949                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12950                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
12951                        .map(Self::NewEpoch)
12952                },
12953                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12954                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
12955                        .map(Self::NewState)
12956                },
12957                Some(<OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12958                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
12959                        topics, data, validate,
12960                    )
12961                    .map(Self::OwnershipTransferred)
12962                },
12963                Some(
12964                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12965                ) => <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12966                    topics, data, validate,
12967                )
12968                .map(Self::PermissionedProverNotRequired),
12969                Some(<PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12970                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12971                        topics, data, validate,
12972                    )
12973                    .map(Self::PermissionedProverRequired)
12974                },
12975                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12976                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
12977                        .map(Self::Upgrade)
12978                },
12979                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12980                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
12981                        .map(Self::Upgraded)
12982                },
12983                _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12984                    name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12985                    log: alloy_sol_types::private::Box::new(
12986                        alloy_sol_types::private::LogData::new_unchecked(
12987                            topics.to_vec(),
12988                            data.to_vec().into(),
12989                        ),
12990                    ),
12991                }),
12992            }
12993        }
12994    }
12995    #[automatically_derived]
12996    impl alloy_sol_types::private::IntoLogData for LightClientArbitrumV2Events {
12997        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12998            match self {
12999                Self::Initialized(inner) => {
13000                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13001                },
13002                Self::NewEpoch(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
13003                Self::NewState(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
13004                Self::OwnershipTransferred(inner) => {
13005                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13006                },
13007                Self::PermissionedProverNotRequired(inner) => {
13008                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13009                },
13010                Self::PermissionedProverRequired(inner) => {
13011                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13012                },
13013                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
13014                Self::Upgraded(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
13015            }
13016        }
13017        fn into_log_data(self) -> alloy_sol_types::private::LogData {
13018            match self {
13019                Self::Initialized(inner) => {
13020                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13021                },
13022                Self::NewEpoch(inner) => {
13023                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13024                },
13025                Self::NewState(inner) => {
13026                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13027                },
13028                Self::OwnershipTransferred(inner) => {
13029                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13030                },
13031                Self::PermissionedProverNotRequired(inner) => {
13032                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13033                },
13034                Self::PermissionedProverRequired(inner) => {
13035                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13036                },
13037                Self::Upgrade(inner) => alloy_sol_types::private::IntoLogData::into_log_data(inner),
13038                Self::Upgraded(inner) => {
13039                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13040                },
13041            }
13042        }
13043    }
13044    use alloy::contract as alloy_contract;
13045    /**Creates a new wrapper around an on-chain [`LightClientArbitrumV2`](self) contract instance.
13046
13047    See the [wrapper's documentation](`LightClientArbitrumV2Instance`) for more details.*/
13048    #[inline]
13049    pub const fn new<
13050        T: alloy_contract::private::Transport + ::core::clone::Clone,
13051        P: alloy_contract::private::Provider<T, N>,
13052        N: alloy_contract::private::Network,
13053    >(
13054        address: alloy_sol_types::private::Address,
13055        provider: P,
13056    ) -> LightClientArbitrumV2Instance<T, P, N> {
13057        LightClientArbitrumV2Instance::<T, P, N>::new(address, provider)
13058    }
13059    /**Deploys this contract using the given `provider` and constructor arguments, if any.
13060
13061    Returns a new instance of the contract, if the deployment was successful.
13062
13063    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13064    #[inline]
13065    pub fn deploy<
13066        T: alloy_contract::private::Transport + ::core::clone::Clone,
13067        P: alloy_contract::private::Provider<T, N>,
13068        N: alloy_contract::private::Network,
13069    >(
13070        provider: P,
13071    ) -> impl ::core::future::Future<
13072        Output = alloy_contract::Result<LightClientArbitrumV2Instance<T, P, N>>,
13073    > {
13074        LightClientArbitrumV2Instance::<T, P, N>::deploy(provider)
13075    }
13076    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13077    and constructor arguments, if any.
13078
13079    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13080    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13081    #[inline]
13082    pub fn deploy_builder<
13083        T: alloy_contract::private::Transport + ::core::clone::Clone,
13084        P: alloy_contract::private::Provider<T, N>,
13085        N: alloy_contract::private::Network,
13086    >(
13087        provider: P,
13088    ) -> alloy_contract::RawCallBuilder<T, P, N> {
13089        LightClientArbitrumV2Instance::<T, P, N>::deploy_builder(provider)
13090    }
13091    /**A [`LightClientArbitrumV2`](self) instance.
13092
13093    Contains type-safe methods for interacting with an on-chain instance of the
13094    [`LightClientArbitrumV2`](self) contract located at a given `address`, using a given
13095    provider `P`.
13096
13097    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
13098    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
13099    be used to deploy a new instance of the contract.
13100
13101    See the [module-level documentation](self) for all the available methods.*/
13102    #[derive(Clone)]
13103    pub struct LightClientArbitrumV2Instance<T, P, N = alloy_contract::private::Ethereum> {
13104        address: alloy_sol_types::private::Address,
13105        provider: P,
13106        _network_transport: ::core::marker::PhantomData<(N, T)>,
13107    }
13108    #[automatically_derived]
13109    impl<T, P, N> ::core::fmt::Debug for LightClientArbitrumV2Instance<T, P, N> {
13110        #[inline]
13111        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
13112            f.debug_tuple("LightClientArbitrumV2Instance")
13113                .field(&self.address)
13114                .finish()
13115        }
13116    }
13117    /// Instantiation and getters/setters.
13118    #[automatically_derived]
13119    impl<
13120            T: alloy_contract::private::Transport + ::core::clone::Clone,
13121            P: alloy_contract::private::Provider<T, N>,
13122            N: alloy_contract::private::Network,
13123        > LightClientArbitrumV2Instance<T, P, N>
13124    {
13125        /**Creates a new wrapper around an on-chain [`LightClientArbitrumV2`](self) contract instance.
13126
13127        See the [wrapper's documentation](`LightClientArbitrumV2Instance`) for more details.*/
13128        #[inline]
13129        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
13130            Self {
13131                address,
13132                provider,
13133                _network_transport: ::core::marker::PhantomData,
13134            }
13135        }
13136        /**Deploys this contract using the given `provider` and constructor arguments, if any.
13137
13138        Returns a new instance of the contract, if the deployment was successful.
13139
13140        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13141        #[inline]
13142        pub async fn deploy(
13143            provider: P,
13144        ) -> alloy_contract::Result<LightClientArbitrumV2Instance<T, P, N>> {
13145            let call_builder = Self::deploy_builder(provider);
13146            let contract_address = call_builder.deploy().await?;
13147            Ok(Self::new(contract_address, call_builder.provider))
13148        }
13149        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13150        and constructor arguments, if any.
13151
13152        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13153        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13154        #[inline]
13155        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<T, P, N> {
13156            alloy_contract::RawCallBuilder::new_raw_deploy(
13157                provider,
13158                ::core::clone::Clone::clone(&BYTECODE),
13159            )
13160        }
13161        /// Returns a reference to the address.
13162        #[inline]
13163        pub const fn address(&self) -> &alloy_sol_types::private::Address {
13164            &self.address
13165        }
13166        /// Sets the address.
13167        #[inline]
13168        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
13169            self.address = address;
13170        }
13171        /// Sets the address and returns `self`.
13172        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
13173            self.set_address(address);
13174            self
13175        }
13176        /// Returns a reference to the provider.
13177        #[inline]
13178        pub const fn provider(&self) -> &P {
13179            &self.provider
13180        }
13181    }
13182    impl<T, P: ::core::clone::Clone, N> LightClientArbitrumV2Instance<T, &P, N> {
13183        /// Clones the provider and returns a new instance with the cloned provider.
13184        #[inline]
13185        pub fn with_cloned_provider(self) -> LightClientArbitrumV2Instance<T, P, N> {
13186            LightClientArbitrumV2Instance {
13187                address: self.address,
13188                provider: ::core::clone::Clone::clone(&self.provider),
13189                _network_transport: ::core::marker::PhantomData,
13190            }
13191        }
13192    }
13193    /// Function calls.
13194    #[automatically_derived]
13195    impl<
13196            T: alloy_contract::private::Transport + ::core::clone::Clone,
13197            P: alloy_contract::private::Provider<T, N>,
13198            N: alloy_contract::private::Network,
13199        > LightClientArbitrumV2Instance<T, P, N>
13200    {
13201        /// Creates a new call builder using this contract instance's provider and address.
13202        ///
13203        /// Note that the call can be any function call, not just those defined in this
13204        /// contract. Prefer using the other methods for building type-safe contract calls.
13205        pub fn call_builder<C: alloy_sol_types::SolCall>(
13206            &self,
13207            call: &C,
13208        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
13209            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
13210        }
13211        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
13212        pub fn UPGRADE_INTERFACE_VERSION(
13213            &self,
13214        ) -> alloy_contract::SolCallBuilder<T, &P, UPGRADE_INTERFACE_VERSIONCall, N> {
13215            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall {})
13216        }
13217        ///Creates a new call builder for the [`_getVk`] function.
13218        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<T, &P, _getVkCall, N> {
13219            self.call_builder(&_getVkCall {})
13220        }
13221        ///Creates a new call builder for the [`blocksPerEpoch`] function.
13222        pub fn blocksPerEpoch(
13223            &self,
13224        ) -> alloy_contract::SolCallBuilder<T, &P, blocksPerEpochCall, N> {
13225            self.call_builder(&blocksPerEpochCall {})
13226        }
13227        ///Creates a new call builder for the [`currentBlockNumber`] function.
13228        pub fn currentBlockNumber(
13229            &self,
13230        ) -> alloy_contract::SolCallBuilder<T, &P, currentBlockNumberCall, N> {
13231            self.call_builder(&currentBlockNumberCall {})
13232        }
13233        ///Creates a new call builder for the [`currentEpoch`] function.
13234        pub fn currentEpoch(&self) -> alloy_contract::SolCallBuilder<T, &P, currentEpochCall, N> {
13235            self.call_builder(&currentEpochCall {})
13236        }
13237        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
13238        pub fn disablePermissionedProverMode(
13239            &self,
13240        ) -> alloy_contract::SolCallBuilder<T, &P, disablePermissionedProverModeCall, N> {
13241            self.call_builder(&disablePermissionedProverModeCall {})
13242        }
13243        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
13244        pub fn epochFromBlockNumber(
13245            &self,
13246            _blockNum: u64,
13247            _blocksPerEpoch: u64,
13248        ) -> alloy_contract::SolCallBuilder<T, &P, epochFromBlockNumberCall, N> {
13249            self.call_builder(&epochFromBlockNumberCall {
13250                _blockNum,
13251                _blocksPerEpoch,
13252            })
13253        }
13254        ///Creates a new call builder for the [`epochStartBlock`] function.
13255        pub fn epochStartBlock(
13256            &self,
13257        ) -> alloy_contract::SolCallBuilder<T, &P, epochStartBlockCall, N> {
13258            self.call_builder(&epochStartBlockCall {})
13259        }
13260        ///Creates a new call builder for the [`finalizedState`] function.
13261        pub fn finalizedState(
13262            &self,
13263        ) -> alloy_contract::SolCallBuilder<T, &P, finalizedStateCall, N> {
13264            self.call_builder(&finalizedStateCall {})
13265        }
13266        ///Creates a new call builder for the [`genesisStakeTableState`] function.
13267        pub fn genesisStakeTableState(
13268            &self,
13269        ) -> alloy_contract::SolCallBuilder<T, &P, genesisStakeTableStateCall, N> {
13270            self.call_builder(&genesisStakeTableStateCall {})
13271        }
13272        ///Creates a new call builder for the [`genesisState`] function.
13273        pub fn genesisState(&self) -> alloy_contract::SolCallBuilder<T, &P, genesisStateCall, N> {
13274            self.call_builder(&genesisStateCall {})
13275        }
13276        ///Creates a new call builder for the [`getHotShotCommitment`] function.
13277        pub fn getHotShotCommitment(
13278            &self,
13279            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
13280        ) -> alloy_contract::SolCallBuilder<T, &P, getHotShotCommitmentCall, N> {
13281            self.call_builder(&getHotShotCommitmentCall { hotShotBlockHeight })
13282        }
13283        ///Creates a new call builder for the [`getStateHistoryCount`] function.
13284        pub fn getStateHistoryCount(
13285            &self,
13286        ) -> alloy_contract::SolCallBuilder<T, &P, getStateHistoryCountCall, N> {
13287            self.call_builder(&getStateHistoryCountCall {})
13288        }
13289        ///Creates a new call builder for the [`getVersion`] function.
13290        pub fn getVersion(&self) -> alloy_contract::SolCallBuilder<T, &P, getVersionCall, N> {
13291            self.call_builder(&getVersionCall {})
13292        }
13293        ///Creates a new call builder for the [`initialize`] function.
13294        pub fn initialize(
13295            &self,
13296            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13297            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13298            _stateHistoryRetentionPeriod: u32,
13299            owner: alloy::sol_types::private::Address,
13300        ) -> alloy_contract::SolCallBuilder<T, &P, initializeCall, N> {
13301            self.call_builder(&initializeCall {
13302                _genesis,
13303                _genesisStakeTableState,
13304                _stateHistoryRetentionPeriod,
13305                owner,
13306            })
13307        }
13308        ///Creates a new call builder for the [`initializeV2`] function.
13309        pub fn initializeV2(
13310            &self,
13311            _blocksPerEpoch: u64,
13312            _epochStartBlock: u64,
13313        ) -> alloy_contract::SolCallBuilder<T, &P, initializeV2Call, N> {
13314            self.call_builder(&initializeV2Call {
13315                _blocksPerEpoch,
13316                _epochStartBlock,
13317            })
13318        }
13319        ///Creates a new call builder for the [`isEpochRoot`] function.
13320        pub fn isEpochRoot(
13321            &self,
13322            blockHeight: u64,
13323        ) -> alloy_contract::SolCallBuilder<T, &P, isEpochRootCall, N> {
13324            self.call_builder(&isEpochRootCall { blockHeight })
13325        }
13326        ///Creates a new call builder for the [`isGtEpochRoot`] function.
13327        pub fn isGtEpochRoot(
13328            &self,
13329            blockHeight: u64,
13330        ) -> alloy_contract::SolCallBuilder<T, &P, isGtEpochRootCall, N> {
13331            self.call_builder(&isGtEpochRootCall { blockHeight })
13332        }
13333        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
13334        pub fn isPermissionedProverEnabled(
13335            &self,
13336        ) -> alloy_contract::SolCallBuilder<T, &P, isPermissionedProverEnabledCall, N> {
13337            self.call_builder(&isPermissionedProverEnabledCall {})
13338        }
13339        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
13340        pub fn lagOverEscapeHatchThreshold(
13341            &self,
13342            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
13343            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
13344        ) -> alloy_contract::SolCallBuilder<T, &P, lagOverEscapeHatchThresholdCall, N> {
13345            self.call_builder(&lagOverEscapeHatchThresholdCall {
13346                blockNumber,
13347                blockThreshold,
13348            })
13349        }
13350        ///Creates a new call builder for the [`newFinalizedState_0`] function.
13351        pub fn newFinalizedState_0(
13352            &self,
13353            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13354            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
13355        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_0Call, N> {
13356            self.call_builder(&newFinalizedState_0Call { _0, _1 })
13357        }
13358        ///Creates a new call builder for the [`newFinalizedState_1`] function.
13359        pub fn newFinalizedState_1(
13360            &self,
13361            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13362            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13363            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
13364        ) -> alloy_contract::SolCallBuilder<T, &P, newFinalizedState_1Call, N> {
13365            self.call_builder(&newFinalizedState_1Call {
13366                newState,
13367                nextStakeTable,
13368                proof,
13369            })
13370        }
13371        ///Creates a new call builder for the [`owner`] function.
13372        pub fn owner(&self) -> alloy_contract::SolCallBuilder<T, &P, ownerCall, N> {
13373            self.call_builder(&ownerCall {})
13374        }
13375        ///Creates a new call builder for the [`permissionedProver`] function.
13376        pub fn permissionedProver(
13377            &self,
13378        ) -> alloy_contract::SolCallBuilder<T, &P, permissionedProverCall, N> {
13379            self.call_builder(&permissionedProverCall {})
13380        }
13381        ///Creates a new call builder for the [`proxiableUUID`] function.
13382        pub fn proxiableUUID(&self) -> alloy_contract::SolCallBuilder<T, &P, proxiableUUIDCall, N> {
13383            self.call_builder(&proxiableUUIDCall {})
13384        }
13385        ///Creates a new call builder for the [`renounceOwnership`] function.
13386        pub fn renounceOwnership(
13387            &self,
13388        ) -> alloy_contract::SolCallBuilder<T, &P, renounceOwnershipCall, N> {
13389            self.call_builder(&renounceOwnershipCall {})
13390        }
13391        ///Creates a new call builder for the [`setPermissionedProver`] function.
13392        pub fn setPermissionedProver(
13393            &self,
13394            prover: alloy::sol_types::private::Address,
13395        ) -> alloy_contract::SolCallBuilder<T, &P, setPermissionedProverCall, N> {
13396            self.call_builder(&setPermissionedProverCall { prover })
13397        }
13398        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
13399        pub fn setStateHistoryRetentionPeriod(
13400            &self,
13401            historySeconds: u32,
13402        ) -> alloy_contract::SolCallBuilder<T, &P, setStateHistoryRetentionPeriodCall, N> {
13403            self.call_builder(&setStateHistoryRetentionPeriodCall { historySeconds })
13404        }
13405        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
13406        pub fn setstateHistoryRetentionPeriod(
13407            &self,
13408            historySeconds: u32,
13409        ) -> alloy_contract::SolCallBuilder<T, &P, setstateHistoryRetentionPeriodCall, N> {
13410            self.call_builder(&setstateHistoryRetentionPeriodCall { historySeconds })
13411        }
13412        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
13413        pub fn stateHistoryCommitments(
13414            &self,
13415            _0: alloy::sol_types::private::primitives::aliases::U256,
13416        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryCommitmentsCall, N> {
13417            self.call_builder(&stateHistoryCommitmentsCall { _0 })
13418        }
13419        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
13420        pub fn stateHistoryFirstIndex(
13421            &self,
13422        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryFirstIndexCall, N> {
13423            self.call_builder(&stateHistoryFirstIndexCall {})
13424        }
13425        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
13426        pub fn stateHistoryRetentionPeriod(
13427            &self,
13428        ) -> alloy_contract::SolCallBuilder<T, &P, stateHistoryRetentionPeriodCall, N> {
13429            self.call_builder(&stateHistoryRetentionPeriodCall {})
13430        }
13431        ///Creates a new call builder for the [`transferOwnership`] function.
13432        pub fn transferOwnership(
13433            &self,
13434            newOwner: alloy::sol_types::private::Address,
13435        ) -> alloy_contract::SolCallBuilder<T, &P, transferOwnershipCall, N> {
13436            self.call_builder(&transferOwnershipCall { newOwner })
13437        }
13438        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
13439        pub fn updateEpochStartBlock(
13440            &self,
13441            newEpochStartBlock: u64,
13442        ) -> alloy_contract::SolCallBuilder<T, &P, updateEpochStartBlockCall, N> {
13443            self.call_builder(&updateEpochStartBlockCall { newEpochStartBlock })
13444        }
13445        ///Creates a new call builder for the [`upgradeToAndCall`] function.
13446        pub fn upgradeToAndCall(
13447            &self,
13448            newImplementation: alloy::sol_types::private::Address,
13449            data: alloy::sol_types::private::Bytes,
13450        ) -> alloy_contract::SolCallBuilder<T, &P, upgradeToAndCallCall, N> {
13451            self.call_builder(&upgradeToAndCallCall {
13452                newImplementation,
13453                data,
13454            })
13455        }
13456        ///Creates a new call builder for the [`votingStakeTableState`] function.
13457        pub fn votingStakeTableState(
13458            &self,
13459        ) -> alloy_contract::SolCallBuilder<T, &P, votingStakeTableStateCall, N> {
13460            self.call_builder(&votingStakeTableStateCall {})
13461        }
13462    }
13463    /// Event filters.
13464    #[automatically_derived]
13465    impl<
13466            T: alloy_contract::private::Transport + ::core::clone::Clone,
13467            P: alloy_contract::private::Provider<T, N>,
13468            N: alloy_contract::private::Network,
13469        > LightClientArbitrumV2Instance<T, P, N>
13470    {
13471        /// Creates a new event filter using this contract instance's provider and address.
13472        ///
13473        /// Note that the type can be any event, not just those defined in this contract.
13474        /// Prefer using the other methods for building type-safe event filters.
13475        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13476            &self,
13477        ) -> alloy_contract::Event<T, &P, E, N> {
13478            alloy_contract::Event::new_sol(&self.provider, &self.address)
13479        }
13480        ///Creates a new event filter for the [`Initialized`] event.
13481        pub fn Initialized_filter(&self) -> alloy_contract::Event<T, &P, Initialized, N> {
13482            self.event_filter::<Initialized>()
13483        }
13484        ///Creates a new event filter for the [`NewEpoch`] event.
13485        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<T, &P, NewEpoch, N> {
13486            self.event_filter::<NewEpoch>()
13487        }
13488        ///Creates a new event filter for the [`NewState`] event.
13489        pub fn NewState_filter(&self) -> alloy_contract::Event<T, &P, NewState, N> {
13490            self.event_filter::<NewState>()
13491        }
13492        ///Creates a new event filter for the [`OwnershipTransferred`] event.
13493        pub fn OwnershipTransferred_filter(
13494            &self,
13495        ) -> alloy_contract::Event<T, &P, OwnershipTransferred, N> {
13496            self.event_filter::<OwnershipTransferred>()
13497        }
13498        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
13499        pub fn PermissionedProverNotRequired_filter(
13500            &self,
13501        ) -> alloy_contract::Event<T, &P, PermissionedProverNotRequired, N> {
13502            self.event_filter::<PermissionedProverNotRequired>()
13503        }
13504        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
13505        pub fn PermissionedProverRequired_filter(
13506            &self,
13507        ) -> alloy_contract::Event<T, &P, PermissionedProverRequired, N> {
13508            self.event_filter::<PermissionedProverRequired>()
13509        }
13510        ///Creates a new event filter for the [`Upgrade`] event.
13511        pub fn Upgrade_filter(&self) -> alloy_contract::Event<T, &P, Upgrade, N> {
13512            self.event_filter::<Upgrade>()
13513        }
13514        ///Creates a new event filter for the [`Upgraded`] event.
13515        pub fn Upgraded_filter(&self) -> alloy_contract::Event<T, &P, Upgraded, N> {
13516            self.event_filter::<Upgraded>()
13517        }
13518    }
13519}