hotshot_contract_adapter/bindings/
light_client_v2_mock.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 super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
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            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
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<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        #[allow(dead_code)]
334        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
335        #[doc(hidden)]
336        type UnderlyingRustTuple<'a> = (
337            <BaseField as alloy::sol_types::SolType>::RustType,
338            <BaseField as alloy::sol_types::SolType>::RustType,
339        );
340        #[cfg(test)]
341        #[allow(dead_code, unreachable_patterns)]
342        fn _type_assertion(
343            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
344        ) {
345            match _t {
346                alloy_sol_types::private::AssertTypeEq::<
347                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
348                >(_) => {}
349            }
350        }
351        #[automatically_derived]
352        #[doc(hidden)]
353        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
354            fn from(value: G1Point) -> Self {
355                (value.x, value.y)
356            }
357        }
358        #[automatically_derived]
359        #[doc(hidden)]
360        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
362                Self { x: tuple.0, y: tuple.1 }
363            }
364        }
365        #[automatically_derived]
366        impl alloy_sol_types::SolValue for G1Point {
367            type SolType = Self;
368        }
369        #[automatically_derived]
370        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
371            #[inline]
372            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
373                (
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
375                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
376                )
377            }
378            #[inline]
379            fn stv_abi_encoded_size(&self) -> usize {
380                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
381                    return size;
382                }
383                let tuple = <UnderlyingRustTuple<
384                    '_,
385                > as ::core::convert::From<Self>>::from(self.clone());
386                <UnderlyingSolTuple<
387                    '_,
388                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
389            }
390            #[inline]
391            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
392                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
393            }
394            #[inline]
395            fn stv_abi_encode_packed_to(
396                &self,
397                out: &mut alloy_sol_types::private::Vec<u8>,
398            ) {
399                let tuple = <UnderlyingRustTuple<
400                    '_,
401                > as ::core::convert::From<Self>>::from(self.clone());
402                <UnderlyingSolTuple<
403                    '_,
404                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
405            }
406            #[inline]
407            fn stv_abi_packed_encoded_size(&self) -> usize {
408                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
409                    return size;
410                }
411                let tuple = <UnderlyingRustTuple<
412                    '_,
413                > as ::core::convert::From<Self>>::from(self.clone());
414                <UnderlyingSolTuple<
415                    '_,
416                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
417            }
418        }
419        #[automatically_derived]
420        impl alloy_sol_types::SolType for G1Point {
421            type RustType = Self;
422            type Token<'a> = <UnderlyingSolTuple<
423                'a,
424            > as alloy_sol_types::SolType>::Token<'a>;
425            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
426            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
427                '_,
428            > as alloy_sol_types::SolType>::ENCODED_SIZE;
429            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
430                '_,
431            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
432            #[inline]
433            fn valid_token(token: &Self::Token<'_>) -> bool {
434                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
435            }
436            #[inline]
437            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
438                let tuple = <UnderlyingSolTuple<
439                    '_,
440                > as alloy_sol_types::SolType>::detokenize(token);
441                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
442            }
443        }
444        #[automatically_derived]
445        impl alloy_sol_types::SolStruct for G1Point {
446            const NAME: &'static str = "G1Point";
447            #[inline]
448            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
449                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
450            }
451            #[inline]
452            fn eip712_components() -> alloy_sol_types::private::Vec<
453                alloy_sol_types::private::Cow<'static, str>,
454            > {
455                alloy_sol_types::private::Vec::new()
456            }
457            #[inline]
458            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
459                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
460            }
461            #[inline]
462            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
463                [
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
465                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
466                ]
467                    .concat()
468            }
469        }
470        #[automatically_derived]
471        impl alloy_sol_types::EventTopic for G1Point {
472            #[inline]
473            fn topic_preimage_length(rust: &Self::RustType) -> usize {
474                0usize
475                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
476                        &rust.x,
477                    )
478                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
479                        &rust.y,
480                    )
481            }
482            #[inline]
483            fn encode_topic_preimage(
484                rust: &Self::RustType,
485                out: &mut alloy_sol_types::private::Vec<u8>,
486            ) {
487                out.reserve(
488                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
489                );
490                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
491                    &rust.x,
492                    out,
493                );
494                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
495                    &rust.y,
496                    out,
497                );
498            }
499            #[inline]
500            fn encode_topic(
501                rust: &Self::RustType,
502            ) -> alloy_sol_types::abi::token::WordToken {
503                let mut out = alloy_sol_types::private::Vec::new();
504                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
505                    rust,
506                    &mut out,
507                );
508                alloy_sol_types::abi::token::WordToken(
509                    alloy_sol_types::private::keccak256(out),
510                )
511            }
512        }
513    };
514    use alloy::contract as alloy_contract;
515    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
516
517See the [wrapper's documentation](`BN254Instance`) for more details.*/
518    #[inline]
519    pub const fn new<
520        P: alloy_contract::private::Provider<N>,
521        N: alloy_contract::private::Network,
522    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
523        BN254Instance::<P, N>::new(address, __provider)
524    }
525    /**A [`BN254`](self) instance.
526
527Contains type-safe methods for interacting with an on-chain instance of the
528[`BN254`](self) contract located at a given `address`, using a given
529provider `P`.
530
531If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
532documentation on how to provide it), the `deploy` and `deploy_builder` methods can
533be used to deploy a new instance of the contract.
534
535See the [module-level documentation](self) for all the available methods.*/
536    #[derive(Clone)]
537    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
538        address: alloy_sol_types::private::Address,
539        provider: P,
540        _network: ::core::marker::PhantomData<N>,
541    }
542    #[automatically_derived]
543    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
544        #[inline]
545        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
546            f.debug_tuple("BN254Instance").field(&self.address).finish()
547        }
548    }
549    /// Instantiation and getters/setters.
550    #[automatically_derived]
551    impl<
552        P: alloy_contract::private::Provider<N>,
553        N: alloy_contract::private::Network,
554    > BN254Instance<P, N> {
555        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
556
557See the [wrapper's documentation](`BN254Instance`) for more details.*/
558        #[inline]
559        pub const fn new(
560            address: alloy_sol_types::private::Address,
561            __provider: P,
562        ) -> Self {
563            Self {
564                address,
565                provider: __provider,
566                _network: ::core::marker::PhantomData,
567            }
568        }
569        /// Returns a reference to the address.
570        #[inline]
571        pub const fn address(&self) -> &alloy_sol_types::private::Address {
572            &self.address
573        }
574        /// Sets the address.
575        #[inline]
576        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
577            self.address = address;
578        }
579        /// Sets the address and returns `self`.
580        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
581            self.set_address(address);
582            self
583        }
584        /// Returns a reference to the provider.
585        #[inline]
586        pub const fn provider(&self) -> &P {
587            &self.provider
588        }
589    }
590    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
591        /// Clones the provider and returns a new instance with the cloned provider.
592        #[inline]
593        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
594            BN254Instance {
595                address: self.address,
596                provider: ::core::clone::Clone::clone(&self.provider),
597                _network: ::core::marker::PhantomData,
598            }
599        }
600    }
601    /// Function calls.
602    #[automatically_derived]
603    impl<
604        P: alloy_contract::private::Provider<N>,
605        N: alloy_contract::private::Network,
606    > BN254Instance<P, N> {
607        /// Creates a new call builder using this contract instance's provider and address.
608        ///
609        /// Note that the call can be any function call, not just those defined in this
610        /// contract. Prefer using the other methods for building type-safe contract calls.
611        pub fn call_builder<C: alloy_sol_types::SolCall>(
612            &self,
613            call: &C,
614        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
615            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
616        }
617    }
618    /// Event filters.
619    #[automatically_derived]
620    impl<
621        P: alloy_contract::private::Provider<N>,
622        N: alloy_contract::private::Network,
623    > BN254Instance<P, N> {
624        /// Creates a new event filter using this contract instance's provider and address.
625        ///
626        /// Note that the type can be any event, not just those defined in this contract.
627        /// Prefer using the other methods for building type-safe event filters.
628        pub fn event_filter<E: alloy_sol_types::SolEvent>(
629            &self,
630        ) -> alloy_contract::Event<&P, E, N> {
631            alloy_contract::Event::new_sol(&self.provider, &self.address)
632        }
633    }
634}
635///Module containing a contract's types and functions.
636/**
637
638```solidity
639library IPlonkVerifier {
640    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; }
641    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; }
642}
643```*/
644#[allow(
645    non_camel_case_types,
646    non_snake_case,
647    clippy::pub_underscore_fields,
648    clippy::style,
649    clippy::empty_structs_with_brackets
650)]
651pub mod IPlonkVerifier {
652    use super::*;
653    use alloy::sol_types as alloy_sol_types;
654    #[derive(serde::Serialize, serde::Deserialize)]
655    #[derive()]
656    /**```solidity
657struct 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; }
658```*/
659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
660    #[derive(Clone)]
661    pub struct PlonkProof {
662        #[allow(missing_docs)]
663        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
682        #[allow(missing_docs)]
683        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
684        #[allow(missing_docs)]
685        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
686        #[allow(missing_docs)]
687        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
688        #[allow(missing_docs)]
689        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
690        #[allow(missing_docs)]
691        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
692        #[allow(missing_docs)]
693        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
694        #[allow(missing_docs)]
695        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
696        #[allow(missing_docs)]
697        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
698        #[allow(missing_docs)]
699        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
700        #[allow(missing_docs)]
701        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
702        #[allow(missing_docs)]
703        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
704        #[allow(missing_docs)]
705        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
706        #[allow(missing_docs)]
707        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
708    }
709    #[allow(
710        non_camel_case_types,
711        non_snake_case,
712        clippy::pub_underscore_fields,
713        clippy::style
714    )]
715    const _: () = {
716        use alloy::sol_types as alloy_sol_types;
717        #[doc(hidden)]
718        #[allow(dead_code)]
719        type UnderlyingSolTuple<'a> = (
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::G1Point,
732            BN254::G1Point,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741            BN254::ScalarField,
742            BN254::ScalarField,
743        );
744        #[doc(hidden)]
745        type UnderlyingRustTuple<'a> = (
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
758            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
768            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
769        );
770        #[cfg(test)]
771        #[allow(dead_code, unreachable_patterns)]
772        fn _type_assertion(
773            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
774        ) {
775            match _t {
776                alloy_sol_types::private::AssertTypeEq::<
777                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
778                >(_) => {}
779            }
780        }
781        #[automatically_derived]
782        #[doc(hidden)]
783        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
784            fn from(value: PlonkProof) -> Self {
785                (
786                    value.wire0,
787                    value.wire1,
788                    value.wire2,
789                    value.wire3,
790                    value.wire4,
791                    value.prodPerm,
792                    value.split0,
793                    value.split1,
794                    value.split2,
795                    value.split3,
796                    value.split4,
797                    value.zeta,
798                    value.zetaOmega,
799                    value.wireEval0,
800                    value.wireEval1,
801                    value.wireEval2,
802                    value.wireEval3,
803                    value.wireEval4,
804                    value.sigmaEval0,
805                    value.sigmaEval1,
806                    value.sigmaEval2,
807                    value.sigmaEval3,
808                    value.prodPermZetaOmegaEval,
809                )
810            }
811        }
812        #[automatically_derived]
813        #[doc(hidden)]
814        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
815            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
816                Self {
817                    wire0: tuple.0,
818                    wire1: tuple.1,
819                    wire2: tuple.2,
820                    wire3: tuple.3,
821                    wire4: tuple.4,
822                    prodPerm: tuple.5,
823                    split0: tuple.6,
824                    split1: tuple.7,
825                    split2: tuple.8,
826                    split3: tuple.9,
827                    split4: tuple.10,
828                    zeta: tuple.11,
829                    zetaOmega: tuple.12,
830                    wireEval0: tuple.13,
831                    wireEval1: tuple.14,
832                    wireEval2: tuple.15,
833                    wireEval3: tuple.16,
834                    wireEval4: tuple.17,
835                    sigmaEval0: tuple.18,
836                    sigmaEval1: tuple.19,
837                    sigmaEval2: tuple.20,
838                    sigmaEval3: tuple.21,
839                    prodPermZetaOmegaEval: tuple.22,
840                }
841            }
842        }
843        #[automatically_derived]
844        impl alloy_sol_types::SolValue for PlonkProof {
845            type SolType = Self;
846        }
847        #[automatically_derived]
848        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
849            #[inline]
850            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
851                (
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
858                        &self.prodPerm,
859                    ),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
865                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
866                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
867                        &self.zetaOmega,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.wireEval0,
871                    ),
872                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
873                        &self.wireEval1,
874                    ),
875                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
876                        &self.wireEval2,
877                    ),
878                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
879                        &self.wireEval3,
880                    ),
881                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
882                        &self.wireEval4,
883                    ),
884                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
885                        &self.sigmaEval0,
886                    ),
887                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
888                        &self.sigmaEval1,
889                    ),
890                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
891                        &self.sigmaEval2,
892                    ),
893                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
894                        &self.sigmaEval3,
895                    ),
896                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
897                        &self.prodPermZetaOmegaEval,
898                    ),
899                )
900            }
901            #[inline]
902            fn stv_abi_encoded_size(&self) -> usize {
903                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
904                    return size;
905                }
906                let tuple = <UnderlyingRustTuple<
907                    '_,
908                > as ::core::convert::From<Self>>::from(self.clone());
909                <UnderlyingSolTuple<
910                    '_,
911                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
912            }
913            #[inline]
914            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
915                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
916            }
917            #[inline]
918            fn stv_abi_encode_packed_to(
919                &self,
920                out: &mut alloy_sol_types::private::Vec<u8>,
921            ) {
922                let tuple = <UnderlyingRustTuple<
923                    '_,
924                > as ::core::convert::From<Self>>::from(self.clone());
925                <UnderlyingSolTuple<
926                    '_,
927                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
928            }
929            #[inline]
930            fn stv_abi_packed_encoded_size(&self) -> usize {
931                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
932                    return size;
933                }
934                let tuple = <UnderlyingRustTuple<
935                    '_,
936                > as ::core::convert::From<Self>>::from(self.clone());
937                <UnderlyingSolTuple<
938                    '_,
939                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
940            }
941        }
942        #[automatically_derived]
943        impl alloy_sol_types::SolType for PlonkProof {
944            type RustType = Self;
945            type Token<'a> = <UnderlyingSolTuple<
946                'a,
947            > as alloy_sol_types::SolType>::Token<'a>;
948            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
949            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
950                '_,
951            > as alloy_sol_types::SolType>::ENCODED_SIZE;
952            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
953                '_,
954            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
955            #[inline]
956            fn valid_token(token: &Self::Token<'_>) -> bool {
957                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
958            }
959            #[inline]
960            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
961                let tuple = <UnderlyingSolTuple<
962                    '_,
963                > as alloy_sol_types::SolType>::detokenize(token);
964                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
965            }
966        }
967        #[automatically_derived]
968        impl alloy_sol_types::SolStruct for PlonkProof {
969            const NAME: &'static str = "PlonkProof";
970            #[inline]
971            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
972                alloy_sol_types::private::Cow::Borrowed(
973                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
974                )
975            }
976            #[inline]
977            fn eip712_components() -> alloy_sol_types::private::Vec<
978                alloy_sol_types::private::Cow<'static, str>,
979            > {
980                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
981                components
982                    .push(
983                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
984                    );
985                components
986                    .extend(
987                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
988                    );
989                components
990                    .push(
991                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
992                    );
993                components
994                    .extend(
995                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
996                    );
997                components
998                    .push(
999                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1000                    );
1001                components
1002                    .extend(
1003                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1004                    );
1005                components
1006                    .push(
1007                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1008                    );
1009                components
1010                    .extend(
1011                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1012                    );
1013                components
1014                    .push(
1015                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1016                    );
1017                components
1018                    .extend(
1019                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1020                    );
1021                components
1022                    .push(
1023                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1024                    );
1025                components
1026                    .extend(
1027                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1028                    );
1029                components
1030                    .push(
1031                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1032                    );
1033                components
1034                    .extend(
1035                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1036                    );
1037                components
1038                    .push(
1039                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1040                    );
1041                components
1042                    .extend(
1043                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1044                    );
1045                components
1046                    .push(
1047                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1048                    );
1049                components
1050                    .extend(
1051                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1052                    );
1053                components
1054                    .push(
1055                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1056                    );
1057                components
1058                    .extend(
1059                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1060                    );
1061                components
1062                    .push(
1063                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1064                    );
1065                components
1066                    .extend(
1067                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1068                    );
1069                components
1070                    .push(
1071                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1072                    );
1073                components
1074                    .extend(
1075                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1076                    );
1077                components
1078                    .push(
1079                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1080                    );
1081                components
1082                    .extend(
1083                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1084                    );
1085                components
1086            }
1087            #[inline]
1088            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1089                [
1090                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1091                            &self.wire0,
1092                        )
1093                        .0,
1094                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1095                            &self.wire1,
1096                        )
1097                        .0,
1098                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1099                            &self.wire2,
1100                        )
1101                        .0,
1102                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1103                            &self.wire3,
1104                        )
1105                        .0,
1106                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1107                            &self.wire4,
1108                        )
1109                        .0,
1110                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1111                            &self.prodPerm,
1112                        )
1113                        .0,
1114                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1115                            &self.split0,
1116                        )
1117                        .0,
1118                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1119                            &self.split1,
1120                        )
1121                        .0,
1122                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1123                            &self.split2,
1124                        )
1125                        .0,
1126                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1127                            &self.split3,
1128                        )
1129                        .0,
1130                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1131                            &self.split4,
1132                        )
1133                        .0,
1134                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1135                            &self.zeta,
1136                        )
1137                        .0,
1138                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1139                            &self.zetaOmega,
1140                        )
1141                        .0,
1142                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1143                            &self.wireEval0,
1144                        )
1145                        .0,
1146                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1147                            &self.wireEval1,
1148                        )
1149                        .0,
1150                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1151                            &self.wireEval2,
1152                        )
1153                        .0,
1154                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1155                            &self.wireEval3,
1156                        )
1157                        .0,
1158                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1159                            &self.wireEval4,
1160                        )
1161                        .0,
1162                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1163                            &self.sigmaEval0,
1164                        )
1165                        .0,
1166                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1167                            &self.sigmaEval1,
1168                        )
1169                        .0,
1170                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1171                            &self.sigmaEval2,
1172                        )
1173                        .0,
1174                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1175                            &self.sigmaEval3,
1176                        )
1177                        .0,
1178                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1179                            &self.prodPermZetaOmegaEval,
1180                        )
1181                        .0,
1182                ]
1183                    .concat()
1184            }
1185        }
1186        #[automatically_derived]
1187        impl alloy_sol_types::EventTopic for PlonkProof {
1188            #[inline]
1189            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1190                0usize
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.wire0,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.wire1,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.wire2,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.wire3,
1202                    )
1203                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wire4,
1205                    )
1206                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.prodPerm,
1208                    )
1209                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.split0,
1211                    )
1212                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.split1,
1214                    )
1215                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.split2,
1217                    )
1218                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.split3,
1220                    )
1221                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.split4,
1223                    )
1224                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.zeta,
1226                    )
1227                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.zetaOmega,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.wireEval0,
1232                    )
1233                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1234                        &rust.wireEval1,
1235                    )
1236                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1237                        &rust.wireEval2,
1238                    )
1239                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1240                        &rust.wireEval3,
1241                    )
1242                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1243                        &rust.wireEval4,
1244                    )
1245                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1246                        &rust.sigmaEval0,
1247                    )
1248                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1249                        &rust.sigmaEval1,
1250                    )
1251                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1252                        &rust.sigmaEval2,
1253                    )
1254                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1255                        &rust.sigmaEval3,
1256                    )
1257                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1258                        &rust.prodPermZetaOmegaEval,
1259                    )
1260            }
1261            #[inline]
1262            fn encode_topic_preimage(
1263                rust: &Self::RustType,
1264                out: &mut alloy_sol_types::private::Vec<u8>,
1265            ) {
1266                out.reserve(
1267                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1268                );
1269                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1270                    &rust.wire0,
1271                    out,
1272                );
1273                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1274                    &rust.wire1,
1275                    out,
1276                );
1277                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1278                    &rust.wire2,
1279                    out,
1280                );
1281                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1282                    &rust.wire3,
1283                    out,
1284                );
1285                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1286                    &rust.wire4,
1287                    out,
1288                );
1289                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1290                    &rust.prodPerm,
1291                    out,
1292                );
1293                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1294                    &rust.split0,
1295                    out,
1296                );
1297                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1298                    &rust.split1,
1299                    out,
1300                );
1301                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1302                    &rust.split2,
1303                    out,
1304                );
1305                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1306                    &rust.split3,
1307                    out,
1308                );
1309                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1310                    &rust.split4,
1311                    out,
1312                );
1313                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1314                    &rust.zeta,
1315                    out,
1316                );
1317                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1318                    &rust.zetaOmega,
1319                    out,
1320                );
1321                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1322                    &rust.wireEval0,
1323                    out,
1324                );
1325                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1326                    &rust.wireEval1,
1327                    out,
1328                );
1329                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1330                    &rust.wireEval2,
1331                    out,
1332                );
1333                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1334                    &rust.wireEval3,
1335                    out,
1336                );
1337                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1338                    &rust.wireEval4,
1339                    out,
1340                );
1341                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1342                    &rust.sigmaEval0,
1343                    out,
1344                );
1345                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1346                    &rust.sigmaEval1,
1347                    out,
1348                );
1349                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1350                    &rust.sigmaEval2,
1351                    out,
1352                );
1353                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1354                    &rust.sigmaEval3,
1355                    out,
1356                );
1357                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1358                    &rust.prodPermZetaOmegaEval,
1359                    out,
1360                );
1361            }
1362            #[inline]
1363            fn encode_topic(
1364                rust: &Self::RustType,
1365            ) -> alloy_sol_types::abi::token::WordToken {
1366                let mut out = alloy_sol_types::private::Vec::new();
1367                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1368                    rust,
1369                    &mut out,
1370                );
1371                alloy_sol_types::abi::token::WordToken(
1372                    alloy_sol_types::private::keccak256(out),
1373                )
1374            }
1375        }
1376    };
1377    #[derive(serde::Serialize, serde::Deserialize)]
1378    #[derive()]
1379    /**```solidity
1380struct 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; }
1381```*/
1382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1383    #[derive(Clone)]
1384    pub struct VerifyingKey {
1385        #[allow(missing_docs)]
1386        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1389        #[allow(missing_docs)]
1390        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1425        #[allow(missing_docs)]
1426        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1427        #[allow(missing_docs)]
1428        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1429    }
1430    #[allow(
1431        non_camel_case_types,
1432        non_snake_case,
1433        clippy::pub_underscore_fields,
1434        clippy::style
1435    )]
1436    const _: () = {
1437        use alloy::sol_types as alloy_sol_types;
1438        #[doc(hidden)]
1439        #[allow(dead_code)]
1440        type UnderlyingSolTuple<'a> = (
1441            alloy::sol_types::sol_data::Uint<256>,
1442            alloy::sol_types::sol_data::Uint<256>,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            BN254::G1Point,
1459            BN254::G1Point,
1460            BN254::G1Point,
1461            alloy::sol_types::sol_data::FixedBytes<32>,
1462            alloy::sol_types::sol_data::FixedBytes<32>,
1463        );
1464        #[doc(hidden)]
1465        type UnderlyingRustTuple<'a> = (
1466            alloy::sol_types::private::primitives::aliases::U256,
1467            alloy::sol_types::private::primitives::aliases::U256,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1484            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1485            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1486            alloy::sol_types::private::FixedBytes<32>,
1487            alloy::sol_types::private::FixedBytes<32>,
1488        );
1489        #[cfg(test)]
1490        #[allow(dead_code, unreachable_patterns)]
1491        fn _type_assertion(
1492            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1493        ) {
1494            match _t {
1495                alloy_sol_types::private::AssertTypeEq::<
1496                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1497                >(_) => {}
1498            }
1499        }
1500        #[automatically_derived]
1501        #[doc(hidden)]
1502        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1503            fn from(value: VerifyingKey) -> Self {
1504                (
1505                    value.domainSize,
1506                    value.numInputs,
1507                    value.sigma0,
1508                    value.sigma1,
1509                    value.sigma2,
1510                    value.sigma3,
1511                    value.sigma4,
1512                    value.q1,
1513                    value.q2,
1514                    value.q3,
1515                    value.q4,
1516                    value.qM12,
1517                    value.qM34,
1518                    value.qO,
1519                    value.qC,
1520                    value.qH1,
1521                    value.qH2,
1522                    value.qH3,
1523                    value.qH4,
1524                    value.qEcc,
1525                    value.g2LSB,
1526                    value.g2MSB,
1527                )
1528            }
1529        }
1530        #[automatically_derived]
1531        #[doc(hidden)]
1532        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1533            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1534                Self {
1535                    domainSize: tuple.0,
1536                    numInputs: tuple.1,
1537                    sigma0: tuple.2,
1538                    sigma1: tuple.3,
1539                    sigma2: tuple.4,
1540                    sigma3: tuple.5,
1541                    sigma4: tuple.6,
1542                    q1: tuple.7,
1543                    q2: tuple.8,
1544                    q3: tuple.9,
1545                    q4: tuple.10,
1546                    qM12: tuple.11,
1547                    qM34: tuple.12,
1548                    qO: tuple.13,
1549                    qC: tuple.14,
1550                    qH1: tuple.15,
1551                    qH2: tuple.16,
1552                    qH3: tuple.17,
1553                    qH4: tuple.18,
1554                    qEcc: tuple.19,
1555                    g2LSB: tuple.20,
1556                    g2MSB: tuple.21,
1557                }
1558            }
1559        }
1560        #[automatically_derived]
1561        impl alloy_sol_types::SolValue for VerifyingKey {
1562            type SolType = Self;
1563        }
1564        #[automatically_derived]
1565        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1566            #[inline]
1567            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1568                (
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1572                    <alloy::sol_types::sol_data::Uint<
1573                        256,
1574                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1590                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1591                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1592                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1596                    <alloy::sol_types::sol_data::FixedBytes<
1597                        32,
1598                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1599                )
1600            }
1601            #[inline]
1602            fn stv_abi_encoded_size(&self) -> usize {
1603                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1604                    return size;
1605                }
1606                let tuple = <UnderlyingRustTuple<
1607                    '_,
1608                > as ::core::convert::From<Self>>::from(self.clone());
1609                <UnderlyingSolTuple<
1610                    '_,
1611                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1612            }
1613            #[inline]
1614            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1615                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1616            }
1617            #[inline]
1618            fn stv_abi_encode_packed_to(
1619                &self,
1620                out: &mut alloy_sol_types::private::Vec<u8>,
1621            ) {
1622                let tuple = <UnderlyingRustTuple<
1623                    '_,
1624                > as ::core::convert::From<Self>>::from(self.clone());
1625                <UnderlyingSolTuple<
1626                    '_,
1627                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1628            }
1629            #[inline]
1630            fn stv_abi_packed_encoded_size(&self) -> usize {
1631                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1632                    return size;
1633                }
1634                let tuple = <UnderlyingRustTuple<
1635                    '_,
1636                > as ::core::convert::From<Self>>::from(self.clone());
1637                <UnderlyingSolTuple<
1638                    '_,
1639                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1640            }
1641        }
1642        #[automatically_derived]
1643        impl alloy_sol_types::SolType for VerifyingKey {
1644            type RustType = Self;
1645            type Token<'a> = <UnderlyingSolTuple<
1646                'a,
1647            > as alloy_sol_types::SolType>::Token<'a>;
1648            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1649            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1652            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1653                '_,
1654            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1655            #[inline]
1656            fn valid_token(token: &Self::Token<'_>) -> bool {
1657                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1658            }
1659            #[inline]
1660            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1661                let tuple = <UnderlyingSolTuple<
1662                    '_,
1663                > as alloy_sol_types::SolType>::detokenize(token);
1664                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1665            }
1666        }
1667        #[automatically_derived]
1668        impl alloy_sol_types::SolStruct for VerifyingKey {
1669            const NAME: &'static str = "VerifyingKey";
1670            #[inline]
1671            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1672                alloy_sol_types::private::Cow::Borrowed(
1673                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1674                )
1675            }
1676            #[inline]
1677            fn eip712_components() -> alloy_sol_types::private::Vec<
1678                alloy_sol_types::private::Cow<'static, str>,
1679            > {
1680                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1681                components
1682                    .push(
1683                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1684                    );
1685                components
1686                    .extend(
1687                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1688                    );
1689                components
1690                    .push(
1691                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1692                    );
1693                components
1694                    .extend(
1695                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1696                    );
1697                components
1698                    .push(
1699                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1700                    );
1701                components
1702                    .extend(
1703                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1704                    );
1705                components
1706                    .push(
1707                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1708                    );
1709                components
1710                    .extend(
1711                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1712                    );
1713                components
1714                    .push(
1715                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1716                    );
1717                components
1718                    .extend(
1719                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1720                    );
1721                components
1722                    .push(
1723                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1724                    );
1725                components
1726                    .extend(
1727                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1728                    );
1729                components
1730                    .push(
1731                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1732                    );
1733                components
1734                    .extend(
1735                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1736                    );
1737                components
1738                    .push(
1739                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1740                    );
1741                components
1742                    .extend(
1743                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1744                    );
1745                components
1746                    .push(
1747                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1748                    );
1749                components
1750                    .extend(
1751                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1752                    );
1753                components
1754                    .push(
1755                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1756                    );
1757                components
1758                    .extend(
1759                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1760                    );
1761                components
1762                    .push(
1763                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1764                    );
1765                components
1766                    .extend(
1767                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1768                    );
1769                components
1770                    .push(
1771                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1772                    );
1773                components
1774                    .extend(
1775                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1776                    );
1777                components
1778                    .push(
1779                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1780                    );
1781                components
1782                    .extend(
1783                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1784                    );
1785                components
1786                    .push(
1787                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1788                    );
1789                components
1790                    .extend(
1791                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1792                    );
1793                components
1794                    .push(
1795                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1796                    );
1797                components
1798                    .extend(
1799                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1800                    );
1801                components
1802                    .push(
1803                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1804                    );
1805                components
1806                    .extend(
1807                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1808                    );
1809                components
1810                    .push(
1811                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1812                    );
1813                components
1814                    .extend(
1815                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1816                    );
1817                components
1818                    .push(
1819                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1820                    );
1821                components
1822                    .extend(
1823                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1824                    );
1825                components
1826            }
1827            #[inline]
1828            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1829                [
1830                    <alloy::sol_types::sol_data::Uint<
1831                        256,
1832                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1833                        .0,
1834                    <alloy::sol_types::sol_data::Uint<
1835                        256,
1836                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1837                        .0,
1838                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1839                            &self.sigma0,
1840                        )
1841                        .0,
1842                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1843                            &self.sigma1,
1844                        )
1845                        .0,
1846                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1847                            &self.sigma2,
1848                        )
1849                        .0,
1850                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1851                            &self.sigma3,
1852                        )
1853                        .0,
1854                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1855                            &self.sigma4,
1856                        )
1857                        .0,
1858                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1859                            &self.q1,
1860                        )
1861                        .0,
1862                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1863                            &self.q2,
1864                        )
1865                        .0,
1866                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1867                            &self.q3,
1868                        )
1869                        .0,
1870                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1871                            &self.q4,
1872                        )
1873                        .0,
1874                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1875                            &self.qM12,
1876                        )
1877                        .0,
1878                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1879                            &self.qM34,
1880                        )
1881                        .0,
1882                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1883                            &self.qO,
1884                        )
1885                        .0,
1886                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1887                            &self.qC,
1888                        )
1889                        .0,
1890                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1891                            &self.qH1,
1892                        )
1893                        .0,
1894                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1895                            &self.qH2,
1896                        )
1897                        .0,
1898                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1899                            &self.qH3,
1900                        )
1901                        .0,
1902                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1903                            &self.qH4,
1904                        )
1905                        .0,
1906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1907                            &self.qEcc,
1908                        )
1909                        .0,
1910                    <alloy::sol_types::sol_data::FixedBytes<
1911                        32,
1912                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1913                        .0,
1914                    <alloy::sol_types::sol_data::FixedBytes<
1915                        32,
1916                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1917                        .0,
1918                ]
1919                    .concat()
1920            }
1921        }
1922        #[automatically_derived]
1923        impl alloy_sol_types::EventTopic for VerifyingKey {
1924            #[inline]
1925            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1926                0usize
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.domainSize,
1931                    )
1932                    + <alloy::sol_types::sol_data::Uint<
1933                        256,
1934                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.numInputs,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma0,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma1,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma2,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma3,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.sigma4,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q1,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q2,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q3,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.q4,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM12,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qM34,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qO,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qC,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH1,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH2,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH3,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qH4,
1987                    )
1988                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1989                        &rust.qEcc,
1990                    )
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1994                    + <alloy::sol_types::sol_data::FixedBytes<
1995                        32,
1996                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1997            }
1998            #[inline]
1999            fn encode_topic_preimage(
2000                rust: &Self::RustType,
2001                out: &mut alloy_sol_types::private::Vec<u8>,
2002            ) {
2003                out.reserve(
2004                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2005                );
2006                <alloy::sol_types::sol_data::Uint<
2007                    256,
2008                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2009                    &rust.domainSize,
2010                    out,
2011                );
2012                <alloy::sol_types::sol_data::Uint<
2013                    256,
2014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2015                    &rust.numInputs,
2016                    out,
2017                );
2018                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2019                    &rust.sigma0,
2020                    out,
2021                );
2022                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2023                    &rust.sigma1,
2024                    out,
2025                );
2026                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2027                    &rust.sigma2,
2028                    out,
2029                );
2030                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2031                    &rust.sigma3,
2032                    out,
2033                );
2034                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2035                    &rust.sigma4,
2036                    out,
2037                );
2038                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2039                    &rust.q1,
2040                    out,
2041                );
2042                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2043                    &rust.q2,
2044                    out,
2045                );
2046                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2047                    &rust.q3,
2048                    out,
2049                );
2050                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2051                    &rust.q4,
2052                    out,
2053                );
2054                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2055                    &rust.qM12,
2056                    out,
2057                );
2058                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2059                    &rust.qM34,
2060                    out,
2061                );
2062                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2063                    &rust.qO,
2064                    out,
2065                );
2066                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2067                    &rust.qC,
2068                    out,
2069                );
2070                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2071                    &rust.qH1,
2072                    out,
2073                );
2074                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2075                    &rust.qH2,
2076                    out,
2077                );
2078                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2079                    &rust.qH3,
2080                    out,
2081                );
2082                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2083                    &rust.qH4,
2084                    out,
2085                );
2086                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2087                    &rust.qEcc,
2088                    out,
2089                );
2090                <alloy::sol_types::sol_data::FixedBytes<
2091                    32,
2092                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2093                    &rust.g2LSB,
2094                    out,
2095                );
2096                <alloy::sol_types::sol_data::FixedBytes<
2097                    32,
2098                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2099                    &rust.g2MSB,
2100                    out,
2101                );
2102            }
2103            #[inline]
2104            fn encode_topic(
2105                rust: &Self::RustType,
2106            ) -> alloy_sol_types::abi::token::WordToken {
2107                let mut out = alloy_sol_types::private::Vec::new();
2108                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2109                    rust,
2110                    &mut out,
2111                );
2112                alloy_sol_types::abi::token::WordToken(
2113                    alloy_sol_types::private::keccak256(out),
2114                )
2115            }
2116        }
2117    };
2118    use alloy::contract as alloy_contract;
2119    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2120
2121See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2122    #[inline]
2123    pub const fn new<
2124        P: alloy_contract::private::Provider<N>,
2125        N: alloy_contract::private::Network,
2126    >(
2127        address: alloy_sol_types::private::Address,
2128        __provider: P,
2129    ) -> IPlonkVerifierInstance<P, N> {
2130        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2131    }
2132    /**A [`IPlonkVerifier`](self) instance.
2133
2134Contains type-safe methods for interacting with an on-chain instance of the
2135[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2136provider `P`.
2137
2138If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2139documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2140be used to deploy a new instance of the contract.
2141
2142See the [module-level documentation](self) for all the available methods.*/
2143    #[derive(Clone)]
2144    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2145        address: alloy_sol_types::private::Address,
2146        provider: P,
2147        _network: ::core::marker::PhantomData<N>,
2148    }
2149    #[automatically_derived]
2150    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2151        #[inline]
2152        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2153            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2154        }
2155    }
2156    /// Instantiation and getters/setters.
2157    #[automatically_derived]
2158    impl<
2159        P: alloy_contract::private::Provider<N>,
2160        N: alloy_contract::private::Network,
2161    > IPlonkVerifierInstance<P, N> {
2162        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2163
2164See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2165        #[inline]
2166        pub const fn new(
2167            address: alloy_sol_types::private::Address,
2168            __provider: P,
2169        ) -> Self {
2170            Self {
2171                address,
2172                provider: __provider,
2173                _network: ::core::marker::PhantomData,
2174            }
2175        }
2176        /// Returns a reference to the address.
2177        #[inline]
2178        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2179            &self.address
2180        }
2181        /// Sets the address.
2182        #[inline]
2183        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2184            self.address = address;
2185        }
2186        /// Sets the address and returns `self`.
2187        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2188            self.set_address(address);
2189            self
2190        }
2191        /// Returns a reference to the provider.
2192        #[inline]
2193        pub const fn provider(&self) -> &P {
2194            &self.provider
2195        }
2196    }
2197    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2198        /// Clones the provider and returns a new instance with the cloned provider.
2199        #[inline]
2200        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2201            IPlonkVerifierInstance {
2202                address: self.address,
2203                provider: ::core::clone::Clone::clone(&self.provider),
2204                _network: ::core::marker::PhantomData,
2205            }
2206        }
2207    }
2208    /// Function calls.
2209    #[automatically_derived]
2210    impl<
2211        P: alloy_contract::private::Provider<N>,
2212        N: alloy_contract::private::Network,
2213    > IPlonkVerifierInstance<P, N> {
2214        /// Creates a new call builder using this contract instance's provider and address.
2215        ///
2216        /// Note that the call can be any function call, not just those defined in this
2217        /// contract. Prefer using the other methods for building type-safe contract calls.
2218        pub fn call_builder<C: alloy_sol_types::SolCall>(
2219            &self,
2220            call: &C,
2221        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2222            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2223        }
2224    }
2225    /// Event filters.
2226    #[automatically_derived]
2227    impl<
2228        P: alloy_contract::private::Provider<N>,
2229        N: alloy_contract::private::Network,
2230    > IPlonkVerifierInstance<P, N> {
2231        /// Creates a new event filter using this contract instance's provider and address.
2232        ///
2233        /// Note that the type can be any event, not just those defined in this contract.
2234        /// Prefer using the other methods for building type-safe event filters.
2235        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2236            &self,
2237        ) -> alloy_contract::Event<&P, E, N> {
2238            alloy_contract::Event::new_sol(&self.provider, &self.address)
2239        }
2240    }
2241}
2242///Module containing a contract's types and functions.
2243/**
2244
2245```solidity
2246library LightClient {
2247    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2248    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2249    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2250}
2251```*/
2252#[allow(
2253    non_camel_case_types,
2254    non_snake_case,
2255    clippy::pub_underscore_fields,
2256    clippy::style,
2257    clippy::empty_structs_with_brackets
2258)]
2259pub mod LightClient {
2260    use super::*;
2261    use alloy::sol_types as alloy_sol_types;
2262    #[derive(serde::Serialize, serde::Deserialize)]
2263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2264    /**```solidity
2265struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2266```*/
2267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2268    #[derive(Clone)]
2269    pub struct LightClientState {
2270        #[allow(missing_docs)]
2271        pub viewNum: u64,
2272        #[allow(missing_docs)]
2273        pub blockHeight: u64,
2274        #[allow(missing_docs)]
2275        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2276    }
2277    #[allow(
2278        non_camel_case_types,
2279        non_snake_case,
2280        clippy::pub_underscore_fields,
2281        clippy::style
2282    )]
2283    const _: () = {
2284        use alloy::sol_types as alloy_sol_types;
2285        #[doc(hidden)]
2286        #[allow(dead_code)]
2287        type UnderlyingSolTuple<'a> = (
2288            alloy::sol_types::sol_data::Uint<64>,
2289            alloy::sol_types::sol_data::Uint<64>,
2290            BN254::ScalarField,
2291        );
2292        #[doc(hidden)]
2293        type UnderlyingRustTuple<'a> = (
2294            u64,
2295            u64,
2296            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2297        );
2298        #[cfg(test)]
2299        #[allow(dead_code, unreachable_patterns)]
2300        fn _type_assertion(
2301            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2302        ) {
2303            match _t {
2304                alloy_sol_types::private::AssertTypeEq::<
2305                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2306                >(_) => {}
2307            }
2308        }
2309        #[automatically_derived]
2310        #[doc(hidden)]
2311        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2312            fn from(value: LightClientState) -> Self {
2313                (value.viewNum, value.blockHeight, value.blockCommRoot)
2314            }
2315        }
2316        #[automatically_derived]
2317        #[doc(hidden)]
2318        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2319            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2320                Self {
2321                    viewNum: tuple.0,
2322                    blockHeight: tuple.1,
2323                    blockCommRoot: tuple.2,
2324                }
2325            }
2326        }
2327        #[automatically_derived]
2328        impl alloy_sol_types::SolValue for LightClientState {
2329            type SolType = Self;
2330        }
2331        #[automatically_derived]
2332        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2333            #[inline]
2334            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2335                (
2336                    <alloy::sol_types::sol_data::Uint<
2337                        64,
2338                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2339                    <alloy::sol_types::sol_data::Uint<
2340                        64,
2341                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2342                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2343                        &self.blockCommRoot,
2344                    ),
2345                )
2346            }
2347            #[inline]
2348            fn stv_abi_encoded_size(&self) -> usize {
2349                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2350                    return size;
2351                }
2352                let tuple = <UnderlyingRustTuple<
2353                    '_,
2354                > as ::core::convert::From<Self>>::from(self.clone());
2355                <UnderlyingSolTuple<
2356                    '_,
2357                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2358            }
2359            #[inline]
2360            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2361                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2362            }
2363            #[inline]
2364            fn stv_abi_encode_packed_to(
2365                &self,
2366                out: &mut alloy_sol_types::private::Vec<u8>,
2367            ) {
2368                let tuple = <UnderlyingRustTuple<
2369                    '_,
2370                > as ::core::convert::From<Self>>::from(self.clone());
2371                <UnderlyingSolTuple<
2372                    '_,
2373                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2374            }
2375            #[inline]
2376            fn stv_abi_packed_encoded_size(&self) -> usize {
2377                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2378                    return size;
2379                }
2380                let tuple = <UnderlyingRustTuple<
2381                    '_,
2382                > as ::core::convert::From<Self>>::from(self.clone());
2383                <UnderlyingSolTuple<
2384                    '_,
2385                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2386            }
2387        }
2388        #[automatically_derived]
2389        impl alloy_sol_types::SolType for LightClientState {
2390            type RustType = Self;
2391            type Token<'a> = <UnderlyingSolTuple<
2392                'a,
2393            > as alloy_sol_types::SolType>::Token<'a>;
2394            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2395            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2396                '_,
2397            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2398            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2399                '_,
2400            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2401            #[inline]
2402            fn valid_token(token: &Self::Token<'_>) -> bool {
2403                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2404            }
2405            #[inline]
2406            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2407                let tuple = <UnderlyingSolTuple<
2408                    '_,
2409                > as alloy_sol_types::SolType>::detokenize(token);
2410                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2411            }
2412        }
2413        #[automatically_derived]
2414        impl alloy_sol_types::SolStruct for LightClientState {
2415            const NAME: &'static str = "LightClientState";
2416            #[inline]
2417            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2418                alloy_sol_types::private::Cow::Borrowed(
2419                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2420                )
2421            }
2422            #[inline]
2423            fn eip712_components() -> alloy_sol_types::private::Vec<
2424                alloy_sol_types::private::Cow<'static, str>,
2425            > {
2426                alloy_sol_types::private::Vec::new()
2427            }
2428            #[inline]
2429            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2430                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2431            }
2432            #[inline]
2433            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2434                [
2435                    <alloy::sol_types::sol_data::Uint<
2436                        64,
2437                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2438                        .0,
2439                    <alloy::sol_types::sol_data::Uint<
2440                        64,
2441                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2442                        .0,
2443                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2444                            &self.blockCommRoot,
2445                        )
2446                        .0,
2447                ]
2448                    .concat()
2449            }
2450        }
2451        #[automatically_derived]
2452        impl alloy_sol_types::EventTopic for LightClientState {
2453            #[inline]
2454            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2455                0usize
2456                    + <alloy::sol_types::sol_data::Uint<
2457                        64,
2458                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2459                        &rust.viewNum,
2460                    )
2461                    + <alloy::sol_types::sol_data::Uint<
2462                        64,
2463                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2464                        &rust.blockHeight,
2465                    )
2466                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2467                        &rust.blockCommRoot,
2468                    )
2469            }
2470            #[inline]
2471            fn encode_topic_preimage(
2472                rust: &Self::RustType,
2473                out: &mut alloy_sol_types::private::Vec<u8>,
2474            ) {
2475                out.reserve(
2476                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2477                );
2478                <alloy::sol_types::sol_data::Uint<
2479                    64,
2480                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2481                    &rust.viewNum,
2482                    out,
2483                );
2484                <alloy::sol_types::sol_data::Uint<
2485                    64,
2486                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2487                    &rust.blockHeight,
2488                    out,
2489                );
2490                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2491                    &rust.blockCommRoot,
2492                    out,
2493                );
2494            }
2495            #[inline]
2496            fn encode_topic(
2497                rust: &Self::RustType,
2498            ) -> alloy_sol_types::abi::token::WordToken {
2499                let mut out = alloy_sol_types::private::Vec::new();
2500                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2501                    rust,
2502                    &mut out,
2503                );
2504                alloy_sol_types::abi::token::WordToken(
2505                    alloy_sol_types::private::keccak256(out),
2506                )
2507            }
2508        }
2509    };
2510    #[derive(serde::Serialize, serde::Deserialize)]
2511    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2512    /**```solidity
2513struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2514```*/
2515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2516    #[derive(Clone)]
2517    pub struct StakeTableState {
2518        #[allow(missing_docs)]
2519        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2520        #[allow(missing_docs)]
2521        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2522        #[allow(missing_docs)]
2523        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2524        #[allow(missing_docs)]
2525        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2526    }
2527    #[allow(
2528        non_camel_case_types,
2529        non_snake_case,
2530        clippy::pub_underscore_fields,
2531        clippy::style
2532    )]
2533    const _: () = {
2534        use alloy::sol_types as alloy_sol_types;
2535        #[doc(hidden)]
2536        #[allow(dead_code)]
2537        type UnderlyingSolTuple<'a> = (
2538            alloy::sol_types::sol_data::Uint<256>,
2539            BN254::ScalarField,
2540            BN254::ScalarField,
2541            BN254::ScalarField,
2542        );
2543        #[doc(hidden)]
2544        type UnderlyingRustTuple<'a> = (
2545            alloy::sol_types::private::primitives::aliases::U256,
2546            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2547            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2548            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2549        );
2550        #[cfg(test)]
2551        #[allow(dead_code, unreachable_patterns)]
2552        fn _type_assertion(
2553            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2554        ) {
2555            match _t {
2556                alloy_sol_types::private::AssertTypeEq::<
2557                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2558                >(_) => {}
2559            }
2560        }
2561        #[automatically_derived]
2562        #[doc(hidden)]
2563        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2564            fn from(value: StakeTableState) -> Self {
2565                (
2566                    value.threshold,
2567                    value.blsKeyComm,
2568                    value.schnorrKeyComm,
2569                    value.amountComm,
2570                )
2571            }
2572        }
2573        #[automatically_derived]
2574        #[doc(hidden)]
2575        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2576            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2577                Self {
2578                    threshold: tuple.0,
2579                    blsKeyComm: tuple.1,
2580                    schnorrKeyComm: tuple.2,
2581                    amountComm: tuple.3,
2582                }
2583            }
2584        }
2585        #[automatically_derived]
2586        impl alloy_sol_types::SolValue for StakeTableState {
2587            type SolType = Self;
2588        }
2589        #[automatically_derived]
2590        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2591            #[inline]
2592            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2593                (
2594                    <alloy::sol_types::sol_data::Uint<
2595                        256,
2596                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2597                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2598                        &self.blsKeyComm,
2599                    ),
2600                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2601                        &self.schnorrKeyComm,
2602                    ),
2603                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2604                        &self.amountComm,
2605                    ),
2606                )
2607            }
2608            #[inline]
2609            fn stv_abi_encoded_size(&self) -> usize {
2610                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2611                    return size;
2612                }
2613                let tuple = <UnderlyingRustTuple<
2614                    '_,
2615                > as ::core::convert::From<Self>>::from(self.clone());
2616                <UnderlyingSolTuple<
2617                    '_,
2618                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2619            }
2620            #[inline]
2621            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2622                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2623            }
2624            #[inline]
2625            fn stv_abi_encode_packed_to(
2626                &self,
2627                out: &mut alloy_sol_types::private::Vec<u8>,
2628            ) {
2629                let tuple = <UnderlyingRustTuple<
2630                    '_,
2631                > as ::core::convert::From<Self>>::from(self.clone());
2632                <UnderlyingSolTuple<
2633                    '_,
2634                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2635            }
2636            #[inline]
2637            fn stv_abi_packed_encoded_size(&self) -> usize {
2638                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2639                    return size;
2640                }
2641                let tuple = <UnderlyingRustTuple<
2642                    '_,
2643                > as ::core::convert::From<Self>>::from(self.clone());
2644                <UnderlyingSolTuple<
2645                    '_,
2646                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2647            }
2648        }
2649        #[automatically_derived]
2650        impl alloy_sol_types::SolType for StakeTableState {
2651            type RustType = Self;
2652            type Token<'a> = <UnderlyingSolTuple<
2653                'a,
2654            > as alloy_sol_types::SolType>::Token<'a>;
2655            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2656            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2657                '_,
2658            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2659            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2660                '_,
2661            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2662            #[inline]
2663            fn valid_token(token: &Self::Token<'_>) -> bool {
2664                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2665            }
2666            #[inline]
2667            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2668                let tuple = <UnderlyingSolTuple<
2669                    '_,
2670                > as alloy_sol_types::SolType>::detokenize(token);
2671                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2672            }
2673        }
2674        #[automatically_derived]
2675        impl alloy_sol_types::SolStruct for StakeTableState {
2676            const NAME: &'static str = "StakeTableState";
2677            #[inline]
2678            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2679                alloy_sol_types::private::Cow::Borrowed(
2680                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2681                )
2682            }
2683            #[inline]
2684            fn eip712_components() -> alloy_sol_types::private::Vec<
2685                alloy_sol_types::private::Cow<'static, str>,
2686            > {
2687                alloy_sol_types::private::Vec::new()
2688            }
2689            #[inline]
2690            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2691                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2692            }
2693            #[inline]
2694            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2695                [
2696                    <alloy::sol_types::sol_data::Uint<
2697                        256,
2698                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2699                        .0,
2700                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2701                            &self.blsKeyComm,
2702                        )
2703                        .0,
2704                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2705                            &self.schnorrKeyComm,
2706                        )
2707                        .0,
2708                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2709                            &self.amountComm,
2710                        )
2711                        .0,
2712                ]
2713                    .concat()
2714            }
2715        }
2716        #[automatically_derived]
2717        impl alloy_sol_types::EventTopic for StakeTableState {
2718            #[inline]
2719            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2720                0usize
2721                    + <alloy::sol_types::sol_data::Uint<
2722                        256,
2723                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.threshold,
2725                    )
2726                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2727                        &rust.blsKeyComm,
2728                    )
2729                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2730                        &rust.schnorrKeyComm,
2731                    )
2732                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2733                        &rust.amountComm,
2734                    )
2735            }
2736            #[inline]
2737            fn encode_topic_preimage(
2738                rust: &Self::RustType,
2739                out: &mut alloy_sol_types::private::Vec<u8>,
2740            ) {
2741                out.reserve(
2742                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2743                );
2744                <alloy::sol_types::sol_data::Uint<
2745                    256,
2746                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2747                    &rust.threshold,
2748                    out,
2749                );
2750                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2751                    &rust.blsKeyComm,
2752                    out,
2753                );
2754                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2755                    &rust.schnorrKeyComm,
2756                    out,
2757                );
2758                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2759                    &rust.amountComm,
2760                    out,
2761                );
2762            }
2763            #[inline]
2764            fn encode_topic(
2765                rust: &Self::RustType,
2766            ) -> alloy_sol_types::abi::token::WordToken {
2767                let mut out = alloy_sol_types::private::Vec::new();
2768                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2769                    rust,
2770                    &mut out,
2771                );
2772                alloy_sol_types::abi::token::WordToken(
2773                    alloy_sol_types::private::keccak256(out),
2774                )
2775            }
2776        }
2777    };
2778    #[derive(serde::Serialize, serde::Deserialize)]
2779    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2780    /**```solidity
2781struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2782```*/
2783    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2784    #[derive(Clone)]
2785    pub struct StateHistoryCommitment {
2786        #[allow(missing_docs)]
2787        pub l1BlockHeight: u64,
2788        #[allow(missing_docs)]
2789        pub l1BlockTimestamp: u64,
2790        #[allow(missing_docs)]
2791        pub hotShotBlockHeight: u64,
2792        #[allow(missing_docs)]
2793        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2794    }
2795    #[allow(
2796        non_camel_case_types,
2797        non_snake_case,
2798        clippy::pub_underscore_fields,
2799        clippy::style
2800    )]
2801    const _: () = {
2802        use alloy::sol_types as alloy_sol_types;
2803        #[doc(hidden)]
2804        #[allow(dead_code)]
2805        type UnderlyingSolTuple<'a> = (
2806            alloy::sol_types::sol_data::Uint<64>,
2807            alloy::sol_types::sol_data::Uint<64>,
2808            alloy::sol_types::sol_data::Uint<64>,
2809            BN254::ScalarField,
2810        );
2811        #[doc(hidden)]
2812        type UnderlyingRustTuple<'a> = (
2813            u64,
2814            u64,
2815            u64,
2816            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2817        );
2818        #[cfg(test)]
2819        #[allow(dead_code, unreachable_patterns)]
2820        fn _type_assertion(
2821            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2822        ) {
2823            match _t {
2824                alloy_sol_types::private::AssertTypeEq::<
2825                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2826                >(_) => {}
2827            }
2828        }
2829        #[automatically_derived]
2830        #[doc(hidden)]
2831        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2832            fn from(value: StateHistoryCommitment) -> Self {
2833                (
2834                    value.l1BlockHeight,
2835                    value.l1BlockTimestamp,
2836                    value.hotShotBlockHeight,
2837                    value.hotShotBlockCommRoot,
2838                )
2839            }
2840        }
2841        #[automatically_derived]
2842        #[doc(hidden)]
2843        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2844            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2845                Self {
2846                    l1BlockHeight: tuple.0,
2847                    l1BlockTimestamp: tuple.1,
2848                    hotShotBlockHeight: tuple.2,
2849                    hotShotBlockCommRoot: tuple.3,
2850                }
2851            }
2852        }
2853        #[automatically_derived]
2854        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2855            type SolType = Self;
2856        }
2857        #[automatically_derived]
2858        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2859            #[inline]
2860            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2861                (
2862                    <alloy::sol_types::sol_data::Uint<
2863                        64,
2864                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2865                    <alloy::sol_types::sol_data::Uint<
2866                        64,
2867                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2868                    <alloy::sol_types::sol_data::Uint<
2869                        64,
2870                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2871                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2872                        &self.hotShotBlockCommRoot,
2873                    ),
2874                )
2875            }
2876            #[inline]
2877            fn stv_abi_encoded_size(&self) -> usize {
2878                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2879                    return size;
2880                }
2881                let tuple = <UnderlyingRustTuple<
2882                    '_,
2883                > as ::core::convert::From<Self>>::from(self.clone());
2884                <UnderlyingSolTuple<
2885                    '_,
2886                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2887            }
2888            #[inline]
2889            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2890                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2891            }
2892            #[inline]
2893            fn stv_abi_encode_packed_to(
2894                &self,
2895                out: &mut alloy_sol_types::private::Vec<u8>,
2896            ) {
2897                let tuple = <UnderlyingRustTuple<
2898                    '_,
2899                > as ::core::convert::From<Self>>::from(self.clone());
2900                <UnderlyingSolTuple<
2901                    '_,
2902                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2903            }
2904            #[inline]
2905            fn stv_abi_packed_encoded_size(&self) -> usize {
2906                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2907                    return size;
2908                }
2909                let tuple = <UnderlyingRustTuple<
2910                    '_,
2911                > as ::core::convert::From<Self>>::from(self.clone());
2912                <UnderlyingSolTuple<
2913                    '_,
2914                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2915            }
2916        }
2917        #[automatically_derived]
2918        impl alloy_sol_types::SolType for StateHistoryCommitment {
2919            type RustType = Self;
2920            type Token<'a> = <UnderlyingSolTuple<
2921                'a,
2922            > as alloy_sol_types::SolType>::Token<'a>;
2923            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2924            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2925                '_,
2926            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2927            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2928                '_,
2929            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2930            #[inline]
2931            fn valid_token(token: &Self::Token<'_>) -> bool {
2932                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2933            }
2934            #[inline]
2935            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2936                let tuple = <UnderlyingSolTuple<
2937                    '_,
2938                > as alloy_sol_types::SolType>::detokenize(token);
2939                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2940            }
2941        }
2942        #[automatically_derived]
2943        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2944            const NAME: &'static str = "StateHistoryCommitment";
2945            #[inline]
2946            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2947                alloy_sol_types::private::Cow::Borrowed(
2948                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2949                )
2950            }
2951            #[inline]
2952            fn eip712_components() -> alloy_sol_types::private::Vec<
2953                alloy_sol_types::private::Cow<'static, str>,
2954            > {
2955                alloy_sol_types::private::Vec::new()
2956            }
2957            #[inline]
2958            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2959                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2960            }
2961            #[inline]
2962            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2963                [
2964                    <alloy::sol_types::sol_data::Uint<
2965                        64,
2966                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2967                        .0,
2968                    <alloy::sol_types::sol_data::Uint<
2969                        64,
2970                    > as alloy_sol_types::SolType>::eip712_data_word(
2971                            &self.l1BlockTimestamp,
2972                        )
2973                        .0,
2974                    <alloy::sol_types::sol_data::Uint<
2975                        64,
2976                    > as alloy_sol_types::SolType>::eip712_data_word(
2977                            &self.hotShotBlockHeight,
2978                        )
2979                        .0,
2980                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2981                            &self.hotShotBlockCommRoot,
2982                        )
2983                        .0,
2984                ]
2985                    .concat()
2986            }
2987        }
2988        #[automatically_derived]
2989        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2990            #[inline]
2991            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2992                0usize
2993                    + <alloy::sol_types::sol_data::Uint<
2994                        64,
2995                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2996                        &rust.l1BlockHeight,
2997                    )
2998                    + <alloy::sol_types::sol_data::Uint<
2999                        64,
3000                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3001                        &rust.l1BlockTimestamp,
3002                    )
3003                    + <alloy::sol_types::sol_data::Uint<
3004                        64,
3005                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3006                        &rust.hotShotBlockHeight,
3007                    )
3008                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3009                        &rust.hotShotBlockCommRoot,
3010                    )
3011            }
3012            #[inline]
3013            fn encode_topic_preimage(
3014                rust: &Self::RustType,
3015                out: &mut alloy_sol_types::private::Vec<u8>,
3016            ) {
3017                out.reserve(
3018                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3019                );
3020                <alloy::sol_types::sol_data::Uint<
3021                    64,
3022                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3023                    &rust.l1BlockHeight,
3024                    out,
3025                );
3026                <alloy::sol_types::sol_data::Uint<
3027                    64,
3028                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3029                    &rust.l1BlockTimestamp,
3030                    out,
3031                );
3032                <alloy::sol_types::sol_data::Uint<
3033                    64,
3034                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3035                    &rust.hotShotBlockHeight,
3036                    out,
3037                );
3038                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3039                    &rust.hotShotBlockCommRoot,
3040                    out,
3041                );
3042            }
3043            #[inline]
3044            fn encode_topic(
3045                rust: &Self::RustType,
3046            ) -> alloy_sol_types::abi::token::WordToken {
3047                let mut out = alloy_sol_types::private::Vec::new();
3048                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3049                    rust,
3050                    &mut out,
3051                );
3052                alloy_sol_types::abi::token::WordToken(
3053                    alloy_sol_types::private::keccak256(out),
3054                )
3055            }
3056        }
3057    };
3058    use alloy::contract as alloy_contract;
3059    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3060
3061See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3062    #[inline]
3063    pub const fn new<
3064        P: alloy_contract::private::Provider<N>,
3065        N: alloy_contract::private::Network,
3066    >(
3067        address: alloy_sol_types::private::Address,
3068        __provider: P,
3069    ) -> LightClientInstance<P, N> {
3070        LightClientInstance::<P, N>::new(address, __provider)
3071    }
3072    /**A [`LightClient`](self) instance.
3073
3074Contains type-safe methods for interacting with an on-chain instance of the
3075[`LightClient`](self) contract located at a given `address`, using a given
3076provider `P`.
3077
3078If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3079documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3080be used to deploy a new instance of the contract.
3081
3082See the [module-level documentation](self) for all the available methods.*/
3083    #[derive(Clone)]
3084    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
3085        address: alloy_sol_types::private::Address,
3086        provider: P,
3087        _network: ::core::marker::PhantomData<N>,
3088    }
3089    #[automatically_derived]
3090    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
3091        #[inline]
3092        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3093            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3094        }
3095    }
3096    /// Instantiation and getters/setters.
3097    #[automatically_derived]
3098    impl<
3099        P: alloy_contract::private::Provider<N>,
3100        N: alloy_contract::private::Network,
3101    > LightClientInstance<P, N> {
3102        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3103
3104See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3105        #[inline]
3106        pub const fn new(
3107            address: alloy_sol_types::private::Address,
3108            __provider: P,
3109        ) -> Self {
3110            Self {
3111                address,
3112                provider: __provider,
3113                _network: ::core::marker::PhantomData,
3114            }
3115        }
3116        /// Returns a reference to the address.
3117        #[inline]
3118        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3119            &self.address
3120        }
3121        /// Sets the address.
3122        #[inline]
3123        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3124            self.address = address;
3125        }
3126        /// Sets the address and returns `self`.
3127        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3128            self.set_address(address);
3129            self
3130        }
3131        /// Returns a reference to the provider.
3132        #[inline]
3133        pub const fn provider(&self) -> &P {
3134            &self.provider
3135        }
3136    }
3137    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
3138        /// Clones the provider and returns a new instance with the cloned provider.
3139        #[inline]
3140        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
3141            LightClientInstance {
3142                address: self.address,
3143                provider: ::core::clone::Clone::clone(&self.provider),
3144                _network: ::core::marker::PhantomData,
3145            }
3146        }
3147    }
3148    /// Function calls.
3149    #[automatically_derived]
3150    impl<
3151        P: alloy_contract::private::Provider<N>,
3152        N: alloy_contract::private::Network,
3153    > LightClientInstance<P, N> {
3154        /// Creates a new call builder using this contract instance's provider and address.
3155        ///
3156        /// Note that the call can be any function call, not just those defined in this
3157        /// contract. Prefer using the other methods for building type-safe contract calls.
3158        pub fn call_builder<C: alloy_sol_types::SolCall>(
3159            &self,
3160            call: &C,
3161        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3162            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3163        }
3164    }
3165    /// Event filters.
3166    #[automatically_derived]
3167    impl<
3168        P: alloy_contract::private::Provider<N>,
3169        N: alloy_contract::private::Network,
3170    > LightClientInstance<P, N> {
3171        /// Creates a new event filter using this contract instance's provider and address.
3172        ///
3173        /// Note that the type can be any event, not just those defined in this contract.
3174        /// Prefer using the other methods for building type-safe event filters.
3175        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3176            &self,
3177        ) -> alloy_contract::Event<&P, E, N> {
3178            alloy_contract::Event::new_sol(&self.provider, &self.address)
3179        }
3180    }
3181}
3182/**
3183
3184Generated by the following Solidity interface...
3185```solidity
3186library BN254 {
3187    type BaseField is uint256;
3188    type ScalarField is uint256;
3189    struct G1Point {
3190        BaseField x;
3191        BaseField y;
3192    }
3193}
3194
3195library IPlonkVerifier {
3196    struct PlonkProof {
3197        BN254.G1Point wire0;
3198        BN254.G1Point wire1;
3199        BN254.G1Point wire2;
3200        BN254.G1Point wire3;
3201        BN254.G1Point wire4;
3202        BN254.G1Point prodPerm;
3203        BN254.G1Point split0;
3204        BN254.G1Point split1;
3205        BN254.G1Point split2;
3206        BN254.G1Point split3;
3207        BN254.G1Point split4;
3208        BN254.G1Point zeta;
3209        BN254.G1Point zetaOmega;
3210        BN254.ScalarField wireEval0;
3211        BN254.ScalarField wireEval1;
3212        BN254.ScalarField wireEval2;
3213        BN254.ScalarField wireEval3;
3214        BN254.ScalarField wireEval4;
3215        BN254.ScalarField sigmaEval0;
3216        BN254.ScalarField sigmaEval1;
3217        BN254.ScalarField sigmaEval2;
3218        BN254.ScalarField sigmaEval3;
3219        BN254.ScalarField prodPermZetaOmegaEval;
3220    }
3221    struct VerifyingKey {
3222        uint256 domainSize;
3223        uint256 numInputs;
3224        BN254.G1Point sigma0;
3225        BN254.G1Point sigma1;
3226        BN254.G1Point sigma2;
3227        BN254.G1Point sigma3;
3228        BN254.G1Point sigma4;
3229        BN254.G1Point q1;
3230        BN254.G1Point q2;
3231        BN254.G1Point q3;
3232        BN254.G1Point q4;
3233        BN254.G1Point qM12;
3234        BN254.G1Point qM34;
3235        BN254.G1Point qO;
3236        BN254.G1Point qC;
3237        BN254.G1Point qH1;
3238        BN254.G1Point qH2;
3239        BN254.G1Point qH3;
3240        BN254.G1Point qH4;
3241        BN254.G1Point qEcc;
3242        bytes32 g2LSB;
3243        bytes32 g2MSB;
3244    }
3245}
3246
3247library LightClient {
3248    struct LightClientState {
3249        uint64 viewNum;
3250        uint64 blockHeight;
3251        BN254.ScalarField blockCommRoot;
3252    }
3253    struct StakeTableState {
3254        uint256 threshold;
3255        BN254.ScalarField blsKeyComm;
3256        BN254.ScalarField schnorrKeyComm;
3257        BN254.ScalarField amountComm;
3258    }
3259    struct StateHistoryCommitment {
3260        uint64 l1BlockHeight;
3261        uint64 l1BlockTimestamp;
3262        uint64 hotShotBlockHeight;
3263        BN254.ScalarField hotShotBlockCommRoot;
3264    }
3265}
3266
3267interface LightClientV2Mock {
3268    error AddressEmptyCode(address target);
3269    error DeprecatedApi();
3270    error ERC1967InvalidImplementation(address implementation);
3271    error ERC1967NonPayable();
3272    error FailedInnerCall();
3273    error InsufficientSnapshotHistory();
3274    error InvalidAddress();
3275    error InvalidArgs();
3276    error InvalidHotShotBlockForCommitmentCheck();
3277    error InvalidInitialization();
3278    error InvalidMaxStateHistory();
3279    error InvalidProof();
3280    error InvalidScalar();
3281    error MissingEpochRootUpdate();
3282    error NoChangeRequired();
3283    error NotInitializing();
3284    error OutdatedState();
3285    error OwnableInvalidOwner(address owner);
3286    error OwnableUnauthorizedAccount(address account);
3287    error ProverNotPermissioned();
3288    error UUPSUnauthorizedCallContext();
3289    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3290    error WrongStakeTableUsed();
3291
3292    event Initialized(uint64 version);
3293    event NewEpoch(uint64 epoch);
3294    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3295    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3296    event PermissionedProverNotRequired();
3297    event PermissionedProverRequired(address permissionedProver);
3298    event Upgrade(address implementation);
3299    event Upgraded(address indexed implementation);
3300
3301    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3302    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3303    function blocksPerEpoch() external view returns (uint64);
3304    function currentBlockNumber() external view returns (uint256);
3305    function currentEpoch() external view returns (uint64);
3306    function disablePermissionedProverMode() external;
3307    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3308    function epochStartBlock() external view returns (uint64);
3309    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3310    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3311    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3312    function getFirstEpoch() external view returns (uint64);
3313    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3314    function getStateHistoryCount() external view returns (uint256);
3315    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3316    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3317    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3318    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3319    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3320    function isPermissionedProverEnabled() external view returns (bool);
3321    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3322    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3323    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3324    function owner() external view returns (address);
3325    function permissionedProver() external view returns (address);
3326    function proxiableUUID() external view returns (bytes32);
3327    function renounceOwnership() external;
3328    function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
3329    function setFinalizedState(LightClient.LightClientState memory state) external;
3330    function setHotShotDownSince(uint256 l1Height) external;
3331    function setHotShotUp() external;
3332    function setPermissionedProver(address prover) external;
3333    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3334    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3335    function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
3336    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3337    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3338    function stateHistoryFirstIndex() external view returns (uint64);
3339    function stateHistoryRetentionPeriod() external view returns (uint32);
3340    function transferOwnership(address newOwner) external;
3341    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3342    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3343    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3344}
3345```
3346
3347...which was generated by the following JSON ABI:
3348```json
3349[
3350  {
3351    "type": "function",
3352    "name": "UPGRADE_INTERFACE_VERSION",
3353    "inputs": [],
3354    "outputs": [
3355      {
3356        "name": "",
3357        "type": "string",
3358        "internalType": "string"
3359      }
3360    ],
3361    "stateMutability": "view"
3362  },
3363  {
3364    "type": "function",
3365    "name": "_getVk",
3366    "inputs": [],
3367    "outputs": [
3368      {
3369        "name": "vk",
3370        "type": "tuple",
3371        "internalType": "struct IPlonkVerifier.VerifyingKey",
3372        "components": [
3373          {
3374            "name": "domainSize",
3375            "type": "uint256",
3376            "internalType": "uint256"
3377          },
3378          {
3379            "name": "numInputs",
3380            "type": "uint256",
3381            "internalType": "uint256"
3382          },
3383          {
3384            "name": "sigma0",
3385            "type": "tuple",
3386            "internalType": "struct BN254.G1Point",
3387            "components": [
3388              {
3389                "name": "x",
3390                "type": "uint256",
3391                "internalType": "BN254.BaseField"
3392              },
3393              {
3394                "name": "y",
3395                "type": "uint256",
3396                "internalType": "BN254.BaseField"
3397              }
3398            ]
3399          },
3400          {
3401            "name": "sigma1",
3402            "type": "tuple",
3403            "internalType": "struct BN254.G1Point",
3404            "components": [
3405              {
3406                "name": "x",
3407                "type": "uint256",
3408                "internalType": "BN254.BaseField"
3409              },
3410              {
3411                "name": "y",
3412                "type": "uint256",
3413                "internalType": "BN254.BaseField"
3414              }
3415            ]
3416          },
3417          {
3418            "name": "sigma2",
3419            "type": "tuple",
3420            "internalType": "struct BN254.G1Point",
3421            "components": [
3422              {
3423                "name": "x",
3424                "type": "uint256",
3425                "internalType": "BN254.BaseField"
3426              },
3427              {
3428                "name": "y",
3429                "type": "uint256",
3430                "internalType": "BN254.BaseField"
3431              }
3432            ]
3433          },
3434          {
3435            "name": "sigma3",
3436            "type": "tuple",
3437            "internalType": "struct BN254.G1Point",
3438            "components": [
3439              {
3440                "name": "x",
3441                "type": "uint256",
3442                "internalType": "BN254.BaseField"
3443              },
3444              {
3445                "name": "y",
3446                "type": "uint256",
3447                "internalType": "BN254.BaseField"
3448              }
3449            ]
3450          },
3451          {
3452            "name": "sigma4",
3453            "type": "tuple",
3454            "internalType": "struct BN254.G1Point",
3455            "components": [
3456              {
3457                "name": "x",
3458                "type": "uint256",
3459                "internalType": "BN254.BaseField"
3460              },
3461              {
3462                "name": "y",
3463                "type": "uint256",
3464                "internalType": "BN254.BaseField"
3465              }
3466            ]
3467          },
3468          {
3469            "name": "q1",
3470            "type": "tuple",
3471            "internalType": "struct BN254.G1Point",
3472            "components": [
3473              {
3474                "name": "x",
3475                "type": "uint256",
3476                "internalType": "BN254.BaseField"
3477              },
3478              {
3479                "name": "y",
3480                "type": "uint256",
3481                "internalType": "BN254.BaseField"
3482              }
3483            ]
3484          },
3485          {
3486            "name": "q2",
3487            "type": "tuple",
3488            "internalType": "struct BN254.G1Point",
3489            "components": [
3490              {
3491                "name": "x",
3492                "type": "uint256",
3493                "internalType": "BN254.BaseField"
3494              },
3495              {
3496                "name": "y",
3497                "type": "uint256",
3498                "internalType": "BN254.BaseField"
3499              }
3500            ]
3501          },
3502          {
3503            "name": "q3",
3504            "type": "tuple",
3505            "internalType": "struct BN254.G1Point",
3506            "components": [
3507              {
3508                "name": "x",
3509                "type": "uint256",
3510                "internalType": "BN254.BaseField"
3511              },
3512              {
3513                "name": "y",
3514                "type": "uint256",
3515                "internalType": "BN254.BaseField"
3516              }
3517            ]
3518          },
3519          {
3520            "name": "q4",
3521            "type": "tuple",
3522            "internalType": "struct BN254.G1Point",
3523            "components": [
3524              {
3525                "name": "x",
3526                "type": "uint256",
3527                "internalType": "BN254.BaseField"
3528              },
3529              {
3530                "name": "y",
3531                "type": "uint256",
3532                "internalType": "BN254.BaseField"
3533              }
3534            ]
3535          },
3536          {
3537            "name": "qM12",
3538            "type": "tuple",
3539            "internalType": "struct BN254.G1Point",
3540            "components": [
3541              {
3542                "name": "x",
3543                "type": "uint256",
3544                "internalType": "BN254.BaseField"
3545              },
3546              {
3547                "name": "y",
3548                "type": "uint256",
3549                "internalType": "BN254.BaseField"
3550              }
3551            ]
3552          },
3553          {
3554            "name": "qM34",
3555            "type": "tuple",
3556            "internalType": "struct BN254.G1Point",
3557            "components": [
3558              {
3559                "name": "x",
3560                "type": "uint256",
3561                "internalType": "BN254.BaseField"
3562              },
3563              {
3564                "name": "y",
3565                "type": "uint256",
3566                "internalType": "BN254.BaseField"
3567              }
3568            ]
3569          },
3570          {
3571            "name": "qO",
3572            "type": "tuple",
3573            "internalType": "struct BN254.G1Point",
3574            "components": [
3575              {
3576                "name": "x",
3577                "type": "uint256",
3578                "internalType": "BN254.BaseField"
3579              },
3580              {
3581                "name": "y",
3582                "type": "uint256",
3583                "internalType": "BN254.BaseField"
3584              }
3585            ]
3586          },
3587          {
3588            "name": "qC",
3589            "type": "tuple",
3590            "internalType": "struct BN254.G1Point",
3591            "components": [
3592              {
3593                "name": "x",
3594                "type": "uint256",
3595                "internalType": "BN254.BaseField"
3596              },
3597              {
3598                "name": "y",
3599                "type": "uint256",
3600                "internalType": "BN254.BaseField"
3601              }
3602            ]
3603          },
3604          {
3605            "name": "qH1",
3606            "type": "tuple",
3607            "internalType": "struct BN254.G1Point",
3608            "components": [
3609              {
3610                "name": "x",
3611                "type": "uint256",
3612                "internalType": "BN254.BaseField"
3613              },
3614              {
3615                "name": "y",
3616                "type": "uint256",
3617                "internalType": "BN254.BaseField"
3618              }
3619            ]
3620          },
3621          {
3622            "name": "qH2",
3623            "type": "tuple",
3624            "internalType": "struct BN254.G1Point",
3625            "components": [
3626              {
3627                "name": "x",
3628                "type": "uint256",
3629                "internalType": "BN254.BaseField"
3630              },
3631              {
3632                "name": "y",
3633                "type": "uint256",
3634                "internalType": "BN254.BaseField"
3635              }
3636            ]
3637          },
3638          {
3639            "name": "qH3",
3640            "type": "tuple",
3641            "internalType": "struct BN254.G1Point",
3642            "components": [
3643              {
3644                "name": "x",
3645                "type": "uint256",
3646                "internalType": "BN254.BaseField"
3647              },
3648              {
3649                "name": "y",
3650                "type": "uint256",
3651                "internalType": "BN254.BaseField"
3652              }
3653            ]
3654          },
3655          {
3656            "name": "qH4",
3657            "type": "tuple",
3658            "internalType": "struct BN254.G1Point",
3659            "components": [
3660              {
3661                "name": "x",
3662                "type": "uint256",
3663                "internalType": "BN254.BaseField"
3664              },
3665              {
3666                "name": "y",
3667                "type": "uint256",
3668                "internalType": "BN254.BaseField"
3669              }
3670            ]
3671          },
3672          {
3673            "name": "qEcc",
3674            "type": "tuple",
3675            "internalType": "struct BN254.G1Point",
3676            "components": [
3677              {
3678                "name": "x",
3679                "type": "uint256",
3680                "internalType": "BN254.BaseField"
3681              },
3682              {
3683                "name": "y",
3684                "type": "uint256",
3685                "internalType": "BN254.BaseField"
3686              }
3687            ]
3688          },
3689          {
3690            "name": "g2LSB",
3691            "type": "bytes32",
3692            "internalType": "bytes32"
3693          },
3694          {
3695            "name": "g2MSB",
3696            "type": "bytes32",
3697            "internalType": "bytes32"
3698          }
3699        ]
3700      }
3701    ],
3702    "stateMutability": "pure"
3703  },
3704  {
3705    "type": "function",
3706    "name": "blocksPerEpoch",
3707    "inputs": [],
3708    "outputs": [
3709      {
3710        "name": "",
3711        "type": "uint64",
3712        "internalType": "uint64"
3713      }
3714    ],
3715    "stateMutability": "view"
3716  },
3717  {
3718    "type": "function",
3719    "name": "currentBlockNumber",
3720    "inputs": [],
3721    "outputs": [
3722      {
3723        "name": "",
3724        "type": "uint256",
3725        "internalType": "uint256"
3726      }
3727    ],
3728    "stateMutability": "view"
3729  },
3730  {
3731    "type": "function",
3732    "name": "currentEpoch",
3733    "inputs": [],
3734    "outputs": [
3735      {
3736        "name": "",
3737        "type": "uint64",
3738        "internalType": "uint64"
3739      }
3740    ],
3741    "stateMutability": "view"
3742  },
3743  {
3744    "type": "function",
3745    "name": "disablePermissionedProverMode",
3746    "inputs": [],
3747    "outputs": [],
3748    "stateMutability": "nonpayable"
3749  },
3750  {
3751    "type": "function",
3752    "name": "epochFromBlockNumber",
3753    "inputs": [
3754      {
3755        "name": "_blockNum",
3756        "type": "uint64",
3757        "internalType": "uint64"
3758      },
3759      {
3760        "name": "_blocksPerEpoch",
3761        "type": "uint64",
3762        "internalType": "uint64"
3763      }
3764    ],
3765    "outputs": [
3766      {
3767        "name": "",
3768        "type": "uint64",
3769        "internalType": "uint64"
3770      }
3771    ],
3772    "stateMutability": "pure"
3773  },
3774  {
3775    "type": "function",
3776    "name": "epochStartBlock",
3777    "inputs": [],
3778    "outputs": [
3779      {
3780        "name": "",
3781        "type": "uint64",
3782        "internalType": "uint64"
3783      }
3784    ],
3785    "stateMutability": "view"
3786  },
3787  {
3788    "type": "function",
3789    "name": "finalizedState",
3790    "inputs": [],
3791    "outputs": [
3792      {
3793        "name": "viewNum",
3794        "type": "uint64",
3795        "internalType": "uint64"
3796      },
3797      {
3798        "name": "blockHeight",
3799        "type": "uint64",
3800        "internalType": "uint64"
3801      },
3802      {
3803        "name": "blockCommRoot",
3804        "type": "uint256",
3805        "internalType": "BN254.ScalarField"
3806      }
3807    ],
3808    "stateMutability": "view"
3809  },
3810  {
3811    "type": "function",
3812    "name": "genesisStakeTableState",
3813    "inputs": [],
3814    "outputs": [
3815      {
3816        "name": "threshold",
3817        "type": "uint256",
3818        "internalType": "uint256"
3819      },
3820      {
3821        "name": "blsKeyComm",
3822        "type": "uint256",
3823        "internalType": "BN254.ScalarField"
3824      },
3825      {
3826        "name": "schnorrKeyComm",
3827        "type": "uint256",
3828        "internalType": "BN254.ScalarField"
3829      },
3830      {
3831        "name": "amountComm",
3832        "type": "uint256",
3833        "internalType": "BN254.ScalarField"
3834      }
3835    ],
3836    "stateMutability": "view"
3837  },
3838  {
3839    "type": "function",
3840    "name": "genesisState",
3841    "inputs": [],
3842    "outputs": [
3843      {
3844        "name": "viewNum",
3845        "type": "uint64",
3846        "internalType": "uint64"
3847      },
3848      {
3849        "name": "blockHeight",
3850        "type": "uint64",
3851        "internalType": "uint64"
3852      },
3853      {
3854        "name": "blockCommRoot",
3855        "type": "uint256",
3856        "internalType": "BN254.ScalarField"
3857      }
3858    ],
3859    "stateMutability": "view"
3860  },
3861  {
3862    "type": "function",
3863    "name": "getFirstEpoch",
3864    "inputs": [],
3865    "outputs": [
3866      {
3867        "name": "",
3868        "type": "uint64",
3869        "internalType": "uint64"
3870      }
3871    ],
3872    "stateMutability": "view"
3873  },
3874  {
3875    "type": "function",
3876    "name": "getHotShotCommitment",
3877    "inputs": [
3878      {
3879        "name": "hotShotBlockHeight",
3880        "type": "uint256",
3881        "internalType": "uint256"
3882      }
3883    ],
3884    "outputs": [
3885      {
3886        "name": "hotShotBlockCommRoot",
3887        "type": "uint256",
3888        "internalType": "BN254.ScalarField"
3889      },
3890      {
3891        "name": "hotshotBlockHeight",
3892        "type": "uint64",
3893        "internalType": "uint64"
3894      }
3895    ],
3896    "stateMutability": "view"
3897  },
3898  {
3899    "type": "function",
3900    "name": "getStateHistoryCount",
3901    "inputs": [],
3902    "outputs": [
3903      {
3904        "name": "",
3905        "type": "uint256",
3906        "internalType": "uint256"
3907      }
3908    ],
3909    "stateMutability": "view"
3910  },
3911  {
3912    "type": "function",
3913    "name": "getVersion",
3914    "inputs": [],
3915    "outputs": [
3916      {
3917        "name": "majorVersion",
3918        "type": "uint8",
3919        "internalType": "uint8"
3920      },
3921      {
3922        "name": "minorVersion",
3923        "type": "uint8",
3924        "internalType": "uint8"
3925      },
3926      {
3927        "name": "patchVersion",
3928        "type": "uint8",
3929        "internalType": "uint8"
3930      }
3931    ],
3932    "stateMutability": "pure"
3933  },
3934  {
3935    "type": "function",
3936    "name": "initialize",
3937    "inputs": [
3938      {
3939        "name": "_genesis",
3940        "type": "tuple",
3941        "internalType": "struct LightClient.LightClientState",
3942        "components": [
3943          {
3944            "name": "viewNum",
3945            "type": "uint64",
3946            "internalType": "uint64"
3947          },
3948          {
3949            "name": "blockHeight",
3950            "type": "uint64",
3951            "internalType": "uint64"
3952          },
3953          {
3954            "name": "blockCommRoot",
3955            "type": "uint256",
3956            "internalType": "BN254.ScalarField"
3957          }
3958        ]
3959      },
3960      {
3961        "name": "_genesisStakeTableState",
3962        "type": "tuple",
3963        "internalType": "struct LightClient.StakeTableState",
3964        "components": [
3965          {
3966            "name": "threshold",
3967            "type": "uint256",
3968            "internalType": "uint256"
3969          },
3970          {
3971            "name": "blsKeyComm",
3972            "type": "uint256",
3973            "internalType": "BN254.ScalarField"
3974          },
3975          {
3976            "name": "schnorrKeyComm",
3977            "type": "uint256",
3978            "internalType": "BN254.ScalarField"
3979          },
3980          {
3981            "name": "amountComm",
3982            "type": "uint256",
3983            "internalType": "BN254.ScalarField"
3984          }
3985        ]
3986      },
3987      {
3988        "name": "_stateHistoryRetentionPeriod",
3989        "type": "uint32",
3990        "internalType": "uint32"
3991      },
3992      {
3993        "name": "owner",
3994        "type": "address",
3995        "internalType": "address"
3996      }
3997    ],
3998    "outputs": [],
3999    "stateMutability": "nonpayable"
4000  },
4001  {
4002    "type": "function",
4003    "name": "initializeV2",
4004    "inputs": [
4005      {
4006        "name": "_blocksPerEpoch",
4007        "type": "uint64",
4008        "internalType": "uint64"
4009      },
4010      {
4011        "name": "_epochStartBlock",
4012        "type": "uint64",
4013        "internalType": "uint64"
4014      }
4015    ],
4016    "outputs": [],
4017    "stateMutability": "nonpayable"
4018  },
4019  {
4020    "type": "function",
4021    "name": "isEpochRoot",
4022    "inputs": [
4023      {
4024        "name": "blockHeight",
4025        "type": "uint64",
4026        "internalType": "uint64"
4027      }
4028    ],
4029    "outputs": [
4030      {
4031        "name": "",
4032        "type": "bool",
4033        "internalType": "bool"
4034      }
4035    ],
4036    "stateMutability": "view"
4037  },
4038  {
4039    "type": "function",
4040    "name": "isGtEpochRoot",
4041    "inputs": [
4042      {
4043        "name": "blockHeight",
4044        "type": "uint64",
4045        "internalType": "uint64"
4046      }
4047    ],
4048    "outputs": [
4049      {
4050        "name": "",
4051        "type": "bool",
4052        "internalType": "bool"
4053      }
4054    ],
4055    "stateMutability": "view"
4056  },
4057  {
4058    "type": "function",
4059    "name": "isPermissionedProverEnabled",
4060    "inputs": [],
4061    "outputs": [
4062      {
4063        "name": "",
4064        "type": "bool",
4065        "internalType": "bool"
4066      }
4067    ],
4068    "stateMutability": "view"
4069  },
4070  {
4071    "type": "function",
4072    "name": "lagOverEscapeHatchThreshold",
4073    "inputs": [
4074      {
4075        "name": "blockNumber",
4076        "type": "uint256",
4077        "internalType": "uint256"
4078      },
4079      {
4080        "name": "threshold",
4081        "type": "uint256",
4082        "internalType": "uint256"
4083      }
4084    ],
4085    "outputs": [
4086      {
4087        "name": "",
4088        "type": "bool",
4089        "internalType": "bool"
4090      }
4091    ],
4092    "stateMutability": "view"
4093  },
4094  {
4095    "type": "function",
4096    "name": "newFinalizedState",
4097    "inputs": [
4098      {
4099        "name": "",
4100        "type": "tuple",
4101        "internalType": "struct LightClient.LightClientState",
4102        "components": [
4103          {
4104            "name": "viewNum",
4105            "type": "uint64",
4106            "internalType": "uint64"
4107          },
4108          {
4109            "name": "blockHeight",
4110            "type": "uint64",
4111            "internalType": "uint64"
4112          },
4113          {
4114            "name": "blockCommRoot",
4115            "type": "uint256",
4116            "internalType": "BN254.ScalarField"
4117          }
4118        ]
4119      },
4120      {
4121        "name": "",
4122        "type": "tuple",
4123        "internalType": "struct IPlonkVerifier.PlonkProof",
4124        "components": [
4125          {
4126            "name": "wire0",
4127            "type": "tuple",
4128            "internalType": "struct BN254.G1Point",
4129            "components": [
4130              {
4131                "name": "x",
4132                "type": "uint256",
4133                "internalType": "BN254.BaseField"
4134              },
4135              {
4136                "name": "y",
4137                "type": "uint256",
4138                "internalType": "BN254.BaseField"
4139              }
4140            ]
4141          },
4142          {
4143            "name": "wire1",
4144            "type": "tuple",
4145            "internalType": "struct BN254.G1Point",
4146            "components": [
4147              {
4148                "name": "x",
4149                "type": "uint256",
4150                "internalType": "BN254.BaseField"
4151              },
4152              {
4153                "name": "y",
4154                "type": "uint256",
4155                "internalType": "BN254.BaseField"
4156              }
4157            ]
4158          },
4159          {
4160            "name": "wire2",
4161            "type": "tuple",
4162            "internalType": "struct BN254.G1Point",
4163            "components": [
4164              {
4165                "name": "x",
4166                "type": "uint256",
4167                "internalType": "BN254.BaseField"
4168              },
4169              {
4170                "name": "y",
4171                "type": "uint256",
4172                "internalType": "BN254.BaseField"
4173              }
4174            ]
4175          },
4176          {
4177            "name": "wire3",
4178            "type": "tuple",
4179            "internalType": "struct BN254.G1Point",
4180            "components": [
4181              {
4182                "name": "x",
4183                "type": "uint256",
4184                "internalType": "BN254.BaseField"
4185              },
4186              {
4187                "name": "y",
4188                "type": "uint256",
4189                "internalType": "BN254.BaseField"
4190              }
4191            ]
4192          },
4193          {
4194            "name": "wire4",
4195            "type": "tuple",
4196            "internalType": "struct BN254.G1Point",
4197            "components": [
4198              {
4199                "name": "x",
4200                "type": "uint256",
4201                "internalType": "BN254.BaseField"
4202              },
4203              {
4204                "name": "y",
4205                "type": "uint256",
4206                "internalType": "BN254.BaseField"
4207              }
4208            ]
4209          },
4210          {
4211            "name": "prodPerm",
4212            "type": "tuple",
4213            "internalType": "struct BN254.G1Point",
4214            "components": [
4215              {
4216                "name": "x",
4217                "type": "uint256",
4218                "internalType": "BN254.BaseField"
4219              },
4220              {
4221                "name": "y",
4222                "type": "uint256",
4223                "internalType": "BN254.BaseField"
4224              }
4225            ]
4226          },
4227          {
4228            "name": "split0",
4229            "type": "tuple",
4230            "internalType": "struct BN254.G1Point",
4231            "components": [
4232              {
4233                "name": "x",
4234                "type": "uint256",
4235                "internalType": "BN254.BaseField"
4236              },
4237              {
4238                "name": "y",
4239                "type": "uint256",
4240                "internalType": "BN254.BaseField"
4241              }
4242            ]
4243          },
4244          {
4245            "name": "split1",
4246            "type": "tuple",
4247            "internalType": "struct BN254.G1Point",
4248            "components": [
4249              {
4250                "name": "x",
4251                "type": "uint256",
4252                "internalType": "BN254.BaseField"
4253              },
4254              {
4255                "name": "y",
4256                "type": "uint256",
4257                "internalType": "BN254.BaseField"
4258              }
4259            ]
4260          },
4261          {
4262            "name": "split2",
4263            "type": "tuple",
4264            "internalType": "struct BN254.G1Point",
4265            "components": [
4266              {
4267                "name": "x",
4268                "type": "uint256",
4269                "internalType": "BN254.BaseField"
4270              },
4271              {
4272                "name": "y",
4273                "type": "uint256",
4274                "internalType": "BN254.BaseField"
4275              }
4276            ]
4277          },
4278          {
4279            "name": "split3",
4280            "type": "tuple",
4281            "internalType": "struct BN254.G1Point",
4282            "components": [
4283              {
4284                "name": "x",
4285                "type": "uint256",
4286                "internalType": "BN254.BaseField"
4287              },
4288              {
4289                "name": "y",
4290                "type": "uint256",
4291                "internalType": "BN254.BaseField"
4292              }
4293            ]
4294          },
4295          {
4296            "name": "split4",
4297            "type": "tuple",
4298            "internalType": "struct BN254.G1Point",
4299            "components": [
4300              {
4301                "name": "x",
4302                "type": "uint256",
4303                "internalType": "BN254.BaseField"
4304              },
4305              {
4306                "name": "y",
4307                "type": "uint256",
4308                "internalType": "BN254.BaseField"
4309              }
4310            ]
4311          },
4312          {
4313            "name": "zeta",
4314            "type": "tuple",
4315            "internalType": "struct BN254.G1Point",
4316            "components": [
4317              {
4318                "name": "x",
4319                "type": "uint256",
4320                "internalType": "BN254.BaseField"
4321              },
4322              {
4323                "name": "y",
4324                "type": "uint256",
4325                "internalType": "BN254.BaseField"
4326              }
4327            ]
4328          },
4329          {
4330            "name": "zetaOmega",
4331            "type": "tuple",
4332            "internalType": "struct BN254.G1Point",
4333            "components": [
4334              {
4335                "name": "x",
4336                "type": "uint256",
4337                "internalType": "BN254.BaseField"
4338              },
4339              {
4340                "name": "y",
4341                "type": "uint256",
4342                "internalType": "BN254.BaseField"
4343              }
4344            ]
4345          },
4346          {
4347            "name": "wireEval0",
4348            "type": "uint256",
4349            "internalType": "BN254.ScalarField"
4350          },
4351          {
4352            "name": "wireEval1",
4353            "type": "uint256",
4354            "internalType": "BN254.ScalarField"
4355          },
4356          {
4357            "name": "wireEval2",
4358            "type": "uint256",
4359            "internalType": "BN254.ScalarField"
4360          },
4361          {
4362            "name": "wireEval3",
4363            "type": "uint256",
4364            "internalType": "BN254.ScalarField"
4365          },
4366          {
4367            "name": "wireEval4",
4368            "type": "uint256",
4369            "internalType": "BN254.ScalarField"
4370          },
4371          {
4372            "name": "sigmaEval0",
4373            "type": "uint256",
4374            "internalType": "BN254.ScalarField"
4375          },
4376          {
4377            "name": "sigmaEval1",
4378            "type": "uint256",
4379            "internalType": "BN254.ScalarField"
4380          },
4381          {
4382            "name": "sigmaEval2",
4383            "type": "uint256",
4384            "internalType": "BN254.ScalarField"
4385          },
4386          {
4387            "name": "sigmaEval3",
4388            "type": "uint256",
4389            "internalType": "BN254.ScalarField"
4390          },
4391          {
4392            "name": "prodPermZetaOmegaEval",
4393            "type": "uint256",
4394            "internalType": "BN254.ScalarField"
4395          }
4396        ]
4397      }
4398    ],
4399    "outputs": [],
4400    "stateMutability": "pure"
4401  },
4402  {
4403    "type": "function",
4404    "name": "newFinalizedState",
4405    "inputs": [
4406      {
4407        "name": "newState",
4408        "type": "tuple",
4409        "internalType": "struct LightClient.LightClientState",
4410        "components": [
4411          {
4412            "name": "viewNum",
4413            "type": "uint64",
4414            "internalType": "uint64"
4415          },
4416          {
4417            "name": "blockHeight",
4418            "type": "uint64",
4419            "internalType": "uint64"
4420          },
4421          {
4422            "name": "blockCommRoot",
4423            "type": "uint256",
4424            "internalType": "BN254.ScalarField"
4425          }
4426        ]
4427      },
4428      {
4429        "name": "nextStakeTable",
4430        "type": "tuple",
4431        "internalType": "struct LightClient.StakeTableState",
4432        "components": [
4433          {
4434            "name": "threshold",
4435            "type": "uint256",
4436            "internalType": "uint256"
4437          },
4438          {
4439            "name": "blsKeyComm",
4440            "type": "uint256",
4441            "internalType": "BN254.ScalarField"
4442          },
4443          {
4444            "name": "schnorrKeyComm",
4445            "type": "uint256",
4446            "internalType": "BN254.ScalarField"
4447          },
4448          {
4449            "name": "amountComm",
4450            "type": "uint256",
4451            "internalType": "BN254.ScalarField"
4452          }
4453        ]
4454      },
4455      {
4456        "name": "proof",
4457        "type": "tuple",
4458        "internalType": "struct IPlonkVerifier.PlonkProof",
4459        "components": [
4460          {
4461            "name": "wire0",
4462            "type": "tuple",
4463            "internalType": "struct BN254.G1Point",
4464            "components": [
4465              {
4466                "name": "x",
4467                "type": "uint256",
4468                "internalType": "BN254.BaseField"
4469              },
4470              {
4471                "name": "y",
4472                "type": "uint256",
4473                "internalType": "BN254.BaseField"
4474              }
4475            ]
4476          },
4477          {
4478            "name": "wire1",
4479            "type": "tuple",
4480            "internalType": "struct BN254.G1Point",
4481            "components": [
4482              {
4483                "name": "x",
4484                "type": "uint256",
4485                "internalType": "BN254.BaseField"
4486              },
4487              {
4488                "name": "y",
4489                "type": "uint256",
4490                "internalType": "BN254.BaseField"
4491              }
4492            ]
4493          },
4494          {
4495            "name": "wire2",
4496            "type": "tuple",
4497            "internalType": "struct BN254.G1Point",
4498            "components": [
4499              {
4500                "name": "x",
4501                "type": "uint256",
4502                "internalType": "BN254.BaseField"
4503              },
4504              {
4505                "name": "y",
4506                "type": "uint256",
4507                "internalType": "BN254.BaseField"
4508              }
4509            ]
4510          },
4511          {
4512            "name": "wire3",
4513            "type": "tuple",
4514            "internalType": "struct BN254.G1Point",
4515            "components": [
4516              {
4517                "name": "x",
4518                "type": "uint256",
4519                "internalType": "BN254.BaseField"
4520              },
4521              {
4522                "name": "y",
4523                "type": "uint256",
4524                "internalType": "BN254.BaseField"
4525              }
4526            ]
4527          },
4528          {
4529            "name": "wire4",
4530            "type": "tuple",
4531            "internalType": "struct BN254.G1Point",
4532            "components": [
4533              {
4534                "name": "x",
4535                "type": "uint256",
4536                "internalType": "BN254.BaseField"
4537              },
4538              {
4539                "name": "y",
4540                "type": "uint256",
4541                "internalType": "BN254.BaseField"
4542              }
4543            ]
4544          },
4545          {
4546            "name": "prodPerm",
4547            "type": "tuple",
4548            "internalType": "struct BN254.G1Point",
4549            "components": [
4550              {
4551                "name": "x",
4552                "type": "uint256",
4553                "internalType": "BN254.BaseField"
4554              },
4555              {
4556                "name": "y",
4557                "type": "uint256",
4558                "internalType": "BN254.BaseField"
4559              }
4560            ]
4561          },
4562          {
4563            "name": "split0",
4564            "type": "tuple",
4565            "internalType": "struct BN254.G1Point",
4566            "components": [
4567              {
4568                "name": "x",
4569                "type": "uint256",
4570                "internalType": "BN254.BaseField"
4571              },
4572              {
4573                "name": "y",
4574                "type": "uint256",
4575                "internalType": "BN254.BaseField"
4576              }
4577            ]
4578          },
4579          {
4580            "name": "split1",
4581            "type": "tuple",
4582            "internalType": "struct BN254.G1Point",
4583            "components": [
4584              {
4585                "name": "x",
4586                "type": "uint256",
4587                "internalType": "BN254.BaseField"
4588              },
4589              {
4590                "name": "y",
4591                "type": "uint256",
4592                "internalType": "BN254.BaseField"
4593              }
4594            ]
4595          },
4596          {
4597            "name": "split2",
4598            "type": "tuple",
4599            "internalType": "struct BN254.G1Point",
4600            "components": [
4601              {
4602                "name": "x",
4603                "type": "uint256",
4604                "internalType": "BN254.BaseField"
4605              },
4606              {
4607                "name": "y",
4608                "type": "uint256",
4609                "internalType": "BN254.BaseField"
4610              }
4611            ]
4612          },
4613          {
4614            "name": "split3",
4615            "type": "tuple",
4616            "internalType": "struct BN254.G1Point",
4617            "components": [
4618              {
4619                "name": "x",
4620                "type": "uint256",
4621                "internalType": "BN254.BaseField"
4622              },
4623              {
4624                "name": "y",
4625                "type": "uint256",
4626                "internalType": "BN254.BaseField"
4627              }
4628            ]
4629          },
4630          {
4631            "name": "split4",
4632            "type": "tuple",
4633            "internalType": "struct BN254.G1Point",
4634            "components": [
4635              {
4636                "name": "x",
4637                "type": "uint256",
4638                "internalType": "BN254.BaseField"
4639              },
4640              {
4641                "name": "y",
4642                "type": "uint256",
4643                "internalType": "BN254.BaseField"
4644              }
4645            ]
4646          },
4647          {
4648            "name": "zeta",
4649            "type": "tuple",
4650            "internalType": "struct BN254.G1Point",
4651            "components": [
4652              {
4653                "name": "x",
4654                "type": "uint256",
4655                "internalType": "BN254.BaseField"
4656              },
4657              {
4658                "name": "y",
4659                "type": "uint256",
4660                "internalType": "BN254.BaseField"
4661              }
4662            ]
4663          },
4664          {
4665            "name": "zetaOmega",
4666            "type": "tuple",
4667            "internalType": "struct BN254.G1Point",
4668            "components": [
4669              {
4670                "name": "x",
4671                "type": "uint256",
4672                "internalType": "BN254.BaseField"
4673              },
4674              {
4675                "name": "y",
4676                "type": "uint256",
4677                "internalType": "BN254.BaseField"
4678              }
4679            ]
4680          },
4681          {
4682            "name": "wireEval0",
4683            "type": "uint256",
4684            "internalType": "BN254.ScalarField"
4685          },
4686          {
4687            "name": "wireEval1",
4688            "type": "uint256",
4689            "internalType": "BN254.ScalarField"
4690          },
4691          {
4692            "name": "wireEval2",
4693            "type": "uint256",
4694            "internalType": "BN254.ScalarField"
4695          },
4696          {
4697            "name": "wireEval3",
4698            "type": "uint256",
4699            "internalType": "BN254.ScalarField"
4700          },
4701          {
4702            "name": "wireEval4",
4703            "type": "uint256",
4704            "internalType": "BN254.ScalarField"
4705          },
4706          {
4707            "name": "sigmaEval0",
4708            "type": "uint256",
4709            "internalType": "BN254.ScalarField"
4710          },
4711          {
4712            "name": "sigmaEval1",
4713            "type": "uint256",
4714            "internalType": "BN254.ScalarField"
4715          },
4716          {
4717            "name": "sigmaEval2",
4718            "type": "uint256",
4719            "internalType": "BN254.ScalarField"
4720          },
4721          {
4722            "name": "sigmaEval3",
4723            "type": "uint256",
4724            "internalType": "BN254.ScalarField"
4725          },
4726          {
4727            "name": "prodPermZetaOmegaEval",
4728            "type": "uint256",
4729            "internalType": "BN254.ScalarField"
4730          }
4731        ]
4732      }
4733    ],
4734    "outputs": [],
4735    "stateMutability": "nonpayable"
4736  },
4737  {
4738    "type": "function",
4739    "name": "owner",
4740    "inputs": [],
4741    "outputs": [
4742      {
4743        "name": "",
4744        "type": "address",
4745        "internalType": "address"
4746      }
4747    ],
4748    "stateMutability": "view"
4749  },
4750  {
4751    "type": "function",
4752    "name": "permissionedProver",
4753    "inputs": [],
4754    "outputs": [
4755      {
4756        "name": "",
4757        "type": "address",
4758        "internalType": "address"
4759      }
4760    ],
4761    "stateMutability": "view"
4762  },
4763  {
4764    "type": "function",
4765    "name": "proxiableUUID",
4766    "inputs": [],
4767    "outputs": [
4768      {
4769        "name": "",
4770        "type": "bytes32",
4771        "internalType": "bytes32"
4772      }
4773    ],
4774    "stateMutability": "view"
4775  },
4776  {
4777    "type": "function",
4778    "name": "renounceOwnership",
4779    "inputs": [],
4780    "outputs": [],
4781    "stateMutability": "nonpayable"
4782  },
4783  {
4784    "type": "function",
4785    "name": "setBlocksPerEpoch",
4786    "inputs": [
4787      {
4788        "name": "newBlocksPerEpoch",
4789        "type": "uint64",
4790        "internalType": "uint64"
4791      }
4792    ],
4793    "outputs": [],
4794    "stateMutability": "nonpayable"
4795  },
4796  {
4797    "type": "function",
4798    "name": "setFinalizedState",
4799    "inputs": [
4800      {
4801        "name": "state",
4802        "type": "tuple",
4803        "internalType": "struct LightClient.LightClientState",
4804        "components": [
4805          {
4806            "name": "viewNum",
4807            "type": "uint64",
4808            "internalType": "uint64"
4809          },
4810          {
4811            "name": "blockHeight",
4812            "type": "uint64",
4813            "internalType": "uint64"
4814          },
4815          {
4816            "name": "blockCommRoot",
4817            "type": "uint256",
4818            "internalType": "BN254.ScalarField"
4819          }
4820        ]
4821      }
4822    ],
4823    "outputs": [],
4824    "stateMutability": "nonpayable"
4825  },
4826  {
4827    "type": "function",
4828    "name": "setHotShotDownSince",
4829    "inputs": [
4830      {
4831        "name": "l1Height",
4832        "type": "uint256",
4833        "internalType": "uint256"
4834      }
4835    ],
4836    "outputs": [],
4837    "stateMutability": "nonpayable"
4838  },
4839  {
4840    "type": "function",
4841    "name": "setHotShotUp",
4842    "inputs": [],
4843    "outputs": [],
4844    "stateMutability": "nonpayable"
4845  },
4846  {
4847    "type": "function",
4848    "name": "setPermissionedProver",
4849    "inputs": [
4850      {
4851        "name": "prover",
4852        "type": "address",
4853        "internalType": "address"
4854      }
4855    ],
4856    "outputs": [],
4857    "stateMutability": "nonpayable"
4858  },
4859  {
4860    "type": "function",
4861    "name": "setStateHistory",
4862    "inputs": [
4863      {
4864        "name": "_stateHistoryCommitments",
4865        "type": "tuple[]",
4866        "internalType": "struct LightClient.StateHistoryCommitment[]",
4867        "components": [
4868          {
4869            "name": "l1BlockHeight",
4870            "type": "uint64",
4871            "internalType": "uint64"
4872          },
4873          {
4874            "name": "l1BlockTimestamp",
4875            "type": "uint64",
4876            "internalType": "uint64"
4877          },
4878          {
4879            "name": "hotShotBlockHeight",
4880            "type": "uint64",
4881            "internalType": "uint64"
4882          },
4883          {
4884            "name": "hotShotBlockCommRoot",
4885            "type": "uint256",
4886            "internalType": "BN254.ScalarField"
4887          }
4888        ]
4889      }
4890    ],
4891    "outputs": [],
4892    "stateMutability": "nonpayable"
4893  },
4894  {
4895    "type": "function",
4896    "name": "setStateHistoryRetentionPeriod",
4897    "inputs": [
4898      {
4899        "name": "historySeconds",
4900        "type": "uint32",
4901        "internalType": "uint32"
4902      }
4903    ],
4904    "outputs": [],
4905    "stateMutability": "nonpayable"
4906  },
4907  {
4908    "type": "function",
4909    "name": "setVotingStakeTableState",
4910    "inputs": [
4911      {
4912        "name": "stake",
4913        "type": "tuple",
4914        "internalType": "struct LightClient.StakeTableState",
4915        "components": [
4916          {
4917            "name": "threshold",
4918            "type": "uint256",
4919            "internalType": "uint256"
4920          },
4921          {
4922            "name": "blsKeyComm",
4923            "type": "uint256",
4924            "internalType": "BN254.ScalarField"
4925          },
4926          {
4927            "name": "schnorrKeyComm",
4928            "type": "uint256",
4929            "internalType": "BN254.ScalarField"
4930          },
4931          {
4932            "name": "amountComm",
4933            "type": "uint256",
4934            "internalType": "BN254.ScalarField"
4935          }
4936        ]
4937      }
4938    ],
4939    "outputs": [],
4940    "stateMutability": "nonpayable"
4941  },
4942  {
4943    "type": "function",
4944    "name": "setstateHistoryRetentionPeriod",
4945    "inputs": [
4946      {
4947        "name": "historySeconds",
4948        "type": "uint32",
4949        "internalType": "uint32"
4950      }
4951    ],
4952    "outputs": [],
4953    "stateMutability": "nonpayable"
4954  },
4955  {
4956    "type": "function",
4957    "name": "stateHistoryCommitments",
4958    "inputs": [
4959      {
4960        "name": "",
4961        "type": "uint256",
4962        "internalType": "uint256"
4963      }
4964    ],
4965    "outputs": [
4966      {
4967        "name": "l1BlockHeight",
4968        "type": "uint64",
4969        "internalType": "uint64"
4970      },
4971      {
4972        "name": "l1BlockTimestamp",
4973        "type": "uint64",
4974        "internalType": "uint64"
4975      },
4976      {
4977        "name": "hotShotBlockHeight",
4978        "type": "uint64",
4979        "internalType": "uint64"
4980      },
4981      {
4982        "name": "hotShotBlockCommRoot",
4983        "type": "uint256",
4984        "internalType": "BN254.ScalarField"
4985      }
4986    ],
4987    "stateMutability": "view"
4988  },
4989  {
4990    "type": "function",
4991    "name": "stateHistoryFirstIndex",
4992    "inputs": [],
4993    "outputs": [
4994      {
4995        "name": "",
4996        "type": "uint64",
4997        "internalType": "uint64"
4998      }
4999    ],
5000    "stateMutability": "view"
5001  },
5002  {
5003    "type": "function",
5004    "name": "stateHistoryRetentionPeriod",
5005    "inputs": [],
5006    "outputs": [
5007      {
5008        "name": "",
5009        "type": "uint32",
5010        "internalType": "uint32"
5011      }
5012    ],
5013    "stateMutability": "view"
5014  },
5015  {
5016    "type": "function",
5017    "name": "transferOwnership",
5018    "inputs": [
5019      {
5020        "name": "newOwner",
5021        "type": "address",
5022        "internalType": "address"
5023      }
5024    ],
5025    "outputs": [],
5026    "stateMutability": "nonpayable"
5027  },
5028  {
5029    "type": "function",
5030    "name": "updateEpochStartBlock",
5031    "inputs": [
5032      {
5033        "name": "newEpochStartBlock",
5034        "type": "uint64",
5035        "internalType": "uint64"
5036      }
5037    ],
5038    "outputs": [],
5039    "stateMutability": "nonpayable"
5040  },
5041  {
5042    "type": "function",
5043    "name": "upgradeToAndCall",
5044    "inputs": [
5045      {
5046        "name": "newImplementation",
5047        "type": "address",
5048        "internalType": "address"
5049      },
5050      {
5051        "name": "data",
5052        "type": "bytes",
5053        "internalType": "bytes"
5054      }
5055    ],
5056    "outputs": [],
5057    "stateMutability": "payable"
5058  },
5059  {
5060    "type": "function",
5061    "name": "votingStakeTableState",
5062    "inputs": [],
5063    "outputs": [
5064      {
5065        "name": "threshold",
5066        "type": "uint256",
5067        "internalType": "uint256"
5068      },
5069      {
5070        "name": "blsKeyComm",
5071        "type": "uint256",
5072        "internalType": "BN254.ScalarField"
5073      },
5074      {
5075        "name": "schnorrKeyComm",
5076        "type": "uint256",
5077        "internalType": "BN254.ScalarField"
5078      },
5079      {
5080        "name": "amountComm",
5081        "type": "uint256",
5082        "internalType": "BN254.ScalarField"
5083      }
5084    ],
5085    "stateMutability": "view"
5086  },
5087  {
5088    "type": "event",
5089    "name": "Initialized",
5090    "inputs": [
5091      {
5092        "name": "version",
5093        "type": "uint64",
5094        "indexed": false,
5095        "internalType": "uint64"
5096      }
5097    ],
5098    "anonymous": false
5099  },
5100  {
5101    "type": "event",
5102    "name": "NewEpoch",
5103    "inputs": [
5104      {
5105        "name": "epoch",
5106        "type": "uint64",
5107        "indexed": false,
5108        "internalType": "uint64"
5109      }
5110    ],
5111    "anonymous": false
5112  },
5113  {
5114    "type": "event",
5115    "name": "NewState",
5116    "inputs": [
5117      {
5118        "name": "viewNum",
5119        "type": "uint64",
5120        "indexed": true,
5121        "internalType": "uint64"
5122      },
5123      {
5124        "name": "blockHeight",
5125        "type": "uint64",
5126        "indexed": true,
5127        "internalType": "uint64"
5128      },
5129      {
5130        "name": "blockCommRoot",
5131        "type": "uint256",
5132        "indexed": false,
5133        "internalType": "BN254.ScalarField"
5134      }
5135    ],
5136    "anonymous": false
5137  },
5138  {
5139    "type": "event",
5140    "name": "OwnershipTransferred",
5141    "inputs": [
5142      {
5143        "name": "previousOwner",
5144        "type": "address",
5145        "indexed": true,
5146        "internalType": "address"
5147      },
5148      {
5149        "name": "newOwner",
5150        "type": "address",
5151        "indexed": true,
5152        "internalType": "address"
5153      }
5154    ],
5155    "anonymous": false
5156  },
5157  {
5158    "type": "event",
5159    "name": "PermissionedProverNotRequired",
5160    "inputs": [],
5161    "anonymous": false
5162  },
5163  {
5164    "type": "event",
5165    "name": "PermissionedProverRequired",
5166    "inputs": [
5167      {
5168        "name": "permissionedProver",
5169        "type": "address",
5170        "indexed": false,
5171        "internalType": "address"
5172      }
5173    ],
5174    "anonymous": false
5175  },
5176  {
5177    "type": "event",
5178    "name": "Upgrade",
5179    "inputs": [
5180      {
5181        "name": "implementation",
5182        "type": "address",
5183        "indexed": false,
5184        "internalType": "address"
5185      }
5186    ],
5187    "anonymous": false
5188  },
5189  {
5190    "type": "event",
5191    "name": "Upgraded",
5192    "inputs": [
5193      {
5194        "name": "implementation",
5195        "type": "address",
5196        "indexed": true,
5197        "internalType": "address"
5198      }
5199    ],
5200    "anonymous": false
5201  },
5202  {
5203    "type": "error",
5204    "name": "AddressEmptyCode",
5205    "inputs": [
5206      {
5207        "name": "target",
5208        "type": "address",
5209        "internalType": "address"
5210      }
5211    ]
5212  },
5213  {
5214    "type": "error",
5215    "name": "DeprecatedApi",
5216    "inputs": []
5217  },
5218  {
5219    "type": "error",
5220    "name": "ERC1967InvalidImplementation",
5221    "inputs": [
5222      {
5223        "name": "implementation",
5224        "type": "address",
5225        "internalType": "address"
5226      }
5227    ]
5228  },
5229  {
5230    "type": "error",
5231    "name": "ERC1967NonPayable",
5232    "inputs": []
5233  },
5234  {
5235    "type": "error",
5236    "name": "FailedInnerCall",
5237    "inputs": []
5238  },
5239  {
5240    "type": "error",
5241    "name": "InsufficientSnapshotHistory",
5242    "inputs": []
5243  },
5244  {
5245    "type": "error",
5246    "name": "InvalidAddress",
5247    "inputs": []
5248  },
5249  {
5250    "type": "error",
5251    "name": "InvalidArgs",
5252    "inputs": []
5253  },
5254  {
5255    "type": "error",
5256    "name": "InvalidHotShotBlockForCommitmentCheck",
5257    "inputs": []
5258  },
5259  {
5260    "type": "error",
5261    "name": "InvalidInitialization",
5262    "inputs": []
5263  },
5264  {
5265    "type": "error",
5266    "name": "InvalidMaxStateHistory",
5267    "inputs": []
5268  },
5269  {
5270    "type": "error",
5271    "name": "InvalidProof",
5272    "inputs": []
5273  },
5274  {
5275    "type": "error",
5276    "name": "InvalidScalar",
5277    "inputs": []
5278  },
5279  {
5280    "type": "error",
5281    "name": "MissingEpochRootUpdate",
5282    "inputs": []
5283  },
5284  {
5285    "type": "error",
5286    "name": "NoChangeRequired",
5287    "inputs": []
5288  },
5289  {
5290    "type": "error",
5291    "name": "NotInitializing",
5292    "inputs": []
5293  },
5294  {
5295    "type": "error",
5296    "name": "OutdatedState",
5297    "inputs": []
5298  },
5299  {
5300    "type": "error",
5301    "name": "OwnableInvalidOwner",
5302    "inputs": [
5303      {
5304        "name": "owner",
5305        "type": "address",
5306        "internalType": "address"
5307      }
5308    ]
5309  },
5310  {
5311    "type": "error",
5312    "name": "OwnableUnauthorizedAccount",
5313    "inputs": [
5314      {
5315        "name": "account",
5316        "type": "address",
5317        "internalType": "address"
5318      }
5319    ]
5320  },
5321  {
5322    "type": "error",
5323    "name": "ProverNotPermissioned",
5324    "inputs": []
5325  },
5326  {
5327    "type": "error",
5328    "name": "UUPSUnauthorizedCallContext",
5329    "inputs": []
5330  },
5331  {
5332    "type": "error",
5333    "name": "UUPSUnsupportedProxiableUUID",
5334    "inputs": [
5335      {
5336        "name": "slot",
5337        "type": "bytes32",
5338        "internalType": "bytes32"
5339      }
5340    ]
5341  },
5342  {
5343    "type": "error",
5344    "name": "WrongStakeTableUsed",
5345    "inputs": []
5346  }
5347]
5348```*/
5349#[allow(
5350    non_camel_case_types,
5351    non_snake_case,
5352    clippy::pub_underscore_fields,
5353    clippy::style,
5354    clippy::empty_structs_with_brackets
5355)]
5356pub mod LightClientV2Mock {
5357    use super::*;
5358    use alloy::sol_types as alloy_sol_types;
5359    /// The creation / init bytecode of the contract.
5360    ///
5361    /// ```text
5362    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516138456100f95f395f8181611c6401528181611c8d0152611e0a01526138455ff3fe608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b506102776102723660046129f1565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a0a565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a21565b34801561036f575f5ffd5b5061027761037e366004612c38565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f1c565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c38565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a0a565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c38565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c38565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f63565b6111a6565b61027761055e366004612f7c565b6111ba565b34801561056e575f5ffd5b5061049f6111d9565b348015610582575f5ffd5b50610277610591366004613062565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111f4565b3480156105ce575f5ffd5b50610277611262565b3480156105e2575f5ffd5b506102776105f136600461307c565b611273565b348015610601575f5ffd5b506104236115a6565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a0a565b6115d0565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130c0565b6116fb565b3480156106cb575f5ffd5b506102776106da366004612f63565b61176a565b3480156106ea575f5ffd5b506102776106f93660046130e8565b6117f3565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd919061313d565b34801561079b575f5ffd5b506102776107aa3660046130c0565b611915565b3480156107ba575f5ffd5b50610423611a79565b3480156107ce575f5ffd5b506102776107dd366004613172565b611a9a565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e36600461318c565b611ae1565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc3660046129f1565b611b14565b3480156108cc575f5ffd5b506102776108db3660046131ac565b611b53565b3480156108eb575f5ffd5b5060095461049f565b6108fc611bfe565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f8612710565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611bfe565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d949190910481169281169116176116fb565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132b8565b6110fc91906132eb565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611153906001600160401b0316836132eb565b6001600160401b031615806111a05750600a5461117b906005906001600160401b0316613318565b600a546001600160401b03918216916111959116846132eb565b6001600160401b0316115b92915050565b6111ae611bfe565b6111b78161176a565b50565b6111c2611c59565b6111cb82611cfd565b6111d58282611d3e565b5050565b5f6111e2611dff565b505f5160206138195f395f51905f5290565b6111fc611bfe565b6008546001600160a01b03161561124757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61126a611bfe565b6112605f611e48565b6008546001600160a01b03161515801561129857506008546001600160a01b03163314155b156112b6576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112ef575060065460208401516001600160401b03600160401b9092048216911611155b1561130d5760405163051c46ef60e01b815260040160405180910390fd5b61131a8360400151611eb8565b6113278260200151611eb8565b6113348260400151611eb8565b6113418260600151611eb8565b5f61134a6115a6565b6020850151600a549192505f9161136a91906001600160401b03166116fb565b600a549091506001600160401b03600160801b9091048116908216106113b5576113978560200151611111565b156113b55760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114685760026113df8383613318565b6001600160401b0316106114065760405163080ae8d960e01b815260040160405180910390fd5b6114118260016132b8565b6001600160401b0316816001600160401b031614801561144a575060065461144890600160401b90046001600160401b03166110af565b155b156114685760405163080ae8d960e01b815260040160405180910390fd5b611473858585611ef9565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114d257506114d285602001516110af565b1561153c578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6115208260016132b8565b6040516001600160401b03909116815260200160405180910390a15b611547434287612070565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6876040015160405161159791815260200190565b60405180910390a35050505050565b600654600a545f916115cb916001600160401b03600160401b909204821691166116fb565b905090565b600980545f918291906115e4600183613337565b815481106115f4576115f461334a565b5f918252602090912060029091020154600160801b90046001600160401b0316841061163357604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156116f45784600982815481106116635761166361334a565b5f918252602090912060029091020154600160801b90046001600160401b031611156116ec576009818154811061169c5761169c61334a565b905f5260205f20906002020160010154600982815481106116bf576116bf61334a565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611647565b5050915091565b5f816001600160401b03165f0361171357505f6111a0565b826001600160401b03165f0361172b575060016111a0565b61173582846132eb565b6001600160401b03165f036117555761174e828461335e565b90506111a0565b61175f828461335e565b61174e9060016132b8565b611772611bfe565b610e108163ffffffff16108061179157506301e133808163ffffffff16115b806117af575060085463ffffffff600160a01b909104811690821611155b156117cd576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118375750825b90505f826001600160401b031660011480156118525750303b155b905081158015611860575080155b1561187e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118a857845460ff60401b1916600160401b1785555b6118b186612259565b6118b961226a565b6118c4898989612272565b831561190a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061195e575080546001600160401b03808416911610155b1561197c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119c4576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611a0d83856116fb565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115cb906001600160401b03600160401b8204811691166116fb565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408101516007556111b7434283612070565b600f545f9060ff16611afc57611af7838361239e565b611b0d565b8160105484611b0b9190613337565b115b9392505050565b611b1c611bfe565b6001600160a01b038116611b4a57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111b781611e48565b611b5e60095f612975565b5f5b81518110156111d5576009828281518110611b7d57611b7d61334a565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b60565b33611c307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112605760405163118cdaa760e01b8152336004820152602401611b41565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cdf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cd35f5160206138195f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112605760405163703e46dd60e11b815260040160405180910390fd5b611d05611bfe565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d98575060408051601f3d908101601f19168201909252611d959181019061338b565b60015b611dc057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b41565b5f5160206138195f395f51905f528114611df057604051632a87526960e21b815260048101829052602401611b41565b611dfa83836124f6565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112605760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111d55760405163016c173360e21b815260040160405180910390fd5b5f611f026109f0565b9050611f0c612993565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611f7c5750611f7c85602001516110af565b15611fae57602084015160e0820152604084015161010082015260608401516101208201528351610140820152611fd2565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c79061200d90859085908890600401613584565b602060405180830381865af4158015612028573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061204c91906137a4565b612069576040516309bde33960e01b815260040160405180910390fd5b5050505050565b600954158015906120e5575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106120b0576120b061334a565b5f9182526020909120600290910201546120da90600160401b90046001600160401b031684613318565b6001600160401b0316115b1561217857600854600980549091600160c01b90046001600160401b03169081106121125761211261334a565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018612152836137c3565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b61226161254b565b6111b781612594565b61126061254b565b82516001600160401b0316151580612296575060208301516001600160401b031615155b806122a357506020820151155b806122b057506040820151155b806122bd57506060820151155b806122c757508151155b806122d95750610e108163ffffffff16105b806122ed57506301e133808163ffffffff16115b1561230b576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f90438411806123af575080155b806123f95750600854600980549091600160c01b90046001600160401b03169081106123dd576123dd61334a565b5f9182526020909120600290910201546001600160401b031684105b156124175760405163b0b4387760e01b815260040160405180910390fd5b5f8080612425600185613337565b90505b816124c157600854600160c01b90046001600160401b031681106124c157866009828154811061245a5761245a61334a565b5f9182526020909120600290910201546001600160401b0316116124af57600191506009818154811061248f5761248f61334a565b5f9182526020909120600290910201546001600160401b031692506124c1565b806124b9816137ed565b915050612428565b816124df5760405163b0b4387760e01b815260040160405180910390fd5b856124ea8489613337565b11979650505050505050565b6124ff8261259c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561254357611dfa82826125ff565b6111d5612671565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661126057604051631afcd79f60e31b815260040160405180910390fd5b611b1c61254b565b806001600160a01b03163b5f036125d157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b41565b5f5160206138195f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161261b9190613802565b5f60405180830381855af49150503d805f8114612653576040519150601f19603f3d011682016040523d82523d5f602084013e612658565b606091505b5091509150612668858383612690565b95945050505050565b34156112605760405163b398979f60e01b815260040160405180910390fd5b6060826126a057611af7826126e7565b81511580156126b757506001600160a01b0384163b155b156126e057604051639996b31560e01b81526001600160a01b0385166004820152602401611b41565b5092915050565b8051156126f75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161274360405180604001604052805f81526020015f81525090565b815260200161276360405180604001604052805f81526020015f81525090565b815260200161278360405180604001604052805f81526020015f81525090565b81526020016127a360405180604001604052805f81526020015f81525090565b81526020016127c360405180604001604052805f81526020015f81525090565b81526020016127e360405180604001604052805f81526020015f81525090565b815260200161280360405180604001604052805f81526020015f81525090565b815260200161282360405180604001604052805f81526020015f81525090565b815260200161284360405180604001604052805f81526020015f81525090565b815260200161286360405180604001604052805f81526020015f81525090565b815260200161288360405180604001604052805f81526020015f81525090565b81526020016128a360405180604001604052805f81526020015f81525090565b81526020016128c360405180604001604052805f81526020015f81525090565b81526020016128e360405180604001604052805f81526020015f81525090565b815260200161290360405180604001604052805f81526020015f81525090565b815260200161292360405180604001604052805f81526020015f81525090565b815260200161294360405180604001604052805f81526020015f81525090565b815260200161296360405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20908101906111b791906129b2565b604051806101600160405280600b906020820280368337509192915050565b5b808211156129d75780546001600160c01b03191681555f60018201556002016129b3565b5090565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a01575f5ffd5b611b0d826129db565b5f60208284031215612a1a575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a53604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c48575f5ffd5b611b0d82612c22565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612c8857612c88612c51565b60405290565b604051608081016001600160401b0381118282101715612c8857612c88612c51565b604051601f8201601f191681016001600160401b0381118282101715612cd857612cd8612c51565b604052919050565b5f60608284031215612cf0575f5ffd5b604051606081016001600160401b0381118282101715612d1257612d12612c51565b604052905080612d2183612c22565b8152612d2f60208401612c22565b6020820152604092830135920191909152919050565b5f60408284031215612d55575f5ffd5b604080519081016001600160401b0381118282101715612d7757612d77612c51565b604052823581526020928301359281019290925250919050565b5f6104808284031215612da2575f5ffd5b612daa612c65565b9050612db68383612d45565b8152612dc58360408401612d45565b6020820152612dd78360808401612d45565b6040820152612de98360c08401612d45565b6060820152612dfc836101008401612d45565b6080820152612e0f836101408401612d45565b60a0820152612e22836101808401612d45565b60c0820152612e35836101c08401612d45565b60e0820152612e48836102008401612d45565b610100820152612e5c836102408401612d45565b610120820152612e70836102808401612d45565b610140820152612e84836102c08401612d45565b610160820152612e98836103008401612d45565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f2e575f5ffd5b612f388484612ce0565b9150612f478460608501612d91565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612f73575f5ffd5b611b0d82612f50565b5f5f60408385031215612f8d575f5ffd5b612f96836129db565b915060208301356001600160401b03811115612fb0575f5ffd5b8301601f81018513612fc0575f5ffd5b80356001600160401b03811115612fd957612fd9612c51565b612fec601f8201601f1916602001612cb0565b818152866020838501011115613000575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6080828403121561302f575f5ffd5b613037612c8e565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613072575f5ffd5b611b0d838361301f565b5f5f5f610560848603121561308f575f5ffd5b6130998585612ce0565b92506130a8856060860161301f565b91506130b78560e08601612d91565b90509250925092565b5f5f604083850312156130d1575f5ffd5b6130da83612c22565b9150612f4760208401612c22565b5f5f5f5f61012085870312156130fc575f5ffd5b6131068686612ce0565b9350613115866060870161301f565b925061312360e08601612f50565b915061313261010086016129db565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60608284031215613182575f5ffd5b611b0d8383612ce0565b5f5f6040838503121561319d575f5ffd5b50508035926020909101359150565b5f602082840312156131bc575f5ffd5b81356001600160401b038111156131d1575f5ffd5b8201601f810184136131e1575f5ffd5b80356001600160401b038111156131fa576131fa612c51565b61320960208260051b01612cb0565b8082825260208201915060208360071b85010192508683111561322a575f5ffd5b6020840193505b8284101561329a5760808488031215613248575f5ffd5b613250612c8e565b61325985612c22565b815261326760208601612c22565b602082015261327860408601612c22565b6040820152606085810135908201528252608090930192602090910190613231565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156111a0576111a06132a4565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613303576133036132d7565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156111a0576111a06132a4565b818103818111156111a0576111a06132a4565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613376576133766132d7565b806001600160401b0384160491505092915050565b5f6020828403121561339b575f5ffd5b5051919050565b805f5b600b8110156133c45781518452602093840193909101906001016133a5565b50505050565b6133df82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135b6604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261378e6105008301856133a2565b61379c6106608301846133ca565b949350505050565b5f602082840312156137b4575f5ffd5b81518015158114611b0d575f5ffd5b5f6001600160401b0382166001600160401b0381036137e4576137e46132a4565b60010192915050565b5f816137fb576137fb6132a4565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
5363    /// ```
5364    #[rustfmt::skip]
5365    #[allow(clippy::all)]
5366    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5367        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[`\x80Qa8Ea\0\xF9_9_\x81\x81a\x1Cd\x01R\x81\x81a\x1C\x8D\x01Ra\x1E\n\x01Ra8E_\xF3\xFE`\x80`@R`\x046\x10a\x02TW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01?W\x80c\xB3;\xC4\x91\x11a\0\xB3W\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x085W\x80c\xE003\x01\x14a\x08dW\x80c\xF0h T\x14a\x08\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x08\xA2W\x80c\xF5ga`\x14a\x08\xC1W\x80c\xF9\xE5\r\x19\x14a\x08\xE0W__\xFD[\x80c\xB3;\xC4\x91\x14a\x07\x90W\x80c\xB3\xDA\xF2T\x14a\x07\xAFW\x80c\xB5\xAD\xEA<\x14a\x07\xC3W\x80c\xC2;\x9E\x9E\x14a\x07\xE2W\x80c\xC8\xE5\xE4\x98\x14a\x08\x1AW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x04W\x80c\x8D\xA5\xCB[\x14a\x06eW\x80c\x90\xC1C\x90\x14a\x06\xA1W\x80c\x96\xC1\xCAa\x14a\x06\xC0W\x80c\x9B\xAA<\xC9\x14a\x06\xDFW\x80c\x9F\xDBT\xA7\x14a\x06\xFEW\x80c\xAD<\xB1\xCC\x14a\x07SW__\xFD[\x80cqP\x18\xA6\x14a\x05\xC3W\x80cu|7\xAD\x14a\x05\xD7W\x80cvg\x18\x08\x14a\x05\xF6W\x80c\x82nA\xFC\x14a\x06\nW\x80c\x85\x84\xD2?\x14a\x06)W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xD6W\x80cBm1\x94\x11a\x01\x9BW\x80cBm1\x94\x14a\x05\x10W\x80cC=\xBA\x9F\x14a\x051W\x80cO\x1E\xF2\x86\x14a\x05PW\x80cR\xD1\x90-\x14a\x05cW\x80cb:\x138\x14a\x05wW\x80ci\xCCj\x04\x14a\x05\xAFW__\xFD[\x80c0\x0C\x89\xDD\x14a\x04;W\x80c1=\xF7\xB1\x14a\x04ZW\x80c7\x8E\xC2;\x14a\x04\x91W\x80c<#\xB6\xDB\x14a\x04\xADW\x80c>\xD5[{\x14a\x04\xEAW__\xFD[\x80c\x16z\xC6\x18\x11a\x02\x1CW\x80c\x16z\xC6\x18\x14a\x03dW\x80c c\xD4\xF7\x14a\x03\x83W\x80c%)t'\x14a\x03\xA2W\x80c-R\xAA\xD6\x14a\x03\xD1W\x80c/y\x88\x9D\x14a\x03\xFDW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02XW\x80c\x02\xB5\x92\xF3\x14a\x02yW\x80c\x06%\xE1\x9B\x14a\x02\xD6W\x80c\r\x8En,\x14a\x03\x18W\x80c\x12\x17<,\x14a\x03CW[__\xFD[4\x80\x15a\x02cW__\xFD[Pa\x02wa\x02r6`\x04a)\xF1V[a\x08\xF4V[\0[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a*\nV[a\t\xA7V[`@Qa\x02\xCD\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\xE1W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xF8\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xCDV[4\x80\x15a\x03#W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xCDV[4\x80\x15a\x03NW__\xFD[Pa\x03Wa\t\xF0V[`@Qa\x02\xCD\x91\x90a*!V[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,8V[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/\x1CV[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,8V[a\x10\xAFV[`@Q\x90\x15\x15\x81R` \x01a\x02\xCDV[4\x80\x15a\x03\xDCW__\xFD[Pa\x02wa\x03\xEB6`\x04a*\nV[`\x0F\x80T`\xFF\x19\x16`\x01\x17\x90U`\x10UV[4\x80\x15a\x04\x08W__\xFD[P`\x08Ta\x04#\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04FW__\xFD[Pa\x03\xC1a\x04U6`\x04a,8V[a\x11\x11V[4\x80\x15a\x04eW__\xFD[P`\x08Ta\x04y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\x9CW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\xB8W__\xFD[Pa\x02wa\x04\xC76`\x04a,8V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x04\xF5W__\xFD[P`\nTa\x04#\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x1BW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xF8\x93\x92\x91\x90\x84V[4\x80\x15a\x05<W__\xFD[Pa\x02wa\x05K6`\x04a/cV[a\x11\xA6V[a\x02wa\x05^6`\x04a/|V[a\x11\xBAV[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xD9V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0bV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x05\xBAW__\xFD[Pa\x02wa\x11\xF4V[4\x80\x15a\x05\xCEW__\xFD[Pa\x02wa\x12bV[4\x80\x15a\x05\xE2W__\xFD[Pa\x02wa\x05\xF16`\x04a0|V[a\x12sV[4\x80\x15a\x06\x01W__\xFD[Pa\x04#a\x15\xA6V[4\x80\x15a\x06\x15W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xC1V[4\x80\x15a\x064W__\xFD[Pa\x06Ha\x06C6`\x04a*\nV[a\x15\xD0V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xCDV[4\x80\x15a\x06pW__\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\x04yV[4\x80\x15a\x06\xACW__\xFD[Pa\x04#a\x06\xBB6`\x04a0\xC0V[a\x16\xFBV[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/cV[a\x17jV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a0\xE8V[a\x17\xF3V[4\x80\x15a\x07\tW__\xFD[P`\x06T`\x07Ta\x07-\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\xCDV[4\x80\x15a\x07^W__\xFD[Pa\x07\x83`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xCD\x91\x90a1=V[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xC0V[a\x19\x15V[4\x80\x15a\x07\xBAW__\xFD[Pa\x04#a\x1AyV[4\x80\x15a\x07\xCEW__\xFD[Pa\x02wa\x07\xDD6`\x04a1rV[a\x1A\x9AV[4\x80\x15a\x07\xEDW__\xFD[P`\x08Ta\x08\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x08%W__\xFD[Pa\x02w`\x0F\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x08@W__\xFD[P`\x04T`\x05Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08oW__\xFD[Pa\x03\xC1a\x08~6`\x04a1\x8CV[a\x1A\xE1V[4\x80\x15a\x08\x8EW__\xFD[P`\nTa\x04#\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x08\xADW__\xFD[Pa\x02wa\x08\xBC6`\x04a)\xF1V[a\x1B\x14V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xACV[a\x1BSV[4\x80\x15a\x08\xEBW__\xFD[P`\tTa\x04\x9FV[a\x08\xFCa\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t#W`@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\tRW`@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\t\xB6W_\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\t\xF8a'\x10V[b\x01\0\0\x81R`\x0B` \x82\x01R\x7F/\xAFZ\x11>\xFD\x87\xD7X\x18\xE6?\xF9\xA6\x17\0\x07\xF2,\x89\xBB\xC4\xA8\xBD\x0F+H&\x87W\xB0\x14`@\x82\x01QR\x7F\x18Z\xEE\x05\xF8\xD3\xBA\xBF\xCEg\x93\x1F\x15\xDB9\xE6\x1F%\xF7\x94\xA4\x13M{\xEEn\x18\xC5\xAD\x1E\xC0W` `@\x83\x01Q\x01R\x7F\r\xCC\xF5\xDC\xF6g\xA3|\xA9;\x8Dr\x10\x91\xD8\xF3\xA8\x04\x9B=\x1E\x89\xA5mf\xE4'Q\xBB\xAF{^``\x82\x01QR\x7F,\xF1\tI\xFC[\xFC\xEC\xB3\xBCT\xDDA!\xE5X\x07C\x0F\x17\xF3\x04\x98\xA7\xEAj\x02`p\xB1\x91b` ``\x83\x01Q\x01R\x7F\x08\xD7\x0EN\x01\x84\xFES\xBDVo\r~\xDCL\xD7\xB0\xE39I\ts\xD0\xFA\xEC}\xAC \x89\xF58\xE5`\x80\x82\x01QR~\xF6e\xFE\x1F\xD1\x10\xD3}\x1D\xEADn\x84\0\xF0o\x06\xB9\xB5\x8A\xB3\xDF\x90\xFB\xAE|G\xEEX`A` `\x80\x83\x01Q\x01R\x7F\x08~\x14\xD7\x19$\xAC\x0F(\x80\xAD\xF0\xF1\x06\x92^Zo\xDDW\xD0 \xBB<\x8A\xA7\x0F\xA9\xFC\0\xCC\xF3`\xA0\x82\x01QR\x7F\x01\xDB~1x\xB3B\xF9\x1DT\xFC\x97,\xEErV\x9FB\x9A99\x88\xEEC\xC2\x89\xE2\xED\x96\x07qR` `\xA0\x83\x01Q\x01R\x7F\x19m\xD4-vr\x01\xF7\xF1\x96\xC4*\xAE\xF4\x85e`F1\x0FP\x83U\x95\x92\xBD\x13\x13\xE1iH\xB7`\xC0\x82\x01QR\x7F\x17\x88\x96\x80\x81\n\xAA\xBD\x1F\xF3\xACJlT\x92\x10\x05y\xE0Y\x17\x0C\xD2\xB7~+=\xA6\xD3|\xC2F` `\xC0\x83\x01Q\x01R\x7F$\x93^zw\xAC1?\xD3\xD6\x0F\xF3\xF1\xA0\xA7\x9E\xC3,}\xC5\x19\xB3\x9D\xA0\xAC\xB2\xC4\x9F6wq\xCC`\xE0\x82\x01QR\x7F\x16\x8E)B^\xF18\xCBiC\xC7SR\xF3<\x19\x0E_\x14\x88\xEBT\xA9\xE1\x1D\xEBtM\xA7\xFBk.` `\xE0\x83\x01Q\x01R\x7F\x1BX\xD5X\xB5RdS\xBD\x10(\xCA\x93\x8C\x94\x0B\xB8\x9Er?|5x|\x02\xF9\xF1y\xAE\x9A\x0C\xEAa\x01\0\x82\x01QR\x7F!\xAF\xC1!\xD9\x1D\x9D\x1C\x17\xDA\xFB\x926\xBC\x9B\x87,[C\xDF\x06L\x0B\x12\x86\x01/\xB4:v#$` a\x01\0\x83\x01Q\x01R\x7F\x10G\xFCUyM\x1EY}\xE1U\x07v\x11\xE3\xC7\x89\xA0\xA2\xBE\x02\x188!\xBB\xA5l\xF6\x1C\xC1\xB8\xEDa\x01 \x82\x01QR\x7F\x17BR2G'\xC0\xD2\xEE^P\xEBW\xA5#\x1FgGL\xEE\xD6\x93*\xD4\xFF\xE9\xBC\xF8f\xAA4(` a\x01 \x83\x01Q\x01R\x7F(\xDB(\x9AL\xFBs\xBA\x92\x96\x15r\xF3\x18R\x98\xAE6n\xD1\xA4Iq`{\xCB\xF8\x01\xF1 \xF5aa\x01@\x82\x01QR\x7F\x04\\\xFEz\xE2\xCD\x17U\x08\x17.}\x9C.\x89\x9B\xB1\xD2\x16\xDF\xC3\x1F\xE8\x9F\xC6\xC9\x17\xCA\xAE\xE8w\xA2` a\x01@\x83\x01Q\x01R\x7F\x19_.\xEC\x85Gr\x7F\xC4n\xD0\x1By\xE8\xF6f\xDE\xD6J\xE5OW\x078t\xA5\xA2G\x03\x80\xA7\x85a\x01`\x82\x01QR\x7F\x15'2.\x85\xDA\x1A\xEF\xBD\x83\x9Ee\xD1\x1D\xC6\x95\xAA\xC1k\r\xB6\xC6%\x91\xD9\x812B\xD4\x1C\xBE1` a\x01`\x83\x01Q\x01R\x7F\x10\xC8\xD7\xD75_~\x0F\x8C\0/H,\xC3\xB9\x8C\x90\xBA\xA9Ba\xC5\x9A\x17\xB4$\xEE\xCF\xE4\xE9c\xB2a\x01\x80\x82\x01QR\x7F\"r\xE3\x01xdqg\xBB\xEA\xD3\xA2\xD77\x19\x88\xF2\xE1\x98\xE6X\x15\x02\x9D\xEDLd\xBF\xC0\x85\x0F\x1F` a\x01\x80\x83\x01Q\x01R\x7F\x15\xD5n\xA7\xAB/\xA6\x12e\xF5Q\xC2\xAE%8\x9C\x8F\xE7\xBC\xB3\xBFf\x08\x08,6\xA2\x01\xF2%\xF7}a\x01\xA0\x82\x01QR\x7F\x0BXTh\x87 .rs\xD3\xD0\xC5]e\xDDa2\xCA\xC9\x8E\xBF\x04\xEF\xB1\xB5$E\xC5\x13\xC4\xA4\xDF` a\x01\xA0\x83\x01Q\x01R\x7F\x05\roCwN\x8D\xFF\xAA\x86\x8F*}\xC8/Vli\xD1u\xD8\x18\xD4Q|\xC7\n\xC5\xFC\xB2\xF1\xB1a\x01\xC0\x82\x01QR\x7F/\xFF\x87\xBF`^\x99\x83s\xBBdU?:b]\xAB\xCD\x12\x88\x86\x92\xD6x\xA8\xF4M\x13d@\xC8c` a\x01\xC0\x83\x01Q\x01R\x7F\x12\xD0\x85`\x8C`,\xFB[\x8C\x03\xEC{\xD1:\xC0\xFF\x9Ed\xA9\xAC\x1E\x9A\xA7FYJ\x03>FK\xF2a\x01\xE0\x82\x01QR\x7F\x18\xACZ56\x04.\xEB\x0B\x0C|/C\xF5\xE2\xCA;!s\xDA\xA4\xC2\x81/\xFC\xA6G\x87\xE8\xE9V\xB2` a\x01\xE0\x83\x01Q\x01R\x7F\x0F\x0F\x98\x91\xFC+y\x0Et\xDC%<\x88T\xDFc\x92\xE0\x10\xF4\xDEg`\xB8B:=\xD6\x9B\xBE]\xCEa\x02\0\x82\x01QR\x7F\x16\xBE\xD1\xD2D\xA2\xFE:\xB9\xA6R\xC7\xFE\xECVP\x16\x1D\x8Au\"}\xEC\xE7)O<\x8F\xC5B\xFDl` a\x02\0\x83\x01Q\x01R\x7F\x0F\xA3m\0g/\xA6\xA1\xC4L\xD3\xC2Y!,\x1A\xDAH\xC6k\xF7\xBB\x08_$G\x1B\x15\xB1~nQa\x02 \x82\x01QR\x7F\x18 \x88\xE5kd\x95R2F\x08\x91\xD2\xB2yvS%\x81:\xEF\x1D\xAE\x85^_IlA\x8A\xFCA` a\x02 \x83\x01Q\x01R\x7F+\xAFZ\xE2\xDD\x83.\x14I\xFA\xCCa\x1Bk\x80\xFDf\xD5\x8C\x87\x1DX'\xC5\xC8\xE2tpd\xE2\x99da\x02@\x82\x01QR\x7F)\xF5C\xB5C\x13~\x88\x18\x04\xC9\x89\xCD;\x99\x93@\x10\0\"8\xE8\xAB>\xEC\x88.\t\xD3\x06h\x1F` a\x02@\x83\x01Q\x01R\x7F-\xB0\xDD\xC7\x12;B\xF5 \xE2WFj\r\x92\xDA\x8BVO\xE0\x1E\xC6e\tl\x14\x11\x96C\x01)\x84a\x02`\x82\x01QR\x7F\x1Bz\xB2zf\x96b\x84\xD7\xFB)\xBC\xE9\xD5P\xEA\xFB\xA1lI\xFB\xC6&x'\xCD\xFC\x8D\x0B\x16\xF9O` 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[a\x10'a\x1B\xFEV[`\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\x10m\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x16\xFBV[`\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\x10\xCFWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x10\xDBWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x10\xF2\x83`\x05a2\xB8V[a\x10\xFC\x91\x90a2\xEBV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x111WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11=WP_\x91\x90PV[`\nTa\x11S\x90`\x01`\x01`@\x1B\x03\x16\x83a2\xEBV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x11\xA0WP`\nTa\x11{\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a3\x18V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11\x95\x91\x16\x84a2\xEBV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x11\xAEa\x1B\xFEV[a\x11\xB7\x81a\x17jV[PV[a\x11\xC2a\x1CYV[a\x11\xCB\x82a\x1C\xFDV[a\x11\xD5\x82\x82a\x1D>V[PPV[_a\x11\xE2a\x1D\xFFV[P_Q` a8\x19_9_Q\x90_R\x90V[a\x11\xFCa\x1B\xFEV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x12GW`\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\x12ja\x1B\xFEV[a\x12`_a\x1EHV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x12\x98WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x12\xB6W`@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\x12\xEFWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x13\rW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\x1A\x83`@\x01Qa\x1E\xB8V[a\x13'\x82` \x01Qa\x1E\xB8V[a\x134\x82`@\x01Qa\x1E\xB8V[a\x13A\x82``\x01Qa\x1E\xB8V[_a\x13Ja\x15\xA6V[` \x85\x01Q`\nT\x91\x92P_\x91a\x13j\x91\x90`\x01`\x01`@\x1B\x03\x16a\x16\xFBV[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x13\xB5Wa\x13\x97\x85` \x01Qa\x11\x11V[\x15a\x13\xB5W`@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\x14hW`\x02a\x13\xDF\x83\x83a3\x18V[`\x01`\x01`@\x1B\x03\x16\x10a\x14\x06W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\x11\x82`\x01a2\xB8V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x14JWP`\x06Ta\x14H\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x10\xAFV[\x15[\x15a\x14hW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14s\x85\x85\x85a\x1E\xF9V[\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\x14\xD2WPa\x14\xD2\x85` \x01Qa\x10\xAFV[\x15a\x15<W\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\x15 \x82`\x01a2\xB8V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x15GCB\x87a pV[\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\x15\x97\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x15\xCB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x16\xFBV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x15\xE4`\x01\x83a37V[\x81T\x81\x10a\x15\xF4Wa\x15\xF4a3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x163W`@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\x16\xF4W\x84`\t\x82\x81T\x81\x10a\x16cWa\x16ca3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x16\xECW`\t\x81\x81T\x81\x10a\x16\x9CWa\x16\x9Ca3JV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\xBFWa\x16\xBFa3JV[\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\x16GV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x17\x13WP_a\x11\xA0V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x17+WP`\x01a\x11\xA0V[a\x175\x82\x84a2\xEBV[`\x01`\x01`@\x1B\x03\x16_\x03a\x17UWa\x17N\x82\x84a3^V[\x90Pa\x11\xA0V[a\x17_\x82\x84a3^V[a\x17N\x90`\x01a2\xB8V[a\x17ra\x1B\xFEV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x17\x91WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x17\xAFWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x17\xCDW`@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\x187WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x18RWP0;\x15[\x90P\x81\x15\x80\x15a\x18`WP\x80\x15[\x15a\x18~W`@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\x18\xA8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x18\xB1\x86a\"YV[a\x18\xB9a\"jV[a\x18\xC4\x89\x89\x89a\"rV[\x83\x15a\x19\nW\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\x19^WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x19|W`@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\x19\xC4W`@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\x1A\r\x83\x85a\x16\xFBV[`\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[`\nT_\x90a\x15\xCB\x90`\x01`\x01`@\x1B\x03`\x01`@\x1B\x82\x04\x81\x16\x91\x16a\x16\xFBV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x81\x01Q`\x07Ua\x11\xB7CB\x83a pV[`\x0FT_\x90`\xFF\x16a\x1A\xFCWa\x1A\xF7\x83\x83a#\x9EV[a\x1B\rV[\x81`\x10T\x84a\x1B\x0B\x91\x90a37V[\x11[\x93\x92PPPV[a\x1B\x1Ca\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1BJW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x11\xB7\x81a\x1EHV[a\x1B^`\t_a)uV[_[\x81Q\x81\x10\x15a\x11\xD5W`\t\x82\x82\x81Q\x81\x10a\x1B}Wa\x1B}a3JV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\x1B`V[3a\x1C0\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\x12`W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1BAV[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\x1C\xDFWP\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\x1C\xD3_Q` a8\x19_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x05a\x1B\xFEV[`@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\t\x9CV[\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\x1D\x98WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\x95\x91\x81\x01\x90a3\x8BV[`\x01[a\x1D\xC0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1BAV[_Q` a8\x19_9_Q\x90_R\x81\x14a\x1D\xF0W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1BAV[a\x1D\xFA\x83\x83a$\xF6V[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\x12`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\x11\xD5W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\x02a\t\xF0V[\x90Pa\x1F\x0Ca)\x93V[\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\x1F|WPa\x1F|\x85` \x01Qa\x10\xAFV[\x15a\x1F\xAEW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1F\xD2V[`\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 \r\x90\x85\x90\x85\x90\x88\x90`\x04\x01a5\x84V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a (W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a L\x91\x90a7\xA4V[a iW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a \xE5WP`\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 \xB0Wa \xB0a3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta \xDA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a3\x18V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a!xW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a!\x12Wa!\x12a3JV[_\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!R\x83a7\xC3V[\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\"aa%KV[a\x11\xB7\x81a%\x94V[a\x12`a%KV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\"\x96WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"\xA3WP` \x82\x01Q\x15[\x80a\"\xB0WP`@\x82\x01Q\x15[\x80a\"\xBDWP``\x82\x01Q\x15[\x80a\"\xC7WP\x81Q\x15[\x80a\"\xD9WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"\xEDWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a#\x0BW`@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[`\tT_\x90C\x84\x11\x80a#\xAFWP\x80\x15[\x80a#\xF9WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\xDDWa#\xDDa3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a$\x17W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a$%`\x01\x85a37V[\x90P[\x81a$\xC1W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$\xC1W\x86`\t\x82\x81T\x81\x10a$ZWa$Za3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$\xAFW`\x01\x91P`\t\x81\x81T\x81\x10a$\x8FWa$\x8Fa3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$\xC1V[\x80a$\xB9\x81a7\xEDV[\x91PPa$(V[\x81a$\xDFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a$\xEA\x84\x89a37V[\x11\x97\x96PPPPPPPV[a$\xFF\x82a%\x9CV[`@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%CWa\x1D\xFA\x82\x82a%\xFFV[a\x11\xD5a&qV[\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\x12`W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\x1Ca%KV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\xD1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1BAV[_Q` a8\x19_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&\x1B\x91\x90a8\x02V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&SW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&XV[``\x91P[P\x91P\x91Pa&h\x85\x83\x83a&\x90V[\x95\x94PPPPPV[4\x15a\x12`W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\xA0Wa\x1A\xF7\x82a&\xE7V[\x81Q\x15\x80\x15a&\xB7WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&\xE0W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1BAV[P\x92\x91PPV[\x80Q\x15a&\xF7W\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'C`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'c`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x83`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xA3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xC3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xE3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x03`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(#`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(C`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(c`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x83`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xA3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xC3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xE3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x03`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)#`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)C`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)c`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\x11\xB7\x91\x90a)\xB2V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a)\xD7W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a)\xB3V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*\x01W__\xFD[a\x1B\r\x82a)\xDBV[_` \x82\x84\x03\x12\x15a*\x1AW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*S`@\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\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a,HW__\xFD[a\x1B\r\x82a,\"V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x88Wa,\x88a,QV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x88Wa,\x88a,QV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xD8Wa,\xD8a,QV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a,\xF0W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x12Wa-\x12a,QV[`@R\x90P\x80a-!\x83a,\"V[\x81Ra-/` \x84\x01a,\"V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-UW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-wWa-wa,QV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xA2W__\xFD[a-\xAAa,eV[\x90Pa-\xB6\x83\x83a-EV[\x81Ra-\xC5\x83`@\x84\x01a-EV[` \x82\x01Ra-\xD7\x83`\x80\x84\x01a-EV[`@\x82\x01Ra-\xE9\x83`\xC0\x84\x01a-EV[``\x82\x01Ra-\xFC\x83a\x01\0\x84\x01a-EV[`\x80\x82\x01Ra.\x0F\x83a\x01@\x84\x01a-EV[`\xA0\x82\x01Ra.\"\x83a\x01\x80\x84\x01a-EV[`\xC0\x82\x01Ra.5\x83a\x01\xC0\x84\x01a-EV[`\xE0\x82\x01Ra.H\x83a\x02\0\x84\x01a-EV[a\x01\0\x82\x01Ra.\\\x83a\x02@\x84\x01a-EV[a\x01 \x82\x01Ra.p\x83a\x02\x80\x84\x01a-EV[a\x01@\x82\x01Ra.\x84\x83a\x02\xC0\x84\x01a-EV[a\x01`\x82\x01Ra.\x98\x83a\x03\0\x84\x01a-EV[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/.W__\xFD[a/8\x84\x84a,\xE0V[\x91Pa/G\x84``\x85\x01a-\x91V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/sW__\xFD[a\x1B\r\x82a/PV[__`@\x83\x85\x03\x12\x15a/\x8DW__\xFD[a/\x96\x83a)\xDBV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xB0W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xC0W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xD9Wa/\xD9a,QV[a/\xEC`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xB0V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0\0W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0/W__\xFD[a07a,\x8EV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a0rW__\xFD[a\x1B\r\x83\x83a0\x1FV[___a\x05`\x84\x86\x03\x12\x15a0\x8FW__\xFD[a0\x99\x85\x85a,\xE0V[\x92Pa0\xA8\x85``\x86\x01a0\x1FV[\x91Pa0\xB7\x85`\xE0\x86\x01a-\x91V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a0\xD1W__\xFD[a0\xDA\x83a,\"V[\x91Pa/G` \x84\x01a,\"V[____a\x01 \x85\x87\x03\x12\x15a0\xFCW__\xFD[a1\x06\x86\x86a,\xE0V[\x93Pa1\x15\x86``\x87\x01a0\x1FV[\x92Pa1#`\xE0\x86\x01a/PV[\x91Pa12a\x01\0\x86\x01a)\xDBV[\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[_``\x82\x84\x03\x12\x15a1\x82W__\xFD[a\x1B\r\x83\x83a,\xE0V[__`@\x83\x85\x03\x12\x15a1\x9DW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xBCW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xD1W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a1\xE1W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xFAWa1\xFAa,QV[a2\t` \x82`\x05\x1B\x01a,\xB0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a2*W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\x9AW`\x80\x84\x88\x03\x12\x15a2HW__\xFD[a2Pa,\x8EV[a2Y\x85a,\"V[\x81Ra2g` \x86\x01a,\"V[` \x82\x01Ra2x`@\x86\x01a,\"V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a21V[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xA4V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x03Wa3\x03a2\xD7V[\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\x11\xA0Wa\x11\xA0a2\xA4V[\x81\x81\x03\x81\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xA4V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3vWa3va2\xD7V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\x9BW__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xC4W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xA5V[PPPPV[a3\xDF\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\x01Qa5\xB6`@\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\x01Ra7\x8Ea\x05\0\x83\x01\x85a3\xA2V[a7\x9Ca\x06`\x83\x01\x84a3\xCAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xB4W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B\rW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a7\xE4Wa7\xE4a2\xA4V[`\x01\x01\x92\x91PPV[_\x81a7\xFBWa7\xFBa2\xA4V[P_\x19\x01\x90V[_\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",
5368    );
5369    /// The runtime bytecode of the contract, as deployed on the network.
5370    ///
5371    /// ```text
5372    ///0x608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b506102776102723660046129f1565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a0a565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a21565b34801561036f575f5ffd5b5061027761037e366004612c38565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f1c565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c38565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a0a565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c38565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c38565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f63565b6111a6565b61027761055e366004612f7c565b6111ba565b34801561056e575f5ffd5b5061049f6111d9565b348015610582575f5ffd5b50610277610591366004613062565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111f4565b3480156105ce575f5ffd5b50610277611262565b3480156105e2575f5ffd5b506102776105f136600461307c565b611273565b348015610601575f5ffd5b506104236115a6565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a0a565b6115d0565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130c0565b6116fb565b3480156106cb575f5ffd5b506102776106da366004612f63565b61176a565b3480156106ea575f5ffd5b506102776106f93660046130e8565b6117f3565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd919061313d565b34801561079b575f5ffd5b506102776107aa3660046130c0565b611915565b3480156107ba575f5ffd5b50610423611a79565b3480156107ce575f5ffd5b506102776107dd366004613172565b611a9a565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e36600461318c565b611ae1565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc3660046129f1565b611b14565b3480156108cc575f5ffd5b506102776108db3660046131ac565b611b53565b3480156108eb575f5ffd5b5060095461049f565b6108fc611bfe565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f8612710565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611bfe565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d949190910481169281169116176116fb565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132b8565b6110fc91906132eb565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611153906001600160401b0316836132eb565b6001600160401b031615806111a05750600a5461117b906005906001600160401b0316613318565b600a546001600160401b03918216916111959116846132eb565b6001600160401b0316115b92915050565b6111ae611bfe565b6111b78161176a565b50565b6111c2611c59565b6111cb82611cfd565b6111d58282611d3e565b5050565b5f6111e2611dff565b505f5160206138195f395f51905f5290565b6111fc611bfe565b6008546001600160a01b03161561124757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61126a611bfe565b6112605f611e48565b6008546001600160a01b03161515801561129857506008546001600160a01b03163314155b156112b6576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112ef575060065460208401516001600160401b03600160401b9092048216911611155b1561130d5760405163051c46ef60e01b815260040160405180910390fd5b61131a8360400151611eb8565b6113278260200151611eb8565b6113348260400151611eb8565b6113418260600151611eb8565b5f61134a6115a6565b6020850151600a549192505f9161136a91906001600160401b03166116fb565b600a549091506001600160401b03600160801b9091048116908216106113b5576113978560200151611111565b156113b55760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114685760026113df8383613318565b6001600160401b0316106114065760405163080ae8d960e01b815260040160405180910390fd5b6114118260016132b8565b6001600160401b0316816001600160401b031614801561144a575060065461144890600160401b90046001600160401b03166110af565b155b156114685760405163080ae8d960e01b815260040160405180910390fd5b611473858585611ef9565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114d257506114d285602001516110af565b1561153c578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6115208260016132b8565b6040516001600160401b03909116815260200160405180910390a15b611547434287612070565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6876040015160405161159791815260200190565b60405180910390a35050505050565b600654600a545f916115cb916001600160401b03600160401b909204821691166116fb565b905090565b600980545f918291906115e4600183613337565b815481106115f4576115f461334a565b5f918252602090912060029091020154600160801b90046001600160401b0316841061163357604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156116f45784600982815481106116635761166361334a565b5f918252602090912060029091020154600160801b90046001600160401b031611156116ec576009818154811061169c5761169c61334a565b905f5260205f20906002020160010154600982815481106116bf576116bf61334a565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611647565b5050915091565b5f816001600160401b03165f0361171357505f6111a0565b826001600160401b03165f0361172b575060016111a0565b61173582846132eb565b6001600160401b03165f036117555761174e828461335e565b90506111a0565b61175f828461335e565b61174e9060016132b8565b611772611bfe565b610e108163ffffffff16108061179157506301e133808163ffffffff16115b806117af575060085463ffffffff600160a01b909104811690821611155b156117cd576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118375750825b90505f826001600160401b031660011480156118525750303b155b905081158015611860575080155b1561187e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118a857845460ff60401b1916600160401b1785555b6118b186612259565b6118b961226a565b6118c4898989612272565b831561190a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061195e575080546001600160401b03808416911610155b1561197c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119c4576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611a0d83856116fb565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115cb906001600160401b03600160401b8204811691166116fb565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408101516007556111b7434283612070565b600f545f9060ff16611afc57611af7838361239e565b611b0d565b8160105484611b0b9190613337565b115b9392505050565b611b1c611bfe565b6001600160a01b038116611b4a57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111b781611e48565b611b5e60095f612975565b5f5b81518110156111d5576009828281518110611b7d57611b7d61334a565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b60565b33611c307f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112605760405163118cdaa760e01b8152336004820152602401611b41565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cdf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cd35f5160206138195f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112605760405163703e46dd60e11b815260040160405180910390fd5b611d05611bfe565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d98575060408051601f3d908101601f19168201909252611d959181019061338b565b60015b611dc057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b41565b5f5160206138195f395f51905f528114611df057604051632a87526960e21b815260048101829052602401611b41565b611dfa83836124f6565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112605760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111d55760405163016c173360e21b815260040160405180910390fd5b5f611f026109f0565b9050611f0c612993565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611f7c5750611f7c85602001516110af565b15611fae57602084015160e0820152604084015161010082015260608401516101208201528351610140820152611fd2565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c79061200d90859085908890600401613584565b602060405180830381865af4158015612028573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061204c91906137a4565b612069576040516309bde33960e01b815260040160405180910390fd5b5050505050565b600954158015906120e5575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106120b0576120b061334a565b5f9182526020909120600290910201546120da90600160401b90046001600160401b031684613318565b6001600160401b0316115b1561217857600854600980549091600160c01b90046001600160401b03169081106121125761211261334a565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018612152836137c3565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b61226161254b565b6111b781612594565b61126061254b565b82516001600160401b0316151580612296575060208301516001600160401b031615155b806122a357506020820151155b806122b057506040820151155b806122bd57506060820151155b806122c757508151155b806122d95750610e108163ffffffff16105b806122ed57506301e133808163ffffffff16115b1561230b576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f90438411806123af575080155b806123f95750600854600980549091600160c01b90046001600160401b03169081106123dd576123dd61334a565b5f9182526020909120600290910201546001600160401b031684105b156124175760405163b0b4387760e01b815260040160405180910390fd5b5f8080612425600185613337565b90505b816124c157600854600160c01b90046001600160401b031681106124c157866009828154811061245a5761245a61334a565b5f9182526020909120600290910201546001600160401b0316116124af57600191506009818154811061248f5761248f61334a565b5f9182526020909120600290910201546001600160401b031692506124c1565b806124b9816137ed565b915050612428565b816124df5760405163b0b4387760e01b815260040160405180910390fd5b856124ea8489613337565b11979650505050505050565b6124ff8261259c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561254357611dfa82826125ff565b6111d5612671565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661126057604051631afcd79f60e31b815260040160405180910390fd5b611b1c61254b565b806001600160a01b03163b5f036125d157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b41565b5f5160206138195f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161261b9190613802565b5f60405180830381855af49150503d805f8114612653576040519150601f19603f3d011682016040523d82523d5f602084013e612658565b606091505b5091509150612668858383612690565b95945050505050565b34156112605760405163b398979f60e01b815260040160405180910390fd5b6060826126a057611af7826126e7565b81511580156126b757506001600160a01b0384163b155b156126e057604051639996b31560e01b81526001600160a01b0385166004820152602401611b41565b5092915050565b8051156126f75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161274360405180604001604052805f81526020015f81525090565b815260200161276360405180604001604052805f81526020015f81525090565b815260200161278360405180604001604052805f81526020015f81525090565b81526020016127a360405180604001604052805f81526020015f81525090565b81526020016127c360405180604001604052805f81526020015f81525090565b81526020016127e360405180604001604052805f81526020015f81525090565b815260200161280360405180604001604052805f81526020015f81525090565b815260200161282360405180604001604052805f81526020015f81525090565b815260200161284360405180604001604052805f81526020015f81525090565b815260200161286360405180604001604052805f81526020015f81525090565b815260200161288360405180604001604052805f81526020015f81525090565b81526020016128a360405180604001604052805f81526020015f81525090565b81526020016128c360405180604001604052805f81526020015f81525090565b81526020016128e360405180604001604052805f81526020015f81525090565b815260200161290360405180604001604052805f81526020015f81525090565b815260200161292360405180604001604052805f81526020015f81525090565b815260200161294360405180604001604052805f81526020015f81525090565b815260200161296360405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20908101906111b791906129b2565b604051806101600160405280600b906020820280368337509192915050565b5b808211156129d75780546001600160c01b03191681555f60018201556002016129b3565b5090565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a01575f5ffd5b611b0d826129db565b5f60208284031215612a1a575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a53604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c48575f5ffd5b611b0d82612c22565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612c8857612c88612c51565b60405290565b604051608081016001600160401b0381118282101715612c8857612c88612c51565b604051601f8201601f191681016001600160401b0381118282101715612cd857612cd8612c51565b604052919050565b5f60608284031215612cf0575f5ffd5b604051606081016001600160401b0381118282101715612d1257612d12612c51565b604052905080612d2183612c22565b8152612d2f60208401612c22565b6020820152604092830135920191909152919050565b5f60408284031215612d55575f5ffd5b604080519081016001600160401b0381118282101715612d7757612d77612c51565b604052823581526020928301359281019290925250919050565b5f6104808284031215612da2575f5ffd5b612daa612c65565b9050612db68383612d45565b8152612dc58360408401612d45565b6020820152612dd78360808401612d45565b6040820152612de98360c08401612d45565b6060820152612dfc836101008401612d45565b6080820152612e0f836101408401612d45565b60a0820152612e22836101808401612d45565b60c0820152612e35836101c08401612d45565b60e0820152612e48836102008401612d45565b610100820152612e5c836102408401612d45565b610120820152612e70836102808401612d45565b610140820152612e84836102c08401612d45565b610160820152612e98836103008401612d45565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f2e575f5ffd5b612f388484612ce0565b9150612f478460608501612d91565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612f73575f5ffd5b611b0d82612f50565b5f5f60408385031215612f8d575f5ffd5b612f96836129db565b915060208301356001600160401b03811115612fb0575f5ffd5b8301601f81018513612fc0575f5ffd5b80356001600160401b03811115612fd957612fd9612c51565b612fec601f8201601f1916602001612cb0565b818152866020838501011115613000575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6080828403121561302f575f5ffd5b613037612c8e565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613072575f5ffd5b611b0d838361301f565b5f5f5f610560848603121561308f575f5ffd5b6130998585612ce0565b92506130a8856060860161301f565b91506130b78560e08601612d91565b90509250925092565b5f5f604083850312156130d1575f5ffd5b6130da83612c22565b9150612f4760208401612c22565b5f5f5f5f61012085870312156130fc575f5ffd5b6131068686612ce0565b9350613115866060870161301f565b925061312360e08601612f50565b915061313261010086016129db565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60608284031215613182575f5ffd5b611b0d8383612ce0565b5f5f6040838503121561319d575f5ffd5b50508035926020909101359150565b5f602082840312156131bc575f5ffd5b81356001600160401b038111156131d1575f5ffd5b8201601f810184136131e1575f5ffd5b80356001600160401b038111156131fa576131fa612c51565b61320960208260051b01612cb0565b8082825260208201915060208360071b85010192508683111561322a575f5ffd5b6020840193505b8284101561329a5760808488031215613248575f5ffd5b613250612c8e565b61325985612c22565b815261326760208601612c22565b602082015261327860408601612c22565b6040820152606085810135908201528252608090930192602090910190613231565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156111a0576111a06132a4565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613303576133036132d7565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156111a0576111a06132a4565b818103818111156111a0576111a06132a4565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613376576133766132d7565b806001600160401b0384160491505092915050565b5f6020828403121561339b575f5ffd5b5051919050565b805f5b600b8110156133c45781518452602093840193909101906001016133a5565b50505050565b6133df82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135b6604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261378e6105008301856133a2565b61379c6106608301846133ca565b949350505050565b5f602082840312156137b4575f5ffd5b81518015158114611b0d575f5ffd5b5f6001600160401b0382166001600160401b0381036137e4576137e46132a4565b60010192915050565b5f816137fb576137fb6132a4565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
5373    /// ```
5374    #[rustfmt::skip]
5375    #[allow(clippy::all)]
5376    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5377        b"`\x80`@R`\x046\x10a\x02TW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01?W\x80c\xB3;\xC4\x91\x11a\0\xB3W\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x085W\x80c\xE003\x01\x14a\x08dW\x80c\xF0h T\x14a\x08\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x08\xA2W\x80c\xF5ga`\x14a\x08\xC1W\x80c\xF9\xE5\r\x19\x14a\x08\xE0W__\xFD[\x80c\xB3;\xC4\x91\x14a\x07\x90W\x80c\xB3\xDA\xF2T\x14a\x07\xAFW\x80c\xB5\xAD\xEA<\x14a\x07\xC3W\x80c\xC2;\x9E\x9E\x14a\x07\xE2W\x80c\xC8\xE5\xE4\x98\x14a\x08\x1AW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x04W\x80c\x8D\xA5\xCB[\x14a\x06eW\x80c\x90\xC1C\x90\x14a\x06\xA1W\x80c\x96\xC1\xCAa\x14a\x06\xC0W\x80c\x9B\xAA<\xC9\x14a\x06\xDFW\x80c\x9F\xDBT\xA7\x14a\x06\xFEW\x80c\xAD<\xB1\xCC\x14a\x07SW__\xFD[\x80cqP\x18\xA6\x14a\x05\xC3W\x80cu|7\xAD\x14a\x05\xD7W\x80cvg\x18\x08\x14a\x05\xF6W\x80c\x82nA\xFC\x14a\x06\nW\x80c\x85\x84\xD2?\x14a\x06)W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xD6W\x80cBm1\x94\x11a\x01\x9BW\x80cBm1\x94\x14a\x05\x10W\x80cC=\xBA\x9F\x14a\x051W\x80cO\x1E\xF2\x86\x14a\x05PW\x80cR\xD1\x90-\x14a\x05cW\x80cb:\x138\x14a\x05wW\x80ci\xCCj\x04\x14a\x05\xAFW__\xFD[\x80c0\x0C\x89\xDD\x14a\x04;W\x80c1=\xF7\xB1\x14a\x04ZW\x80c7\x8E\xC2;\x14a\x04\x91W\x80c<#\xB6\xDB\x14a\x04\xADW\x80c>\xD5[{\x14a\x04\xEAW__\xFD[\x80c\x16z\xC6\x18\x11a\x02\x1CW\x80c\x16z\xC6\x18\x14a\x03dW\x80c c\xD4\xF7\x14a\x03\x83W\x80c%)t'\x14a\x03\xA2W\x80c-R\xAA\xD6\x14a\x03\xD1W\x80c/y\x88\x9D\x14a\x03\xFDW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02XW\x80c\x02\xB5\x92\xF3\x14a\x02yW\x80c\x06%\xE1\x9B\x14a\x02\xD6W\x80c\r\x8En,\x14a\x03\x18W\x80c\x12\x17<,\x14a\x03CW[__\xFD[4\x80\x15a\x02cW__\xFD[Pa\x02wa\x02r6`\x04a)\xF1V[a\x08\xF4V[\0[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a*\nV[a\t\xA7V[`@Qa\x02\xCD\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\xE1W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xF8\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xCDV[4\x80\x15a\x03#W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xCDV[4\x80\x15a\x03NW__\xFD[Pa\x03Wa\t\xF0V[`@Qa\x02\xCD\x91\x90a*!V[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,8V[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/\x1CV[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,8V[a\x10\xAFV[`@Q\x90\x15\x15\x81R` \x01a\x02\xCDV[4\x80\x15a\x03\xDCW__\xFD[Pa\x02wa\x03\xEB6`\x04a*\nV[`\x0F\x80T`\xFF\x19\x16`\x01\x17\x90U`\x10UV[4\x80\x15a\x04\x08W__\xFD[P`\x08Ta\x04#\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04FW__\xFD[Pa\x03\xC1a\x04U6`\x04a,8V[a\x11\x11V[4\x80\x15a\x04eW__\xFD[P`\x08Ta\x04y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\x9CW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\xB8W__\xFD[Pa\x02wa\x04\xC76`\x04a,8V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x04\xF5W__\xFD[P`\nTa\x04#\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x1BW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xF8\x93\x92\x91\x90\x84V[4\x80\x15a\x05<W__\xFD[Pa\x02wa\x05K6`\x04a/cV[a\x11\xA6V[a\x02wa\x05^6`\x04a/|V[a\x11\xBAV[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xD9V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0bV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x05\xBAW__\xFD[Pa\x02wa\x11\xF4V[4\x80\x15a\x05\xCEW__\xFD[Pa\x02wa\x12bV[4\x80\x15a\x05\xE2W__\xFD[Pa\x02wa\x05\xF16`\x04a0|V[a\x12sV[4\x80\x15a\x06\x01W__\xFD[Pa\x04#a\x15\xA6V[4\x80\x15a\x06\x15W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xC1V[4\x80\x15a\x064W__\xFD[Pa\x06Ha\x06C6`\x04a*\nV[a\x15\xD0V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xCDV[4\x80\x15a\x06pW__\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\x04yV[4\x80\x15a\x06\xACW__\xFD[Pa\x04#a\x06\xBB6`\x04a0\xC0V[a\x16\xFBV[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/cV[a\x17jV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a0\xE8V[a\x17\xF3V[4\x80\x15a\x07\tW__\xFD[P`\x06T`\x07Ta\x07-\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\xCDV[4\x80\x15a\x07^W__\xFD[Pa\x07\x83`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xCD\x91\x90a1=V[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xC0V[a\x19\x15V[4\x80\x15a\x07\xBAW__\xFD[Pa\x04#a\x1AyV[4\x80\x15a\x07\xCEW__\xFD[Pa\x02wa\x07\xDD6`\x04a1rV[a\x1A\x9AV[4\x80\x15a\x07\xEDW__\xFD[P`\x08Ta\x08\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x08%W__\xFD[Pa\x02w`\x0F\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x08@W__\xFD[P`\x04T`\x05Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08oW__\xFD[Pa\x03\xC1a\x08~6`\x04a1\x8CV[a\x1A\xE1V[4\x80\x15a\x08\x8EW__\xFD[P`\nTa\x04#\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x08\xADW__\xFD[Pa\x02wa\x08\xBC6`\x04a)\xF1V[a\x1B\x14V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xACV[a\x1BSV[4\x80\x15a\x08\xEBW__\xFD[P`\tTa\x04\x9FV[a\x08\xFCa\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t#W`@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\tRW`@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\t\xB6W_\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\t\xF8a'\x10V[b\x01\0\0\x81R`\x0B` \x82\x01R\x7F/\xAFZ\x11>\xFD\x87\xD7X\x18\xE6?\xF9\xA6\x17\0\x07\xF2,\x89\xBB\xC4\xA8\xBD\x0F+H&\x87W\xB0\x14`@\x82\x01QR\x7F\x18Z\xEE\x05\xF8\xD3\xBA\xBF\xCEg\x93\x1F\x15\xDB9\xE6\x1F%\xF7\x94\xA4\x13M{\xEEn\x18\xC5\xAD\x1E\xC0W` `@\x83\x01Q\x01R\x7F\r\xCC\xF5\xDC\xF6g\xA3|\xA9;\x8Dr\x10\x91\xD8\xF3\xA8\x04\x9B=\x1E\x89\xA5mf\xE4'Q\xBB\xAF{^``\x82\x01QR\x7F,\xF1\tI\xFC[\xFC\xEC\xB3\xBCT\xDDA!\xE5X\x07C\x0F\x17\xF3\x04\x98\xA7\xEAj\x02`p\xB1\x91b` ``\x83\x01Q\x01R\x7F\x08\xD7\x0EN\x01\x84\xFES\xBDVo\r~\xDCL\xD7\xB0\xE39I\ts\xD0\xFA\xEC}\xAC \x89\xF58\xE5`\x80\x82\x01QR~\xF6e\xFE\x1F\xD1\x10\xD3}\x1D\xEADn\x84\0\xF0o\x06\xB9\xB5\x8A\xB3\xDF\x90\xFB\xAE|G\xEEX`A` `\x80\x83\x01Q\x01R\x7F\x08~\x14\xD7\x19$\xAC\x0F(\x80\xAD\xF0\xF1\x06\x92^Zo\xDDW\xD0 \xBB<\x8A\xA7\x0F\xA9\xFC\0\xCC\xF3`\xA0\x82\x01QR\x7F\x01\xDB~1x\xB3B\xF9\x1DT\xFC\x97,\xEErV\x9FB\x9A99\x88\xEEC\xC2\x89\xE2\xED\x96\x07qR` `\xA0\x83\x01Q\x01R\x7F\x19m\xD4-vr\x01\xF7\xF1\x96\xC4*\xAE\xF4\x85e`F1\x0FP\x83U\x95\x92\xBD\x13\x13\xE1iH\xB7`\xC0\x82\x01QR\x7F\x17\x88\x96\x80\x81\n\xAA\xBD\x1F\xF3\xACJlT\x92\x10\x05y\xE0Y\x17\x0C\xD2\xB7~+=\xA6\xD3|\xC2F` `\xC0\x83\x01Q\x01R\x7F$\x93^zw\xAC1?\xD3\xD6\x0F\xF3\xF1\xA0\xA7\x9E\xC3,}\xC5\x19\xB3\x9D\xA0\xAC\xB2\xC4\x9F6wq\xCC`\xE0\x82\x01QR\x7F\x16\x8E)B^\xF18\xCBiC\xC7SR\xF3<\x19\x0E_\x14\x88\xEBT\xA9\xE1\x1D\xEBtM\xA7\xFBk.` `\xE0\x83\x01Q\x01R\x7F\x1BX\xD5X\xB5RdS\xBD\x10(\xCA\x93\x8C\x94\x0B\xB8\x9Er?|5x|\x02\xF9\xF1y\xAE\x9A\x0C\xEAa\x01\0\x82\x01QR\x7F!\xAF\xC1!\xD9\x1D\x9D\x1C\x17\xDA\xFB\x926\xBC\x9B\x87,[C\xDF\x06L\x0B\x12\x86\x01/\xB4:v#$` a\x01\0\x83\x01Q\x01R\x7F\x10G\xFCUyM\x1EY}\xE1U\x07v\x11\xE3\xC7\x89\xA0\xA2\xBE\x02\x188!\xBB\xA5l\xF6\x1C\xC1\xB8\xEDa\x01 \x82\x01QR\x7F\x17BR2G'\xC0\xD2\xEE^P\xEBW\xA5#\x1FgGL\xEE\xD6\x93*\xD4\xFF\xE9\xBC\xF8f\xAA4(` a\x01 \x83\x01Q\x01R\x7F(\xDB(\x9AL\xFBs\xBA\x92\x96\x15r\xF3\x18R\x98\xAE6n\xD1\xA4Iq`{\xCB\xF8\x01\xF1 \xF5aa\x01@\x82\x01QR\x7F\x04\\\xFEz\xE2\xCD\x17U\x08\x17.}\x9C.\x89\x9B\xB1\xD2\x16\xDF\xC3\x1F\xE8\x9F\xC6\xC9\x17\xCA\xAE\xE8w\xA2` a\x01@\x83\x01Q\x01R\x7F\x19_.\xEC\x85Gr\x7F\xC4n\xD0\x1By\xE8\xF6f\xDE\xD6J\xE5OW\x078t\xA5\xA2G\x03\x80\xA7\x85a\x01`\x82\x01QR\x7F\x15'2.\x85\xDA\x1A\xEF\xBD\x83\x9Ee\xD1\x1D\xC6\x95\xAA\xC1k\r\xB6\xC6%\x91\xD9\x812B\xD4\x1C\xBE1` a\x01`\x83\x01Q\x01R\x7F\x10\xC8\xD7\xD75_~\x0F\x8C\0/H,\xC3\xB9\x8C\x90\xBA\xA9Ba\xC5\x9A\x17\xB4$\xEE\xCF\xE4\xE9c\xB2a\x01\x80\x82\x01QR\x7F\"r\xE3\x01xdqg\xBB\xEA\xD3\xA2\xD77\x19\x88\xF2\xE1\x98\xE6X\x15\x02\x9D\xEDLd\xBF\xC0\x85\x0F\x1F` a\x01\x80\x83\x01Q\x01R\x7F\x15\xD5n\xA7\xAB/\xA6\x12e\xF5Q\xC2\xAE%8\x9C\x8F\xE7\xBC\xB3\xBFf\x08\x08,6\xA2\x01\xF2%\xF7}a\x01\xA0\x82\x01QR\x7F\x0BXTh\x87 .rs\xD3\xD0\xC5]e\xDDa2\xCA\xC9\x8E\xBF\x04\xEF\xB1\xB5$E\xC5\x13\xC4\xA4\xDF` a\x01\xA0\x83\x01Q\x01R\x7F\x05\roCwN\x8D\xFF\xAA\x86\x8F*}\xC8/Vli\xD1u\xD8\x18\xD4Q|\xC7\n\xC5\xFC\xB2\xF1\xB1a\x01\xC0\x82\x01QR\x7F/\xFF\x87\xBF`^\x99\x83s\xBBdU?:b]\xAB\xCD\x12\x88\x86\x92\xD6x\xA8\xF4M\x13d@\xC8c` a\x01\xC0\x83\x01Q\x01R\x7F\x12\xD0\x85`\x8C`,\xFB[\x8C\x03\xEC{\xD1:\xC0\xFF\x9Ed\xA9\xAC\x1E\x9A\xA7FYJ\x03>FK\xF2a\x01\xE0\x82\x01QR\x7F\x18\xACZ56\x04.\xEB\x0B\x0C|/C\xF5\xE2\xCA;!s\xDA\xA4\xC2\x81/\xFC\xA6G\x87\xE8\xE9V\xB2` a\x01\xE0\x83\x01Q\x01R\x7F\x0F\x0F\x98\x91\xFC+y\x0Et\xDC%<\x88T\xDFc\x92\xE0\x10\xF4\xDEg`\xB8B:=\xD6\x9B\xBE]\xCEa\x02\0\x82\x01QR\x7F\x16\xBE\xD1\xD2D\xA2\xFE:\xB9\xA6R\xC7\xFE\xECVP\x16\x1D\x8Au\"}\xEC\xE7)O<\x8F\xC5B\xFDl` a\x02\0\x83\x01Q\x01R\x7F\x0F\xA3m\0g/\xA6\xA1\xC4L\xD3\xC2Y!,\x1A\xDAH\xC6k\xF7\xBB\x08_$G\x1B\x15\xB1~nQa\x02 \x82\x01QR\x7F\x18 \x88\xE5kd\x95R2F\x08\x91\xD2\xB2yvS%\x81:\xEF\x1D\xAE\x85^_IlA\x8A\xFCA` a\x02 \x83\x01Q\x01R\x7F+\xAFZ\xE2\xDD\x83.\x14I\xFA\xCCa\x1Bk\x80\xFDf\xD5\x8C\x87\x1DX'\xC5\xC8\xE2tpd\xE2\x99da\x02@\x82\x01QR\x7F)\xF5C\xB5C\x13~\x88\x18\x04\xC9\x89\xCD;\x99\x93@\x10\0\"8\xE8\xAB>\xEC\x88.\t\xD3\x06h\x1F` a\x02@\x83\x01Q\x01R\x7F-\xB0\xDD\xC7\x12;B\xF5 \xE2WFj\r\x92\xDA\x8BVO\xE0\x1E\xC6e\tl\x14\x11\x96C\x01)\x84a\x02`\x82\x01QR\x7F\x1Bz\xB2zf\x96b\x84\xD7\xFB)\xBC\xE9\xD5P\xEA\xFB\xA1lI\xFB\xC6&x'\xCD\xFC\x8D\x0B\x16\xF9O` 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[a\x10'a\x1B\xFEV[`\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\x10m\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x16\xFBV[`\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\x10\xCFWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x10\xDBWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x10\xF2\x83`\x05a2\xB8V[a\x10\xFC\x91\x90a2\xEBV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x111WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11=WP_\x91\x90PV[`\nTa\x11S\x90`\x01`\x01`@\x1B\x03\x16\x83a2\xEBV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x11\xA0WP`\nTa\x11{\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a3\x18V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11\x95\x91\x16\x84a2\xEBV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x11\xAEa\x1B\xFEV[a\x11\xB7\x81a\x17jV[PV[a\x11\xC2a\x1CYV[a\x11\xCB\x82a\x1C\xFDV[a\x11\xD5\x82\x82a\x1D>V[PPV[_a\x11\xE2a\x1D\xFFV[P_Q` a8\x19_9_Q\x90_R\x90V[a\x11\xFCa\x1B\xFEV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x12GW`\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\x12ja\x1B\xFEV[a\x12`_a\x1EHV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x12\x98WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x12\xB6W`@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\x12\xEFWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x13\rW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13\x1A\x83`@\x01Qa\x1E\xB8V[a\x13'\x82` \x01Qa\x1E\xB8V[a\x134\x82`@\x01Qa\x1E\xB8V[a\x13A\x82``\x01Qa\x1E\xB8V[_a\x13Ja\x15\xA6V[` \x85\x01Q`\nT\x91\x92P_\x91a\x13j\x91\x90`\x01`\x01`@\x1B\x03\x16a\x16\xFBV[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x13\xB5Wa\x13\x97\x85` \x01Qa\x11\x11V[\x15a\x13\xB5W`@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\x14hW`\x02a\x13\xDF\x83\x83a3\x18V[`\x01`\x01`@\x1B\x03\x16\x10a\x14\x06W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\x11\x82`\x01a2\xB8V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x14JWP`\x06Ta\x14H\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x10\xAFV[\x15[\x15a\x14hW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14s\x85\x85\x85a\x1E\xF9V[\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\x14\xD2WPa\x14\xD2\x85` \x01Qa\x10\xAFV[\x15a\x15<W\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\x15 \x82`\x01a2\xB8V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x15GCB\x87a pV[\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\x15\x97\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x15\xCB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x16\xFBV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x15\xE4`\x01\x83a37V[\x81T\x81\x10a\x15\xF4Wa\x15\xF4a3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x163W`@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\x16\xF4W\x84`\t\x82\x81T\x81\x10a\x16cWa\x16ca3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x16\xECW`\t\x81\x81T\x81\x10a\x16\x9CWa\x16\x9Ca3JV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\xBFWa\x16\xBFa3JV[\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\x16GV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x17\x13WP_a\x11\xA0V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x17+WP`\x01a\x11\xA0V[a\x175\x82\x84a2\xEBV[`\x01`\x01`@\x1B\x03\x16_\x03a\x17UWa\x17N\x82\x84a3^V[\x90Pa\x11\xA0V[a\x17_\x82\x84a3^V[a\x17N\x90`\x01a2\xB8V[a\x17ra\x1B\xFEV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x17\x91WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x17\xAFWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x17\xCDW`@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\x187WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x18RWP0;\x15[\x90P\x81\x15\x80\x15a\x18`WP\x80\x15[\x15a\x18~W`@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\x18\xA8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x18\xB1\x86a\"YV[a\x18\xB9a\"jV[a\x18\xC4\x89\x89\x89a\"rV[\x83\x15a\x19\nW\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\x19^WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x19|W`@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\x19\xC4W`@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\x1A\r\x83\x85a\x16\xFBV[`\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[`\nT_\x90a\x15\xCB\x90`\x01`\x01`@\x1B\x03`\x01`@\x1B\x82\x04\x81\x16\x91\x16a\x16\xFBV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x81\x01Q`\x07Ua\x11\xB7CB\x83a pV[`\x0FT_\x90`\xFF\x16a\x1A\xFCWa\x1A\xF7\x83\x83a#\x9EV[a\x1B\rV[\x81`\x10T\x84a\x1B\x0B\x91\x90a37V[\x11[\x93\x92PPPV[a\x1B\x1Ca\x1B\xFEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1BJW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x11\xB7\x81a\x1EHV[a\x1B^`\t_a)uV[_[\x81Q\x81\x10\x15a\x11\xD5W`\t\x82\x82\x81Q\x81\x10a\x1B}Wa\x1B}a3JV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\x1B`V[3a\x1C0\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\x12`W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1BAV[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\x1C\xDFWP\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\x1C\xD3_Q` a8\x19_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x05a\x1B\xFEV[`@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\t\x9CV[\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\x1D\x98WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\x95\x91\x81\x01\x90a3\x8BV[`\x01[a\x1D\xC0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1BAV[_Q` a8\x19_9_Q\x90_R\x81\x14a\x1D\xF0W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1BAV[a\x1D\xFA\x83\x83a$\xF6V[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\x12`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\x11\xD5W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\x02a\t\xF0V[\x90Pa\x1F\x0Ca)\x93V[\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\x1F|WPa\x1F|\x85` \x01Qa\x10\xAFV[\x15a\x1F\xAEW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1F\xD2V[`\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 \r\x90\x85\x90\x85\x90\x88\x90`\x04\x01a5\x84V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a (W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a L\x91\x90a7\xA4V[a iW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a \xE5WP`\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 \xB0Wa \xB0a3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta \xDA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a3\x18V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a!xW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a!\x12Wa!\x12a3JV[_\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!R\x83a7\xC3V[\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\"aa%KV[a\x11\xB7\x81a%\x94V[a\x12`a%KV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\"\x96WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"\xA3WP` \x82\x01Q\x15[\x80a\"\xB0WP`@\x82\x01Q\x15[\x80a\"\xBDWP``\x82\x01Q\x15[\x80a\"\xC7WP\x81Q\x15[\x80a\"\xD9WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"\xEDWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a#\x0BW`@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[`\tT_\x90C\x84\x11\x80a#\xAFWP\x80\x15[\x80a#\xF9WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\xDDWa#\xDDa3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a$\x17W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a$%`\x01\x85a37V[\x90P[\x81a$\xC1W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$\xC1W\x86`\t\x82\x81T\x81\x10a$ZWa$Za3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$\xAFW`\x01\x91P`\t\x81\x81T\x81\x10a$\x8FWa$\x8Fa3JV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$\xC1V[\x80a$\xB9\x81a7\xEDV[\x91PPa$(V[\x81a$\xDFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a$\xEA\x84\x89a37V[\x11\x97\x96PPPPPPPV[a$\xFF\x82a%\x9CV[`@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%CWa\x1D\xFA\x82\x82a%\xFFV[a\x11\xD5a&qV[\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\x12`W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\x1Ca%KV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\xD1W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1BAV[_Q` a8\x19_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&\x1B\x91\x90a8\x02V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&SW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&XV[``\x91P[P\x91P\x91Pa&h\x85\x83\x83a&\x90V[\x95\x94PPPPPV[4\x15a\x12`W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\xA0Wa\x1A\xF7\x82a&\xE7V[\x81Q\x15\x80\x15a&\xB7WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&\xE0W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1BAV[P\x92\x91PPV[\x80Q\x15a&\xF7W\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'C`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'c`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x83`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xA3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xC3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xE3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x03`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(#`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(C`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(c`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x83`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xA3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xC3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xE3`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x03`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)#`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)C`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)c`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\x11\xB7\x91\x90a)\xB2V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a)\xD7W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a)\xB3V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*\x01W__\xFD[a\x1B\r\x82a)\xDBV[_` \x82\x84\x03\x12\x15a*\x1AW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*S`@\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\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a,HW__\xFD[a\x1B\r\x82a,\"V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x88Wa,\x88a,QV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\x88Wa,\x88a,QV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xD8Wa,\xD8a,QV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a,\xF0W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x12Wa-\x12a,QV[`@R\x90P\x80a-!\x83a,\"V[\x81Ra-/` \x84\x01a,\"V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-UW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-wWa-wa,QV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xA2W__\xFD[a-\xAAa,eV[\x90Pa-\xB6\x83\x83a-EV[\x81Ra-\xC5\x83`@\x84\x01a-EV[` \x82\x01Ra-\xD7\x83`\x80\x84\x01a-EV[`@\x82\x01Ra-\xE9\x83`\xC0\x84\x01a-EV[``\x82\x01Ra-\xFC\x83a\x01\0\x84\x01a-EV[`\x80\x82\x01Ra.\x0F\x83a\x01@\x84\x01a-EV[`\xA0\x82\x01Ra.\"\x83a\x01\x80\x84\x01a-EV[`\xC0\x82\x01Ra.5\x83a\x01\xC0\x84\x01a-EV[`\xE0\x82\x01Ra.H\x83a\x02\0\x84\x01a-EV[a\x01\0\x82\x01Ra.\\\x83a\x02@\x84\x01a-EV[a\x01 \x82\x01Ra.p\x83a\x02\x80\x84\x01a-EV[a\x01@\x82\x01Ra.\x84\x83a\x02\xC0\x84\x01a-EV[a\x01`\x82\x01Ra.\x98\x83a\x03\0\x84\x01a-EV[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/.W__\xFD[a/8\x84\x84a,\xE0V[\x91Pa/G\x84``\x85\x01a-\x91V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/sW__\xFD[a\x1B\r\x82a/PV[__`@\x83\x85\x03\x12\x15a/\x8DW__\xFD[a/\x96\x83a)\xDBV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xB0W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xC0W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xD9Wa/\xD9a,QV[a/\xEC`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xB0V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0\0W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0/W__\xFD[a07a,\x8EV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a0rW__\xFD[a\x1B\r\x83\x83a0\x1FV[___a\x05`\x84\x86\x03\x12\x15a0\x8FW__\xFD[a0\x99\x85\x85a,\xE0V[\x92Pa0\xA8\x85``\x86\x01a0\x1FV[\x91Pa0\xB7\x85`\xE0\x86\x01a-\x91V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a0\xD1W__\xFD[a0\xDA\x83a,\"V[\x91Pa/G` \x84\x01a,\"V[____a\x01 \x85\x87\x03\x12\x15a0\xFCW__\xFD[a1\x06\x86\x86a,\xE0V[\x93Pa1\x15\x86``\x87\x01a0\x1FV[\x92Pa1#`\xE0\x86\x01a/PV[\x91Pa12a\x01\0\x86\x01a)\xDBV[\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[_``\x82\x84\x03\x12\x15a1\x82W__\xFD[a\x1B\r\x83\x83a,\xE0V[__`@\x83\x85\x03\x12\x15a1\x9DW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xBCW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xD1W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a1\xE1W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xFAWa1\xFAa,QV[a2\t` \x82`\x05\x1B\x01a,\xB0V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a2*W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\x9AW`\x80\x84\x88\x03\x12\x15a2HW__\xFD[a2Pa,\x8EV[a2Y\x85a,\"V[\x81Ra2g` \x86\x01a,\"V[` \x82\x01Ra2x`@\x86\x01a,\"V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a21V[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xA4V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x03Wa3\x03a2\xD7V[\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\x11\xA0Wa\x11\xA0a2\xA4V[\x81\x81\x03\x81\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xA4V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3vWa3va2\xD7V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\x9BW__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xC4W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xA5V[PPPPV[a3\xDF\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\x01Qa5\xB6`@\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\x01Ra7\x8Ea\x05\0\x83\x01\x85a3\xA2V[a7\x9Ca\x06`\x83\x01\x84a3\xCAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xB4W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B\rW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a7\xE4Wa7\xE4a2\xA4V[`\x01\x01\x92\x91PPV[_\x81a7\xFBWa7\xFBa2\xA4V[P_\x19\x01\x90V[_\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",
5378    );
5379    #[derive(serde::Serialize, serde::Deserialize)]
5380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5381    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5382```solidity
5383error AddressEmptyCode(address target);
5384```*/
5385    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5386    #[derive(Clone)]
5387    pub struct AddressEmptyCode {
5388        #[allow(missing_docs)]
5389        pub target: alloy::sol_types::private::Address,
5390    }
5391    #[allow(
5392        non_camel_case_types,
5393        non_snake_case,
5394        clippy::pub_underscore_fields,
5395        clippy::style
5396    )]
5397    const _: () = {
5398        use alloy::sol_types as alloy_sol_types;
5399        #[doc(hidden)]
5400        #[allow(dead_code)]
5401        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5402        #[doc(hidden)]
5403        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5404        #[cfg(test)]
5405        #[allow(dead_code, unreachable_patterns)]
5406        fn _type_assertion(
5407            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5408        ) {
5409            match _t {
5410                alloy_sol_types::private::AssertTypeEq::<
5411                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5412                >(_) => {}
5413            }
5414        }
5415        #[automatically_derived]
5416        #[doc(hidden)]
5417        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5418            fn from(value: AddressEmptyCode) -> Self {
5419                (value.target,)
5420            }
5421        }
5422        #[automatically_derived]
5423        #[doc(hidden)]
5424        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5425            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5426                Self { target: tuple.0 }
5427            }
5428        }
5429        #[automatically_derived]
5430        impl alloy_sol_types::SolError for AddressEmptyCode {
5431            type Parameters<'a> = UnderlyingSolTuple<'a>;
5432            type Token<'a> = <Self::Parameters<
5433                'a,
5434            > as alloy_sol_types::SolType>::Token<'a>;
5435            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5436            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5437            #[inline]
5438            fn new<'a>(
5439                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5440            ) -> Self {
5441                tuple.into()
5442            }
5443            #[inline]
5444            fn tokenize(&self) -> Self::Token<'_> {
5445                (
5446                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5447                        &self.target,
5448                    ),
5449                )
5450            }
5451            #[inline]
5452            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5453                <Self::Parameters<
5454                    '_,
5455                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5456                    .map(Self::new)
5457            }
5458        }
5459    };
5460    #[derive(serde::Serialize, serde::Deserialize)]
5461    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5462    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5463```solidity
5464error DeprecatedApi();
5465```*/
5466    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5467    #[derive(Clone)]
5468    pub struct DeprecatedApi;
5469    #[allow(
5470        non_camel_case_types,
5471        non_snake_case,
5472        clippy::pub_underscore_fields,
5473        clippy::style
5474    )]
5475    const _: () = {
5476        use alloy::sol_types as alloy_sol_types;
5477        #[doc(hidden)]
5478        #[allow(dead_code)]
5479        type UnderlyingSolTuple<'a> = ();
5480        #[doc(hidden)]
5481        type UnderlyingRustTuple<'a> = ();
5482        #[cfg(test)]
5483        #[allow(dead_code, unreachable_patterns)]
5484        fn _type_assertion(
5485            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5486        ) {
5487            match _t {
5488                alloy_sol_types::private::AssertTypeEq::<
5489                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5490                >(_) => {}
5491            }
5492        }
5493        #[automatically_derived]
5494        #[doc(hidden)]
5495        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5496            fn from(value: DeprecatedApi) -> Self {
5497                ()
5498            }
5499        }
5500        #[automatically_derived]
5501        #[doc(hidden)]
5502        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5503            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5504                Self
5505            }
5506        }
5507        #[automatically_derived]
5508        impl alloy_sol_types::SolError for DeprecatedApi {
5509            type Parameters<'a> = UnderlyingSolTuple<'a>;
5510            type Token<'a> = <Self::Parameters<
5511                'a,
5512            > as alloy_sol_types::SolType>::Token<'a>;
5513            const SIGNATURE: &'static str = "DeprecatedApi()";
5514            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5515            #[inline]
5516            fn new<'a>(
5517                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5518            ) -> Self {
5519                tuple.into()
5520            }
5521            #[inline]
5522            fn tokenize(&self) -> Self::Token<'_> {
5523                ()
5524            }
5525            #[inline]
5526            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5527                <Self::Parameters<
5528                    '_,
5529                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5530                    .map(Self::new)
5531            }
5532        }
5533    };
5534    #[derive(serde::Serialize, serde::Deserialize)]
5535    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5536    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5537```solidity
5538error ERC1967InvalidImplementation(address implementation);
5539```*/
5540    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5541    #[derive(Clone)]
5542    pub struct ERC1967InvalidImplementation {
5543        #[allow(missing_docs)]
5544        pub implementation: alloy::sol_types::private::Address,
5545    }
5546    #[allow(
5547        non_camel_case_types,
5548        non_snake_case,
5549        clippy::pub_underscore_fields,
5550        clippy::style
5551    )]
5552    const _: () = {
5553        use alloy::sol_types as alloy_sol_types;
5554        #[doc(hidden)]
5555        #[allow(dead_code)]
5556        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5557        #[doc(hidden)]
5558        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5559        #[cfg(test)]
5560        #[allow(dead_code, unreachable_patterns)]
5561        fn _type_assertion(
5562            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5563        ) {
5564            match _t {
5565                alloy_sol_types::private::AssertTypeEq::<
5566                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5567                >(_) => {}
5568            }
5569        }
5570        #[automatically_derived]
5571        #[doc(hidden)]
5572        impl ::core::convert::From<ERC1967InvalidImplementation>
5573        for UnderlyingRustTuple<'_> {
5574            fn from(value: ERC1967InvalidImplementation) -> Self {
5575                (value.implementation,)
5576            }
5577        }
5578        #[automatically_derived]
5579        #[doc(hidden)]
5580        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5581        for ERC1967InvalidImplementation {
5582            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5583                Self { implementation: tuple.0 }
5584            }
5585        }
5586        #[automatically_derived]
5587        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5588            type Parameters<'a> = UnderlyingSolTuple<'a>;
5589            type Token<'a> = <Self::Parameters<
5590                'a,
5591            > as alloy_sol_types::SolType>::Token<'a>;
5592            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5593            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5594            #[inline]
5595            fn new<'a>(
5596                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5597            ) -> Self {
5598                tuple.into()
5599            }
5600            #[inline]
5601            fn tokenize(&self) -> Self::Token<'_> {
5602                (
5603                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5604                        &self.implementation,
5605                    ),
5606                )
5607            }
5608            #[inline]
5609            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5610                <Self::Parameters<
5611                    '_,
5612                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5613                    .map(Self::new)
5614            }
5615        }
5616    };
5617    #[derive(serde::Serialize, serde::Deserialize)]
5618    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5619    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5620```solidity
5621error ERC1967NonPayable();
5622```*/
5623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5624    #[derive(Clone)]
5625    pub struct ERC1967NonPayable;
5626    #[allow(
5627        non_camel_case_types,
5628        non_snake_case,
5629        clippy::pub_underscore_fields,
5630        clippy::style
5631    )]
5632    const _: () = {
5633        use alloy::sol_types as alloy_sol_types;
5634        #[doc(hidden)]
5635        #[allow(dead_code)]
5636        type UnderlyingSolTuple<'a> = ();
5637        #[doc(hidden)]
5638        type UnderlyingRustTuple<'a> = ();
5639        #[cfg(test)]
5640        #[allow(dead_code, unreachable_patterns)]
5641        fn _type_assertion(
5642            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5643        ) {
5644            match _t {
5645                alloy_sol_types::private::AssertTypeEq::<
5646                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5647                >(_) => {}
5648            }
5649        }
5650        #[automatically_derived]
5651        #[doc(hidden)]
5652        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5653            fn from(value: ERC1967NonPayable) -> Self {
5654                ()
5655            }
5656        }
5657        #[automatically_derived]
5658        #[doc(hidden)]
5659        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5660            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5661                Self
5662            }
5663        }
5664        #[automatically_derived]
5665        impl alloy_sol_types::SolError for ERC1967NonPayable {
5666            type Parameters<'a> = UnderlyingSolTuple<'a>;
5667            type Token<'a> = <Self::Parameters<
5668                'a,
5669            > as alloy_sol_types::SolType>::Token<'a>;
5670            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5671            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5672            #[inline]
5673            fn new<'a>(
5674                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5675            ) -> Self {
5676                tuple.into()
5677            }
5678            #[inline]
5679            fn tokenize(&self) -> Self::Token<'_> {
5680                ()
5681            }
5682            #[inline]
5683            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5684                <Self::Parameters<
5685                    '_,
5686                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5687                    .map(Self::new)
5688            }
5689        }
5690    };
5691    #[derive(serde::Serialize, serde::Deserialize)]
5692    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5693    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5694```solidity
5695error FailedInnerCall();
5696```*/
5697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5698    #[derive(Clone)]
5699    pub struct FailedInnerCall;
5700    #[allow(
5701        non_camel_case_types,
5702        non_snake_case,
5703        clippy::pub_underscore_fields,
5704        clippy::style
5705    )]
5706    const _: () = {
5707        use alloy::sol_types as alloy_sol_types;
5708        #[doc(hidden)]
5709        #[allow(dead_code)]
5710        type UnderlyingSolTuple<'a> = ();
5711        #[doc(hidden)]
5712        type UnderlyingRustTuple<'a> = ();
5713        #[cfg(test)]
5714        #[allow(dead_code, unreachable_patterns)]
5715        fn _type_assertion(
5716            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5717        ) {
5718            match _t {
5719                alloy_sol_types::private::AssertTypeEq::<
5720                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5721                >(_) => {}
5722            }
5723        }
5724        #[automatically_derived]
5725        #[doc(hidden)]
5726        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5727            fn from(value: FailedInnerCall) -> Self {
5728                ()
5729            }
5730        }
5731        #[automatically_derived]
5732        #[doc(hidden)]
5733        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5734            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5735                Self
5736            }
5737        }
5738        #[automatically_derived]
5739        impl alloy_sol_types::SolError for FailedInnerCall {
5740            type Parameters<'a> = UnderlyingSolTuple<'a>;
5741            type Token<'a> = <Self::Parameters<
5742                'a,
5743            > as alloy_sol_types::SolType>::Token<'a>;
5744            const SIGNATURE: &'static str = "FailedInnerCall()";
5745            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5746            #[inline]
5747            fn new<'a>(
5748                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5749            ) -> Self {
5750                tuple.into()
5751            }
5752            #[inline]
5753            fn tokenize(&self) -> Self::Token<'_> {
5754                ()
5755            }
5756            #[inline]
5757            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5758                <Self::Parameters<
5759                    '_,
5760                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5761                    .map(Self::new)
5762            }
5763        }
5764    };
5765    #[derive(serde::Serialize, serde::Deserialize)]
5766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5767    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5768```solidity
5769error InsufficientSnapshotHistory();
5770```*/
5771    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5772    #[derive(Clone)]
5773    pub struct InsufficientSnapshotHistory;
5774    #[allow(
5775        non_camel_case_types,
5776        non_snake_case,
5777        clippy::pub_underscore_fields,
5778        clippy::style
5779    )]
5780    const _: () = {
5781        use alloy::sol_types as alloy_sol_types;
5782        #[doc(hidden)]
5783        #[allow(dead_code)]
5784        type UnderlyingSolTuple<'a> = ();
5785        #[doc(hidden)]
5786        type UnderlyingRustTuple<'a> = ();
5787        #[cfg(test)]
5788        #[allow(dead_code, unreachable_patterns)]
5789        fn _type_assertion(
5790            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5791        ) {
5792            match _t {
5793                alloy_sol_types::private::AssertTypeEq::<
5794                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5795                >(_) => {}
5796            }
5797        }
5798        #[automatically_derived]
5799        #[doc(hidden)]
5800        impl ::core::convert::From<InsufficientSnapshotHistory>
5801        for UnderlyingRustTuple<'_> {
5802            fn from(value: InsufficientSnapshotHistory) -> Self {
5803                ()
5804            }
5805        }
5806        #[automatically_derived]
5807        #[doc(hidden)]
5808        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5809        for InsufficientSnapshotHistory {
5810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5811                Self
5812            }
5813        }
5814        #[automatically_derived]
5815        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5816            type Parameters<'a> = UnderlyingSolTuple<'a>;
5817            type Token<'a> = <Self::Parameters<
5818                'a,
5819            > as alloy_sol_types::SolType>::Token<'a>;
5820            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5821            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5822            #[inline]
5823            fn new<'a>(
5824                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5825            ) -> Self {
5826                tuple.into()
5827            }
5828            #[inline]
5829            fn tokenize(&self) -> Self::Token<'_> {
5830                ()
5831            }
5832            #[inline]
5833            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5834                <Self::Parameters<
5835                    '_,
5836                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5837                    .map(Self::new)
5838            }
5839        }
5840    };
5841    #[derive(serde::Serialize, serde::Deserialize)]
5842    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5843    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5844```solidity
5845error InvalidAddress();
5846```*/
5847    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5848    #[derive(Clone)]
5849    pub struct InvalidAddress;
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        #[allow(dead_code)]
5860        type UnderlyingSolTuple<'a> = ();
5861        #[doc(hidden)]
5862        type UnderlyingRustTuple<'a> = ();
5863        #[cfg(test)]
5864        #[allow(dead_code, unreachable_patterns)]
5865        fn _type_assertion(
5866            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5867        ) {
5868            match _t {
5869                alloy_sol_types::private::AssertTypeEq::<
5870                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5871                >(_) => {}
5872            }
5873        }
5874        #[automatically_derived]
5875        #[doc(hidden)]
5876        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5877            fn from(value: InvalidAddress) -> Self {
5878                ()
5879            }
5880        }
5881        #[automatically_derived]
5882        #[doc(hidden)]
5883        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5884            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5885                Self
5886            }
5887        }
5888        #[automatically_derived]
5889        impl alloy_sol_types::SolError for InvalidAddress {
5890            type Parameters<'a> = UnderlyingSolTuple<'a>;
5891            type Token<'a> = <Self::Parameters<
5892                'a,
5893            > as alloy_sol_types::SolType>::Token<'a>;
5894            const SIGNATURE: &'static str = "InvalidAddress()";
5895            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5896            #[inline]
5897            fn new<'a>(
5898                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5899            ) -> Self {
5900                tuple.into()
5901            }
5902            #[inline]
5903            fn tokenize(&self) -> Self::Token<'_> {
5904                ()
5905            }
5906            #[inline]
5907            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5908                <Self::Parameters<
5909                    '_,
5910                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5911                    .map(Self::new)
5912            }
5913        }
5914    };
5915    #[derive(serde::Serialize, serde::Deserialize)]
5916    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5917    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5918```solidity
5919error InvalidArgs();
5920```*/
5921    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5922    #[derive(Clone)]
5923    pub struct InvalidArgs;
5924    #[allow(
5925        non_camel_case_types,
5926        non_snake_case,
5927        clippy::pub_underscore_fields,
5928        clippy::style
5929    )]
5930    const _: () = {
5931        use alloy::sol_types as alloy_sol_types;
5932        #[doc(hidden)]
5933        #[allow(dead_code)]
5934        type UnderlyingSolTuple<'a> = ();
5935        #[doc(hidden)]
5936        type UnderlyingRustTuple<'a> = ();
5937        #[cfg(test)]
5938        #[allow(dead_code, unreachable_patterns)]
5939        fn _type_assertion(
5940            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5941        ) {
5942            match _t {
5943                alloy_sol_types::private::AssertTypeEq::<
5944                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5945                >(_) => {}
5946            }
5947        }
5948        #[automatically_derived]
5949        #[doc(hidden)]
5950        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5951            fn from(value: InvalidArgs) -> Self {
5952                ()
5953            }
5954        }
5955        #[automatically_derived]
5956        #[doc(hidden)]
5957        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5958            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5959                Self
5960            }
5961        }
5962        #[automatically_derived]
5963        impl alloy_sol_types::SolError for InvalidArgs {
5964            type Parameters<'a> = UnderlyingSolTuple<'a>;
5965            type Token<'a> = <Self::Parameters<
5966                'a,
5967            > as alloy_sol_types::SolType>::Token<'a>;
5968            const SIGNATURE: &'static str = "InvalidArgs()";
5969            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5970            #[inline]
5971            fn new<'a>(
5972                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5973            ) -> Self {
5974                tuple.into()
5975            }
5976            #[inline]
5977            fn tokenize(&self) -> Self::Token<'_> {
5978                ()
5979            }
5980            #[inline]
5981            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5982                <Self::Parameters<
5983                    '_,
5984                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5985                    .map(Self::new)
5986            }
5987        }
5988    };
5989    #[derive(serde::Serialize, serde::Deserialize)]
5990    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5991    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5992```solidity
5993error InvalidHotShotBlockForCommitmentCheck();
5994```*/
5995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5996    #[derive(Clone)]
5997    pub struct InvalidHotShotBlockForCommitmentCheck;
5998    #[allow(
5999        non_camel_case_types,
6000        non_snake_case,
6001        clippy::pub_underscore_fields,
6002        clippy::style
6003    )]
6004    const _: () = {
6005        use alloy::sol_types as alloy_sol_types;
6006        #[doc(hidden)]
6007        #[allow(dead_code)]
6008        type UnderlyingSolTuple<'a> = ();
6009        #[doc(hidden)]
6010        type UnderlyingRustTuple<'a> = ();
6011        #[cfg(test)]
6012        #[allow(dead_code, unreachable_patterns)]
6013        fn _type_assertion(
6014            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6015        ) {
6016            match _t {
6017                alloy_sol_types::private::AssertTypeEq::<
6018                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6019                >(_) => {}
6020            }
6021        }
6022        #[automatically_derived]
6023        #[doc(hidden)]
6024        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
6025        for UnderlyingRustTuple<'_> {
6026            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
6027                ()
6028            }
6029        }
6030        #[automatically_derived]
6031        #[doc(hidden)]
6032        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6033        for InvalidHotShotBlockForCommitmentCheck {
6034            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6035                Self
6036            }
6037        }
6038        #[automatically_derived]
6039        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
6040            type Parameters<'a> = UnderlyingSolTuple<'a>;
6041            type Token<'a> = <Self::Parameters<
6042                'a,
6043            > as alloy_sol_types::SolType>::Token<'a>;
6044            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
6045            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
6046            #[inline]
6047            fn new<'a>(
6048                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6049            ) -> Self {
6050                tuple.into()
6051            }
6052            #[inline]
6053            fn tokenize(&self) -> Self::Token<'_> {
6054                ()
6055            }
6056            #[inline]
6057            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6058                <Self::Parameters<
6059                    '_,
6060                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6061                    .map(Self::new)
6062            }
6063        }
6064    };
6065    #[derive(serde::Serialize, serde::Deserialize)]
6066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6067    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6068```solidity
6069error InvalidInitialization();
6070```*/
6071    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6072    #[derive(Clone)]
6073    pub struct InvalidInitialization;
6074    #[allow(
6075        non_camel_case_types,
6076        non_snake_case,
6077        clippy::pub_underscore_fields,
6078        clippy::style
6079    )]
6080    const _: () = {
6081        use alloy::sol_types as alloy_sol_types;
6082        #[doc(hidden)]
6083        #[allow(dead_code)]
6084        type UnderlyingSolTuple<'a> = ();
6085        #[doc(hidden)]
6086        type UnderlyingRustTuple<'a> = ();
6087        #[cfg(test)]
6088        #[allow(dead_code, unreachable_patterns)]
6089        fn _type_assertion(
6090            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6091        ) {
6092            match _t {
6093                alloy_sol_types::private::AssertTypeEq::<
6094                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6095                >(_) => {}
6096            }
6097        }
6098        #[automatically_derived]
6099        #[doc(hidden)]
6100        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6101            fn from(value: InvalidInitialization) -> Self {
6102                ()
6103            }
6104        }
6105        #[automatically_derived]
6106        #[doc(hidden)]
6107        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6108            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6109                Self
6110            }
6111        }
6112        #[automatically_derived]
6113        impl alloy_sol_types::SolError for InvalidInitialization {
6114            type Parameters<'a> = UnderlyingSolTuple<'a>;
6115            type Token<'a> = <Self::Parameters<
6116                'a,
6117            > as alloy_sol_types::SolType>::Token<'a>;
6118            const SIGNATURE: &'static str = "InvalidInitialization()";
6119            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6120            #[inline]
6121            fn new<'a>(
6122                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6123            ) -> Self {
6124                tuple.into()
6125            }
6126            #[inline]
6127            fn tokenize(&self) -> Self::Token<'_> {
6128                ()
6129            }
6130            #[inline]
6131            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6132                <Self::Parameters<
6133                    '_,
6134                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6135                    .map(Self::new)
6136            }
6137        }
6138    };
6139    #[derive(serde::Serialize, serde::Deserialize)]
6140    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6141    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6142```solidity
6143error InvalidMaxStateHistory();
6144```*/
6145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6146    #[derive(Clone)]
6147    pub struct InvalidMaxStateHistory;
6148    #[allow(
6149        non_camel_case_types,
6150        non_snake_case,
6151        clippy::pub_underscore_fields,
6152        clippy::style
6153    )]
6154    const _: () = {
6155        use alloy::sol_types as alloy_sol_types;
6156        #[doc(hidden)]
6157        #[allow(dead_code)]
6158        type UnderlyingSolTuple<'a> = ();
6159        #[doc(hidden)]
6160        type UnderlyingRustTuple<'a> = ();
6161        #[cfg(test)]
6162        #[allow(dead_code, unreachable_patterns)]
6163        fn _type_assertion(
6164            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6165        ) {
6166            match _t {
6167                alloy_sol_types::private::AssertTypeEq::<
6168                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6169                >(_) => {}
6170            }
6171        }
6172        #[automatically_derived]
6173        #[doc(hidden)]
6174        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6175            fn from(value: InvalidMaxStateHistory) -> Self {
6176                ()
6177            }
6178        }
6179        #[automatically_derived]
6180        #[doc(hidden)]
6181        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6182            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6183                Self
6184            }
6185        }
6186        #[automatically_derived]
6187        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6188            type Parameters<'a> = UnderlyingSolTuple<'a>;
6189            type Token<'a> = <Self::Parameters<
6190                'a,
6191            > as alloy_sol_types::SolType>::Token<'a>;
6192            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6193            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6194            #[inline]
6195            fn new<'a>(
6196                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6197            ) -> Self {
6198                tuple.into()
6199            }
6200            #[inline]
6201            fn tokenize(&self) -> Self::Token<'_> {
6202                ()
6203            }
6204            #[inline]
6205            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6206                <Self::Parameters<
6207                    '_,
6208                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6209                    .map(Self::new)
6210            }
6211        }
6212    };
6213    #[derive(serde::Serialize, serde::Deserialize)]
6214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6215    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6216```solidity
6217error InvalidProof();
6218```*/
6219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6220    #[derive(Clone)]
6221    pub struct InvalidProof;
6222    #[allow(
6223        non_camel_case_types,
6224        non_snake_case,
6225        clippy::pub_underscore_fields,
6226        clippy::style
6227    )]
6228    const _: () = {
6229        use alloy::sol_types as alloy_sol_types;
6230        #[doc(hidden)]
6231        #[allow(dead_code)]
6232        type UnderlyingSolTuple<'a> = ();
6233        #[doc(hidden)]
6234        type UnderlyingRustTuple<'a> = ();
6235        #[cfg(test)]
6236        #[allow(dead_code, unreachable_patterns)]
6237        fn _type_assertion(
6238            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6239        ) {
6240            match _t {
6241                alloy_sol_types::private::AssertTypeEq::<
6242                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6243                >(_) => {}
6244            }
6245        }
6246        #[automatically_derived]
6247        #[doc(hidden)]
6248        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6249            fn from(value: InvalidProof) -> Self {
6250                ()
6251            }
6252        }
6253        #[automatically_derived]
6254        #[doc(hidden)]
6255        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6256            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6257                Self
6258            }
6259        }
6260        #[automatically_derived]
6261        impl alloy_sol_types::SolError for InvalidProof {
6262            type Parameters<'a> = UnderlyingSolTuple<'a>;
6263            type Token<'a> = <Self::Parameters<
6264                'a,
6265            > as alloy_sol_types::SolType>::Token<'a>;
6266            const SIGNATURE: &'static str = "InvalidProof()";
6267            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6268            #[inline]
6269            fn new<'a>(
6270                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6271            ) -> Self {
6272                tuple.into()
6273            }
6274            #[inline]
6275            fn tokenize(&self) -> Self::Token<'_> {
6276                ()
6277            }
6278            #[inline]
6279            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6280                <Self::Parameters<
6281                    '_,
6282                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6283                    .map(Self::new)
6284            }
6285        }
6286    };
6287    #[derive(serde::Serialize, serde::Deserialize)]
6288    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6289    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
6290```solidity
6291error InvalidScalar();
6292```*/
6293    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6294    #[derive(Clone)]
6295    pub struct InvalidScalar;
6296    #[allow(
6297        non_camel_case_types,
6298        non_snake_case,
6299        clippy::pub_underscore_fields,
6300        clippy::style
6301    )]
6302    const _: () = {
6303        use alloy::sol_types as alloy_sol_types;
6304        #[doc(hidden)]
6305        #[allow(dead_code)]
6306        type UnderlyingSolTuple<'a> = ();
6307        #[doc(hidden)]
6308        type UnderlyingRustTuple<'a> = ();
6309        #[cfg(test)]
6310        #[allow(dead_code, unreachable_patterns)]
6311        fn _type_assertion(
6312            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6313        ) {
6314            match _t {
6315                alloy_sol_types::private::AssertTypeEq::<
6316                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6317                >(_) => {}
6318            }
6319        }
6320        #[automatically_derived]
6321        #[doc(hidden)]
6322        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
6323            fn from(value: InvalidScalar) -> Self {
6324                ()
6325            }
6326        }
6327        #[automatically_derived]
6328        #[doc(hidden)]
6329        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
6330            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6331                Self
6332            }
6333        }
6334        #[automatically_derived]
6335        impl alloy_sol_types::SolError for InvalidScalar {
6336            type Parameters<'a> = UnderlyingSolTuple<'a>;
6337            type Token<'a> = <Self::Parameters<
6338                'a,
6339            > as alloy_sol_types::SolType>::Token<'a>;
6340            const SIGNATURE: &'static str = "InvalidScalar()";
6341            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
6342            #[inline]
6343            fn new<'a>(
6344                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6345            ) -> Self {
6346                tuple.into()
6347            }
6348            #[inline]
6349            fn tokenize(&self) -> Self::Token<'_> {
6350                ()
6351            }
6352            #[inline]
6353            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6354                <Self::Parameters<
6355                    '_,
6356                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6357                    .map(Self::new)
6358            }
6359        }
6360    };
6361    #[derive(serde::Serialize, serde::Deserialize)]
6362    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6363    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6364```solidity
6365error MissingEpochRootUpdate();
6366```*/
6367    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6368    #[derive(Clone)]
6369    pub struct MissingEpochRootUpdate;
6370    #[allow(
6371        non_camel_case_types,
6372        non_snake_case,
6373        clippy::pub_underscore_fields,
6374        clippy::style
6375    )]
6376    const _: () = {
6377        use alloy::sol_types as alloy_sol_types;
6378        #[doc(hidden)]
6379        #[allow(dead_code)]
6380        type UnderlyingSolTuple<'a> = ();
6381        #[doc(hidden)]
6382        type UnderlyingRustTuple<'a> = ();
6383        #[cfg(test)]
6384        #[allow(dead_code, unreachable_patterns)]
6385        fn _type_assertion(
6386            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6387        ) {
6388            match _t {
6389                alloy_sol_types::private::AssertTypeEq::<
6390                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6391                >(_) => {}
6392            }
6393        }
6394        #[automatically_derived]
6395        #[doc(hidden)]
6396        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6397            fn from(value: MissingEpochRootUpdate) -> Self {
6398                ()
6399            }
6400        }
6401        #[automatically_derived]
6402        #[doc(hidden)]
6403        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6404            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6405                Self
6406            }
6407        }
6408        #[automatically_derived]
6409        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6410            type Parameters<'a> = UnderlyingSolTuple<'a>;
6411            type Token<'a> = <Self::Parameters<
6412                'a,
6413            > as alloy_sol_types::SolType>::Token<'a>;
6414            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6415            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6416            #[inline]
6417            fn new<'a>(
6418                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6419            ) -> Self {
6420                tuple.into()
6421            }
6422            #[inline]
6423            fn tokenize(&self) -> Self::Token<'_> {
6424                ()
6425            }
6426            #[inline]
6427            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6428                <Self::Parameters<
6429                    '_,
6430                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6431                    .map(Self::new)
6432            }
6433        }
6434    };
6435    #[derive(serde::Serialize, serde::Deserialize)]
6436    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6437    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6438```solidity
6439error NoChangeRequired();
6440```*/
6441    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6442    #[derive(Clone)]
6443    pub struct NoChangeRequired;
6444    #[allow(
6445        non_camel_case_types,
6446        non_snake_case,
6447        clippy::pub_underscore_fields,
6448        clippy::style
6449    )]
6450    const _: () = {
6451        use alloy::sol_types as alloy_sol_types;
6452        #[doc(hidden)]
6453        #[allow(dead_code)]
6454        type UnderlyingSolTuple<'a> = ();
6455        #[doc(hidden)]
6456        type UnderlyingRustTuple<'a> = ();
6457        #[cfg(test)]
6458        #[allow(dead_code, unreachable_patterns)]
6459        fn _type_assertion(
6460            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6461        ) {
6462            match _t {
6463                alloy_sol_types::private::AssertTypeEq::<
6464                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6465                >(_) => {}
6466            }
6467        }
6468        #[automatically_derived]
6469        #[doc(hidden)]
6470        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6471            fn from(value: NoChangeRequired) -> Self {
6472                ()
6473            }
6474        }
6475        #[automatically_derived]
6476        #[doc(hidden)]
6477        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6478            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6479                Self
6480            }
6481        }
6482        #[automatically_derived]
6483        impl alloy_sol_types::SolError for NoChangeRequired {
6484            type Parameters<'a> = UnderlyingSolTuple<'a>;
6485            type Token<'a> = <Self::Parameters<
6486                'a,
6487            > as alloy_sol_types::SolType>::Token<'a>;
6488            const SIGNATURE: &'static str = "NoChangeRequired()";
6489            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6490            #[inline]
6491            fn new<'a>(
6492                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6493            ) -> Self {
6494                tuple.into()
6495            }
6496            #[inline]
6497            fn tokenize(&self) -> Self::Token<'_> {
6498                ()
6499            }
6500            #[inline]
6501            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6502                <Self::Parameters<
6503                    '_,
6504                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6505                    .map(Self::new)
6506            }
6507        }
6508    };
6509    #[derive(serde::Serialize, serde::Deserialize)]
6510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6511    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6512```solidity
6513error NotInitializing();
6514```*/
6515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6516    #[derive(Clone)]
6517    pub struct NotInitializing;
6518    #[allow(
6519        non_camel_case_types,
6520        non_snake_case,
6521        clippy::pub_underscore_fields,
6522        clippy::style
6523    )]
6524    const _: () = {
6525        use alloy::sol_types as alloy_sol_types;
6526        #[doc(hidden)]
6527        #[allow(dead_code)]
6528        type UnderlyingSolTuple<'a> = ();
6529        #[doc(hidden)]
6530        type UnderlyingRustTuple<'a> = ();
6531        #[cfg(test)]
6532        #[allow(dead_code, unreachable_patterns)]
6533        fn _type_assertion(
6534            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6535        ) {
6536            match _t {
6537                alloy_sol_types::private::AssertTypeEq::<
6538                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6539                >(_) => {}
6540            }
6541        }
6542        #[automatically_derived]
6543        #[doc(hidden)]
6544        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6545            fn from(value: NotInitializing) -> Self {
6546                ()
6547            }
6548        }
6549        #[automatically_derived]
6550        #[doc(hidden)]
6551        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6552            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6553                Self
6554            }
6555        }
6556        #[automatically_derived]
6557        impl alloy_sol_types::SolError for NotInitializing {
6558            type Parameters<'a> = UnderlyingSolTuple<'a>;
6559            type Token<'a> = <Self::Parameters<
6560                'a,
6561            > as alloy_sol_types::SolType>::Token<'a>;
6562            const SIGNATURE: &'static str = "NotInitializing()";
6563            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6564            #[inline]
6565            fn new<'a>(
6566                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6567            ) -> Self {
6568                tuple.into()
6569            }
6570            #[inline]
6571            fn tokenize(&self) -> Self::Token<'_> {
6572                ()
6573            }
6574            #[inline]
6575            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6576                <Self::Parameters<
6577                    '_,
6578                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6579                    .map(Self::new)
6580            }
6581        }
6582    };
6583    #[derive(serde::Serialize, serde::Deserialize)]
6584    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6585    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6586```solidity
6587error OutdatedState();
6588```*/
6589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6590    #[derive(Clone)]
6591    pub struct OutdatedState;
6592    #[allow(
6593        non_camel_case_types,
6594        non_snake_case,
6595        clippy::pub_underscore_fields,
6596        clippy::style
6597    )]
6598    const _: () = {
6599        use alloy::sol_types as alloy_sol_types;
6600        #[doc(hidden)]
6601        #[allow(dead_code)]
6602        type UnderlyingSolTuple<'a> = ();
6603        #[doc(hidden)]
6604        type UnderlyingRustTuple<'a> = ();
6605        #[cfg(test)]
6606        #[allow(dead_code, unreachable_patterns)]
6607        fn _type_assertion(
6608            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6609        ) {
6610            match _t {
6611                alloy_sol_types::private::AssertTypeEq::<
6612                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6613                >(_) => {}
6614            }
6615        }
6616        #[automatically_derived]
6617        #[doc(hidden)]
6618        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6619            fn from(value: OutdatedState) -> Self {
6620                ()
6621            }
6622        }
6623        #[automatically_derived]
6624        #[doc(hidden)]
6625        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6626            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6627                Self
6628            }
6629        }
6630        #[automatically_derived]
6631        impl alloy_sol_types::SolError for OutdatedState {
6632            type Parameters<'a> = UnderlyingSolTuple<'a>;
6633            type Token<'a> = <Self::Parameters<
6634                'a,
6635            > as alloy_sol_types::SolType>::Token<'a>;
6636            const SIGNATURE: &'static str = "OutdatedState()";
6637            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6638            #[inline]
6639            fn new<'a>(
6640                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6641            ) -> Self {
6642                tuple.into()
6643            }
6644            #[inline]
6645            fn tokenize(&self) -> Self::Token<'_> {
6646                ()
6647            }
6648            #[inline]
6649            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6650                <Self::Parameters<
6651                    '_,
6652                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6653                    .map(Self::new)
6654            }
6655        }
6656    };
6657    #[derive(serde::Serialize, serde::Deserialize)]
6658    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6659    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6660```solidity
6661error OwnableInvalidOwner(address owner);
6662```*/
6663    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6664    #[derive(Clone)]
6665    pub struct OwnableInvalidOwner {
6666        #[allow(missing_docs)]
6667        pub owner: alloy::sol_types::private::Address,
6668    }
6669    #[allow(
6670        non_camel_case_types,
6671        non_snake_case,
6672        clippy::pub_underscore_fields,
6673        clippy::style
6674    )]
6675    const _: () = {
6676        use alloy::sol_types as alloy_sol_types;
6677        #[doc(hidden)]
6678        #[allow(dead_code)]
6679        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6680        #[doc(hidden)]
6681        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6682        #[cfg(test)]
6683        #[allow(dead_code, unreachable_patterns)]
6684        fn _type_assertion(
6685            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6686        ) {
6687            match _t {
6688                alloy_sol_types::private::AssertTypeEq::<
6689                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6690                >(_) => {}
6691            }
6692        }
6693        #[automatically_derived]
6694        #[doc(hidden)]
6695        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6696            fn from(value: OwnableInvalidOwner) -> Self {
6697                (value.owner,)
6698            }
6699        }
6700        #[automatically_derived]
6701        #[doc(hidden)]
6702        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6703            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6704                Self { owner: tuple.0 }
6705            }
6706        }
6707        #[automatically_derived]
6708        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6709            type Parameters<'a> = UnderlyingSolTuple<'a>;
6710            type Token<'a> = <Self::Parameters<
6711                'a,
6712            > as alloy_sol_types::SolType>::Token<'a>;
6713            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6714            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6715            #[inline]
6716            fn new<'a>(
6717                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6718            ) -> Self {
6719                tuple.into()
6720            }
6721            #[inline]
6722            fn tokenize(&self) -> Self::Token<'_> {
6723                (
6724                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6725                        &self.owner,
6726                    ),
6727                )
6728            }
6729            #[inline]
6730            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6731                <Self::Parameters<
6732                    '_,
6733                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6734                    .map(Self::new)
6735            }
6736        }
6737    };
6738    #[derive(serde::Serialize, serde::Deserialize)]
6739    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6740    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6741```solidity
6742error OwnableUnauthorizedAccount(address account);
6743```*/
6744    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6745    #[derive(Clone)]
6746    pub struct OwnableUnauthorizedAccount {
6747        #[allow(missing_docs)]
6748        pub account: alloy::sol_types::private::Address,
6749    }
6750    #[allow(
6751        non_camel_case_types,
6752        non_snake_case,
6753        clippy::pub_underscore_fields,
6754        clippy::style
6755    )]
6756    const _: () = {
6757        use alloy::sol_types as alloy_sol_types;
6758        #[doc(hidden)]
6759        #[allow(dead_code)]
6760        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6761        #[doc(hidden)]
6762        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6763        #[cfg(test)]
6764        #[allow(dead_code, unreachable_patterns)]
6765        fn _type_assertion(
6766            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6767        ) {
6768            match _t {
6769                alloy_sol_types::private::AssertTypeEq::<
6770                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6771                >(_) => {}
6772            }
6773        }
6774        #[automatically_derived]
6775        #[doc(hidden)]
6776        impl ::core::convert::From<OwnableUnauthorizedAccount>
6777        for UnderlyingRustTuple<'_> {
6778            fn from(value: OwnableUnauthorizedAccount) -> Self {
6779                (value.account,)
6780            }
6781        }
6782        #[automatically_derived]
6783        #[doc(hidden)]
6784        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6785        for OwnableUnauthorizedAccount {
6786            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6787                Self { account: tuple.0 }
6788            }
6789        }
6790        #[automatically_derived]
6791        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6792            type Parameters<'a> = UnderlyingSolTuple<'a>;
6793            type Token<'a> = <Self::Parameters<
6794                'a,
6795            > as alloy_sol_types::SolType>::Token<'a>;
6796            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6797            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6798            #[inline]
6799            fn new<'a>(
6800                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6801            ) -> Self {
6802                tuple.into()
6803            }
6804            #[inline]
6805            fn tokenize(&self) -> Self::Token<'_> {
6806                (
6807                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6808                        &self.account,
6809                    ),
6810                )
6811            }
6812            #[inline]
6813            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6814                <Self::Parameters<
6815                    '_,
6816                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6817                    .map(Self::new)
6818            }
6819        }
6820    };
6821    #[derive(serde::Serialize, serde::Deserialize)]
6822    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6823    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6824```solidity
6825error ProverNotPermissioned();
6826```*/
6827    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6828    #[derive(Clone)]
6829    pub struct ProverNotPermissioned;
6830    #[allow(
6831        non_camel_case_types,
6832        non_snake_case,
6833        clippy::pub_underscore_fields,
6834        clippy::style
6835    )]
6836    const _: () = {
6837        use alloy::sol_types as alloy_sol_types;
6838        #[doc(hidden)]
6839        #[allow(dead_code)]
6840        type UnderlyingSolTuple<'a> = ();
6841        #[doc(hidden)]
6842        type UnderlyingRustTuple<'a> = ();
6843        #[cfg(test)]
6844        #[allow(dead_code, unreachable_patterns)]
6845        fn _type_assertion(
6846            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6847        ) {
6848            match _t {
6849                alloy_sol_types::private::AssertTypeEq::<
6850                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6851                >(_) => {}
6852            }
6853        }
6854        #[automatically_derived]
6855        #[doc(hidden)]
6856        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6857            fn from(value: ProverNotPermissioned) -> Self {
6858                ()
6859            }
6860        }
6861        #[automatically_derived]
6862        #[doc(hidden)]
6863        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6864            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6865                Self
6866            }
6867        }
6868        #[automatically_derived]
6869        impl alloy_sol_types::SolError for ProverNotPermissioned {
6870            type Parameters<'a> = UnderlyingSolTuple<'a>;
6871            type Token<'a> = <Self::Parameters<
6872                'a,
6873            > as alloy_sol_types::SolType>::Token<'a>;
6874            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6875            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6876            #[inline]
6877            fn new<'a>(
6878                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6879            ) -> Self {
6880                tuple.into()
6881            }
6882            #[inline]
6883            fn tokenize(&self) -> Self::Token<'_> {
6884                ()
6885            }
6886            #[inline]
6887            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6888                <Self::Parameters<
6889                    '_,
6890                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6891                    .map(Self::new)
6892            }
6893        }
6894    };
6895    #[derive(serde::Serialize, serde::Deserialize)]
6896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6897    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6898```solidity
6899error UUPSUnauthorizedCallContext();
6900```*/
6901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6902    #[derive(Clone)]
6903    pub struct UUPSUnauthorizedCallContext;
6904    #[allow(
6905        non_camel_case_types,
6906        non_snake_case,
6907        clippy::pub_underscore_fields,
6908        clippy::style
6909    )]
6910    const _: () = {
6911        use alloy::sol_types as alloy_sol_types;
6912        #[doc(hidden)]
6913        #[allow(dead_code)]
6914        type UnderlyingSolTuple<'a> = ();
6915        #[doc(hidden)]
6916        type UnderlyingRustTuple<'a> = ();
6917        #[cfg(test)]
6918        #[allow(dead_code, unreachable_patterns)]
6919        fn _type_assertion(
6920            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6921        ) {
6922            match _t {
6923                alloy_sol_types::private::AssertTypeEq::<
6924                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6925                >(_) => {}
6926            }
6927        }
6928        #[automatically_derived]
6929        #[doc(hidden)]
6930        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6931        for UnderlyingRustTuple<'_> {
6932            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6933                ()
6934            }
6935        }
6936        #[automatically_derived]
6937        #[doc(hidden)]
6938        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6939        for UUPSUnauthorizedCallContext {
6940            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6941                Self
6942            }
6943        }
6944        #[automatically_derived]
6945        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6946            type Parameters<'a> = UnderlyingSolTuple<'a>;
6947            type Token<'a> = <Self::Parameters<
6948                'a,
6949            > as alloy_sol_types::SolType>::Token<'a>;
6950            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6951            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6952            #[inline]
6953            fn new<'a>(
6954                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6955            ) -> Self {
6956                tuple.into()
6957            }
6958            #[inline]
6959            fn tokenize(&self) -> Self::Token<'_> {
6960                ()
6961            }
6962            #[inline]
6963            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6964                <Self::Parameters<
6965                    '_,
6966                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6967                    .map(Self::new)
6968            }
6969        }
6970    };
6971    #[derive(serde::Serialize, serde::Deserialize)]
6972    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6973    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6974```solidity
6975error UUPSUnsupportedProxiableUUID(bytes32 slot);
6976```*/
6977    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6978    #[derive(Clone)]
6979    pub struct UUPSUnsupportedProxiableUUID {
6980        #[allow(missing_docs)]
6981        pub slot: alloy::sol_types::private::FixedBytes<32>,
6982    }
6983    #[allow(
6984        non_camel_case_types,
6985        non_snake_case,
6986        clippy::pub_underscore_fields,
6987        clippy::style
6988    )]
6989    const _: () = {
6990        use alloy::sol_types as alloy_sol_types;
6991        #[doc(hidden)]
6992        #[allow(dead_code)]
6993        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6994        #[doc(hidden)]
6995        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6996        #[cfg(test)]
6997        #[allow(dead_code, unreachable_patterns)]
6998        fn _type_assertion(
6999            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7000        ) {
7001            match _t {
7002                alloy_sol_types::private::AssertTypeEq::<
7003                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7004                >(_) => {}
7005            }
7006        }
7007        #[automatically_derived]
7008        #[doc(hidden)]
7009        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7010        for UnderlyingRustTuple<'_> {
7011            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7012                (value.slot,)
7013            }
7014        }
7015        #[automatically_derived]
7016        #[doc(hidden)]
7017        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7018        for UUPSUnsupportedProxiableUUID {
7019            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7020                Self { slot: tuple.0 }
7021            }
7022        }
7023        #[automatically_derived]
7024        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7025            type Parameters<'a> = UnderlyingSolTuple<'a>;
7026            type Token<'a> = <Self::Parameters<
7027                'a,
7028            > as alloy_sol_types::SolType>::Token<'a>;
7029            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7030            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7031            #[inline]
7032            fn new<'a>(
7033                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7034            ) -> Self {
7035                tuple.into()
7036            }
7037            #[inline]
7038            fn tokenize(&self) -> Self::Token<'_> {
7039                (
7040                    <alloy::sol_types::sol_data::FixedBytes<
7041                        32,
7042                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7043                )
7044            }
7045            #[inline]
7046            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7047                <Self::Parameters<
7048                    '_,
7049                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7050                    .map(Self::new)
7051            }
7052        }
7053    };
7054    #[derive(serde::Serialize, serde::Deserialize)]
7055    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7056    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
7057```solidity
7058error WrongStakeTableUsed();
7059```*/
7060    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7061    #[derive(Clone)]
7062    pub struct WrongStakeTableUsed;
7063    #[allow(
7064        non_camel_case_types,
7065        non_snake_case,
7066        clippy::pub_underscore_fields,
7067        clippy::style
7068    )]
7069    const _: () = {
7070        use alloy::sol_types as alloy_sol_types;
7071        #[doc(hidden)]
7072        #[allow(dead_code)]
7073        type UnderlyingSolTuple<'a> = ();
7074        #[doc(hidden)]
7075        type UnderlyingRustTuple<'a> = ();
7076        #[cfg(test)]
7077        #[allow(dead_code, unreachable_patterns)]
7078        fn _type_assertion(
7079            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7080        ) {
7081            match _t {
7082                alloy_sol_types::private::AssertTypeEq::<
7083                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7084                >(_) => {}
7085            }
7086        }
7087        #[automatically_derived]
7088        #[doc(hidden)]
7089        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7090            fn from(value: WrongStakeTableUsed) -> Self {
7091                ()
7092            }
7093        }
7094        #[automatically_derived]
7095        #[doc(hidden)]
7096        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7097            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7098                Self
7099            }
7100        }
7101        #[automatically_derived]
7102        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7103            type Parameters<'a> = UnderlyingSolTuple<'a>;
7104            type Token<'a> = <Self::Parameters<
7105                'a,
7106            > as alloy_sol_types::SolType>::Token<'a>;
7107            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7108            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7109            #[inline]
7110            fn new<'a>(
7111                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7112            ) -> Self {
7113                tuple.into()
7114            }
7115            #[inline]
7116            fn tokenize(&self) -> Self::Token<'_> {
7117                ()
7118            }
7119            #[inline]
7120            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7121                <Self::Parameters<
7122                    '_,
7123                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7124                    .map(Self::new)
7125            }
7126        }
7127    };
7128    #[derive(serde::Serialize, serde::Deserialize)]
7129    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7130    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7131```solidity
7132event Initialized(uint64 version);
7133```*/
7134    #[allow(
7135        non_camel_case_types,
7136        non_snake_case,
7137        clippy::pub_underscore_fields,
7138        clippy::style
7139    )]
7140    #[derive(Clone)]
7141    pub struct Initialized {
7142        #[allow(missing_docs)]
7143        pub version: u64,
7144    }
7145    #[allow(
7146        non_camel_case_types,
7147        non_snake_case,
7148        clippy::pub_underscore_fields,
7149        clippy::style
7150    )]
7151    const _: () = {
7152        use alloy::sol_types as alloy_sol_types;
7153        #[automatically_derived]
7154        impl alloy_sol_types::SolEvent for Initialized {
7155            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7156            type DataToken<'a> = <Self::DataTuple<
7157                'a,
7158            > as alloy_sol_types::SolType>::Token<'a>;
7159            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7160            const SIGNATURE: &'static str = "Initialized(uint64)";
7161            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7162                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7163                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7164                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7165            ]);
7166            const ANONYMOUS: bool = false;
7167            #[allow(unused_variables)]
7168            #[inline]
7169            fn new(
7170                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7171                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7172            ) -> Self {
7173                Self { version: data.0 }
7174            }
7175            #[inline]
7176            fn check_signature(
7177                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7178            ) -> alloy_sol_types::Result<()> {
7179                if topics.0 != Self::SIGNATURE_HASH {
7180                    return Err(
7181                        alloy_sol_types::Error::invalid_event_signature_hash(
7182                            Self::SIGNATURE,
7183                            topics.0,
7184                            Self::SIGNATURE_HASH,
7185                        ),
7186                    );
7187                }
7188                Ok(())
7189            }
7190            #[inline]
7191            fn tokenize_body(&self) -> Self::DataToken<'_> {
7192                (
7193                    <alloy::sol_types::sol_data::Uint<
7194                        64,
7195                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7196                )
7197            }
7198            #[inline]
7199            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7200                (Self::SIGNATURE_HASH.into(),)
7201            }
7202            #[inline]
7203            fn encode_topics_raw(
7204                &self,
7205                out: &mut [alloy_sol_types::abi::token::WordToken],
7206            ) -> alloy_sol_types::Result<()> {
7207                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7208                    return Err(alloy_sol_types::Error::Overrun);
7209                }
7210                out[0usize] = alloy_sol_types::abi::token::WordToken(
7211                    Self::SIGNATURE_HASH,
7212                );
7213                Ok(())
7214            }
7215        }
7216        #[automatically_derived]
7217        impl alloy_sol_types::private::IntoLogData for Initialized {
7218            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7219                From::from(self)
7220            }
7221            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7222                From::from(&self)
7223            }
7224        }
7225        #[automatically_derived]
7226        impl From<&Initialized> for alloy_sol_types::private::LogData {
7227            #[inline]
7228            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7229                alloy_sol_types::SolEvent::encode_log_data(this)
7230            }
7231        }
7232    };
7233    #[derive(serde::Serialize, serde::Deserialize)]
7234    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7235    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7236```solidity
7237event NewEpoch(uint64 epoch);
7238```*/
7239    #[allow(
7240        non_camel_case_types,
7241        non_snake_case,
7242        clippy::pub_underscore_fields,
7243        clippy::style
7244    )]
7245    #[derive(Clone)]
7246    pub struct NewEpoch {
7247        #[allow(missing_docs)]
7248        pub epoch: u64,
7249    }
7250    #[allow(
7251        non_camel_case_types,
7252        non_snake_case,
7253        clippy::pub_underscore_fields,
7254        clippy::style
7255    )]
7256    const _: () = {
7257        use alloy::sol_types as alloy_sol_types;
7258        #[automatically_derived]
7259        impl alloy_sol_types::SolEvent for NewEpoch {
7260            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7261            type DataToken<'a> = <Self::DataTuple<
7262                'a,
7263            > as alloy_sol_types::SolType>::Token<'a>;
7264            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7265            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7266            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7267                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7268                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7269                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7270            ]);
7271            const ANONYMOUS: bool = false;
7272            #[allow(unused_variables)]
7273            #[inline]
7274            fn new(
7275                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7276                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7277            ) -> Self {
7278                Self { epoch: data.0 }
7279            }
7280            #[inline]
7281            fn check_signature(
7282                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7283            ) -> alloy_sol_types::Result<()> {
7284                if topics.0 != Self::SIGNATURE_HASH {
7285                    return Err(
7286                        alloy_sol_types::Error::invalid_event_signature_hash(
7287                            Self::SIGNATURE,
7288                            topics.0,
7289                            Self::SIGNATURE_HASH,
7290                        ),
7291                    );
7292                }
7293                Ok(())
7294            }
7295            #[inline]
7296            fn tokenize_body(&self) -> Self::DataToken<'_> {
7297                (
7298                    <alloy::sol_types::sol_data::Uint<
7299                        64,
7300                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7301                )
7302            }
7303            #[inline]
7304            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7305                (Self::SIGNATURE_HASH.into(),)
7306            }
7307            #[inline]
7308            fn encode_topics_raw(
7309                &self,
7310                out: &mut [alloy_sol_types::abi::token::WordToken],
7311            ) -> alloy_sol_types::Result<()> {
7312                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7313                    return Err(alloy_sol_types::Error::Overrun);
7314                }
7315                out[0usize] = alloy_sol_types::abi::token::WordToken(
7316                    Self::SIGNATURE_HASH,
7317                );
7318                Ok(())
7319            }
7320        }
7321        #[automatically_derived]
7322        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7323            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7324                From::from(self)
7325            }
7326            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7327                From::from(&self)
7328            }
7329        }
7330        #[automatically_derived]
7331        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7332            #[inline]
7333            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7334                alloy_sol_types::SolEvent::encode_log_data(this)
7335            }
7336        }
7337    };
7338    #[derive(serde::Serialize, serde::Deserialize)]
7339    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7340    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7341```solidity
7342event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7343```*/
7344    #[allow(
7345        non_camel_case_types,
7346        non_snake_case,
7347        clippy::pub_underscore_fields,
7348        clippy::style
7349    )]
7350    #[derive(Clone)]
7351    pub struct NewState {
7352        #[allow(missing_docs)]
7353        pub viewNum: u64,
7354        #[allow(missing_docs)]
7355        pub blockHeight: u64,
7356        #[allow(missing_docs)]
7357        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7358    }
7359    #[allow(
7360        non_camel_case_types,
7361        non_snake_case,
7362        clippy::pub_underscore_fields,
7363        clippy::style
7364    )]
7365    const _: () = {
7366        use alloy::sol_types as alloy_sol_types;
7367        #[automatically_derived]
7368        impl alloy_sol_types::SolEvent for NewState {
7369            type DataTuple<'a> = (BN254::ScalarField,);
7370            type DataToken<'a> = <Self::DataTuple<
7371                'a,
7372            > as alloy_sol_types::SolType>::Token<'a>;
7373            type TopicList = (
7374                alloy_sol_types::sol_data::FixedBytes<32>,
7375                alloy::sol_types::sol_data::Uint<64>,
7376                alloy::sol_types::sol_data::Uint<64>,
7377            );
7378            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7379            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7380                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7381                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7382                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7383            ]);
7384            const ANONYMOUS: bool = false;
7385            #[allow(unused_variables)]
7386            #[inline]
7387            fn new(
7388                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7389                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7390            ) -> Self {
7391                Self {
7392                    viewNum: topics.1,
7393                    blockHeight: topics.2,
7394                    blockCommRoot: data.0,
7395                }
7396            }
7397            #[inline]
7398            fn check_signature(
7399                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7400            ) -> alloy_sol_types::Result<()> {
7401                if topics.0 != Self::SIGNATURE_HASH {
7402                    return Err(
7403                        alloy_sol_types::Error::invalid_event_signature_hash(
7404                            Self::SIGNATURE,
7405                            topics.0,
7406                            Self::SIGNATURE_HASH,
7407                        ),
7408                    );
7409                }
7410                Ok(())
7411            }
7412            #[inline]
7413            fn tokenize_body(&self) -> Self::DataToken<'_> {
7414                (
7415                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7416                        &self.blockCommRoot,
7417                    ),
7418                )
7419            }
7420            #[inline]
7421            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7422                (
7423                    Self::SIGNATURE_HASH.into(),
7424                    self.viewNum.clone(),
7425                    self.blockHeight.clone(),
7426                )
7427            }
7428            #[inline]
7429            fn encode_topics_raw(
7430                &self,
7431                out: &mut [alloy_sol_types::abi::token::WordToken],
7432            ) -> alloy_sol_types::Result<()> {
7433                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7434                    return Err(alloy_sol_types::Error::Overrun);
7435                }
7436                out[0usize] = alloy_sol_types::abi::token::WordToken(
7437                    Self::SIGNATURE_HASH,
7438                );
7439                out[1usize] = <alloy::sol_types::sol_data::Uint<
7440                    64,
7441                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7442                out[2usize] = <alloy::sol_types::sol_data::Uint<
7443                    64,
7444                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7445                Ok(())
7446            }
7447        }
7448        #[automatically_derived]
7449        impl alloy_sol_types::private::IntoLogData for NewState {
7450            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7451                From::from(self)
7452            }
7453            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7454                From::from(&self)
7455            }
7456        }
7457        #[automatically_derived]
7458        impl From<&NewState> for alloy_sol_types::private::LogData {
7459            #[inline]
7460            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7461                alloy_sol_types::SolEvent::encode_log_data(this)
7462            }
7463        }
7464    };
7465    #[derive(serde::Serialize, serde::Deserialize)]
7466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7467    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7468```solidity
7469event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7470```*/
7471    #[allow(
7472        non_camel_case_types,
7473        non_snake_case,
7474        clippy::pub_underscore_fields,
7475        clippy::style
7476    )]
7477    #[derive(Clone)]
7478    pub struct OwnershipTransferred {
7479        #[allow(missing_docs)]
7480        pub previousOwner: alloy::sol_types::private::Address,
7481        #[allow(missing_docs)]
7482        pub newOwner: alloy::sol_types::private::Address,
7483    }
7484    #[allow(
7485        non_camel_case_types,
7486        non_snake_case,
7487        clippy::pub_underscore_fields,
7488        clippy::style
7489    )]
7490    const _: () = {
7491        use alloy::sol_types as alloy_sol_types;
7492        #[automatically_derived]
7493        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7494            type DataTuple<'a> = ();
7495            type DataToken<'a> = <Self::DataTuple<
7496                'a,
7497            > as alloy_sol_types::SolType>::Token<'a>;
7498            type TopicList = (
7499                alloy_sol_types::sol_data::FixedBytes<32>,
7500                alloy::sol_types::sol_data::Address,
7501                alloy::sol_types::sol_data::Address,
7502            );
7503            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7504            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7505                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7506                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7507                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7508            ]);
7509            const ANONYMOUS: bool = false;
7510            #[allow(unused_variables)]
7511            #[inline]
7512            fn new(
7513                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7514                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7515            ) -> Self {
7516                Self {
7517                    previousOwner: topics.1,
7518                    newOwner: topics.2,
7519                }
7520            }
7521            #[inline]
7522            fn check_signature(
7523                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7524            ) -> alloy_sol_types::Result<()> {
7525                if topics.0 != Self::SIGNATURE_HASH {
7526                    return Err(
7527                        alloy_sol_types::Error::invalid_event_signature_hash(
7528                            Self::SIGNATURE,
7529                            topics.0,
7530                            Self::SIGNATURE_HASH,
7531                        ),
7532                    );
7533                }
7534                Ok(())
7535            }
7536            #[inline]
7537            fn tokenize_body(&self) -> Self::DataToken<'_> {
7538                ()
7539            }
7540            #[inline]
7541            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7542                (
7543                    Self::SIGNATURE_HASH.into(),
7544                    self.previousOwner.clone(),
7545                    self.newOwner.clone(),
7546                )
7547            }
7548            #[inline]
7549            fn encode_topics_raw(
7550                &self,
7551                out: &mut [alloy_sol_types::abi::token::WordToken],
7552            ) -> alloy_sol_types::Result<()> {
7553                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7554                    return Err(alloy_sol_types::Error::Overrun);
7555                }
7556                out[0usize] = alloy_sol_types::abi::token::WordToken(
7557                    Self::SIGNATURE_HASH,
7558                );
7559                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7560                    &self.previousOwner,
7561                );
7562                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7563                    &self.newOwner,
7564                );
7565                Ok(())
7566            }
7567        }
7568        #[automatically_derived]
7569        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7570            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7571                From::from(self)
7572            }
7573            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7574                From::from(&self)
7575            }
7576        }
7577        #[automatically_derived]
7578        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7579            #[inline]
7580            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7581                alloy_sol_types::SolEvent::encode_log_data(this)
7582            }
7583        }
7584    };
7585    #[derive(serde::Serialize, serde::Deserialize)]
7586    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7587    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7588```solidity
7589event PermissionedProverNotRequired();
7590```*/
7591    #[allow(
7592        non_camel_case_types,
7593        non_snake_case,
7594        clippy::pub_underscore_fields,
7595        clippy::style
7596    )]
7597    #[derive(Clone)]
7598    pub struct PermissionedProverNotRequired;
7599    #[allow(
7600        non_camel_case_types,
7601        non_snake_case,
7602        clippy::pub_underscore_fields,
7603        clippy::style
7604    )]
7605    const _: () = {
7606        use alloy::sol_types as alloy_sol_types;
7607        #[automatically_derived]
7608        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7609            type DataTuple<'a> = ();
7610            type DataToken<'a> = <Self::DataTuple<
7611                'a,
7612            > as alloy_sol_types::SolType>::Token<'a>;
7613            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7614            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7615            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7616                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7617                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7618                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7619            ]);
7620            const ANONYMOUS: bool = false;
7621            #[allow(unused_variables)]
7622            #[inline]
7623            fn new(
7624                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7625                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7626            ) -> Self {
7627                Self {}
7628            }
7629            #[inline]
7630            fn check_signature(
7631                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7632            ) -> alloy_sol_types::Result<()> {
7633                if topics.0 != Self::SIGNATURE_HASH {
7634                    return Err(
7635                        alloy_sol_types::Error::invalid_event_signature_hash(
7636                            Self::SIGNATURE,
7637                            topics.0,
7638                            Self::SIGNATURE_HASH,
7639                        ),
7640                    );
7641                }
7642                Ok(())
7643            }
7644            #[inline]
7645            fn tokenize_body(&self) -> Self::DataToken<'_> {
7646                ()
7647            }
7648            #[inline]
7649            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7650                (Self::SIGNATURE_HASH.into(),)
7651            }
7652            #[inline]
7653            fn encode_topics_raw(
7654                &self,
7655                out: &mut [alloy_sol_types::abi::token::WordToken],
7656            ) -> alloy_sol_types::Result<()> {
7657                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7658                    return Err(alloy_sol_types::Error::Overrun);
7659                }
7660                out[0usize] = alloy_sol_types::abi::token::WordToken(
7661                    Self::SIGNATURE_HASH,
7662                );
7663                Ok(())
7664            }
7665        }
7666        #[automatically_derived]
7667        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7668            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7669                From::from(self)
7670            }
7671            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7672                From::from(&self)
7673            }
7674        }
7675        #[automatically_derived]
7676        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7677            #[inline]
7678            fn from(
7679                this: &PermissionedProverNotRequired,
7680            ) -> alloy_sol_types::private::LogData {
7681                alloy_sol_types::SolEvent::encode_log_data(this)
7682            }
7683        }
7684    };
7685    #[derive(serde::Serialize, serde::Deserialize)]
7686    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7687    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7688```solidity
7689event PermissionedProverRequired(address permissionedProver);
7690```*/
7691    #[allow(
7692        non_camel_case_types,
7693        non_snake_case,
7694        clippy::pub_underscore_fields,
7695        clippy::style
7696    )]
7697    #[derive(Clone)]
7698    pub struct PermissionedProverRequired {
7699        #[allow(missing_docs)]
7700        pub permissionedProver: alloy::sol_types::private::Address,
7701    }
7702    #[allow(
7703        non_camel_case_types,
7704        non_snake_case,
7705        clippy::pub_underscore_fields,
7706        clippy::style
7707    )]
7708    const _: () = {
7709        use alloy::sol_types as alloy_sol_types;
7710        #[automatically_derived]
7711        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7712            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7713            type DataToken<'a> = <Self::DataTuple<
7714                'a,
7715            > as alloy_sol_types::SolType>::Token<'a>;
7716            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7717            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7718            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7719                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7720                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7721                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7722            ]);
7723            const ANONYMOUS: bool = false;
7724            #[allow(unused_variables)]
7725            #[inline]
7726            fn new(
7727                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7728                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7729            ) -> Self {
7730                Self { permissionedProver: data.0 }
7731            }
7732            #[inline]
7733            fn check_signature(
7734                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7735            ) -> alloy_sol_types::Result<()> {
7736                if topics.0 != Self::SIGNATURE_HASH {
7737                    return Err(
7738                        alloy_sol_types::Error::invalid_event_signature_hash(
7739                            Self::SIGNATURE,
7740                            topics.0,
7741                            Self::SIGNATURE_HASH,
7742                        ),
7743                    );
7744                }
7745                Ok(())
7746            }
7747            #[inline]
7748            fn tokenize_body(&self) -> Self::DataToken<'_> {
7749                (
7750                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7751                        &self.permissionedProver,
7752                    ),
7753                )
7754            }
7755            #[inline]
7756            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7757                (Self::SIGNATURE_HASH.into(),)
7758            }
7759            #[inline]
7760            fn encode_topics_raw(
7761                &self,
7762                out: &mut [alloy_sol_types::abi::token::WordToken],
7763            ) -> alloy_sol_types::Result<()> {
7764                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7765                    return Err(alloy_sol_types::Error::Overrun);
7766                }
7767                out[0usize] = alloy_sol_types::abi::token::WordToken(
7768                    Self::SIGNATURE_HASH,
7769                );
7770                Ok(())
7771            }
7772        }
7773        #[automatically_derived]
7774        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7775            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7776                From::from(self)
7777            }
7778            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7779                From::from(&self)
7780            }
7781        }
7782        #[automatically_derived]
7783        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7784            #[inline]
7785            fn from(
7786                this: &PermissionedProverRequired,
7787            ) -> alloy_sol_types::private::LogData {
7788                alloy_sol_types::SolEvent::encode_log_data(this)
7789            }
7790        }
7791    };
7792    #[derive(serde::Serialize, serde::Deserialize)]
7793    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7794    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7795```solidity
7796event Upgrade(address implementation);
7797```*/
7798    #[allow(
7799        non_camel_case_types,
7800        non_snake_case,
7801        clippy::pub_underscore_fields,
7802        clippy::style
7803    )]
7804    #[derive(Clone)]
7805    pub struct Upgrade {
7806        #[allow(missing_docs)]
7807        pub implementation: alloy::sol_types::private::Address,
7808    }
7809    #[allow(
7810        non_camel_case_types,
7811        non_snake_case,
7812        clippy::pub_underscore_fields,
7813        clippy::style
7814    )]
7815    const _: () = {
7816        use alloy::sol_types as alloy_sol_types;
7817        #[automatically_derived]
7818        impl alloy_sol_types::SolEvent for Upgrade {
7819            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7820            type DataToken<'a> = <Self::DataTuple<
7821                'a,
7822            > as alloy_sol_types::SolType>::Token<'a>;
7823            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7824            const SIGNATURE: &'static str = "Upgrade(address)";
7825            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7826                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7827                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7828                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7829            ]);
7830            const ANONYMOUS: bool = false;
7831            #[allow(unused_variables)]
7832            #[inline]
7833            fn new(
7834                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7835                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7836            ) -> Self {
7837                Self { implementation: data.0 }
7838            }
7839            #[inline]
7840            fn check_signature(
7841                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7842            ) -> alloy_sol_types::Result<()> {
7843                if topics.0 != Self::SIGNATURE_HASH {
7844                    return Err(
7845                        alloy_sol_types::Error::invalid_event_signature_hash(
7846                            Self::SIGNATURE,
7847                            topics.0,
7848                            Self::SIGNATURE_HASH,
7849                        ),
7850                    );
7851                }
7852                Ok(())
7853            }
7854            #[inline]
7855            fn tokenize_body(&self) -> Self::DataToken<'_> {
7856                (
7857                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7858                        &self.implementation,
7859                    ),
7860                )
7861            }
7862            #[inline]
7863            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7864                (Self::SIGNATURE_HASH.into(),)
7865            }
7866            #[inline]
7867            fn encode_topics_raw(
7868                &self,
7869                out: &mut [alloy_sol_types::abi::token::WordToken],
7870            ) -> alloy_sol_types::Result<()> {
7871                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7872                    return Err(alloy_sol_types::Error::Overrun);
7873                }
7874                out[0usize] = alloy_sol_types::abi::token::WordToken(
7875                    Self::SIGNATURE_HASH,
7876                );
7877                Ok(())
7878            }
7879        }
7880        #[automatically_derived]
7881        impl alloy_sol_types::private::IntoLogData for Upgrade {
7882            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7883                From::from(self)
7884            }
7885            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7886                From::from(&self)
7887            }
7888        }
7889        #[automatically_derived]
7890        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7891            #[inline]
7892            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7893                alloy_sol_types::SolEvent::encode_log_data(this)
7894            }
7895        }
7896    };
7897    #[derive(serde::Serialize, serde::Deserialize)]
7898    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7899    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7900```solidity
7901event Upgraded(address indexed implementation);
7902```*/
7903    #[allow(
7904        non_camel_case_types,
7905        non_snake_case,
7906        clippy::pub_underscore_fields,
7907        clippy::style
7908    )]
7909    #[derive(Clone)]
7910    pub struct Upgraded {
7911        #[allow(missing_docs)]
7912        pub implementation: alloy::sol_types::private::Address,
7913    }
7914    #[allow(
7915        non_camel_case_types,
7916        non_snake_case,
7917        clippy::pub_underscore_fields,
7918        clippy::style
7919    )]
7920    const _: () = {
7921        use alloy::sol_types as alloy_sol_types;
7922        #[automatically_derived]
7923        impl alloy_sol_types::SolEvent for Upgraded {
7924            type DataTuple<'a> = ();
7925            type DataToken<'a> = <Self::DataTuple<
7926                'a,
7927            > as alloy_sol_types::SolType>::Token<'a>;
7928            type TopicList = (
7929                alloy_sol_types::sol_data::FixedBytes<32>,
7930                alloy::sol_types::sol_data::Address,
7931            );
7932            const SIGNATURE: &'static str = "Upgraded(address)";
7933            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7934                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7935                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7936                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7937            ]);
7938            const ANONYMOUS: bool = false;
7939            #[allow(unused_variables)]
7940            #[inline]
7941            fn new(
7942                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7943                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7944            ) -> Self {
7945                Self { implementation: topics.1 }
7946            }
7947            #[inline]
7948            fn check_signature(
7949                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7950            ) -> alloy_sol_types::Result<()> {
7951                if topics.0 != Self::SIGNATURE_HASH {
7952                    return Err(
7953                        alloy_sol_types::Error::invalid_event_signature_hash(
7954                            Self::SIGNATURE,
7955                            topics.0,
7956                            Self::SIGNATURE_HASH,
7957                        ),
7958                    );
7959                }
7960                Ok(())
7961            }
7962            #[inline]
7963            fn tokenize_body(&self) -> Self::DataToken<'_> {
7964                ()
7965            }
7966            #[inline]
7967            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7968                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7969            }
7970            #[inline]
7971            fn encode_topics_raw(
7972                &self,
7973                out: &mut [alloy_sol_types::abi::token::WordToken],
7974            ) -> alloy_sol_types::Result<()> {
7975                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7976                    return Err(alloy_sol_types::Error::Overrun);
7977                }
7978                out[0usize] = alloy_sol_types::abi::token::WordToken(
7979                    Self::SIGNATURE_HASH,
7980                );
7981                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7982                    &self.implementation,
7983                );
7984                Ok(())
7985            }
7986        }
7987        #[automatically_derived]
7988        impl alloy_sol_types::private::IntoLogData for Upgraded {
7989            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7990                From::from(self)
7991            }
7992            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7993                From::from(&self)
7994            }
7995        }
7996        #[automatically_derived]
7997        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7998            #[inline]
7999            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
8000                alloy_sol_types::SolEvent::encode_log_data(this)
8001            }
8002        }
8003    };
8004    #[derive(serde::Serialize, serde::Deserialize)]
8005    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8006    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
8007```solidity
8008function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
8009```*/
8010    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8011    #[derive(Clone)]
8012    pub struct UPGRADE_INTERFACE_VERSIONCall;
8013    #[derive(serde::Serialize, serde::Deserialize)]
8014    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8015    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
8016    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8017    #[derive(Clone)]
8018    pub struct UPGRADE_INTERFACE_VERSIONReturn {
8019        #[allow(missing_docs)]
8020        pub _0: alloy::sol_types::private::String,
8021    }
8022    #[allow(
8023        non_camel_case_types,
8024        non_snake_case,
8025        clippy::pub_underscore_fields,
8026        clippy::style
8027    )]
8028    const _: () = {
8029        use alloy::sol_types as alloy_sol_types;
8030        {
8031            #[doc(hidden)]
8032            #[allow(dead_code)]
8033            type UnderlyingSolTuple<'a> = ();
8034            #[doc(hidden)]
8035            type UnderlyingRustTuple<'a> = ();
8036            #[cfg(test)]
8037            #[allow(dead_code, unreachable_patterns)]
8038            fn _type_assertion(
8039                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8040            ) {
8041                match _t {
8042                    alloy_sol_types::private::AssertTypeEq::<
8043                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8044                    >(_) => {}
8045                }
8046            }
8047            #[automatically_derived]
8048            #[doc(hidden)]
8049            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
8050            for UnderlyingRustTuple<'_> {
8051                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
8052                    ()
8053                }
8054            }
8055            #[automatically_derived]
8056            #[doc(hidden)]
8057            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8058            for UPGRADE_INTERFACE_VERSIONCall {
8059                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8060                    Self
8061                }
8062            }
8063        }
8064        {
8065            #[doc(hidden)]
8066            #[allow(dead_code)]
8067            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8068            #[doc(hidden)]
8069            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8070            #[cfg(test)]
8071            #[allow(dead_code, unreachable_patterns)]
8072            fn _type_assertion(
8073                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8074            ) {
8075                match _t {
8076                    alloy_sol_types::private::AssertTypeEq::<
8077                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8078                    >(_) => {}
8079                }
8080            }
8081            #[automatically_derived]
8082            #[doc(hidden)]
8083            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8084            for UnderlyingRustTuple<'_> {
8085                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8086                    (value._0,)
8087                }
8088            }
8089            #[automatically_derived]
8090            #[doc(hidden)]
8091            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8092            for UPGRADE_INTERFACE_VERSIONReturn {
8093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8094                    Self { _0: tuple.0 }
8095                }
8096            }
8097        }
8098        #[automatically_derived]
8099        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8100            type Parameters<'a> = ();
8101            type Token<'a> = <Self::Parameters<
8102                'a,
8103            > as alloy_sol_types::SolType>::Token<'a>;
8104            type Return = alloy::sol_types::private::String;
8105            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8106            type ReturnToken<'a> = <Self::ReturnTuple<
8107                'a,
8108            > as alloy_sol_types::SolType>::Token<'a>;
8109            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8110            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8111            #[inline]
8112            fn new<'a>(
8113                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8114            ) -> Self {
8115                tuple.into()
8116            }
8117            #[inline]
8118            fn tokenize(&self) -> Self::Token<'_> {
8119                ()
8120            }
8121            #[inline]
8122            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8123                (
8124                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8125                        ret,
8126                    ),
8127                )
8128            }
8129            #[inline]
8130            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8131                <Self::ReturnTuple<
8132                    '_,
8133                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8134                    .map(|r| {
8135                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8136                        r._0
8137                    })
8138            }
8139            #[inline]
8140            fn abi_decode_returns_validate(
8141                data: &[u8],
8142            ) -> alloy_sol_types::Result<Self::Return> {
8143                <Self::ReturnTuple<
8144                    '_,
8145                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8146                    .map(|r| {
8147                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8148                        r._0
8149                    })
8150            }
8151        }
8152    };
8153    #[derive(serde::Serialize, serde::Deserialize)]
8154    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8155    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8156```solidity
8157function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8158```*/
8159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8160    #[derive(Clone)]
8161    pub struct _getVkCall;
8162    #[derive(serde::Serialize, serde::Deserialize)]
8163    #[derive()]
8164    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8165    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8166    #[derive(Clone)]
8167    pub struct _getVkReturn {
8168        #[allow(missing_docs)]
8169        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8170    }
8171    #[allow(
8172        non_camel_case_types,
8173        non_snake_case,
8174        clippy::pub_underscore_fields,
8175        clippy::style
8176    )]
8177    const _: () = {
8178        use alloy::sol_types as alloy_sol_types;
8179        {
8180            #[doc(hidden)]
8181            #[allow(dead_code)]
8182            type UnderlyingSolTuple<'a> = ();
8183            #[doc(hidden)]
8184            type UnderlyingRustTuple<'a> = ();
8185            #[cfg(test)]
8186            #[allow(dead_code, unreachable_patterns)]
8187            fn _type_assertion(
8188                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8189            ) {
8190                match _t {
8191                    alloy_sol_types::private::AssertTypeEq::<
8192                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8193                    >(_) => {}
8194                }
8195            }
8196            #[automatically_derived]
8197            #[doc(hidden)]
8198            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8199                fn from(value: _getVkCall) -> Self {
8200                    ()
8201                }
8202            }
8203            #[automatically_derived]
8204            #[doc(hidden)]
8205            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8206                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8207                    Self
8208                }
8209            }
8210        }
8211        {
8212            #[doc(hidden)]
8213            #[allow(dead_code)]
8214            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8215            #[doc(hidden)]
8216            type UnderlyingRustTuple<'a> = (
8217                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8218            );
8219            #[cfg(test)]
8220            #[allow(dead_code, unreachable_patterns)]
8221            fn _type_assertion(
8222                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8223            ) {
8224                match _t {
8225                    alloy_sol_types::private::AssertTypeEq::<
8226                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8227                    >(_) => {}
8228                }
8229            }
8230            #[automatically_derived]
8231            #[doc(hidden)]
8232            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8233                fn from(value: _getVkReturn) -> Self {
8234                    (value.vk,)
8235                }
8236            }
8237            #[automatically_derived]
8238            #[doc(hidden)]
8239            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8240                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8241                    Self { vk: tuple.0 }
8242                }
8243            }
8244        }
8245        #[automatically_derived]
8246        impl alloy_sol_types::SolCall for _getVkCall {
8247            type Parameters<'a> = ();
8248            type Token<'a> = <Self::Parameters<
8249                'a,
8250            > as alloy_sol_types::SolType>::Token<'a>;
8251            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8252            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8253            type ReturnToken<'a> = <Self::ReturnTuple<
8254                'a,
8255            > as alloy_sol_types::SolType>::Token<'a>;
8256            const SIGNATURE: &'static str = "_getVk()";
8257            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8258            #[inline]
8259            fn new<'a>(
8260                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8261            ) -> Self {
8262                tuple.into()
8263            }
8264            #[inline]
8265            fn tokenize(&self) -> Self::Token<'_> {
8266                ()
8267            }
8268            #[inline]
8269            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8270                (
8271                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8272                        ret,
8273                    ),
8274                )
8275            }
8276            #[inline]
8277            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8278                <Self::ReturnTuple<
8279                    '_,
8280                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8281                    .map(|r| {
8282                        let r: _getVkReturn = r.into();
8283                        r.vk
8284                    })
8285            }
8286            #[inline]
8287            fn abi_decode_returns_validate(
8288                data: &[u8],
8289            ) -> alloy_sol_types::Result<Self::Return> {
8290                <Self::ReturnTuple<
8291                    '_,
8292                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8293                    .map(|r| {
8294                        let r: _getVkReturn = r.into();
8295                        r.vk
8296                    })
8297            }
8298        }
8299    };
8300    #[derive(serde::Serialize, serde::Deserialize)]
8301    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8302    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8303```solidity
8304function blocksPerEpoch() external view returns (uint64);
8305```*/
8306    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8307    #[derive(Clone)]
8308    pub struct blocksPerEpochCall;
8309    #[derive(serde::Serialize, serde::Deserialize)]
8310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8311    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8312    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8313    #[derive(Clone)]
8314    pub struct blocksPerEpochReturn {
8315        #[allow(missing_docs)]
8316        pub _0: u64,
8317    }
8318    #[allow(
8319        non_camel_case_types,
8320        non_snake_case,
8321        clippy::pub_underscore_fields,
8322        clippy::style
8323    )]
8324    const _: () = {
8325        use alloy::sol_types as alloy_sol_types;
8326        {
8327            #[doc(hidden)]
8328            #[allow(dead_code)]
8329            type UnderlyingSolTuple<'a> = ();
8330            #[doc(hidden)]
8331            type UnderlyingRustTuple<'a> = ();
8332            #[cfg(test)]
8333            #[allow(dead_code, unreachable_patterns)]
8334            fn _type_assertion(
8335                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8336            ) {
8337                match _t {
8338                    alloy_sol_types::private::AssertTypeEq::<
8339                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8340                    >(_) => {}
8341                }
8342            }
8343            #[automatically_derived]
8344            #[doc(hidden)]
8345            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8346                fn from(value: blocksPerEpochCall) -> Self {
8347                    ()
8348                }
8349            }
8350            #[automatically_derived]
8351            #[doc(hidden)]
8352            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8353                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8354                    Self
8355                }
8356            }
8357        }
8358        {
8359            #[doc(hidden)]
8360            #[allow(dead_code)]
8361            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8362            #[doc(hidden)]
8363            type UnderlyingRustTuple<'a> = (u64,);
8364            #[cfg(test)]
8365            #[allow(dead_code, unreachable_patterns)]
8366            fn _type_assertion(
8367                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8368            ) {
8369                match _t {
8370                    alloy_sol_types::private::AssertTypeEq::<
8371                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8372                    >(_) => {}
8373                }
8374            }
8375            #[automatically_derived]
8376            #[doc(hidden)]
8377            impl ::core::convert::From<blocksPerEpochReturn>
8378            for UnderlyingRustTuple<'_> {
8379                fn from(value: blocksPerEpochReturn) -> Self {
8380                    (value._0,)
8381                }
8382            }
8383            #[automatically_derived]
8384            #[doc(hidden)]
8385            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8386            for blocksPerEpochReturn {
8387                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8388                    Self { _0: tuple.0 }
8389                }
8390            }
8391        }
8392        #[automatically_derived]
8393        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8394            type Parameters<'a> = ();
8395            type Token<'a> = <Self::Parameters<
8396                'a,
8397            > as alloy_sol_types::SolType>::Token<'a>;
8398            type Return = u64;
8399            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8400            type ReturnToken<'a> = <Self::ReturnTuple<
8401                'a,
8402            > as alloy_sol_types::SolType>::Token<'a>;
8403            const SIGNATURE: &'static str = "blocksPerEpoch()";
8404            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8405            #[inline]
8406            fn new<'a>(
8407                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8408            ) -> Self {
8409                tuple.into()
8410            }
8411            #[inline]
8412            fn tokenize(&self) -> Self::Token<'_> {
8413                ()
8414            }
8415            #[inline]
8416            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8417                (
8418                    <alloy::sol_types::sol_data::Uint<
8419                        64,
8420                    > as alloy_sol_types::SolType>::tokenize(ret),
8421                )
8422            }
8423            #[inline]
8424            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8425                <Self::ReturnTuple<
8426                    '_,
8427                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8428                    .map(|r| {
8429                        let r: blocksPerEpochReturn = r.into();
8430                        r._0
8431                    })
8432            }
8433            #[inline]
8434            fn abi_decode_returns_validate(
8435                data: &[u8],
8436            ) -> alloy_sol_types::Result<Self::Return> {
8437                <Self::ReturnTuple<
8438                    '_,
8439                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8440                    .map(|r| {
8441                        let r: blocksPerEpochReturn = r.into();
8442                        r._0
8443                    })
8444            }
8445        }
8446    };
8447    #[derive(serde::Serialize, serde::Deserialize)]
8448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8449    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8450```solidity
8451function currentBlockNumber() external view returns (uint256);
8452```*/
8453    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8454    #[derive(Clone)]
8455    pub struct currentBlockNumberCall;
8456    #[derive(serde::Serialize, serde::Deserialize)]
8457    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8458    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8459    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8460    #[derive(Clone)]
8461    pub struct currentBlockNumberReturn {
8462        #[allow(missing_docs)]
8463        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8464    }
8465    #[allow(
8466        non_camel_case_types,
8467        non_snake_case,
8468        clippy::pub_underscore_fields,
8469        clippy::style
8470    )]
8471    const _: () = {
8472        use alloy::sol_types as alloy_sol_types;
8473        {
8474            #[doc(hidden)]
8475            #[allow(dead_code)]
8476            type UnderlyingSolTuple<'a> = ();
8477            #[doc(hidden)]
8478            type UnderlyingRustTuple<'a> = ();
8479            #[cfg(test)]
8480            #[allow(dead_code, unreachable_patterns)]
8481            fn _type_assertion(
8482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8483            ) {
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<currentBlockNumberCall>
8493            for UnderlyingRustTuple<'_> {
8494                fn from(value: currentBlockNumberCall) -> Self {
8495                    ()
8496                }
8497            }
8498            #[automatically_derived]
8499            #[doc(hidden)]
8500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8501            for currentBlockNumberCall {
8502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8503                    Self
8504                }
8505            }
8506        }
8507        {
8508            #[doc(hidden)]
8509            #[allow(dead_code)]
8510            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8511            #[doc(hidden)]
8512            type UnderlyingRustTuple<'a> = (
8513                alloy::sol_types::private::primitives::aliases::U256,
8514            );
8515            #[cfg(test)]
8516            #[allow(dead_code, unreachable_patterns)]
8517            fn _type_assertion(
8518                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8519            ) {
8520                match _t {
8521                    alloy_sol_types::private::AssertTypeEq::<
8522                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8523                    >(_) => {}
8524                }
8525            }
8526            #[automatically_derived]
8527            #[doc(hidden)]
8528            impl ::core::convert::From<currentBlockNumberReturn>
8529            for UnderlyingRustTuple<'_> {
8530                fn from(value: currentBlockNumberReturn) -> Self {
8531                    (value._0,)
8532                }
8533            }
8534            #[automatically_derived]
8535            #[doc(hidden)]
8536            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8537            for currentBlockNumberReturn {
8538                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8539                    Self { _0: tuple.0 }
8540                }
8541            }
8542        }
8543        #[automatically_derived]
8544        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8545            type Parameters<'a> = ();
8546            type Token<'a> = <Self::Parameters<
8547                'a,
8548            > as alloy_sol_types::SolType>::Token<'a>;
8549            type Return = alloy::sol_types::private::primitives::aliases::U256;
8550            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8551            type ReturnToken<'a> = <Self::ReturnTuple<
8552                'a,
8553            > as alloy_sol_types::SolType>::Token<'a>;
8554            const SIGNATURE: &'static str = "currentBlockNumber()";
8555            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8556            #[inline]
8557            fn new<'a>(
8558                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8559            ) -> Self {
8560                tuple.into()
8561            }
8562            #[inline]
8563            fn tokenize(&self) -> Self::Token<'_> {
8564                ()
8565            }
8566            #[inline]
8567            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8568                (
8569                    <alloy::sol_types::sol_data::Uint<
8570                        256,
8571                    > as alloy_sol_types::SolType>::tokenize(ret),
8572                )
8573            }
8574            #[inline]
8575            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8576                <Self::ReturnTuple<
8577                    '_,
8578                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8579                    .map(|r| {
8580                        let r: currentBlockNumberReturn = r.into();
8581                        r._0
8582                    })
8583            }
8584            #[inline]
8585            fn abi_decode_returns_validate(
8586                data: &[u8],
8587            ) -> alloy_sol_types::Result<Self::Return> {
8588                <Self::ReturnTuple<
8589                    '_,
8590                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8591                    .map(|r| {
8592                        let r: currentBlockNumberReturn = r.into();
8593                        r._0
8594                    })
8595            }
8596        }
8597    };
8598    #[derive(serde::Serialize, serde::Deserialize)]
8599    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8600    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8601```solidity
8602function currentEpoch() external view returns (uint64);
8603```*/
8604    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8605    #[derive(Clone)]
8606    pub struct currentEpochCall;
8607    #[derive(serde::Serialize, serde::Deserialize)]
8608    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8609    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8610    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8611    #[derive(Clone)]
8612    pub struct currentEpochReturn {
8613        #[allow(missing_docs)]
8614        pub _0: u64,
8615    }
8616    #[allow(
8617        non_camel_case_types,
8618        non_snake_case,
8619        clippy::pub_underscore_fields,
8620        clippy::style
8621    )]
8622    const _: () = {
8623        use alloy::sol_types as alloy_sol_types;
8624        {
8625            #[doc(hidden)]
8626            #[allow(dead_code)]
8627            type UnderlyingSolTuple<'a> = ();
8628            #[doc(hidden)]
8629            type UnderlyingRustTuple<'a> = ();
8630            #[cfg(test)]
8631            #[allow(dead_code, unreachable_patterns)]
8632            fn _type_assertion(
8633                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8634            ) {
8635                match _t {
8636                    alloy_sol_types::private::AssertTypeEq::<
8637                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8638                    >(_) => {}
8639                }
8640            }
8641            #[automatically_derived]
8642            #[doc(hidden)]
8643            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8644                fn from(value: currentEpochCall) -> Self {
8645                    ()
8646                }
8647            }
8648            #[automatically_derived]
8649            #[doc(hidden)]
8650            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8651                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8652                    Self
8653                }
8654            }
8655        }
8656        {
8657            #[doc(hidden)]
8658            #[allow(dead_code)]
8659            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8660            #[doc(hidden)]
8661            type UnderlyingRustTuple<'a> = (u64,);
8662            #[cfg(test)]
8663            #[allow(dead_code, unreachable_patterns)]
8664            fn _type_assertion(
8665                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8666            ) {
8667                match _t {
8668                    alloy_sol_types::private::AssertTypeEq::<
8669                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8670                    >(_) => {}
8671                }
8672            }
8673            #[automatically_derived]
8674            #[doc(hidden)]
8675            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8676                fn from(value: currentEpochReturn) -> Self {
8677                    (value._0,)
8678                }
8679            }
8680            #[automatically_derived]
8681            #[doc(hidden)]
8682            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8683                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8684                    Self { _0: tuple.0 }
8685                }
8686            }
8687        }
8688        #[automatically_derived]
8689        impl alloy_sol_types::SolCall for currentEpochCall {
8690            type Parameters<'a> = ();
8691            type Token<'a> = <Self::Parameters<
8692                'a,
8693            > as alloy_sol_types::SolType>::Token<'a>;
8694            type Return = u64;
8695            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8696            type ReturnToken<'a> = <Self::ReturnTuple<
8697                'a,
8698            > as alloy_sol_types::SolType>::Token<'a>;
8699            const SIGNATURE: &'static str = "currentEpoch()";
8700            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8701            #[inline]
8702            fn new<'a>(
8703                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8704            ) -> Self {
8705                tuple.into()
8706            }
8707            #[inline]
8708            fn tokenize(&self) -> Self::Token<'_> {
8709                ()
8710            }
8711            #[inline]
8712            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8713                (
8714                    <alloy::sol_types::sol_data::Uint<
8715                        64,
8716                    > as alloy_sol_types::SolType>::tokenize(ret),
8717                )
8718            }
8719            #[inline]
8720            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8721                <Self::ReturnTuple<
8722                    '_,
8723                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8724                    .map(|r| {
8725                        let r: currentEpochReturn = r.into();
8726                        r._0
8727                    })
8728            }
8729            #[inline]
8730            fn abi_decode_returns_validate(
8731                data: &[u8],
8732            ) -> alloy_sol_types::Result<Self::Return> {
8733                <Self::ReturnTuple<
8734                    '_,
8735                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8736                    .map(|r| {
8737                        let r: currentEpochReturn = r.into();
8738                        r._0
8739                    })
8740            }
8741        }
8742    };
8743    #[derive(serde::Serialize, serde::Deserialize)]
8744    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8745    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8746```solidity
8747function disablePermissionedProverMode() external;
8748```*/
8749    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8750    #[derive(Clone)]
8751    pub struct disablePermissionedProverModeCall;
8752    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8754    #[derive(Clone)]
8755    pub struct disablePermissionedProverModeReturn {}
8756    #[allow(
8757        non_camel_case_types,
8758        non_snake_case,
8759        clippy::pub_underscore_fields,
8760        clippy::style
8761    )]
8762    const _: () = {
8763        use alloy::sol_types as alloy_sol_types;
8764        {
8765            #[doc(hidden)]
8766            #[allow(dead_code)]
8767            type UnderlyingSolTuple<'a> = ();
8768            #[doc(hidden)]
8769            type UnderlyingRustTuple<'a> = ();
8770            #[cfg(test)]
8771            #[allow(dead_code, unreachable_patterns)]
8772            fn _type_assertion(
8773                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8774            ) {
8775                match _t {
8776                    alloy_sol_types::private::AssertTypeEq::<
8777                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8778                    >(_) => {}
8779                }
8780            }
8781            #[automatically_derived]
8782            #[doc(hidden)]
8783            impl ::core::convert::From<disablePermissionedProverModeCall>
8784            for UnderlyingRustTuple<'_> {
8785                fn from(value: disablePermissionedProverModeCall) -> Self {
8786                    ()
8787                }
8788            }
8789            #[automatically_derived]
8790            #[doc(hidden)]
8791            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8792            for disablePermissionedProverModeCall {
8793                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8794                    Self
8795                }
8796            }
8797        }
8798        {
8799            #[doc(hidden)]
8800            #[allow(dead_code)]
8801            type UnderlyingSolTuple<'a> = ();
8802            #[doc(hidden)]
8803            type UnderlyingRustTuple<'a> = ();
8804            #[cfg(test)]
8805            #[allow(dead_code, unreachable_patterns)]
8806            fn _type_assertion(
8807                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8808            ) {
8809                match _t {
8810                    alloy_sol_types::private::AssertTypeEq::<
8811                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8812                    >(_) => {}
8813                }
8814            }
8815            #[automatically_derived]
8816            #[doc(hidden)]
8817            impl ::core::convert::From<disablePermissionedProverModeReturn>
8818            for UnderlyingRustTuple<'_> {
8819                fn from(value: disablePermissionedProverModeReturn) -> Self {
8820                    ()
8821                }
8822            }
8823            #[automatically_derived]
8824            #[doc(hidden)]
8825            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8826            for disablePermissionedProverModeReturn {
8827                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8828                    Self {}
8829                }
8830            }
8831        }
8832        impl disablePermissionedProverModeReturn {
8833            fn _tokenize(
8834                &self,
8835            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8836                '_,
8837            > {
8838                ()
8839            }
8840        }
8841        #[automatically_derived]
8842        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8843            type Parameters<'a> = ();
8844            type Token<'a> = <Self::Parameters<
8845                'a,
8846            > as alloy_sol_types::SolType>::Token<'a>;
8847            type Return = disablePermissionedProverModeReturn;
8848            type ReturnTuple<'a> = ();
8849            type ReturnToken<'a> = <Self::ReturnTuple<
8850                'a,
8851            > as alloy_sol_types::SolType>::Token<'a>;
8852            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8853            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8854            #[inline]
8855            fn new<'a>(
8856                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8857            ) -> Self {
8858                tuple.into()
8859            }
8860            #[inline]
8861            fn tokenize(&self) -> Self::Token<'_> {
8862                ()
8863            }
8864            #[inline]
8865            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8866                disablePermissionedProverModeReturn::_tokenize(ret)
8867            }
8868            #[inline]
8869            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8870                <Self::ReturnTuple<
8871                    '_,
8872                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8873                    .map(Into::into)
8874            }
8875            #[inline]
8876            fn abi_decode_returns_validate(
8877                data: &[u8],
8878            ) -> alloy_sol_types::Result<Self::Return> {
8879                <Self::ReturnTuple<
8880                    '_,
8881                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8882                    .map(Into::into)
8883            }
8884        }
8885    };
8886    #[derive(serde::Serialize, serde::Deserialize)]
8887    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8888    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8889```solidity
8890function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8891```*/
8892    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8893    #[derive(Clone)]
8894    pub struct epochFromBlockNumberCall {
8895        #[allow(missing_docs)]
8896        pub _blockNum: u64,
8897        #[allow(missing_docs)]
8898        pub _blocksPerEpoch: u64,
8899    }
8900    #[derive(serde::Serialize, serde::Deserialize)]
8901    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8902    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8903    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8904    #[derive(Clone)]
8905    pub struct epochFromBlockNumberReturn {
8906        #[allow(missing_docs)]
8907        pub _0: u64,
8908    }
8909    #[allow(
8910        non_camel_case_types,
8911        non_snake_case,
8912        clippy::pub_underscore_fields,
8913        clippy::style
8914    )]
8915    const _: () = {
8916        use alloy::sol_types as alloy_sol_types;
8917        {
8918            #[doc(hidden)]
8919            #[allow(dead_code)]
8920            type UnderlyingSolTuple<'a> = (
8921                alloy::sol_types::sol_data::Uint<64>,
8922                alloy::sol_types::sol_data::Uint<64>,
8923            );
8924            #[doc(hidden)]
8925            type UnderlyingRustTuple<'a> = (u64, u64);
8926            #[cfg(test)]
8927            #[allow(dead_code, unreachable_patterns)]
8928            fn _type_assertion(
8929                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8930            ) {
8931                match _t {
8932                    alloy_sol_types::private::AssertTypeEq::<
8933                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8934                    >(_) => {}
8935                }
8936            }
8937            #[automatically_derived]
8938            #[doc(hidden)]
8939            impl ::core::convert::From<epochFromBlockNumberCall>
8940            for UnderlyingRustTuple<'_> {
8941                fn from(value: epochFromBlockNumberCall) -> Self {
8942                    (value._blockNum, value._blocksPerEpoch)
8943                }
8944            }
8945            #[automatically_derived]
8946            #[doc(hidden)]
8947            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8948            for epochFromBlockNumberCall {
8949                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8950                    Self {
8951                        _blockNum: tuple.0,
8952                        _blocksPerEpoch: tuple.1,
8953                    }
8954                }
8955            }
8956        }
8957        {
8958            #[doc(hidden)]
8959            #[allow(dead_code)]
8960            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8961            #[doc(hidden)]
8962            type UnderlyingRustTuple<'a> = (u64,);
8963            #[cfg(test)]
8964            #[allow(dead_code, unreachable_patterns)]
8965            fn _type_assertion(
8966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8967            ) {
8968                match _t {
8969                    alloy_sol_types::private::AssertTypeEq::<
8970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8971                    >(_) => {}
8972                }
8973            }
8974            #[automatically_derived]
8975            #[doc(hidden)]
8976            impl ::core::convert::From<epochFromBlockNumberReturn>
8977            for UnderlyingRustTuple<'_> {
8978                fn from(value: epochFromBlockNumberReturn) -> Self {
8979                    (value._0,)
8980                }
8981            }
8982            #[automatically_derived]
8983            #[doc(hidden)]
8984            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8985            for epochFromBlockNumberReturn {
8986                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8987                    Self { _0: tuple.0 }
8988                }
8989            }
8990        }
8991        #[automatically_derived]
8992        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
8993            type Parameters<'a> = (
8994                alloy::sol_types::sol_data::Uint<64>,
8995                alloy::sol_types::sol_data::Uint<64>,
8996            );
8997            type Token<'a> = <Self::Parameters<
8998                'a,
8999            > as alloy_sol_types::SolType>::Token<'a>;
9000            type Return = u64;
9001            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9002            type ReturnToken<'a> = <Self::ReturnTuple<
9003                'a,
9004            > as alloy_sol_types::SolType>::Token<'a>;
9005            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9006            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9007            #[inline]
9008            fn new<'a>(
9009                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9010            ) -> Self {
9011                tuple.into()
9012            }
9013            #[inline]
9014            fn tokenize(&self) -> Self::Token<'_> {
9015                (
9016                    <alloy::sol_types::sol_data::Uint<
9017                        64,
9018                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9019                    <alloy::sol_types::sol_data::Uint<
9020                        64,
9021                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9022                )
9023            }
9024            #[inline]
9025            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9026                (
9027                    <alloy::sol_types::sol_data::Uint<
9028                        64,
9029                    > as alloy_sol_types::SolType>::tokenize(ret),
9030                )
9031            }
9032            #[inline]
9033            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9034                <Self::ReturnTuple<
9035                    '_,
9036                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9037                    .map(|r| {
9038                        let r: epochFromBlockNumberReturn = r.into();
9039                        r._0
9040                    })
9041            }
9042            #[inline]
9043            fn abi_decode_returns_validate(
9044                data: &[u8],
9045            ) -> alloy_sol_types::Result<Self::Return> {
9046                <Self::ReturnTuple<
9047                    '_,
9048                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9049                    .map(|r| {
9050                        let r: epochFromBlockNumberReturn = r.into();
9051                        r._0
9052                    })
9053            }
9054        }
9055    };
9056    #[derive(serde::Serialize, serde::Deserialize)]
9057    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9058    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9059```solidity
9060function epochStartBlock() external view returns (uint64);
9061```*/
9062    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9063    #[derive(Clone)]
9064    pub struct epochStartBlockCall;
9065    #[derive(serde::Serialize, serde::Deserialize)]
9066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9067    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9069    #[derive(Clone)]
9070    pub struct epochStartBlockReturn {
9071        #[allow(missing_docs)]
9072        pub _0: u64,
9073    }
9074    #[allow(
9075        non_camel_case_types,
9076        non_snake_case,
9077        clippy::pub_underscore_fields,
9078        clippy::style
9079    )]
9080    const _: () = {
9081        use alloy::sol_types as alloy_sol_types;
9082        {
9083            #[doc(hidden)]
9084            #[allow(dead_code)]
9085            type UnderlyingSolTuple<'a> = ();
9086            #[doc(hidden)]
9087            type UnderlyingRustTuple<'a> = ();
9088            #[cfg(test)]
9089            #[allow(dead_code, unreachable_patterns)]
9090            fn _type_assertion(
9091                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9092            ) {
9093                match _t {
9094                    alloy_sol_types::private::AssertTypeEq::<
9095                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9096                    >(_) => {}
9097                }
9098            }
9099            #[automatically_derived]
9100            #[doc(hidden)]
9101            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9102                fn from(value: epochStartBlockCall) -> Self {
9103                    ()
9104                }
9105            }
9106            #[automatically_derived]
9107            #[doc(hidden)]
9108            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9109                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9110                    Self
9111                }
9112            }
9113        }
9114        {
9115            #[doc(hidden)]
9116            #[allow(dead_code)]
9117            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9118            #[doc(hidden)]
9119            type UnderlyingRustTuple<'a> = (u64,);
9120            #[cfg(test)]
9121            #[allow(dead_code, unreachable_patterns)]
9122            fn _type_assertion(
9123                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9124            ) {
9125                match _t {
9126                    alloy_sol_types::private::AssertTypeEq::<
9127                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9128                    >(_) => {}
9129                }
9130            }
9131            #[automatically_derived]
9132            #[doc(hidden)]
9133            impl ::core::convert::From<epochStartBlockReturn>
9134            for UnderlyingRustTuple<'_> {
9135                fn from(value: epochStartBlockReturn) -> Self {
9136                    (value._0,)
9137                }
9138            }
9139            #[automatically_derived]
9140            #[doc(hidden)]
9141            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9142            for epochStartBlockReturn {
9143                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9144                    Self { _0: tuple.0 }
9145                }
9146            }
9147        }
9148        #[automatically_derived]
9149        impl alloy_sol_types::SolCall for epochStartBlockCall {
9150            type Parameters<'a> = ();
9151            type Token<'a> = <Self::Parameters<
9152                'a,
9153            > as alloy_sol_types::SolType>::Token<'a>;
9154            type Return = u64;
9155            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9156            type ReturnToken<'a> = <Self::ReturnTuple<
9157                'a,
9158            > as alloy_sol_types::SolType>::Token<'a>;
9159            const SIGNATURE: &'static str = "epochStartBlock()";
9160            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9161            #[inline]
9162            fn new<'a>(
9163                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9164            ) -> Self {
9165                tuple.into()
9166            }
9167            #[inline]
9168            fn tokenize(&self) -> Self::Token<'_> {
9169                ()
9170            }
9171            #[inline]
9172            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9173                (
9174                    <alloy::sol_types::sol_data::Uint<
9175                        64,
9176                    > as alloy_sol_types::SolType>::tokenize(ret),
9177                )
9178            }
9179            #[inline]
9180            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9181                <Self::ReturnTuple<
9182                    '_,
9183                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9184                    .map(|r| {
9185                        let r: epochStartBlockReturn = r.into();
9186                        r._0
9187                    })
9188            }
9189            #[inline]
9190            fn abi_decode_returns_validate(
9191                data: &[u8],
9192            ) -> alloy_sol_types::Result<Self::Return> {
9193                <Self::ReturnTuple<
9194                    '_,
9195                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9196                    .map(|r| {
9197                        let r: epochStartBlockReturn = r.into();
9198                        r._0
9199                    })
9200            }
9201        }
9202    };
9203    #[derive(serde::Serialize, serde::Deserialize)]
9204    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9205    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9206```solidity
9207function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9208```*/
9209    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9210    #[derive(Clone)]
9211    pub struct finalizedStateCall;
9212    #[derive(serde::Serialize, serde::Deserialize)]
9213    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9214    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9216    #[derive(Clone)]
9217    pub struct finalizedStateReturn {
9218        #[allow(missing_docs)]
9219        pub viewNum: u64,
9220        #[allow(missing_docs)]
9221        pub blockHeight: u64,
9222        #[allow(missing_docs)]
9223        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9224    }
9225    #[allow(
9226        non_camel_case_types,
9227        non_snake_case,
9228        clippy::pub_underscore_fields,
9229        clippy::style
9230    )]
9231    const _: () = {
9232        use alloy::sol_types as alloy_sol_types;
9233        {
9234            #[doc(hidden)]
9235            #[allow(dead_code)]
9236            type UnderlyingSolTuple<'a> = ();
9237            #[doc(hidden)]
9238            type UnderlyingRustTuple<'a> = ();
9239            #[cfg(test)]
9240            #[allow(dead_code, unreachable_patterns)]
9241            fn _type_assertion(
9242                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9243            ) {
9244                match _t {
9245                    alloy_sol_types::private::AssertTypeEq::<
9246                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9247                    >(_) => {}
9248                }
9249            }
9250            #[automatically_derived]
9251            #[doc(hidden)]
9252            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9253                fn from(value: finalizedStateCall) -> Self {
9254                    ()
9255                }
9256            }
9257            #[automatically_derived]
9258            #[doc(hidden)]
9259            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9260                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9261                    Self
9262                }
9263            }
9264        }
9265        {
9266            #[doc(hidden)]
9267            #[allow(dead_code)]
9268            type UnderlyingSolTuple<'a> = (
9269                alloy::sol_types::sol_data::Uint<64>,
9270                alloy::sol_types::sol_data::Uint<64>,
9271                BN254::ScalarField,
9272            );
9273            #[doc(hidden)]
9274            type UnderlyingRustTuple<'a> = (
9275                u64,
9276                u64,
9277                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9278            );
9279            #[cfg(test)]
9280            #[allow(dead_code, unreachable_patterns)]
9281            fn _type_assertion(
9282                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9283            ) {
9284                match _t {
9285                    alloy_sol_types::private::AssertTypeEq::<
9286                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9287                    >(_) => {}
9288                }
9289            }
9290            #[automatically_derived]
9291            #[doc(hidden)]
9292            impl ::core::convert::From<finalizedStateReturn>
9293            for UnderlyingRustTuple<'_> {
9294                fn from(value: finalizedStateReturn) -> Self {
9295                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9296                }
9297            }
9298            #[automatically_derived]
9299            #[doc(hidden)]
9300            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9301            for finalizedStateReturn {
9302                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9303                    Self {
9304                        viewNum: tuple.0,
9305                        blockHeight: tuple.1,
9306                        blockCommRoot: tuple.2,
9307                    }
9308                }
9309            }
9310        }
9311        impl finalizedStateReturn {
9312            fn _tokenize(
9313                &self,
9314            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9315                (
9316                    <alloy::sol_types::sol_data::Uint<
9317                        64,
9318                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9319                    <alloy::sol_types::sol_data::Uint<
9320                        64,
9321                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9322                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9323                        &self.blockCommRoot,
9324                    ),
9325                )
9326            }
9327        }
9328        #[automatically_derived]
9329        impl alloy_sol_types::SolCall for finalizedStateCall {
9330            type Parameters<'a> = ();
9331            type Token<'a> = <Self::Parameters<
9332                'a,
9333            > as alloy_sol_types::SolType>::Token<'a>;
9334            type Return = finalizedStateReturn;
9335            type ReturnTuple<'a> = (
9336                alloy::sol_types::sol_data::Uint<64>,
9337                alloy::sol_types::sol_data::Uint<64>,
9338                BN254::ScalarField,
9339            );
9340            type ReturnToken<'a> = <Self::ReturnTuple<
9341                'a,
9342            > as alloy_sol_types::SolType>::Token<'a>;
9343            const SIGNATURE: &'static str = "finalizedState()";
9344            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9345            #[inline]
9346            fn new<'a>(
9347                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9348            ) -> Self {
9349                tuple.into()
9350            }
9351            #[inline]
9352            fn tokenize(&self) -> Self::Token<'_> {
9353                ()
9354            }
9355            #[inline]
9356            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9357                finalizedStateReturn::_tokenize(ret)
9358            }
9359            #[inline]
9360            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9361                <Self::ReturnTuple<
9362                    '_,
9363                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9364                    .map(Into::into)
9365            }
9366            #[inline]
9367            fn abi_decode_returns_validate(
9368                data: &[u8],
9369            ) -> alloy_sol_types::Result<Self::Return> {
9370                <Self::ReturnTuple<
9371                    '_,
9372                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9373                    .map(Into::into)
9374            }
9375        }
9376    };
9377    #[derive(serde::Serialize, serde::Deserialize)]
9378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9379    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9380```solidity
9381function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9382```*/
9383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9384    #[derive(Clone)]
9385    pub struct genesisStakeTableStateCall;
9386    #[derive(serde::Serialize, serde::Deserialize)]
9387    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9388    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9389    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9390    #[derive(Clone)]
9391    pub struct genesisStakeTableStateReturn {
9392        #[allow(missing_docs)]
9393        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9394        #[allow(missing_docs)]
9395        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9396        #[allow(missing_docs)]
9397        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9398        #[allow(missing_docs)]
9399        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9400    }
9401    #[allow(
9402        non_camel_case_types,
9403        non_snake_case,
9404        clippy::pub_underscore_fields,
9405        clippy::style
9406    )]
9407    const _: () = {
9408        use alloy::sol_types as alloy_sol_types;
9409        {
9410            #[doc(hidden)]
9411            #[allow(dead_code)]
9412            type UnderlyingSolTuple<'a> = ();
9413            #[doc(hidden)]
9414            type UnderlyingRustTuple<'a> = ();
9415            #[cfg(test)]
9416            #[allow(dead_code, unreachable_patterns)]
9417            fn _type_assertion(
9418                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9419            ) {
9420                match _t {
9421                    alloy_sol_types::private::AssertTypeEq::<
9422                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9423                    >(_) => {}
9424                }
9425            }
9426            #[automatically_derived]
9427            #[doc(hidden)]
9428            impl ::core::convert::From<genesisStakeTableStateCall>
9429            for UnderlyingRustTuple<'_> {
9430                fn from(value: genesisStakeTableStateCall) -> Self {
9431                    ()
9432                }
9433            }
9434            #[automatically_derived]
9435            #[doc(hidden)]
9436            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9437            for genesisStakeTableStateCall {
9438                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9439                    Self
9440                }
9441            }
9442        }
9443        {
9444            #[doc(hidden)]
9445            #[allow(dead_code)]
9446            type UnderlyingSolTuple<'a> = (
9447                alloy::sol_types::sol_data::Uint<256>,
9448                BN254::ScalarField,
9449                BN254::ScalarField,
9450                BN254::ScalarField,
9451            );
9452            #[doc(hidden)]
9453            type UnderlyingRustTuple<'a> = (
9454                alloy::sol_types::private::primitives::aliases::U256,
9455                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9456                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9457                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9458            );
9459            #[cfg(test)]
9460            #[allow(dead_code, unreachable_patterns)]
9461            fn _type_assertion(
9462                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9463            ) {
9464                match _t {
9465                    alloy_sol_types::private::AssertTypeEq::<
9466                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9467                    >(_) => {}
9468                }
9469            }
9470            #[automatically_derived]
9471            #[doc(hidden)]
9472            impl ::core::convert::From<genesisStakeTableStateReturn>
9473            for UnderlyingRustTuple<'_> {
9474                fn from(value: genesisStakeTableStateReturn) -> Self {
9475                    (
9476                        value.threshold,
9477                        value.blsKeyComm,
9478                        value.schnorrKeyComm,
9479                        value.amountComm,
9480                    )
9481                }
9482            }
9483            #[automatically_derived]
9484            #[doc(hidden)]
9485            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9486            for genesisStakeTableStateReturn {
9487                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9488                    Self {
9489                        threshold: tuple.0,
9490                        blsKeyComm: tuple.1,
9491                        schnorrKeyComm: tuple.2,
9492                        amountComm: tuple.3,
9493                    }
9494                }
9495            }
9496        }
9497        impl genesisStakeTableStateReturn {
9498            fn _tokenize(
9499                &self,
9500            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9501                '_,
9502            > {
9503                (
9504                    <alloy::sol_types::sol_data::Uint<
9505                        256,
9506                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9507                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9508                        &self.blsKeyComm,
9509                    ),
9510                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9511                        &self.schnorrKeyComm,
9512                    ),
9513                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9514                        &self.amountComm,
9515                    ),
9516                )
9517            }
9518        }
9519        #[automatically_derived]
9520        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9521            type Parameters<'a> = ();
9522            type Token<'a> = <Self::Parameters<
9523                'a,
9524            > as alloy_sol_types::SolType>::Token<'a>;
9525            type Return = genesisStakeTableStateReturn;
9526            type ReturnTuple<'a> = (
9527                alloy::sol_types::sol_data::Uint<256>,
9528                BN254::ScalarField,
9529                BN254::ScalarField,
9530                BN254::ScalarField,
9531            );
9532            type ReturnToken<'a> = <Self::ReturnTuple<
9533                'a,
9534            > as alloy_sol_types::SolType>::Token<'a>;
9535            const SIGNATURE: &'static str = "genesisStakeTableState()";
9536            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9537            #[inline]
9538            fn new<'a>(
9539                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9540            ) -> Self {
9541                tuple.into()
9542            }
9543            #[inline]
9544            fn tokenize(&self) -> Self::Token<'_> {
9545                ()
9546            }
9547            #[inline]
9548            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9549                genesisStakeTableStateReturn::_tokenize(ret)
9550            }
9551            #[inline]
9552            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9553                <Self::ReturnTuple<
9554                    '_,
9555                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9556                    .map(Into::into)
9557            }
9558            #[inline]
9559            fn abi_decode_returns_validate(
9560                data: &[u8],
9561            ) -> alloy_sol_types::Result<Self::Return> {
9562                <Self::ReturnTuple<
9563                    '_,
9564                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9565                    .map(Into::into)
9566            }
9567        }
9568    };
9569    #[derive(serde::Serialize, serde::Deserialize)]
9570    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9571    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9572```solidity
9573function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9574```*/
9575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9576    #[derive(Clone)]
9577    pub struct genesisStateCall;
9578    #[derive(serde::Serialize, serde::Deserialize)]
9579    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9580    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9581    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9582    #[derive(Clone)]
9583    pub struct genesisStateReturn {
9584        #[allow(missing_docs)]
9585        pub viewNum: u64,
9586        #[allow(missing_docs)]
9587        pub blockHeight: u64,
9588        #[allow(missing_docs)]
9589        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9590    }
9591    #[allow(
9592        non_camel_case_types,
9593        non_snake_case,
9594        clippy::pub_underscore_fields,
9595        clippy::style
9596    )]
9597    const _: () = {
9598        use alloy::sol_types as alloy_sol_types;
9599        {
9600            #[doc(hidden)]
9601            #[allow(dead_code)]
9602            type UnderlyingSolTuple<'a> = ();
9603            #[doc(hidden)]
9604            type UnderlyingRustTuple<'a> = ();
9605            #[cfg(test)]
9606            #[allow(dead_code, unreachable_patterns)]
9607            fn _type_assertion(
9608                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9609            ) {
9610                match _t {
9611                    alloy_sol_types::private::AssertTypeEq::<
9612                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9613                    >(_) => {}
9614                }
9615            }
9616            #[automatically_derived]
9617            #[doc(hidden)]
9618            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9619                fn from(value: genesisStateCall) -> Self {
9620                    ()
9621                }
9622            }
9623            #[automatically_derived]
9624            #[doc(hidden)]
9625            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9627                    Self
9628                }
9629            }
9630        }
9631        {
9632            #[doc(hidden)]
9633            #[allow(dead_code)]
9634            type UnderlyingSolTuple<'a> = (
9635                alloy::sol_types::sol_data::Uint<64>,
9636                alloy::sol_types::sol_data::Uint<64>,
9637                BN254::ScalarField,
9638            );
9639            #[doc(hidden)]
9640            type UnderlyingRustTuple<'a> = (
9641                u64,
9642                u64,
9643                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9644            );
9645            #[cfg(test)]
9646            #[allow(dead_code, unreachable_patterns)]
9647            fn _type_assertion(
9648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9649            ) {
9650                match _t {
9651                    alloy_sol_types::private::AssertTypeEq::<
9652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9653                    >(_) => {}
9654                }
9655            }
9656            #[automatically_derived]
9657            #[doc(hidden)]
9658            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9659                fn from(value: genesisStateReturn) -> Self {
9660                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9661                }
9662            }
9663            #[automatically_derived]
9664            #[doc(hidden)]
9665            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9667                    Self {
9668                        viewNum: tuple.0,
9669                        blockHeight: tuple.1,
9670                        blockCommRoot: tuple.2,
9671                    }
9672                }
9673            }
9674        }
9675        impl genesisStateReturn {
9676            fn _tokenize(
9677                &self,
9678            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9679                (
9680                    <alloy::sol_types::sol_data::Uint<
9681                        64,
9682                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9683                    <alloy::sol_types::sol_data::Uint<
9684                        64,
9685                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9686                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9687                        &self.blockCommRoot,
9688                    ),
9689                )
9690            }
9691        }
9692        #[automatically_derived]
9693        impl alloy_sol_types::SolCall for genesisStateCall {
9694            type Parameters<'a> = ();
9695            type Token<'a> = <Self::Parameters<
9696                'a,
9697            > as alloy_sol_types::SolType>::Token<'a>;
9698            type Return = genesisStateReturn;
9699            type ReturnTuple<'a> = (
9700                alloy::sol_types::sol_data::Uint<64>,
9701                alloy::sol_types::sol_data::Uint<64>,
9702                BN254::ScalarField,
9703            );
9704            type ReturnToken<'a> = <Self::ReturnTuple<
9705                'a,
9706            > as alloy_sol_types::SolType>::Token<'a>;
9707            const SIGNATURE: &'static str = "genesisState()";
9708            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9709            #[inline]
9710            fn new<'a>(
9711                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9712            ) -> Self {
9713                tuple.into()
9714            }
9715            #[inline]
9716            fn tokenize(&self) -> Self::Token<'_> {
9717                ()
9718            }
9719            #[inline]
9720            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9721                genesisStateReturn::_tokenize(ret)
9722            }
9723            #[inline]
9724            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9725                <Self::ReturnTuple<
9726                    '_,
9727                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9728                    .map(Into::into)
9729            }
9730            #[inline]
9731            fn abi_decode_returns_validate(
9732                data: &[u8],
9733            ) -> alloy_sol_types::Result<Self::Return> {
9734                <Self::ReturnTuple<
9735                    '_,
9736                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9737                    .map(Into::into)
9738            }
9739        }
9740    };
9741    #[derive(serde::Serialize, serde::Deserialize)]
9742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9743    /**Function with signature `getFirstEpoch()` and selector `0xb3daf254`.
9744```solidity
9745function getFirstEpoch() external view returns (uint64);
9746```*/
9747    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9748    #[derive(Clone)]
9749    pub struct getFirstEpochCall;
9750    #[derive(serde::Serialize, serde::Deserialize)]
9751    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9752    ///Container type for the return parameters of the [`getFirstEpoch()`](getFirstEpochCall) function.
9753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9754    #[derive(Clone)]
9755    pub struct getFirstEpochReturn {
9756        #[allow(missing_docs)]
9757        pub _0: u64,
9758    }
9759    #[allow(
9760        non_camel_case_types,
9761        non_snake_case,
9762        clippy::pub_underscore_fields,
9763        clippy::style
9764    )]
9765    const _: () = {
9766        use alloy::sol_types as alloy_sol_types;
9767        {
9768            #[doc(hidden)]
9769            #[allow(dead_code)]
9770            type UnderlyingSolTuple<'a> = ();
9771            #[doc(hidden)]
9772            type UnderlyingRustTuple<'a> = ();
9773            #[cfg(test)]
9774            #[allow(dead_code, unreachable_patterns)]
9775            fn _type_assertion(
9776                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9777            ) {
9778                match _t {
9779                    alloy_sol_types::private::AssertTypeEq::<
9780                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9781                    >(_) => {}
9782                }
9783            }
9784            #[automatically_derived]
9785            #[doc(hidden)]
9786            impl ::core::convert::From<getFirstEpochCall> for UnderlyingRustTuple<'_> {
9787                fn from(value: getFirstEpochCall) -> Self {
9788                    ()
9789                }
9790            }
9791            #[automatically_derived]
9792            #[doc(hidden)]
9793            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochCall {
9794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9795                    Self
9796                }
9797            }
9798        }
9799        {
9800            #[doc(hidden)]
9801            #[allow(dead_code)]
9802            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9803            #[doc(hidden)]
9804            type UnderlyingRustTuple<'a> = (u64,);
9805            #[cfg(test)]
9806            #[allow(dead_code, unreachable_patterns)]
9807            fn _type_assertion(
9808                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9809            ) {
9810                match _t {
9811                    alloy_sol_types::private::AssertTypeEq::<
9812                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9813                    >(_) => {}
9814                }
9815            }
9816            #[automatically_derived]
9817            #[doc(hidden)]
9818            impl ::core::convert::From<getFirstEpochReturn> for UnderlyingRustTuple<'_> {
9819                fn from(value: getFirstEpochReturn) -> Self {
9820                    (value._0,)
9821                }
9822            }
9823            #[automatically_derived]
9824            #[doc(hidden)]
9825            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochReturn {
9826                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9827                    Self { _0: tuple.0 }
9828                }
9829            }
9830        }
9831        #[automatically_derived]
9832        impl alloy_sol_types::SolCall for getFirstEpochCall {
9833            type Parameters<'a> = ();
9834            type Token<'a> = <Self::Parameters<
9835                'a,
9836            > as alloy_sol_types::SolType>::Token<'a>;
9837            type Return = u64;
9838            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9839            type ReturnToken<'a> = <Self::ReturnTuple<
9840                'a,
9841            > as alloy_sol_types::SolType>::Token<'a>;
9842            const SIGNATURE: &'static str = "getFirstEpoch()";
9843            const SELECTOR: [u8; 4] = [179u8, 218u8, 242u8, 84u8];
9844            #[inline]
9845            fn new<'a>(
9846                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9847            ) -> Self {
9848                tuple.into()
9849            }
9850            #[inline]
9851            fn tokenize(&self) -> Self::Token<'_> {
9852                ()
9853            }
9854            #[inline]
9855            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9856                (
9857                    <alloy::sol_types::sol_data::Uint<
9858                        64,
9859                    > as alloy_sol_types::SolType>::tokenize(ret),
9860                )
9861            }
9862            #[inline]
9863            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9864                <Self::ReturnTuple<
9865                    '_,
9866                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9867                    .map(|r| {
9868                        let r: getFirstEpochReturn = r.into();
9869                        r._0
9870                    })
9871            }
9872            #[inline]
9873            fn abi_decode_returns_validate(
9874                data: &[u8],
9875            ) -> alloy_sol_types::Result<Self::Return> {
9876                <Self::ReturnTuple<
9877                    '_,
9878                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9879                    .map(|r| {
9880                        let r: getFirstEpochReturn = r.into();
9881                        r._0
9882                    })
9883            }
9884        }
9885    };
9886    #[derive(serde::Serialize, serde::Deserialize)]
9887    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9888    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9889```solidity
9890function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9891```*/
9892    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9893    #[derive(Clone)]
9894    pub struct getHotShotCommitmentCall {
9895        #[allow(missing_docs)]
9896        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9897    }
9898    #[derive(serde::Serialize, serde::Deserialize)]
9899    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9900    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9902    #[derive(Clone)]
9903    pub struct getHotShotCommitmentReturn {
9904        #[allow(missing_docs)]
9905        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9906        #[allow(missing_docs)]
9907        pub hotshotBlockHeight: u64,
9908    }
9909    #[allow(
9910        non_camel_case_types,
9911        non_snake_case,
9912        clippy::pub_underscore_fields,
9913        clippy::style
9914    )]
9915    const _: () = {
9916        use alloy::sol_types as alloy_sol_types;
9917        {
9918            #[doc(hidden)]
9919            #[allow(dead_code)]
9920            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9921            #[doc(hidden)]
9922            type UnderlyingRustTuple<'a> = (
9923                alloy::sol_types::private::primitives::aliases::U256,
9924            );
9925            #[cfg(test)]
9926            #[allow(dead_code, unreachable_patterns)]
9927            fn _type_assertion(
9928                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9929            ) {
9930                match _t {
9931                    alloy_sol_types::private::AssertTypeEq::<
9932                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9933                    >(_) => {}
9934                }
9935            }
9936            #[automatically_derived]
9937            #[doc(hidden)]
9938            impl ::core::convert::From<getHotShotCommitmentCall>
9939            for UnderlyingRustTuple<'_> {
9940                fn from(value: getHotShotCommitmentCall) -> Self {
9941                    (value.hotShotBlockHeight,)
9942                }
9943            }
9944            #[automatically_derived]
9945            #[doc(hidden)]
9946            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9947            for getHotShotCommitmentCall {
9948                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9949                    Self {
9950                        hotShotBlockHeight: tuple.0,
9951                    }
9952                }
9953            }
9954        }
9955        {
9956            #[doc(hidden)]
9957            #[allow(dead_code)]
9958            type UnderlyingSolTuple<'a> = (
9959                BN254::ScalarField,
9960                alloy::sol_types::sol_data::Uint<64>,
9961            );
9962            #[doc(hidden)]
9963            type UnderlyingRustTuple<'a> = (
9964                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9965                u64,
9966            );
9967            #[cfg(test)]
9968            #[allow(dead_code, unreachable_patterns)]
9969            fn _type_assertion(
9970                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9971            ) {
9972                match _t {
9973                    alloy_sol_types::private::AssertTypeEq::<
9974                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9975                    >(_) => {}
9976                }
9977            }
9978            #[automatically_derived]
9979            #[doc(hidden)]
9980            impl ::core::convert::From<getHotShotCommitmentReturn>
9981            for UnderlyingRustTuple<'_> {
9982                fn from(value: getHotShotCommitmentReturn) -> Self {
9983                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9984                }
9985            }
9986            #[automatically_derived]
9987            #[doc(hidden)]
9988            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9989            for getHotShotCommitmentReturn {
9990                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9991                    Self {
9992                        hotShotBlockCommRoot: tuple.0,
9993                        hotshotBlockHeight: tuple.1,
9994                    }
9995                }
9996            }
9997        }
9998        impl getHotShotCommitmentReturn {
9999            fn _tokenize(
10000                &self,
10001            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
10002                '_,
10003            > {
10004                (
10005                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10006                        &self.hotShotBlockCommRoot,
10007                    ),
10008                    <alloy::sol_types::sol_data::Uint<
10009                        64,
10010                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
10011                )
10012            }
10013        }
10014        #[automatically_derived]
10015        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
10016            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10017            type Token<'a> = <Self::Parameters<
10018                'a,
10019            > as alloy_sol_types::SolType>::Token<'a>;
10020            type Return = getHotShotCommitmentReturn;
10021            type ReturnTuple<'a> = (
10022                BN254::ScalarField,
10023                alloy::sol_types::sol_data::Uint<64>,
10024            );
10025            type ReturnToken<'a> = <Self::ReturnTuple<
10026                'a,
10027            > as alloy_sol_types::SolType>::Token<'a>;
10028            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
10029            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
10030            #[inline]
10031            fn new<'a>(
10032                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10033            ) -> Self {
10034                tuple.into()
10035            }
10036            #[inline]
10037            fn tokenize(&self) -> Self::Token<'_> {
10038                (
10039                    <alloy::sol_types::sol_data::Uint<
10040                        256,
10041                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10042                )
10043            }
10044            #[inline]
10045            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10046                getHotShotCommitmentReturn::_tokenize(ret)
10047            }
10048            #[inline]
10049            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10050                <Self::ReturnTuple<
10051                    '_,
10052                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10053                    .map(Into::into)
10054            }
10055            #[inline]
10056            fn abi_decode_returns_validate(
10057                data: &[u8],
10058            ) -> alloy_sol_types::Result<Self::Return> {
10059                <Self::ReturnTuple<
10060                    '_,
10061                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10062                    .map(Into::into)
10063            }
10064        }
10065    };
10066    #[derive(serde::Serialize, serde::Deserialize)]
10067    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10068    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10069```solidity
10070function getStateHistoryCount() external view returns (uint256);
10071```*/
10072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10073    #[derive(Clone)]
10074    pub struct getStateHistoryCountCall;
10075    #[derive(serde::Serialize, serde::Deserialize)]
10076    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10077    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10078    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10079    #[derive(Clone)]
10080    pub struct getStateHistoryCountReturn {
10081        #[allow(missing_docs)]
10082        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10083    }
10084    #[allow(
10085        non_camel_case_types,
10086        non_snake_case,
10087        clippy::pub_underscore_fields,
10088        clippy::style
10089    )]
10090    const _: () = {
10091        use alloy::sol_types as alloy_sol_types;
10092        {
10093            #[doc(hidden)]
10094            #[allow(dead_code)]
10095            type UnderlyingSolTuple<'a> = ();
10096            #[doc(hidden)]
10097            type UnderlyingRustTuple<'a> = ();
10098            #[cfg(test)]
10099            #[allow(dead_code, unreachable_patterns)]
10100            fn _type_assertion(
10101                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10102            ) {
10103                match _t {
10104                    alloy_sol_types::private::AssertTypeEq::<
10105                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10106                    >(_) => {}
10107                }
10108            }
10109            #[automatically_derived]
10110            #[doc(hidden)]
10111            impl ::core::convert::From<getStateHistoryCountCall>
10112            for UnderlyingRustTuple<'_> {
10113                fn from(value: getStateHistoryCountCall) -> Self {
10114                    ()
10115                }
10116            }
10117            #[automatically_derived]
10118            #[doc(hidden)]
10119            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10120            for getStateHistoryCountCall {
10121                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10122                    Self
10123                }
10124            }
10125        }
10126        {
10127            #[doc(hidden)]
10128            #[allow(dead_code)]
10129            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10130            #[doc(hidden)]
10131            type UnderlyingRustTuple<'a> = (
10132                alloy::sol_types::private::primitives::aliases::U256,
10133            );
10134            #[cfg(test)]
10135            #[allow(dead_code, unreachable_patterns)]
10136            fn _type_assertion(
10137                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10138            ) {
10139                match _t {
10140                    alloy_sol_types::private::AssertTypeEq::<
10141                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10142                    >(_) => {}
10143                }
10144            }
10145            #[automatically_derived]
10146            #[doc(hidden)]
10147            impl ::core::convert::From<getStateHistoryCountReturn>
10148            for UnderlyingRustTuple<'_> {
10149                fn from(value: getStateHistoryCountReturn) -> Self {
10150                    (value._0,)
10151                }
10152            }
10153            #[automatically_derived]
10154            #[doc(hidden)]
10155            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10156            for getStateHistoryCountReturn {
10157                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10158                    Self { _0: tuple.0 }
10159                }
10160            }
10161        }
10162        #[automatically_derived]
10163        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10164            type Parameters<'a> = ();
10165            type Token<'a> = <Self::Parameters<
10166                'a,
10167            > as alloy_sol_types::SolType>::Token<'a>;
10168            type Return = alloy::sol_types::private::primitives::aliases::U256;
10169            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10170            type ReturnToken<'a> = <Self::ReturnTuple<
10171                'a,
10172            > as alloy_sol_types::SolType>::Token<'a>;
10173            const SIGNATURE: &'static str = "getStateHistoryCount()";
10174            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10175            #[inline]
10176            fn new<'a>(
10177                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10178            ) -> Self {
10179                tuple.into()
10180            }
10181            #[inline]
10182            fn tokenize(&self) -> Self::Token<'_> {
10183                ()
10184            }
10185            #[inline]
10186            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10187                (
10188                    <alloy::sol_types::sol_data::Uint<
10189                        256,
10190                    > as alloy_sol_types::SolType>::tokenize(ret),
10191                )
10192            }
10193            #[inline]
10194            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10195                <Self::ReturnTuple<
10196                    '_,
10197                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10198                    .map(|r| {
10199                        let r: getStateHistoryCountReturn = r.into();
10200                        r._0
10201                    })
10202            }
10203            #[inline]
10204            fn abi_decode_returns_validate(
10205                data: &[u8],
10206            ) -> alloy_sol_types::Result<Self::Return> {
10207                <Self::ReturnTuple<
10208                    '_,
10209                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10210                    .map(|r| {
10211                        let r: getStateHistoryCountReturn = r.into();
10212                        r._0
10213                    })
10214            }
10215        }
10216    };
10217    #[derive(serde::Serialize, serde::Deserialize)]
10218    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10219    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10220```solidity
10221function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10222```*/
10223    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10224    #[derive(Clone)]
10225    pub struct getVersionCall;
10226    #[derive(serde::Serialize, serde::Deserialize)]
10227    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10228    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10229    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10230    #[derive(Clone)]
10231    pub struct getVersionReturn {
10232        #[allow(missing_docs)]
10233        pub majorVersion: u8,
10234        #[allow(missing_docs)]
10235        pub minorVersion: u8,
10236        #[allow(missing_docs)]
10237        pub patchVersion: u8,
10238    }
10239    #[allow(
10240        non_camel_case_types,
10241        non_snake_case,
10242        clippy::pub_underscore_fields,
10243        clippy::style
10244    )]
10245    const _: () = {
10246        use alloy::sol_types as alloy_sol_types;
10247        {
10248            #[doc(hidden)]
10249            #[allow(dead_code)]
10250            type UnderlyingSolTuple<'a> = ();
10251            #[doc(hidden)]
10252            type UnderlyingRustTuple<'a> = ();
10253            #[cfg(test)]
10254            #[allow(dead_code, unreachable_patterns)]
10255            fn _type_assertion(
10256                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10257            ) {
10258                match _t {
10259                    alloy_sol_types::private::AssertTypeEq::<
10260                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10261                    >(_) => {}
10262                }
10263            }
10264            #[automatically_derived]
10265            #[doc(hidden)]
10266            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10267                fn from(value: getVersionCall) -> Self {
10268                    ()
10269                }
10270            }
10271            #[automatically_derived]
10272            #[doc(hidden)]
10273            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10274                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10275                    Self
10276                }
10277            }
10278        }
10279        {
10280            #[doc(hidden)]
10281            #[allow(dead_code)]
10282            type UnderlyingSolTuple<'a> = (
10283                alloy::sol_types::sol_data::Uint<8>,
10284                alloy::sol_types::sol_data::Uint<8>,
10285                alloy::sol_types::sol_data::Uint<8>,
10286            );
10287            #[doc(hidden)]
10288            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10289            #[cfg(test)]
10290            #[allow(dead_code, unreachable_patterns)]
10291            fn _type_assertion(
10292                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10293            ) {
10294                match _t {
10295                    alloy_sol_types::private::AssertTypeEq::<
10296                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10297                    >(_) => {}
10298                }
10299            }
10300            #[automatically_derived]
10301            #[doc(hidden)]
10302            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10303                fn from(value: getVersionReturn) -> Self {
10304                    (value.majorVersion, value.minorVersion, value.patchVersion)
10305                }
10306            }
10307            #[automatically_derived]
10308            #[doc(hidden)]
10309            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10310                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10311                    Self {
10312                        majorVersion: tuple.0,
10313                        minorVersion: tuple.1,
10314                        patchVersion: tuple.2,
10315                    }
10316                }
10317            }
10318        }
10319        impl getVersionReturn {
10320            fn _tokenize(
10321                &self,
10322            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10323                (
10324                    <alloy::sol_types::sol_data::Uint<
10325                        8,
10326                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10327                    <alloy::sol_types::sol_data::Uint<
10328                        8,
10329                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10330                    <alloy::sol_types::sol_data::Uint<
10331                        8,
10332                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10333                )
10334            }
10335        }
10336        #[automatically_derived]
10337        impl alloy_sol_types::SolCall for getVersionCall {
10338            type Parameters<'a> = ();
10339            type Token<'a> = <Self::Parameters<
10340                'a,
10341            > as alloy_sol_types::SolType>::Token<'a>;
10342            type Return = getVersionReturn;
10343            type ReturnTuple<'a> = (
10344                alloy::sol_types::sol_data::Uint<8>,
10345                alloy::sol_types::sol_data::Uint<8>,
10346                alloy::sol_types::sol_data::Uint<8>,
10347            );
10348            type ReturnToken<'a> = <Self::ReturnTuple<
10349                'a,
10350            > as alloy_sol_types::SolType>::Token<'a>;
10351            const SIGNATURE: &'static str = "getVersion()";
10352            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10353            #[inline]
10354            fn new<'a>(
10355                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10356            ) -> Self {
10357                tuple.into()
10358            }
10359            #[inline]
10360            fn tokenize(&self) -> Self::Token<'_> {
10361                ()
10362            }
10363            #[inline]
10364            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10365                getVersionReturn::_tokenize(ret)
10366            }
10367            #[inline]
10368            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10369                <Self::ReturnTuple<
10370                    '_,
10371                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10372                    .map(Into::into)
10373            }
10374            #[inline]
10375            fn abi_decode_returns_validate(
10376                data: &[u8],
10377            ) -> alloy_sol_types::Result<Self::Return> {
10378                <Self::ReturnTuple<
10379                    '_,
10380                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10381                    .map(Into::into)
10382            }
10383        }
10384    };
10385    #[derive(serde::Serialize, serde::Deserialize)]
10386    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10387    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10388```solidity
10389function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10390```*/
10391    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10392    #[derive(Clone)]
10393    pub struct initializeCall {
10394        #[allow(missing_docs)]
10395        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10396        #[allow(missing_docs)]
10397        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10398        #[allow(missing_docs)]
10399        pub _stateHistoryRetentionPeriod: u32,
10400        #[allow(missing_docs)]
10401        pub owner: alloy::sol_types::private::Address,
10402    }
10403    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10404    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10405    #[derive(Clone)]
10406    pub struct initializeReturn {}
10407    #[allow(
10408        non_camel_case_types,
10409        non_snake_case,
10410        clippy::pub_underscore_fields,
10411        clippy::style
10412    )]
10413    const _: () = {
10414        use alloy::sol_types as alloy_sol_types;
10415        {
10416            #[doc(hidden)]
10417            #[allow(dead_code)]
10418            type UnderlyingSolTuple<'a> = (
10419                LightClient::LightClientState,
10420                LightClient::StakeTableState,
10421                alloy::sol_types::sol_data::Uint<32>,
10422                alloy::sol_types::sol_data::Address,
10423            );
10424            #[doc(hidden)]
10425            type UnderlyingRustTuple<'a> = (
10426                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10427                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10428                u32,
10429                alloy::sol_types::private::Address,
10430            );
10431            #[cfg(test)]
10432            #[allow(dead_code, unreachable_patterns)]
10433            fn _type_assertion(
10434                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10435            ) {
10436                match _t {
10437                    alloy_sol_types::private::AssertTypeEq::<
10438                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10439                    >(_) => {}
10440                }
10441            }
10442            #[automatically_derived]
10443            #[doc(hidden)]
10444            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10445                fn from(value: initializeCall) -> Self {
10446                    (
10447                        value._genesis,
10448                        value._genesisStakeTableState,
10449                        value._stateHistoryRetentionPeriod,
10450                        value.owner,
10451                    )
10452                }
10453            }
10454            #[automatically_derived]
10455            #[doc(hidden)]
10456            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10457                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10458                    Self {
10459                        _genesis: tuple.0,
10460                        _genesisStakeTableState: tuple.1,
10461                        _stateHistoryRetentionPeriod: tuple.2,
10462                        owner: tuple.3,
10463                    }
10464                }
10465            }
10466        }
10467        {
10468            #[doc(hidden)]
10469            #[allow(dead_code)]
10470            type UnderlyingSolTuple<'a> = ();
10471            #[doc(hidden)]
10472            type UnderlyingRustTuple<'a> = ();
10473            #[cfg(test)]
10474            #[allow(dead_code, unreachable_patterns)]
10475            fn _type_assertion(
10476                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10477            ) {
10478                match _t {
10479                    alloy_sol_types::private::AssertTypeEq::<
10480                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10481                    >(_) => {}
10482                }
10483            }
10484            #[automatically_derived]
10485            #[doc(hidden)]
10486            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10487                fn from(value: initializeReturn) -> Self {
10488                    ()
10489                }
10490            }
10491            #[automatically_derived]
10492            #[doc(hidden)]
10493            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10494                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10495                    Self {}
10496                }
10497            }
10498        }
10499        impl initializeReturn {
10500            fn _tokenize(
10501                &self,
10502            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10503                ()
10504            }
10505        }
10506        #[automatically_derived]
10507        impl alloy_sol_types::SolCall for initializeCall {
10508            type Parameters<'a> = (
10509                LightClient::LightClientState,
10510                LightClient::StakeTableState,
10511                alloy::sol_types::sol_data::Uint<32>,
10512                alloy::sol_types::sol_data::Address,
10513            );
10514            type Token<'a> = <Self::Parameters<
10515                'a,
10516            > as alloy_sol_types::SolType>::Token<'a>;
10517            type Return = initializeReturn;
10518            type ReturnTuple<'a> = ();
10519            type ReturnToken<'a> = <Self::ReturnTuple<
10520                'a,
10521            > as alloy_sol_types::SolType>::Token<'a>;
10522            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10523            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10524            #[inline]
10525            fn new<'a>(
10526                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10527            ) -> Self {
10528                tuple.into()
10529            }
10530            #[inline]
10531            fn tokenize(&self) -> Self::Token<'_> {
10532                (
10533                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10534                        &self._genesis,
10535                    ),
10536                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10537                        &self._genesisStakeTableState,
10538                    ),
10539                    <alloy::sol_types::sol_data::Uint<
10540                        32,
10541                    > as alloy_sol_types::SolType>::tokenize(
10542                        &self._stateHistoryRetentionPeriod,
10543                    ),
10544                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10545                        &self.owner,
10546                    ),
10547                )
10548            }
10549            #[inline]
10550            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10551                initializeReturn::_tokenize(ret)
10552            }
10553            #[inline]
10554            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10555                <Self::ReturnTuple<
10556                    '_,
10557                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10558                    .map(Into::into)
10559            }
10560            #[inline]
10561            fn abi_decode_returns_validate(
10562                data: &[u8],
10563            ) -> alloy_sol_types::Result<Self::Return> {
10564                <Self::ReturnTuple<
10565                    '_,
10566                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10567                    .map(Into::into)
10568            }
10569        }
10570    };
10571    #[derive(serde::Serialize, serde::Deserialize)]
10572    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10573    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10574```solidity
10575function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10576```*/
10577    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10578    #[derive(Clone)]
10579    pub struct initializeV2Call {
10580        #[allow(missing_docs)]
10581        pub _blocksPerEpoch: u64,
10582        #[allow(missing_docs)]
10583        pub _epochStartBlock: u64,
10584    }
10585    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10587    #[derive(Clone)]
10588    pub struct initializeV2Return {}
10589    #[allow(
10590        non_camel_case_types,
10591        non_snake_case,
10592        clippy::pub_underscore_fields,
10593        clippy::style
10594    )]
10595    const _: () = {
10596        use alloy::sol_types as alloy_sol_types;
10597        {
10598            #[doc(hidden)]
10599            #[allow(dead_code)]
10600            type UnderlyingSolTuple<'a> = (
10601                alloy::sol_types::sol_data::Uint<64>,
10602                alloy::sol_types::sol_data::Uint<64>,
10603            );
10604            #[doc(hidden)]
10605            type UnderlyingRustTuple<'a> = (u64, u64);
10606            #[cfg(test)]
10607            #[allow(dead_code, unreachable_patterns)]
10608            fn _type_assertion(
10609                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10610            ) {
10611                match _t {
10612                    alloy_sol_types::private::AssertTypeEq::<
10613                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10614                    >(_) => {}
10615                }
10616            }
10617            #[automatically_derived]
10618            #[doc(hidden)]
10619            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10620                fn from(value: initializeV2Call) -> Self {
10621                    (value._blocksPerEpoch, value._epochStartBlock)
10622                }
10623            }
10624            #[automatically_derived]
10625            #[doc(hidden)]
10626            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10627                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10628                    Self {
10629                        _blocksPerEpoch: tuple.0,
10630                        _epochStartBlock: tuple.1,
10631                    }
10632                }
10633            }
10634        }
10635        {
10636            #[doc(hidden)]
10637            #[allow(dead_code)]
10638            type UnderlyingSolTuple<'a> = ();
10639            #[doc(hidden)]
10640            type UnderlyingRustTuple<'a> = ();
10641            #[cfg(test)]
10642            #[allow(dead_code, unreachable_patterns)]
10643            fn _type_assertion(
10644                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10645            ) {
10646                match _t {
10647                    alloy_sol_types::private::AssertTypeEq::<
10648                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10649                    >(_) => {}
10650                }
10651            }
10652            #[automatically_derived]
10653            #[doc(hidden)]
10654            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10655                fn from(value: initializeV2Return) -> Self {
10656                    ()
10657                }
10658            }
10659            #[automatically_derived]
10660            #[doc(hidden)]
10661            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10662                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10663                    Self {}
10664                }
10665            }
10666        }
10667        impl initializeV2Return {
10668            fn _tokenize(
10669                &self,
10670            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10671                ()
10672            }
10673        }
10674        #[automatically_derived]
10675        impl alloy_sol_types::SolCall for initializeV2Call {
10676            type Parameters<'a> = (
10677                alloy::sol_types::sol_data::Uint<64>,
10678                alloy::sol_types::sol_data::Uint<64>,
10679            );
10680            type Token<'a> = <Self::Parameters<
10681                'a,
10682            > as alloy_sol_types::SolType>::Token<'a>;
10683            type Return = initializeV2Return;
10684            type ReturnTuple<'a> = ();
10685            type ReturnToken<'a> = <Self::ReturnTuple<
10686                'a,
10687            > as alloy_sol_types::SolType>::Token<'a>;
10688            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10689            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10690            #[inline]
10691            fn new<'a>(
10692                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10693            ) -> Self {
10694                tuple.into()
10695            }
10696            #[inline]
10697            fn tokenize(&self) -> Self::Token<'_> {
10698                (
10699                    <alloy::sol_types::sol_data::Uint<
10700                        64,
10701                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10702                    <alloy::sol_types::sol_data::Uint<
10703                        64,
10704                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10705                )
10706            }
10707            #[inline]
10708            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10709                initializeV2Return::_tokenize(ret)
10710            }
10711            #[inline]
10712            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10713                <Self::ReturnTuple<
10714                    '_,
10715                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10716                    .map(Into::into)
10717            }
10718            #[inline]
10719            fn abi_decode_returns_validate(
10720                data: &[u8],
10721            ) -> alloy_sol_types::Result<Self::Return> {
10722                <Self::ReturnTuple<
10723                    '_,
10724                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10725                    .map(Into::into)
10726            }
10727        }
10728    };
10729    #[derive(serde::Serialize, serde::Deserialize)]
10730    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10731    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10732```solidity
10733function isEpochRoot(uint64 blockHeight) external view returns (bool);
10734```*/
10735    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10736    #[derive(Clone)]
10737    pub struct isEpochRootCall {
10738        #[allow(missing_docs)]
10739        pub blockHeight: u64,
10740    }
10741    #[derive(serde::Serialize, serde::Deserialize)]
10742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10743    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10744    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10745    #[derive(Clone)]
10746    pub struct isEpochRootReturn {
10747        #[allow(missing_docs)]
10748        pub _0: bool,
10749    }
10750    #[allow(
10751        non_camel_case_types,
10752        non_snake_case,
10753        clippy::pub_underscore_fields,
10754        clippy::style
10755    )]
10756    const _: () = {
10757        use alloy::sol_types as alloy_sol_types;
10758        {
10759            #[doc(hidden)]
10760            #[allow(dead_code)]
10761            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10762            #[doc(hidden)]
10763            type UnderlyingRustTuple<'a> = (u64,);
10764            #[cfg(test)]
10765            #[allow(dead_code, unreachable_patterns)]
10766            fn _type_assertion(
10767                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10768            ) {
10769                match _t {
10770                    alloy_sol_types::private::AssertTypeEq::<
10771                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10772                    >(_) => {}
10773                }
10774            }
10775            #[automatically_derived]
10776            #[doc(hidden)]
10777            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10778                fn from(value: isEpochRootCall) -> Self {
10779                    (value.blockHeight,)
10780                }
10781            }
10782            #[automatically_derived]
10783            #[doc(hidden)]
10784            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10785                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10786                    Self { blockHeight: tuple.0 }
10787                }
10788            }
10789        }
10790        {
10791            #[doc(hidden)]
10792            #[allow(dead_code)]
10793            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10794            #[doc(hidden)]
10795            type UnderlyingRustTuple<'a> = (bool,);
10796            #[cfg(test)]
10797            #[allow(dead_code, unreachable_patterns)]
10798            fn _type_assertion(
10799                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10800            ) {
10801                match _t {
10802                    alloy_sol_types::private::AssertTypeEq::<
10803                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10804                    >(_) => {}
10805                }
10806            }
10807            #[automatically_derived]
10808            #[doc(hidden)]
10809            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10810                fn from(value: isEpochRootReturn) -> Self {
10811                    (value._0,)
10812                }
10813            }
10814            #[automatically_derived]
10815            #[doc(hidden)]
10816            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10817                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10818                    Self { _0: tuple.0 }
10819                }
10820            }
10821        }
10822        #[automatically_derived]
10823        impl alloy_sol_types::SolCall for isEpochRootCall {
10824            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10825            type Token<'a> = <Self::Parameters<
10826                'a,
10827            > as alloy_sol_types::SolType>::Token<'a>;
10828            type Return = bool;
10829            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10830            type ReturnToken<'a> = <Self::ReturnTuple<
10831                'a,
10832            > as alloy_sol_types::SolType>::Token<'a>;
10833            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10834            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10835            #[inline]
10836            fn new<'a>(
10837                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10838            ) -> Self {
10839                tuple.into()
10840            }
10841            #[inline]
10842            fn tokenize(&self) -> Self::Token<'_> {
10843                (
10844                    <alloy::sol_types::sol_data::Uint<
10845                        64,
10846                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10847                )
10848            }
10849            #[inline]
10850            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10851                (
10852                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10853                        ret,
10854                    ),
10855                )
10856            }
10857            #[inline]
10858            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10859                <Self::ReturnTuple<
10860                    '_,
10861                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10862                    .map(|r| {
10863                        let r: isEpochRootReturn = r.into();
10864                        r._0
10865                    })
10866            }
10867            #[inline]
10868            fn abi_decode_returns_validate(
10869                data: &[u8],
10870            ) -> alloy_sol_types::Result<Self::Return> {
10871                <Self::ReturnTuple<
10872                    '_,
10873                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10874                    .map(|r| {
10875                        let r: isEpochRootReturn = r.into();
10876                        r._0
10877                    })
10878            }
10879        }
10880    };
10881    #[derive(serde::Serialize, serde::Deserialize)]
10882    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10883    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10884```solidity
10885function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10886```*/
10887    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10888    #[derive(Clone)]
10889    pub struct isGtEpochRootCall {
10890        #[allow(missing_docs)]
10891        pub blockHeight: u64,
10892    }
10893    #[derive(serde::Serialize, serde::Deserialize)]
10894    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10895    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10896    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10897    #[derive(Clone)]
10898    pub struct isGtEpochRootReturn {
10899        #[allow(missing_docs)]
10900        pub _0: bool,
10901    }
10902    #[allow(
10903        non_camel_case_types,
10904        non_snake_case,
10905        clippy::pub_underscore_fields,
10906        clippy::style
10907    )]
10908    const _: () = {
10909        use alloy::sol_types as alloy_sol_types;
10910        {
10911            #[doc(hidden)]
10912            #[allow(dead_code)]
10913            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10914            #[doc(hidden)]
10915            type UnderlyingRustTuple<'a> = (u64,);
10916            #[cfg(test)]
10917            #[allow(dead_code, unreachable_patterns)]
10918            fn _type_assertion(
10919                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10920            ) {
10921                match _t {
10922                    alloy_sol_types::private::AssertTypeEq::<
10923                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10924                    >(_) => {}
10925                }
10926            }
10927            #[automatically_derived]
10928            #[doc(hidden)]
10929            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10930                fn from(value: isGtEpochRootCall) -> Self {
10931                    (value.blockHeight,)
10932                }
10933            }
10934            #[automatically_derived]
10935            #[doc(hidden)]
10936            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10937                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10938                    Self { blockHeight: tuple.0 }
10939                }
10940            }
10941        }
10942        {
10943            #[doc(hidden)]
10944            #[allow(dead_code)]
10945            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10946            #[doc(hidden)]
10947            type UnderlyingRustTuple<'a> = (bool,);
10948            #[cfg(test)]
10949            #[allow(dead_code, unreachable_patterns)]
10950            fn _type_assertion(
10951                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10952            ) {
10953                match _t {
10954                    alloy_sol_types::private::AssertTypeEq::<
10955                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10956                    >(_) => {}
10957                }
10958            }
10959            #[automatically_derived]
10960            #[doc(hidden)]
10961            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
10962                fn from(value: isGtEpochRootReturn) -> Self {
10963                    (value._0,)
10964                }
10965            }
10966            #[automatically_derived]
10967            #[doc(hidden)]
10968            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
10969                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10970                    Self { _0: tuple.0 }
10971                }
10972            }
10973        }
10974        #[automatically_derived]
10975        impl alloy_sol_types::SolCall for isGtEpochRootCall {
10976            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10977            type Token<'a> = <Self::Parameters<
10978                'a,
10979            > as alloy_sol_types::SolType>::Token<'a>;
10980            type Return = bool;
10981            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10982            type ReturnToken<'a> = <Self::ReturnTuple<
10983                'a,
10984            > as alloy_sol_types::SolType>::Token<'a>;
10985            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
10986            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
10987            #[inline]
10988            fn new<'a>(
10989                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10990            ) -> Self {
10991                tuple.into()
10992            }
10993            #[inline]
10994            fn tokenize(&self) -> Self::Token<'_> {
10995                (
10996                    <alloy::sol_types::sol_data::Uint<
10997                        64,
10998                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10999                )
11000            }
11001            #[inline]
11002            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11003                (
11004                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11005                        ret,
11006                    ),
11007                )
11008            }
11009            #[inline]
11010            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11011                <Self::ReturnTuple<
11012                    '_,
11013                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11014                    .map(|r| {
11015                        let r: isGtEpochRootReturn = r.into();
11016                        r._0
11017                    })
11018            }
11019            #[inline]
11020            fn abi_decode_returns_validate(
11021                data: &[u8],
11022            ) -> alloy_sol_types::Result<Self::Return> {
11023                <Self::ReturnTuple<
11024                    '_,
11025                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11026                    .map(|r| {
11027                        let r: isGtEpochRootReturn = r.into();
11028                        r._0
11029                    })
11030            }
11031        }
11032    };
11033    #[derive(serde::Serialize, serde::Deserialize)]
11034    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11035    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11036```solidity
11037function isPermissionedProverEnabled() external view returns (bool);
11038```*/
11039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11040    #[derive(Clone)]
11041    pub struct isPermissionedProverEnabledCall;
11042    #[derive(serde::Serialize, serde::Deserialize)]
11043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11044    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11046    #[derive(Clone)]
11047    pub struct isPermissionedProverEnabledReturn {
11048        #[allow(missing_docs)]
11049        pub _0: bool,
11050    }
11051    #[allow(
11052        non_camel_case_types,
11053        non_snake_case,
11054        clippy::pub_underscore_fields,
11055        clippy::style
11056    )]
11057    const _: () = {
11058        use alloy::sol_types as alloy_sol_types;
11059        {
11060            #[doc(hidden)]
11061            #[allow(dead_code)]
11062            type UnderlyingSolTuple<'a> = ();
11063            #[doc(hidden)]
11064            type UnderlyingRustTuple<'a> = ();
11065            #[cfg(test)]
11066            #[allow(dead_code, unreachable_patterns)]
11067            fn _type_assertion(
11068                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11069            ) {
11070                match _t {
11071                    alloy_sol_types::private::AssertTypeEq::<
11072                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11073                    >(_) => {}
11074                }
11075            }
11076            #[automatically_derived]
11077            #[doc(hidden)]
11078            impl ::core::convert::From<isPermissionedProverEnabledCall>
11079            for UnderlyingRustTuple<'_> {
11080                fn from(value: isPermissionedProverEnabledCall) -> Self {
11081                    ()
11082                }
11083            }
11084            #[automatically_derived]
11085            #[doc(hidden)]
11086            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11087            for isPermissionedProverEnabledCall {
11088                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11089                    Self
11090                }
11091            }
11092        }
11093        {
11094            #[doc(hidden)]
11095            #[allow(dead_code)]
11096            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11097            #[doc(hidden)]
11098            type UnderlyingRustTuple<'a> = (bool,);
11099            #[cfg(test)]
11100            #[allow(dead_code, unreachable_patterns)]
11101            fn _type_assertion(
11102                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11103            ) {
11104                match _t {
11105                    alloy_sol_types::private::AssertTypeEq::<
11106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11107                    >(_) => {}
11108                }
11109            }
11110            #[automatically_derived]
11111            #[doc(hidden)]
11112            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11113            for UnderlyingRustTuple<'_> {
11114                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11115                    (value._0,)
11116                }
11117            }
11118            #[automatically_derived]
11119            #[doc(hidden)]
11120            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11121            for isPermissionedProverEnabledReturn {
11122                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11123                    Self { _0: tuple.0 }
11124                }
11125            }
11126        }
11127        #[automatically_derived]
11128        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11129            type Parameters<'a> = ();
11130            type Token<'a> = <Self::Parameters<
11131                'a,
11132            > as alloy_sol_types::SolType>::Token<'a>;
11133            type Return = bool;
11134            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11135            type ReturnToken<'a> = <Self::ReturnTuple<
11136                'a,
11137            > as alloy_sol_types::SolType>::Token<'a>;
11138            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11139            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11140            #[inline]
11141            fn new<'a>(
11142                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11143            ) -> Self {
11144                tuple.into()
11145            }
11146            #[inline]
11147            fn tokenize(&self) -> Self::Token<'_> {
11148                ()
11149            }
11150            #[inline]
11151            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11152                (
11153                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11154                        ret,
11155                    ),
11156                )
11157            }
11158            #[inline]
11159            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11160                <Self::ReturnTuple<
11161                    '_,
11162                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11163                    .map(|r| {
11164                        let r: isPermissionedProverEnabledReturn = r.into();
11165                        r._0
11166                    })
11167            }
11168            #[inline]
11169            fn abi_decode_returns_validate(
11170                data: &[u8],
11171            ) -> alloy_sol_types::Result<Self::Return> {
11172                <Self::ReturnTuple<
11173                    '_,
11174                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11175                    .map(|r| {
11176                        let r: isPermissionedProverEnabledReturn = r.into();
11177                        r._0
11178                    })
11179            }
11180        }
11181    };
11182    #[derive(serde::Serialize, serde::Deserialize)]
11183    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11184    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11185```solidity
11186function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
11187```*/
11188    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11189    #[derive(Clone)]
11190    pub struct lagOverEscapeHatchThresholdCall {
11191        #[allow(missing_docs)]
11192        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11193        #[allow(missing_docs)]
11194        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
11195    }
11196    #[derive(serde::Serialize, serde::Deserialize)]
11197    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11198    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11199    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11200    #[derive(Clone)]
11201    pub struct lagOverEscapeHatchThresholdReturn {
11202        #[allow(missing_docs)]
11203        pub _0: bool,
11204    }
11205    #[allow(
11206        non_camel_case_types,
11207        non_snake_case,
11208        clippy::pub_underscore_fields,
11209        clippy::style
11210    )]
11211    const _: () = {
11212        use alloy::sol_types as alloy_sol_types;
11213        {
11214            #[doc(hidden)]
11215            #[allow(dead_code)]
11216            type UnderlyingSolTuple<'a> = (
11217                alloy::sol_types::sol_data::Uint<256>,
11218                alloy::sol_types::sol_data::Uint<256>,
11219            );
11220            #[doc(hidden)]
11221            type UnderlyingRustTuple<'a> = (
11222                alloy::sol_types::private::primitives::aliases::U256,
11223                alloy::sol_types::private::primitives::aliases::U256,
11224            );
11225            #[cfg(test)]
11226            #[allow(dead_code, unreachable_patterns)]
11227            fn _type_assertion(
11228                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11229            ) {
11230                match _t {
11231                    alloy_sol_types::private::AssertTypeEq::<
11232                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11233                    >(_) => {}
11234                }
11235            }
11236            #[automatically_derived]
11237            #[doc(hidden)]
11238            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11239            for UnderlyingRustTuple<'_> {
11240                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11241                    (value.blockNumber, value.threshold)
11242                }
11243            }
11244            #[automatically_derived]
11245            #[doc(hidden)]
11246            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11247            for lagOverEscapeHatchThresholdCall {
11248                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11249                    Self {
11250                        blockNumber: tuple.0,
11251                        threshold: tuple.1,
11252                    }
11253                }
11254            }
11255        }
11256        {
11257            #[doc(hidden)]
11258            #[allow(dead_code)]
11259            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11260            #[doc(hidden)]
11261            type UnderlyingRustTuple<'a> = (bool,);
11262            #[cfg(test)]
11263            #[allow(dead_code, unreachable_patterns)]
11264            fn _type_assertion(
11265                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11266            ) {
11267                match _t {
11268                    alloy_sol_types::private::AssertTypeEq::<
11269                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11270                    >(_) => {}
11271                }
11272            }
11273            #[automatically_derived]
11274            #[doc(hidden)]
11275            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11276            for UnderlyingRustTuple<'_> {
11277                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11278                    (value._0,)
11279                }
11280            }
11281            #[automatically_derived]
11282            #[doc(hidden)]
11283            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11284            for lagOverEscapeHatchThresholdReturn {
11285                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11286                    Self { _0: tuple.0 }
11287                }
11288            }
11289        }
11290        #[automatically_derived]
11291        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11292            type Parameters<'a> = (
11293                alloy::sol_types::sol_data::Uint<256>,
11294                alloy::sol_types::sol_data::Uint<256>,
11295            );
11296            type Token<'a> = <Self::Parameters<
11297                'a,
11298            > as alloy_sol_types::SolType>::Token<'a>;
11299            type Return = bool;
11300            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11301            type ReturnToken<'a> = <Self::ReturnTuple<
11302                'a,
11303            > as alloy_sol_types::SolType>::Token<'a>;
11304            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11305            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11306            #[inline]
11307            fn new<'a>(
11308                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11309            ) -> Self {
11310                tuple.into()
11311            }
11312            #[inline]
11313            fn tokenize(&self) -> Self::Token<'_> {
11314                (
11315                    <alloy::sol_types::sol_data::Uint<
11316                        256,
11317                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11318                    <alloy::sol_types::sol_data::Uint<
11319                        256,
11320                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
11321                )
11322            }
11323            #[inline]
11324            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11325                (
11326                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11327                        ret,
11328                    ),
11329                )
11330            }
11331            #[inline]
11332            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11333                <Self::ReturnTuple<
11334                    '_,
11335                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11336                    .map(|r| {
11337                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11338                        r._0
11339                    })
11340            }
11341            #[inline]
11342            fn abi_decode_returns_validate(
11343                data: &[u8],
11344            ) -> alloy_sol_types::Result<Self::Return> {
11345                <Self::ReturnTuple<
11346                    '_,
11347                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11348                    .map(|r| {
11349                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11350                        r._0
11351                    })
11352            }
11353        }
11354    };
11355    #[derive(serde::Serialize, serde::Deserialize)]
11356    #[derive()]
11357    /**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`.
11358```solidity
11359function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
11360```*/
11361    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11362    #[derive(Clone)]
11363    pub struct newFinalizedState_0Call {
11364        #[allow(missing_docs)]
11365        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11366        #[allow(missing_docs)]
11367        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11368    }
11369    ///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.
11370    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11371    #[derive(Clone)]
11372    pub struct newFinalizedState_0Return {}
11373    #[allow(
11374        non_camel_case_types,
11375        non_snake_case,
11376        clippy::pub_underscore_fields,
11377        clippy::style
11378    )]
11379    const _: () = {
11380        use alloy::sol_types as alloy_sol_types;
11381        {
11382            #[doc(hidden)]
11383            #[allow(dead_code)]
11384            type UnderlyingSolTuple<'a> = (
11385                LightClient::LightClientState,
11386                IPlonkVerifier::PlonkProof,
11387            );
11388            #[doc(hidden)]
11389            type UnderlyingRustTuple<'a> = (
11390                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11391                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11392            );
11393            #[cfg(test)]
11394            #[allow(dead_code, unreachable_patterns)]
11395            fn _type_assertion(
11396                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11397            ) {
11398                match _t {
11399                    alloy_sol_types::private::AssertTypeEq::<
11400                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11401                    >(_) => {}
11402                }
11403            }
11404            #[automatically_derived]
11405            #[doc(hidden)]
11406            impl ::core::convert::From<newFinalizedState_0Call>
11407            for UnderlyingRustTuple<'_> {
11408                fn from(value: newFinalizedState_0Call) -> Self {
11409                    (value._0, value._1)
11410                }
11411            }
11412            #[automatically_derived]
11413            #[doc(hidden)]
11414            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11415            for newFinalizedState_0Call {
11416                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11417                    Self { _0: tuple.0, _1: tuple.1 }
11418                }
11419            }
11420        }
11421        {
11422            #[doc(hidden)]
11423            #[allow(dead_code)]
11424            type UnderlyingSolTuple<'a> = ();
11425            #[doc(hidden)]
11426            type UnderlyingRustTuple<'a> = ();
11427            #[cfg(test)]
11428            #[allow(dead_code, unreachable_patterns)]
11429            fn _type_assertion(
11430                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11431            ) {
11432                match _t {
11433                    alloy_sol_types::private::AssertTypeEq::<
11434                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11435                    >(_) => {}
11436                }
11437            }
11438            #[automatically_derived]
11439            #[doc(hidden)]
11440            impl ::core::convert::From<newFinalizedState_0Return>
11441            for UnderlyingRustTuple<'_> {
11442                fn from(value: newFinalizedState_0Return) -> Self {
11443                    ()
11444                }
11445            }
11446            #[automatically_derived]
11447            #[doc(hidden)]
11448            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11449            for newFinalizedState_0Return {
11450                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11451                    Self {}
11452                }
11453            }
11454        }
11455        impl newFinalizedState_0Return {
11456            fn _tokenize(
11457                &self,
11458            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11459                ()
11460            }
11461        }
11462        #[automatically_derived]
11463        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
11464            type Parameters<'a> = (
11465                LightClient::LightClientState,
11466                IPlonkVerifier::PlonkProof,
11467            );
11468            type Token<'a> = <Self::Parameters<
11469                'a,
11470            > as alloy_sol_types::SolType>::Token<'a>;
11471            type Return = newFinalizedState_0Return;
11472            type ReturnTuple<'a> = ();
11473            type ReturnToken<'a> = <Self::ReturnTuple<
11474                'a,
11475            > as alloy_sol_types::SolType>::Token<'a>;
11476            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))";
11477            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
11478            #[inline]
11479            fn new<'a>(
11480                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11481            ) -> Self {
11482                tuple.into()
11483            }
11484            #[inline]
11485            fn tokenize(&self) -> Self::Token<'_> {
11486                (
11487                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11488                        &self._0,
11489                    ),
11490                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11491                        &self._1,
11492                    ),
11493                )
11494            }
11495            #[inline]
11496            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11497                newFinalizedState_0Return::_tokenize(ret)
11498            }
11499            #[inline]
11500            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11501                <Self::ReturnTuple<
11502                    '_,
11503                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11504                    .map(Into::into)
11505            }
11506            #[inline]
11507            fn abi_decode_returns_validate(
11508                data: &[u8],
11509            ) -> alloy_sol_types::Result<Self::Return> {
11510                <Self::ReturnTuple<
11511                    '_,
11512                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11513                    .map(Into::into)
11514            }
11515        }
11516    };
11517    #[derive(serde::Serialize, serde::Deserialize)]
11518    #[derive()]
11519    /**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`.
11520```solidity
11521function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
11522```*/
11523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11524    #[derive(Clone)]
11525    pub struct newFinalizedState_1Call {
11526        #[allow(missing_docs)]
11527        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11528        #[allow(missing_docs)]
11529        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11530        #[allow(missing_docs)]
11531        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11532    }
11533    ///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.
11534    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11535    #[derive(Clone)]
11536    pub struct newFinalizedState_1Return {}
11537    #[allow(
11538        non_camel_case_types,
11539        non_snake_case,
11540        clippy::pub_underscore_fields,
11541        clippy::style
11542    )]
11543    const _: () = {
11544        use alloy::sol_types as alloy_sol_types;
11545        {
11546            #[doc(hidden)]
11547            #[allow(dead_code)]
11548            type UnderlyingSolTuple<'a> = (
11549                LightClient::LightClientState,
11550                LightClient::StakeTableState,
11551                IPlonkVerifier::PlonkProof,
11552            );
11553            #[doc(hidden)]
11554            type UnderlyingRustTuple<'a> = (
11555                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11556                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11557                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11558            );
11559            #[cfg(test)]
11560            #[allow(dead_code, unreachable_patterns)]
11561            fn _type_assertion(
11562                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11563            ) {
11564                match _t {
11565                    alloy_sol_types::private::AssertTypeEq::<
11566                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11567                    >(_) => {}
11568                }
11569            }
11570            #[automatically_derived]
11571            #[doc(hidden)]
11572            impl ::core::convert::From<newFinalizedState_1Call>
11573            for UnderlyingRustTuple<'_> {
11574                fn from(value: newFinalizedState_1Call) -> Self {
11575                    (value.newState, value.nextStakeTable, value.proof)
11576                }
11577            }
11578            #[automatically_derived]
11579            #[doc(hidden)]
11580            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11581            for newFinalizedState_1Call {
11582                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11583                    Self {
11584                        newState: tuple.0,
11585                        nextStakeTable: tuple.1,
11586                        proof: tuple.2,
11587                    }
11588                }
11589            }
11590        }
11591        {
11592            #[doc(hidden)]
11593            #[allow(dead_code)]
11594            type UnderlyingSolTuple<'a> = ();
11595            #[doc(hidden)]
11596            type UnderlyingRustTuple<'a> = ();
11597            #[cfg(test)]
11598            #[allow(dead_code, unreachable_patterns)]
11599            fn _type_assertion(
11600                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11601            ) {
11602                match _t {
11603                    alloy_sol_types::private::AssertTypeEq::<
11604                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11605                    >(_) => {}
11606                }
11607            }
11608            #[automatically_derived]
11609            #[doc(hidden)]
11610            impl ::core::convert::From<newFinalizedState_1Return>
11611            for UnderlyingRustTuple<'_> {
11612                fn from(value: newFinalizedState_1Return) -> Self {
11613                    ()
11614                }
11615            }
11616            #[automatically_derived]
11617            #[doc(hidden)]
11618            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11619            for newFinalizedState_1Return {
11620                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11621                    Self {}
11622                }
11623            }
11624        }
11625        impl newFinalizedState_1Return {
11626            fn _tokenize(
11627                &self,
11628            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11629                ()
11630            }
11631        }
11632        #[automatically_derived]
11633        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11634            type Parameters<'a> = (
11635                LightClient::LightClientState,
11636                LightClient::StakeTableState,
11637                IPlonkVerifier::PlonkProof,
11638            );
11639            type Token<'a> = <Self::Parameters<
11640                'a,
11641            > as alloy_sol_types::SolType>::Token<'a>;
11642            type Return = newFinalizedState_1Return;
11643            type ReturnTuple<'a> = ();
11644            type ReturnToken<'a> = <Self::ReturnTuple<
11645                'a,
11646            > as alloy_sol_types::SolType>::Token<'a>;
11647            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))";
11648            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11649            #[inline]
11650            fn new<'a>(
11651                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11652            ) -> Self {
11653                tuple.into()
11654            }
11655            #[inline]
11656            fn tokenize(&self) -> Self::Token<'_> {
11657                (
11658                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11659                        &self.newState,
11660                    ),
11661                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11662                        &self.nextStakeTable,
11663                    ),
11664                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11665                        &self.proof,
11666                    ),
11667                )
11668            }
11669            #[inline]
11670            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11671                newFinalizedState_1Return::_tokenize(ret)
11672            }
11673            #[inline]
11674            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11675                <Self::ReturnTuple<
11676                    '_,
11677                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11678                    .map(Into::into)
11679            }
11680            #[inline]
11681            fn abi_decode_returns_validate(
11682                data: &[u8],
11683            ) -> alloy_sol_types::Result<Self::Return> {
11684                <Self::ReturnTuple<
11685                    '_,
11686                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11687                    .map(Into::into)
11688            }
11689        }
11690    };
11691    #[derive(serde::Serialize, serde::Deserialize)]
11692    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11693    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11694```solidity
11695function owner() external view returns (address);
11696```*/
11697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11698    #[derive(Clone)]
11699    pub struct ownerCall;
11700    #[derive(serde::Serialize, serde::Deserialize)]
11701    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11702    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11703    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11704    #[derive(Clone)]
11705    pub struct ownerReturn {
11706        #[allow(missing_docs)]
11707        pub _0: alloy::sol_types::private::Address,
11708    }
11709    #[allow(
11710        non_camel_case_types,
11711        non_snake_case,
11712        clippy::pub_underscore_fields,
11713        clippy::style
11714    )]
11715    const _: () = {
11716        use alloy::sol_types as alloy_sol_types;
11717        {
11718            #[doc(hidden)]
11719            #[allow(dead_code)]
11720            type UnderlyingSolTuple<'a> = ();
11721            #[doc(hidden)]
11722            type UnderlyingRustTuple<'a> = ();
11723            #[cfg(test)]
11724            #[allow(dead_code, unreachable_patterns)]
11725            fn _type_assertion(
11726                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11727            ) {
11728                match _t {
11729                    alloy_sol_types::private::AssertTypeEq::<
11730                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11731                    >(_) => {}
11732                }
11733            }
11734            #[automatically_derived]
11735            #[doc(hidden)]
11736            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11737                fn from(value: ownerCall) -> Self {
11738                    ()
11739                }
11740            }
11741            #[automatically_derived]
11742            #[doc(hidden)]
11743            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11744                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11745                    Self
11746                }
11747            }
11748        }
11749        {
11750            #[doc(hidden)]
11751            #[allow(dead_code)]
11752            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11753            #[doc(hidden)]
11754            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11755            #[cfg(test)]
11756            #[allow(dead_code, unreachable_patterns)]
11757            fn _type_assertion(
11758                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11759            ) {
11760                match _t {
11761                    alloy_sol_types::private::AssertTypeEq::<
11762                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11763                    >(_) => {}
11764                }
11765            }
11766            #[automatically_derived]
11767            #[doc(hidden)]
11768            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
11769                fn from(value: ownerReturn) -> Self {
11770                    (value._0,)
11771                }
11772            }
11773            #[automatically_derived]
11774            #[doc(hidden)]
11775            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11776                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11777                    Self { _0: tuple.0 }
11778                }
11779            }
11780        }
11781        #[automatically_derived]
11782        impl alloy_sol_types::SolCall for ownerCall {
11783            type Parameters<'a> = ();
11784            type Token<'a> = <Self::Parameters<
11785                'a,
11786            > as alloy_sol_types::SolType>::Token<'a>;
11787            type Return = alloy::sol_types::private::Address;
11788            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11789            type ReturnToken<'a> = <Self::ReturnTuple<
11790                'a,
11791            > as alloy_sol_types::SolType>::Token<'a>;
11792            const SIGNATURE: &'static str = "owner()";
11793            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11794            #[inline]
11795            fn new<'a>(
11796                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11797            ) -> Self {
11798                tuple.into()
11799            }
11800            #[inline]
11801            fn tokenize(&self) -> Self::Token<'_> {
11802                ()
11803            }
11804            #[inline]
11805            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11806                (
11807                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11808                        ret,
11809                    ),
11810                )
11811            }
11812            #[inline]
11813            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11814                <Self::ReturnTuple<
11815                    '_,
11816                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11817                    .map(|r| {
11818                        let r: ownerReturn = r.into();
11819                        r._0
11820                    })
11821            }
11822            #[inline]
11823            fn abi_decode_returns_validate(
11824                data: &[u8],
11825            ) -> alloy_sol_types::Result<Self::Return> {
11826                <Self::ReturnTuple<
11827                    '_,
11828                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11829                    .map(|r| {
11830                        let r: ownerReturn = r.into();
11831                        r._0
11832                    })
11833            }
11834        }
11835    };
11836    #[derive(serde::Serialize, serde::Deserialize)]
11837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11838    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
11839```solidity
11840function permissionedProver() external view returns (address);
11841```*/
11842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11843    #[derive(Clone)]
11844    pub struct permissionedProverCall;
11845    #[derive(serde::Serialize, serde::Deserialize)]
11846    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11847    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
11848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11849    #[derive(Clone)]
11850    pub struct permissionedProverReturn {
11851        #[allow(missing_docs)]
11852        pub _0: alloy::sol_types::private::Address,
11853    }
11854    #[allow(
11855        non_camel_case_types,
11856        non_snake_case,
11857        clippy::pub_underscore_fields,
11858        clippy::style
11859    )]
11860    const _: () = {
11861        use alloy::sol_types as alloy_sol_types;
11862        {
11863            #[doc(hidden)]
11864            #[allow(dead_code)]
11865            type UnderlyingSolTuple<'a> = ();
11866            #[doc(hidden)]
11867            type UnderlyingRustTuple<'a> = ();
11868            #[cfg(test)]
11869            #[allow(dead_code, unreachable_patterns)]
11870            fn _type_assertion(
11871                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11872            ) {
11873                match _t {
11874                    alloy_sol_types::private::AssertTypeEq::<
11875                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11876                    >(_) => {}
11877                }
11878            }
11879            #[automatically_derived]
11880            #[doc(hidden)]
11881            impl ::core::convert::From<permissionedProverCall>
11882            for UnderlyingRustTuple<'_> {
11883                fn from(value: permissionedProverCall) -> Self {
11884                    ()
11885                }
11886            }
11887            #[automatically_derived]
11888            #[doc(hidden)]
11889            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11890            for permissionedProverCall {
11891                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11892                    Self
11893                }
11894            }
11895        }
11896        {
11897            #[doc(hidden)]
11898            #[allow(dead_code)]
11899            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11900            #[doc(hidden)]
11901            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11902            #[cfg(test)]
11903            #[allow(dead_code, unreachable_patterns)]
11904            fn _type_assertion(
11905                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11906            ) {
11907                match _t {
11908                    alloy_sol_types::private::AssertTypeEq::<
11909                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11910                    >(_) => {}
11911                }
11912            }
11913            #[automatically_derived]
11914            #[doc(hidden)]
11915            impl ::core::convert::From<permissionedProverReturn>
11916            for UnderlyingRustTuple<'_> {
11917                fn from(value: permissionedProverReturn) -> Self {
11918                    (value._0,)
11919                }
11920            }
11921            #[automatically_derived]
11922            #[doc(hidden)]
11923            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11924            for permissionedProverReturn {
11925                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11926                    Self { _0: tuple.0 }
11927                }
11928            }
11929        }
11930        #[automatically_derived]
11931        impl alloy_sol_types::SolCall for permissionedProverCall {
11932            type Parameters<'a> = ();
11933            type Token<'a> = <Self::Parameters<
11934                'a,
11935            > as alloy_sol_types::SolType>::Token<'a>;
11936            type Return = alloy::sol_types::private::Address;
11937            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11938            type ReturnToken<'a> = <Self::ReturnTuple<
11939                'a,
11940            > as alloy_sol_types::SolType>::Token<'a>;
11941            const SIGNATURE: &'static str = "permissionedProver()";
11942            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
11943            #[inline]
11944            fn new<'a>(
11945                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11946            ) -> Self {
11947                tuple.into()
11948            }
11949            #[inline]
11950            fn tokenize(&self) -> Self::Token<'_> {
11951                ()
11952            }
11953            #[inline]
11954            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11955                (
11956                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11957                        ret,
11958                    ),
11959                )
11960            }
11961            #[inline]
11962            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11963                <Self::ReturnTuple<
11964                    '_,
11965                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11966                    .map(|r| {
11967                        let r: permissionedProverReturn = r.into();
11968                        r._0
11969                    })
11970            }
11971            #[inline]
11972            fn abi_decode_returns_validate(
11973                data: &[u8],
11974            ) -> alloy_sol_types::Result<Self::Return> {
11975                <Self::ReturnTuple<
11976                    '_,
11977                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11978                    .map(|r| {
11979                        let r: permissionedProverReturn = r.into();
11980                        r._0
11981                    })
11982            }
11983        }
11984    };
11985    #[derive(serde::Serialize, serde::Deserialize)]
11986    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11987    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
11988```solidity
11989function proxiableUUID() external view returns (bytes32);
11990```*/
11991    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11992    #[derive(Clone)]
11993    pub struct proxiableUUIDCall;
11994    #[derive(serde::Serialize, serde::Deserialize)]
11995    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11996    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
11997    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11998    #[derive(Clone)]
11999    pub struct proxiableUUIDReturn {
12000        #[allow(missing_docs)]
12001        pub _0: alloy::sol_types::private::FixedBytes<32>,
12002    }
12003    #[allow(
12004        non_camel_case_types,
12005        non_snake_case,
12006        clippy::pub_underscore_fields,
12007        clippy::style
12008    )]
12009    const _: () = {
12010        use alloy::sol_types as alloy_sol_types;
12011        {
12012            #[doc(hidden)]
12013            #[allow(dead_code)]
12014            type UnderlyingSolTuple<'a> = ();
12015            #[doc(hidden)]
12016            type UnderlyingRustTuple<'a> = ();
12017            #[cfg(test)]
12018            #[allow(dead_code, unreachable_patterns)]
12019            fn _type_assertion(
12020                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12021            ) {
12022                match _t {
12023                    alloy_sol_types::private::AssertTypeEq::<
12024                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12025                    >(_) => {}
12026                }
12027            }
12028            #[automatically_derived]
12029            #[doc(hidden)]
12030            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12031                fn from(value: proxiableUUIDCall) -> Self {
12032                    ()
12033                }
12034            }
12035            #[automatically_derived]
12036            #[doc(hidden)]
12037            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12039                    Self
12040                }
12041            }
12042        }
12043        {
12044            #[doc(hidden)]
12045            #[allow(dead_code)]
12046            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12047            #[doc(hidden)]
12048            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12049            #[cfg(test)]
12050            #[allow(dead_code, unreachable_patterns)]
12051            fn _type_assertion(
12052                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12053            ) {
12054                match _t {
12055                    alloy_sol_types::private::AssertTypeEq::<
12056                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12057                    >(_) => {}
12058                }
12059            }
12060            #[automatically_derived]
12061            #[doc(hidden)]
12062            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12063                fn from(value: proxiableUUIDReturn) -> Self {
12064                    (value._0,)
12065                }
12066            }
12067            #[automatically_derived]
12068            #[doc(hidden)]
12069            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12071                    Self { _0: tuple.0 }
12072                }
12073            }
12074        }
12075        #[automatically_derived]
12076        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12077            type Parameters<'a> = ();
12078            type Token<'a> = <Self::Parameters<
12079                'a,
12080            > as alloy_sol_types::SolType>::Token<'a>;
12081            type Return = alloy::sol_types::private::FixedBytes<32>;
12082            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12083            type ReturnToken<'a> = <Self::ReturnTuple<
12084                'a,
12085            > as alloy_sol_types::SolType>::Token<'a>;
12086            const SIGNATURE: &'static str = "proxiableUUID()";
12087            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
12088            #[inline]
12089            fn new<'a>(
12090                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12091            ) -> Self {
12092                tuple.into()
12093            }
12094            #[inline]
12095            fn tokenize(&self) -> Self::Token<'_> {
12096                ()
12097            }
12098            #[inline]
12099            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12100                (
12101                    <alloy::sol_types::sol_data::FixedBytes<
12102                        32,
12103                    > as alloy_sol_types::SolType>::tokenize(ret),
12104                )
12105            }
12106            #[inline]
12107            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12108                <Self::ReturnTuple<
12109                    '_,
12110                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12111                    .map(|r| {
12112                        let r: proxiableUUIDReturn = r.into();
12113                        r._0
12114                    })
12115            }
12116            #[inline]
12117            fn abi_decode_returns_validate(
12118                data: &[u8],
12119            ) -> alloy_sol_types::Result<Self::Return> {
12120                <Self::ReturnTuple<
12121                    '_,
12122                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12123                    .map(|r| {
12124                        let r: proxiableUUIDReturn = r.into();
12125                        r._0
12126                    })
12127            }
12128        }
12129    };
12130    #[derive(serde::Serialize, serde::Deserialize)]
12131    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12132    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
12133```solidity
12134function renounceOwnership() external;
12135```*/
12136    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12137    #[derive(Clone)]
12138    pub struct renounceOwnershipCall;
12139    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
12140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12141    #[derive(Clone)]
12142    pub struct renounceOwnershipReturn {}
12143    #[allow(
12144        non_camel_case_types,
12145        non_snake_case,
12146        clippy::pub_underscore_fields,
12147        clippy::style
12148    )]
12149    const _: () = {
12150        use alloy::sol_types as alloy_sol_types;
12151        {
12152            #[doc(hidden)]
12153            #[allow(dead_code)]
12154            type UnderlyingSolTuple<'a> = ();
12155            #[doc(hidden)]
12156            type UnderlyingRustTuple<'a> = ();
12157            #[cfg(test)]
12158            #[allow(dead_code, unreachable_patterns)]
12159            fn _type_assertion(
12160                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12161            ) {
12162                match _t {
12163                    alloy_sol_types::private::AssertTypeEq::<
12164                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12165                    >(_) => {}
12166                }
12167            }
12168            #[automatically_derived]
12169            #[doc(hidden)]
12170            impl ::core::convert::From<renounceOwnershipCall>
12171            for UnderlyingRustTuple<'_> {
12172                fn from(value: renounceOwnershipCall) -> Self {
12173                    ()
12174                }
12175            }
12176            #[automatically_derived]
12177            #[doc(hidden)]
12178            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12179            for renounceOwnershipCall {
12180                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12181                    Self
12182                }
12183            }
12184        }
12185        {
12186            #[doc(hidden)]
12187            #[allow(dead_code)]
12188            type UnderlyingSolTuple<'a> = ();
12189            #[doc(hidden)]
12190            type UnderlyingRustTuple<'a> = ();
12191            #[cfg(test)]
12192            #[allow(dead_code, unreachable_patterns)]
12193            fn _type_assertion(
12194                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12195            ) {
12196                match _t {
12197                    alloy_sol_types::private::AssertTypeEq::<
12198                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12199                    >(_) => {}
12200                }
12201            }
12202            #[automatically_derived]
12203            #[doc(hidden)]
12204            impl ::core::convert::From<renounceOwnershipReturn>
12205            for UnderlyingRustTuple<'_> {
12206                fn from(value: renounceOwnershipReturn) -> Self {
12207                    ()
12208                }
12209            }
12210            #[automatically_derived]
12211            #[doc(hidden)]
12212            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12213            for renounceOwnershipReturn {
12214                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12215                    Self {}
12216                }
12217            }
12218        }
12219        impl renounceOwnershipReturn {
12220            fn _tokenize(
12221                &self,
12222            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12223                ()
12224            }
12225        }
12226        #[automatically_derived]
12227        impl alloy_sol_types::SolCall for renounceOwnershipCall {
12228            type Parameters<'a> = ();
12229            type Token<'a> = <Self::Parameters<
12230                'a,
12231            > as alloy_sol_types::SolType>::Token<'a>;
12232            type Return = renounceOwnershipReturn;
12233            type ReturnTuple<'a> = ();
12234            type ReturnToken<'a> = <Self::ReturnTuple<
12235                'a,
12236            > as alloy_sol_types::SolType>::Token<'a>;
12237            const SIGNATURE: &'static str = "renounceOwnership()";
12238            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
12239            #[inline]
12240            fn new<'a>(
12241                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12242            ) -> Self {
12243                tuple.into()
12244            }
12245            #[inline]
12246            fn tokenize(&self) -> Self::Token<'_> {
12247                ()
12248            }
12249            #[inline]
12250            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12251                renounceOwnershipReturn::_tokenize(ret)
12252            }
12253            #[inline]
12254            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12255                <Self::ReturnTuple<
12256                    '_,
12257                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12258                    .map(Into::into)
12259            }
12260            #[inline]
12261            fn abi_decode_returns_validate(
12262                data: &[u8],
12263            ) -> alloy_sol_types::Result<Self::Return> {
12264                <Self::ReturnTuple<
12265                    '_,
12266                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12267                    .map(Into::into)
12268            }
12269        }
12270    };
12271    #[derive(serde::Serialize, serde::Deserialize)]
12272    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12273    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
12274```solidity
12275function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
12276```*/
12277    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12278    #[derive(Clone)]
12279    pub struct setBlocksPerEpochCall {
12280        #[allow(missing_docs)]
12281        pub newBlocksPerEpoch: u64,
12282    }
12283    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
12284    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12285    #[derive(Clone)]
12286    pub struct setBlocksPerEpochReturn {}
12287    #[allow(
12288        non_camel_case_types,
12289        non_snake_case,
12290        clippy::pub_underscore_fields,
12291        clippy::style
12292    )]
12293    const _: () = {
12294        use alloy::sol_types as alloy_sol_types;
12295        {
12296            #[doc(hidden)]
12297            #[allow(dead_code)]
12298            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12299            #[doc(hidden)]
12300            type UnderlyingRustTuple<'a> = (u64,);
12301            #[cfg(test)]
12302            #[allow(dead_code, unreachable_patterns)]
12303            fn _type_assertion(
12304                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12305            ) {
12306                match _t {
12307                    alloy_sol_types::private::AssertTypeEq::<
12308                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12309                    >(_) => {}
12310                }
12311            }
12312            #[automatically_derived]
12313            #[doc(hidden)]
12314            impl ::core::convert::From<setBlocksPerEpochCall>
12315            for UnderlyingRustTuple<'_> {
12316                fn from(value: setBlocksPerEpochCall) -> Self {
12317                    (value.newBlocksPerEpoch,)
12318                }
12319            }
12320            #[automatically_derived]
12321            #[doc(hidden)]
12322            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12323            for setBlocksPerEpochCall {
12324                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12325                    Self { newBlocksPerEpoch: tuple.0 }
12326                }
12327            }
12328        }
12329        {
12330            #[doc(hidden)]
12331            #[allow(dead_code)]
12332            type UnderlyingSolTuple<'a> = ();
12333            #[doc(hidden)]
12334            type UnderlyingRustTuple<'a> = ();
12335            #[cfg(test)]
12336            #[allow(dead_code, unreachable_patterns)]
12337            fn _type_assertion(
12338                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12339            ) {
12340                match _t {
12341                    alloy_sol_types::private::AssertTypeEq::<
12342                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12343                    >(_) => {}
12344                }
12345            }
12346            #[automatically_derived]
12347            #[doc(hidden)]
12348            impl ::core::convert::From<setBlocksPerEpochReturn>
12349            for UnderlyingRustTuple<'_> {
12350                fn from(value: setBlocksPerEpochReturn) -> Self {
12351                    ()
12352                }
12353            }
12354            #[automatically_derived]
12355            #[doc(hidden)]
12356            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12357            for setBlocksPerEpochReturn {
12358                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12359                    Self {}
12360                }
12361            }
12362        }
12363        impl setBlocksPerEpochReturn {
12364            fn _tokenize(
12365                &self,
12366            ) -> <setBlocksPerEpochCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12367                ()
12368            }
12369        }
12370        #[automatically_derived]
12371        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
12372            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12373            type Token<'a> = <Self::Parameters<
12374                'a,
12375            > as alloy_sol_types::SolType>::Token<'a>;
12376            type Return = setBlocksPerEpochReturn;
12377            type ReturnTuple<'a> = ();
12378            type ReturnToken<'a> = <Self::ReturnTuple<
12379                'a,
12380            > as alloy_sol_types::SolType>::Token<'a>;
12381            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
12382            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
12383            #[inline]
12384            fn new<'a>(
12385                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12386            ) -> Self {
12387                tuple.into()
12388            }
12389            #[inline]
12390            fn tokenize(&self) -> Self::Token<'_> {
12391                (
12392                    <alloy::sol_types::sol_data::Uint<
12393                        64,
12394                    > as alloy_sol_types::SolType>::tokenize(&self.newBlocksPerEpoch),
12395                )
12396            }
12397            #[inline]
12398            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12399                setBlocksPerEpochReturn::_tokenize(ret)
12400            }
12401            #[inline]
12402            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12403                <Self::ReturnTuple<
12404                    '_,
12405                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12406                    .map(Into::into)
12407            }
12408            #[inline]
12409            fn abi_decode_returns_validate(
12410                data: &[u8],
12411            ) -> alloy_sol_types::Result<Self::Return> {
12412                <Self::ReturnTuple<
12413                    '_,
12414                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12415                    .map(Into::into)
12416            }
12417        }
12418    };
12419    #[derive(serde::Serialize, serde::Deserialize)]
12420    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12421    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
12422```solidity
12423function setFinalizedState(LightClient.LightClientState memory state) external;
12424```*/
12425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12426    #[derive(Clone)]
12427    pub struct setFinalizedStateCall {
12428        #[allow(missing_docs)]
12429        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12430    }
12431    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
12432    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12433    #[derive(Clone)]
12434    pub struct setFinalizedStateReturn {}
12435    #[allow(
12436        non_camel_case_types,
12437        non_snake_case,
12438        clippy::pub_underscore_fields,
12439        clippy::style
12440    )]
12441    const _: () = {
12442        use alloy::sol_types as alloy_sol_types;
12443        {
12444            #[doc(hidden)]
12445            #[allow(dead_code)]
12446            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
12447            #[doc(hidden)]
12448            type UnderlyingRustTuple<'a> = (
12449                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12450            );
12451            #[cfg(test)]
12452            #[allow(dead_code, unreachable_patterns)]
12453            fn _type_assertion(
12454                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12455            ) {
12456                match _t {
12457                    alloy_sol_types::private::AssertTypeEq::<
12458                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12459                    >(_) => {}
12460                }
12461            }
12462            #[automatically_derived]
12463            #[doc(hidden)]
12464            impl ::core::convert::From<setFinalizedStateCall>
12465            for UnderlyingRustTuple<'_> {
12466                fn from(value: setFinalizedStateCall) -> Self {
12467                    (value.state,)
12468                }
12469            }
12470            #[automatically_derived]
12471            #[doc(hidden)]
12472            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12473            for setFinalizedStateCall {
12474                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12475                    Self { state: tuple.0 }
12476                }
12477            }
12478        }
12479        {
12480            #[doc(hidden)]
12481            #[allow(dead_code)]
12482            type UnderlyingSolTuple<'a> = ();
12483            #[doc(hidden)]
12484            type UnderlyingRustTuple<'a> = ();
12485            #[cfg(test)]
12486            #[allow(dead_code, unreachable_patterns)]
12487            fn _type_assertion(
12488                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12489            ) {
12490                match _t {
12491                    alloy_sol_types::private::AssertTypeEq::<
12492                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12493                    >(_) => {}
12494                }
12495            }
12496            #[automatically_derived]
12497            #[doc(hidden)]
12498            impl ::core::convert::From<setFinalizedStateReturn>
12499            for UnderlyingRustTuple<'_> {
12500                fn from(value: setFinalizedStateReturn) -> Self {
12501                    ()
12502                }
12503            }
12504            #[automatically_derived]
12505            #[doc(hidden)]
12506            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12507            for setFinalizedStateReturn {
12508                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12509                    Self {}
12510                }
12511            }
12512        }
12513        impl setFinalizedStateReturn {
12514            fn _tokenize(
12515                &self,
12516            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12517                ()
12518            }
12519        }
12520        #[automatically_derived]
12521        impl alloy_sol_types::SolCall for setFinalizedStateCall {
12522            type Parameters<'a> = (LightClient::LightClientState,);
12523            type Token<'a> = <Self::Parameters<
12524                'a,
12525            > as alloy_sol_types::SolType>::Token<'a>;
12526            type Return = setFinalizedStateReturn;
12527            type ReturnTuple<'a> = ();
12528            type ReturnToken<'a> = <Self::ReturnTuple<
12529                'a,
12530            > as alloy_sol_types::SolType>::Token<'a>;
12531            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
12532            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
12533            #[inline]
12534            fn new<'a>(
12535                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12536            ) -> Self {
12537                tuple.into()
12538            }
12539            #[inline]
12540            fn tokenize(&self) -> Self::Token<'_> {
12541                (
12542                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12543                        &self.state,
12544                    ),
12545                )
12546            }
12547            #[inline]
12548            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12549                setFinalizedStateReturn::_tokenize(ret)
12550            }
12551            #[inline]
12552            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12553                <Self::ReturnTuple<
12554                    '_,
12555                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12556                    .map(Into::into)
12557            }
12558            #[inline]
12559            fn abi_decode_returns_validate(
12560                data: &[u8],
12561            ) -> alloy_sol_types::Result<Self::Return> {
12562                <Self::ReturnTuple<
12563                    '_,
12564                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12565                    .map(Into::into)
12566            }
12567        }
12568    };
12569    #[derive(serde::Serialize, serde::Deserialize)]
12570    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12571    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
12572```solidity
12573function setHotShotDownSince(uint256 l1Height) external;
12574```*/
12575    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12576    #[derive(Clone)]
12577    pub struct setHotShotDownSinceCall {
12578        #[allow(missing_docs)]
12579        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
12580    }
12581    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
12582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12583    #[derive(Clone)]
12584    pub struct setHotShotDownSinceReturn {}
12585    #[allow(
12586        non_camel_case_types,
12587        non_snake_case,
12588        clippy::pub_underscore_fields,
12589        clippy::style
12590    )]
12591    const _: () = {
12592        use alloy::sol_types as alloy_sol_types;
12593        {
12594            #[doc(hidden)]
12595            #[allow(dead_code)]
12596            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12597            #[doc(hidden)]
12598            type UnderlyingRustTuple<'a> = (
12599                alloy::sol_types::private::primitives::aliases::U256,
12600            );
12601            #[cfg(test)]
12602            #[allow(dead_code, unreachable_patterns)]
12603            fn _type_assertion(
12604                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12605            ) {
12606                match _t {
12607                    alloy_sol_types::private::AssertTypeEq::<
12608                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12609                    >(_) => {}
12610                }
12611            }
12612            #[automatically_derived]
12613            #[doc(hidden)]
12614            impl ::core::convert::From<setHotShotDownSinceCall>
12615            for UnderlyingRustTuple<'_> {
12616                fn from(value: setHotShotDownSinceCall) -> Self {
12617                    (value.l1Height,)
12618                }
12619            }
12620            #[automatically_derived]
12621            #[doc(hidden)]
12622            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12623            for setHotShotDownSinceCall {
12624                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12625                    Self { l1Height: tuple.0 }
12626                }
12627            }
12628        }
12629        {
12630            #[doc(hidden)]
12631            #[allow(dead_code)]
12632            type UnderlyingSolTuple<'a> = ();
12633            #[doc(hidden)]
12634            type UnderlyingRustTuple<'a> = ();
12635            #[cfg(test)]
12636            #[allow(dead_code, unreachable_patterns)]
12637            fn _type_assertion(
12638                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12639            ) {
12640                match _t {
12641                    alloy_sol_types::private::AssertTypeEq::<
12642                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12643                    >(_) => {}
12644                }
12645            }
12646            #[automatically_derived]
12647            #[doc(hidden)]
12648            impl ::core::convert::From<setHotShotDownSinceReturn>
12649            for UnderlyingRustTuple<'_> {
12650                fn from(value: setHotShotDownSinceReturn) -> Self {
12651                    ()
12652                }
12653            }
12654            #[automatically_derived]
12655            #[doc(hidden)]
12656            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12657            for setHotShotDownSinceReturn {
12658                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12659                    Self {}
12660                }
12661            }
12662        }
12663        impl setHotShotDownSinceReturn {
12664            fn _tokenize(
12665                &self,
12666            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12667                ()
12668            }
12669        }
12670        #[automatically_derived]
12671        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
12672            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12673            type Token<'a> = <Self::Parameters<
12674                'a,
12675            > as alloy_sol_types::SolType>::Token<'a>;
12676            type Return = setHotShotDownSinceReturn;
12677            type ReturnTuple<'a> = ();
12678            type ReturnToken<'a> = <Self::ReturnTuple<
12679                'a,
12680            > as alloy_sol_types::SolType>::Token<'a>;
12681            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
12682            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
12683            #[inline]
12684            fn new<'a>(
12685                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12686            ) -> Self {
12687                tuple.into()
12688            }
12689            #[inline]
12690            fn tokenize(&self) -> Self::Token<'_> {
12691                (
12692                    <alloy::sol_types::sol_data::Uint<
12693                        256,
12694                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
12695                )
12696            }
12697            #[inline]
12698            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12699                setHotShotDownSinceReturn::_tokenize(ret)
12700            }
12701            #[inline]
12702            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12703                <Self::ReturnTuple<
12704                    '_,
12705                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12706                    .map(Into::into)
12707            }
12708            #[inline]
12709            fn abi_decode_returns_validate(
12710                data: &[u8],
12711            ) -> alloy_sol_types::Result<Self::Return> {
12712                <Self::ReturnTuple<
12713                    '_,
12714                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12715                    .map(Into::into)
12716            }
12717        }
12718    };
12719    #[derive(serde::Serialize, serde::Deserialize)]
12720    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12721    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
12722```solidity
12723function setHotShotUp() external;
12724```*/
12725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12726    #[derive(Clone)]
12727    pub struct setHotShotUpCall;
12728    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
12729    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12730    #[derive(Clone)]
12731    pub struct setHotShotUpReturn {}
12732    #[allow(
12733        non_camel_case_types,
12734        non_snake_case,
12735        clippy::pub_underscore_fields,
12736        clippy::style
12737    )]
12738    const _: () = {
12739        use alloy::sol_types as alloy_sol_types;
12740        {
12741            #[doc(hidden)]
12742            #[allow(dead_code)]
12743            type UnderlyingSolTuple<'a> = ();
12744            #[doc(hidden)]
12745            type UnderlyingRustTuple<'a> = ();
12746            #[cfg(test)]
12747            #[allow(dead_code, unreachable_patterns)]
12748            fn _type_assertion(
12749                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12750            ) {
12751                match _t {
12752                    alloy_sol_types::private::AssertTypeEq::<
12753                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12754                    >(_) => {}
12755                }
12756            }
12757            #[automatically_derived]
12758            #[doc(hidden)]
12759            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
12760                fn from(value: setHotShotUpCall) -> Self {
12761                    ()
12762                }
12763            }
12764            #[automatically_derived]
12765            #[doc(hidden)]
12766            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
12767                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12768                    Self
12769                }
12770            }
12771        }
12772        {
12773            #[doc(hidden)]
12774            #[allow(dead_code)]
12775            type UnderlyingSolTuple<'a> = ();
12776            #[doc(hidden)]
12777            type UnderlyingRustTuple<'a> = ();
12778            #[cfg(test)]
12779            #[allow(dead_code, unreachable_patterns)]
12780            fn _type_assertion(
12781                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12782            ) {
12783                match _t {
12784                    alloy_sol_types::private::AssertTypeEq::<
12785                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12786                    >(_) => {}
12787                }
12788            }
12789            #[automatically_derived]
12790            #[doc(hidden)]
12791            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
12792                fn from(value: setHotShotUpReturn) -> Self {
12793                    ()
12794                }
12795            }
12796            #[automatically_derived]
12797            #[doc(hidden)]
12798            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
12799                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12800                    Self {}
12801                }
12802            }
12803        }
12804        impl setHotShotUpReturn {
12805            fn _tokenize(
12806                &self,
12807            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12808                ()
12809            }
12810        }
12811        #[automatically_derived]
12812        impl alloy_sol_types::SolCall for setHotShotUpCall {
12813            type Parameters<'a> = ();
12814            type Token<'a> = <Self::Parameters<
12815                'a,
12816            > as alloy_sol_types::SolType>::Token<'a>;
12817            type Return = setHotShotUpReturn;
12818            type ReturnTuple<'a> = ();
12819            type ReturnToken<'a> = <Self::ReturnTuple<
12820                'a,
12821            > as alloy_sol_types::SolType>::Token<'a>;
12822            const SIGNATURE: &'static str = "setHotShotUp()";
12823            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
12824            #[inline]
12825            fn new<'a>(
12826                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12827            ) -> Self {
12828                tuple.into()
12829            }
12830            #[inline]
12831            fn tokenize(&self) -> Self::Token<'_> {
12832                ()
12833            }
12834            #[inline]
12835            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12836                setHotShotUpReturn::_tokenize(ret)
12837            }
12838            #[inline]
12839            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12840                <Self::ReturnTuple<
12841                    '_,
12842                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12843                    .map(Into::into)
12844            }
12845            #[inline]
12846            fn abi_decode_returns_validate(
12847                data: &[u8],
12848            ) -> alloy_sol_types::Result<Self::Return> {
12849                <Self::ReturnTuple<
12850                    '_,
12851                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12852                    .map(Into::into)
12853            }
12854        }
12855    };
12856    #[derive(serde::Serialize, serde::Deserialize)]
12857    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12858    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
12859```solidity
12860function setPermissionedProver(address prover) external;
12861```*/
12862    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12863    #[derive(Clone)]
12864    pub struct setPermissionedProverCall {
12865        #[allow(missing_docs)]
12866        pub prover: alloy::sol_types::private::Address,
12867    }
12868    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
12869    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12870    #[derive(Clone)]
12871    pub struct setPermissionedProverReturn {}
12872    #[allow(
12873        non_camel_case_types,
12874        non_snake_case,
12875        clippy::pub_underscore_fields,
12876        clippy::style
12877    )]
12878    const _: () = {
12879        use alloy::sol_types as alloy_sol_types;
12880        {
12881            #[doc(hidden)]
12882            #[allow(dead_code)]
12883            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12884            #[doc(hidden)]
12885            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12886            #[cfg(test)]
12887            #[allow(dead_code, unreachable_patterns)]
12888            fn _type_assertion(
12889                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12890            ) {
12891                match _t {
12892                    alloy_sol_types::private::AssertTypeEq::<
12893                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12894                    >(_) => {}
12895                }
12896            }
12897            #[automatically_derived]
12898            #[doc(hidden)]
12899            impl ::core::convert::From<setPermissionedProverCall>
12900            for UnderlyingRustTuple<'_> {
12901                fn from(value: setPermissionedProverCall) -> Self {
12902                    (value.prover,)
12903                }
12904            }
12905            #[automatically_derived]
12906            #[doc(hidden)]
12907            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12908            for setPermissionedProverCall {
12909                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12910                    Self { prover: tuple.0 }
12911                }
12912            }
12913        }
12914        {
12915            #[doc(hidden)]
12916            #[allow(dead_code)]
12917            type UnderlyingSolTuple<'a> = ();
12918            #[doc(hidden)]
12919            type UnderlyingRustTuple<'a> = ();
12920            #[cfg(test)]
12921            #[allow(dead_code, unreachable_patterns)]
12922            fn _type_assertion(
12923                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12924            ) {
12925                match _t {
12926                    alloy_sol_types::private::AssertTypeEq::<
12927                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12928                    >(_) => {}
12929                }
12930            }
12931            #[automatically_derived]
12932            #[doc(hidden)]
12933            impl ::core::convert::From<setPermissionedProverReturn>
12934            for UnderlyingRustTuple<'_> {
12935                fn from(value: setPermissionedProverReturn) -> Self {
12936                    ()
12937                }
12938            }
12939            #[automatically_derived]
12940            #[doc(hidden)]
12941            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12942            for setPermissionedProverReturn {
12943                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12944                    Self {}
12945                }
12946            }
12947        }
12948        impl setPermissionedProverReturn {
12949            fn _tokenize(
12950                &self,
12951            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
12952                '_,
12953            > {
12954                ()
12955            }
12956        }
12957        #[automatically_derived]
12958        impl alloy_sol_types::SolCall for setPermissionedProverCall {
12959            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12960            type Token<'a> = <Self::Parameters<
12961                'a,
12962            > as alloy_sol_types::SolType>::Token<'a>;
12963            type Return = setPermissionedProverReturn;
12964            type ReturnTuple<'a> = ();
12965            type ReturnToken<'a> = <Self::ReturnTuple<
12966                'a,
12967            > as alloy_sol_types::SolType>::Token<'a>;
12968            const SIGNATURE: &'static str = "setPermissionedProver(address)";
12969            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
12970            #[inline]
12971            fn new<'a>(
12972                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12973            ) -> Self {
12974                tuple.into()
12975            }
12976            #[inline]
12977            fn tokenize(&self) -> Self::Token<'_> {
12978                (
12979                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12980                        &self.prover,
12981                    ),
12982                )
12983            }
12984            #[inline]
12985            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12986                setPermissionedProverReturn::_tokenize(ret)
12987            }
12988            #[inline]
12989            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12990                <Self::ReturnTuple<
12991                    '_,
12992                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12993                    .map(Into::into)
12994            }
12995            #[inline]
12996            fn abi_decode_returns_validate(
12997                data: &[u8],
12998            ) -> alloy_sol_types::Result<Self::Return> {
12999                <Self::ReturnTuple<
13000                    '_,
13001                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13002                    .map(Into::into)
13003            }
13004        }
13005    };
13006    #[derive(serde::Serialize, serde::Deserialize)]
13007    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13008    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
13009```solidity
13010function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
13011```*/
13012    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13013    #[derive(Clone)]
13014    pub struct setStateHistoryCall {
13015        #[allow(missing_docs)]
13016        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
13017            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13018        >,
13019    }
13020    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
13021    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13022    #[derive(Clone)]
13023    pub struct setStateHistoryReturn {}
13024    #[allow(
13025        non_camel_case_types,
13026        non_snake_case,
13027        clippy::pub_underscore_fields,
13028        clippy::style
13029    )]
13030    const _: () = {
13031        use alloy::sol_types as alloy_sol_types;
13032        {
13033            #[doc(hidden)]
13034            #[allow(dead_code)]
13035            type UnderlyingSolTuple<'a> = (
13036                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
13037            );
13038            #[doc(hidden)]
13039            type UnderlyingRustTuple<'a> = (
13040                alloy::sol_types::private::Vec<
13041                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13042                >,
13043            );
13044            #[cfg(test)]
13045            #[allow(dead_code, unreachable_patterns)]
13046            fn _type_assertion(
13047                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13048            ) {
13049                match _t {
13050                    alloy_sol_types::private::AssertTypeEq::<
13051                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13052                    >(_) => {}
13053                }
13054            }
13055            #[automatically_derived]
13056            #[doc(hidden)]
13057            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
13058                fn from(value: setStateHistoryCall) -> Self {
13059                    (value._stateHistoryCommitments,)
13060                }
13061            }
13062            #[automatically_derived]
13063            #[doc(hidden)]
13064            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
13065                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13066                    Self {
13067                        _stateHistoryCommitments: tuple.0,
13068                    }
13069                }
13070            }
13071        }
13072        {
13073            #[doc(hidden)]
13074            #[allow(dead_code)]
13075            type UnderlyingSolTuple<'a> = ();
13076            #[doc(hidden)]
13077            type UnderlyingRustTuple<'a> = ();
13078            #[cfg(test)]
13079            #[allow(dead_code, unreachable_patterns)]
13080            fn _type_assertion(
13081                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13082            ) {
13083                match _t {
13084                    alloy_sol_types::private::AssertTypeEq::<
13085                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13086                    >(_) => {}
13087                }
13088            }
13089            #[automatically_derived]
13090            #[doc(hidden)]
13091            impl ::core::convert::From<setStateHistoryReturn>
13092            for UnderlyingRustTuple<'_> {
13093                fn from(value: setStateHistoryReturn) -> Self {
13094                    ()
13095                }
13096            }
13097            #[automatically_derived]
13098            #[doc(hidden)]
13099            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13100            for setStateHistoryReturn {
13101                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13102                    Self {}
13103                }
13104            }
13105        }
13106        impl setStateHistoryReturn {
13107            fn _tokenize(
13108                &self,
13109            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13110                ()
13111            }
13112        }
13113        #[automatically_derived]
13114        impl alloy_sol_types::SolCall for setStateHistoryCall {
13115            type Parameters<'a> = (
13116                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
13117            );
13118            type Token<'a> = <Self::Parameters<
13119                'a,
13120            > as alloy_sol_types::SolType>::Token<'a>;
13121            type Return = setStateHistoryReturn;
13122            type ReturnTuple<'a> = ();
13123            type ReturnToken<'a> = <Self::ReturnTuple<
13124                'a,
13125            > as alloy_sol_types::SolType>::Token<'a>;
13126            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
13127            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
13128            #[inline]
13129            fn new<'a>(
13130                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13131            ) -> Self {
13132                tuple.into()
13133            }
13134            #[inline]
13135            fn tokenize(&self) -> Self::Token<'_> {
13136                (
13137                    <alloy::sol_types::sol_data::Array<
13138                        LightClient::StateHistoryCommitment,
13139                    > as alloy_sol_types::SolType>::tokenize(
13140                        &self._stateHistoryCommitments,
13141                    ),
13142                )
13143            }
13144            #[inline]
13145            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13146                setStateHistoryReturn::_tokenize(ret)
13147            }
13148            #[inline]
13149            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13150                <Self::ReturnTuple<
13151                    '_,
13152                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13153                    .map(Into::into)
13154            }
13155            #[inline]
13156            fn abi_decode_returns_validate(
13157                data: &[u8],
13158            ) -> alloy_sol_types::Result<Self::Return> {
13159                <Self::ReturnTuple<
13160                    '_,
13161                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13162                    .map(Into::into)
13163            }
13164        }
13165    };
13166    #[derive(serde::Serialize, serde::Deserialize)]
13167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13168    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
13169```solidity
13170function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
13171```*/
13172    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13173    #[derive(Clone)]
13174    pub struct setStateHistoryRetentionPeriodCall {
13175        #[allow(missing_docs)]
13176        pub historySeconds: u32,
13177    }
13178    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
13179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13180    #[derive(Clone)]
13181    pub struct setStateHistoryRetentionPeriodReturn {}
13182    #[allow(
13183        non_camel_case_types,
13184        non_snake_case,
13185        clippy::pub_underscore_fields,
13186        clippy::style
13187    )]
13188    const _: () = {
13189        use alloy::sol_types as alloy_sol_types;
13190        {
13191            #[doc(hidden)]
13192            #[allow(dead_code)]
13193            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13194            #[doc(hidden)]
13195            type UnderlyingRustTuple<'a> = (u32,);
13196            #[cfg(test)]
13197            #[allow(dead_code, unreachable_patterns)]
13198            fn _type_assertion(
13199                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13200            ) {
13201                match _t {
13202                    alloy_sol_types::private::AssertTypeEq::<
13203                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13204                    >(_) => {}
13205                }
13206            }
13207            #[automatically_derived]
13208            #[doc(hidden)]
13209            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
13210            for UnderlyingRustTuple<'_> {
13211                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
13212                    (value.historySeconds,)
13213                }
13214            }
13215            #[automatically_derived]
13216            #[doc(hidden)]
13217            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13218            for setStateHistoryRetentionPeriodCall {
13219                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13220                    Self { historySeconds: tuple.0 }
13221                }
13222            }
13223        }
13224        {
13225            #[doc(hidden)]
13226            #[allow(dead_code)]
13227            type UnderlyingSolTuple<'a> = ();
13228            #[doc(hidden)]
13229            type UnderlyingRustTuple<'a> = ();
13230            #[cfg(test)]
13231            #[allow(dead_code, unreachable_patterns)]
13232            fn _type_assertion(
13233                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13234            ) {
13235                match _t {
13236                    alloy_sol_types::private::AssertTypeEq::<
13237                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13238                    >(_) => {}
13239                }
13240            }
13241            #[automatically_derived]
13242            #[doc(hidden)]
13243            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
13244            for UnderlyingRustTuple<'_> {
13245                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
13246                    ()
13247                }
13248            }
13249            #[automatically_derived]
13250            #[doc(hidden)]
13251            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13252            for setStateHistoryRetentionPeriodReturn {
13253                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13254                    Self {}
13255                }
13256            }
13257        }
13258        impl setStateHistoryRetentionPeriodReturn {
13259            fn _tokenize(
13260                &self,
13261            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
13262                '_,
13263            > {
13264                ()
13265            }
13266        }
13267        #[automatically_derived]
13268        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
13269            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13270            type Token<'a> = <Self::Parameters<
13271                'a,
13272            > as alloy_sol_types::SolType>::Token<'a>;
13273            type Return = setStateHistoryRetentionPeriodReturn;
13274            type ReturnTuple<'a> = ();
13275            type ReturnToken<'a> = <Self::ReturnTuple<
13276                'a,
13277            > as alloy_sol_types::SolType>::Token<'a>;
13278            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
13279            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
13280            #[inline]
13281            fn new<'a>(
13282                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13283            ) -> Self {
13284                tuple.into()
13285            }
13286            #[inline]
13287            fn tokenize(&self) -> Self::Token<'_> {
13288                (
13289                    <alloy::sol_types::sol_data::Uint<
13290                        32,
13291                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13292                )
13293            }
13294            #[inline]
13295            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13296                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
13297            }
13298            #[inline]
13299            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13300                <Self::ReturnTuple<
13301                    '_,
13302                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13303                    .map(Into::into)
13304            }
13305            #[inline]
13306            fn abi_decode_returns_validate(
13307                data: &[u8],
13308            ) -> alloy_sol_types::Result<Self::Return> {
13309                <Self::ReturnTuple<
13310                    '_,
13311                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13312                    .map(Into::into)
13313            }
13314        }
13315    };
13316    #[derive(serde::Serialize, serde::Deserialize)]
13317    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13318    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
13319```solidity
13320function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
13321```*/
13322    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13323    #[derive(Clone)]
13324    pub struct setVotingStakeTableStateCall {
13325        #[allow(missing_docs)]
13326        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13327    }
13328    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
13329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13330    #[derive(Clone)]
13331    pub struct setVotingStakeTableStateReturn {}
13332    #[allow(
13333        non_camel_case_types,
13334        non_snake_case,
13335        clippy::pub_underscore_fields,
13336        clippy::style
13337    )]
13338    const _: () = {
13339        use alloy::sol_types as alloy_sol_types;
13340        {
13341            #[doc(hidden)]
13342            #[allow(dead_code)]
13343            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
13344            #[doc(hidden)]
13345            type UnderlyingRustTuple<'a> = (
13346                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13347            );
13348            #[cfg(test)]
13349            #[allow(dead_code, unreachable_patterns)]
13350            fn _type_assertion(
13351                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13352            ) {
13353                match _t {
13354                    alloy_sol_types::private::AssertTypeEq::<
13355                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13356                    >(_) => {}
13357                }
13358            }
13359            #[automatically_derived]
13360            #[doc(hidden)]
13361            impl ::core::convert::From<setVotingStakeTableStateCall>
13362            for UnderlyingRustTuple<'_> {
13363                fn from(value: setVotingStakeTableStateCall) -> Self {
13364                    (value.stake,)
13365                }
13366            }
13367            #[automatically_derived]
13368            #[doc(hidden)]
13369            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13370            for setVotingStakeTableStateCall {
13371                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13372                    Self { stake: tuple.0 }
13373                }
13374            }
13375        }
13376        {
13377            #[doc(hidden)]
13378            #[allow(dead_code)]
13379            type UnderlyingSolTuple<'a> = ();
13380            #[doc(hidden)]
13381            type UnderlyingRustTuple<'a> = ();
13382            #[cfg(test)]
13383            #[allow(dead_code, unreachable_patterns)]
13384            fn _type_assertion(
13385                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13386            ) {
13387                match _t {
13388                    alloy_sol_types::private::AssertTypeEq::<
13389                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13390                    >(_) => {}
13391                }
13392            }
13393            #[automatically_derived]
13394            #[doc(hidden)]
13395            impl ::core::convert::From<setVotingStakeTableStateReturn>
13396            for UnderlyingRustTuple<'_> {
13397                fn from(value: setVotingStakeTableStateReturn) -> Self {
13398                    ()
13399                }
13400            }
13401            #[automatically_derived]
13402            #[doc(hidden)]
13403            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13404            for setVotingStakeTableStateReturn {
13405                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13406                    Self {}
13407                }
13408            }
13409        }
13410        impl setVotingStakeTableStateReturn {
13411            fn _tokenize(
13412                &self,
13413            ) -> <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
13414                '_,
13415            > {
13416                ()
13417            }
13418        }
13419        #[automatically_derived]
13420        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
13421            type Parameters<'a> = (LightClient::StakeTableState,);
13422            type Token<'a> = <Self::Parameters<
13423                'a,
13424            > as alloy_sol_types::SolType>::Token<'a>;
13425            type Return = setVotingStakeTableStateReturn;
13426            type ReturnTuple<'a> = ();
13427            type ReturnToken<'a> = <Self::ReturnTuple<
13428                'a,
13429            > as alloy_sol_types::SolType>::Token<'a>;
13430            const SIGNATURE: &'static str = "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
13431            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
13432            #[inline]
13433            fn new<'a>(
13434                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13435            ) -> Self {
13436                tuple.into()
13437            }
13438            #[inline]
13439            fn tokenize(&self) -> Self::Token<'_> {
13440                (
13441                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
13442                        &self.stake,
13443                    ),
13444                )
13445            }
13446            #[inline]
13447            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13448                setVotingStakeTableStateReturn::_tokenize(ret)
13449            }
13450            #[inline]
13451            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13452                <Self::ReturnTuple<
13453                    '_,
13454                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13455                    .map(Into::into)
13456            }
13457            #[inline]
13458            fn abi_decode_returns_validate(
13459                data: &[u8],
13460            ) -> alloy_sol_types::Result<Self::Return> {
13461                <Self::ReturnTuple<
13462                    '_,
13463                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13464                    .map(Into::into)
13465            }
13466        }
13467    };
13468    #[derive(serde::Serialize, serde::Deserialize)]
13469    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13470    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
13471```solidity
13472function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
13473```*/
13474    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13475    #[derive(Clone)]
13476    pub struct setstateHistoryRetentionPeriodCall {
13477        #[allow(missing_docs)]
13478        pub historySeconds: u32,
13479    }
13480    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
13481    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13482    #[derive(Clone)]
13483    pub struct setstateHistoryRetentionPeriodReturn {}
13484    #[allow(
13485        non_camel_case_types,
13486        non_snake_case,
13487        clippy::pub_underscore_fields,
13488        clippy::style
13489    )]
13490    const _: () = {
13491        use alloy::sol_types as alloy_sol_types;
13492        {
13493            #[doc(hidden)]
13494            #[allow(dead_code)]
13495            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13496            #[doc(hidden)]
13497            type UnderlyingRustTuple<'a> = (u32,);
13498            #[cfg(test)]
13499            #[allow(dead_code, unreachable_patterns)]
13500            fn _type_assertion(
13501                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13502            ) {
13503                match _t {
13504                    alloy_sol_types::private::AssertTypeEq::<
13505                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13506                    >(_) => {}
13507                }
13508            }
13509            #[automatically_derived]
13510            #[doc(hidden)]
13511            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
13512            for UnderlyingRustTuple<'_> {
13513                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
13514                    (value.historySeconds,)
13515                }
13516            }
13517            #[automatically_derived]
13518            #[doc(hidden)]
13519            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13520            for setstateHistoryRetentionPeriodCall {
13521                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13522                    Self { historySeconds: tuple.0 }
13523                }
13524            }
13525        }
13526        {
13527            #[doc(hidden)]
13528            #[allow(dead_code)]
13529            type UnderlyingSolTuple<'a> = ();
13530            #[doc(hidden)]
13531            type UnderlyingRustTuple<'a> = ();
13532            #[cfg(test)]
13533            #[allow(dead_code, unreachable_patterns)]
13534            fn _type_assertion(
13535                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13536            ) {
13537                match _t {
13538                    alloy_sol_types::private::AssertTypeEq::<
13539                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13540                    >(_) => {}
13541                }
13542            }
13543            #[automatically_derived]
13544            #[doc(hidden)]
13545            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
13546            for UnderlyingRustTuple<'_> {
13547                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
13548                    ()
13549                }
13550            }
13551            #[automatically_derived]
13552            #[doc(hidden)]
13553            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13554            for setstateHistoryRetentionPeriodReturn {
13555                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13556                    Self {}
13557                }
13558            }
13559        }
13560        impl setstateHistoryRetentionPeriodReturn {
13561            fn _tokenize(
13562                &self,
13563            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
13564                '_,
13565            > {
13566                ()
13567            }
13568        }
13569        #[automatically_derived]
13570        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
13571            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13572            type Token<'a> = <Self::Parameters<
13573                'a,
13574            > as alloy_sol_types::SolType>::Token<'a>;
13575            type Return = setstateHistoryRetentionPeriodReturn;
13576            type ReturnTuple<'a> = ();
13577            type ReturnToken<'a> = <Self::ReturnTuple<
13578                'a,
13579            > as alloy_sol_types::SolType>::Token<'a>;
13580            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
13581            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
13582            #[inline]
13583            fn new<'a>(
13584                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13585            ) -> Self {
13586                tuple.into()
13587            }
13588            #[inline]
13589            fn tokenize(&self) -> Self::Token<'_> {
13590                (
13591                    <alloy::sol_types::sol_data::Uint<
13592                        32,
13593                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13594                )
13595            }
13596            #[inline]
13597            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13598                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
13599            }
13600            #[inline]
13601            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13602                <Self::ReturnTuple<
13603                    '_,
13604                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13605                    .map(Into::into)
13606            }
13607            #[inline]
13608            fn abi_decode_returns_validate(
13609                data: &[u8],
13610            ) -> alloy_sol_types::Result<Self::Return> {
13611                <Self::ReturnTuple<
13612                    '_,
13613                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13614                    .map(Into::into)
13615            }
13616        }
13617    };
13618    #[derive(serde::Serialize, serde::Deserialize)]
13619    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13620    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
13621```solidity
13622function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
13623```*/
13624    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13625    #[derive(Clone)]
13626    pub struct stateHistoryCommitmentsCall(
13627        pub alloy::sol_types::private::primitives::aliases::U256,
13628    );
13629    #[derive(serde::Serialize, serde::Deserialize)]
13630    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13631    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
13632    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13633    #[derive(Clone)]
13634    pub struct stateHistoryCommitmentsReturn {
13635        #[allow(missing_docs)]
13636        pub l1BlockHeight: u64,
13637        #[allow(missing_docs)]
13638        pub l1BlockTimestamp: u64,
13639        #[allow(missing_docs)]
13640        pub hotShotBlockHeight: u64,
13641        #[allow(missing_docs)]
13642        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13643    }
13644    #[allow(
13645        non_camel_case_types,
13646        non_snake_case,
13647        clippy::pub_underscore_fields,
13648        clippy::style
13649    )]
13650    const _: () = {
13651        use alloy::sol_types as alloy_sol_types;
13652        {
13653            #[doc(hidden)]
13654            #[allow(dead_code)]
13655            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13656            #[doc(hidden)]
13657            type UnderlyingRustTuple<'a> = (
13658                alloy::sol_types::private::primitives::aliases::U256,
13659            );
13660            #[cfg(test)]
13661            #[allow(dead_code, unreachable_patterns)]
13662            fn _type_assertion(
13663                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13664            ) {
13665                match _t {
13666                    alloy_sol_types::private::AssertTypeEq::<
13667                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13668                    >(_) => {}
13669                }
13670            }
13671            #[automatically_derived]
13672            #[doc(hidden)]
13673            impl ::core::convert::From<stateHistoryCommitmentsCall>
13674            for UnderlyingRustTuple<'_> {
13675                fn from(value: stateHistoryCommitmentsCall) -> Self {
13676                    (value.0,)
13677                }
13678            }
13679            #[automatically_derived]
13680            #[doc(hidden)]
13681            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13682            for stateHistoryCommitmentsCall {
13683                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13684                    Self(tuple.0)
13685                }
13686            }
13687        }
13688        {
13689            #[doc(hidden)]
13690            #[allow(dead_code)]
13691            type UnderlyingSolTuple<'a> = (
13692                alloy::sol_types::sol_data::Uint<64>,
13693                alloy::sol_types::sol_data::Uint<64>,
13694                alloy::sol_types::sol_data::Uint<64>,
13695                BN254::ScalarField,
13696            );
13697            #[doc(hidden)]
13698            type UnderlyingRustTuple<'a> = (
13699                u64,
13700                u64,
13701                u64,
13702                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13703            );
13704            #[cfg(test)]
13705            #[allow(dead_code, unreachable_patterns)]
13706            fn _type_assertion(
13707                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13708            ) {
13709                match _t {
13710                    alloy_sol_types::private::AssertTypeEq::<
13711                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13712                    >(_) => {}
13713                }
13714            }
13715            #[automatically_derived]
13716            #[doc(hidden)]
13717            impl ::core::convert::From<stateHistoryCommitmentsReturn>
13718            for UnderlyingRustTuple<'_> {
13719                fn from(value: stateHistoryCommitmentsReturn) -> Self {
13720                    (
13721                        value.l1BlockHeight,
13722                        value.l1BlockTimestamp,
13723                        value.hotShotBlockHeight,
13724                        value.hotShotBlockCommRoot,
13725                    )
13726                }
13727            }
13728            #[automatically_derived]
13729            #[doc(hidden)]
13730            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13731            for stateHistoryCommitmentsReturn {
13732                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13733                    Self {
13734                        l1BlockHeight: tuple.0,
13735                        l1BlockTimestamp: tuple.1,
13736                        hotShotBlockHeight: tuple.2,
13737                        hotShotBlockCommRoot: tuple.3,
13738                    }
13739                }
13740            }
13741        }
13742        impl stateHistoryCommitmentsReturn {
13743            fn _tokenize(
13744                &self,
13745            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
13746                '_,
13747            > {
13748                (
13749                    <alloy::sol_types::sol_data::Uint<
13750                        64,
13751                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
13752                    <alloy::sol_types::sol_data::Uint<
13753                        64,
13754                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
13755                    <alloy::sol_types::sol_data::Uint<
13756                        64,
13757                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
13758                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13759                        &self.hotShotBlockCommRoot,
13760                    ),
13761                )
13762            }
13763        }
13764        #[automatically_derived]
13765        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
13766            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13767            type Token<'a> = <Self::Parameters<
13768                'a,
13769            > as alloy_sol_types::SolType>::Token<'a>;
13770            type Return = stateHistoryCommitmentsReturn;
13771            type ReturnTuple<'a> = (
13772                alloy::sol_types::sol_data::Uint<64>,
13773                alloy::sol_types::sol_data::Uint<64>,
13774                alloy::sol_types::sol_data::Uint<64>,
13775                BN254::ScalarField,
13776            );
13777            type ReturnToken<'a> = <Self::ReturnTuple<
13778                'a,
13779            > as alloy_sol_types::SolType>::Token<'a>;
13780            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
13781            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
13782            #[inline]
13783            fn new<'a>(
13784                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13785            ) -> Self {
13786                tuple.into()
13787            }
13788            #[inline]
13789            fn tokenize(&self) -> Self::Token<'_> {
13790                (
13791                    <alloy::sol_types::sol_data::Uint<
13792                        256,
13793                    > as alloy_sol_types::SolType>::tokenize(&self.0),
13794                )
13795            }
13796            #[inline]
13797            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13798                stateHistoryCommitmentsReturn::_tokenize(ret)
13799            }
13800            #[inline]
13801            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13802                <Self::ReturnTuple<
13803                    '_,
13804                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13805                    .map(Into::into)
13806            }
13807            #[inline]
13808            fn abi_decode_returns_validate(
13809                data: &[u8],
13810            ) -> alloy_sol_types::Result<Self::Return> {
13811                <Self::ReturnTuple<
13812                    '_,
13813                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13814                    .map(Into::into)
13815            }
13816        }
13817    };
13818    #[derive(serde::Serialize, serde::Deserialize)]
13819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13820    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
13821```solidity
13822function stateHistoryFirstIndex() external view returns (uint64);
13823```*/
13824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13825    #[derive(Clone)]
13826    pub struct stateHistoryFirstIndexCall;
13827    #[derive(serde::Serialize, serde::Deserialize)]
13828    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13829    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
13830    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13831    #[derive(Clone)]
13832    pub struct stateHistoryFirstIndexReturn {
13833        #[allow(missing_docs)]
13834        pub _0: u64,
13835    }
13836    #[allow(
13837        non_camel_case_types,
13838        non_snake_case,
13839        clippy::pub_underscore_fields,
13840        clippy::style
13841    )]
13842    const _: () = {
13843        use alloy::sol_types as alloy_sol_types;
13844        {
13845            #[doc(hidden)]
13846            #[allow(dead_code)]
13847            type UnderlyingSolTuple<'a> = ();
13848            #[doc(hidden)]
13849            type UnderlyingRustTuple<'a> = ();
13850            #[cfg(test)]
13851            #[allow(dead_code, unreachable_patterns)]
13852            fn _type_assertion(
13853                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13854            ) {
13855                match _t {
13856                    alloy_sol_types::private::AssertTypeEq::<
13857                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13858                    >(_) => {}
13859                }
13860            }
13861            #[automatically_derived]
13862            #[doc(hidden)]
13863            impl ::core::convert::From<stateHistoryFirstIndexCall>
13864            for UnderlyingRustTuple<'_> {
13865                fn from(value: stateHistoryFirstIndexCall) -> Self {
13866                    ()
13867                }
13868            }
13869            #[automatically_derived]
13870            #[doc(hidden)]
13871            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13872            for stateHistoryFirstIndexCall {
13873                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13874                    Self
13875                }
13876            }
13877        }
13878        {
13879            #[doc(hidden)]
13880            #[allow(dead_code)]
13881            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13882            #[doc(hidden)]
13883            type UnderlyingRustTuple<'a> = (u64,);
13884            #[cfg(test)]
13885            #[allow(dead_code, unreachable_patterns)]
13886            fn _type_assertion(
13887                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13888            ) {
13889                match _t {
13890                    alloy_sol_types::private::AssertTypeEq::<
13891                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13892                    >(_) => {}
13893                }
13894            }
13895            #[automatically_derived]
13896            #[doc(hidden)]
13897            impl ::core::convert::From<stateHistoryFirstIndexReturn>
13898            for UnderlyingRustTuple<'_> {
13899                fn from(value: stateHistoryFirstIndexReturn) -> Self {
13900                    (value._0,)
13901                }
13902            }
13903            #[automatically_derived]
13904            #[doc(hidden)]
13905            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13906            for stateHistoryFirstIndexReturn {
13907                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13908                    Self { _0: tuple.0 }
13909                }
13910            }
13911        }
13912        #[automatically_derived]
13913        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
13914            type Parameters<'a> = ();
13915            type Token<'a> = <Self::Parameters<
13916                'a,
13917            > as alloy_sol_types::SolType>::Token<'a>;
13918            type Return = u64;
13919            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13920            type ReturnToken<'a> = <Self::ReturnTuple<
13921                'a,
13922            > as alloy_sol_types::SolType>::Token<'a>;
13923            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
13924            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
13925            #[inline]
13926            fn new<'a>(
13927                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13928            ) -> Self {
13929                tuple.into()
13930            }
13931            #[inline]
13932            fn tokenize(&self) -> Self::Token<'_> {
13933                ()
13934            }
13935            #[inline]
13936            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13937                (
13938                    <alloy::sol_types::sol_data::Uint<
13939                        64,
13940                    > as alloy_sol_types::SolType>::tokenize(ret),
13941                )
13942            }
13943            #[inline]
13944            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13945                <Self::ReturnTuple<
13946                    '_,
13947                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13948                    .map(|r| {
13949                        let r: stateHistoryFirstIndexReturn = r.into();
13950                        r._0
13951                    })
13952            }
13953            #[inline]
13954            fn abi_decode_returns_validate(
13955                data: &[u8],
13956            ) -> alloy_sol_types::Result<Self::Return> {
13957                <Self::ReturnTuple<
13958                    '_,
13959                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13960                    .map(|r| {
13961                        let r: stateHistoryFirstIndexReturn = r.into();
13962                        r._0
13963                    })
13964            }
13965        }
13966    };
13967    #[derive(serde::Serialize, serde::Deserialize)]
13968    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13969    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
13970```solidity
13971function stateHistoryRetentionPeriod() external view returns (uint32);
13972```*/
13973    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13974    #[derive(Clone)]
13975    pub struct stateHistoryRetentionPeriodCall;
13976    #[derive(serde::Serialize, serde::Deserialize)]
13977    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13978    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
13979    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13980    #[derive(Clone)]
13981    pub struct stateHistoryRetentionPeriodReturn {
13982        #[allow(missing_docs)]
13983        pub _0: u32,
13984    }
13985    #[allow(
13986        non_camel_case_types,
13987        non_snake_case,
13988        clippy::pub_underscore_fields,
13989        clippy::style
13990    )]
13991    const _: () = {
13992        use alloy::sol_types as alloy_sol_types;
13993        {
13994            #[doc(hidden)]
13995            #[allow(dead_code)]
13996            type UnderlyingSolTuple<'a> = ();
13997            #[doc(hidden)]
13998            type UnderlyingRustTuple<'a> = ();
13999            #[cfg(test)]
14000            #[allow(dead_code, unreachable_patterns)]
14001            fn _type_assertion(
14002                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14003            ) {
14004                match _t {
14005                    alloy_sol_types::private::AssertTypeEq::<
14006                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14007                    >(_) => {}
14008                }
14009            }
14010            #[automatically_derived]
14011            #[doc(hidden)]
14012            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
14013            for UnderlyingRustTuple<'_> {
14014                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
14015                    ()
14016                }
14017            }
14018            #[automatically_derived]
14019            #[doc(hidden)]
14020            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14021            for stateHistoryRetentionPeriodCall {
14022                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14023                    Self
14024                }
14025            }
14026        }
14027        {
14028            #[doc(hidden)]
14029            #[allow(dead_code)]
14030            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14031            #[doc(hidden)]
14032            type UnderlyingRustTuple<'a> = (u32,);
14033            #[cfg(test)]
14034            #[allow(dead_code, unreachable_patterns)]
14035            fn _type_assertion(
14036                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14037            ) {
14038                match _t {
14039                    alloy_sol_types::private::AssertTypeEq::<
14040                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14041                    >(_) => {}
14042                }
14043            }
14044            #[automatically_derived]
14045            #[doc(hidden)]
14046            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
14047            for UnderlyingRustTuple<'_> {
14048                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
14049                    (value._0,)
14050                }
14051            }
14052            #[automatically_derived]
14053            #[doc(hidden)]
14054            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14055            for stateHistoryRetentionPeriodReturn {
14056                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14057                    Self { _0: tuple.0 }
14058                }
14059            }
14060        }
14061        #[automatically_derived]
14062        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
14063            type Parameters<'a> = ();
14064            type Token<'a> = <Self::Parameters<
14065                'a,
14066            > as alloy_sol_types::SolType>::Token<'a>;
14067            type Return = u32;
14068            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14069            type ReturnToken<'a> = <Self::ReturnTuple<
14070                'a,
14071            > as alloy_sol_types::SolType>::Token<'a>;
14072            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
14073            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
14074            #[inline]
14075            fn new<'a>(
14076                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14077            ) -> Self {
14078                tuple.into()
14079            }
14080            #[inline]
14081            fn tokenize(&self) -> Self::Token<'_> {
14082                ()
14083            }
14084            #[inline]
14085            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14086                (
14087                    <alloy::sol_types::sol_data::Uint<
14088                        32,
14089                    > as alloy_sol_types::SolType>::tokenize(ret),
14090                )
14091            }
14092            #[inline]
14093            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14094                <Self::ReturnTuple<
14095                    '_,
14096                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14097                    .map(|r| {
14098                        let r: stateHistoryRetentionPeriodReturn = r.into();
14099                        r._0
14100                    })
14101            }
14102            #[inline]
14103            fn abi_decode_returns_validate(
14104                data: &[u8],
14105            ) -> alloy_sol_types::Result<Self::Return> {
14106                <Self::ReturnTuple<
14107                    '_,
14108                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14109                    .map(|r| {
14110                        let r: stateHistoryRetentionPeriodReturn = r.into();
14111                        r._0
14112                    })
14113            }
14114        }
14115    };
14116    #[derive(serde::Serialize, serde::Deserialize)]
14117    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14118    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
14119```solidity
14120function transferOwnership(address newOwner) external;
14121```*/
14122    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14123    #[derive(Clone)]
14124    pub struct transferOwnershipCall {
14125        #[allow(missing_docs)]
14126        pub newOwner: alloy::sol_types::private::Address,
14127    }
14128    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
14129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14130    #[derive(Clone)]
14131    pub struct transferOwnershipReturn {}
14132    #[allow(
14133        non_camel_case_types,
14134        non_snake_case,
14135        clippy::pub_underscore_fields,
14136        clippy::style
14137    )]
14138    const _: () = {
14139        use alloy::sol_types as alloy_sol_types;
14140        {
14141            #[doc(hidden)]
14142            #[allow(dead_code)]
14143            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14144            #[doc(hidden)]
14145            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14146            #[cfg(test)]
14147            #[allow(dead_code, unreachable_patterns)]
14148            fn _type_assertion(
14149                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14150            ) {
14151                match _t {
14152                    alloy_sol_types::private::AssertTypeEq::<
14153                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14154                    >(_) => {}
14155                }
14156            }
14157            #[automatically_derived]
14158            #[doc(hidden)]
14159            impl ::core::convert::From<transferOwnershipCall>
14160            for UnderlyingRustTuple<'_> {
14161                fn from(value: transferOwnershipCall) -> Self {
14162                    (value.newOwner,)
14163                }
14164            }
14165            #[automatically_derived]
14166            #[doc(hidden)]
14167            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14168            for transferOwnershipCall {
14169                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14170                    Self { newOwner: tuple.0 }
14171                }
14172            }
14173        }
14174        {
14175            #[doc(hidden)]
14176            #[allow(dead_code)]
14177            type UnderlyingSolTuple<'a> = ();
14178            #[doc(hidden)]
14179            type UnderlyingRustTuple<'a> = ();
14180            #[cfg(test)]
14181            #[allow(dead_code, unreachable_patterns)]
14182            fn _type_assertion(
14183                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14184            ) {
14185                match _t {
14186                    alloy_sol_types::private::AssertTypeEq::<
14187                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14188                    >(_) => {}
14189                }
14190            }
14191            #[automatically_derived]
14192            #[doc(hidden)]
14193            impl ::core::convert::From<transferOwnershipReturn>
14194            for UnderlyingRustTuple<'_> {
14195                fn from(value: transferOwnershipReturn) -> Self {
14196                    ()
14197                }
14198            }
14199            #[automatically_derived]
14200            #[doc(hidden)]
14201            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14202            for transferOwnershipReturn {
14203                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14204                    Self {}
14205                }
14206            }
14207        }
14208        impl transferOwnershipReturn {
14209            fn _tokenize(
14210                &self,
14211            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14212                ()
14213            }
14214        }
14215        #[automatically_derived]
14216        impl alloy_sol_types::SolCall for transferOwnershipCall {
14217            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14218            type Token<'a> = <Self::Parameters<
14219                'a,
14220            > as alloy_sol_types::SolType>::Token<'a>;
14221            type Return = transferOwnershipReturn;
14222            type ReturnTuple<'a> = ();
14223            type ReturnToken<'a> = <Self::ReturnTuple<
14224                'a,
14225            > as alloy_sol_types::SolType>::Token<'a>;
14226            const SIGNATURE: &'static str = "transferOwnership(address)";
14227            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
14228            #[inline]
14229            fn new<'a>(
14230                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14231            ) -> Self {
14232                tuple.into()
14233            }
14234            #[inline]
14235            fn tokenize(&self) -> Self::Token<'_> {
14236                (
14237                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14238                        &self.newOwner,
14239                    ),
14240                )
14241            }
14242            #[inline]
14243            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14244                transferOwnershipReturn::_tokenize(ret)
14245            }
14246            #[inline]
14247            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14248                <Self::ReturnTuple<
14249                    '_,
14250                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14251                    .map(Into::into)
14252            }
14253            #[inline]
14254            fn abi_decode_returns_validate(
14255                data: &[u8],
14256            ) -> alloy_sol_types::Result<Self::Return> {
14257                <Self::ReturnTuple<
14258                    '_,
14259                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14260                    .map(Into::into)
14261            }
14262        }
14263    };
14264    #[derive(serde::Serialize, serde::Deserialize)]
14265    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14266    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
14267```solidity
14268function updateEpochStartBlock(uint64 newEpochStartBlock) external;
14269```*/
14270    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14271    #[derive(Clone)]
14272    pub struct updateEpochStartBlockCall {
14273        #[allow(missing_docs)]
14274        pub newEpochStartBlock: u64,
14275    }
14276    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
14277    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14278    #[derive(Clone)]
14279    pub struct updateEpochStartBlockReturn {}
14280    #[allow(
14281        non_camel_case_types,
14282        non_snake_case,
14283        clippy::pub_underscore_fields,
14284        clippy::style
14285    )]
14286    const _: () = {
14287        use alloy::sol_types as alloy_sol_types;
14288        {
14289            #[doc(hidden)]
14290            #[allow(dead_code)]
14291            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14292            #[doc(hidden)]
14293            type UnderlyingRustTuple<'a> = (u64,);
14294            #[cfg(test)]
14295            #[allow(dead_code, unreachable_patterns)]
14296            fn _type_assertion(
14297                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14298            ) {
14299                match _t {
14300                    alloy_sol_types::private::AssertTypeEq::<
14301                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14302                    >(_) => {}
14303                }
14304            }
14305            #[automatically_derived]
14306            #[doc(hidden)]
14307            impl ::core::convert::From<updateEpochStartBlockCall>
14308            for UnderlyingRustTuple<'_> {
14309                fn from(value: updateEpochStartBlockCall) -> Self {
14310                    (value.newEpochStartBlock,)
14311                }
14312            }
14313            #[automatically_derived]
14314            #[doc(hidden)]
14315            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14316            for updateEpochStartBlockCall {
14317                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14318                    Self {
14319                        newEpochStartBlock: tuple.0,
14320                    }
14321                }
14322            }
14323        }
14324        {
14325            #[doc(hidden)]
14326            #[allow(dead_code)]
14327            type UnderlyingSolTuple<'a> = ();
14328            #[doc(hidden)]
14329            type UnderlyingRustTuple<'a> = ();
14330            #[cfg(test)]
14331            #[allow(dead_code, unreachable_patterns)]
14332            fn _type_assertion(
14333                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14334            ) {
14335                match _t {
14336                    alloy_sol_types::private::AssertTypeEq::<
14337                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14338                    >(_) => {}
14339                }
14340            }
14341            #[automatically_derived]
14342            #[doc(hidden)]
14343            impl ::core::convert::From<updateEpochStartBlockReturn>
14344            for UnderlyingRustTuple<'_> {
14345                fn from(value: updateEpochStartBlockReturn) -> Self {
14346                    ()
14347                }
14348            }
14349            #[automatically_derived]
14350            #[doc(hidden)]
14351            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14352            for updateEpochStartBlockReturn {
14353                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14354                    Self {}
14355                }
14356            }
14357        }
14358        impl updateEpochStartBlockReturn {
14359            fn _tokenize(
14360                &self,
14361            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
14362                '_,
14363            > {
14364                ()
14365            }
14366        }
14367        #[automatically_derived]
14368        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
14369            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14370            type Token<'a> = <Self::Parameters<
14371                'a,
14372            > as alloy_sol_types::SolType>::Token<'a>;
14373            type Return = updateEpochStartBlockReturn;
14374            type ReturnTuple<'a> = ();
14375            type ReturnToken<'a> = <Self::ReturnTuple<
14376                'a,
14377            > as alloy_sol_types::SolType>::Token<'a>;
14378            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
14379            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
14380            #[inline]
14381            fn new<'a>(
14382                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14383            ) -> Self {
14384                tuple.into()
14385            }
14386            #[inline]
14387            fn tokenize(&self) -> Self::Token<'_> {
14388                (
14389                    <alloy::sol_types::sol_data::Uint<
14390                        64,
14391                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
14392                )
14393            }
14394            #[inline]
14395            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14396                updateEpochStartBlockReturn::_tokenize(ret)
14397            }
14398            #[inline]
14399            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14400                <Self::ReturnTuple<
14401                    '_,
14402                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14403                    .map(Into::into)
14404            }
14405            #[inline]
14406            fn abi_decode_returns_validate(
14407                data: &[u8],
14408            ) -> alloy_sol_types::Result<Self::Return> {
14409                <Self::ReturnTuple<
14410                    '_,
14411                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14412                    .map(Into::into)
14413            }
14414        }
14415    };
14416    #[derive(serde::Serialize, serde::Deserialize)]
14417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14418    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
14419```solidity
14420function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
14421```*/
14422    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14423    #[derive(Clone)]
14424    pub struct upgradeToAndCallCall {
14425        #[allow(missing_docs)]
14426        pub newImplementation: alloy::sol_types::private::Address,
14427        #[allow(missing_docs)]
14428        pub data: alloy::sol_types::private::Bytes,
14429    }
14430    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
14431    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14432    #[derive(Clone)]
14433    pub struct upgradeToAndCallReturn {}
14434    #[allow(
14435        non_camel_case_types,
14436        non_snake_case,
14437        clippy::pub_underscore_fields,
14438        clippy::style
14439    )]
14440    const _: () = {
14441        use alloy::sol_types as alloy_sol_types;
14442        {
14443            #[doc(hidden)]
14444            #[allow(dead_code)]
14445            type UnderlyingSolTuple<'a> = (
14446                alloy::sol_types::sol_data::Address,
14447                alloy::sol_types::sol_data::Bytes,
14448            );
14449            #[doc(hidden)]
14450            type UnderlyingRustTuple<'a> = (
14451                alloy::sol_types::private::Address,
14452                alloy::sol_types::private::Bytes,
14453            );
14454            #[cfg(test)]
14455            #[allow(dead_code, unreachable_patterns)]
14456            fn _type_assertion(
14457                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14458            ) {
14459                match _t {
14460                    alloy_sol_types::private::AssertTypeEq::<
14461                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14462                    >(_) => {}
14463                }
14464            }
14465            #[automatically_derived]
14466            #[doc(hidden)]
14467            impl ::core::convert::From<upgradeToAndCallCall>
14468            for UnderlyingRustTuple<'_> {
14469                fn from(value: upgradeToAndCallCall) -> Self {
14470                    (value.newImplementation, value.data)
14471                }
14472            }
14473            #[automatically_derived]
14474            #[doc(hidden)]
14475            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14476            for upgradeToAndCallCall {
14477                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14478                    Self {
14479                        newImplementation: tuple.0,
14480                        data: tuple.1,
14481                    }
14482                }
14483            }
14484        }
14485        {
14486            #[doc(hidden)]
14487            #[allow(dead_code)]
14488            type UnderlyingSolTuple<'a> = ();
14489            #[doc(hidden)]
14490            type UnderlyingRustTuple<'a> = ();
14491            #[cfg(test)]
14492            #[allow(dead_code, unreachable_patterns)]
14493            fn _type_assertion(
14494                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14495            ) {
14496                match _t {
14497                    alloy_sol_types::private::AssertTypeEq::<
14498                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14499                    >(_) => {}
14500                }
14501            }
14502            #[automatically_derived]
14503            #[doc(hidden)]
14504            impl ::core::convert::From<upgradeToAndCallReturn>
14505            for UnderlyingRustTuple<'_> {
14506                fn from(value: upgradeToAndCallReturn) -> Self {
14507                    ()
14508                }
14509            }
14510            #[automatically_derived]
14511            #[doc(hidden)]
14512            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14513            for upgradeToAndCallReturn {
14514                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14515                    Self {}
14516                }
14517            }
14518        }
14519        impl upgradeToAndCallReturn {
14520            fn _tokenize(
14521                &self,
14522            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14523                ()
14524            }
14525        }
14526        #[automatically_derived]
14527        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
14528            type Parameters<'a> = (
14529                alloy::sol_types::sol_data::Address,
14530                alloy::sol_types::sol_data::Bytes,
14531            );
14532            type Token<'a> = <Self::Parameters<
14533                'a,
14534            > as alloy_sol_types::SolType>::Token<'a>;
14535            type Return = upgradeToAndCallReturn;
14536            type ReturnTuple<'a> = ();
14537            type ReturnToken<'a> = <Self::ReturnTuple<
14538                'a,
14539            > as alloy_sol_types::SolType>::Token<'a>;
14540            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
14541            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
14542            #[inline]
14543            fn new<'a>(
14544                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14545            ) -> Self {
14546                tuple.into()
14547            }
14548            #[inline]
14549            fn tokenize(&self) -> Self::Token<'_> {
14550                (
14551                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14552                        &self.newImplementation,
14553                    ),
14554                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
14555                        &self.data,
14556                    ),
14557                )
14558            }
14559            #[inline]
14560            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14561                upgradeToAndCallReturn::_tokenize(ret)
14562            }
14563            #[inline]
14564            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14565                <Self::ReturnTuple<
14566                    '_,
14567                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14568                    .map(Into::into)
14569            }
14570            #[inline]
14571            fn abi_decode_returns_validate(
14572                data: &[u8],
14573            ) -> alloy_sol_types::Result<Self::Return> {
14574                <Self::ReturnTuple<
14575                    '_,
14576                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14577                    .map(Into::into)
14578            }
14579        }
14580    };
14581    #[derive(serde::Serialize, serde::Deserialize)]
14582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14583    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
14584```solidity
14585function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
14586```*/
14587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14588    #[derive(Clone)]
14589    pub struct votingStakeTableStateCall;
14590    #[derive(serde::Serialize, serde::Deserialize)]
14591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14592    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
14593    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14594    #[derive(Clone)]
14595    pub struct votingStakeTableStateReturn {
14596        #[allow(missing_docs)]
14597        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
14598        #[allow(missing_docs)]
14599        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14600        #[allow(missing_docs)]
14601        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14602        #[allow(missing_docs)]
14603        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14604    }
14605    #[allow(
14606        non_camel_case_types,
14607        non_snake_case,
14608        clippy::pub_underscore_fields,
14609        clippy::style
14610    )]
14611    const _: () = {
14612        use alloy::sol_types as alloy_sol_types;
14613        {
14614            #[doc(hidden)]
14615            #[allow(dead_code)]
14616            type UnderlyingSolTuple<'a> = ();
14617            #[doc(hidden)]
14618            type UnderlyingRustTuple<'a> = ();
14619            #[cfg(test)]
14620            #[allow(dead_code, unreachable_patterns)]
14621            fn _type_assertion(
14622                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14623            ) {
14624                match _t {
14625                    alloy_sol_types::private::AssertTypeEq::<
14626                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14627                    >(_) => {}
14628                }
14629            }
14630            #[automatically_derived]
14631            #[doc(hidden)]
14632            impl ::core::convert::From<votingStakeTableStateCall>
14633            for UnderlyingRustTuple<'_> {
14634                fn from(value: votingStakeTableStateCall) -> Self {
14635                    ()
14636                }
14637            }
14638            #[automatically_derived]
14639            #[doc(hidden)]
14640            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14641            for votingStakeTableStateCall {
14642                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14643                    Self
14644                }
14645            }
14646        }
14647        {
14648            #[doc(hidden)]
14649            #[allow(dead_code)]
14650            type UnderlyingSolTuple<'a> = (
14651                alloy::sol_types::sol_data::Uint<256>,
14652                BN254::ScalarField,
14653                BN254::ScalarField,
14654                BN254::ScalarField,
14655            );
14656            #[doc(hidden)]
14657            type UnderlyingRustTuple<'a> = (
14658                alloy::sol_types::private::primitives::aliases::U256,
14659                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14660                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14661                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14662            );
14663            #[cfg(test)]
14664            #[allow(dead_code, unreachable_patterns)]
14665            fn _type_assertion(
14666                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14667            ) {
14668                match _t {
14669                    alloy_sol_types::private::AssertTypeEq::<
14670                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14671                    >(_) => {}
14672                }
14673            }
14674            #[automatically_derived]
14675            #[doc(hidden)]
14676            impl ::core::convert::From<votingStakeTableStateReturn>
14677            for UnderlyingRustTuple<'_> {
14678                fn from(value: votingStakeTableStateReturn) -> Self {
14679                    (
14680                        value.threshold,
14681                        value.blsKeyComm,
14682                        value.schnorrKeyComm,
14683                        value.amountComm,
14684                    )
14685                }
14686            }
14687            #[automatically_derived]
14688            #[doc(hidden)]
14689            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14690            for votingStakeTableStateReturn {
14691                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14692                    Self {
14693                        threshold: tuple.0,
14694                        blsKeyComm: tuple.1,
14695                        schnorrKeyComm: tuple.2,
14696                        amountComm: tuple.3,
14697                    }
14698                }
14699            }
14700        }
14701        impl votingStakeTableStateReturn {
14702            fn _tokenize(
14703                &self,
14704            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14705                '_,
14706            > {
14707                (
14708                    <alloy::sol_types::sol_data::Uint<
14709                        256,
14710                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
14711                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14712                        &self.blsKeyComm,
14713                    ),
14714                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14715                        &self.schnorrKeyComm,
14716                    ),
14717                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14718                        &self.amountComm,
14719                    ),
14720                )
14721            }
14722        }
14723        #[automatically_derived]
14724        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
14725            type Parameters<'a> = ();
14726            type Token<'a> = <Self::Parameters<
14727                'a,
14728            > as alloy_sol_types::SolType>::Token<'a>;
14729            type Return = votingStakeTableStateReturn;
14730            type ReturnTuple<'a> = (
14731                alloy::sol_types::sol_data::Uint<256>,
14732                BN254::ScalarField,
14733                BN254::ScalarField,
14734                BN254::ScalarField,
14735            );
14736            type ReturnToken<'a> = <Self::ReturnTuple<
14737                'a,
14738            > as alloy_sol_types::SolType>::Token<'a>;
14739            const SIGNATURE: &'static str = "votingStakeTableState()";
14740            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
14741            #[inline]
14742            fn new<'a>(
14743                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14744            ) -> Self {
14745                tuple.into()
14746            }
14747            #[inline]
14748            fn tokenize(&self) -> Self::Token<'_> {
14749                ()
14750            }
14751            #[inline]
14752            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14753                votingStakeTableStateReturn::_tokenize(ret)
14754            }
14755            #[inline]
14756            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14757                <Self::ReturnTuple<
14758                    '_,
14759                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14760                    .map(Into::into)
14761            }
14762            #[inline]
14763            fn abi_decode_returns_validate(
14764                data: &[u8],
14765            ) -> alloy_sol_types::Result<Self::Return> {
14766                <Self::ReturnTuple<
14767                    '_,
14768                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14769                    .map(Into::into)
14770            }
14771        }
14772    };
14773    ///Container for all the [`LightClientV2Mock`](self) function calls.
14774    #[derive(serde::Serialize, serde::Deserialize)]
14775    #[derive()]
14776    pub enum LightClientV2MockCalls {
14777        #[allow(missing_docs)]
14778        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
14779        #[allow(missing_docs)]
14780        _getVk(_getVkCall),
14781        #[allow(missing_docs)]
14782        blocksPerEpoch(blocksPerEpochCall),
14783        #[allow(missing_docs)]
14784        currentBlockNumber(currentBlockNumberCall),
14785        #[allow(missing_docs)]
14786        currentEpoch(currentEpochCall),
14787        #[allow(missing_docs)]
14788        disablePermissionedProverMode(disablePermissionedProverModeCall),
14789        #[allow(missing_docs)]
14790        epochFromBlockNumber(epochFromBlockNumberCall),
14791        #[allow(missing_docs)]
14792        epochStartBlock(epochStartBlockCall),
14793        #[allow(missing_docs)]
14794        finalizedState(finalizedStateCall),
14795        #[allow(missing_docs)]
14796        genesisStakeTableState(genesisStakeTableStateCall),
14797        #[allow(missing_docs)]
14798        genesisState(genesisStateCall),
14799        #[allow(missing_docs)]
14800        getFirstEpoch(getFirstEpochCall),
14801        #[allow(missing_docs)]
14802        getHotShotCommitment(getHotShotCommitmentCall),
14803        #[allow(missing_docs)]
14804        getStateHistoryCount(getStateHistoryCountCall),
14805        #[allow(missing_docs)]
14806        getVersion(getVersionCall),
14807        #[allow(missing_docs)]
14808        initialize(initializeCall),
14809        #[allow(missing_docs)]
14810        initializeV2(initializeV2Call),
14811        #[allow(missing_docs)]
14812        isEpochRoot(isEpochRootCall),
14813        #[allow(missing_docs)]
14814        isGtEpochRoot(isGtEpochRootCall),
14815        #[allow(missing_docs)]
14816        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
14817        #[allow(missing_docs)]
14818        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
14819        #[allow(missing_docs)]
14820        newFinalizedState_0(newFinalizedState_0Call),
14821        #[allow(missing_docs)]
14822        newFinalizedState_1(newFinalizedState_1Call),
14823        #[allow(missing_docs)]
14824        owner(ownerCall),
14825        #[allow(missing_docs)]
14826        permissionedProver(permissionedProverCall),
14827        #[allow(missing_docs)]
14828        proxiableUUID(proxiableUUIDCall),
14829        #[allow(missing_docs)]
14830        renounceOwnership(renounceOwnershipCall),
14831        #[allow(missing_docs)]
14832        setBlocksPerEpoch(setBlocksPerEpochCall),
14833        #[allow(missing_docs)]
14834        setFinalizedState(setFinalizedStateCall),
14835        #[allow(missing_docs)]
14836        setHotShotDownSince(setHotShotDownSinceCall),
14837        #[allow(missing_docs)]
14838        setHotShotUp(setHotShotUpCall),
14839        #[allow(missing_docs)]
14840        setPermissionedProver(setPermissionedProverCall),
14841        #[allow(missing_docs)]
14842        setStateHistory(setStateHistoryCall),
14843        #[allow(missing_docs)]
14844        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
14845        #[allow(missing_docs)]
14846        setVotingStakeTableState(setVotingStakeTableStateCall),
14847        #[allow(missing_docs)]
14848        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
14849        #[allow(missing_docs)]
14850        stateHistoryCommitments(stateHistoryCommitmentsCall),
14851        #[allow(missing_docs)]
14852        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
14853        #[allow(missing_docs)]
14854        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
14855        #[allow(missing_docs)]
14856        transferOwnership(transferOwnershipCall),
14857        #[allow(missing_docs)]
14858        updateEpochStartBlock(updateEpochStartBlockCall),
14859        #[allow(missing_docs)]
14860        upgradeToAndCall(upgradeToAndCallCall),
14861        #[allow(missing_docs)]
14862        votingStakeTableState(votingStakeTableStateCall),
14863    }
14864    #[automatically_derived]
14865    impl LightClientV2MockCalls {
14866        /// All the selectors of this enum.
14867        ///
14868        /// Note that the selectors might not be in the same order as the variants.
14869        /// No guarantees are made about the order of the selectors.
14870        ///
14871        /// Prefer using `SolInterface` methods instead.
14872        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14873            [1u8, 63u8, 165u8, 252u8],
14874            [2u8, 181u8, 146u8, 243u8],
14875            [6u8, 37u8, 225u8, 155u8],
14876            [13u8, 142u8, 110u8, 44u8],
14877            [18u8, 23u8, 60u8, 44u8],
14878            [22u8, 122u8, 198u8, 24u8],
14879            [32u8, 99u8, 212u8, 247u8],
14880            [37u8, 41u8, 116u8, 39u8],
14881            [45u8, 82u8, 170u8, 214u8],
14882            [47u8, 121u8, 136u8, 157u8],
14883            [48u8, 12u8, 137u8, 221u8],
14884            [49u8, 61u8, 247u8, 177u8],
14885            [55u8, 142u8, 194u8, 59u8],
14886            [60u8, 35u8, 182u8, 219u8],
14887            [62u8, 213u8, 91u8, 123u8],
14888            [66u8, 109u8, 49u8, 148u8],
14889            [67u8, 61u8, 186u8, 159u8],
14890            [79u8, 30u8, 242u8, 134u8],
14891            [82u8, 209u8, 144u8, 45u8],
14892            [98u8, 58u8, 19u8, 56u8],
14893            [105u8, 204u8, 106u8, 4u8],
14894            [113u8, 80u8, 24u8, 166u8],
14895            [117u8, 124u8, 55u8, 173u8],
14896            [118u8, 103u8, 24u8, 8u8],
14897            [130u8, 110u8, 65u8, 252u8],
14898            [133u8, 132u8, 210u8, 63u8],
14899            [141u8, 165u8, 203u8, 91u8],
14900            [144u8, 193u8, 67u8, 144u8],
14901            [150u8, 193u8, 202u8, 97u8],
14902            [155u8, 170u8, 60u8, 201u8],
14903            [159u8, 219u8, 84u8, 167u8],
14904            [173u8, 60u8, 177u8, 204u8],
14905            [179u8, 59u8, 196u8, 145u8],
14906            [179u8, 218u8, 242u8, 84u8],
14907            [181u8, 173u8, 234u8, 60u8],
14908            [194u8, 59u8, 158u8, 158u8],
14909            [200u8, 229u8, 228u8, 152u8],
14910            [210u8, 77u8, 147u8, 61u8],
14911            [224u8, 48u8, 51u8, 1u8],
14912            [240u8, 104u8, 32u8, 84u8],
14913            [242u8, 253u8, 227u8, 139u8],
14914            [245u8, 103u8, 97u8, 96u8],
14915            [249u8, 229u8, 13u8, 25u8],
14916        ];
14917    }
14918    #[automatically_derived]
14919    impl alloy_sol_types::SolInterface for LightClientV2MockCalls {
14920        const NAME: &'static str = "LightClientV2MockCalls";
14921        const MIN_DATA_LENGTH: usize = 0usize;
14922        const COUNT: usize = 43usize;
14923        #[inline]
14924        fn selector(&self) -> [u8; 4] {
14925            match self {
14926                Self::UPGRADE_INTERFACE_VERSION(_) => {
14927                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
14928                }
14929                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
14930                Self::blocksPerEpoch(_) => {
14931                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
14932                }
14933                Self::currentBlockNumber(_) => {
14934                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14935                }
14936                Self::currentEpoch(_) => {
14937                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
14938                }
14939                Self::disablePermissionedProverMode(_) => {
14940                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
14941                }
14942                Self::epochFromBlockNumber(_) => {
14943                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14944                }
14945                Self::epochStartBlock(_) => {
14946                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14947                }
14948                Self::finalizedState(_) => {
14949                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
14950                }
14951                Self::genesisStakeTableState(_) => {
14952                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14953                }
14954                Self::genesisState(_) => {
14955                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
14956                }
14957                Self::getFirstEpoch(_) => {
14958                    <getFirstEpochCall as alloy_sol_types::SolCall>::SELECTOR
14959                }
14960                Self::getHotShotCommitment(_) => {
14961                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
14962                }
14963                Self::getStateHistoryCount(_) => {
14964                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
14965                }
14966                Self::getVersion(_) => {
14967                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
14968                }
14969                Self::initialize(_) => {
14970                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
14971                }
14972                Self::initializeV2(_) => {
14973                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
14974                }
14975                Self::isEpochRoot(_) => {
14976                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14977                }
14978                Self::isGtEpochRoot(_) => {
14979                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14980                }
14981                Self::isPermissionedProverEnabled(_) => {
14982                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
14983                }
14984                Self::lagOverEscapeHatchThreshold(_) => {
14985                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
14986                }
14987                Self::newFinalizedState_0(_) => {
14988                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
14989                }
14990                Self::newFinalizedState_1(_) => {
14991                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
14992                }
14993                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
14994                Self::permissionedProver(_) => {
14995                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14996                }
14997                Self::proxiableUUID(_) => {
14998                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
14999                }
15000                Self::renounceOwnership(_) => {
15001                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15002                }
15003                Self::setBlocksPerEpoch(_) => {
15004                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
15005                }
15006                Self::setFinalizedState(_) => {
15007                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
15008                }
15009                Self::setHotShotDownSince(_) => {
15010                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
15011                }
15012                Self::setHotShotUp(_) => {
15013                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
15014                }
15015                Self::setPermissionedProver(_) => {
15016                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15017                }
15018                Self::setStateHistory(_) => {
15019                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
15020                }
15021                Self::setStateHistoryRetentionPeriod(_) => {
15022                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15023                }
15024                Self::setVotingStakeTableState(_) => {
15025                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15026                }
15027                Self::setstateHistoryRetentionPeriod(_) => {
15028                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15029                }
15030                Self::stateHistoryCommitments(_) => {
15031                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
15032                }
15033                Self::stateHistoryFirstIndex(_) => {
15034                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
15035                }
15036                Self::stateHistoryRetentionPeriod(_) => {
15037                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15038                }
15039                Self::transferOwnership(_) => {
15040                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15041                }
15042                Self::updateEpochStartBlock(_) => {
15043                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
15044                }
15045                Self::upgradeToAndCall(_) => {
15046                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
15047                }
15048                Self::votingStakeTableState(_) => {
15049                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15050                }
15051            }
15052        }
15053        #[inline]
15054        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15055            Self::SELECTORS.get(i).copied()
15056        }
15057        #[inline]
15058        fn valid_selector(selector: [u8; 4]) -> bool {
15059            Self::SELECTORS.binary_search(&selector).is_ok()
15060        }
15061        #[inline]
15062        #[allow(non_snake_case)]
15063        fn abi_decode_raw(
15064            selector: [u8; 4],
15065            data: &[u8],
15066        ) -> alloy_sol_types::Result<Self> {
15067            static DECODE_SHIMS: &[fn(
15068                &[u8],
15069            ) -> alloy_sol_types::Result<LightClientV2MockCalls>] = &[
15070                {
15071                    fn setPermissionedProver(
15072                        data: &[u8],
15073                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15074                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
15075                                data,
15076                            )
15077                            .map(LightClientV2MockCalls::setPermissionedProver)
15078                    }
15079                    setPermissionedProver
15080                },
15081                {
15082                    fn stateHistoryCommitments(
15083                        data: &[u8],
15084                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15085                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
15086                                data,
15087                            )
15088                            .map(LightClientV2MockCalls::stateHistoryCommitments)
15089                    }
15090                    stateHistoryCommitments
15091                },
15092                {
15093                    fn votingStakeTableState(
15094                        data: &[u8],
15095                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15096                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15097                                data,
15098                            )
15099                            .map(LightClientV2MockCalls::votingStakeTableState)
15100                    }
15101                    votingStakeTableState
15102                },
15103                {
15104                    fn getVersion(
15105                        data: &[u8],
15106                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15107                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
15108                                data,
15109                            )
15110                            .map(LightClientV2MockCalls::getVersion)
15111                    }
15112                    getVersion
15113                },
15114                {
15115                    fn _getVk(
15116                        data: &[u8],
15117                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15118                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
15119                            .map(LightClientV2MockCalls::_getVk)
15120                    }
15121                    _getVk
15122                },
15123                {
15124                    fn updateEpochStartBlock(
15125                        data: &[u8],
15126                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15127                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
15128                                data,
15129                            )
15130                            .map(LightClientV2MockCalls::updateEpochStartBlock)
15131                    }
15132                    updateEpochStartBlock
15133                },
15134                {
15135                    fn newFinalizedState_0(
15136                        data: &[u8],
15137                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15138                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
15139                                data,
15140                            )
15141                            .map(LightClientV2MockCalls::newFinalizedState_0)
15142                    }
15143                    newFinalizedState_0
15144                },
15145                {
15146                    fn isEpochRoot(
15147                        data: &[u8],
15148                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15149                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
15150                                data,
15151                            )
15152                            .map(LightClientV2MockCalls::isEpochRoot)
15153                    }
15154                    isEpochRoot
15155                },
15156                {
15157                    fn setHotShotDownSince(
15158                        data: &[u8],
15159                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15160                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
15161                                data,
15162                            )
15163                            .map(LightClientV2MockCalls::setHotShotDownSince)
15164                    }
15165                    setHotShotDownSince
15166                },
15167                {
15168                    fn stateHistoryFirstIndex(
15169                        data: &[u8],
15170                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15171                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
15172                                data,
15173                            )
15174                            .map(LightClientV2MockCalls::stateHistoryFirstIndex)
15175                    }
15176                    stateHistoryFirstIndex
15177                },
15178                {
15179                    fn isGtEpochRoot(
15180                        data: &[u8],
15181                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15182                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
15183                                data,
15184                            )
15185                            .map(LightClientV2MockCalls::isGtEpochRoot)
15186                    }
15187                    isGtEpochRoot
15188                },
15189                {
15190                    fn permissionedProver(
15191                        data: &[u8],
15192                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15193                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
15194                                data,
15195                            )
15196                            .map(LightClientV2MockCalls::permissionedProver)
15197                    }
15198                    permissionedProver
15199                },
15200                {
15201                    fn currentBlockNumber(
15202                        data: &[u8],
15203                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15204                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
15205                                data,
15206                            )
15207                            .map(LightClientV2MockCalls::currentBlockNumber)
15208                    }
15209                    currentBlockNumber
15210                },
15211                {
15212                    fn setBlocksPerEpoch(
15213                        data: &[u8],
15214                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15215                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15216                                data,
15217                            )
15218                            .map(LightClientV2MockCalls::setBlocksPerEpoch)
15219                    }
15220                    setBlocksPerEpoch
15221                },
15222                {
15223                    fn epochStartBlock(
15224                        data: &[u8],
15225                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15226                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
15227                                data,
15228                            )
15229                            .map(LightClientV2MockCalls::epochStartBlock)
15230                    }
15231                    epochStartBlock
15232                },
15233                {
15234                    fn genesisStakeTableState(
15235                        data: &[u8],
15236                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15237                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15238                                data,
15239                            )
15240                            .map(LightClientV2MockCalls::genesisStakeTableState)
15241                    }
15242                    genesisStakeTableState
15243                },
15244                {
15245                    fn setStateHistoryRetentionPeriod(
15246                        data: &[u8],
15247                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15248                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
15249                                data,
15250                            )
15251                            .map(LightClientV2MockCalls::setStateHistoryRetentionPeriod)
15252                    }
15253                    setStateHistoryRetentionPeriod
15254                },
15255                {
15256                    fn upgradeToAndCall(
15257                        data: &[u8],
15258                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15259                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
15260                                data,
15261                            )
15262                            .map(LightClientV2MockCalls::upgradeToAndCall)
15263                    }
15264                    upgradeToAndCall
15265                },
15266                {
15267                    fn proxiableUUID(
15268                        data: &[u8],
15269                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15270                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
15271                                data,
15272                            )
15273                            .map(LightClientV2MockCalls::proxiableUUID)
15274                    }
15275                    proxiableUUID
15276                },
15277                {
15278                    fn setVotingStakeTableState(
15279                        data: &[u8],
15280                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15281                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15282                                data,
15283                            )
15284                            .map(LightClientV2MockCalls::setVotingStakeTableState)
15285                    }
15286                    setVotingStakeTableState
15287                },
15288                {
15289                    fn disablePermissionedProverMode(
15290                        data: &[u8],
15291                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15292                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
15293                                data,
15294                            )
15295                            .map(LightClientV2MockCalls::disablePermissionedProverMode)
15296                    }
15297                    disablePermissionedProverMode
15298                },
15299                {
15300                    fn renounceOwnership(
15301                        data: &[u8],
15302                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15303                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
15304                                data,
15305                            )
15306                            .map(LightClientV2MockCalls::renounceOwnership)
15307                    }
15308                    renounceOwnership
15309                },
15310                {
15311                    fn newFinalizedState_1(
15312                        data: &[u8],
15313                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15314                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
15315                                data,
15316                            )
15317                            .map(LightClientV2MockCalls::newFinalizedState_1)
15318                    }
15319                    newFinalizedState_1
15320                },
15321                {
15322                    fn currentEpoch(
15323                        data: &[u8],
15324                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15325                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15326                                data,
15327                            )
15328                            .map(LightClientV2MockCalls::currentEpoch)
15329                    }
15330                    currentEpoch
15331                },
15332                {
15333                    fn isPermissionedProverEnabled(
15334                        data: &[u8],
15335                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15336                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
15337                                data,
15338                            )
15339                            .map(LightClientV2MockCalls::isPermissionedProverEnabled)
15340                    }
15341                    isPermissionedProverEnabled
15342                },
15343                {
15344                    fn getHotShotCommitment(
15345                        data: &[u8],
15346                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15347                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
15348                                data,
15349                            )
15350                            .map(LightClientV2MockCalls::getHotShotCommitment)
15351                    }
15352                    getHotShotCommitment
15353                },
15354                {
15355                    fn owner(
15356                        data: &[u8],
15357                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15358                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
15359                            .map(LightClientV2MockCalls::owner)
15360                    }
15361                    owner
15362                },
15363                {
15364                    fn epochFromBlockNumber(
15365                        data: &[u8],
15366                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15367                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
15368                                data,
15369                            )
15370                            .map(LightClientV2MockCalls::epochFromBlockNumber)
15371                    }
15372                    epochFromBlockNumber
15373                },
15374                {
15375                    fn setstateHistoryRetentionPeriod(
15376                        data: &[u8],
15377                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15378                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
15379                                data,
15380                            )
15381                            .map(LightClientV2MockCalls::setstateHistoryRetentionPeriod)
15382                    }
15383                    setstateHistoryRetentionPeriod
15384                },
15385                {
15386                    fn initialize(
15387                        data: &[u8],
15388                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15389                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
15390                                data,
15391                            )
15392                            .map(LightClientV2MockCalls::initialize)
15393                    }
15394                    initialize
15395                },
15396                {
15397                    fn finalizedState(
15398                        data: &[u8],
15399                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15400                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15401                                data,
15402                            )
15403                            .map(LightClientV2MockCalls::finalizedState)
15404                    }
15405                    finalizedState
15406                },
15407                {
15408                    fn UPGRADE_INTERFACE_VERSION(
15409                        data: &[u8],
15410                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15411                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
15412                                data,
15413                            )
15414                            .map(LightClientV2MockCalls::UPGRADE_INTERFACE_VERSION)
15415                    }
15416                    UPGRADE_INTERFACE_VERSION
15417                },
15418                {
15419                    fn initializeV2(
15420                        data: &[u8],
15421                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15422                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
15423                                data,
15424                            )
15425                            .map(LightClientV2MockCalls::initializeV2)
15426                    }
15427                    initializeV2
15428                },
15429                {
15430                    fn getFirstEpoch(
15431                        data: &[u8],
15432                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15433                        <getFirstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15434                                data,
15435                            )
15436                            .map(LightClientV2MockCalls::getFirstEpoch)
15437                    }
15438                    getFirstEpoch
15439                },
15440                {
15441                    fn setFinalizedState(
15442                        data: &[u8],
15443                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15444                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15445                                data,
15446                            )
15447                            .map(LightClientV2MockCalls::setFinalizedState)
15448                    }
15449                    setFinalizedState
15450                },
15451                {
15452                    fn stateHistoryRetentionPeriod(
15453                        data: &[u8],
15454                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15455                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
15456                                data,
15457                            )
15458                            .map(LightClientV2MockCalls::stateHistoryRetentionPeriod)
15459                    }
15460                    stateHistoryRetentionPeriod
15461                },
15462                {
15463                    fn setHotShotUp(
15464                        data: &[u8],
15465                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15466                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
15467                                data,
15468                            )
15469                            .map(LightClientV2MockCalls::setHotShotUp)
15470                    }
15471                    setHotShotUp
15472                },
15473                {
15474                    fn genesisState(
15475                        data: &[u8],
15476                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15477                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15478                                data,
15479                            )
15480                            .map(LightClientV2MockCalls::genesisState)
15481                    }
15482                    genesisState
15483                },
15484                {
15485                    fn lagOverEscapeHatchThreshold(
15486                        data: &[u8],
15487                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15488                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
15489                                data,
15490                            )
15491                            .map(LightClientV2MockCalls::lagOverEscapeHatchThreshold)
15492                    }
15493                    lagOverEscapeHatchThreshold
15494                },
15495                {
15496                    fn blocksPerEpoch(
15497                        data: &[u8],
15498                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15499                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15500                                data,
15501                            )
15502                            .map(LightClientV2MockCalls::blocksPerEpoch)
15503                    }
15504                    blocksPerEpoch
15505                },
15506                {
15507                    fn transferOwnership(
15508                        data: &[u8],
15509                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15510                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
15511                                data,
15512                            )
15513                            .map(LightClientV2MockCalls::transferOwnership)
15514                    }
15515                    transferOwnership
15516                },
15517                {
15518                    fn setStateHistory(
15519                        data: &[u8],
15520                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15521                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
15522                                data,
15523                            )
15524                            .map(LightClientV2MockCalls::setStateHistory)
15525                    }
15526                    setStateHistory
15527                },
15528                {
15529                    fn getStateHistoryCount(
15530                        data: &[u8],
15531                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15532                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
15533                                data,
15534                            )
15535                            .map(LightClientV2MockCalls::getStateHistoryCount)
15536                    }
15537                    getStateHistoryCount
15538                },
15539            ];
15540            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15541                return Err(
15542                    alloy_sol_types::Error::unknown_selector(
15543                        <Self as alloy_sol_types::SolInterface>::NAME,
15544                        selector,
15545                    ),
15546                );
15547            };
15548            DECODE_SHIMS[idx](data)
15549        }
15550        #[inline]
15551        #[allow(non_snake_case)]
15552        fn abi_decode_raw_validate(
15553            selector: [u8; 4],
15554            data: &[u8],
15555        ) -> alloy_sol_types::Result<Self> {
15556            static DECODE_VALIDATE_SHIMS: &[fn(
15557                &[u8],
15558            ) -> alloy_sol_types::Result<LightClientV2MockCalls>] = &[
15559                {
15560                    fn setPermissionedProver(
15561                        data: &[u8],
15562                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15563                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15564                                data,
15565                            )
15566                            .map(LightClientV2MockCalls::setPermissionedProver)
15567                    }
15568                    setPermissionedProver
15569                },
15570                {
15571                    fn stateHistoryCommitments(
15572                        data: &[u8],
15573                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15574                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15575                                data,
15576                            )
15577                            .map(LightClientV2MockCalls::stateHistoryCommitments)
15578                    }
15579                    stateHistoryCommitments
15580                },
15581                {
15582                    fn votingStakeTableState(
15583                        data: &[u8],
15584                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15585                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15586                                data,
15587                            )
15588                            .map(LightClientV2MockCalls::votingStakeTableState)
15589                    }
15590                    votingStakeTableState
15591                },
15592                {
15593                    fn getVersion(
15594                        data: &[u8],
15595                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15596                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15597                                data,
15598                            )
15599                            .map(LightClientV2MockCalls::getVersion)
15600                    }
15601                    getVersion
15602                },
15603                {
15604                    fn _getVk(
15605                        data: &[u8],
15606                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15607                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15608                                data,
15609                            )
15610                            .map(LightClientV2MockCalls::_getVk)
15611                    }
15612                    _getVk
15613                },
15614                {
15615                    fn updateEpochStartBlock(
15616                        data: &[u8],
15617                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15618                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15619                                data,
15620                            )
15621                            .map(LightClientV2MockCalls::updateEpochStartBlock)
15622                    }
15623                    updateEpochStartBlock
15624                },
15625                {
15626                    fn newFinalizedState_0(
15627                        data: &[u8],
15628                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15629                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15630                                data,
15631                            )
15632                            .map(LightClientV2MockCalls::newFinalizedState_0)
15633                    }
15634                    newFinalizedState_0
15635                },
15636                {
15637                    fn isEpochRoot(
15638                        data: &[u8],
15639                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15640                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15641                                data,
15642                            )
15643                            .map(LightClientV2MockCalls::isEpochRoot)
15644                    }
15645                    isEpochRoot
15646                },
15647                {
15648                    fn setHotShotDownSince(
15649                        data: &[u8],
15650                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15651                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15652                                data,
15653                            )
15654                            .map(LightClientV2MockCalls::setHotShotDownSince)
15655                    }
15656                    setHotShotDownSince
15657                },
15658                {
15659                    fn stateHistoryFirstIndex(
15660                        data: &[u8],
15661                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15662                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15663                                data,
15664                            )
15665                            .map(LightClientV2MockCalls::stateHistoryFirstIndex)
15666                    }
15667                    stateHistoryFirstIndex
15668                },
15669                {
15670                    fn isGtEpochRoot(
15671                        data: &[u8],
15672                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15673                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15674                                data,
15675                            )
15676                            .map(LightClientV2MockCalls::isGtEpochRoot)
15677                    }
15678                    isGtEpochRoot
15679                },
15680                {
15681                    fn permissionedProver(
15682                        data: &[u8],
15683                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15684                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15685                                data,
15686                            )
15687                            .map(LightClientV2MockCalls::permissionedProver)
15688                    }
15689                    permissionedProver
15690                },
15691                {
15692                    fn currentBlockNumber(
15693                        data: &[u8],
15694                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15695                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15696                                data,
15697                            )
15698                            .map(LightClientV2MockCalls::currentBlockNumber)
15699                    }
15700                    currentBlockNumber
15701                },
15702                {
15703                    fn setBlocksPerEpoch(
15704                        data: &[u8],
15705                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15706                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15707                                data,
15708                            )
15709                            .map(LightClientV2MockCalls::setBlocksPerEpoch)
15710                    }
15711                    setBlocksPerEpoch
15712                },
15713                {
15714                    fn epochStartBlock(
15715                        data: &[u8],
15716                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15717                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15718                                data,
15719                            )
15720                            .map(LightClientV2MockCalls::epochStartBlock)
15721                    }
15722                    epochStartBlock
15723                },
15724                {
15725                    fn genesisStakeTableState(
15726                        data: &[u8],
15727                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15728                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15729                                data,
15730                            )
15731                            .map(LightClientV2MockCalls::genesisStakeTableState)
15732                    }
15733                    genesisStakeTableState
15734                },
15735                {
15736                    fn setStateHistoryRetentionPeriod(
15737                        data: &[u8],
15738                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15739                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15740                                data,
15741                            )
15742                            .map(LightClientV2MockCalls::setStateHistoryRetentionPeriod)
15743                    }
15744                    setStateHistoryRetentionPeriod
15745                },
15746                {
15747                    fn upgradeToAndCall(
15748                        data: &[u8],
15749                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15750                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15751                                data,
15752                            )
15753                            .map(LightClientV2MockCalls::upgradeToAndCall)
15754                    }
15755                    upgradeToAndCall
15756                },
15757                {
15758                    fn proxiableUUID(
15759                        data: &[u8],
15760                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15761                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15762                                data,
15763                            )
15764                            .map(LightClientV2MockCalls::proxiableUUID)
15765                    }
15766                    proxiableUUID
15767                },
15768                {
15769                    fn setVotingStakeTableState(
15770                        data: &[u8],
15771                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15772                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15773                                data,
15774                            )
15775                            .map(LightClientV2MockCalls::setVotingStakeTableState)
15776                    }
15777                    setVotingStakeTableState
15778                },
15779                {
15780                    fn disablePermissionedProverMode(
15781                        data: &[u8],
15782                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15783                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15784                                data,
15785                            )
15786                            .map(LightClientV2MockCalls::disablePermissionedProverMode)
15787                    }
15788                    disablePermissionedProverMode
15789                },
15790                {
15791                    fn renounceOwnership(
15792                        data: &[u8],
15793                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15794                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15795                                data,
15796                            )
15797                            .map(LightClientV2MockCalls::renounceOwnership)
15798                    }
15799                    renounceOwnership
15800                },
15801                {
15802                    fn newFinalizedState_1(
15803                        data: &[u8],
15804                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15805                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15806                                data,
15807                            )
15808                            .map(LightClientV2MockCalls::newFinalizedState_1)
15809                    }
15810                    newFinalizedState_1
15811                },
15812                {
15813                    fn currentEpoch(
15814                        data: &[u8],
15815                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15816                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15817                                data,
15818                            )
15819                            .map(LightClientV2MockCalls::currentEpoch)
15820                    }
15821                    currentEpoch
15822                },
15823                {
15824                    fn isPermissionedProverEnabled(
15825                        data: &[u8],
15826                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15827                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15828                                data,
15829                            )
15830                            .map(LightClientV2MockCalls::isPermissionedProverEnabled)
15831                    }
15832                    isPermissionedProverEnabled
15833                },
15834                {
15835                    fn getHotShotCommitment(
15836                        data: &[u8],
15837                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15838                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15839                                data,
15840                            )
15841                            .map(LightClientV2MockCalls::getHotShotCommitment)
15842                    }
15843                    getHotShotCommitment
15844                },
15845                {
15846                    fn owner(
15847                        data: &[u8],
15848                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15849                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15850                                data,
15851                            )
15852                            .map(LightClientV2MockCalls::owner)
15853                    }
15854                    owner
15855                },
15856                {
15857                    fn epochFromBlockNumber(
15858                        data: &[u8],
15859                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15860                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15861                                data,
15862                            )
15863                            .map(LightClientV2MockCalls::epochFromBlockNumber)
15864                    }
15865                    epochFromBlockNumber
15866                },
15867                {
15868                    fn setstateHistoryRetentionPeriod(
15869                        data: &[u8],
15870                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15871                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15872                                data,
15873                            )
15874                            .map(LightClientV2MockCalls::setstateHistoryRetentionPeriod)
15875                    }
15876                    setstateHistoryRetentionPeriod
15877                },
15878                {
15879                    fn initialize(
15880                        data: &[u8],
15881                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15882                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15883                                data,
15884                            )
15885                            .map(LightClientV2MockCalls::initialize)
15886                    }
15887                    initialize
15888                },
15889                {
15890                    fn finalizedState(
15891                        data: &[u8],
15892                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15893                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15894                                data,
15895                            )
15896                            .map(LightClientV2MockCalls::finalizedState)
15897                    }
15898                    finalizedState
15899                },
15900                {
15901                    fn UPGRADE_INTERFACE_VERSION(
15902                        data: &[u8],
15903                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15904                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15905                                data,
15906                            )
15907                            .map(LightClientV2MockCalls::UPGRADE_INTERFACE_VERSION)
15908                    }
15909                    UPGRADE_INTERFACE_VERSION
15910                },
15911                {
15912                    fn initializeV2(
15913                        data: &[u8],
15914                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15915                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15916                                data,
15917                            )
15918                            .map(LightClientV2MockCalls::initializeV2)
15919                    }
15920                    initializeV2
15921                },
15922                {
15923                    fn getFirstEpoch(
15924                        data: &[u8],
15925                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15926                        <getFirstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15927                                data,
15928                            )
15929                            .map(LightClientV2MockCalls::getFirstEpoch)
15930                    }
15931                    getFirstEpoch
15932                },
15933                {
15934                    fn setFinalizedState(
15935                        data: &[u8],
15936                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15937                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15938                                data,
15939                            )
15940                            .map(LightClientV2MockCalls::setFinalizedState)
15941                    }
15942                    setFinalizedState
15943                },
15944                {
15945                    fn stateHistoryRetentionPeriod(
15946                        data: &[u8],
15947                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15948                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15949                                data,
15950                            )
15951                            .map(LightClientV2MockCalls::stateHistoryRetentionPeriod)
15952                    }
15953                    stateHistoryRetentionPeriod
15954                },
15955                {
15956                    fn setHotShotUp(
15957                        data: &[u8],
15958                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15959                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15960                                data,
15961                            )
15962                            .map(LightClientV2MockCalls::setHotShotUp)
15963                    }
15964                    setHotShotUp
15965                },
15966                {
15967                    fn genesisState(
15968                        data: &[u8],
15969                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15970                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15971                                data,
15972                            )
15973                            .map(LightClientV2MockCalls::genesisState)
15974                    }
15975                    genesisState
15976                },
15977                {
15978                    fn lagOverEscapeHatchThreshold(
15979                        data: &[u8],
15980                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15981                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15982                                data,
15983                            )
15984                            .map(LightClientV2MockCalls::lagOverEscapeHatchThreshold)
15985                    }
15986                    lagOverEscapeHatchThreshold
15987                },
15988                {
15989                    fn blocksPerEpoch(
15990                        data: &[u8],
15991                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15992                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15993                                data,
15994                            )
15995                            .map(LightClientV2MockCalls::blocksPerEpoch)
15996                    }
15997                    blocksPerEpoch
15998                },
15999                {
16000                    fn transferOwnership(
16001                        data: &[u8],
16002                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16003                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16004                                data,
16005                            )
16006                            .map(LightClientV2MockCalls::transferOwnership)
16007                    }
16008                    transferOwnership
16009                },
16010                {
16011                    fn setStateHistory(
16012                        data: &[u8],
16013                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16014                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16015                                data,
16016                            )
16017                            .map(LightClientV2MockCalls::setStateHistory)
16018                    }
16019                    setStateHistory
16020                },
16021                {
16022                    fn getStateHistoryCount(
16023                        data: &[u8],
16024                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
16025                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16026                                data,
16027                            )
16028                            .map(LightClientV2MockCalls::getStateHistoryCount)
16029                    }
16030                    getStateHistoryCount
16031                },
16032            ];
16033            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16034                return Err(
16035                    alloy_sol_types::Error::unknown_selector(
16036                        <Self as alloy_sol_types::SolInterface>::NAME,
16037                        selector,
16038                    ),
16039                );
16040            };
16041            DECODE_VALIDATE_SHIMS[idx](data)
16042        }
16043        #[inline]
16044        fn abi_encoded_size(&self) -> usize {
16045            match self {
16046                Self::UPGRADE_INTERFACE_VERSION(inner) => {
16047                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
16048                        inner,
16049                    )
16050                }
16051                Self::_getVk(inner) => {
16052                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16053                }
16054                Self::blocksPerEpoch(inner) => {
16055                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16056                        inner,
16057                    )
16058                }
16059                Self::currentBlockNumber(inner) => {
16060                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
16061                        inner,
16062                    )
16063                }
16064                Self::currentEpoch(inner) => {
16065                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16066                        inner,
16067                    )
16068                }
16069                Self::disablePermissionedProverMode(inner) => {
16070                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
16071                        inner,
16072                    )
16073                }
16074                Self::epochFromBlockNumber(inner) => {
16075                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
16076                        inner,
16077                    )
16078                }
16079                Self::epochStartBlock(inner) => {
16080                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
16081                        inner,
16082                    )
16083                }
16084                Self::finalizedState(inner) => {
16085                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16086                        inner,
16087                    )
16088                }
16089                Self::genesisStakeTableState(inner) => {
16090                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16091                        inner,
16092                    )
16093                }
16094                Self::genesisState(inner) => {
16095                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16096                        inner,
16097                    )
16098                }
16099                Self::getFirstEpoch(inner) => {
16100                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16101                        inner,
16102                    )
16103                }
16104                Self::getHotShotCommitment(inner) => {
16105                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
16106                        inner,
16107                    )
16108                }
16109                Self::getStateHistoryCount(inner) => {
16110                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
16111                        inner,
16112                    )
16113                }
16114                Self::getVersion(inner) => {
16115                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16116                }
16117                Self::initialize(inner) => {
16118                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16119                }
16120                Self::initializeV2(inner) => {
16121                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
16122                        inner,
16123                    )
16124                }
16125                Self::isEpochRoot(inner) => {
16126                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
16127                        inner,
16128                    )
16129                }
16130                Self::isGtEpochRoot(inner) => {
16131                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
16132                        inner,
16133                    )
16134                }
16135                Self::isPermissionedProverEnabled(inner) => {
16136                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
16137                        inner,
16138                    )
16139                }
16140                Self::lagOverEscapeHatchThreshold(inner) => {
16141                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
16142                        inner,
16143                    )
16144                }
16145                Self::newFinalizedState_0(inner) => {
16146                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
16147                        inner,
16148                    )
16149                }
16150                Self::newFinalizedState_1(inner) => {
16151                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
16152                        inner,
16153                    )
16154                }
16155                Self::owner(inner) => {
16156                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16157                }
16158                Self::permissionedProver(inner) => {
16159                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
16160                        inner,
16161                    )
16162                }
16163                Self::proxiableUUID(inner) => {
16164                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
16165                        inner,
16166                    )
16167                }
16168                Self::renounceOwnership(inner) => {
16169                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
16170                        inner,
16171                    )
16172                }
16173                Self::setBlocksPerEpoch(inner) => {
16174                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16175                        inner,
16176                    )
16177                }
16178                Self::setFinalizedState(inner) => {
16179                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16180                        inner,
16181                    )
16182                }
16183                Self::setHotShotDownSince(inner) => {
16184                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
16185                        inner,
16186                    )
16187                }
16188                Self::setHotShotUp(inner) => {
16189                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
16190                        inner,
16191                    )
16192                }
16193                Self::setPermissionedProver(inner) => {
16194                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
16195                        inner,
16196                    )
16197                }
16198                Self::setStateHistory(inner) => {
16199                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
16200                        inner,
16201                    )
16202                }
16203                Self::setStateHistoryRetentionPeriod(inner) => {
16204                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16205                        inner,
16206                    )
16207                }
16208                Self::setVotingStakeTableState(inner) => {
16209                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16210                        inner,
16211                    )
16212                }
16213                Self::setstateHistoryRetentionPeriod(inner) => {
16214                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16215                        inner,
16216                    )
16217                }
16218                Self::stateHistoryCommitments(inner) => {
16219                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
16220                        inner,
16221                    )
16222                }
16223                Self::stateHistoryFirstIndex(inner) => {
16224                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
16225                        inner,
16226                    )
16227                }
16228                Self::stateHistoryRetentionPeriod(inner) => {
16229                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16230                        inner,
16231                    )
16232                }
16233                Self::transferOwnership(inner) => {
16234                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
16235                        inner,
16236                    )
16237                }
16238                Self::updateEpochStartBlock(inner) => {
16239                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
16240                        inner,
16241                    )
16242                }
16243                Self::upgradeToAndCall(inner) => {
16244                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
16245                        inner,
16246                    )
16247                }
16248                Self::votingStakeTableState(inner) => {
16249                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16250                        inner,
16251                    )
16252                }
16253            }
16254        }
16255        #[inline]
16256        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16257            match self {
16258                Self::UPGRADE_INTERFACE_VERSION(inner) => {
16259                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
16260                        inner,
16261                        out,
16262                    )
16263                }
16264                Self::_getVk(inner) => {
16265                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
16266                }
16267                Self::blocksPerEpoch(inner) => {
16268                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16269                        inner,
16270                        out,
16271                    )
16272                }
16273                Self::currentBlockNumber(inner) => {
16274                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
16275                        inner,
16276                        out,
16277                    )
16278                }
16279                Self::currentEpoch(inner) => {
16280                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16281                        inner,
16282                        out,
16283                    )
16284                }
16285                Self::disablePermissionedProverMode(inner) => {
16286                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
16287                        inner,
16288                        out,
16289                    )
16290                }
16291                Self::epochFromBlockNumber(inner) => {
16292                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
16293                        inner,
16294                        out,
16295                    )
16296                }
16297                Self::epochStartBlock(inner) => {
16298                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
16299                        inner,
16300                        out,
16301                    )
16302                }
16303                Self::finalizedState(inner) => {
16304                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16305                        inner,
16306                        out,
16307                    )
16308                }
16309                Self::genesisStakeTableState(inner) => {
16310                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16311                        inner,
16312                        out,
16313                    )
16314                }
16315                Self::genesisState(inner) => {
16316                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16317                        inner,
16318                        out,
16319                    )
16320                }
16321                Self::getFirstEpoch(inner) => {
16322                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16323                        inner,
16324                        out,
16325                    )
16326                }
16327                Self::getHotShotCommitment(inner) => {
16328                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
16329                        inner,
16330                        out,
16331                    )
16332                }
16333                Self::getStateHistoryCount(inner) => {
16334                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
16335                        inner,
16336                        out,
16337                    )
16338                }
16339                Self::getVersion(inner) => {
16340                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
16341                        inner,
16342                        out,
16343                    )
16344                }
16345                Self::initialize(inner) => {
16346                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
16347                        inner,
16348                        out,
16349                    )
16350                }
16351                Self::initializeV2(inner) => {
16352                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
16353                        inner,
16354                        out,
16355                    )
16356                }
16357                Self::isEpochRoot(inner) => {
16358                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
16359                        inner,
16360                        out,
16361                    )
16362                }
16363                Self::isGtEpochRoot(inner) => {
16364                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
16365                        inner,
16366                        out,
16367                    )
16368                }
16369                Self::isPermissionedProverEnabled(inner) => {
16370                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
16371                        inner,
16372                        out,
16373                    )
16374                }
16375                Self::lagOverEscapeHatchThreshold(inner) => {
16376                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
16377                        inner,
16378                        out,
16379                    )
16380                }
16381                Self::newFinalizedState_0(inner) => {
16382                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
16383                        inner,
16384                        out,
16385                    )
16386                }
16387                Self::newFinalizedState_1(inner) => {
16388                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
16389                        inner,
16390                        out,
16391                    )
16392                }
16393                Self::owner(inner) => {
16394                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
16395                }
16396                Self::permissionedProver(inner) => {
16397                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
16398                        inner,
16399                        out,
16400                    )
16401                }
16402                Self::proxiableUUID(inner) => {
16403                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
16404                        inner,
16405                        out,
16406                    )
16407                }
16408                Self::renounceOwnership(inner) => {
16409                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
16410                        inner,
16411                        out,
16412                    )
16413                }
16414                Self::setBlocksPerEpoch(inner) => {
16415                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16416                        inner,
16417                        out,
16418                    )
16419                }
16420                Self::setFinalizedState(inner) => {
16421                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16422                        inner,
16423                        out,
16424                    )
16425                }
16426                Self::setHotShotDownSince(inner) => {
16427                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
16428                        inner,
16429                        out,
16430                    )
16431                }
16432                Self::setHotShotUp(inner) => {
16433                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
16434                        inner,
16435                        out,
16436                    )
16437                }
16438                Self::setPermissionedProver(inner) => {
16439                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
16440                        inner,
16441                        out,
16442                    )
16443                }
16444                Self::setStateHistory(inner) => {
16445                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
16446                        inner,
16447                        out,
16448                    )
16449                }
16450                Self::setStateHistoryRetentionPeriod(inner) => {
16451                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16452                        inner,
16453                        out,
16454                    )
16455                }
16456                Self::setVotingStakeTableState(inner) => {
16457                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16458                        inner,
16459                        out,
16460                    )
16461                }
16462                Self::setstateHistoryRetentionPeriod(inner) => {
16463                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16464                        inner,
16465                        out,
16466                    )
16467                }
16468                Self::stateHistoryCommitments(inner) => {
16469                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
16470                        inner,
16471                        out,
16472                    )
16473                }
16474                Self::stateHistoryFirstIndex(inner) => {
16475                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
16476                        inner,
16477                        out,
16478                    )
16479                }
16480                Self::stateHistoryRetentionPeriod(inner) => {
16481                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16482                        inner,
16483                        out,
16484                    )
16485                }
16486                Self::transferOwnership(inner) => {
16487                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
16488                        inner,
16489                        out,
16490                    )
16491                }
16492                Self::updateEpochStartBlock(inner) => {
16493                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
16494                        inner,
16495                        out,
16496                    )
16497                }
16498                Self::upgradeToAndCall(inner) => {
16499                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
16500                        inner,
16501                        out,
16502                    )
16503                }
16504                Self::votingStakeTableState(inner) => {
16505                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16506                        inner,
16507                        out,
16508                    )
16509                }
16510            }
16511        }
16512    }
16513    ///Container for all the [`LightClientV2Mock`](self) custom errors.
16514    #[derive(serde::Serialize, serde::Deserialize)]
16515    #[derive(Debug, PartialEq, Eq, Hash)]
16516    pub enum LightClientV2MockErrors {
16517        #[allow(missing_docs)]
16518        AddressEmptyCode(AddressEmptyCode),
16519        #[allow(missing_docs)]
16520        DeprecatedApi(DeprecatedApi),
16521        #[allow(missing_docs)]
16522        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
16523        #[allow(missing_docs)]
16524        ERC1967NonPayable(ERC1967NonPayable),
16525        #[allow(missing_docs)]
16526        FailedInnerCall(FailedInnerCall),
16527        #[allow(missing_docs)]
16528        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
16529        #[allow(missing_docs)]
16530        InvalidAddress(InvalidAddress),
16531        #[allow(missing_docs)]
16532        InvalidArgs(InvalidArgs),
16533        #[allow(missing_docs)]
16534        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
16535        #[allow(missing_docs)]
16536        InvalidInitialization(InvalidInitialization),
16537        #[allow(missing_docs)]
16538        InvalidMaxStateHistory(InvalidMaxStateHistory),
16539        #[allow(missing_docs)]
16540        InvalidProof(InvalidProof),
16541        #[allow(missing_docs)]
16542        InvalidScalar(InvalidScalar),
16543        #[allow(missing_docs)]
16544        MissingEpochRootUpdate(MissingEpochRootUpdate),
16545        #[allow(missing_docs)]
16546        NoChangeRequired(NoChangeRequired),
16547        #[allow(missing_docs)]
16548        NotInitializing(NotInitializing),
16549        #[allow(missing_docs)]
16550        OutdatedState(OutdatedState),
16551        #[allow(missing_docs)]
16552        OwnableInvalidOwner(OwnableInvalidOwner),
16553        #[allow(missing_docs)]
16554        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
16555        #[allow(missing_docs)]
16556        ProverNotPermissioned(ProverNotPermissioned),
16557        #[allow(missing_docs)]
16558        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
16559        #[allow(missing_docs)]
16560        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
16561        #[allow(missing_docs)]
16562        WrongStakeTableUsed(WrongStakeTableUsed),
16563    }
16564    #[automatically_derived]
16565    impl LightClientV2MockErrors {
16566        /// All the selectors of this enum.
16567        ///
16568        /// Note that the selectors might not be in the same order as the variants.
16569        /// No guarantees are made about the order of the selectors.
16570        ///
16571        /// Prefer using `SolInterface` methods instead.
16572        pub const SELECTORS: &'static [[u8; 4usize]] = &[
16573            [5u8, 28u8, 70u8, 239u8],
16574            [5u8, 176u8, 92u8, 204u8],
16575            [8u8, 10u8, 232u8, 217u8],
16576            [9u8, 189u8, 227u8, 57u8],
16577            [17u8, 140u8, 218u8, 167u8],
16578            [20u8, 37u8, 234u8, 66u8],
16579            [30u8, 79u8, 189u8, 247u8],
16580            [76u8, 156u8, 140u8, 227u8],
16581            [78u8, 64u8, 92u8, 141u8],
16582            [81u8, 97u8, 128u8, 137u8],
16583            [97u8, 90u8, 146u8, 100u8],
16584            [153u8, 150u8, 179u8, 21u8],
16585            [161u8, 186u8, 7u8, 238u8],
16586            [163u8, 166u8, 71u8, 128u8],
16587            [168u8, 99u8, 174u8, 201u8],
16588            [170u8, 29u8, 73u8, 164u8],
16589            [176u8, 180u8, 56u8, 119u8],
16590            [179u8, 152u8, 151u8, 159u8],
16591            [215u8, 230u8, 188u8, 248u8],
16592            [224u8, 124u8, 141u8, 186u8],
16593            [230u8, 196u8, 36u8, 123u8],
16594            [244u8, 160u8, 238u8, 224u8],
16595            [249u8, 46u8, 232u8, 169u8],
16596        ];
16597    }
16598    #[automatically_derived]
16599    impl alloy_sol_types::SolInterface for LightClientV2MockErrors {
16600        const NAME: &'static str = "LightClientV2MockErrors";
16601        const MIN_DATA_LENGTH: usize = 0usize;
16602        const COUNT: usize = 23usize;
16603        #[inline]
16604        fn selector(&self) -> [u8; 4] {
16605            match self {
16606                Self::AddressEmptyCode(_) => {
16607                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
16608                }
16609                Self::DeprecatedApi(_) => {
16610                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
16611                }
16612                Self::ERC1967InvalidImplementation(_) => {
16613                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
16614                }
16615                Self::ERC1967NonPayable(_) => {
16616                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
16617                }
16618                Self::FailedInnerCall(_) => {
16619                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
16620                }
16621                Self::InsufficientSnapshotHistory(_) => {
16622                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
16623                }
16624                Self::InvalidAddress(_) => {
16625                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
16626                }
16627                Self::InvalidArgs(_) => {
16628                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
16629                }
16630                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
16631                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
16632                }
16633                Self::InvalidInitialization(_) => {
16634                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
16635                }
16636                Self::InvalidMaxStateHistory(_) => {
16637                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
16638                }
16639                Self::InvalidProof(_) => {
16640                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
16641                }
16642                Self::InvalidScalar(_) => {
16643                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
16644                }
16645                Self::MissingEpochRootUpdate(_) => {
16646                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
16647                }
16648                Self::NoChangeRequired(_) => {
16649                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
16650                }
16651                Self::NotInitializing(_) => {
16652                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
16653                }
16654                Self::OutdatedState(_) => {
16655                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
16656                }
16657                Self::OwnableInvalidOwner(_) => {
16658                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
16659                }
16660                Self::OwnableUnauthorizedAccount(_) => {
16661                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
16662                }
16663                Self::ProverNotPermissioned(_) => {
16664                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
16665                }
16666                Self::UUPSUnauthorizedCallContext(_) => {
16667                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
16668                }
16669                Self::UUPSUnsupportedProxiableUUID(_) => {
16670                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
16671                }
16672                Self::WrongStakeTableUsed(_) => {
16673                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
16674                }
16675            }
16676        }
16677        #[inline]
16678        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
16679            Self::SELECTORS.get(i).copied()
16680        }
16681        #[inline]
16682        fn valid_selector(selector: [u8; 4]) -> bool {
16683            Self::SELECTORS.binary_search(&selector).is_ok()
16684        }
16685        #[inline]
16686        #[allow(non_snake_case)]
16687        fn abi_decode_raw(
16688            selector: [u8; 4],
16689            data: &[u8],
16690        ) -> alloy_sol_types::Result<Self> {
16691            static DECODE_SHIMS: &[fn(
16692                &[u8],
16693            ) -> alloy_sol_types::Result<LightClientV2MockErrors>] = &[
16694                {
16695                    fn OutdatedState(
16696                        data: &[u8],
16697                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16698                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
16699                                data,
16700                            )
16701                            .map(LightClientV2MockErrors::OutdatedState)
16702                    }
16703                    OutdatedState
16704                },
16705                {
16706                    fn InvalidScalar(
16707                        data: &[u8],
16708                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16709                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
16710                                data,
16711                            )
16712                            .map(LightClientV2MockErrors::InvalidScalar)
16713                    }
16714                    InvalidScalar
16715                },
16716                {
16717                    fn MissingEpochRootUpdate(
16718                        data: &[u8],
16719                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16720                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
16721                                data,
16722                            )
16723                            .map(LightClientV2MockErrors::MissingEpochRootUpdate)
16724                    }
16725                    MissingEpochRootUpdate
16726                },
16727                {
16728                    fn InvalidProof(
16729                        data: &[u8],
16730                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16731                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
16732                            .map(LightClientV2MockErrors::InvalidProof)
16733                    }
16734                    InvalidProof
16735                },
16736                {
16737                    fn OwnableUnauthorizedAccount(
16738                        data: &[u8],
16739                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16740                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
16741                                data,
16742                            )
16743                            .map(LightClientV2MockErrors::OwnableUnauthorizedAccount)
16744                    }
16745                    OwnableUnauthorizedAccount
16746                },
16747                {
16748                    fn FailedInnerCall(
16749                        data: &[u8],
16750                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16751                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
16752                                data,
16753                            )
16754                            .map(LightClientV2MockErrors::FailedInnerCall)
16755                    }
16756                    FailedInnerCall
16757                },
16758                {
16759                    fn OwnableInvalidOwner(
16760                        data: &[u8],
16761                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16762                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
16763                                data,
16764                            )
16765                            .map(LightClientV2MockErrors::OwnableInvalidOwner)
16766                    }
16767                    OwnableInvalidOwner
16768                },
16769                {
16770                    fn ERC1967InvalidImplementation(
16771                        data: &[u8],
16772                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16773                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
16774                                data,
16775                            )
16776                            .map(LightClientV2MockErrors::ERC1967InvalidImplementation)
16777                    }
16778                    ERC1967InvalidImplementation
16779                },
16780                {
16781                    fn DeprecatedApi(
16782                        data: &[u8],
16783                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16784                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
16785                                data,
16786                            )
16787                            .map(LightClientV2MockErrors::DeprecatedApi)
16788                    }
16789                    DeprecatedApi
16790                },
16791                {
16792                    fn WrongStakeTableUsed(
16793                        data: &[u8],
16794                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16795                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
16796                                data,
16797                            )
16798                            .map(LightClientV2MockErrors::WrongStakeTableUsed)
16799                    }
16800                    WrongStakeTableUsed
16801                },
16802                {
16803                    fn InvalidHotShotBlockForCommitmentCheck(
16804                        data: &[u8],
16805                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16806                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
16807                                data,
16808                            )
16809                            .map(
16810                                LightClientV2MockErrors::InvalidHotShotBlockForCommitmentCheck,
16811                            )
16812                    }
16813                    InvalidHotShotBlockForCommitmentCheck
16814                },
16815                {
16816                    fn AddressEmptyCode(
16817                        data: &[u8],
16818                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16819                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
16820                                data,
16821                            )
16822                            .map(LightClientV2MockErrors::AddressEmptyCode)
16823                    }
16824                    AddressEmptyCode
16825                },
16826                {
16827                    fn InvalidArgs(
16828                        data: &[u8],
16829                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16830                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
16831                            .map(LightClientV2MockErrors::InvalidArgs)
16832                    }
16833                    InvalidArgs
16834                },
16835                {
16836                    fn ProverNotPermissioned(
16837                        data: &[u8],
16838                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16839                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
16840                                data,
16841                            )
16842                            .map(LightClientV2MockErrors::ProverNotPermissioned)
16843                    }
16844                    ProverNotPermissioned
16845                },
16846                {
16847                    fn NoChangeRequired(
16848                        data: &[u8],
16849                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16850                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
16851                                data,
16852                            )
16853                            .map(LightClientV2MockErrors::NoChangeRequired)
16854                    }
16855                    NoChangeRequired
16856                },
16857                {
16858                    fn UUPSUnsupportedProxiableUUID(
16859                        data: &[u8],
16860                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16861                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
16862                                data,
16863                            )
16864                            .map(LightClientV2MockErrors::UUPSUnsupportedProxiableUUID)
16865                    }
16866                    UUPSUnsupportedProxiableUUID
16867                },
16868                {
16869                    fn InsufficientSnapshotHistory(
16870                        data: &[u8],
16871                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16872                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
16873                                data,
16874                            )
16875                            .map(LightClientV2MockErrors::InsufficientSnapshotHistory)
16876                    }
16877                    InsufficientSnapshotHistory
16878                },
16879                {
16880                    fn ERC1967NonPayable(
16881                        data: &[u8],
16882                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16883                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
16884                                data,
16885                            )
16886                            .map(LightClientV2MockErrors::ERC1967NonPayable)
16887                    }
16888                    ERC1967NonPayable
16889                },
16890                {
16891                    fn NotInitializing(
16892                        data: &[u8],
16893                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16894                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
16895                                data,
16896                            )
16897                            .map(LightClientV2MockErrors::NotInitializing)
16898                    }
16899                    NotInitializing
16900                },
16901                {
16902                    fn UUPSUnauthorizedCallContext(
16903                        data: &[u8],
16904                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16905                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
16906                                data,
16907                            )
16908                            .map(LightClientV2MockErrors::UUPSUnauthorizedCallContext)
16909                    }
16910                    UUPSUnauthorizedCallContext
16911                },
16912                {
16913                    fn InvalidAddress(
16914                        data: &[u8],
16915                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16916                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
16917                                data,
16918                            )
16919                            .map(LightClientV2MockErrors::InvalidAddress)
16920                    }
16921                    InvalidAddress
16922                },
16923                {
16924                    fn InvalidMaxStateHistory(
16925                        data: &[u8],
16926                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16927                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
16928                                data,
16929                            )
16930                            .map(LightClientV2MockErrors::InvalidMaxStateHistory)
16931                    }
16932                    InvalidMaxStateHistory
16933                },
16934                {
16935                    fn InvalidInitialization(
16936                        data: &[u8],
16937                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16938                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
16939                                data,
16940                            )
16941                            .map(LightClientV2MockErrors::InvalidInitialization)
16942                    }
16943                    InvalidInitialization
16944                },
16945            ];
16946            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16947                return Err(
16948                    alloy_sol_types::Error::unknown_selector(
16949                        <Self as alloy_sol_types::SolInterface>::NAME,
16950                        selector,
16951                    ),
16952                );
16953            };
16954            DECODE_SHIMS[idx](data)
16955        }
16956        #[inline]
16957        #[allow(non_snake_case)]
16958        fn abi_decode_raw_validate(
16959            selector: [u8; 4],
16960            data: &[u8],
16961        ) -> alloy_sol_types::Result<Self> {
16962            static DECODE_VALIDATE_SHIMS: &[fn(
16963                &[u8],
16964            ) -> alloy_sol_types::Result<LightClientV2MockErrors>] = &[
16965                {
16966                    fn OutdatedState(
16967                        data: &[u8],
16968                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16969                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
16970                                data,
16971                            )
16972                            .map(LightClientV2MockErrors::OutdatedState)
16973                    }
16974                    OutdatedState
16975                },
16976                {
16977                    fn InvalidScalar(
16978                        data: &[u8],
16979                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16980                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
16981                                data,
16982                            )
16983                            .map(LightClientV2MockErrors::InvalidScalar)
16984                    }
16985                    InvalidScalar
16986                },
16987                {
16988                    fn MissingEpochRootUpdate(
16989                        data: &[u8],
16990                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16991                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
16992                                data,
16993                            )
16994                            .map(LightClientV2MockErrors::MissingEpochRootUpdate)
16995                    }
16996                    MissingEpochRootUpdate
16997                },
16998                {
16999                    fn InvalidProof(
17000                        data: &[u8],
17001                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17002                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
17003                                data,
17004                            )
17005                            .map(LightClientV2MockErrors::InvalidProof)
17006                    }
17007                    InvalidProof
17008                },
17009                {
17010                    fn OwnableUnauthorizedAccount(
17011                        data: &[u8],
17012                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17013                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
17014                                data,
17015                            )
17016                            .map(LightClientV2MockErrors::OwnableUnauthorizedAccount)
17017                    }
17018                    OwnableUnauthorizedAccount
17019                },
17020                {
17021                    fn FailedInnerCall(
17022                        data: &[u8],
17023                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17024                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
17025                                data,
17026                            )
17027                            .map(LightClientV2MockErrors::FailedInnerCall)
17028                    }
17029                    FailedInnerCall
17030                },
17031                {
17032                    fn OwnableInvalidOwner(
17033                        data: &[u8],
17034                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17035                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
17036                                data,
17037                            )
17038                            .map(LightClientV2MockErrors::OwnableInvalidOwner)
17039                    }
17040                    OwnableInvalidOwner
17041                },
17042                {
17043                    fn ERC1967InvalidImplementation(
17044                        data: &[u8],
17045                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17046                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
17047                                data,
17048                            )
17049                            .map(LightClientV2MockErrors::ERC1967InvalidImplementation)
17050                    }
17051                    ERC1967InvalidImplementation
17052                },
17053                {
17054                    fn DeprecatedApi(
17055                        data: &[u8],
17056                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17057                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
17058                                data,
17059                            )
17060                            .map(LightClientV2MockErrors::DeprecatedApi)
17061                    }
17062                    DeprecatedApi
17063                },
17064                {
17065                    fn WrongStakeTableUsed(
17066                        data: &[u8],
17067                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17068                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
17069                                data,
17070                            )
17071                            .map(LightClientV2MockErrors::WrongStakeTableUsed)
17072                    }
17073                    WrongStakeTableUsed
17074                },
17075                {
17076                    fn InvalidHotShotBlockForCommitmentCheck(
17077                        data: &[u8],
17078                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17079                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
17080                                data,
17081                            )
17082                            .map(
17083                                LightClientV2MockErrors::InvalidHotShotBlockForCommitmentCheck,
17084                            )
17085                    }
17086                    InvalidHotShotBlockForCommitmentCheck
17087                },
17088                {
17089                    fn AddressEmptyCode(
17090                        data: &[u8],
17091                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17092                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
17093                                data,
17094                            )
17095                            .map(LightClientV2MockErrors::AddressEmptyCode)
17096                    }
17097                    AddressEmptyCode
17098                },
17099                {
17100                    fn InvalidArgs(
17101                        data: &[u8],
17102                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17103                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
17104                                data,
17105                            )
17106                            .map(LightClientV2MockErrors::InvalidArgs)
17107                    }
17108                    InvalidArgs
17109                },
17110                {
17111                    fn ProverNotPermissioned(
17112                        data: &[u8],
17113                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17114                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
17115                                data,
17116                            )
17117                            .map(LightClientV2MockErrors::ProverNotPermissioned)
17118                    }
17119                    ProverNotPermissioned
17120                },
17121                {
17122                    fn NoChangeRequired(
17123                        data: &[u8],
17124                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17125                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
17126                                data,
17127                            )
17128                            .map(LightClientV2MockErrors::NoChangeRequired)
17129                    }
17130                    NoChangeRequired
17131                },
17132                {
17133                    fn UUPSUnsupportedProxiableUUID(
17134                        data: &[u8],
17135                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17136                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
17137                                data,
17138                            )
17139                            .map(LightClientV2MockErrors::UUPSUnsupportedProxiableUUID)
17140                    }
17141                    UUPSUnsupportedProxiableUUID
17142                },
17143                {
17144                    fn InsufficientSnapshotHistory(
17145                        data: &[u8],
17146                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17147                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
17148                                data,
17149                            )
17150                            .map(LightClientV2MockErrors::InsufficientSnapshotHistory)
17151                    }
17152                    InsufficientSnapshotHistory
17153                },
17154                {
17155                    fn ERC1967NonPayable(
17156                        data: &[u8],
17157                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17158                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
17159                                data,
17160                            )
17161                            .map(LightClientV2MockErrors::ERC1967NonPayable)
17162                    }
17163                    ERC1967NonPayable
17164                },
17165                {
17166                    fn NotInitializing(
17167                        data: &[u8],
17168                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17169                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
17170                                data,
17171                            )
17172                            .map(LightClientV2MockErrors::NotInitializing)
17173                    }
17174                    NotInitializing
17175                },
17176                {
17177                    fn UUPSUnauthorizedCallContext(
17178                        data: &[u8],
17179                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17180                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
17181                                data,
17182                            )
17183                            .map(LightClientV2MockErrors::UUPSUnauthorizedCallContext)
17184                    }
17185                    UUPSUnauthorizedCallContext
17186                },
17187                {
17188                    fn InvalidAddress(
17189                        data: &[u8],
17190                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17191                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
17192                                data,
17193                            )
17194                            .map(LightClientV2MockErrors::InvalidAddress)
17195                    }
17196                    InvalidAddress
17197                },
17198                {
17199                    fn InvalidMaxStateHistory(
17200                        data: &[u8],
17201                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17202                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
17203                                data,
17204                            )
17205                            .map(LightClientV2MockErrors::InvalidMaxStateHistory)
17206                    }
17207                    InvalidMaxStateHistory
17208                },
17209                {
17210                    fn InvalidInitialization(
17211                        data: &[u8],
17212                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17213                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
17214                                data,
17215                            )
17216                            .map(LightClientV2MockErrors::InvalidInitialization)
17217                    }
17218                    InvalidInitialization
17219                },
17220            ];
17221            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17222                return Err(
17223                    alloy_sol_types::Error::unknown_selector(
17224                        <Self as alloy_sol_types::SolInterface>::NAME,
17225                        selector,
17226                    ),
17227                );
17228            };
17229            DECODE_VALIDATE_SHIMS[idx](data)
17230        }
17231        #[inline]
17232        fn abi_encoded_size(&self) -> usize {
17233            match self {
17234                Self::AddressEmptyCode(inner) => {
17235                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
17236                        inner,
17237                    )
17238                }
17239                Self::DeprecatedApi(inner) => {
17240                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
17241                }
17242                Self::ERC1967InvalidImplementation(inner) => {
17243                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
17244                        inner,
17245                    )
17246                }
17247                Self::ERC1967NonPayable(inner) => {
17248                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
17249                        inner,
17250                    )
17251                }
17252                Self::FailedInnerCall(inner) => {
17253                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
17254                        inner,
17255                    )
17256                }
17257                Self::InsufficientSnapshotHistory(inner) => {
17258                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
17259                        inner,
17260                    )
17261                }
17262                Self::InvalidAddress(inner) => {
17263                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
17264                        inner,
17265                    )
17266                }
17267                Self::InvalidArgs(inner) => {
17268                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
17269                }
17270                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
17271                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
17272                        inner,
17273                    )
17274                }
17275                Self::InvalidInitialization(inner) => {
17276                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
17277                        inner,
17278                    )
17279                }
17280                Self::InvalidMaxStateHistory(inner) => {
17281                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
17282                        inner,
17283                    )
17284                }
17285                Self::InvalidProof(inner) => {
17286                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
17287                }
17288                Self::InvalidScalar(inner) => {
17289                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
17290                }
17291                Self::MissingEpochRootUpdate(inner) => {
17292                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
17293                        inner,
17294                    )
17295                }
17296                Self::NoChangeRequired(inner) => {
17297                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
17298                        inner,
17299                    )
17300                }
17301                Self::NotInitializing(inner) => {
17302                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
17303                        inner,
17304                    )
17305                }
17306                Self::OutdatedState(inner) => {
17307                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
17308                }
17309                Self::OwnableInvalidOwner(inner) => {
17310                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
17311                        inner,
17312                    )
17313                }
17314                Self::OwnableUnauthorizedAccount(inner) => {
17315                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
17316                        inner,
17317                    )
17318                }
17319                Self::ProverNotPermissioned(inner) => {
17320                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
17321                        inner,
17322                    )
17323                }
17324                Self::UUPSUnauthorizedCallContext(inner) => {
17325                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
17326                        inner,
17327                    )
17328                }
17329                Self::UUPSUnsupportedProxiableUUID(inner) => {
17330                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
17331                        inner,
17332                    )
17333                }
17334                Self::WrongStakeTableUsed(inner) => {
17335                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
17336                        inner,
17337                    )
17338                }
17339            }
17340        }
17341        #[inline]
17342        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
17343            match self {
17344                Self::AddressEmptyCode(inner) => {
17345                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
17346                        inner,
17347                        out,
17348                    )
17349                }
17350                Self::DeprecatedApi(inner) => {
17351                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
17352                        inner,
17353                        out,
17354                    )
17355                }
17356                Self::ERC1967InvalidImplementation(inner) => {
17357                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
17358                        inner,
17359                        out,
17360                    )
17361                }
17362                Self::ERC1967NonPayable(inner) => {
17363                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
17364                        inner,
17365                        out,
17366                    )
17367                }
17368                Self::FailedInnerCall(inner) => {
17369                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
17370                        inner,
17371                        out,
17372                    )
17373                }
17374                Self::InsufficientSnapshotHistory(inner) => {
17375                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
17376                        inner,
17377                        out,
17378                    )
17379                }
17380                Self::InvalidAddress(inner) => {
17381                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
17382                        inner,
17383                        out,
17384                    )
17385                }
17386                Self::InvalidArgs(inner) => {
17387                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
17388                        inner,
17389                        out,
17390                    )
17391                }
17392                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
17393                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
17394                        inner,
17395                        out,
17396                    )
17397                }
17398                Self::InvalidInitialization(inner) => {
17399                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
17400                        inner,
17401                        out,
17402                    )
17403                }
17404                Self::InvalidMaxStateHistory(inner) => {
17405                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
17406                        inner,
17407                        out,
17408                    )
17409                }
17410                Self::InvalidProof(inner) => {
17411                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
17412                        inner,
17413                        out,
17414                    )
17415                }
17416                Self::InvalidScalar(inner) => {
17417                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
17418                        inner,
17419                        out,
17420                    )
17421                }
17422                Self::MissingEpochRootUpdate(inner) => {
17423                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
17424                        inner,
17425                        out,
17426                    )
17427                }
17428                Self::NoChangeRequired(inner) => {
17429                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
17430                        inner,
17431                        out,
17432                    )
17433                }
17434                Self::NotInitializing(inner) => {
17435                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
17436                        inner,
17437                        out,
17438                    )
17439                }
17440                Self::OutdatedState(inner) => {
17441                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
17442                        inner,
17443                        out,
17444                    )
17445                }
17446                Self::OwnableInvalidOwner(inner) => {
17447                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
17448                        inner,
17449                        out,
17450                    )
17451                }
17452                Self::OwnableUnauthorizedAccount(inner) => {
17453                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
17454                        inner,
17455                        out,
17456                    )
17457                }
17458                Self::ProverNotPermissioned(inner) => {
17459                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
17460                        inner,
17461                        out,
17462                    )
17463                }
17464                Self::UUPSUnauthorizedCallContext(inner) => {
17465                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
17466                        inner,
17467                        out,
17468                    )
17469                }
17470                Self::UUPSUnsupportedProxiableUUID(inner) => {
17471                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
17472                        inner,
17473                        out,
17474                    )
17475                }
17476                Self::WrongStakeTableUsed(inner) => {
17477                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
17478                        inner,
17479                        out,
17480                    )
17481                }
17482            }
17483        }
17484    }
17485    ///Container for all the [`LightClientV2Mock`](self) events.
17486    #[derive(serde::Serialize, serde::Deserialize)]
17487    #[derive(Debug, PartialEq, Eq, Hash)]
17488    pub enum LightClientV2MockEvents {
17489        #[allow(missing_docs)]
17490        Initialized(Initialized),
17491        #[allow(missing_docs)]
17492        NewEpoch(NewEpoch),
17493        #[allow(missing_docs)]
17494        NewState(NewState),
17495        #[allow(missing_docs)]
17496        OwnershipTransferred(OwnershipTransferred),
17497        #[allow(missing_docs)]
17498        PermissionedProverNotRequired(PermissionedProverNotRequired),
17499        #[allow(missing_docs)]
17500        PermissionedProverRequired(PermissionedProverRequired),
17501        #[allow(missing_docs)]
17502        Upgrade(Upgrade),
17503        #[allow(missing_docs)]
17504        Upgraded(Upgraded),
17505    }
17506    #[automatically_derived]
17507    impl LightClientV2MockEvents {
17508        /// All the selectors of this enum.
17509        ///
17510        /// Note that the selectors might not be in the same order as the variants.
17511        /// No guarantees are made about the order of the selectors.
17512        ///
17513        /// Prefer using `SolInterface` methods instead.
17514        pub const SELECTORS: &'static [[u8; 32usize]] = &[
17515            [
17516                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
17517                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
17518                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
17519            ],
17520            [
17521                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
17522                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
17523                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
17524            ],
17525            [
17526                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
17527                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
17528                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
17529            ],
17530            [
17531                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
17532                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
17533                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
17534            ],
17535            [
17536                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
17537                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
17538                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
17539            ],
17540            [
17541                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
17542                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
17543                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
17544            ],
17545            [
17546                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
17547                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
17548                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
17549            ],
17550            [
17551                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
17552                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
17553                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
17554            ],
17555        ];
17556    }
17557    #[automatically_derived]
17558    impl alloy_sol_types::SolEventInterface for LightClientV2MockEvents {
17559        const NAME: &'static str = "LightClientV2MockEvents";
17560        const COUNT: usize = 8usize;
17561        fn decode_raw_log(
17562            topics: &[alloy_sol_types::Word],
17563            data: &[u8],
17564        ) -> alloy_sol_types::Result<Self> {
17565            match topics.first().copied() {
17566                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17567                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
17568                            topics,
17569                            data,
17570                        )
17571                        .map(Self::Initialized)
17572                }
17573                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17574                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17575                        .map(Self::NewEpoch)
17576                }
17577                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17578                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17579                        .map(Self::NewState)
17580                }
17581                Some(
17582                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17583                ) => {
17584                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
17585                            topics,
17586                            data,
17587                        )
17588                        .map(Self::OwnershipTransferred)
17589                }
17590                Some(
17591                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17592                ) => {
17593                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
17594                            topics,
17595                            data,
17596                        )
17597                        .map(Self::PermissionedProverNotRequired)
17598                }
17599                Some(
17600                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17601                ) => {
17602                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
17603                            topics,
17604                            data,
17605                        )
17606                        .map(Self::PermissionedProverRequired)
17607                }
17608                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17609                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17610                        .map(Self::Upgrade)
17611                }
17612                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17613                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17614                        .map(Self::Upgraded)
17615                }
17616                _ => {
17617                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
17618                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
17619                        log: alloy_sol_types::private::Box::new(
17620                            alloy_sol_types::private::LogData::new_unchecked(
17621                                topics.to_vec(),
17622                                data.to_vec().into(),
17623                            ),
17624                        ),
17625                    })
17626                }
17627            }
17628        }
17629    }
17630    #[automatically_derived]
17631    impl alloy_sol_types::private::IntoLogData for LightClientV2MockEvents {
17632        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
17633            match self {
17634                Self::Initialized(inner) => {
17635                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17636                }
17637                Self::NewEpoch(inner) => {
17638                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17639                }
17640                Self::NewState(inner) => {
17641                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17642                }
17643                Self::OwnershipTransferred(inner) => {
17644                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17645                }
17646                Self::PermissionedProverNotRequired(inner) => {
17647                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17648                }
17649                Self::PermissionedProverRequired(inner) => {
17650                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17651                }
17652                Self::Upgrade(inner) => {
17653                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17654                }
17655                Self::Upgraded(inner) => {
17656                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17657                }
17658            }
17659        }
17660        fn into_log_data(self) -> alloy_sol_types::private::LogData {
17661            match self {
17662                Self::Initialized(inner) => {
17663                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17664                }
17665                Self::NewEpoch(inner) => {
17666                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17667                }
17668                Self::NewState(inner) => {
17669                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17670                }
17671                Self::OwnershipTransferred(inner) => {
17672                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17673                }
17674                Self::PermissionedProverNotRequired(inner) => {
17675                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17676                }
17677                Self::PermissionedProverRequired(inner) => {
17678                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17679                }
17680                Self::Upgrade(inner) => {
17681                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17682                }
17683                Self::Upgraded(inner) => {
17684                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17685                }
17686            }
17687        }
17688    }
17689    use alloy::contract as alloy_contract;
17690    /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
17691
17692See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
17693    #[inline]
17694    pub const fn new<
17695        P: alloy_contract::private::Provider<N>,
17696        N: alloy_contract::private::Network,
17697    >(
17698        address: alloy_sol_types::private::Address,
17699        __provider: P,
17700    ) -> LightClientV2MockInstance<P, N> {
17701        LightClientV2MockInstance::<P, N>::new(address, __provider)
17702    }
17703    /**Deploys this contract using the given `provider` and constructor arguments, if any.
17704
17705Returns a new instance of the contract, if the deployment was successful.
17706
17707For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17708    #[inline]
17709    pub fn deploy<
17710        P: alloy_contract::private::Provider<N>,
17711        N: alloy_contract::private::Network,
17712    >(
17713        __provider: P,
17714    ) -> impl ::core::future::Future<
17715        Output = alloy_contract::Result<LightClientV2MockInstance<P, N>>,
17716    > {
17717        LightClientV2MockInstance::<P, N>::deploy(__provider)
17718    }
17719    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17720and constructor arguments, if any.
17721
17722This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17723the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17724    #[inline]
17725    pub fn deploy_builder<
17726        P: alloy_contract::private::Provider<N>,
17727        N: alloy_contract::private::Network,
17728    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17729        LightClientV2MockInstance::<P, N>::deploy_builder(__provider)
17730    }
17731    /**A [`LightClientV2Mock`](self) instance.
17732
17733Contains type-safe methods for interacting with an on-chain instance of the
17734[`LightClientV2Mock`](self) contract located at a given `address`, using a given
17735provider `P`.
17736
17737If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
17738documentation on how to provide it), the `deploy` and `deploy_builder` methods can
17739be used to deploy a new instance of the contract.
17740
17741See the [module-level documentation](self) for all the available methods.*/
17742    #[derive(Clone)]
17743    pub struct LightClientV2MockInstance<P, N = alloy_contract::private::Ethereum> {
17744        address: alloy_sol_types::private::Address,
17745        provider: P,
17746        _network: ::core::marker::PhantomData<N>,
17747    }
17748    #[automatically_derived]
17749    impl<P, N> ::core::fmt::Debug for LightClientV2MockInstance<P, N> {
17750        #[inline]
17751        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
17752            f.debug_tuple("LightClientV2MockInstance").field(&self.address).finish()
17753        }
17754    }
17755    /// Instantiation and getters/setters.
17756    #[automatically_derived]
17757    impl<
17758        P: alloy_contract::private::Provider<N>,
17759        N: alloy_contract::private::Network,
17760    > LightClientV2MockInstance<P, N> {
17761        /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
17762
17763See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
17764        #[inline]
17765        pub const fn new(
17766            address: alloy_sol_types::private::Address,
17767            __provider: P,
17768        ) -> Self {
17769            Self {
17770                address,
17771                provider: __provider,
17772                _network: ::core::marker::PhantomData,
17773            }
17774        }
17775        /**Deploys this contract using the given `provider` and constructor arguments, if any.
17776
17777Returns a new instance of the contract, if the deployment was successful.
17778
17779For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17780        #[inline]
17781        pub async fn deploy(
17782            __provider: P,
17783        ) -> alloy_contract::Result<LightClientV2MockInstance<P, N>> {
17784            let call_builder = Self::deploy_builder(__provider);
17785            let contract_address = call_builder.deploy().await?;
17786            Ok(Self::new(contract_address, call_builder.provider))
17787        }
17788        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17789and constructor arguments, if any.
17790
17791This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17792the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17793        #[inline]
17794        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17795            alloy_contract::RawCallBuilder::new_raw_deploy(
17796                __provider,
17797                ::core::clone::Clone::clone(&BYTECODE),
17798            )
17799        }
17800        /// Returns a reference to the address.
17801        #[inline]
17802        pub const fn address(&self) -> &alloy_sol_types::private::Address {
17803            &self.address
17804        }
17805        /// Sets the address.
17806        #[inline]
17807        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
17808            self.address = address;
17809        }
17810        /// Sets the address and returns `self`.
17811        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
17812            self.set_address(address);
17813            self
17814        }
17815        /// Returns a reference to the provider.
17816        #[inline]
17817        pub const fn provider(&self) -> &P {
17818            &self.provider
17819        }
17820    }
17821    impl<P: ::core::clone::Clone, N> LightClientV2MockInstance<&P, N> {
17822        /// Clones the provider and returns a new instance with the cloned provider.
17823        #[inline]
17824        pub fn with_cloned_provider(self) -> LightClientV2MockInstance<P, N> {
17825            LightClientV2MockInstance {
17826                address: self.address,
17827                provider: ::core::clone::Clone::clone(&self.provider),
17828                _network: ::core::marker::PhantomData,
17829            }
17830        }
17831    }
17832    /// Function calls.
17833    #[automatically_derived]
17834    impl<
17835        P: alloy_contract::private::Provider<N>,
17836        N: alloy_contract::private::Network,
17837    > LightClientV2MockInstance<P, N> {
17838        /// Creates a new call builder using this contract instance's provider and address.
17839        ///
17840        /// Note that the call can be any function call, not just those defined in this
17841        /// contract. Prefer using the other methods for building type-safe contract calls.
17842        pub fn call_builder<C: alloy_sol_types::SolCall>(
17843            &self,
17844            call: &C,
17845        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
17846            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
17847        }
17848        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
17849        pub fn UPGRADE_INTERFACE_VERSION(
17850            &self,
17851        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
17852            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
17853        }
17854        ///Creates a new call builder for the [`_getVk`] function.
17855        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
17856            self.call_builder(&_getVkCall)
17857        }
17858        ///Creates a new call builder for the [`blocksPerEpoch`] function.
17859        pub fn blocksPerEpoch(
17860            &self,
17861        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
17862            self.call_builder(&blocksPerEpochCall)
17863        }
17864        ///Creates a new call builder for the [`currentBlockNumber`] function.
17865        pub fn currentBlockNumber(
17866            &self,
17867        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
17868            self.call_builder(&currentBlockNumberCall)
17869        }
17870        ///Creates a new call builder for the [`currentEpoch`] function.
17871        pub fn currentEpoch(
17872            &self,
17873        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
17874            self.call_builder(&currentEpochCall)
17875        }
17876        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
17877        pub fn disablePermissionedProverMode(
17878            &self,
17879        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
17880            self.call_builder(&disablePermissionedProverModeCall)
17881        }
17882        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
17883        pub fn epochFromBlockNumber(
17884            &self,
17885            _blockNum: u64,
17886            _blocksPerEpoch: u64,
17887        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
17888            self.call_builder(
17889                &epochFromBlockNumberCall {
17890                    _blockNum,
17891                    _blocksPerEpoch,
17892                },
17893            )
17894        }
17895        ///Creates a new call builder for the [`epochStartBlock`] function.
17896        pub fn epochStartBlock(
17897            &self,
17898        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
17899            self.call_builder(&epochStartBlockCall)
17900        }
17901        ///Creates a new call builder for the [`finalizedState`] function.
17902        pub fn finalizedState(
17903            &self,
17904        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
17905            self.call_builder(&finalizedStateCall)
17906        }
17907        ///Creates a new call builder for the [`genesisStakeTableState`] function.
17908        pub fn genesisStakeTableState(
17909            &self,
17910        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
17911            self.call_builder(&genesisStakeTableStateCall)
17912        }
17913        ///Creates a new call builder for the [`genesisState`] function.
17914        pub fn genesisState(
17915            &self,
17916        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
17917            self.call_builder(&genesisStateCall)
17918        }
17919        ///Creates a new call builder for the [`getFirstEpoch`] function.
17920        pub fn getFirstEpoch(
17921            &self,
17922        ) -> alloy_contract::SolCallBuilder<&P, getFirstEpochCall, N> {
17923            self.call_builder(&getFirstEpochCall)
17924        }
17925        ///Creates a new call builder for the [`getHotShotCommitment`] function.
17926        pub fn getHotShotCommitment(
17927            &self,
17928            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
17929        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
17930            self.call_builder(
17931                &getHotShotCommitmentCall {
17932                    hotShotBlockHeight,
17933                },
17934            )
17935        }
17936        ///Creates a new call builder for the [`getStateHistoryCount`] function.
17937        pub fn getStateHistoryCount(
17938            &self,
17939        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
17940            self.call_builder(&getStateHistoryCountCall)
17941        }
17942        ///Creates a new call builder for the [`getVersion`] function.
17943        pub fn getVersion(
17944            &self,
17945        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
17946            self.call_builder(&getVersionCall)
17947        }
17948        ///Creates a new call builder for the [`initialize`] function.
17949        pub fn initialize(
17950            &self,
17951            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17952            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17953            _stateHistoryRetentionPeriod: u32,
17954            owner: alloy::sol_types::private::Address,
17955        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
17956            self.call_builder(
17957                &initializeCall {
17958                    _genesis,
17959                    _genesisStakeTableState,
17960                    _stateHistoryRetentionPeriod,
17961                    owner,
17962                },
17963            )
17964        }
17965        ///Creates a new call builder for the [`initializeV2`] function.
17966        pub fn initializeV2(
17967            &self,
17968            _blocksPerEpoch: u64,
17969            _epochStartBlock: u64,
17970        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
17971            self.call_builder(
17972                &initializeV2Call {
17973                    _blocksPerEpoch,
17974                    _epochStartBlock,
17975                },
17976            )
17977        }
17978        ///Creates a new call builder for the [`isEpochRoot`] function.
17979        pub fn isEpochRoot(
17980            &self,
17981            blockHeight: u64,
17982        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
17983            self.call_builder(&isEpochRootCall { blockHeight })
17984        }
17985        ///Creates a new call builder for the [`isGtEpochRoot`] function.
17986        pub fn isGtEpochRoot(
17987            &self,
17988            blockHeight: u64,
17989        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
17990            self.call_builder(&isGtEpochRootCall { blockHeight })
17991        }
17992        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
17993        pub fn isPermissionedProverEnabled(
17994            &self,
17995        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
17996            self.call_builder(&isPermissionedProverEnabledCall)
17997        }
17998        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
17999        pub fn lagOverEscapeHatchThreshold(
18000            &self,
18001            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
18002            threshold: alloy::sol_types::private::primitives::aliases::U256,
18003        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
18004            self.call_builder(
18005                &lagOverEscapeHatchThresholdCall {
18006                    blockNumber,
18007                    threshold,
18008                },
18009            )
18010        }
18011        ///Creates a new call builder for the [`newFinalizedState_0`] function.
18012        pub fn newFinalizedState_0(
18013            &self,
18014            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18015            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18016        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
18017            self.call_builder(&newFinalizedState_0Call { _0, _1 })
18018        }
18019        ///Creates a new call builder for the [`newFinalizedState_1`] function.
18020        pub fn newFinalizedState_1(
18021            &self,
18022            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18023            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18024            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18025        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
18026            self.call_builder(
18027                &newFinalizedState_1Call {
18028                    newState,
18029                    nextStakeTable,
18030                    proof,
18031                },
18032            )
18033        }
18034        ///Creates a new call builder for the [`owner`] function.
18035        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
18036            self.call_builder(&ownerCall)
18037        }
18038        ///Creates a new call builder for the [`permissionedProver`] function.
18039        pub fn permissionedProver(
18040            &self,
18041        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
18042            self.call_builder(&permissionedProverCall)
18043        }
18044        ///Creates a new call builder for the [`proxiableUUID`] function.
18045        pub fn proxiableUUID(
18046            &self,
18047        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
18048            self.call_builder(&proxiableUUIDCall)
18049        }
18050        ///Creates a new call builder for the [`renounceOwnership`] function.
18051        pub fn renounceOwnership(
18052            &self,
18053        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
18054            self.call_builder(&renounceOwnershipCall)
18055        }
18056        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
18057        pub fn setBlocksPerEpoch(
18058            &self,
18059            newBlocksPerEpoch: u64,
18060        ) -> alloy_contract::SolCallBuilder<&P, setBlocksPerEpochCall, N> {
18061            self.call_builder(
18062                &setBlocksPerEpochCall {
18063                    newBlocksPerEpoch,
18064                },
18065            )
18066        }
18067        ///Creates a new call builder for the [`setFinalizedState`] function.
18068        pub fn setFinalizedState(
18069            &self,
18070            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18071        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
18072            self.call_builder(&setFinalizedStateCall { state })
18073        }
18074        ///Creates a new call builder for the [`setHotShotDownSince`] function.
18075        pub fn setHotShotDownSince(
18076            &self,
18077            l1Height: alloy::sol_types::private::primitives::aliases::U256,
18078        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
18079            self.call_builder(
18080                &setHotShotDownSinceCall {
18081                    l1Height,
18082                },
18083            )
18084        }
18085        ///Creates a new call builder for the [`setHotShotUp`] function.
18086        pub fn setHotShotUp(
18087            &self,
18088        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
18089            self.call_builder(&setHotShotUpCall)
18090        }
18091        ///Creates a new call builder for the [`setPermissionedProver`] function.
18092        pub fn setPermissionedProver(
18093            &self,
18094            prover: alloy::sol_types::private::Address,
18095        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
18096            self.call_builder(
18097                &setPermissionedProverCall {
18098                    prover,
18099                },
18100            )
18101        }
18102        ///Creates a new call builder for the [`setStateHistory`] function.
18103        pub fn setStateHistory(
18104            &self,
18105            _stateHistoryCommitments: alloy::sol_types::private::Vec<
18106                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
18107            >,
18108        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
18109            self.call_builder(
18110                &setStateHistoryCall {
18111                    _stateHistoryCommitments,
18112                },
18113            )
18114        }
18115        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
18116        pub fn setStateHistoryRetentionPeriod(
18117            &self,
18118            historySeconds: u32,
18119        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
18120            self.call_builder(
18121                &setStateHistoryRetentionPeriodCall {
18122                    historySeconds,
18123                },
18124            )
18125        }
18126        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
18127        pub fn setVotingStakeTableState(
18128            &self,
18129            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18130        ) -> alloy_contract::SolCallBuilder<&P, setVotingStakeTableStateCall, N> {
18131            self.call_builder(
18132                &setVotingStakeTableStateCall {
18133                    stake,
18134                },
18135            )
18136        }
18137        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
18138        pub fn setstateHistoryRetentionPeriod(
18139            &self,
18140            historySeconds: u32,
18141        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
18142            self.call_builder(
18143                &setstateHistoryRetentionPeriodCall {
18144                    historySeconds,
18145                },
18146            )
18147        }
18148        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
18149        pub fn stateHistoryCommitments(
18150            &self,
18151            _0: alloy::sol_types::private::primitives::aliases::U256,
18152        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
18153            self.call_builder(&stateHistoryCommitmentsCall(_0))
18154        }
18155        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
18156        pub fn stateHistoryFirstIndex(
18157            &self,
18158        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
18159            self.call_builder(&stateHistoryFirstIndexCall)
18160        }
18161        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
18162        pub fn stateHistoryRetentionPeriod(
18163            &self,
18164        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
18165            self.call_builder(&stateHistoryRetentionPeriodCall)
18166        }
18167        ///Creates a new call builder for the [`transferOwnership`] function.
18168        pub fn transferOwnership(
18169            &self,
18170            newOwner: alloy::sol_types::private::Address,
18171        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
18172            self.call_builder(&transferOwnershipCall { newOwner })
18173        }
18174        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
18175        pub fn updateEpochStartBlock(
18176            &self,
18177            newEpochStartBlock: u64,
18178        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
18179            self.call_builder(
18180                &updateEpochStartBlockCall {
18181                    newEpochStartBlock,
18182                },
18183            )
18184        }
18185        ///Creates a new call builder for the [`upgradeToAndCall`] function.
18186        pub fn upgradeToAndCall(
18187            &self,
18188            newImplementation: alloy::sol_types::private::Address,
18189            data: alloy::sol_types::private::Bytes,
18190        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
18191            self.call_builder(
18192                &upgradeToAndCallCall {
18193                    newImplementation,
18194                    data,
18195                },
18196            )
18197        }
18198        ///Creates a new call builder for the [`votingStakeTableState`] function.
18199        pub fn votingStakeTableState(
18200            &self,
18201        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
18202            self.call_builder(&votingStakeTableStateCall)
18203        }
18204    }
18205    /// Event filters.
18206    #[automatically_derived]
18207    impl<
18208        P: alloy_contract::private::Provider<N>,
18209        N: alloy_contract::private::Network,
18210    > LightClientV2MockInstance<P, N> {
18211        /// Creates a new event filter using this contract instance's provider and address.
18212        ///
18213        /// Note that the type can be any event, not just those defined in this contract.
18214        /// Prefer using the other methods for building type-safe event filters.
18215        pub fn event_filter<E: alloy_sol_types::SolEvent>(
18216            &self,
18217        ) -> alloy_contract::Event<&P, E, N> {
18218            alloy_contract::Event::new_sol(&self.provider, &self.address)
18219        }
18220        ///Creates a new event filter for the [`Initialized`] event.
18221        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
18222            self.event_filter::<Initialized>()
18223        }
18224        ///Creates a new event filter for the [`NewEpoch`] event.
18225        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
18226            self.event_filter::<NewEpoch>()
18227        }
18228        ///Creates a new event filter for the [`NewState`] event.
18229        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
18230            self.event_filter::<NewState>()
18231        }
18232        ///Creates a new event filter for the [`OwnershipTransferred`] event.
18233        pub fn OwnershipTransferred_filter(
18234            &self,
18235        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
18236            self.event_filter::<OwnershipTransferred>()
18237        }
18238        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
18239        pub fn PermissionedProverNotRequired_filter(
18240            &self,
18241        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
18242            self.event_filter::<PermissionedProverNotRequired>()
18243        }
18244        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
18245        pub fn PermissionedProverRequired_filter(
18246            &self,
18247        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
18248            self.event_filter::<PermissionedProverRequired>()
18249        }
18250        ///Creates a new event filter for the [`Upgrade`] event.
18251        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
18252            self.event_filter::<Upgrade>()
18253        }
18254        ///Creates a new event filter for the [`Upgraded`] event.
18255        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
18256            self.event_filter::<Upgraded>()
18257        }
18258    }
18259}