hotshot_contract_adapter/bindings/
light_client_v3_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        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
170    const _: () = {
171        use alloy::sol_types as alloy_sol_types;
172        #[automatically_derived]
173        impl alloy_sol_types::private::SolTypeValue<ScalarField>
174        for alloy::sol_types::private::primitives::aliases::U256 {
175            #[inline]
176            fn stv_to_tokens(
177                &self,
178            ) -> <alloy::sol_types::sol_data::Uint<
179                256,
180            > as alloy_sol_types::SolType>::Token<'_> {
181                alloy_sol_types::private::SolTypeValue::<
182                    alloy::sol_types::sol_data::Uint<256>,
183                >::stv_to_tokens(self)
184            }
185            #[inline]
186            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
187                <alloy::sol_types::sol_data::Uint<
188                    256,
189                > as alloy_sol_types::SolType>::tokenize(self)
190                    .0
191            }
192            #[inline]
193            fn stv_abi_encode_packed_to(
194                &self,
195                out: &mut alloy_sol_types::private::Vec<u8>,
196            ) {
197                <alloy::sol_types::sol_data::Uint<
198                    256,
199                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
200            }
201            #[inline]
202            fn stv_abi_packed_encoded_size(&self) -> usize {
203                <alloy::sol_types::sol_data::Uint<
204                    256,
205                > as alloy_sol_types::SolType>::abi_encoded_size(self)
206            }
207        }
208        impl ScalarField {
209            /// The Solidity type name.
210            pub const NAME: &'static str = stringify!(@ name);
211            /// Convert from the underlying value type.
212            #[inline]
213            pub const fn from_underlying(
214                value: alloy::sol_types::private::primitives::aliases::U256,
215            ) -> Self {
216                Self(value)
217            }
218            /// Return the underlying value.
219            #[inline]
220            pub const fn into_underlying(
221                self,
222            ) -> alloy::sol_types::private::primitives::aliases::U256 {
223                self.0
224            }
225            /// Return the single encoding of this value, delegating to the
226            /// underlying type.
227            #[inline]
228            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
229                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
230            }
231            /// Return the packed encoding of this value, delegating to the
232            /// underlying type.
233            #[inline]
234            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
235                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
236            }
237        }
238        #[automatically_derived]
239        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
240            fn from(
241                value: alloy::sol_types::private::primitives::aliases::U256,
242            ) -> Self {
243                Self::from_underlying(value)
244            }
245        }
246        #[automatically_derived]
247        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
248            fn from(value: ScalarField) -> Self {
249                value.into_underlying()
250            }
251        }
252        #[automatically_derived]
253        impl alloy_sol_types::SolType for ScalarField {
254            type RustType = alloy::sol_types::private::primitives::aliases::U256;
255            type Token<'a> = <alloy::sol_types::sol_data::Uint<
256                256,
257            > as alloy_sol_types::SolType>::Token<'a>;
258            const SOL_NAME: &'static str = Self::NAME;
259            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
260                256,
261            > as alloy_sol_types::SolType>::ENCODED_SIZE;
262            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
263                256,
264            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
265            #[inline]
266            fn valid_token(token: &Self::Token<'_>) -> bool {
267                Self::type_check(token).is_ok()
268            }
269            #[inline]
270            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
271                <alloy::sol_types::sol_data::Uint<
272                    256,
273                > as alloy_sol_types::SolType>::type_check(token)
274            }
275            #[inline]
276            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
277                <alloy::sol_types::sol_data::Uint<
278                    256,
279                > as alloy_sol_types::SolType>::detokenize(token)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::EventTopic for ScalarField {
284            #[inline]
285            fn topic_preimage_length(rust: &Self::RustType) -> usize {
286                <alloy::sol_types::sol_data::Uint<
287                    256,
288                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
289            }
290            #[inline]
291            fn encode_topic_preimage(
292                rust: &Self::RustType,
293                out: &mut alloy_sol_types::private::Vec<u8>,
294            ) {
295                <alloy::sol_types::sol_data::Uint<
296                    256,
297                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
298            }
299            #[inline]
300            fn encode_topic(
301                rust: &Self::RustType,
302            ) -> alloy_sol_types::abi::token::WordToken {
303                <alloy::sol_types::sol_data::Uint<
304                    256,
305                > as alloy_sol_types::EventTopic>::encode_topic(rust)
306            }
307        }
308    };
309    #[derive(serde::Serialize, serde::Deserialize)]
310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
311    /**```solidity
312struct G1Point { BaseField x; BaseField y; }
313```*/
314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
315    #[derive(Clone)]
316    pub struct G1Point {
317        #[allow(missing_docs)]
318        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
321    }
322    #[allow(
323        non_camel_case_types,
324        non_snake_case,
325        clippy::pub_underscore_fields,
326        clippy::style
327    )]
328    const _: () = {
329        use alloy::sol_types as alloy_sol_types;
330        #[doc(hidden)]
331        #[allow(dead_code)]
332        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            <BaseField as alloy::sol_types::SolType>::RustType,
336            <BaseField as alloy::sol_types::SolType>::RustType,
337        );
338        #[cfg(test)]
339        #[allow(dead_code, unreachable_patterns)]
340        fn _type_assertion(
341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
342        ) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
352            fn from(value: G1Point) -> Self {
353                (value.x, value.y)
354            }
355        }
356        #[automatically_derived]
357        #[doc(hidden)]
358        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
359            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
360                Self { x: tuple.0, y: tuple.1 }
361            }
362        }
363        #[automatically_derived]
364        impl alloy_sol_types::SolValue for G1Point {
365            type SolType = Self;
366        }
367        #[automatically_derived]
368        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
369            #[inline]
370            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
371                (
372                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
374                )
375            }
376            #[inline]
377            fn stv_abi_encoded_size(&self) -> usize {
378                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
379                    return size;
380                }
381                let tuple = <UnderlyingRustTuple<
382                    '_,
383                > as ::core::convert::From<Self>>::from(self.clone());
384                <UnderlyingSolTuple<
385                    '_,
386                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
387            }
388            #[inline]
389            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
390                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
391            }
392            #[inline]
393            fn stv_abi_encode_packed_to(
394                &self,
395                out: &mut alloy_sol_types::private::Vec<u8>,
396            ) {
397                let tuple = <UnderlyingRustTuple<
398                    '_,
399                > as ::core::convert::From<Self>>::from(self.clone());
400                <UnderlyingSolTuple<
401                    '_,
402                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
403            }
404            #[inline]
405            fn stv_abi_packed_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G1Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<
421                'a,
422            > as alloy_sol_types::SolType>::Token<'a>;
423            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
424            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
425                '_,
426            > as alloy_sol_types::SolType>::ENCODED_SIZE;
427            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
428                '_,
429            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
430            #[inline]
431            fn valid_token(token: &Self::Token<'_>) -> bool {
432                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
433            }
434            #[inline]
435            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
436                let tuple = <UnderlyingSolTuple<
437                    '_,
438                > as alloy_sol_types::SolType>::detokenize(token);
439                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
440            }
441        }
442        #[automatically_derived]
443        impl alloy_sol_types::SolStruct for G1Point {
444            const NAME: &'static str = "G1Point";
445            #[inline]
446            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
447                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
448            }
449            #[inline]
450            fn eip712_components() -> alloy_sol_types::private::Vec<
451                alloy_sol_types::private::Cow<'static, str>,
452            > {
453                alloy_sol_types::private::Vec::new()
454            }
455            #[inline]
456            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
457                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
458            }
459            #[inline]
460            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
461                [
462                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
464                ]
465                    .concat()
466            }
467        }
468        #[automatically_derived]
469        impl alloy_sol_types::EventTopic for G1Point {
470            #[inline]
471            fn topic_preimage_length(rust: &Self::RustType) -> usize {
472                0usize
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
474                        &rust.x,
475                    )
476                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
477                        &rust.y,
478                    )
479            }
480            #[inline]
481            fn encode_topic_preimage(
482                rust: &Self::RustType,
483                out: &mut alloy_sol_types::private::Vec<u8>,
484            ) {
485                out.reserve(
486                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
487                );
488                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    &rust.x,
490                    out,
491                );
492                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
493                    &rust.y,
494                    out,
495                );
496            }
497            #[inline]
498            fn encode_topic(
499                rust: &Self::RustType,
500            ) -> alloy_sol_types::abi::token::WordToken {
501                let mut out = alloy_sol_types::private::Vec::new();
502                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
503                    rust,
504                    &mut out,
505                );
506                alloy_sol_types::abi::token::WordToken(
507                    alloy_sol_types::private::keccak256(out),
508                )
509            }
510        }
511    };
512    use alloy::contract as alloy_contract;
513    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
514
515See the [wrapper's documentation](`BN254Instance`) for more details.*/
516    #[inline]
517    pub const fn new<
518        P: alloy_contract::private::Provider<N>,
519        N: alloy_contract::private::Network,
520    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
521        BN254Instance::<P, N>::new(address, __provider)
522    }
523    /**A [`BN254`](self) instance.
524
525Contains type-safe methods for interacting with an on-chain instance of the
526[`BN254`](self) contract located at a given `address`, using a given
527provider `P`.
528
529If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
530documentation on how to provide it), the `deploy` and `deploy_builder` methods can
531be used to deploy a new instance of the contract.
532
533See the [module-level documentation](self) for all the available methods.*/
534    #[derive(Clone)]
535    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
536        address: alloy_sol_types::private::Address,
537        provider: P,
538        _network: ::core::marker::PhantomData<N>,
539    }
540    #[automatically_derived]
541    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
542        #[inline]
543        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
544            f.debug_tuple("BN254Instance").field(&self.address).finish()
545        }
546    }
547    /// Instantiation and getters/setters.
548    impl<
549        P: alloy_contract::private::Provider<N>,
550        N: alloy_contract::private::Network,
551    > BN254Instance<P, N> {
552        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
553
554See the [wrapper's documentation](`BN254Instance`) for more details.*/
555        #[inline]
556        pub const fn new(
557            address: alloy_sol_types::private::Address,
558            __provider: P,
559        ) -> Self {
560            Self {
561                address,
562                provider: __provider,
563                _network: ::core::marker::PhantomData,
564            }
565        }
566        /// Returns a reference to the address.
567        #[inline]
568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
569            &self.address
570        }
571        /// Sets the address.
572        #[inline]
573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
574            self.address = address;
575        }
576        /// Sets the address and returns `self`.
577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
578            self.set_address(address);
579            self
580        }
581        /// Returns a reference to the provider.
582        #[inline]
583        pub const fn provider(&self) -> &P {
584            &self.provider
585        }
586    }
587    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
588        /// Clones the provider and returns a new instance with the cloned provider.
589        #[inline]
590        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
591            BN254Instance {
592                address: self.address,
593                provider: ::core::clone::Clone::clone(&self.provider),
594                _network: ::core::marker::PhantomData,
595            }
596        }
597    }
598    /// Function calls.
599    impl<
600        P: alloy_contract::private::Provider<N>,
601        N: alloy_contract::private::Network,
602    > BN254Instance<P, N> {
603        /// Creates a new call builder using this contract instance's provider and address.
604        ///
605        /// Note that the call can be any function call, not just those defined in this
606        /// contract. Prefer using the other methods for building type-safe contract calls.
607        pub fn call_builder<C: alloy_sol_types::SolCall>(
608            &self,
609            call: &C,
610        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
611            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
612        }
613    }
614    /// Event filters.
615    impl<
616        P: alloy_contract::private::Provider<N>,
617        N: alloy_contract::private::Network,
618    > BN254Instance<P, N> {
619        /// Creates a new event filter using this contract instance's provider and address.
620        ///
621        /// Note that the type can be any event, not just those defined in this contract.
622        /// Prefer using the other methods for building type-safe event filters.
623        pub fn event_filter<E: alloy_sol_types::SolEvent>(
624            &self,
625        ) -> alloy_contract::Event<&P, E, N> {
626            alloy_contract::Event::new_sol(&self.provider, &self.address)
627        }
628    }
629}
630///Module containing a contract's types and functions.
631/**
632
633```solidity
634library IPlonkVerifier {
635    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; }
636    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; }
637}
638```*/
639#[allow(
640    non_camel_case_types,
641    non_snake_case,
642    clippy::pub_underscore_fields,
643    clippy::style,
644    clippy::empty_structs_with_brackets
645)]
646pub mod IPlonkVerifier {
647    use super::*;
648    use alloy::sol_types as alloy_sol_types;
649    #[derive(serde::Serialize, serde::Deserialize)]
650    #[derive()]
651    /**```solidity
652struct 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; }
653```*/
654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
655    #[derive(Clone)]
656    pub struct PlonkProof {
657        #[allow(missing_docs)]
658        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
659        #[allow(missing_docs)]
660        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
661        #[allow(missing_docs)]
662        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703    }
704    #[allow(
705        non_camel_case_types,
706        non_snake_case,
707        clippy::pub_underscore_fields,
708        clippy::style
709    )]
710    const _: () = {
711        use alloy::sol_types as alloy_sol_types;
712        #[doc(hidden)]
713        #[allow(dead_code)]
714        type UnderlyingSolTuple<'a> = (
715            BN254::G1Point,
716            BN254::G1Point,
717            BN254::G1Point,
718            BN254::G1Point,
719            BN254::G1Point,
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::ScalarField,
729            BN254::ScalarField,
730            BN254::ScalarField,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738        );
739        #[doc(hidden)]
740        type UnderlyingRustTuple<'a> = (
741            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
742            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
743            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
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::ScalarField as alloy::sol_types::SolType>::RustType,
755            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
756            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField 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        );
765        #[cfg(test)]
766        #[allow(dead_code, unreachable_patterns)]
767        fn _type_assertion(
768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
769        ) {
770            match _t {
771                alloy_sol_types::private::AssertTypeEq::<
772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
773                >(_) => {}
774            }
775        }
776        #[automatically_derived]
777        #[doc(hidden)]
778        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
779            fn from(value: PlonkProof) -> Self {
780                (
781                    value.wire0,
782                    value.wire1,
783                    value.wire2,
784                    value.wire3,
785                    value.wire4,
786                    value.prodPerm,
787                    value.split0,
788                    value.split1,
789                    value.split2,
790                    value.split3,
791                    value.split4,
792                    value.zeta,
793                    value.zetaOmega,
794                    value.wireEval0,
795                    value.wireEval1,
796                    value.wireEval2,
797                    value.wireEval3,
798                    value.wireEval4,
799                    value.sigmaEval0,
800                    value.sigmaEval1,
801                    value.sigmaEval2,
802                    value.sigmaEval3,
803                    value.prodPermZetaOmegaEval,
804                )
805            }
806        }
807        #[automatically_derived]
808        #[doc(hidden)]
809        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
811                Self {
812                    wire0: tuple.0,
813                    wire1: tuple.1,
814                    wire2: tuple.2,
815                    wire3: tuple.3,
816                    wire4: tuple.4,
817                    prodPerm: tuple.5,
818                    split0: tuple.6,
819                    split1: tuple.7,
820                    split2: tuple.8,
821                    split3: tuple.9,
822                    split4: tuple.10,
823                    zeta: tuple.11,
824                    zetaOmega: tuple.12,
825                    wireEval0: tuple.13,
826                    wireEval1: tuple.14,
827                    wireEval2: tuple.15,
828                    wireEval3: tuple.16,
829                    wireEval4: tuple.17,
830                    sigmaEval0: tuple.18,
831                    sigmaEval1: tuple.19,
832                    sigmaEval2: tuple.20,
833                    sigmaEval3: tuple.21,
834                    prodPermZetaOmegaEval: tuple.22,
835                }
836            }
837        }
838        #[automatically_derived]
839        impl alloy_sol_types::SolValue for PlonkProof {
840            type SolType = Self;
841        }
842        #[automatically_derived]
843        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
844            #[inline]
845            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
846                (
847                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
848                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
849                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
853                        &self.prodPerm,
854                    ),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
862                        &self.zetaOmega,
863                    ),
864                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
865                        &self.wireEval0,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval1,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval2,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval3,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval4,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.sigmaEval0,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval1,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval2,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval3,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.prodPermZetaOmegaEval,
893                    ),
894                )
895            }
896            #[inline]
897            fn stv_abi_encoded_size(&self) -> usize {
898                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
899                    return size;
900                }
901                let tuple = <UnderlyingRustTuple<
902                    '_,
903                > as ::core::convert::From<Self>>::from(self.clone());
904                <UnderlyingSolTuple<
905                    '_,
906                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
907            }
908            #[inline]
909            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
910                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
911            }
912            #[inline]
913            fn stv_abi_encode_packed_to(
914                &self,
915                out: &mut alloy_sol_types::private::Vec<u8>,
916            ) {
917                let tuple = <UnderlyingRustTuple<
918                    '_,
919                > as ::core::convert::From<Self>>::from(self.clone());
920                <UnderlyingSolTuple<
921                    '_,
922                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
923            }
924            #[inline]
925            fn stv_abi_packed_encoded_size(&self) -> usize {
926                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
927                    return size;
928                }
929                let tuple = <UnderlyingRustTuple<
930                    '_,
931                > as ::core::convert::From<Self>>::from(self.clone());
932                <UnderlyingSolTuple<
933                    '_,
934                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
935            }
936        }
937        #[automatically_derived]
938        impl alloy_sol_types::SolType for PlonkProof {
939            type RustType = Self;
940            type Token<'a> = <UnderlyingSolTuple<
941                'a,
942            > as alloy_sol_types::SolType>::Token<'a>;
943            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
944            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
945                '_,
946            > as alloy_sol_types::SolType>::ENCODED_SIZE;
947            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
950            #[inline]
951            fn valid_token(token: &Self::Token<'_>) -> bool {
952                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
953            }
954            #[inline]
955            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
956                let tuple = <UnderlyingSolTuple<
957                    '_,
958                > as alloy_sol_types::SolType>::detokenize(token);
959                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
960            }
961        }
962        #[automatically_derived]
963        impl alloy_sol_types::SolStruct for PlonkProof {
964            const NAME: &'static str = "PlonkProof";
965            #[inline]
966            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
967                alloy_sol_types::private::Cow::Borrowed(
968                    "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)",
969                )
970            }
971            #[inline]
972            fn eip712_components() -> alloy_sol_types::private::Vec<
973                alloy_sol_types::private::Cow<'static, str>,
974            > {
975                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
976                components
977                    .push(
978                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
979                    );
980                components
981                    .extend(
982                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
983                    );
984                components
985                    .push(
986                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
987                    );
988                components
989                    .extend(
990                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
991                    );
992                components
993                    .push(
994                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
995                    );
996                components
997                    .extend(
998                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
999                    );
1000                components
1001                    .push(
1002                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1003                    );
1004                components
1005                    .extend(
1006                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1007                    );
1008                components
1009                    .push(
1010                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1011                    );
1012                components
1013                    .extend(
1014                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1015                    );
1016                components
1017                    .push(
1018                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1019                    );
1020                components
1021                    .extend(
1022                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1023                    );
1024                components
1025                    .push(
1026                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1027                    );
1028                components
1029                    .extend(
1030                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1031                    );
1032                components
1033                    .push(
1034                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1035                    );
1036                components
1037                    .extend(
1038                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1039                    );
1040                components
1041                    .push(
1042                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1043                    );
1044                components
1045                    .extend(
1046                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1047                    );
1048                components
1049                    .push(
1050                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1051                    );
1052                components
1053                    .extend(
1054                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1055                    );
1056                components
1057                    .push(
1058                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1059                    );
1060                components
1061                    .extend(
1062                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1063                    );
1064                components
1065                    .push(
1066                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1067                    );
1068                components
1069                    .extend(
1070                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1071                    );
1072                components
1073                    .push(
1074                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1075                    );
1076                components
1077                    .extend(
1078                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1079                    );
1080                components
1081            }
1082            #[inline]
1083            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1084                [
1085                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1086                            &self.wire0,
1087                        )
1088                        .0,
1089                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1090                            &self.wire1,
1091                        )
1092                        .0,
1093                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1094                            &self.wire2,
1095                        )
1096                        .0,
1097                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1098                            &self.wire3,
1099                        )
1100                        .0,
1101                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1102                            &self.wire4,
1103                        )
1104                        .0,
1105                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1106                            &self.prodPerm,
1107                        )
1108                        .0,
1109                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1110                            &self.split0,
1111                        )
1112                        .0,
1113                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1114                            &self.split1,
1115                        )
1116                        .0,
1117                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1118                            &self.split2,
1119                        )
1120                        .0,
1121                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1122                            &self.split3,
1123                        )
1124                        .0,
1125                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1126                            &self.split4,
1127                        )
1128                        .0,
1129                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1130                            &self.zeta,
1131                        )
1132                        .0,
1133                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1134                            &self.zetaOmega,
1135                        )
1136                        .0,
1137                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1138                            &self.wireEval0,
1139                        )
1140                        .0,
1141                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1142                            &self.wireEval1,
1143                        )
1144                        .0,
1145                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1146                            &self.wireEval2,
1147                        )
1148                        .0,
1149                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1150                            &self.wireEval3,
1151                        )
1152                        .0,
1153                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1154                            &self.wireEval4,
1155                        )
1156                        .0,
1157                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1158                            &self.sigmaEval0,
1159                        )
1160                        .0,
1161                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1162                            &self.sigmaEval1,
1163                        )
1164                        .0,
1165                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1166                            &self.sigmaEval2,
1167                        )
1168                        .0,
1169                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1170                            &self.sigmaEval3,
1171                        )
1172                        .0,
1173                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1174                            &self.prodPermZetaOmegaEval,
1175                        )
1176                        .0,
1177                ]
1178                    .concat()
1179            }
1180        }
1181        #[automatically_derived]
1182        impl alloy_sol_types::EventTopic for PlonkProof {
1183            #[inline]
1184            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1185                0usize
1186                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1187                        &rust.wire0,
1188                    )
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire1,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire2,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire3,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire4,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.prodPerm,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.split0,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split1,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split2,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split3,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split4,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.zeta,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zetaOmega,
1224                    )
1225                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.wireEval0,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval1,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval2,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval3,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval4,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.sigmaEval0,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval1,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval2,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval3,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.prodPermZetaOmegaEval,
1254                    )
1255            }
1256            #[inline]
1257            fn encode_topic_preimage(
1258                rust: &Self::RustType,
1259                out: &mut alloy_sol_types::private::Vec<u8>,
1260            ) {
1261                out.reserve(
1262                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1263                );
1264                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1265                    &rust.wire0,
1266                    out,
1267                );
1268                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1269                    &rust.wire1,
1270                    out,
1271                );
1272                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1273                    &rust.wire2,
1274                    out,
1275                );
1276                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1277                    &rust.wire3,
1278                    out,
1279                );
1280                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1281                    &rust.wire4,
1282                    out,
1283                );
1284                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1285                    &rust.prodPerm,
1286                    out,
1287                );
1288                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1289                    &rust.split0,
1290                    out,
1291                );
1292                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1293                    &rust.split1,
1294                    out,
1295                );
1296                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1297                    &rust.split2,
1298                    out,
1299                );
1300                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1301                    &rust.split3,
1302                    out,
1303                );
1304                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1305                    &rust.split4,
1306                    out,
1307                );
1308                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1309                    &rust.zeta,
1310                    out,
1311                );
1312                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1313                    &rust.zetaOmega,
1314                    out,
1315                );
1316                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1317                    &rust.wireEval0,
1318                    out,
1319                );
1320                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1321                    &rust.wireEval1,
1322                    out,
1323                );
1324                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1325                    &rust.wireEval2,
1326                    out,
1327                );
1328                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1329                    &rust.wireEval3,
1330                    out,
1331                );
1332                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1333                    &rust.wireEval4,
1334                    out,
1335                );
1336                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1337                    &rust.sigmaEval0,
1338                    out,
1339                );
1340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    &rust.sigmaEval1,
1342                    out,
1343                );
1344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1345                    &rust.sigmaEval2,
1346                    out,
1347                );
1348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1349                    &rust.sigmaEval3,
1350                    out,
1351                );
1352                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1353                    &rust.prodPermZetaOmegaEval,
1354                    out,
1355                );
1356            }
1357            #[inline]
1358            fn encode_topic(
1359                rust: &Self::RustType,
1360            ) -> alloy_sol_types::abi::token::WordToken {
1361                let mut out = alloy_sol_types::private::Vec::new();
1362                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1363                    rust,
1364                    &mut out,
1365                );
1366                alloy_sol_types::abi::token::WordToken(
1367                    alloy_sol_types::private::keccak256(out),
1368                )
1369            }
1370        }
1371    };
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive()]
1374    /**```solidity
1375struct 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; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct VerifyingKey {
1380        #[allow(missing_docs)]
1381        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1382        #[allow(missing_docs)]
1383        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1384        #[allow(missing_docs)]
1385        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1386        #[allow(missing_docs)]
1387        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1388        #[allow(missing_docs)]
1389        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1390        #[allow(missing_docs)]
1391        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1392        #[allow(missing_docs)]
1393        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1394        #[allow(missing_docs)]
1395        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1396        #[allow(missing_docs)]
1397        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1398        #[allow(missing_docs)]
1399        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1400        #[allow(missing_docs)]
1401        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1402        #[allow(missing_docs)]
1403        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1404        #[allow(missing_docs)]
1405        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1406        #[allow(missing_docs)]
1407        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1408        #[allow(missing_docs)]
1409        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1410        #[allow(missing_docs)]
1411        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1412        #[allow(missing_docs)]
1413        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1414        #[allow(missing_docs)]
1415        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1416        #[allow(missing_docs)]
1417        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1418        #[allow(missing_docs)]
1419        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1420        #[allow(missing_docs)]
1421        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1422        #[allow(missing_docs)]
1423        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1424    }
1425    #[allow(
1426        non_camel_case_types,
1427        non_snake_case,
1428        clippy::pub_underscore_fields,
1429        clippy::style
1430    )]
1431    const _: () = {
1432        use alloy::sol_types as alloy_sol_types;
1433        #[doc(hidden)]
1434        #[allow(dead_code)]
1435        type UnderlyingSolTuple<'a> = (
1436            alloy::sol_types::sol_data::Uint<256>,
1437            alloy::sol_types::sol_data::Uint<256>,
1438            BN254::G1Point,
1439            BN254::G1Point,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
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            alloy::sol_types::sol_data::FixedBytes<32>,
1457            alloy::sol_types::sol_data::FixedBytes<32>,
1458        );
1459        #[doc(hidden)]
1460        type UnderlyingRustTuple<'a> = (
1461            alloy::sol_types::private::primitives::aliases::U256,
1462            alloy::sol_types::private::primitives::aliases::U256,
1463            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1464            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
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            alloy::sol_types::private::FixedBytes<32>,
1482            alloy::sol_types::private::FixedBytes<32>,
1483        );
1484        #[cfg(test)]
1485        #[allow(dead_code, unreachable_patterns)]
1486        fn _type_assertion(
1487            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1488        ) {
1489            match _t {
1490                alloy_sol_types::private::AssertTypeEq::<
1491                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1492                >(_) => {}
1493            }
1494        }
1495        #[automatically_derived]
1496        #[doc(hidden)]
1497        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1498            fn from(value: VerifyingKey) -> Self {
1499                (
1500                    value.domainSize,
1501                    value.numInputs,
1502                    value.sigma0,
1503                    value.sigma1,
1504                    value.sigma2,
1505                    value.sigma3,
1506                    value.sigma4,
1507                    value.q1,
1508                    value.q2,
1509                    value.q3,
1510                    value.q4,
1511                    value.qM12,
1512                    value.qM34,
1513                    value.qO,
1514                    value.qC,
1515                    value.qH1,
1516                    value.qH2,
1517                    value.qH3,
1518                    value.qH4,
1519                    value.qEcc,
1520                    value.g2LSB,
1521                    value.g2MSB,
1522                )
1523            }
1524        }
1525        #[automatically_derived]
1526        #[doc(hidden)]
1527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1529                Self {
1530                    domainSize: tuple.0,
1531                    numInputs: tuple.1,
1532                    sigma0: tuple.2,
1533                    sigma1: tuple.3,
1534                    sigma2: tuple.4,
1535                    sigma3: tuple.5,
1536                    sigma4: tuple.6,
1537                    q1: tuple.7,
1538                    q2: tuple.8,
1539                    q3: tuple.9,
1540                    q4: tuple.10,
1541                    qM12: tuple.11,
1542                    qM34: tuple.12,
1543                    qO: tuple.13,
1544                    qC: tuple.14,
1545                    qH1: tuple.15,
1546                    qH2: tuple.16,
1547                    qH3: tuple.17,
1548                    qH4: tuple.18,
1549                    qEcc: tuple.19,
1550                    g2LSB: tuple.20,
1551                    g2MSB: tuple.21,
1552                }
1553            }
1554        }
1555        #[automatically_derived]
1556        impl alloy_sol_types::SolValue for VerifyingKey {
1557            type SolType = Self;
1558        }
1559        #[automatically_derived]
1560        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1561            #[inline]
1562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1563                (
1564                    <alloy::sol_types::sol_data::Uint<
1565                        256,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1567                    <alloy::sol_types::sol_data::Uint<
1568                        256,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1570                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1571                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1588                    <alloy::sol_types::sol_data::FixedBytes<
1589                        32,
1590                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1591                    <alloy::sol_types::sol_data::FixedBytes<
1592                        32,
1593                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1594                )
1595            }
1596            #[inline]
1597            fn stv_abi_encoded_size(&self) -> usize {
1598                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1599                    return size;
1600                }
1601                let tuple = <UnderlyingRustTuple<
1602                    '_,
1603                > as ::core::convert::From<Self>>::from(self.clone());
1604                <UnderlyingSolTuple<
1605                    '_,
1606                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1607            }
1608            #[inline]
1609            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1610                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1611            }
1612            #[inline]
1613            fn stv_abi_encode_packed_to(
1614                &self,
1615                out: &mut alloy_sol_types::private::Vec<u8>,
1616            ) {
1617                let tuple = <UnderlyingRustTuple<
1618                    '_,
1619                > as ::core::convert::From<Self>>::from(self.clone());
1620                <UnderlyingSolTuple<
1621                    '_,
1622                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1623            }
1624            #[inline]
1625            fn stv_abi_packed_encoded_size(&self) -> usize {
1626                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1627                    return size;
1628                }
1629                let tuple = <UnderlyingRustTuple<
1630                    '_,
1631                > as ::core::convert::From<Self>>::from(self.clone());
1632                <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1635            }
1636        }
1637        #[automatically_derived]
1638        impl alloy_sol_types::SolType for VerifyingKey {
1639            type RustType = Self;
1640            type Token<'a> = <UnderlyingSolTuple<
1641                'a,
1642            > as alloy_sol_types::SolType>::Token<'a>;
1643            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1644            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1645                '_,
1646            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1647            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1648                '_,
1649            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1650            #[inline]
1651            fn valid_token(token: &Self::Token<'_>) -> bool {
1652                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1653            }
1654            #[inline]
1655            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1656                let tuple = <UnderlyingSolTuple<
1657                    '_,
1658                > as alloy_sol_types::SolType>::detokenize(token);
1659                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1660            }
1661        }
1662        #[automatically_derived]
1663        impl alloy_sol_types::SolStruct for VerifyingKey {
1664            const NAME: &'static str = "VerifyingKey";
1665            #[inline]
1666            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1667                alloy_sol_types::private::Cow::Borrowed(
1668                    "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)",
1669                )
1670            }
1671            #[inline]
1672            fn eip712_components() -> alloy_sol_types::private::Vec<
1673                alloy_sol_types::private::Cow<'static, str>,
1674            > {
1675                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797                    .push(
1798                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1799                    );
1800                components
1801                    .extend(
1802                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1803                    );
1804                components
1805                    .push(
1806                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1807                    );
1808                components
1809                    .extend(
1810                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1811                    );
1812                components
1813                    .push(
1814                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1815                    );
1816                components
1817                    .extend(
1818                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1819                    );
1820                components
1821            }
1822            #[inline]
1823            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1824                [
1825                    <alloy::sol_types::sol_data::Uint<
1826                        256,
1827                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1828                        .0,
1829                    <alloy::sol_types::sol_data::Uint<
1830                        256,
1831                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.sigma0,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.sigma1,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.sigma2,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.sigma3,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.sigma4,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.q1,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.q2,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.q3,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.q4,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qM12,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qM34,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qO,
1879                        )
1880                        .0,
1881                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1882                            &self.qC,
1883                        )
1884                        .0,
1885                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1886                            &self.qH1,
1887                        )
1888                        .0,
1889                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1890                            &self.qH2,
1891                        )
1892                        .0,
1893                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1894                            &self.qH3,
1895                        )
1896                        .0,
1897                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1898                            &self.qH4,
1899                        )
1900                        .0,
1901                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1902                            &self.qEcc,
1903                        )
1904                        .0,
1905                    <alloy::sol_types::sol_data::FixedBytes<
1906                        32,
1907                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1908                        .0,
1909                    <alloy::sol_types::sol_data::FixedBytes<
1910                        32,
1911                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1912                        .0,
1913                ]
1914                    .concat()
1915            }
1916        }
1917        #[automatically_derived]
1918        impl alloy_sol_types::EventTopic for VerifyingKey {
1919            #[inline]
1920            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1921                0usize
1922                    + <alloy::sol_types::sol_data::Uint<
1923                        256,
1924                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1925                        &rust.domainSize,
1926                    )
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.numInputs,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.sigma0,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.sigma1,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.sigma2,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.sigma3,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.sigma4,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.q1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.q2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.q3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.q4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qM12,
1961                    )
1962                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1963                        &rust.qM34,
1964                    )
1965                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1966                        &rust.qO,
1967                    )
1968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1969                        &rust.qC,
1970                    )
1971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1972                        &rust.qH1,
1973                    )
1974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1975                        &rust.qH2,
1976                    )
1977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1978                        &rust.qH3,
1979                    )
1980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1981                        &rust.qH4,
1982                    )
1983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1984                        &rust.qEcc,
1985                    )
1986                    + <alloy::sol_types::sol_data::FixedBytes<
1987                        32,
1988                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1989                    + <alloy::sol_types::sol_data::FixedBytes<
1990                        32,
1991                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1992            }
1993            #[inline]
1994            fn encode_topic_preimage(
1995                rust: &Self::RustType,
1996                out: &mut alloy_sol_types::private::Vec<u8>,
1997            ) {
1998                out.reserve(
1999                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2000                );
2001                <alloy::sol_types::sol_data::Uint<
2002                    256,
2003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2004                    &rust.domainSize,
2005                    out,
2006                );
2007                <alloy::sol_types::sol_data::Uint<
2008                    256,
2009                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.numInputs,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.sigma0,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.sigma1,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.sigma2,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.sigma3,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.sigma4,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.q1,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.q2,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.q3,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.q4,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qM12,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qM34,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qO,
2059                    out,
2060                );
2061                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2062                    &rust.qC,
2063                    out,
2064                );
2065                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2066                    &rust.qH1,
2067                    out,
2068                );
2069                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.qH2,
2071                    out,
2072                );
2073                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2074                    &rust.qH3,
2075                    out,
2076                );
2077                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2078                    &rust.qH4,
2079                    out,
2080                );
2081                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2082                    &rust.qEcc,
2083                    out,
2084                );
2085                <alloy::sol_types::sol_data::FixedBytes<
2086                    32,
2087                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2088                    &rust.g2LSB,
2089                    out,
2090                );
2091                <alloy::sol_types::sol_data::FixedBytes<
2092                    32,
2093                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2094                    &rust.g2MSB,
2095                    out,
2096                );
2097            }
2098            #[inline]
2099            fn encode_topic(
2100                rust: &Self::RustType,
2101            ) -> alloy_sol_types::abi::token::WordToken {
2102                let mut out = alloy_sol_types::private::Vec::new();
2103                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2104                    rust,
2105                    &mut out,
2106                );
2107                alloy_sol_types::abi::token::WordToken(
2108                    alloy_sol_types::private::keccak256(out),
2109                )
2110            }
2111        }
2112    };
2113    use alloy::contract as alloy_contract;
2114    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2115
2116See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2117    #[inline]
2118    pub const fn new<
2119        P: alloy_contract::private::Provider<N>,
2120        N: alloy_contract::private::Network,
2121    >(
2122        address: alloy_sol_types::private::Address,
2123        __provider: P,
2124    ) -> IPlonkVerifierInstance<P, N> {
2125        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2126    }
2127    /**A [`IPlonkVerifier`](self) instance.
2128
2129Contains type-safe methods for interacting with an on-chain instance of the
2130[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2131provider `P`.
2132
2133If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2134documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2135be used to deploy a new instance of the contract.
2136
2137See the [module-level documentation](self) for all the available methods.*/
2138    #[derive(Clone)]
2139    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2140        address: alloy_sol_types::private::Address,
2141        provider: P,
2142        _network: ::core::marker::PhantomData<N>,
2143    }
2144    #[automatically_derived]
2145    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2146        #[inline]
2147        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2148            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2149        }
2150    }
2151    /// Instantiation and getters/setters.
2152    impl<
2153        P: alloy_contract::private::Provider<N>,
2154        N: alloy_contract::private::Network,
2155    > IPlonkVerifierInstance<P, N> {
2156        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2157
2158See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2159        #[inline]
2160        pub const fn new(
2161            address: alloy_sol_types::private::Address,
2162            __provider: P,
2163        ) -> Self {
2164            Self {
2165                address,
2166                provider: __provider,
2167                _network: ::core::marker::PhantomData,
2168            }
2169        }
2170        /// Returns a reference to the address.
2171        #[inline]
2172        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2173            &self.address
2174        }
2175        /// Sets the address.
2176        #[inline]
2177        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2178            self.address = address;
2179        }
2180        /// Sets the address and returns `self`.
2181        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2182            self.set_address(address);
2183            self
2184        }
2185        /// Returns a reference to the provider.
2186        #[inline]
2187        pub const fn provider(&self) -> &P {
2188            &self.provider
2189        }
2190    }
2191    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2192        /// Clones the provider and returns a new instance with the cloned provider.
2193        #[inline]
2194        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2195            IPlonkVerifierInstance {
2196                address: self.address,
2197                provider: ::core::clone::Clone::clone(&self.provider),
2198                _network: ::core::marker::PhantomData,
2199            }
2200        }
2201    }
2202    /// Function calls.
2203    impl<
2204        P: alloy_contract::private::Provider<N>,
2205        N: alloy_contract::private::Network,
2206    > IPlonkVerifierInstance<P, N> {
2207        /// Creates a new call builder using this contract instance's provider and address.
2208        ///
2209        /// Note that the call can be any function call, not just those defined in this
2210        /// contract. Prefer using the other methods for building type-safe contract calls.
2211        pub fn call_builder<C: alloy_sol_types::SolCall>(
2212            &self,
2213            call: &C,
2214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2216        }
2217    }
2218    /// Event filters.
2219    impl<
2220        P: alloy_contract::private::Provider<N>,
2221        N: alloy_contract::private::Network,
2222    > IPlonkVerifierInstance<P, N> {
2223        /// Creates a new event filter using this contract instance's provider and address.
2224        ///
2225        /// Note that the type can be any event, not just those defined in this contract.
2226        /// Prefer using the other methods for building type-safe event filters.
2227        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2228            &self,
2229        ) -> alloy_contract::Event<&P, E, N> {
2230            alloy_contract::Event::new_sol(&self.provider, &self.address)
2231        }
2232    }
2233}
2234///Module containing a contract's types and functions.
2235/**
2236
2237```solidity
2238library LightClient {
2239    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2240    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2241    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2242}
2243```*/
2244#[allow(
2245    non_camel_case_types,
2246    non_snake_case,
2247    clippy::pub_underscore_fields,
2248    clippy::style,
2249    clippy::empty_structs_with_brackets
2250)]
2251pub mod LightClient {
2252    use super::*;
2253    use alloy::sol_types as alloy_sol_types;
2254    #[derive(serde::Serialize, serde::Deserialize)]
2255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2256    /**```solidity
2257struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2258```*/
2259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2260    #[derive(Clone)]
2261    pub struct LightClientState {
2262        #[allow(missing_docs)]
2263        pub viewNum: u64,
2264        #[allow(missing_docs)]
2265        pub blockHeight: u64,
2266        #[allow(missing_docs)]
2267        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2268    }
2269    #[allow(
2270        non_camel_case_types,
2271        non_snake_case,
2272        clippy::pub_underscore_fields,
2273        clippy::style
2274    )]
2275    const _: () = {
2276        use alloy::sol_types as alloy_sol_types;
2277        #[doc(hidden)]
2278        #[allow(dead_code)]
2279        type UnderlyingSolTuple<'a> = (
2280            alloy::sol_types::sol_data::Uint<64>,
2281            alloy::sol_types::sol_data::Uint<64>,
2282            BN254::ScalarField,
2283        );
2284        #[doc(hidden)]
2285        type UnderlyingRustTuple<'a> = (
2286            u64,
2287            u64,
2288            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2289        );
2290        #[cfg(test)]
2291        #[allow(dead_code, unreachable_patterns)]
2292        fn _type_assertion(
2293            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2294        ) {
2295            match _t {
2296                alloy_sol_types::private::AssertTypeEq::<
2297                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2298                >(_) => {}
2299            }
2300        }
2301        #[automatically_derived]
2302        #[doc(hidden)]
2303        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2304            fn from(value: LightClientState) -> Self {
2305                (value.viewNum, value.blockHeight, value.blockCommRoot)
2306            }
2307        }
2308        #[automatically_derived]
2309        #[doc(hidden)]
2310        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2311            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2312                Self {
2313                    viewNum: tuple.0,
2314                    blockHeight: tuple.1,
2315                    blockCommRoot: tuple.2,
2316                }
2317            }
2318        }
2319        #[automatically_derived]
2320        impl alloy_sol_types::SolValue for LightClientState {
2321            type SolType = Self;
2322        }
2323        #[automatically_derived]
2324        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2325            #[inline]
2326            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2327                (
2328                    <alloy::sol_types::sol_data::Uint<
2329                        64,
2330                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2331                    <alloy::sol_types::sol_data::Uint<
2332                        64,
2333                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2334                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2335                        &self.blockCommRoot,
2336                    ),
2337                )
2338            }
2339            #[inline]
2340            fn stv_abi_encoded_size(&self) -> usize {
2341                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2342                    return size;
2343                }
2344                let tuple = <UnderlyingRustTuple<
2345                    '_,
2346                > as ::core::convert::From<Self>>::from(self.clone());
2347                <UnderlyingSolTuple<
2348                    '_,
2349                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2350            }
2351            #[inline]
2352            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2353                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2354            }
2355            #[inline]
2356            fn stv_abi_encode_packed_to(
2357                &self,
2358                out: &mut alloy_sol_types::private::Vec<u8>,
2359            ) {
2360                let tuple = <UnderlyingRustTuple<
2361                    '_,
2362                > as ::core::convert::From<Self>>::from(self.clone());
2363                <UnderlyingSolTuple<
2364                    '_,
2365                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2366            }
2367            #[inline]
2368            fn stv_abi_packed_encoded_size(&self) -> usize {
2369                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2370                    return size;
2371                }
2372                let tuple = <UnderlyingRustTuple<
2373                    '_,
2374                > as ::core::convert::From<Self>>::from(self.clone());
2375                <UnderlyingSolTuple<
2376                    '_,
2377                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2378            }
2379        }
2380        #[automatically_derived]
2381        impl alloy_sol_types::SolType for LightClientState {
2382            type RustType = Self;
2383            type Token<'a> = <UnderlyingSolTuple<
2384                'a,
2385            > as alloy_sol_types::SolType>::Token<'a>;
2386            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2387            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2388                '_,
2389            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2390            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2391                '_,
2392            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2393            #[inline]
2394            fn valid_token(token: &Self::Token<'_>) -> bool {
2395                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2396            }
2397            #[inline]
2398            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2399                let tuple = <UnderlyingSolTuple<
2400                    '_,
2401                > as alloy_sol_types::SolType>::detokenize(token);
2402                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2403            }
2404        }
2405        #[automatically_derived]
2406        impl alloy_sol_types::SolStruct for LightClientState {
2407            const NAME: &'static str = "LightClientState";
2408            #[inline]
2409            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2410                alloy_sol_types::private::Cow::Borrowed(
2411                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2412                )
2413            }
2414            #[inline]
2415            fn eip712_components() -> alloy_sol_types::private::Vec<
2416                alloy_sol_types::private::Cow<'static, str>,
2417            > {
2418                alloy_sol_types::private::Vec::new()
2419            }
2420            #[inline]
2421            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2422                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2423            }
2424            #[inline]
2425            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2426                [
2427                    <alloy::sol_types::sol_data::Uint<
2428                        64,
2429                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2430                        .0,
2431                    <alloy::sol_types::sol_data::Uint<
2432                        64,
2433                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2434                        .0,
2435                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2436                            &self.blockCommRoot,
2437                        )
2438                        .0,
2439                ]
2440                    .concat()
2441            }
2442        }
2443        #[automatically_derived]
2444        impl alloy_sol_types::EventTopic for LightClientState {
2445            #[inline]
2446            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2447                0usize
2448                    + <alloy::sol_types::sol_data::Uint<
2449                        64,
2450                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2451                        &rust.viewNum,
2452                    )
2453                    + <alloy::sol_types::sol_data::Uint<
2454                        64,
2455                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2456                        &rust.blockHeight,
2457                    )
2458                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2459                        &rust.blockCommRoot,
2460                    )
2461            }
2462            #[inline]
2463            fn encode_topic_preimage(
2464                rust: &Self::RustType,
2465                out: &mut alloy_sol_types::private::Vec<u8>,
2466            ) {
2467                out.reserve(
2468                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2469                );
2470                <alloy::sol_types::sol_data::Uint<
2471                    64,
2472                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2473                    &rust.viewNum,
2474                    out,
2475                );
2476                <alloy::sol_types::sol_data::Uint<
2477                    64,
2478                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2479                    &rust.blockHeight,
2480                    out,
2481                );
2482                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2483                    &rust.blockCommRoot,
2484                    out,
2485                );
2486            }
2487            #[inline]
2488            fn encode_topic(
2489                rust: &Self::RustType,
2490            ) -> alloy_sol_types::abi::token::WordToken {
2491                let mut out = alloy_sol_types::private::Vec::new();
2492                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2493                    rust,
2494                    &mut out,
2495                );
2496                alloy_sol_types::abi::token::WordToken(
2497                    alloy_sol_types::private::keccak256(out),
2498                )
2499            }
2500        }
2501    };
2502    #[derive(serde::Serialize, serde::Deserialize)]
2503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2504    /**```solidity
2505struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2506```*/
2507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2508    #[derive(Clone)]
2509    pub struct StakeTableState {
2510        #[allow(missing_docs)]
2511        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2512        #[allow(missing_docs)]
2513        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2514        #[allow(missing_docs)]
2515        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2516        #[allow(missing_docs)]
2517        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518    }
2519    #[allow(
2520        non_camel_case_types,
2521        non_snake_case,
2522        clippy::pub_underscore_fields,
2523        clippy::style
2524    )]
2525    const _: () = {
2526        use alloy::sol_types as alloy_sol_types;
2527        #[doc(hidden)]
2528        #[allow(dead_code)]
2529        type UnderlyingSolTuple<'a> = (
2530            alloy::sol_types::sol_data::Uint<256>,
2531            BN254::ScalarField,
2532            BN254::ScalarField,
2533            BN254::ScalarField,
2534        );
2535        #[doc(hidden)]
2536        type UnderlyingRustTuple<'a> = (
2537            alloy::sol_types::private::primitives::aliases::U256,
2538            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2539            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2540            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2541        );
2542        #[cfg(test)]
2543        #[allow(dead_code, unreachable_patterns)]
2544        fn _type_assertion(
2545            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2546        ) {
2547            match _t {
2548                alloy_sol_types::private::AssertTypeEq::<
2549                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2550                >(_) => {}
2551            }
2552        }
2553        #[automatically_derived]
2554        #[doc(hidden)]
2555        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2556            fn from(value: StakeTableState) -> Self {
2557                (
2558                    value.threshold,
2559                    value.blsKeyComm,
2560                    value.schnorrKeyComm,
2561                    value.amountComm,
2562                )
2563            }
2564        }
2565        #[automatically_derived]
2566        #[doc(hidden)]
2567        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2568            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2569                Self {
2570                    threshold: tuple.0,
2571                    blsKeyComm: tuple.1,
2572                    schnorrKeyComm: tuple.2,
2573                    amountComm: tuple.3,
2574                }
2575            }
2576        }
2577        #[automatically_derived]
2578        impl alloy_sol_types::SolValue for StakeTableState {
2579            type SolType = Self;
2580        }
2581        #[automatically_derived]
2582        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2583            #[inline]
2584            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2585                (
2586                    <alloy::sol_types::sol_data::Uint<
2587                        256,
2588                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2589                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2590                        &self.blsKeyComm,
2591                    ),
2592                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2593                        &self.schnorrKeyComm,
2594                    ),
2595                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2596                        &self.amountComm,
2597                    ),
2598                )
2599            }
2600            #[inline]
2601            fn stv_abi_encoded_size(&self) -> usize {
2602                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2603                    return size;
2604                }
2605                let tuple = <UnderlyingRustTuple<
2606                    '_,
2607                > as ::core::convert::From<Self>>::from(self.clone());
2608                <UnderlyingSolTuple<
2609                    '_,
2610                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2611            }
2612            #[inline]
2613            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2614                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2615            }
2616            #[inline]
2617            fn stv_abi_encode_packed_to(
2618                &self,
2619                out: &mut alloy_sol_types::private::Vec<u8>,
2620            ) {
2621                let tuple = <UnderlyingRustTuple<
2622                    '_,
2623                > as ::core::convert::From<Self>>::from(self.clone());
2624                <UnderlyingSolTuple<
2625                    '_,
2626                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2627            }
2628            #[inline]
2629            fn stv_abi_packed_encoded_size(&self) -> usize {
2630                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2631                    return size;
2632                }
2633                let tuple = <UnderlyingRustTuple<
2634                    '_,
2635                > as ::core::convert::From<Self>>::from(self.clone());
2636                <UnderlyingSolTuple<
2637                    '_,
2638                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2639            }
2640        }
2641        #[automatically_derived]
2642        impl alloy_sol_types::SolType for StakeTableState {
2643            type RustType = Self;
2644            type Token<'a> = <UnderlyingSolTuple<
2645                'a,
2646            > as alloy_sol_types::SolType>::Token<'a>;
2647            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2648            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2649                '_,
2650            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2651            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2652                '_,
2653            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2654            #[inline]
2655            fn valid_token(token: &Self::Token<'_>) -> bool {
2656                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2657            }
2658            #[inline]
2659            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2660                let tuple = <UnderlyingSolTuple<
2661                    '_,
2662                > as alloy_sol_types::SolType>::detokenize(token);
2663                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2664            }
2665        }
2666        #[automatically_derived]
2667        impl alloy_sol_types::SolStruct for StakeTableState {
2668            const NAME: &'static str = "StakeTableState";
2669            #[inline]
2670            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2671                alloy_sol_types::private::Cow::Borrowed(
2672                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2673                )
2674            }
2675            #[inline]
2676            fn eip712_components() -> alloy_sol_types::private::Vec<
2677                alloy_sol_types::private::Cow<'static, str>,
2678            > {
2679                alloy_sol_types::private::Vec::new()
2680            }
2681            #[inline]
2682            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2683                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2684            }
2685            #[inline]
2686            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2687                [
2688                    <alloy::sol_types::sol_data::Uint<
2689                        256,
2690                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2691                        .0,
2692                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2693                            &self.blsKeyComm,
2694                        )
2695                        .0,
2696                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2697                            &self.schnorrKeyComm,
2698                        )
2699                        .0,
2700                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2701                            &self.amountComm,
2702                        )
2703                        .0,
2704                ]
2705                    .concat()
2706            }
2707        }
2708        #[automatically_derived]
2709        impl alloy_sol_types::EventTopic for StakeTableState {
2710            #[inline]
2711            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2712                0usize
2713                    + <alloy::sol_types::sol_data::Uint<
2714                        256,
2715                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2716                        &rust.threshold,
2717                    )
2718                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2719                        &rust.blsKeyComm,
2720                    )
2721                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2722                        &rust.schnorrKeyComm,
2723                    )
2724                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2725                        &rust.amountComm,
2726                    )
2727            }
2728            #[inline]
2729            fn encode_topic_preimage(
2730                rust: &Self::RustType,
2731                out: &mut alloy_sol_types::private::Vec<u8>,
2732            ) {
2733                out.reserve(
2734                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2735                );
2736                <alloy::sol_types::sol_data::Uint<
2737                    256,
2738                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2739                    &rust.threshold,
2740                    out,
2741                );
2742                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2743                    &rust.blsKeyComm,
2744                    out,
2745                );
2746                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2747                    &rust.schnorrKeyComm,
2748                    out,
2749                );
2750                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2751                    &rust.amountComm,
2752                    out,
2753                );
2754            }
2755            #[inline]
2756            fn encode_topic(
2757                rust: &Self::RustType,
2758            ) -> alloy_sol_types::abi::token::WordToken {
2759                let mut out = alloy_sol_types::private::Vec::new();
2760                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2761                    rust,
2762                    &mut out,
2763                );
2764                alloy_sol_types::abi::token::WordToken(
2765                    alloy_sol_types::private::keccak256(out),
2766                )
2767            }
2768        }
2769    };
2770    #[derive(serde::Serialize, serde::Deserialize)]
2771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2772    /**```solidity
2773struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2774```*/
2775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2776    #[derive(Clone)]
2777    pub struct StateHistoryCommitment {
2778        #[allow(missing_docs)]
2779        pub l1BlockHeight: u64,
2780        #[allow(missing_docs)]
2781        pub l1BlockTimestamp: u64,
2782        #[allow(missing_docs)]
2783        pub hotShotBlockHeight: u64,
2784        #[allow(missing_docs)]
2785        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2786    }
2787    #[allow(
2788        non_camel_case_types,
2789        non_snake_case,
2790        clippy::pub_underscore_fields,
2791        clippy::style
2792    )]
2793    const _: () = {
2794        use alloy::sol_types as alloy_sol_types;
2795        #[doc(hidden)]
2796        #[allow(dead_code)]
2797        type UnderlyingSolTuple<'a> = (
2798            alloy::sol_types::sol_data::Uint<64>,
2799            alloy::sol_types::sol_data::Uint<64>,
2800            alloy::sol_types::sol_data::Uint<64>,
2801            BN254::ScalarField,
2802        );
2803        #[doc(hidden)]
2804        type UnderlyingRustTuple<'a> = (
2805            u64,
2806            u64,
2807            u64,
2808            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2809        );
2810        #[cfg(test)]
2811        #[allow(dead_code, unreachable_patterns)]
2812        fn _type_assertion(
2813            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2814        ) {
2815            match _t {
2816                alloy_sol_types::private::AssertTypeEq::<
2817                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2818                >(_) => {}
2819            }
2820        }
2821        #[automatically_derived]
2822        #[doc(hidden)]
2823        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2824            fn from(value: StateHistoryCommitment) -> Self {
2825                (
2826                    value.l1BlockHeight,
2827                    value.l1BlockTimestamp,
2828                    value.hotShotBlockHeight,
2829                    value.hotShotBlockCommRoot,
2830                )
2831            }
2832        }
2833        #[automatically_derived]
2834        #[doc(hidden)]
2835        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2836            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2837                Self {
2838                    l1BlockHeight: tuple.0,
2839                    l1BlockTimestamp: tuple.1,
2840                    hotShotBlockHeight: tuple.2,
2841                    hotShotBlockCommRoot: tuple.3,
2842                }
2843            }
2844        }
2845        #[automatically_derived]
2846        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2847            type SolType = Self;
2848        }
2849        #[automatically_derived]
2850        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2851            #[inline]
2852            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2853                (
2854                    <alloy::sol_types::sol_data::Uint<
2855                        64,
2856                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2857                    <alloy::sol_types::sol_data::Uint<
2858                        64,
2859                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2860                    <alloy::sol_types::sol_data::Uint<
2861                        64,
2862                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2864                        &self.hotShotBlockCommRoot,
2865                    ),
2866                )
2867            }
2868            #[inline]
2869            fn stv_abi_encoded_size(&self) -> usize {
2870                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2871                    return size;
2872                }
2873                let tuple = <UnderlyingRustTuple<
2874                    '_,
2875                > as ::core::convert::From<Self>>::from(self.clone());
2876                <UnderlyingSolTuple<
2877                    '_,
2878                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2879            }
2880            #[inline]
2881            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2882                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2883            }
2884            #[inline]
2885            fn stv_abi_encode_packed_to(
2886                &self,
2887                out: &mut alloy_sol_types::private::Vec<u8>,
2888            ) {
2889                let tuple = <UnderlyingRustTuple<
2890                    '_,
2891                > as ::core::convert::From<Self>>::from(self.clone());
2892                <UnderlyingSolTuple<
2893                    '_,
2894                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2895            }
2896            #[inline]
2897            fn stv_abi_packed_encoded_size(&self) -> usize {
2898                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2899                    return size;
2900                }
2901                let tuple = <UnderlyingRustTuple<
2902                    '_,
2903                > as ::core::convert::From<Self>>::from(self.clone());
2904                <UnderlyingSolTuple<
2905                    '_,
2906                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2907            }
2908        }
2909        #[automatically_derived]
2910        impl alloy_sol_types::SolType for StateHistoryCommitment {
2911            type RustType = Self;
2912            type Token<'a> = <UnderlyingSolTuple<
2913                'a,
2914            > as alloy_sol_types::SolType>::Token<'a>;
2915            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2916            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2917                '_,
2918            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2919            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2920                '_,
2921            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2922            #[inline]
2923            fn valid_token(token: &Self::Token<'_>) -> bool {
2924                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2925            }
2926            #[inline]
2927            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2928                let tuple = <UnderlyingSolTuple<
2929                    '_,
2930                > as alloy_sol_types::SolType>::detokenize(token);
2931                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2932            }
2933        }
2934        #[automatically_derived]
2935        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2936            const NAME: &'static str = "StateHistoryCommitment";
2937            #[inline]
2938            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2939                alloy_sol_types::private::Cow::Borrowed(
2940                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2941                )
2942            }
2943            #[inline]
2944            fn eip712_components() -> alloy_sol_types::private::Vec<
2945                alloy_sol_types::private::Cow<'static, str>,
2946            > {
2947                alloy_sol_types::private::Vec::new()
2948            }
2949            #[inline]
2950            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2951                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2952            }
2953            #[inline]
2954            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2955                [
2956                    <alloy::sol_types::sol_data::Uint<
2957                        64,
2958                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2959                        .0,
2960                    <alloy::sol_types::sol_data::Uint<
2961                        64,
2962                    > as alloy_sol_types::SolType>::eip712_data_word(
2963                            &self.l1BlockTimestamp,
2964                        )
2965                        .0,
2966                    <alloy::sol_types::sol_data::Uint<
2967                        64,
2968                    > as alloy_sol_types::SolType>::eip712_data_word(
2969                            &self.hotShotBlockHeight,
2970                        )
2971                        .0,
2972                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2973                            &self.hotShotBlockCommRoot,
2974                        )
2975                        .0,
2976                ]
2977                    .concat()
2978            }
2979        }
2980        #[automatically_derived]
2981        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2982            #[inline]
2983            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2984                0usize
2985                    + <alloy::sol_types::sol_data::Uint<
2986                        64,
2987                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2988                        &rust.l1BlockHeight,
2989                    )
2990                    + <alloy::sol_types::sol_data::Uint<
2991                        64,
2992                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2993                        &rust.l1BlockTimestamp,
2994                    )
2995                    + <alloy::sol_types::sol_data::Uint<
2996                        64,
2997                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2998                        &rust.hotShotBlockHeight,
2999                    )
3000                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3001                        &rust.hotShotBlockCommRoot,
3002                    )
3003            }
3004            #[inline]
3005            fn encode_topic_preimage(
3006                rust: &Self::RustType,
3007                out: &mut alloy_sol_types::private::Vec<u8>,
3008            ) {
3009                out.reserve(
3010                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3011                );
3012                <alloy::sol_types::sol_data::Uint<
3013                    64,
3014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3015                    &rust.l1BlockHeight,
3016                    out,
3017                );
3018                <alloy::sol_types::sol_data::Uint<
3019                    64,
3020                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3021                    &rust.l1BlockTimestamp,
3022                    out,
3023                );
3024                <alloy::sol_types::sol_data::Uint<
3025                    64,
3026                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3027                    &rust.hotShotBlockHeight,
3028                    out,
3029                );
3030                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3031                    &rust.hotShotBlockCommRoot,
3032                    out,
3033                );
3034            }
3035            #[inline]
3036            fn encode_topic(
3037                rust: &Self::RustType,
3038            ) -> alloy_sol_types::abi::token::WordToken {
3039                let mut out = alloy_sol_types::private::Vec::new();
3040                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3041                    rust,
3042                    &mut out,
3043                );
3044                alloy_sol_types::abi::token::WordToken(
3045                    alloy_sol_types::private::keccak256(out),
3046                )
3047            }
3048        }
3049    };
3050    use alloy::contract as alloy_contract;
3051    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3052
3053See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3054    #[inline]
3055    pub const fn new<
3056        P: alloy_contract::private::Provider<N>,
3057        N: alloy_contract::private::Network,
3058    >(
3059        address: alloy_sol_types::private::Address,
3060        __provider: P,
3061    ) -> LightClientInstance<P, N> {
3062        LightClientInstance::<P, N>::new(address, __provider)
3063    }
3064    /**A [`LightClient`](self) instance.
3065
3066Contains type-safe methods for interacting with an on-chain instance of the
3067[`LightClient`](self) contract located at a given `address`, using a given
3068provider `P`.
3069
3070If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3071documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3072be used to deploy a new instance of the contract.
3073
3074See the [module-level documentation](self) for all the available methods.*/
3075    #[derive(Clone)]
3076    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
3077        address: alloy_sol_types::private::Address,
3078        provider: P,
3079        _network: ::core::marker::PhantomData<N>,
3080    }
3081    #[automatically_derived]
3082    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
3083        #[inline]
3084        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3085            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3086        }
3087    }
3088    /// Instantiation and getters/setters.
3089    impl<
3090        P: alloy_contract::private::Provider<N>,
3091        N: alloy_contract::private::Network,
3092    > LightClientInstance<P, N> {
3093        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3094
3095See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3096        #[inline]
3097        pub const fn new(
3098            address: alloy_sol_types::private::Address,
3099            __provider: P,
3100        ) -> Self {
3101            Self {
3102                address,
3103                provider: __provider,
3104                _network: ::core::marker::PhantomData,
3105            }
3106        }
3107        /// Returns a reference to the address.
3108        #[inline]
3109        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3110            &self.address
3111        }
3112        /// Sets the address.
3113        #[inline]
3114        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3115            self.address = address;
3116        }
3117        /// Sets the address and returns `self`.
3118        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3119            self.set_address(address);
3120            self
3121        }
3122        /// Returns a reference to the provider.
3123        #[inline]
3124        pub const fn provider(&self) -> &P {
3125            &self.provider
3126        }
3127    }
3128    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
3129        /// Clones the provider and returns a new instance with the cloned provider.
3130        #[inline]
3131        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
3132            LightClientInstance {
3133                address: self.address,
3134                provider: ::core::clone::Clone::clone(&self.provider),
3135                _network: ::core::marker::PhantomData,
3136            }
3137        }
3138    }
3139    /// Function calls.
3140    impl<
3141        P: alloy_contract::private::Provider<N>,
3142        N: alloy_contract::private::Network,
3143    > LightClientInstance<P, N> {
3144        /// Creates a new call builder using this contract instance's provider and address.
3145        ///
3146        /// Note that the call can be any function call, not just those defined in this
3147        /// contract. Prefer using the other methods for building type-safe contract calls.
3148        pub fn call_builder<C: alloy_sol_types::SolCall>(
3149            &self,
3150            call: &C,
3151        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3152            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3153        }
3154    }
3155    /// Event filters.
3156    impl<
3157        P: alloy_contract::private::Provider<N>,
3158        N: alloy_contract::private::Network,
3159    > LightClientInstance<P, N> {
3160        /// Creates a new event filter using this contract instance's provider and address.
3161        ///
3162        /// Note that the type can be any event, not just those defined in this contract.
3163        /// Prefer using the other methods for building type-safe event filters.
3164        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3165            &self,
3166        ) -> alloy_contract::Event<&P, E, N> {
3167            alloy_contract::Event::new_sol(&self.provider, &self.address)
3168        }
3169    }
3170}
3171/**
3172
3173Generated by the following Solidity interface...
3174```solidity
3175library BN254 {
3176    type BaseField is uint256;
3177    type ScalarField is uint256;
3178    struct G1Point {
3179        BaseField x;
3180        BaseField y;
3181    }
3182}
3183
3184library IPlonkVerifier {
3185    struct PlonkProof {
3186        BN254.G1Point wire0;
3187        BN254.G1Point wire1;
3188        BN254.G1Point wire2;
3189        BN254.G1Point wire3;
3190        BN254.G1Point wire4;
3191        BN254.G1Point prodPerm;
3192        BN254.G1Point split0;
3193        BN254.G1Point split1;
3194        BN254.G1Point split2;
3195        BN254.G1Point split3;
3196        BN254.G1Point split4;
3197        BN254.G1Point zeta;
3198        BN254.G1Point zetaOmega;
3199        BN254.ScalarField wireEval0;
3200        BN254.ScalarField wireEval1;
3201        BN254.ScalarField wireEval2;
3202        BN254.ScalarField wireEval3;
3203        BN254.ScalarField wireEval4;
3204        BN254.ScalarField sigmaEval0;
3205        BN254.ScalarField sigmaEval1;
3206        BN254.ScalarField sigmaEval2;
3207        BN254.ScalarField sigmaEval3;
3208        BN254.ScalarField prodPermZetaOmegaEval;
3209    }
3210    struct VerifyingKey {
3211        uint256 domainSize;
3212        uint256 numInputs;
3213        BN254.G1Point sigma0;
3214        BN254.G1Point sigma1;
3215        BN254.G1Point sigma2;
3216        BN254.G1Point sigma3;
3217        BN254.G1Point sigma4;
3218        BN254.G1Point q1;
3219        BN254.G1Point q2;
3220        BN254.G1Point q3;
3221        BN254.G1Point q4;
3222        BN254.G1Point qM12;
3223        BN254.G1Point qM34;
3224        BN254.G1Point qO;
3225        BN254.G1Point qC;
3226        BN254.G1Point qH1;
3227        BN254.G1Point qH2;
3228        BN254.G1Point qH3;
3229        BN254.G1Point qH4;
3230        BN254.G1Point qEcc;
3231        bytes32 g2LSB;
3232        bytes32 g2MSB;
3233    }
3234}
3235
3236library LightClient {
3237    struct LightClientState {
3238        uint64 viewNum;
3239        uint64 blockHeight;
3240        BN254.ScalarField blockCommRoot;
3241    }
3242    struct StakeTableState {
3243        uint256 threshold;
3244        BN254.ScalarField blsKeyComm;
3245        BN254.ScalarField schnorrKeyComm;
3246        BN254.ScalarField amountComm;
3247    }
3248    struct StateHistoryCommitment {
3249        uint64 l1BlockHeight;
3250        uint64 l1BlockTimestamp;
3251        uint64 hotShotBlockHeight;
3252        BN254.ScalarField hotShotBlockCommRoot;
3253    }
3254}
3255
3256interface LightClientV3Mock {
3257    error AddressEmptyCode(address target);
3258    error DeprecatedApi();
3259    error ERC1967InvalidImplementation(address implementation);
3260    error ERC1967NonPayable();
3261    error FailedInnerCall();
3262    error InsufficientSnapshotHistory();
3263    error InvalidAddress();
3264    error InvalidArgs();
3265    error InvalidHotShotBlockForCommitmentCheck();
3266    error InvalidInitialization();
3267    error InvalidMaxStateHistory();
3268    error InvalidProof();
3269    error InvalidScalar();
3270    error MissingEpochRootUpdate();
3271    error NoChangeRequired();
3272    error NotInitializing();
3273    error OutdatedState();
3274    error OwnableInvalidOwner(address owner);
3275    error OwnableUnauthorizedAccount(address account);
3276    error OwnershipCannotBeRenounced();
3277    error ProverNotPermissioned();
3278    error UUPSUnauthorizedCallContext();
3279    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3280    error WrongStakeTableUsed();
3281
3282    event Initialized(uint64 version);
3283    event NewEpoch(uint64 epoch);
3284    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3285    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3286    event PermissionedProverNotRequired();
3287    event PermissionedProverRequired(address permissionedProver);
3288    event Upgrade(address implementation);
3289    event Upgraded(address indexed implementation);
3290
3291    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3292    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3293    function authRoot() external view returns (uint256);
3294    function blocksPerEpoch() external view returns (uint64);
3295    function currentBlockNumber() external view returns (uint256);
3296    function currentEpoch() external view returns (uint64);
3297    function disablePermissionedProverMode() external;
3298    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3299    function epochStartBlock() external view returns (uint64);
3300    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3301    function firstEpoch() external view returns (uint64);
3302    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3303    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3304    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3305    function getStateHistoryCount() external view returns (uint256);
3306    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3307    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3308    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3309    function initializeV3() external;
3310    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3311    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3312    function isPermissionedProverEnabled() external view returns (bool);
3313    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3314    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3315    function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
3316    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
3317    function owner() external view returns (address);
3318    function permissionedProver() external view returns (address);
3319    function proxiableUUID() external view returns (bytes32);
3320    function renounceOwnership() external;
3321    function setAuthRoot(uint256 newAuthRoot) external;
3322    function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
3323    function setFinalizedState(LightClient.LightClientState memory state) external;
3324    function setHotShotDownSince(uint256 l1Height) external;
3325    function setHotShotUp() external;
3326    function setPermissionedProver(address prover) external;
3327    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3328    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3329    function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
3330    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3331    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3332    function stateHistoryFirstIndex() external view returns (uint64);
3333    function stateHistoryRetentionPeriod() external view returns (uint32);
3334    function transferOwnership(address newOwner) external;
3335    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3336    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3337    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3338}
3339```
3340
3341...which was generated by the following JSON ABI:
3342```json
3343[
3344  {
3345    "type": "function",
3346    "name": "UPGRADE_INTERFACE_VERSION",
3347    "inputs": [],
3348    "outputs": [
3349      {
3350        "name": "",
3351        "type": "string",
3352        "internalType": "string"
3353      }
3354    ],
3355    "stateMutability": "view"
3356  },
3357  {
3358    "type": "function",
3359    "name": "_getVk",
3360    "inputs": [],
3361    "outputs": [
3362      {
3363        "name": "vk",
3364        "type": "tuple",
3365        "internalType": "struct IPlonkVerifier.VerifyingKey",
3366        "components": [
3367          {
3368            "name": "domainSize",
3369            "type": "uint256",
3370            "internalType": "uint256"
3371          },
3372          {
3373            "name": "numInputs",
3374            "type": "uint256",
3375            "internalType": "uint256"
3376          },
3377          {
3378            "name": "sigma0",
3379            "type": "tuple",
3380            "internalType": "struct BN254.G1Point",
3381            "components": [
3382              {
3383                "name": "x",
3384                "type": "uint256",
3385                "internalType": "BN254.BaseField"
3386              },
3387              {
3388                "name": "y",
3389                "type": "uint256",
3390                "internalType": "BN254.BaseField"
3391              }
3392            ]
3393          },
3394          {
3395            "name": "sigma1",
3396            "type": "tuple",
3397            "internalType": "struct BN254.G1Point",
3398            "components": [
3399              {
3400                "name": "x",
3401                "type": "uint256",
3402                "internalType": "BN254.BaseField"
3403              },
3404              {
3405                "name": "y",
3406                "type": "uint256",
3407                "internalType": "BN254.BaseField"
3408              }
3409            ]
3410          },
3411          {
3412            "name": "sigma2",
3413            "type": "tuple",
3414            "internalType": "struct BN254.G1Point",
3415            "components": [
3416              {
3417                "name": "x",
3418                "type": "uint256",
3419                "internalType": "BN254.BaseField"
3420              },
3421              {
3422                "name": "y",
3423                "type": "uint256",
3424                "internalType": "BN254.BaseField"
3425              }
3426            ]
3427          },
3428          {
3429            "name": "sigma3",
3430            "type": "tuple",
3431            "internalType": "struct BN254.G1Point",
3432            "components": [
3433              {
3434                "name": "x",
3435                "type": "uint256",
3436                "internalType": "BN254.BaseField"
3437              },
3438              {
3439                "name": "y",
3440                "type": "uint256",
3441                "internalType": "BN254.BaseField"
3442              }
3443            ]
3444          },
3445          {
3446            "name": "sigma4",
3447            "type": "tuple",
3448            "internalType": "struct BN254.G1Point",
3449            "components": [
3450              {
3451                "name": "x",
3452                "type": "uint256",
3453                "internalType": "BN254.BaseField"
3454              },
3455              {
3456                "name": "y",
3457                "type": "uint256",
3458                "internalType": "BN254.BaseField"
3459              }
3460            ]
3461          },
3462          {
3463            "name": "q1",
3464            "type": "tuple",
3465            "internalType": "struct BN254.G1Point",
3466            "components": [
3467              {
3468                "name": "x",
3469                "type": "uint256",
3470                "internalType": "BN254.BaseField"
3471              },
3472              {
3473                "name": "y",
3474                "type": "uint256",
3475                "internalType": "BN254.BaseField"
3476              }
3477            ]
3478          },
3479          {
3480            "name": "q2",
3481            "type": "tuple",
3482            "internalType": "struct BN254.G1Point",
3483            "components": [
3484              {
3485                "name": "x",
3486                "type": "uint256",
3487                "internalType": "BN254.BaseField"
3488              },
3489              {
3490                "name": "y",
3491                "type": "uint256",
3492                "internalType": "BN254.BaseField"
3493              }
3494            ]
3495          },
3496          {
3497            "name": "q3",
3498            "type": "tuple",
3499            "internalType": "struct BN254.G1Point",
3500            "components": [
3501              {
3502                "name": "x",
3503                "type": "uint256",
3504                "internalType": "BN254.BaseField"
3505              },
3506              {
3507                "name": "y",
3508                "type": "uint256",
3509                "internalType": "BN254.BaseField"
3510              }
3511            ]
3512          },
3513          {
3514            "name": "q4",
3515            "type": "tuple",
3516            "internalType": "struct BN254.G1Point",
3517            "components": [
3518              {
3519                "name": "x",
3520                "type": "uint256",
3521                "internalType": "BN254.BaseField"
3522              },
3523              {
3524                "name": "y",
3525                "type": "uint256",
3526                "internalType": "BN254.BaseField"
3527              }
3528            ]
3529          },
3530          {
3531            "name": "qM12",
3532            "type": "tuple",
3533            "internalType": "struct BN254.G1Point",
3534            "components": [
3535              {
3536                "name": "x",
3537                "type": "uint256",
3538                "internalType": "BN254.BaseField"
3539              },
3540              {
3541                "name": "y",
3542                "type": "uint256",
3543                "internalType": "BN254.BaseField"
3544              }
3545            ]
3546          },
3547          {
3548            "name": "qM34",
3549            "type": "tuple",
3550            "internalType": "struct BN254.G1Point",
3551            "components": [
3552              {
3553                "name": "x",
3554                "type": "uint256",
3555                "internalType": "BN254.BaseField"
3556              },
3557              {
3558                "name": "y",
3559                "type": "uint256",
3560                "internalType": "BN254.BaseField"
3561              }
3562            ]
3563          },
3564          {
3565            "name": "qO",
3566            "type": "tuple",
3567            "internalType": "struct BN254.G1Point",
3568            "components": [
3569              {
3570                "name": "x",
3571                "type": "uint256",
3572                "internalType": "BN254.BaseField"
3573              },
3574              {
3575                "name": "y",
3576                "type": "uint256",
3577                "internalType": "BN254.BaseField"
3578              }
3579            ]
3580          },
3581          {
3582            "name": "qC",
3583            "type": "tuple",
3584            "internalType": "struct BN254.G1Point",
3585            "components": [
3586              {
3587                "name": "x",
3588                "type": "uint256",
3589                "internalType": "BN254.BaseField"
3590              },
3591              {
3592                "name": "y",
3593                "type": "uint256",
3594                "internalType": "BN254.BaseField"
3595              }
3596            ]
3597          },
3598          {
3599            "name": "qH1",
3600            "type": "tuple",
3601            "internalType": "struct BN254.G1Point",
3602            "components": [
3603              {
3604                "name": "x",
3605                "type": "uint256",
3606                "internalType": "BN254.BaseField"
3607              },
3608              {
3609                "name": "y",
3610                "type": "uint256",
3611                "internalType": "BN254.BaseField"
3612              }
3613            ]
3614          },
3615          {
3616            "name": "qH2",
3617            "type": "tuple",
3618            "internalType": "struct BN254.G1Point",
3619            "components": [
3620              {
3621                "name": "x",
3622                "type": "uint256",
3623                "internalType": "BN254.BaseField"
3624              },
3625              {
3626                "name": "y",
3627                "type": "uint256",
3628                "internalType": "BN254.BaseField"
3629              }
3630            ]
3631          },
3632          {
3633            "name": "qH3",
3634            "type": "tuple",
3635            "internalType": "struct BN254.G1Point",
3636            "components": [
3637              {
3638                "name": "x",
3639                "type": "uint256",
3640                "internalType": "BN254.BaseField"
3641              },
3642              {
3643                "name": "y",
3644                "type": "uint256",
3645                "internalType": "BN254.BaseField"
3646              }
3647            ]
3648          },
3649          {
3650            "name": "qH4",
3651            "type": "tuple",
3652            "internalType": "struct BN254.G1Point",
3653            "components": [
3654              {
3655                "name": "x",
3656                "type": "uint256",
3657                "internalType": "BN254.BaseField"
3658              },
3659              {
3660                "name": "y",
3661                "type": "uint256",
3662                "internalType": "BN254.BaseField"
3663              }
3664            ]
3665          },
3666          {
3667            "name": "qEcc",
3668            "type": "tuple",
3669            "internalType": "struct BN254.G1Point",
3670            "components": [
3671              {
3672                "name": "x",
3673                "type": "uint256",
3674                "internalType": "BN254.BaseField"
3675              },
3676              {
3677                "name": "y",
3678                "type": "uint256",
3679                "internalType": "BN254.BaseField"
3680              }
3681            ]
3682          },
3683          {
3684            "name": "g2LSB",
3685            "type": "bytes32",
3686            "internalType": "bytes32"
3687          },
3688          {
3689            "name": "g2MSB",
3690            "type": "bytes32",
3691            "internalType": "bytes32"
3692          }
3693        ]
3694      }
3695    ],
3696    "stateMutability": "pure"
3697  },
3698  {
3699    "type": "function",
3700    "name": "authRoot",
3701    "inputs": [],
3702    "outputs": [
3703      {
3704        "name": "",
3705        "type": "uint256",
3706        "internalType": "uint256"
3707      }
3708    ],
3709    "stateMutability": "view"
3710  },
3711  {
3712    "type": "function",
3713    "name": "blocksPerEpoch",
3714    "inputs": [],
3715    "outputs": [
3716      {
3717        "name": "",
3718        "type": "uint64",
3719        "internalType": "uint64"
3720      }
3721    ],
3722    "stateMutability": "view"
3723  },
3724  {
3725    "type": "function",
3726    "name": "currentBlockNumber",
3727    "inputs": [],
3728    "outputs": [
3729      {
3730        "name": "",
3731        "type": "uint256",
3732        "internalType": "uint256"
3733      }
3734    ],
3735    "stateMutability": "view"
3736  },
3737  {
3738    "type": "function",
3739    "name": "currentEpoch",
3740    "inputs": [],
3741    "outputs": [
3742      {
3743        "name": "",
3744        "type": "uint64",
3745        "internalType": "uint64"
3746      }
3747    ],
3748    "stateMutability": "view"
3749  },
3750  {
3751    "type": "function",
3752    "name": "disablePermissionedProverMode",
3753    "inputs": [],
3754    "outputs": [],
3755    "stateMutability": "nonpayable"
3756  },
3757  {
3758    "type": "function",
3759    "name": "epochFromBlockNumber",
3760    "inputs": [
3761      {
3762        "name": "_blockNum",
3763        "type": "uint64",
3764        "internalType": "uint64"
3765      },
3766      {
3767        "name": "_blocksPerEpoch",
3768        "type": "uint64",
3769        "internalType": "uint64"
3770      }
3771    ],
3772    "outputs": [
3773      {
3774        "name": "",
3775        "type": "uint64",
3776        "internalType": "uint64"
3777      }
3778    ],
3779    "stateMutability": "pure"
3780  },
3781  {
3782    "type": "function",
3783    "name": "epochStartBlock",
3784    "inputs": [],
3785    "outputs": [
3786      {
3787        "name": "",
3788        "type": "uint64",
3789        "internalType": "uint64"
3790      }
3791    ],
3792    "stateMutability": "view"
3793  },
3794  {
3795    "type": "function",
3796    "name": "finalizedState",
3797    "inputs": [],
3798    "outputs": [
3799      {
3800        "name": "viewNum",
3801        "type": "uint64",
3802        "internalType": "uint64"
3803      },
3804      {
3805        "name": "blockHeight",
3806        "type": "uint64",
3807        "internalType": "uint64"
3808      },
3809      {
3810        "name": "blockCommRoot",
3811        "type": "uint256",
3812        "internalType": "BN254.ScalarField"
3813      }
3814    ],
3815    "stateMutability": "view"
3816  },
3817  {
3818    "type": "function",
3819    "name": "firstEpoch",
3820    "inputs": [],
3821    "outputs": [
3822      {
3823        "name": "",
3824        "type": "uint64",
3825        "internalType": "uint64"
3826      }
3827    ],
3828    "stateMutability": "view"
3829  },
3830  {
3831    "type": "function",
3832    "name": "genesisStakeTableState",
3833    "inputs": [],
3834    "outputs": [
3835      {
3836        "name": "threshold",
3837        "type": "uint256",
3838        "internalType": "uint256"
3839      },
3840      {
3841        "name": "blsKeyComm",
3842        "type": "uint256",
3843        "internalType": "BN254.ScalarField"
3844      },
3845      {
3846        "name": "schnorrKeyComm",
3847        "type": "uint256",
3848        "internalType": "BN254.ScalarField"
3849      },
3850      {
3851        "name": "amountComm",
3852        "type": "uint256",
3853        "internalType": "BN254.ScalarField"
3854      }
3855    ],
3856    "stateMutability": "view"
3857  },
3858  {
3859    "type": "function",
3860    "name": "genesisState",
3861    "inputs": [],
3862    "outputs": [
3863      {
3864        "name": "viewNum",
3865        "type": "uint64",
3866        "internalType": "uint64"
3867      },
3868      {
3869        "name": "blockHeight",
3870        "type": "uint64",
3871        "internalType": "uint64"
3872      },
3873      {
3874        "name": "blockCommRoot",
3875        "type": "uint256",
3876        "internalType": "BN254.ScalarField"
3877      }
3878    ],
3879    "stateMutability": "view"
3880  },
3881  {
3882    "type": "function",
3883    "name": "getHotShotCommitment",
3884    "inputs": [
3885      {
3886        "name": "hotShotBlockHeight",
3887        "type": "uint256",
3888        "internalType": "uint256"
3889      }
3890    ],
3891    "outputs": [
3892      {
3893        "name": "hotShotBlockCommRoot",
3894        "type": "uint256",
3895        "internalType": "BN254.ScalarField"
3896      },
3897      {
3898        "name": "hotshotBlockHeight",
3899        "type": "uint64",
3900        "internalType": "uint64"
3901      }
3902    ],
3903    "stateMutability": "view"
3904  },
3905  {
3906    "type": "function",
3907    "name": "getStateHistoryCount",
3908    "inputs": [],
3909    "outputs": [
3910      {
3911        "name": "",
3912        "type": "uint256",
3913        "internalType": "uint256"
3914      }
3915    ],
3916    "stateMutability": "view"
3917  },
3918  {
3919    "type": "function",
3920    "name": "getVersion",
3921    "inputs": [],
3922    "outputs": [
3923      {
3924        "name": "majorVersion",
3925        "type": "uint8",
3926        "internalType": "uint8"
3927      },
3928      {
3929        "name": "minorVersion",
3930        "type": "uint8",
3931        "internalType": "uint8"
3932      },
3933      {
3934        "name": "patchVersion",
3935        "type": "uint8",
3936        "internalType": "uint8"
3937      }
3938    ],
3939    "stateMutability": "pure"
3940  },
3941  {
3942    "type": "function",
3943    "name": "initialize",
3944    "inputs": [
3945      {
3946        "name": "_genesis",
3947        "type": "tuple",
3948        "internalType": "struct LightClient.LightClientState",
3949        "components": [
3950          {
3951            "name": "viewNum",
3952            "type": "uint64",
3953            "internalType": "uint64"
3954          },
3955          {
3956            "name": "blockHeight",
3957            "type": "uint64",
3958            "internalType": "uint64"
3959          },
3960          {
3961            "name": "blockCommRoot",
3962            "type": "uint256",
3963            "internalType": "BN254.ScalarField"
3964          }
3965        ]
3966      },
3967      {
3968        "name": "_genesisStakeTableState",
3969        "type": "tuple",
3970        "internalType": "struct LightClient.StakeTableState",
3971        "components": [
3972          {
3973            "name": "threshold",
3974            "type": "uint256",
3975            "internalType": "uint256"
3976          },
3977          {
3978            "name": "blsKeyComm",
3979            "type": "uint256",
3980            "internalType": "BN254.ScalarField"
3981          },
3982          {
3983            "name": "schnorrKeyComm",
3984            "type": "uint256",
3985            "internalType": "BN254.ScalarField"
3986          },
3987          {
3988            "name": "amountComm",
3989            "type": "uint256",
3990            "internalType": "BN254.ScalarField"
3991          }
3992        ]
3993      },
3994      {
3995        "name": "_stateHistoryRetentionPeriod",
3996        "type": "uint32",
3997        "internalType": "uint32"
3998      },
3999      {
4000        "name": "owner",
4001        "type": "address",
4002        "internalType": "address"
4003      }
4004    ],
4005    "outputs": [],
4006    "stateMutability": "nonpayable"
4007  },
4008  {
4009    "type": "function",
4010    "name": "initializeV2",
4011    "inputs": [
4012      {
4013        "name": "_blocksPerEpoch",
4014        "type": "uint64",
4015        "internalType": "uint64"
4016      },
4017      {
4018        "name": "_epochStartBlock",
4019        "type": "uint64",
4020        "internalType": "uint64"
4021      }
4022    ],
4023    "outputs": [],
4024    "stateMutability": "nonpayable"
4025  },
4026  {
4027    "type": "function",
4028    "name": "initializeV3",
4029    "inputs": [],
4030    "outputs": [],
4031    "stateMutability": "nonpayable"
4032  },
4033  {
4034    "type": "function",
4035    "name": "isEpochRoot",
4036    "inputs": [
4037      {
4038        "name": "blockHeight",
4039        "type": "uint64",
4040        "internalType": "uint64"
4041      }
4042    ],
4043    "outputs": [
4044      {
4045        "name": "",
4046        "type": "bool",
4047        "internalType": "bool"
4048      }
4049    ],
4050    "stateMutability": "view"
4051  },
4052  {
4053    "type": "function",
4054    "name": "isGtEpochRoot",
4055    "inputs": [
4056      {
4057        "name": "blockHeight",
4058        "type": "uint64",
4059        "internalType": "uint64"
4060      }
4061    ],
4062    "outputs": [
4063      {
4064        "name": "",
4065        "type": "bool",
4066        "internalType": "bool"
4067      }
4068    ],
4069    "stateMutability": "view"
4070  },
4071  {
4072    "type": "function",
4073    "name": "isPermissionedProverEnabled",
4074    "inputs": [],
4075    "outputs": [
4076      {
4077        "name": "",
4078        "type": "bool",
4079        "internalType": "bool"
4080      }
4081    ],
4082    "stateMutability": "view"
4083  },
4084  {
4085    "type": "function",
4086    "name": "lagOverEscapeHatchThreshold",
4087    "inputs": [
4088      {
4089        "name": "blockNumber",
4090        "type": "uint256",
4091        "internalType": "uint256"
4092      },
4093      {
4094        "name": "threshold",
4095        "type": "uint256",
4096        "internalType": "uint256"
4097      }
4098    ],
4099    "outputs": [
4100      {
4101        "name": "",
4102        "type": "bool",
4103        "internalType": "bool"
4104      }
4105    ],
4106    "stateMutability": "view"
4107  },
4108  {
4109    "type": "function",
4110    "name": "newFinalizedState",
4111    "inputs": [
4112      {
4113        "name": "",
4114        "type": "tuple",
4115        "internalType": "struct LightClient.LightClientState",
4116        "components": [
4117          {
4118            "name": "viewNum",
4119            "type": "uint64",
4120            "internalType": "uint64"
4121          },
4122          {
4123            "name": "blockHeight",
4124            "type": "uint64",
4125            "internalType": "uint64"
4126          },
4127          {
4128            "name": "blockCommRoot",
4129            "type": "uint256",
4130            "internalType": "BN254.ScalarField"
4131          }
4132        ]
4133      },
4134      {
4135        "name": "",
4136        "type": "tuple",
4137        "internalType": "struct IPlonkVerifier.PlonkProof",
4138        "components": [
4139          {
4140            "name": "wire0",
4141            "type": "tuple",
4142            "internalType": "struct BN254.G1Point",
4143            "components": [
4144              {
4145                "name": "x",
4146                "type": "uint256",
4147                "internalType": "BN254.BaseField"
4148              },
4149              {
4150                "name": "y",
4151                "type": "uint256",
4152                "internalType": "BN254.BaseField"
4153              }
4154            ]
4155          },
4156          {
4157            "name": "wire1",
4158            "type": "tuple",
4159            "internalType": "struct BN254.G1Point",
4160            "components": [
4161              {
4162                "name": "x",
4163                "type": "uint256",
4164                "internalType": "BN254.BaseField"
4165              },
4166              {
4167                "name": "y",
4168                "type": "uint256",
4169                "internalType": "BN254.BaseField"
4170              }
4171            ]
4172          },
4173          {
4174            "name": "wire2",
4175            "type": "tuple",
4176            "internalType": "struct BN254.G1Point",
4177            "components": [
4178              {
4179                "name": "x",
4180                "type": "uint256",
4181                "internalType": "BN254.BaseField"
4182              },
4183              {
4184                "name": "y",
4185                "type": "uint256",
4186                "internalType": "BN254.BaseField"
4187              }
4188            ]
4189          },
4190          {
4191            "name": "wire3",
4192            "type": "tuple",
4193            "internalType": "struct BN254.G1Point",
4194            "components": [
4195              {
4196                "name": "x",
4197                "type": "uint256",
4198                "internalType": "BN254.BaseField"
4199              },
4200              {
4201                "name": "y",
4202                "type": "uint256",
4203                "internalType": "BN254.BaseField"
4204              }
4205            ]
4206          },
4207          {
4208            "name": "wire4",
4209            "type": "tuple",
4210            "internalType": "struct BN254.G1Point",
4211            "components": [
4212              {
4213                "name": "x",
4214                "type": "uint256",
4215                "internalType": "BN254.BaseField"
4216              },
4217              {
4218                "name": "y",
4219                "type": "uint256",
4220                "internalType": "BN254.BaseField"
4221              }
4222            ]
4223          },
4224          {
4225            "name": "prodPerm",
4226            "type": "tuple",
4227            "internalType": "struct BN254.G1Point",
4228            "components": [
4229              {
4230                "name": "x",
4231                "type": "uint256",
4232                "internalType": "BN254.BaseField"
4233              },
4234              {
4235                "name": "y",
4236                "type": "uint256",
4237                "internalType": "BN254.BaseField"
4238              }
4239            ]
4240          },
4241          {
4242            "name": "split0",
4243            "type": "tuple",
4244            "internalType": "struct BN254.G1Point",
4245            "components": [
4246              {
4247                "name": "x",
4248                "type": "uint256",
4249                "internalType": "BN254.BaseField"
4250              },
4251              {
4252                "name": "y",
4253                "type": "uint256",
4254                "internalType": "BN254.BaseField"
4255              }
4256            ]
4257          },
4258          {
4259            "name": "split1",
4260            "type": "tuple",
4261            "internalType": "struct BN254.G1Point",
4262            "components": [
4263              {
4264                "name": "x",
4265                "type": "uint256",
4266                "internalType": "BN254.BaseField"
4267              },
4268              {
4269                "name": "y",
4270                "type": "uint256",
4271                "internalType": "BN254.BaseField"
4272              }
4273            ]
4274          },
4275          {
4276            "name": "split2",
4277            "type": "tuple",
4278            "internalType": "struct BN254.G1Point",
4279            "components": [
4280              {
4281                "name": "x",
4282                "type": "uint256",
4283                "internalType": "BN254.BaseField"
4284              },
4285              {
4286                "name": "y",
4287                "type": "uint256",
4288                "internalType": "BN254.BaseField"
4289              }
4290            ]
4291          },
4292          {
4293            "name": "split3",
4294            "type": "tuple",
4295            "internalType": "struct BN254.G1Point",
4296            "components": [
4297              {
4298                "name": "x",
4299                "type": "uint256",
4300                "internalType": "BN254.BaseField"
4301              },
4302              {
4303                "name": "y",
4304                "type": "uint256",
4305                "internalType": "BN254.BaseField"
4306              }
4307            ]
4308          },
4309          {
4310            "name": "split4",
4311            "type": "tuple",
4312            "internalType": "struct BN254.G1Point",
4313            "components": [
4314              {
4315                "name": "x",
4316                "type": "uint256",
4317                "internalType": "BN254.BaseField"
4318              },
4319              {
4320                "name": "y",
4321                "type": "uint256",
4322                "internalType": "BN254.BaseField"
4323              }
4324            ]
4325          },
4326          {
4327            "name": "zeta",
4328            "type": "tuple",
4329            "internalType": "struct BN254.G1Point",
4330            "components": [
4331              {
4332                "name": "x",
4333                "type": "uint256",
4334                "internalType": "BN254.BaseField"
4335              },
4336              {
4337                "name": "y",
4338                "type": "uint256",
4339                "internalType": "BN254.BaseField"
4340              }
4341            ]
4342          },
4343          {
4344            "name": "zetaOmega",
4345            "type": "tuple",
4346            "internalType": "struct BN254.G1Point",
4347            "components": [
4348              {
4349                "name": "x",
4350                "type": "uint256",
4351                "internalType": "BN254.BaseField"
4352              },
4353              {
4354                "name": "y",
4355                "type": "uint256",
4356                "internalType": "BN254.BaseField"
4357              }
4358            ]
4359          },
4360          {
4361            "name": "wireEval0",
4362            "type": "uint256",
4363            "internalType": "BN254.ScalarField"
4364          },
4365          {
4366            "name": "wireEval1",
4367            "type": "uint256",
4368            "internalType": "BN254.ScalarField"
4369          },
4370          {
4371            "name": "wireEval2",
4372            "type": "uint256",
4373            "internalType": "BN254.ScalarField"
4374          },
4375          {
4376            "name": "wireEval3",
4377            "type": "uint256",
4378            "internalType": "BN254.ScalarField"
4379          },
4380          {
4381            "name": "wireEval4",
4382            "type": "uint256",
4383            "internalType": "BN254.ScalarField"
4384          },
4385          {
4386            "name": "sigmaEval0",
4387            "type": "uint256",
4388            "internalType": "BN254.ScalarField"
4389          },
4390          {
4391            "name": "sigmaEval1",
4392            "type": "uint256",
4393            "internalType": "BN254.ScalarField"
4394          },
4395          {
4396            "name": "sigmaEval2",
4397            "type": "uint256",
4398            "internalType": "BN254.ScalarField"
4399          },
4400          {
4401            "name": "sigmaEval3",
4402            "type": "uint256",
4403            "internalType": "BN254.ScalarField"
4404          },
4405          {
4406            "name": "prodPermZetaOmegaEval",
4407            "type": "uint256",
4408            "internalType": "BN254.ScalarField"
4409          }
4410        ]
4411      }
4412    ],
4413    "outputs": [],
4414    "stateMutability": "pure"
4415  },
4416  {
4417    "type": "function",
4418    "name": "newFinalizedState",
4419    "inputs": [
4420      {
4421        "name": "",
4422        "type": "tuple",
4423        "internalType": "struct LightClient.LightClientState",
4424        "components": [
4425          {
4426            "name": "viewNum",
4427            "type": "uint64",
4428            "internalType": "uint64"
4429          },
4430          {
4431            "name": "blockHeight",
4432            "type": "uint64",
4433            "internalType": "uint64"
4434          },
4435          {
4436            "name": "blockCommRoot",
4437            "type": "uint256",
4438            "internalType": "BN254.ScalarField"
4439          }
4440        ]
4441      },
4442      {
4443        "name": "",
4444        "type": "tuple",
4445        "internalType": "struct LightClient.StakeTableState",
4446        "components": [
4447          {
4448            "name": "threshold",
4449            "type": "uint256",
4450            "internalType": "uint256"
4451          },
4452          {
4453            "name": "blsKeyComm",
4454            "type": "uint256",
4455            "internalType": "BN254.ScalarField"
4456          },
4457          {
4458            "name": "schnorrKeyComm",
4459            "type": "uint256",
4460            "internalType": "BN254.ScalarField"
4461          },
4462          {
4463            "name": "amountComm",
4464            "type": "uint256",
4465            "internalType": "BN254.ScalarField"
4466          }
4467        ]
4468      },
4469      {
4470        "name": "",
4471        "type": "tuple",
4472        "internalType": "struct IPlonkVerifier.PlonkProof",
4473        "components": [
4474          {
4475            "name": "wire0",
4476            "type": "tuple",
4477            "internalType": "struct BN254.G1Point",
4478            "components": [
4479              {
4480                "name": "x",
4481                "type": "uint256",
4482                "internalType": "BN254.BaseField"
4483              },
4484              {
4485                "name": "y",
4486                "type": "uint256",
4487                "internalType": "BN254.BaseField"
4488              }
4489            ]
4490          },
4491          {
4492            "name": "wire1",
4493            "type": "tuple",
4494            "internalType": "struct BN254.G1Point",
4495            "components": [
4496              {
4497                "name": "x",
4498                "type": "uint256",
4499                "internalType": "BN254.BaseField"
4500              },
4501              {
4502                "name": "y",
4503                "type": "uint256",
4504                "internalType": "BN254.BaseField"
4505              }
4506            ]
4507          },
4508          {
4509            "name": "wire2",
4510            "type": "tuple",
4511            "internalType": "struct BN254.G1Point",
4512            "components": [
4513              {
4514                "name": "x",
4515                "type": "uint256",
4516                "internalType": "BN254.BaseField"
4517              },
4518              {
4519                "name": "y",
4520                "type": "uint256",
4521                "internalType": "BN254.BaseField"
4522              }
4523            ]
4524          },
4525          {
4526            "name": "wire3",
4527            "type": "tuple",
4528            "internalType": "struct BN254.G1Point",
4529            "components": [
4530              {
4531                "name": "x",
4532                "type": "uint256",
4533                "internalType": "BN254.BaseField"
4534              },
4535              {
4536                "name": "y",
4537                "type": "uint256",
4538                "internalType": "BN254.BaseField"
4539              }
4540            ]
4541          },
4542          {
4543            "name": "wire4",
4544            "type": "tuple",
4545            "internalType": "struct BN254.G1Point",
4546            "components": [
4547              {
4548                "name": "x",
4549                "type": "uint256",
4550                "internalType": "BN254.BaseField"
4551              },
4552              {
4553                "name": "y",
4554                "type": "uint256",
4555                "internalType": "BN254.BaseField"
4556              }
4557            ]
4558          },
4559          {
4560            "name": "prodPerm",
4561            "type": "tuple",
4562            "internalType": "struct BN254.G1Point",
4563            "components": [
4564              {
4565                "name": "x",
4566                "type": "uint256",
4567                "internalType": "BN254.BaseField"
4568              },
4569              {
4570                "name": "y",
4571                "type": "uint256",
4572                "internalType": "BN254.BaseField"
4573              }
4574            ]
4575          },
4576          {
4577            "name": "split0",
4578            "type": "tuple",
4579            "internalType": "struct BN254.G1Point",
4580            "components": [
4581              {
4582                "name": "x",
4583                "type": "uint256",
4584                "internalType": "BN254.BaseField"
4585              },
4586              {
4587                "name": "y",
4588                "type": "uint256",
4589                "internalType": "BN254.BaseField"
4590              }
4591            ]
4592          },
4593          {
4594            "name": "split1",
4595            "type": "tuple",
4596            "internalType": "struct BN254.G1Point",
4597            "components": [
4598              {
4599                "name": "x",
4600                "type": "uint256",
4601                "internalType": "BN254.BaseField"
4602              },
4603              {
4604                "name": "y",
4605                "type": "uint256",
4606                "internalType": "BN254.BaseField"
4607              }
4608            ]
4609          },
4610          {
4611            "name": "split2",
4612            "type": "tuple",
4613            "internalType": "struct BN254.G1Point",
4614            "components": [
4615              {
4616                "name": "x",
4617                "type": "uint256",
4618                "internalType": "BN254.BaseField"
4619              },
4620              {
4621                "name": "y",
4622                "type": "uint256",
4623                "internalType": "BN254.BaseField"
4624              }
4625            ]
4626          },
4627          {
4628            "name": "split3",
4629            "type": "tuple",
4630            "internalType": "struct BN254.G1Point",
4631            "components": [
4632              {
4633                "name": "x",
4634                "type": "uint256",
4635                "internalType": "BN254.BaseField"
4636              },
4637              {
4638                "name": "y",
4639                "type": "uint256",
4640                "internalType": "BN254.BaseField"
4641              }
4642            ]
4643          },
4644          {
4645            "name": "split4",
4646            "type": "tuple",
4647            "internalType": "struct BN254.G1Point",
4648            "components": [
4649              {
4650                "name": "x",
4651                "type": "uint256",
4652                "internalType": "BN254.BaseField"
4653              },
4654              {
4655                "name": "y",
4656                "type": "uint256",
4657                "internalType": "BN254.BaseField"
4658              }
4659            ]
4660          },
4661          {
4662            "name": "zeta",
4663            "type": "tuple",
4664            "internalType": "struct BN254.G1Point",
4665            "components": [
4666              {
4667                "name": "x",
4668                "type": "uint256",
4669                "internalType": "BN254.BaseField"
4670              },
4671              {
4672                "name": "y",
4673                "type": "uint256",
4674                "internalType": "BN254.BaseField"
4675              }
4676            ]
4677          },
4678          {
4679            "name": "zetaOmega",
4680            "type": "tuple",
4681            "internalType": "struct BN254.G1Point",
4682            "components": [
4683              {
4684                "name": "x",
4685                "type": "uint256",
4686                "internalType": "BN254.BaseField"
4687              },
4688              {
4689                "name": "y",
4690                "type": "uint256",
4691                "internalType": "BN254.BaseField"
4692              }
4693            ]
4694          },
4695          {
4696            "name": "wireEval0",
4697            "type": "uint256",
4698            "internalType": "BN254.ScalarField"
4699          },
4700          {
4701            "name": "wireEval1",
4702            "type": "uint256",
4703            "internalType": "BN254.ScalarField"
4704          },
4705          {
4706            "name": "wireEval2",
4707            "type": "uint256",
4708            "internalType": "BN254.ScalarField"
4709          },
4710          {
4711            "name": "wireEval3",
4712            "type": "uint256",
4713            "internalType": "BN254.ScalarField"
4714          },
4715          {
4716            "name": "wireEval4",
4717            "type": "uint256",
4718            "internalType": "BN254.ScalarField"
4719          },
4720          {
4721            "name": "sigmaEval0",
4722            "type": "uint256",
4723            "internalType": "BN254.ScalarField"
4724          },
4725          {
4726            "name": "sigmaEval1",
4727            "type": "uint256",
4728            "internalType": "BN254.ScalarField"
4729          },
4730          {
4731            "name": "sigmaEval2",
4732            "type": "uint256",
4733            "internalType": "BN254.ScalarField"
4734          },
4735          {
4736            "name": "sigmaEval3",
4737            "type": "uint256",
4738            "internalType": "BN254.ScalarField"
4739          },
4740          {
4741            "name": "prodPermZetaOmegaEval",
4742            "type": "uint256",
4743            "internalType": "BN254.ScalarField"
4744          }
4745        ]
4746      }
4747    ],
4748    "outputs": [],
4749    "stateMutability": "pure"
4750  },
4751  {
4752    "type": "function",
4753    "name": "newFinalizedState",
4754    "inputs": [
4755      {
4756        "name": "newState",
4757        "type": "tuple",
4758        "internalType": "struct LightClient.LightClientState",
4759        "components": [
4760          {
4761            "name": "viewNum",
4762            "type": "uint64",
4763            "internalType": "uint64"
4764          },
4765          {
4766            "name": "blockHeight",
4767            "type": "uint64",
4768            "internalType": "uint64"
4769          },
4770          {
4771            "name": "blockCommRoot",
4772            "type": "uint256",
4773            "internalType": "BN254.ScalarField"
4774          }
4775        ]
4776      },
4777      {
4778        "name": "nextStakeTable",
4779        "type": "tuple",
4780        "internalType": "struct LightClient.StakeTableState",
4781        "components": [
4782          {
4783            "name": "threshold",
4784            "type": "uint256",
4785            "internalType": "uint256"
4786          },
4787          {
4788            "name": "blsKeyComm",
4789            "type": "uint256",
4790            "internalType": "BN254.ScalarField"
4791          },
4792          {
4793            "name": "schnorrKeyComm",
4794            "type": "uint256",
4795            "internalType": "BN254.ScalarField"
4796          },
4797          {
4798            "name": "amountComm",
4799            "type": "uint256",
4800            "internalType": "BN254.ScalarField"
4801          }
4802        ]
4803      },
4804      {
4805        "name": "newAuthRoot",
4806        "type": "uint256",
4807        "internalType": "uint256"
4808      },
4809      {
4810        "name": "proof",
4811        "type": "tuple",
4812        "internalType": "struct IPlonkVerifier.PlonkProof",
4813        "components": [
4814          {
4815            "name": "wire0",
4816            "type": "tuple",
4817            "internalType": "struct BN254.G1Point",
4818            "components": [
4819              {
4820                "name": "x",
4821                "type": "uint256",
4822                "internalType": "BN254.BaseField"
4823              },
4824              {
4825                "name": "y",
4826                "type": "uint256",
4827                "internalType": "BN254.BaseField"
4828              }
4829            ]
4830          },
4831          {
4832            "name": "wire1",
4833            "type": "tuple",
4834            "internalType": "struct BN254.G1Point",
4835            "components": [
4836              {
4837                "name": "x",
4838                "type": "uint256",
4839                "internalType": "BN254.BaseField"
4840              },
4841              {
4842                "name": "y",
4843                "type": "uint256",
4844                "internalType": "BN254.BaseField"
4845              }
4846            ]
4847          },
4848          {
4849            "name": "wire2",
4850            "type": "tuple",
4851            "internalType": "struct BN254.G1Point",
4852            "components": [
4853              {
4854                "name": "x",
4855                "type": "uint256",
4856                "internalType": "BN254.BaseField"
4857              },
4858              {
4859                "name": "y",
4860                "type": "uint256",
4861                "internalType": "BN254.BaseField"
4862              }
4863            ]
4864          },
4865          {
4866            "name": "wire3",
4867            "type": "tuple",
4868            "internalType": "struct BN254.G1Point",
4869            "components": [
4870              {
4871                "name": "x",
4872                "type": "uint256",
4873                "internalType": "BN254.BaseField"
4874              },
4875              {
4876                "name": "y",
4877                "type": "uint256",
4878                "internalType": "BN254.BaseField"
4879              }
4880            ]
4881          },
4882          {
4883            "name": "wire4",
4884            "type": "tuple",
4885            "internalType": "struct BN254.G1Point",
4886            "components": [
4887              {
4888                "name": "x",
4889                "type": "uint256",
4890                "internalType": "BN254.BaseField"
4891              },
4892              {
4893                "name": "y",
4894                "type": "uint256",
4895                "internalType": "BN254.BaseField"
4896              }
4897            ]
4898          },
4899          {
4900            "name": "prodPerm",
4901            "type": "tuple",
4902            "internalType": "struct BN254.G1Point",
4903            "components": [
4904              {
4905                "name": "x",
4906                "type": "uint256",
4907                "internalType": "BN254.BaseField"
4908              },
4909              {
4910                "name": "y",
4911                "type": "uint256",
4912                "internalType": "BN254.BaseField"
4913              }
4914            ]
4915          },
4916          {
4917            "name": "split0",
4918            "type": "tuple",
4919            "internalType": "struct BN254.G1Point",
4920            "components": [
4921              {
4922                "name": "x",
4923                "type": "uint256",
4924                "internalType": "BN254.BaseField"
4925              },
4926              {
4927                "name": "y",
4928                "type": "uint256",
4929                "internalType": "BN254.BaseField"
4930              }
4931            ]
4932          },
4933          {
4934            "name": "split1",
4935            "type": "tuple",
4936            "internalType": "struct BN254.G1Point",
4937            "components": [
4938              {
4939                "name": "x",
4940                "type": "uint256",
4941                "internalType": "BN254.BaseField"
4942              },
4943              {
4944                "name": "y",
4945                "type": "uint256",
4946                "internalType": "BN254.BaseField"
4947              }
4948            ]
4949          },
4950          {
4951            "name": "split2",
4952            "type": "tuple",
4953            "internalType": "struct BN254.G1Point",
4954            "components": [
4955              {
4956                "name": "x",
4957                "type": "uint256",
4958                "internalType": "BN254.BaseField"
4959              },
4960              {
4961                "name": "y",
4962                "type": "uint256",
4963                "internalType": "BN254.BaseField"
4964              }
4965            ]
4966          },
4967          {
4968            "name": "split3",
4969            "type": "tuple",
4970            "internalType": "struct BN254.G1Point",
4971            "components": [
4972              {
4973                "name": "x",
4974                "type": "uint256",
4975                "internalType": "BN254.BaseField"
4976              },
4977              {
4978                "name": "y",
4979                "type": "uint256",
4980                "internalType": "BN254.BaseField"
4981              }
4982            ]
4983          },
4984          {
4985            "name": "split4",
4986            "type": "tuple",
4987            "internalType": "struct BN254.G1Point",
4988            "components": [
4989              {
4990                "name": "x",
4991                "type": "uint256",
4992                "internalType": "BN254.BaseField"
4993              },
4994              {
4995                "name": "y",
4996                "type": "uint256",
4997                "internalType": "BN254.BaseField"
4998              }
4999            ]
5000          },
5001          {
5002            "name": "zeta",
5003            "type": "tuple",
5004            "internalType": "struct BN254.G1Point",
5005            "components": [
5006              {
5007                "name": "x",
5008                "type": "uint256",
5009                "internalType": "BN254.BaseField"
5010              },
5011              {
5012                "name": "y",
5013                "type": "uint256",
5014                "internalType": "BN254.BaseField"
5015              }
5016            ]
5017          },
5018          {
5019            "name": "zetaOmega",
5020            "type": "tuple",
5021            "internalType": "struct BN254.G1Point",
5022            "components": [
5023              {
5024                "name": "x",
5025                "type": "uint256",
5026                "internalType": "BN254.BaseField"
5027              },
5028              {
5029                "name": "y",
5030                "type": "uint256",
5031                "internalType": "BN254.BaseField"
5032              }
5033            ]
5034          },
5035          {
5036            "name": "wireEval0",
5037            "type": "uint256",
5038            "internalType": "BN254.ScalarField"
5039          },
5040          {
5041            "name": "wireEval1",
5042            "type": "uint256",
5043            "internalType": "BN254.ScalarField"
5044          },
5045          {
5046            "name": "wireEval2",
5047            "type": "uint256",
5048            "internalType": "BN254.ScalarField"
5049          },
5050          {
5051            "name": "wireEval3",
5052            "type": "uint256",
5053            "internalType": "BN254.ScalarField"
5054          },
5055          {
5056            "name": "wireEval4",
5057            "type": "uint256",
5058            "internalType": "BN254.ScalarField"
5059          },
5060          {
5061            "name": "sigmaEval0",
5062            "type": "uint256",
5063            "internalType": "BN254.ScalarField"
5064          },
5065          {
5066            "name": "sigmaEval1",
5067            "type": "uint256",
5068            "internalType": "BN254.ScalarField"
5069          },
5070          {
5071            "name": "sigmaEval2",
5072            "type": "uint256",
5073            "internalType": "BN254.ScalarField"
5074          },
5075          {
5076            "name": "sigmaEval3",
5077            "type": "uint256",
5078            "internalType": "BN254.ScalarField"
5079          },
5080          {
5081            "name": "prodPermZetaOmegaEval",
5082            "type": "uint256",
5083            "internalType": "BN254.ScalarField"
5084          }
5085        ]
5086      }
5087    ],
5088    "outputs": [],
5089    "stateMutability": "nonpayable"
5090  },
5091  {
5092    "type": "function",
5093    "name": "owner",
5094    "inputs": [],
5095    "outputs": [
5096      {
5097        "name": "",
5098        "type": "address",
5099        "internalType": "address"
5100      }
5101    ],
5102    "stateMutability": "view"
5103  },
5104  {
5105    "type": "function",
5106    "name": "permissionedProver",
5107    "inputs": [],
5108    "outputs": [
5109      {
5110        "name": "",
5111        "type": "address",
5112        "internalType": "address"
5113      }
5114    ],
5115    "stateMutability": "view"
5116  },
5117  {
5118    "type": "function",
5119    "name": "proxiableUUID",
5120    "inputs": [],
5121    "outputs": [
5122      {
5123        "name": "",
5124        "type": "bytes32",
5125        "internalType": "bytes32"
5126      }
5127    ],
5128    "stateMutability": "view"
5129  },
5130  {
5131    "type": "function",
5132    "name": "renounceOwnership",
5133    "inputs": [],
5134    "outputs": [],
5135    "stateMutability": "nonpayable"
5136  },
5137  {
5138    "type": "function",
5139    "name": "setAuthRoot",
5140    "inputs": [
5141      {
5142        "name": "newAuthRoot",
5143        "type": "uint256",
5144        "internalType": "uint256"
5145      }
5146    ],
5147    "outputs": [],
5148    "stateMutability": "nonpayable"
5149  },
5150  {
5151    "type": "function",
5152    "name": "setBlocksPerEpoch",
5153    "inputs": [
5154      {
5155        "name": "newBlocksPerEpoch",
5156        "type": "uint64",
5157        "internalType": "uint64"
5158      }
5159    ],
5160    "outputs": [],
5161    "stateMutability": "nonpayable"
5162  },
5163  {
5164    "type": "function",
5165    "name": "setFinalizedState",
5166    "inputs": [
5167      {
5168        "name": "state",
5169        "type": "tuple",
5170        "internalType": "struct LightClient.LightClientState",
5171        "components": [
5172          {
5173            "name": "viewNum",
5174            "type": "uint64",
5175            "internalType": "uint64"
5176          },
5177          {
5178            "name": "blockHeight",
5179            "type": "uint64",
5180            "internalType": "uint64"
5181          },
5182          {
5183            "name": "blockCommRoot",
5184            "type": "uint256",
5185            "internalType": "BN254.ScalarField"
5186          }
5187        ]
5188      }
5189    ],
5190    "outputs": [],
5191    "stateMutability": "nonpayable"
5192  },
5193  {
5194    "type": "function",
5195    "name": "setHotShotDownSince",
5196    "inputs": [
5197      {
5198        "name": "l1Height",
5199        "type": "uint256",
5200        "internalType": "uint256"
5201      }
5202    ],
5203    "outputs": [],
5204    "stateMutability": "nonpayable"
5205  },
5206  {
5207    "type": "function",
5208    "name": "setHotShotUp",
5209    "inputs": [],
5210    "outputs": [],
5211    "stateMutability": "nonpayable"
5212  },
5213  {
5214    "type": "function",
5215    "name": "setPermissionedProver",
5216    "inputs": [
5217      {
5218        "name": "prover",
5219        "type": "address",
5220        "internalType": "address"
5221      }
5222    ],
5223    "outputs": [],
5224    "stateMutability": "nonpayable"
5225  },
5226  {
5227    "type": "function",
5228    "name": "setStateHistory",
5229    "inputs": [
5230      {
5231        "name": "_stateHistoryCommitments",
5232        "type": "tuple[]",
5233        "internalType": "struct LightClient.StateHistoryCommitment[]",
5234        "components": [
5235          {
5236            "name": "l1BlockHeight",
5237            "type": "uint64",
5238            "internalType": "uint64"
5239          },
5240          {
5241            "name": "l1BlockTimestamp",
5242            "type": "uint64",
5243            "internalType": "uint64"
5244          },
5245          {
5246            "name": "hotShotBlockHeight",
5247            "type": "uint64",
5248            "internalType": "uint64"
5249          },
5250          {
5251            "name": "hotShotBlockCommRoot",
5252            "type": "uint256",
5253            "internalType": "BN254.ScalarField"
5254          }
5255        ]
5256      }
5257    ],
5258    "outputs": [],
5259    "stateMutability": "nonpayable"
5260  },
5261  {
5262    "type": "function",
5263    "name": "setStateHistoryRetentionPeriod",
5264    "inputs": [
5265      {
5266        "name": "historySeconds",
5267        "type": "uint32",
5268        "internalType": "uint32"
5269      }
5270    ],
5271    "outputs": [],
5272    "stateMutability": "nonpayable"
5273  },
5274  {
5275    "type": "function",
5276    "name": "setVotingStakeTableState",
5277    "inputs": [
5278      {
5279        "name": "stake",
5280        "type": "tuple",
5281        "internalType": "struct LightClient.StakeTableState",
5282        "components": [
5283          {
5284            "name": "threshold",
5285            "type": "uint256",
5286            "internalType": "uint256"
5287          },
5288          {
5289            "name": "blsKeyComm",
5290            "type": "uint256",
5291            "internalType": "BN254.ScalarField"
5292          },
5293          {
5294            "name": "schnorrKeyComm",
5295            "type": "uint256",
5296            "internalType": "BN254.ScalarField"
5297          },
5298          {
5299            "name": "amountComm",
5300            "type": "uint256",
5301            "internalType": "BN254.ScalarField"
5302          }
5303        ]
5304      }
5305    ],
5306    "outputs": [],
5307    "stateMutability": "nonpayable"
5308  },
5309  {
5310    "type": "function",
5311    "name": "setstateHistoryRetentionPeriod",
5312    "inputs": [
5313      {
5314        "name": "historySeconds",
5315        "type": "uint32",
5316        "internalType": "uint32"
5317      }
5318    ],
5319    "outputs": [],
5320    "stateMutability": "nonpayable"
5321  },
5322  {
5323    "type": "function",
5324    "name": "stateHistoryCommitments",
5325    "inputs": [
5326      {
5327        "name": "",
5328        "type": "uint256",
5329        "internalType": "uint256"
5330      }
5331    ],
5332    "outputs": [
5333      {
5334        "name": "l1BlockHeight",
5335        "type": "uint64",
5336        "internalType": "uint64"
5337      },
5338      {
5339        "name": "l1BlockTimestamp",
5340        "type": "uint64",
5341        "internalType": "uint64"
5342      },
5343      {
5344        "name": "hotShotBlockHeight",
5345        "type": "uint64",
5346        "internalType": "uint64"
5347      },
5348      {
5349        "name": "hotShotBlockCommRoot",
5350        "type": "uint256",
5351        "internalType": "BN254.ScalarField"
5352      }
5353    ],
5354    "stateMutability": "view"
5355  },
5356  {
5357    "type": "function",
5358    "name": "stateHistoryFirstIndex",
5359    "inputs": [],
5360    "outputs": [
5361      {
5362        "name": "",
5363        "type": "uint64",
5364        "internalType": "uint64"
5365      }
5366    ],
5367    "stateMutability": "view"
5368  },
5369  {
5370    "type": "function",
5371    "name": "stateHistoryRetentionPeriod",
5372    "inputs": [],
5373    "outputs": [
5374      {
5375        "name": "",
5376        "type": "uint32",
5377        "internalType": "uint32"
5378      }
5379    ],
5380    "stateMutability": "view"
5381  },
5382  {
5383    "type": "function",
5384    "name": "transferOwnership",
5385    "inputs": [
5386      {
5387        "name": "newOwner",
5388        "type": "address",
5389        "internalType": "address"
5390      }
5391    ],
5392    "outputs": [],
5393    "stateMutability": "nonpayable"
5394  },
5395  {
5396    "type": "function",
5397    "name": "updateEpochStartBlock",
5398    "inputs": [
5399      {
5400        "name": "newEpochStartBlock",
5401        "type": "uint64",
5402        "internalType": "uint64"
5403      }
5404    ],
5405    "outputs": [],
5406    "stateMutability": "nonpayable"
5407  },
5408  {
5409    "type": "function",
5410    "name": "upgradeToAndCall",
5411    "inputs": [
5412      {
5413        "name": "newImplementation",
5414        "type": "address",
5415        "internalType": "address"
5416      },
5417      {
5418        "name": "data",
5419        "type": "bytes",
5420        "internalType": "bytes"
5421      }
5422    ],
5423    "outputs": [],
5424    "stateMutability": "payable"
5425  },
5426  {
5427    "type": "function",
5428    "name": "votingStakeTableState",
5429    "inputs": [],
5430    "outputs": [
5431      {
5432        "name": "threshold",
5433        "type": "uint256",
5434        "internalType": "uint256"
5435      },
5436      {
5437        "name": "blsKeyComm",
5438        "type": "uint256",
5439        "internalType": "BN254.ScalarField"
5440      },
5441      {
5442        "name": "schnorrKeyComm",
5443        "type": "uint256",
5444        "internalType": "BN254.ScalarField"
5445      },
5446      {
5447        "name": "amountComm",
5448        "type": "uint256",
5449        "internalType": "BN254.ScalarField"
5450      }
5451    ],
5452    "stateMutability": "view"
5453  },
5454  {
5455    "type": "event",
5456    "name": "Initialized",
5457    "inputs": [
5458      {
5459        "name": "version",
5460        "type": "uint64",
5461        "indexed": false,
5462        "internalType": "uint64"
5463      }
5464    ],
5465    "anonymous": false
5466  },
5467  {
5468    "type": "event",
5469    "name": "NewEpoch",
5470    "inputs": [
5471      {
5472        "name": "epoch",
5473        "type": "uint64",
5474        "indexed": false,
5475        "internalType": "uint64"
5476      }
5477    ],
5478    "anonymous": false
5479  },
5480  {
5481    "type": "event",
5482    "name": "NewState",
5483    "inputs": [
5484      {
5485        "name": "viewNum",
5486        "type": "uint64",
5487        "indexed": true,
5488        "internalType": "uint64"
5489      },
5490      {
5491        "name": "blockHeight",
5492        "type": "uint64",
5493        "indexed": true,
5494        "internalType": "uint64"
5495      },
5496      {
5497        "name": "blockCommRoot",
5498        "type": "uint256",
5499        "indexed": false,
5500        "internalType": "BN254.ScalarField"
5501      }
5502    ],
5503    "anonymous": false
5504  },
5505  {
5506    "type": "event",
5507    "name": "OwnershipTransferred",
5508    "inputs": [
5509      {
5510        "name": "previousOwner",
5511        "type": "address",
5512        "indexed": true,
5513        "internalType": "address"
5514      },
5515      {
5516        "name": "newOwner",
5517        "type": "address",
5518        "indexed": true,
5519        "internalType": "address"
5520      }
5521    ],
5522    "anonymous": false
5523  },
5524  {
5525    "type": "event",
5526    "name": "PermissionedProverNotRequired",
5527    "inputs": [],
5528    "anonymous": false
5529  },
5530  {
5531    "type": "event",
5532    "name": "PermissionedProverRequired",
5533    "inputs": [
5534      {
5535        "name": "permissionedProver",
5536        "type": "address",
5537        "indexed": false,
5538        "internalType": "address"
5539      }
5540    ],
5541    "anonymous": false
5542  },
5543  {
5544    "type": "event",
5545    "name": "Upgrade",
5546    "inputs": [
5547      {
5548        "name": "implementation",
5549        "type": "address",
5550        "indexed": false,
5551        "internalType": "address"
5552      }
5553    ],
5554    "anonymous": false
5555  },
5556  {
5557    "type": "event",
5558    "name": "Upgraded",
5559    "inputs": [
5560      {
5561        "name": "implementation",
5562        "type": "address",
5563        "indexed": true,
5564        "internalType": "address"
5565      }
5566    ],
5567    "anonymous": false
5568  },
5569  {
5570    "type": "error",
5571    "name": "AddressEmptyCode",
5572    "inputs": [
5573      {
5574        "name": "target",
5575        "type": "address",
5576        "internalType": "address"
5577      }
5578    ]
5579  },
5580  {
5581    "type": "error",
5582    "name": "DeprecatedApi",
5583    "inputs": []
5584  },
5585  {
5586    "type": "error",
5587    "name": "ERC1967InvalidImplementation",
5588    "inputs": [
5589      {
5590        "name": "implementation",
5591        "type": "address",
5592        "internalType": "address"
5593      }
5594    ]
5595  },
5596  {
5597    "type": "error",
5598    "name": "ERC1967NonPayable",
5599    "inputs": []
5600  },
5601  {
5602    "type": "error",
5603    "name": "FailedInnerCall",
5604    "inputs": []
5605  },
5606  {
5607    "type": "error",
5608    "name": "InsufficientSnapshotHistory",
5609    "inputs": []
5610  },
5611  {
5612    "type": "error",
5613    "name": "InvalidAddress",
5614    "inputs": []
5615  },
5616  {
5617    "type": "error",
5618    "name": "InvalidArgs",
5619    "inputs": []
5620  },
5621  {
5622    "type": "error",
5623    "name": "InvalidHotShotBlockForCommitmentCheck",
5624    "inputs": []
5625  },
5626  {
5627    "type": "error",
5628    "name": "InvalidInitialization",
5629    "inputs": []
5630  },
5631  {
5632    "type": "error",
5633    "name": "InvalidMaxStateHistory",
5634    "inputs": []
5635  },
5636  {
5637    "type": "error",
5638    "name": "InvalidProof",
5639    "inputs": []
5640  },
5641  {
5642    "type": "error",
5643    "name": "InvalidScalar",
5644    "inputs": []
5645  },
5646  {
5647    "type": "error",
5648    "name": "MissingEpochRootUpdate",
5649    "inputs": []
5650  },
5651  {
5652    "type": "error",
5653    "name": "NoChangeRequired",
5654    "inputs": []
5655  },
5656  {
5657    "type": "error",
5658    "name": "NotInitializing",
5659    "inputs": []
5660  },
5661  {
5662    "type": "error",
5663    "name": "OutdatedState",
5664    "inputs": []
5665  },
5666  {
5667    "type": "error",
5668    "name": "OwnableInvalidOwner",
5669    "inputs": [
5670      {
5671        "name": "owner",
5672        "type": "address",
5673        "internalType": "address"
5674      }
5675    ]
5676  },
5677  {
5678    "type": "error",
5679    "name": "OwnableUnauthorizedAccount",
5680    "inputs": [
5681      {
5682        "name": "account",
5683        "type": "address",
5684        "internalType": "address"
5685      }
5686    ]
5687  },
5688  {
5689    "type": "error",
5690    "name": "OwnershipCannotBeRenounced",
5691    "inputs": []
5692  },
5693  {
5694    "type": "error",
5695    "name": "ProverNotPermissioned",
5696    "inputs": []
5697  },
5698  {
5699    "type": "error",
5700    "name": "UUPSUnauthorizedCallContext",
5701    "inputs": []
5702  },
5703  {
5704    "type": "error",
5705    "name": "UUPSUnsupportedProxiableUUID",
5706    "inputs": [
5707      {
5708        "name": "slot",
5709        "type": "bytes32",
5710        "internalType": "bytes32"
5711      }
5712    ]
5713  },
5714  {
5715    "type": "error",
5716    "name": "WrongStakeTableUsed",
5717    "inputs": []
5718  }
5719]
5720```*/
5721#[allow(
5722    non_camel_case_types,
5723    non_snake_case,
5724    clippy::pub_underscore_fields,
5725    clippy::style,
5726    clippy::empty_structs_with_brackets
5727)]
5728pub mod LightClientV3Mock {
5729    use super::*;
5730    use alloy::sol_types as alloy_sol_types;
5731    /// The creation / init bytecode of the contract.
5732    ///
5733    /// ```text
5734    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613aeb6100f95f395f8181611dc601528181611def0152611f6c0152613aeb5ff3fe608060405260043610610280575f3560e01c806369cc6a0411610155578063aabd5db3116100be578063d24d933d11610078578063d24d933d146108d5578063e030330114610904578063f068205414610923578063f2fde38b14610942578063f567616014610961578063f9e50d1914610980575f5ffd5b8063aabd5db3146107e5578063ad3cb1cc14610804578063b33bc49114610841578063b5adea3c14610860578063c23b9e9e1461087f578063c8e5e498146108b7575f5ffd5b80638da5cb5b1161010f5780638da5cb5b146106e257806390c143901461071e57806396c1ca611461073d578063998328e81461075c5780639baa3cc9146107715780639fdb54a714610790575f5ffd5b806369cc6a0414610631578063715018a614610645578063757c37ad146106595780637667180814610673578063826e41fc146106875780638584d23f146106a6575f5ffd5b8063300c89dd116101f757806341682744116101b15780634168274414610575578063426d319414610592578063433dba9f146105b35780634f1ef286146105d257806352d1902d146105e5578063623a1338146105f9575f5ffd5b8063300c89dd1461048c578063313df7b1146104ab578063378ec23b146104e257806338e454b1146104fe5780633c23b6db146105125780633ed55b7b1461054f575f5ffd5b8063167ac61811610248578063167ac618146103905780631af08034146103af5780632063d4f7146103ce57806325297427146103ed5780632d52aad61461041c5780632f79889d1461044e575f5ffd5b8063013fa5fc1461028457806302b592f3146102a55780630625e19b146103025780630d8e6e2c1461034457806312173c2c1461036f575b5f5ffd5b34801561028f575f5ffd5b506102a361029e366004612bf2565b610994565b005b3480156102b0575f5ffd5b506102c46102bf366004612c0b565b610a47565b6040516102f994939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b34801561030d575f5ffd5b50600b54600c54600d54600e546103249392919084565b6040805194855260208501939093529183015260608201526080016102f9565b34801561034f575f5ffd5b5060408051600381525f60208201819052918101919091526060016102f9565b34801561037a575f5ffd5b50610383610a90565b6040516102f99190612c22565b34801561039b575f5ffd5b506102a36103aa366004612e39565b6110c0565b3480156103ba575f5ffd5b506102a36103c9366004612c0b565b600f55565b3480156103d9575f5ffd5b506102a36103e836600461311d565b611137565b3480156103f8575f5ffd5b5061040c610407366004612e39565b611150565b60405190151581526020016102f9565b348015610427575f5ffd5b506102a3610436366004612c0b565b6010805460ff60401b1916600160401b179055601155565b348015610459575f5ffd5b5060085461047490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102f9565b348015610497575f5ffd5b5061040c6104a6366004612e39565b6111b2565b3480156104b6575f5ffd5b506008546104ca906001600160a01b031681565b6040516001600160a01b0390911681526020016102f9565b3480156104ed575f5ffd5b50435b6040519081526020016102f9565b348015610509575f5ffd5b506102a3611247565b34801561051d575f5ffd5b506102a361052c366004612e39565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b34801561055a575f5ffd5b50600a5461047490600160401b90046001600160401b031681565b348015610580575f5ffd5b506010546001600160401b0316610474565b34801561059d575f5ffd5b505f546001546002546003546103249392919084565b3480156105be575f5ffd5b506102a36105cd366004613164565b61133e565b6102a36105e036600461317d565b611352565b3480156105f0575f5ffd5b506104f0611371565b348015610604575f5ffd5b506102a3610613366004613263565b8051600b556020810151600c556040810151600d5560600151600e55565b34801561063c575f5ffd5b506102a361138c565b348015610650575f5ffd5b506102a36113fa565b348015610664575f5ffd5b506102a36103e836600461327d565b34801561067e575f5ffd5b5061047461141b565b348015610692575f5ffd5b506008546001600160a01b0316151561040c565b3480156106b1575f5ffd5b506106c56106c0366004612c0b565b611445565b604080519283526001600160401b039091166020830152016102f9565b3480156106ed575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166104ca565b348015610729575f5ffd5b506104746107383660046132c1565b611570565b348015610748575f5ffd5b506102a3610757366004613164565b6115df565b348015610767575f5ffd5b506104f0600f5481565b34801561077c575f5ffd5b506102a361078b3660046132e9565b611668565b34801561079b575f5ffd5b506006546007546107bf916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102f9565b3480156107f0575f5ffd5b506102a36107ff36600461333e565b611777565b34801561080f575f5ffd5b50610834604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102f99190613382565b34801561084c575f5ffd5b506102a361085b3660046132c1565b611a9c565b34801561086b575f5ffd5b506102a361087a3660046133b7565b611bf5565b34801561088a575f5ffd5b506008546108a290600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102f9565b3480156108c2575f5ffd5b506102a36010805460ff60401b19169055565b3480156108e0575f5ffd5b506004546005546107bf916001600160401b0380821692600160401b909204169083565b34801561090f575f5ffd5b5061040c61091e3660046133d1565b611c3c565b34801561092e575f5ffd5b50600a54610474906001600160401b031681565b34801561094d575f5ffd5b506102a361095c366004612bf2565b611c76565b34801561096c575f5ffd5b506102a361097b3660046133f1565b611cb5565b34801561098b575f5ffd5b506009546104f0565b61099c611d60565b6001600160a01b0381166109c35760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109f25760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610a56575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610a98612912565b620100008152600560208201527f018f7ccd26652f2ad0a0d891bf29c5ef9f7b2a4e5a8295ee0acde69b1669acb56040820151527f0c3b19cb30f3edf93eb2b9e0b11ce099c5745bc3eda3226c7f5d5f39a97bfcaa6020604083015101527f141e3d68aad50bf0843f645d61f5e8fe3608d312e457d1bf712ce20c2ce906a96060820151527f2b44c03676d0a3cd12257e589b78f059a525aac5d6bfab0d6189d4b40ae511226020606083015101527f18609f79b8297b3f9951e7139945aa60e33e914dea6f27bda920b0e0c90935f36080820151527f11a6315abb98f76cce5b4fa5d87b8a2064d2d04c20f83314d2dd2fdb68141e3d6020608083015101527f2fa93348689ea07bb760d7c3100d3148afc342c050eba7f39455e478a5730d0560a0820151527f0b7c92113ecabfa54988d3a81e13237196c9975dd3dea0a325c49bcf901f8b4a602060a083015101527f2ae11000a5bd0a79adf8e3a5a449ea5c58dfa7d6a2fa24b9c976ecfca706584060c0820151527f0c4677befdd8c7d2474f2f7d19f2d0e2747a7e05469cc08eee2b7b81ad4872e2602060c083015101527f04065da2ee5858e53035e3fab84444a8663a8ead5d299b0b0460b9bd6b9c34cb60e0820151527f0dd33bf9f503c9d0b486ec825bd8ddfbc93a96f4e09978bea94db7caa33e32f0602060e083015101527f0d53ecf3464c3b43f674a4c9ae5dacd9e2a6cf69ccd06bdb38cdef07acd0b9b8610100820151527f0c0a5358e274a877cd87e017a90e3e2c4630637c14400d16141610817543cc6c602061010083015101527f053d21494294a22b3e3c567c9f618615af41c257043b87470788d7c30e915b32610120820151527f04cfeb1d7ff9e07794e47e486fcfe6b0e143c74a49ce915ebdf6ae68df6e06b8602061012083015101527f113f2826bf7221de175ca046f82f51112a9eb1486b06747f4d13940bc26f4bb8610140820151527f05cfaa7aa08b080dcbc31caddd501fe5ef8c118d8ed7d500708ec689b3ac7f2b602061014083015101527f0a9d147b2c3c63d298198af385558871a9b69c192291a4ee69def6d82dd7c31e610160820151527f016d5ae3fc3c6dc5283ff63e2ffe92d0931cc77258cccf3d1c9aed601ed2e8ba602061016083015101527f123d9f2908cd4f038bb281805ad8e922444469b02f4b83e6c051c0e1caad152c610180820151527f08e647cc02b9df4ceb5b154550d2b29a7b67370f67a37274206bb12c5c451dc2602061018083015101527f1859105e4ad21829c12c4a5b50d5a2a5d988fd73eb4424465638e199ab367b826101a0820151527f0abbccc29007b3c64dad550f76c99ea330b102dd7fb57a542a9add84845d51c360206101a083015101527f263a7ebacbf181a281a3494d75e822165d3f50e9ac14e74a822ad91503ec78a96101c0820151527f1f0968f3165c00c63964e71ef0c42396a146190a97ff2f436ae89288cb9d344660206101c083015101527f2f7cd5cc72420dd90cf820746b89e616dff8b21e9aadb9a4a06f41ece2039a5e6101e0820151527f15a34038506ec14fc8c26ad2551619bace01483f085e208d2302ad4c2111cb3760206101e083015101527f172d2aa0fb172d331b0f3671ae68be93ecfbda63a722176be8841e839031b61e610200820151527f13b29e31f3730117e54309a33f472f538f688bb94ccc3085da13a561dc8865e9602061020083015101527f0bf4050e8f045922cae613d4a626aeaeee7dc24a2b7bb473aee45e5c94e7ede3610220820151527f15aa6d9399cd9b8ab3883839d300e76f9e4e2baad7d39e0aa2e382f235d22263602061022083015101527f09dd102380546061aa42f087f8ac5525a6747b8db1e3c4fe033fdbe3d80d6e9a610240820151527f2edfb5b603bbb2d376ffe876bd219319d34d8813d09b70fb37da3cc2b77ebacb602061024083015101527f044bef6f37b3b1db2da99a5262d054163fc465d24e53925d07e5d4b5fe946746610260820151527f10453728e61b7fdf863adffb97c4a65b9c116087c10f01563fc31393ee69ea3f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b6110c8611d60565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561110e94919091048116928116911617611570565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806111705750600a546001600160401b0316155b1561117c57505f919050565b600a546001600160401b03166111938360056134fd565b61119d9190613530565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111d25750600a546001600160401b0316155b156111de57505f919050565b600a546111f4906001600160401b031683613530565b6001600160401b031615806112415750600a5461121c906005906001600160401b031661355d565b600a546001600160401b0391821691611236911684613530565b6001600160401b0316115b92915050565b61124f611d60565b5f516020613abf5f395f51905f52805460039190600160401b900460ff1680611285575080546001600160401b03808416911610155b156112a35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a546112dd9291810482169116611570565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b611346611d60565b61134f816115df565b50565b61135a611dbb565b61136382611e5f565b61136d8282611ea0565b5050565b5f61137a611f61565b505f516020613a9f5f395f51905f5290565b611394611d60565b6008546001600160a01b0316156113df57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b611402611d60565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91611440916001600160401b03600160401b90920482169116611570565b905090565b600980545f9182919061145960018361357c565b815481106114695761146961358f565b5f918252602090912060029091020154600160801b90046001600160401b031684106114a857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156115695784600982815481106114d8576114d861358f565b5f918252602090912060029091020154600160801b90046001600160401b0316111561156157600981815481106115115761151161358f565b905f5260205f20906002020160010154600982815481106115345761153461358f565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b6001016114bc565b5050915091565b5f816001600160401b03165f0361158857505f611241565b826001600160401b03165f036115a057506001611241565b6115aa8284613530565b6001600160401b03165f036115ca576115c382846135a3565b9050611241565b6115d482846135a3565b6115c39060016134fd565b6115e7611d60565b610e108163ffffffff16108061160657506301e133808163ffffffff16115b80611624575060085463ffffffff600160a01b909104811690821611155b15611642576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f516020613abf5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156116995750825b90505f826001600160401b031660011480156116b45750303b155b9050811580156116c2575080155b156116e05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561170a57845460ff60401b1916600160401b1785555b61171386611faa565b61171b611fbb565b611726898989611fc3565b831561176c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561179c57506008546001600160a01b03163314155b156117ba576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806117f3575060065460208501516001600160401b03600160401b9092048216911611155b156118115760405163051c46ef60e01b815260040160405180910390fd5b61181e84604001516120ef565b61182b83602001516120ef565b61183883604001516120ef565b61184583606001516120ef565b5f61184e61141b565b6020860151600a549192505f9161186e91906001600160401b0316611570565b6010549091506001600160401b03908116908216106118b25761189486602001516111b2565b156118b25760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561195e5760026118d5838361355d565b6001600160401b0316106118fc5760405163080ae8d960e01b815260040160405180910390fd5b6119078260016134fd565b6001600160401b0316816001600160401b0316148015611940575060065461193e90600160401b90046001600160401b0316611150565b155b1561195e5760405163080ae8d960e01b815260040160405180910390fd5b61196a86868686612130565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906119c757506119c78660200151611150565b15611a31578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b611a158260016134fd565b6040516001600160401b03909116815260200160405180910390a15b611a3c43428861235a565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68860400151604051611a8c91815260200190565b60405180910390a3505050505050565b611aa4611d60565b5f516020613abf5f395f51905f52805460029190600160401b900460ff1680611ada575080546001600160401b03808416911610155b15611af85760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611b40576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611b898385611570565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561134f43428361235a565b6010545f90600160401b900460ff16611c5e57611c598383612543565b611c6f565b8160115484611c6d919061357c565b115b9392505050565b611c7e611d60565b6001600160a01b038116611cac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61134f8161269b565b611cc060095f612b77565b5f5b815181101561136d576009828281518110611cdf57611cdf61358f565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611cc2565b33611d927f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113f85760405163118cdaa760e01b8152336004820152602401611ca3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611e4157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e355f516020613a9f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113f85760405163703e46dd60e11b815260040160405180910390fd5b611e67611d60565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610a3c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611efa575060408051601f3d908101601f19168201909252611ef7918101906135d0565b60015b611f2257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611ca3565b5f516020613a9f5f395f51905f528114611f5257604051632a87526960e21b815260048101829052602401611ca3565b611f5c838361270b565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113f85760405163703e46dd60e11b815260040160405180910390fd5b611fb2612760565b61134f81612796565b6113f8612760565b82516001600160401b0316151580611fe7575060208301516001600160401b031615155b80611ff457506020820151155b8061200157506040820151155b8061200e57506060820151155b8061201857508151155b8061202a5750610e108163ffffffff16105b8061203e57506301e133808163ffffffff16115b1561205c576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061136d5760405163016c173360e21b815260040160405180910390fd5b5f612139610a90565b9050612143612b95565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b909104811691161080159061219b575061219b8760200151611150565b156121e4576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a001604051602081830303815290604052905061221f565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261227091849089906020016135fe565b60408051601f19818403018152919052805160209091012090506122b47f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613620565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd67906122f490879087908a90600401613815565b602060405180830381865af415801561230f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123339190613a35565b612350576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906123cf575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061239a5761239a61358f565b5f9182526020909120600290910201546123c490600160401b90046001600160401b03168461355d565b6001600160401b0316115b1561246257600854600980549091600160c01b90046001600160401b03169081106123fc576123fc61358f565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861243c83613a54565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6009545f9043841180612554575080155b8061259e5750600854600980549091600160c01b90046001600160401b03169081106125825761258261358f565b5f9182526020909120600290910201546001600160401b031684105b156125bc5760405163b0b4387760e01b815260040160405180910390fd5b5f80806125ca60018561357c565b90505b8161266657600854600160c01b90046001600160401b031681106126665786600982815481106125ff576125ff61358f565b5f9182526020909120600290910201546001600160401b0316116126545760019150600981815481106126345761263461358f565b5f9182526020909120600290910201546001600160401b03169250612666565b8061265e81613a7e565b9150506125cd565b816126845760405163b0b4387760e01b815260040160405180910390fd5b8561268f848961357c565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6127148261279e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561275857611f5c8282612801565b61136d612873565b5f516020613abf5f395f51905f5254600160401b900460ff166113f857604051631afcd79f60e31b815260040160405180910390fd5b611c7e612760565b806001600160a01b03163b5f036127d357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611ca3565b5f516020613a9f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161281d9190613a93565b5f60405180830381855af49150503d805f8114612855576040519150601f19603f3d011682016040523d82523d5f602084013e61285a565b606091505b509150915061286a858383612892565b95945050505050565b34156113f85760405163b398979f60e01b815260040160405180910390fd5b6060826128a257611c59826128e9565b81511580156128b957506001600160a01b0384163b155b156128e257604051639996b31560e01b81526001600160a01b0385166004820152602401611ca3565b5092915050565b8051156128f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161294560405180604001604052805f81526020015f81525090565b815260200161296560405180604001604052805f81526020015f81525090565b815260200161298560405180604001604052805f81526020015f81525090565b81526020016129a560405180604001604052805f81526020015f81525090565b81526020016129c560405180604001604052805f81526020015f81525090565b81526020016129e560405180604001604052805f81526020015f81525090565b8152602001612a0560405180604001604052805f81526020015f81525090565b8152602001612a2560405180604001604052805f81526020015f81525090565b8152602001612a4560405180604001604052805f81526020015f81525090565b8152602001612a6560405180604001604052805f81526020015f81525090565b8152602001612a8560405180604001604052805f81526020015f81525090565b8152602001612aa560405180604001604052805f81526020015f81525090565b8152602001612ac560405180604001604052805f81526020015f81525090565b8152602001612ae560405180604001604052805f81526020015f81525090565b8152602001612b0560405180604001604052805f81526020015f81525090565b8152602001612b2560405180604001604052805f81526020015f81525090565b8152602001612b4560405180604001604052805f81526020015f81525090565b8152602001612b6560405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209081019061134f9190612bb3565b6040518060a001604052806005906020820280368337509192915050565b5b80821115612bd85780546001600160c01b03191681555f6001820155600201612bb4565b5090565b80356001600160a01b03811681146111ad575f5ffd5b5f60208284031215612c02575f5ffd5b611c6f82612bdc565b5f60208284031215612c1b575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612c54604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146111ad575f5ffd5b5f60208284031215612e49575f5ffd5b611c6f82612e23565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612e8957612e89612e52565b60405290565b604051608081016001600160401b0381118282101715612e8957612e89612e52565b604051601f8201601f191681016001600160401b0381118282101715612ed957612ed9612e52565b604052919050565b5f60608284031215612ef1575f5ffd5b604051606081016001600160401b0381118282101715612f1357612f13612e52565b604052905080612f2283612e23565b8152612f3060208401612e23565b6020820152604092830135920191909152919050565b5f60408284031215612f56575f5ffd5b604080519081016001600160401b0381118282101715612f7857612f78612e52565b604052823581526020928301359281019290925250919050565b5f6104808284031215612fa3575f5ffd5b612fab612e66565b9050612fb78383612f46565b8152612fc68360408401612f46565b6020820152612fd88360808401612f46565b6040820152612fea8360c08401612f46565b6060820152612ffd836101008401612f46565b6080820152613010836101408401612f46565b60a0820152613023836101808401612f46565b60c0820152613036836101c08401612f46565b60e0820152613049836102008401612f46565b61010082015261305d836102408401612f46565b610120820152613071836102808401612f46565b610140820152613085836102c08401612f46565b610160820152613099836103008401612f46565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e0838503121561312f575f5ffd5b6131398484612ee1565b91506131488460608501612f92565b90509250929050565b803563ffffffff811681146111ad575f5ffd5b5f60208284031215613174575f5ffd5b611c6f82613151565b5f5f6040838503121561318e575f5ffd5b61319783612bdc565b915060208301356001600160401b038111156131b1575f5ffd5b8301601f810185136131c1575f5ffd5b80356001600160401b038111156131da576131da612e52565b6131ed601f8201601f1916602001612eb1565b818152866020838501011115613201575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613230575f5ffd5b613238612e8f565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613273575f5ffd5b611c6f8383613220565b5f5f5f6105608486031215613290575f5ffd5b61329a8585612ee1565b92506132a98560608601613220565b91506132b88560e08601612f92565b90509250925092565b5f5f604083850312156132d2575f5ffd5b6132db83612e23565b915061314860208401612e23565b5f5f5f5f61012085870312156132fd575f5ffd5b6133078686612ee1565b93506133168660608701613220565b925061332460e08601613151565b91506133336101008601612bdc565b905092959194509250565b5f5f5f5f6105808587031215613352575f5ffd5b61335c8686612ee1565b935061336b8660608701613220565b925060e08501359150613333866101008701612f92565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f606082840312156133c7575f5ffd5b611c6f8383612ee1565b5f5f604083850312156133e2575f5ffd5b50508035926020909101359150565b5f60208284031215613401575f5ffd5b81356001600160401b03811115613416575f5ffd5b8201601f81018413613426575f5ffd5b80356001600160401b0381111561343f5761343f612e52565b61344e60208260051b01612eb1565b8082825260208201915060208360071b85010192508683111561346f575f5ffd5b6020840193505b828410156134df576080848803121561348d575f5ffd5b613495612e8f565b61349e85612e23565b81526134ac60208601612e23565b60208201526134bd60408601612e23565b6040820152606085810135908201528252608090930192602090910190613476565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115611241576112416134e9565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b038316806135485761354861351c565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115611241576112416134e9565b81810381811115611241576112416134e9565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806135bb576135bb61351c565b806001600160401b0384160491505092915050565b5f602082840312156135e0575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f61361261360c83876135e7565b856135e7565b928352505060200192915050565b5f8261362e5761362e61351c565b500690565b805f5b6005811015613655578151845260209384019390910190600101613636565b50505050565b61367082825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613847604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613a1f610500830185613633565b613a2d6105a083018461365b565b949350505050565b5f60208284031215613a45575f5ffd5b81518015158114611c6f575f5ffd5b5f6001600160401b0382166001600160401b038103613a7557613a756134e9565b60010192915050565b5f81613a8c57613a8c6134e9565b505f190190565b5f611c6f82846135e756fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5735    /// ```
5736    #[rustfmt::skip]
5737    #[allow(clippy::all)]
5738    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5739        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[`\x80Qa:\xEBa\0\xF9_9_\x81\x81a\x1D\xC6\x01R\x81\x81a\x1D\xEF\x01Ra\x1Fl\x01Ra:\xEB_\xF3\xFE`\x80`@R`\x046\x10a\x02\x80W_5`\xE0\x1C\x80ci\xCCj\x04\x11a\x01UW\x80c\xAA\xBD]\xB3\x11a\0\xBEW\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x08\xD5W\x80c\xE003\x01\x14a\t\x04W\x80c\xF0h T\x14a\t#W\x80c\xF2\xFD\xE3\x8B\x14a\tBW\x80c\xF5ga`\x14a\taW\x80c\xF9\xE5\r\x19\x14a\t\x80W__\xFD[\x80c\xAA\xBD]\xB3\x14a\x07\xE5W\x80c\xAD<\xB1\xCC\x14a\x08\x04W\x80c\xB3;\xC4\x91\x14a\x08AW\x80c\xB5\xAD\xEA<\x14a\x08`W\x80c\xC2;\x9E\x9E\x14a\x08\x7FW\x80c\xC8\xE5\xE4\x98\x14a\x08\xB7W__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x0FW\x80c\x8D\xA5\xCB[\x14a\x06\xE2W\x80c\x90\xC1C\x90\x14a\x07\x1EW\x80c\x96\xC1\xCAa\x14a\x07=W\x80c\x99\x83(\xE8\x14a\x07\\W\x80c\x9B\xAA<\xC9\x14a\x07qW\x80c\x9F\xDBT\xA7\x14a\x07\x90W__\xFD[\x80ci\xCCj\x04\x14a\x061W\x80cqP\x18\xA6\x14a\x06EW\x80cu|7\xAD\x14a\x06YW\x80cvg\x18\x08\x14a\x06sW\x80c\x82nA\xFC\x14a\x06\x87W\x80c\x85\x84\xD2?\x14a\x06\xA6W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xF7W\x80cAh'D\x11a\x01\xB1W\x80cAh'D\x14a\x05uW\x80cBm1\x94\x14a\x05\x92W\x80cC=\xBA\x9F\x14a\x05\xB3W\x80cO\x1E\xF2\x86\x14a\x05\xD2W\x80cR\xD1\x90-\x14a\x05\xE5W\x80cb:\x138\x14a\x05\xF9W__\xFD[\x80c0\x0C\x89\xDD\x14a\x04\x8CW\x80c1=\xF7\xB1\x14a\x04\xABW\x80c7\x8E\xC2;\x14a\x04\xE2W\x80c8\xE4T\xB1\x14a\x04\xFEW\x80c<#\xB6\xDB\x14a\x05\x12W\x80c>\xD5[{\x14a\x05OW__\xFD[\x80c\x16z\xC6\x18\x11a\x02HW\x80c\x16z\xC6\x18\x14a\x03\x90W\x80c\x1A\xF0\x804\x14a\x03\xAFW\x80c c\xD4\xF7\x14a\x03\xCEW\x80c%)t'\x14a\x03\xEDW\x80c-R\xAA\xD6\x14a\x04\x1CW\x80c/y\x88\x9D\x14a\x04NW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x84W\x80c\x02\xB5\x92\xF3\x14a\x02\xA5W\x80c\x06%\xE1\x9B\x14a\x03\x02W\x80c\r\x8En,\x14a\x03DW\x80c\x12\x17<,\x14a\x03oW[__\xFD[4\x80\x15a\x02\x8FW__\xFD[Pa\x02\xA3a\x02\x9E6`\x04a+\xF2V[a\t\x94V[\0[4\x80\x15a\x02\xB0W__\xFD[Pa\x02\xC4a\x02\xBF6`\x04a,\x0BV[a\nGV[`@Qa\x02\xF9\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\x03\rW__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x03$\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xF9V[4\x80\x15a\x03OW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xF9V[4\x80\x15a\x03zW__\xFD[Pa\x03\x83a\n\x90V[`@Qa\x02\xF9\x91\x90a,\"V[4\x80\x15a\x03\x9BW__\xFD[Pa\x02\xA3a\x03\xAA6`\x04a.9V[a\x10\xC0V[4\x80\x15a\x03\xBAW__\xFD[Pa\x02\xA3a\x03\xC96`\x04a,\x0BV[`\x0FUV[4\x80\x15a\x03\xD9W__\xFD[Pa\x02\xA3a\x03\xE86`\x04a1\x1DV[a\x117V[4\x80\x15a\x03\xF8W__\xFD[Pa\x04\x0Ca\x04\x076`\x04a.9V[a\x11PV[`@Q\x90\x15\x15\x81R` \x01a\x02\xF9V[4\x80\x15a\x04'W__\xFD[Pa\x02\xA3a\x0466`\x04a,\x0BV[`\x10\x80T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x90U`\x11UV[4\x80\x15a\x04YW__\xFD[P`\x08Ta\x04t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x04\x97W__\xFD[Pa\x04\x0Ca\x04\xA66`\x04a.9V[a\x11\xB2V[4\x80\x15a\x04\xB6W__\xFD[P`\x08Ta\x04\xCA\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x04\xEDW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xF9V[4\x80\x15a\x05\tW__\xFD[Pa\x02\xA3a\x12GV[4\x80\x15a\x05\x1DW__\xFD[Pa\x02\xA3a\x05,6`\x04a.9V[`\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\x05ZW__\xFD[P`\nTa\x04t\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x80W__\xFD[P`\x10T`\x01`\x01`@\x1B\x03\x16a\x04tV[4\x80\x15a\x05\x9DW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03$\x93\x92\x91\x90\x84V[4\x80\x15a\x05\xBEW__\xFD[Pa\x02\xA3a\x05\xCD6`\x04a1dV[a\x13>V[a\x02\xA3a\x05\xE06`\x04a1}V[a\x13RV[4\x80\x15a\x05\xF0W__\xFD[Pa\x04\xF0a\x13qV[4\x80\x15a\x06\x04W__\xFD[Pa\x02\xA3a\x06\x136`\x04a2cV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x06<W__\xFD[Pa\x02\xA3a\x13\x8CV[4\x80\x15a\x06PW__\xFD[Pa\x02\xA3a\x13\xFAV[4\x80\x15a\x06dW__\xFD[Pa\x02\xA3a\x03\xE86`\x04a2}V[4\x80\x15a\x06~W__\xFD[Pa\x04ta\x14\x1BV[4\x80\x15a\x06\x92W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x04\x0CV[4\x80\x15a\x06\xB1W__\xFD[Pa\x06\xC5a\x06\xC06`\x04a,\x0BV[a\x14EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xF9V[4\x80\x15a\x06\xEDW__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\xCAV[4\x80\x15a\x07)W__\xFD[Pa\x04ta\x0786`\x04a2\xC1V[a\x15pV[4\x80\x15a\x07HW__\xFD[Pa\x02\xA3a\x07W6`\x04a1dV[a\x15\xDFV[4\x80\x15a\x07gW__\xFD[Pa\x04\xF0`\x0FT\x81V[4\x80\x15a\x07|W__\xFD[Pa\x02\xA3a\x07\x8B6`\x04a2\xE9V[a\x16hV[4\x80\x15a\x07\x9BW__\xFD[P`\x06T`\x07Ta\x07\xBF\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\xF9V[4\x80\x15a\x07\xF0W__\xFD[Pa\x02\xA3a\x07\xFF6`\x04a3>V[a\x17wV[4\x80\x15a\x08\x0FW__\xFD[Pa\x084`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xF9\x91\x90a3\x82V[4\x80\x15a\x08LW__\xFD[Pa\x02\xA3a\x08[6`\x04a2\xC1V[a\x1A\x9CV[4\x80\x15a\x08kW__\xFD[Pa\x02\xA3a\x08z6`\x04a3\xB7V[a\x1B\xF5V[4\x80\x15a\x08\x8AW__\xFD[P`\x08Ta\x08\xA2\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x08\xC2W__\xFD[Pa\x02\xA3`\x10\x80T`\xFF`@\x1B\x19\x16\x90UV[4\x80\x15a\x08\xE0W__\xFD[P`\x04T`\x05Ta\x07\xBF\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\t\x0FW__\xFD[Pa\x04\x0Ca\t\x1E6`\x04a3\xD1V[a\x1C<V[4\x80\x15a\t.W__\xFD[P`\nTa\x04t\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\tMW__\xFD[Pa\x02\xA3a\t\\6`\x04a+\xF2V[a\x1CvV[4\x80\x15a\tlW__\xFD[Pa\x02\xA3a\t{6`\x04a3\xF1V[a\x1C\xB5V[4\x80\x15a\t\x8BW__\xFD[P`\tTa\x04\xF0V[a\t\x9Ca\x1D`V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xC3W`@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\t\xF2W`@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\nVW_\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\n\x98a)\x12V[b\x01\0\0\x81R`\x05` \x82\x01R\x7F\x01\x8F|\xCD&e/*\xD0\xA0\xD8\x91\xBF)\xC5\xEF\x9F{*NZ\x82\x95\xEE\n\xCD\xE6\x9B\x16i\xAC\xB5`@\x82\x01QR\x7F\x0C;\x19\xCB0\xF3\xED\xF9>\xB2\xB9\xE0\xB1\x1C\xE0\x99\xC5t[\xC3\xED\xA3\"l\x7F]_9\xA9{\xFC\xAA` `@\x83\x01Q\x01R\x7F\x14\x1E=h\xAA\xD5\x0B\xF0\x84?d]a\xF5\xE8\xFE6\x08\xD3\x12\xE4W\xD1\xBFq,\xE2\x0C,\xE9\x06\xA9``\x82\x01QR\x7F+D\xC06v\xD0\xA3\xCD\x12%~X\x9Bx\xF0Y\xA5%\xAA\xC5\xD6\xBF\xAB\ra\x89\xD4\xB4\n\xE5\x11\"` ``\x83\x01Q\x01R\x7F\x18`\x9Fy\xB8){?\x99Q\xE7\x13\x99E\xAA`\xE3>\x91M\xEAo'\xBD\xA9 \xB0\xE0\xC9\t5\xF3`\x80\x82\x01QR\x7F\x11\xA61Z\xBB\x98\xF7l\xCE[O\xA5\xD8{\x8A d\xD2\xD0L \xF83\x14\xD2\xDD/\xDBh\x14\x1E=` `\x80\x83\x01Q\x01R\x7F/\xA93Hh\x9E\xA0{\xB7`\xD7\xC3\x10\r1H\xAF\xC3B\xC0P\xEB\xA7\xF3\x94U\xE4x\xA5s\r\x05`\xA0\x82\x01QR\x7F\x0B|\x92\x11>\xCA\xBF\xA5I\x88\xD3\xA8\x1E\x13#q\x96\xC9\x97]\xD3\xDE\xA0\xA3%\xC4\x9B\xCF\x90\x1F\x8BJ` `\xA0\x83\x01Q\x01R\x7F*\xE1\x10\0\xA5\xBD\ny\xAD\xF8\xE3\xA5\xA4I\xEA\\X\xDF\xA7\xD6\xA2\xFA$\xB9\xC9v\xEC\xFC\xA7\x06X@`\xC0\x82\x01QR\x7F\x0CFw\xBE\xFD\xD8\xC7\xD2GO/}\x19\xF2\xD0\xE2tz~\x05F\x9C\xC0\x8E\xEE+{\x81\xADHr\xE2` `\xC0\x83\x01Q\x01R\x7F\x04\x06]\xA2\xEEXX\xE505\xE3\xFA\xB8DD\xA8f:\x8E\xAD])\x9B\x0B\x04`\xB9\xBDk\x9C4\xCB`\xE0\x82\x01QR\x7F\r\xD3;\xF9\xF5\x03\xC9\xD0\xB4\x86\xEC\x82[\xD8\xDD\xFB\xC9:\x96\xF4\xE0\x99x\xBE\xA9M\xB7\xCA\xA3>2\xF0` `\xE0\x83\x01Q\x01R\x7F\rS\xEC\xF3FL;C\xF6t\xA4\xC9\xAE]\xAC\xD9\xE2\xA6\xCFi\xCC\xD0k\xDB8\xCD\xEF\x07\xAC\xD0\xB9\xB8a\x01\0\x82\x01QR\x7F\x0C\nSX\xE2t\xA8w\xCD\x87\xE0\x17\xA9\x0E>,F0c|\x14@\r\x16\x14\x16\x10\x81uC\xCCl` a\x01\0\x83\x01Q\x01R\x7F\x05=!IB\x94\xA2+><V|\x9Fa\x86\x15\xAFA\xC2W\x04;\x87G\x07\x88\xD7\xC3\x0E\x91[2a\x01 \x82\x01QR\x7F\x04\xCF\xEB\x1D\x7F\xF9\xE0w\x94\xE4~Ho\xCF\xE6\xB0\xE1C\xC7JI\xCE\x91^\xBD\xF6\xAEh\xDFn\x06\xB8` a\x01 \x83\x01Q\x01R\x7F\x11?(&\xBFr!\xDE\x17\\\xA0F\xF8/Q\x11*\x9E\xB1Hk\x06t\x7FM\x13\x94\x0B\xC2oK\xB8a\x01@\x82\x01QR\x7F\x05\xCF\xAAz\xA0\x8B\x08\r\xCB\xC3\x1C\xAD\xDDP\x1F\xE5\xEF\x8C\x11\x8D\x8E\xD7\xD5\0p\x8E\xC6\x89\xB3\xAC\x7F+` a\x01@\x83\x01Q\x01R\x7F\n\x9D\x14{,<c\xD2\x98\x19\x8A\xF3\x85U\x88q\xA9\xB6\x9C\x19\"\x91\xA4\xEEi\xDE\xF6\xD8-\xD7\xC3\x1Ea\x01`\x82\x01QR\x7F\x01mZ\xE3\xFC<m\xC5(?\xF6>/\xFE\x92\xD0\x93\x1C\xC7rX\xCC\xCF=\x1C\x9A\xED`\x1E\xD2\xE8\xBA` a\x01`\x83\x01Q\x01R\x7F\x12=\x9F)\x08\xCDO\x03\x8B\xB2\x81\x80Z\xD8\xE9\"DDi\xB0/K\x83\xE6\xC0Q\xC0\xE1\xCA\xAD\x15,a\x01\x80\x82\x01QR\x7F\x08\xE6G\xCC\x02\xB9\xDFL\xEB[\x15EP\xD2\xB2\x9A{g7\x0Fg\xA3rt k\xB1,\\E\x1D\xC2` a\x01\x80\x83\x01Q\x01R\x7F\x18Y\x10^J\xD2\x18)\xC1,J[P\xD5\xA2\xA5\xD9\x88\xFDs\xEBD$FV8\xE1\x99\xAB6{\x82a\x01\xA0\x82\x01QR\x7F\n\xBB\xCC\xC2\x90\x07\xB3\xC6M\xADU\x0Fv\xC9\x9E\xA30\xB1\x02\xDD\x7F\xB5zT*\x9A\xDD\x84\x84]Q\xC3` a\x01\xA0\x83\x01Q\x01R\x7F&:~\xBA\xCB\xF1\x81\xA2\x81\xA3IMu\xE8\"\x16]?P\xE9\xAC\x14\xE7J\x82*\xD9\x15\x03\xECx\xA9a\x01\xC0\x82\x01QR\x7F\x1F\th\xF3\x16\\\0\xC69d\xE7\x1E\xF0\xC4#\x96\xA1F\x19\n\x97\xFF/Cj\xE8\x92\x88\xCB\x9D4F` a\x01\xC0\x83\x01Q\x01R\x7F/|\xD5\xCCrB\r\xD9\x0C\xF8 tk\x89\xE6\x16\xDF\xF8\xB2\x1E\x9A\xAD\xB9\xA4\xA0oA\xEC\xE2\x03\x9A^a\x01\xE0\x82\x01QR\x7F\x15\xA3@8Pn\xC1O\xC8\xC2j\xD2U\x16\x19\xBA\xCE\x01H?\x08^ \x8D#\x02\xADL!\x11\xCB7` a\x01\xE0\x83\x01Q\x01R\x7F\x17-*\xA0\xFB\x17-3\x1B\x0F6q\xAEh\xBE\x93\xEC\xFB\xDAc\xA7\"\x17k\xE8\x84\x1E\x83\x901\xB6\x1Ea\x02\0\x82\x01QR\x7F\x13\xB2\x9E1\xF3s\x01\x17\xE5C\t\xA3?G/S\x8Fh\x8B\xB9L\xCC0\x85\xDA\x13\xA5a\xDC\x88e\xE9` a\x02\0\x83\x01Q\x01R\x7F\x0B\xF4\x05\x0E\x8F\x04Y\"\xCA\xE6\x13\xD4\xA6&\xAE\xAE\xEE}\xC2J+{\xB4s\xAE\xE4^\\\x94\xE7\xED\xE3a\x02 \x82\x01QR\x7F\x15\xAAm\x93\x99\xCD\x9B\x8A\xB3\x8889\xD3\0\xE7o\x9EN+\xAA\xD7\xD3\x9E\n\xA2\xE3\x82\xF25\xD2\"c` a\x02 \x83\x01Q\x01R\x7F\t\xDD\x10#\x80T`a\xAAB\xF0\x87\xF8\xACU%\xA6t{\x8D\xB1\xE3\xC4\xFE\x03?\xDB\xE3\xD8\rn\x9Aa\x02@\x82\x01QR\x7F.\xDF\xB5\xB6\x03\xBB\xB2\xD3v\xFF\xE8v\xBD!\x93\x19\xD3M\x88\x13\xD0\x9Bp\xFB7\xDA<\xC2\xB7~\xBA\xCB` a\x02@\x83\x01Q\x01R\x7F\x04K\xEFo7\xB3\xB1\xDB-\xA9\x9ARb\xD0T\x16?\xC4e\xD2NS\x92]\x07\xE5\xD4\xB5\xFE\x94gFa\x02`\x82\x01QR\x7F\x10E7(\xE6\x1B\x7F\xDF\x86:\xDF\xFB\x97\xC4\xA6[\x9C\x11`\x87\xC1\x0F\x01V?\xC3\x13\x93\xEEi\xEA?` 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\xC8a\x1D`V[`\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\x11\x0E\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x15pV[`\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\x11pWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11|WP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x11\x93\x83`\x05a4\xFDV[a\x11\x9D\x91\x90a50V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11\xD2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11\xDEWP_\x91\x90PV[`\nTa\x11\xF4\x90`\x01`\x01`@\x1B\x03\x16\x83a50V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x12AWP`\nTa\x12\x1C\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a5]V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x126\x91\x16\x84a50V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x12Oa\x1D`V[_Q` a:\xBF_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12\x85WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\xA3W`@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\x90\x81\x17\x83U`\nTa\x12\xDD\x92\x91\x81\x04\x82\x16\x91\x16a\x15pV[`\x10\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x83\x16\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\xA1PPV[a\x13Fa\x1D`V[a\x13O\x81a\x15\xDFV[PV[a\x13Za\x1D\xBBV[a\x13c\x82a\x1E_V[a\x13m\x82\x82a\x1E\xA0V[PPV[_a\x13za\x1FaV[P_Q` a:\x9F_9_Q\x90_R\x90V[a\x13\x94a\x1D`V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x13\xDFW`\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\x14\x02a\x1D`V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\x14@\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x15pV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x14Y`\x01\x83a5|V[\x81T\x81\x10a\x14iWa\x14ia5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x14\xA8W`@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\x15iW\x84`\t\x82\x81T\x81\x10a\x14\xD8Wa\x14\xD8a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x15aW`\t\x81\x81T\x81\x10a\x15\x11Wa\x15\x11a5\x8FV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x154Wa\x154a5\x8FV[\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\x14\xBCV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x15\x88WP_a\x12AV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x15\xA0WP`\x01a\x12AV[a\x15\xAA\x82\x84a50V[`\x01`\x01`@\x1B\x03\x16_\x03a\x15\xCAWa\x15\xC3\x82\x84a5\xA3V[\x90Pa\x12AV[a\x15\xD4\x82\x84a5\xA3V[a\x15\xC3\x90`\x01a4\xFDV[a\x15\xE7a\x1D`V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x16\x06WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x16$WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x16BW`@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[_Q` a:\xBF_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x16\x99WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x16\xB4WP0;\x15[\x90P\x81\x15\x80\x15a\x16\xC2WP\x80\x15[\x15a\x16\xE0W`@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\x17\nW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x17\x13\x86a\x1F\xAAV[a\x17\x1Ba\x1F\xBBV[a\x17&\x89\x89\x89a\x1F\xC3V[\x83\x15a\x17lW\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[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x17\x9CWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x17\xBAW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x17\xF3WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x18\x11W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\x1E\x84`@\x01Qa \xEFV[a\x18+\x83` \x01Qa \xEFV[a\x188\x83`@\x01Qa \xEFV[a\x18E\x83``\x01Qa \xEFV[_a\x18Na\x14\x1BV[` \x86\x01Q`\nT\x91\x92P_\x91a\x18n\x91\x90`\x01`\x01`@\x1B\x03\x16a\x15pV[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x18\xB2Wa\x18\x94\x86` \x01Qa\x11\xB2V[\x15a\x18\xB2W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x19^W`\x02a\x18\xD5\x83\x83a5]V[`\x01`\x01`@\x1B\x03\x16\x10a\x18\xFCW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19\x07\x82`\x01a4\xFDV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x19@WP`\x06Ta\x19>\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x11PV[\x15[\x15a\x19^W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19j\x86\x86\x86\x86a!0V[\x85Q`\x06\x80T` \x89\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`@\x87\x01Q`\x07U`\x0F\x85\x90U`\x10T\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x19\xC7WPa\x19\xC7\x86` \x01Qa\x11PV[\x15a\x1A1W\x84Q`\x0BU` \x85\x01Q`\x0CU`@\x85\x01Q`\rU``\x85\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\x1A\x15\x82`\x01a4\xFDV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x1A<CB\x88a#ZV[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x1A\x8C\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x1A\xA4a\x1D`V[_Q` a:\xBF_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1A\xDAWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1A\xF8W`@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\x1B@W`@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\x1B\x89\x83\x85a\x15pV[`\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[\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\x13OCB\x83a#ZV[`\x10T_\x90`\x01`@\x1B\x90\x04`\xFF\x16a\x1C^Wa\x1CY\x83\x83a%CV[a\x1CoV[\x81`\x11T\x84a\x1Cm\x91\x90a5|V[\x11[\x93\x92PPPV[a\x1C~a\x1D`V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\xACW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x13O\x81a&\x9BV[a\x1C\xC0`\t_a+wV[_[\x81Q\x81\x10\x15a\x13mW`\t\x82\x82\x81Q\x81\x10a\x1C\xDFWa\x1C\xDFa5\x8FV[` \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\x1C\xC2V[3a\x1D\x92\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\x13\xF8W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1C\xA3V[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\x1EAWP\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\x1E5_Q` a:\x9F_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13\xF8W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1Ega\x1D`V[`@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\n<V[\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\x1E\xFAWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1E\xF7\x91\x81\x01\x90a5\xD0V[`\x01[a\x1F\"W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[_Q` a:\x9F_9_Q\x90_R\x81\x14a\x1FRW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1C\xA3V[a\x1F\\\x83\x83a'\x0BV[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\x13\xF8W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xB2a'`V[a\x13O\x81a'\x96V[a\x13\xF8a'`V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1F\xE7WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1F\xF4WP` \x82\x01Q\x15[\x80a \x01WP`@\x82\x01Q\x15[\x80a \x0EWP``\x82\x01Q\x15[\x80a \x18WP\x81Q\x15[\x80a *WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a >WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a \\W`@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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x13mW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a!9a\n\x90V[\x90Pa!Ca+\x95V[`\x0CT\x81R`\rT` \x80\x83\x01\x91\x90\x91R`\x0ET`@\x83\x01R`\x0BT``\x80\x84\x01\x91\x90\x91R`\nT\x91\x88\x01Q\x90\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x91\x16\x10\x80\x15\x90a!\x9BWPa!\x9B\x87` \x01Qa\x11PV[\x15a!\xE4W`@\x80Q\x87Q` \x80\x83\x01\x91\x90\x91R\x88\x01Q\x81\x83\x01R\x90\x87\x01Q``\x80\x83\x01\x91\x90\x91R\x87\x01Q`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\"\x1FV[`@\x80Q`\x0BT` \x82\x01R`\x0CT\x91\x81\x01\x91\x90\x91R`\rT``\x82\x01R`\x0ET`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P[`@\x80Q\x88Q`\x01`\x01`@\x1B\x03\x90\x81\x16` \x80\x84\x01\x91\x90\x91R\x8A\x01Q\x16\x81\x83\x01R\x90\x88\x01Q``\x82\x01R_\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"p\x91\x84\x90\x89\x90` \x01a5\xFEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa\"\xB4\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a6 V[`\x80\x84\x01R`@QcT\xE8\xBDg`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90cT\xE8\xBDg\x90a\"\xF4\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a8\x15V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a#\x0FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#3\x91\x90a:5V[a#PW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a#\xCFWP`\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#\x9AWa#\x9Aa5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta#\xC4\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a5]V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a$bW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\xFCWa#\xFCa5\x8FV[_\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$<\x83a:TV[\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[`\tT_\x90C\x84\x11\x80a%TWP\x80\x15[\x80a%\x9EWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a%\x82Wa%\x82a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a%\xBCW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a%\xCA`\x01\x85a5|V[\x90P[\x81a&fW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a&fW\x86`\t\x82\x81T\x81\x10a%\xFFWa%\xFFa5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a&TW`\x01\x91P`\t\x81\x81T\x81\x10a&4Wa&4a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa&fV[\x80a&^\x81a:~V[\x91PPa%\xCDV[\x81a&\x84W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a&\x8F\x84\x89a5|V[\x11\x97\x96PPPPPPPV[\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[a'\x14\x82a'\x9EV[`@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'XWa\x1F\\\x82\x82a(\x01V[a\x13ma(sV[_Q` a:\xBF_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x13\xF8W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C~a'`V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a'\xD3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[_Q` a:\x9F_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(\x1D\x91\x90a:\x93V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a(UW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a(ZV[``\x91P[P\x91P\x91Pa(j\x85\x83\x83a(\x92V[\x95\x94PPPPPV[4\x15a\x13\xF8W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a(\xA2Wa\x1CY\x82a(\xE9V[\x81Q\x15\x80\x15a(\xB9WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a(\xE2W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[P\x92\x91PPV[\x80Q\x15a(\xF9W\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)E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+e`@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\x13O\x91\x90a+\xB3V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a+\xD8W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a+\xB4V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a,\x02W__\xFD[a\x1Co\x82a+\xDCV[_` \x82\x84\x03\x12\x15a,\x1BW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa,T`@\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\xADW__\xFD[_` \x82\x84\x03\x12\x15a.IW__\xFD[a\x1Co\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.\x89Wa.\x89a.RV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x89Wa.\x89a.RV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xD9Wa.\xD9a.RV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a.\xF1W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\x13Wa/\x13a.RV[`@R\x90P\x80a/\"\x83a.#V[\x81Ra/0` \x84\x01a.#V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a/VW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/xWa/xa.RV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a/\xA3W__\xFD[a/\xABa.fV[\x90Pa/\xB7\x83\x83a/FV[\x81Ra/\xC6\x83`@\x84\x01a/FV[` \x82\x01Ra/\xD8\x83`\x80\x84\x01a/FV[`@\x82\x01Ra/\xEA\x83`\xC0\x84\x01a/FV[``\x82\x01Ra/\xFD\x83a\x01\0\x84\x01a/FV[`\x80\x82\x01Ra0\x10\x83a\x01@\x84\x01a/FV[`\xA0\x82\x01Ra0#\x83a\x01\x80\x84\x01a/FV[`\xC0\x82\x01Ra06\x83a\x01\xC0\x84\x01a/FV[`\xE0\x82\x01Ra0I\x83a\x02\0\x84\x01a/FV[a\x01\0\x82\x01Ra0]\x83a\x02@\x84\x01a/FV[a\x01 \x82\x01Ra0q\x83a\x02\x80\x84\x01a/FV[a\x01@\x82\x01Ra0\x85\x83a\x02\xC0\x84\x01a/FV[a\x01`\x82\x01Ra0\x99\x83a\x03\0\x84\x01a/FV[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\x15a1/W__\xFD[a19\x84\x84a.\xE1V[\x91Pa1H\x84``\x85\x01a/\x92V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a1tW__\xFD[a\x1Co\x82a1QV[__`@\x83\x85\x03\x12\x15a1\x8EW__\xFD[a1\x97\x83a+\xDCV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB1W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\xC1W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAWa1\xDAa.RV[a1\xED`\x1F\x82\x01`\x1F\x19\x16` \x01a.\xB1V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a2\x01W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a20W__\xFD[a28a.\x8FV[\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\x15a2sW__\xFD[a\x1Co\x83\x83a2 V[___a\x05`\x84\x86\x03\x12\x15a2\x90W__\xFD[a2\x9A\x85\x85a.\xE1V[\x92Pa2\xA9\x85``\x86\x01a2 V[\x91Pa2\xB8\x85`\xE0\x86\x01a/\x92V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a2\xD2W__\xFD[a2\xDB\x83a.#V[\x91Pa1H` \x84\x01a.#V[____a\x01 \x85\x87\x03\x12\x15a2\xFDW__\xFD[a3\x07\x86\x86a.\xE1V[\x93Pa3\x16\x86``\x87\x01a2 V[\x92Pa3$`\xE0\x86\x01a1QV[\x91Pa33a\x01\0\x86\x01a+\xDCV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a3RW__\xFD[a3\\\x86\x86a.\xE1V[\x93Pa3k\x86``\x87\x01a2 V[\x92P`\xE0\x85\x015\x91Pa33\x86a\x01\0\x87\x01a/\x92V[` \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\x15a3\xC7W__\xFD[a\x1Co\x83\x83a.\xE1V[__`@\x83\x85\x03\x12\x15a3\xE2W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a4\x01W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a4\x16W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a4&W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a4?Wa4?a.RV[a4N` \x82`\x05\x1B\x01a.\xB1V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a4oW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\xDFW`\x80\x84\x88\x03\x12\x15a4\x8DW__\xFD[a4\x95a.\x8FV[a4\x9E\x85a.#V[\x81Ra4\xAC` \x86\x01a.#V[` \x82\x01Ra4\xBD`@\x86\x01a.#V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a4vV[\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\x12AWa\x12Aa4\xE9V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5HWa5Ha5\x1CV[\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\x12AWa\x12Aa4\xE9V[\x81\x81\x03\x81\x81\x11\x15a\x12AWa\x12Aa4\xE9V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5\xBBWa5\xBBa5\x1CV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a5\xE0W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a6\x12a6\x0C\x83\x87a5\xE7V[\x85a5\xE7V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a6.Wa6.a5\x1CV[P\x06\x90V[\x80_[`\x05\x81\x10\x15a6UW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a66V[PPPPV[a6p\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 \x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa8G`@\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\x01Ra:\x1Fa\x05\0\x83\x01\x85a63V[a:-a\x05\xA0\x83\x01\x84a6[V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a:EW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1CoW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a:uWa:ua4\xE9V[`\x01\x01\x92\x91PPV[_\x81a:\x8CWa:\x8Ca4\xE9V[P_\x19\x01\x90V[_a\x1Co\x82\x84a5\xE7V\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
5740    );
5741    /// The runtime bytecode of the contract, as deployed on the network.
5742    ///
5743    /// ```text
5744    ///0x608060405260043610610280575f3560e01c806369cc6a0411610155578063aabd5db3116100be578063d24d933d11610078578063d24d933d146108d5578063e030330114610904578063f068205414610923578063f2fde38b14610942578063f567616014610961578063f9e50d1914610980575f5ffd5b8063aabd5db3146107e5578063ad3cb1cc14610804578063b33bc49114610841578063b5adea3c14610860578063c23b9e9e1461087f578063c8e5e498146108b7575f5ffd5b80638da5cb5b1161010f5780638da5cb5b146106e257806390c143901461071e57806396c1ca611461073d578063998328e81461075c5780639baa3cc9146107715780639fdb54a714610790575f5ffd5b806369cc6a0414610631578063715018a614610645578063757c37ad146106595780637667180814610673578063826e41fc146106875780638584d23f146106a6575f5ffd5b8063300c89dd116101f757806341682744116101b15780634168274414610575578063426d319414610592578063433dba9f146105b35780634f1ef286146105d257806352d1902d146105e5578063623a1338146105f9575f5ffd5b8063300c89dd1461048c578063313df7b1146104ab578063378ec23b146104e257806338e454b1146104fe5780633c23b6db146105125780633ed55b7b1461054f575f5ffd5b8063167ac61811610248578063167ac618146103905780631af08034146103af5780632063d4f7146103ce57806325297427146103ed5780632d52aad61461041c5780632f79889d1461044e575f5ffd5b8063013fa5fc1461028457806302b592f3146102a55780630625e19b146103025780630d8e6e2c1461034457806312173c2c1461036f575b5f5ffd5b34801561028f575f5ffd5b506102a361029e366004612bf2565b610994565b005b3480156102b0575f5ffd5b506102c46102bf366004612c0b565b610a47565b6040516102f994939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b34801561030d575f5ffd5b50600b54600c54600d54600e546103249392919084565b6040805194855260208501939093529183015260608201526080016102f9565b34801561034f575f5ffd5b5060408051600381525f60208201819052918101919091526060016102f9565b34801561037a575f5ffd5b50610383610a90565b6040516102f99190612c22565b34801561039b575f5ffd5b506102a36103aa366004612e39565b6110c0565b3480156103ba575f5ffd5b506102a36103c9366004612c0b565b600f55565b3480156103d9575f5ffd5b506102a36103e836600461311d565b611137565b3480156103f8575f5ffd5b5061040c610407366004612e39565b611150565b60405190151581526020016102f9565b348015610427575f5ffd5b506102a3610436366004612c0b565b6010805460ff60401b1916600160401b179055601155565b348015610459575f5ffd5b5060085461047490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102f9565b348015610497575f5ffd5b5061040c6104a6366004612e39565b6111b2565b3480156104b6575f5ffd5b506008546104ca906001600160a01b031681565b6040516001600160a01b0390911681526020016102f9565b3480156104ed575f5ffd5b50435b6040519081526020016102f9565b348015610509575f5ffd5b506102a3611247565b34801561051d575f5ffd5b506102a361052c366004612e39565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b34801561055a575f5ffd5b50600a5461047490600160401b90046001600160401b031681565b348015610580575f5ffd5b506010546001600160401b0316610474565b34801561059d575f5ffd5b505f546001546002546003546103249392919084565b3480156105be575f5ffd5b506102a36105cd366004613164565b61133e565b6102a36105e036600461317d565b611352565b3480156105f0575f5ffd5b506104f0611371565b348015610604575f5ffd5b506102a3610613366004613263565b8051600b556020810151600c556040810151600d5560600151600e55565b34801561063c575f5ffd5b506102a361138c565b348015610650575f5ffd5b506102a36113fa565b348015610664575f5ffd5b506102a36103e836600461327d565b34801561067e575f5ffd5b5061047461141b565b348015610692575f5ffd5b506008546001600160a01b0316151561040c565b3480156106b1575f5ffd5b506106c56106c0366004612c0b565b611445565b604080519283526001600160401b039091166020830152016102f9565b3480156106ed575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166104ca565b348015610729575f5ffd5b506104746107383660046132c1565b611570565b348015610748575f5ffd5b506102a3610757366004613164565b6115df565b348015610767575f5ffd5b506104f0600f5481565b34801561077c575f5ffd5b506102a361078b3660046132e9565b611668565b34801561079b575f5ffd5b506006546007546107bf916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102f9565b3480156107f0575f5ffd5b506102a36107ff36600461333e565b611777565b34801561080f575f5ffd5b50610834604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102f99190613382565b34801561084c575f5ffd5b506102a361085b3660046132c1565b611a9c565b34801561086b575f5ffd5b506102a361087a3660046133b7565b611bf5565b34801561088a575f5ffd5b506008546108a290600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102f9565b3480156108c2575f5ffd5b506102a36010805460ff60401b19169055565b3480156108e0575f5ffd5b506004546005546107bf916001600160401b0380821692600160401b909204169083565b34801561090f575f5ffd5b5061040c61091e3660046133d1565b611c3c565b34801561092e575f5ffd5b50600a54610474906001600160401b031681565b34801561094d575f5ffd5b506102a361095c366004612bf2565b611c76565b34801561096c575f5ffd5b506102a361097b3660046133f1565b611cb5565b34801561098b575f5ffd5b506009546104f0565b61099c611d60565b6001600160a01b0381166109c35760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109f25760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610a56575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610a98612912565b620100008152600560208201527f018f7ccd26652f2ad0a0d891bf29c5ef9f7b2a4e5a8295ee0acde69b1669acb56040820151527f0c3b19cb30f3edf93eb2b9e0b11ce099c5745bc3eda3226c7f5d5f39a97bfcaa6020604083015101527f141e3d68aad50bf0843f645d61f5e8fe3608d312e457d1bf712ce20c2ce906a96060820151527f2b44c03676d0a3cd12257e589b78f059a525aac5d6bfab0d6189d4b40ae511226020606083015101527f18609f79b8297b3f9951e7139945aa60e33e914dea6f27bda920b0e0c90935f36080820151527f11a6315abb98f76cce5b4fa5d87b8a2064d2d04c20f83314d2dd2fdb68141e3d6020608083015101527f2fa93348689ea07bb760d7c3100d3148afc342c050eba7f39455e478a5730d0560a0820151527f0b7c92113ecabfa54988d3a81e13237196c9975dd3dea0a325c49bcf901f8b4a602060a083015101527f2ae11000a5bd0a79adf8e3a5a449ea5c58dfa7d6a2fa24b9c976ecfca706584060c0820151527f0c4677befdd8c7d2474f2f7d19f2d0e2747a7e05469cc08eee2b7b81ad4872e2602060c083015101527f04065da2ee5858e53035e3fab84444a8663a8ead5d299b0b0460b9bd6b9c34cb60e0820151527f0dd33bf9f503c9d0b486ec825bd8ddfbc93a96f4e09978bea94db7caa33e32f0602060e083015101527f0d53ecf3464c3b43f674a4c9ae5dacd9e2a6cf69ccd06bdb38cdef07acd0b9b8610100820151527f0c0a5358e274a877cd87e017a90e3e2c4630637c14400d16141610817543cc6c602061010083015101527f053d21494294a22b3e3c567c9f618615af41c257043b87470788d7c30e915b32610120820151527f04cfeb1d7ff9e07794e47e486fcfe6b0e143c74a49ce915ebdf6ae68df6e06b8602061012083015101527f113f2826bf7221de175ca046f82f51112a9eb1486b06747f4d13940bc26f4bb8610140820151527f05cfaa7aa08b080dcbc31caddd501fe5ef8c118d8ed7d500708ec689b3ac7f2b602061014083015101527f0a9d147b2c3c63d298198af385558871a9b69c192291a4ee69def6d82dd7c31e610160820151527f016d5ae3fc3c6dc5283ff63e2ffe92d0931cc77258cccf3d1c9aed601ed2e8ba602061016083015101527f123d9f2908cd4f038bb281805ad8e922444469b02f4b83e6c051c0e1caad152c610180820151527f08e647cc02b9df4ceb5b154550d2b29a7b67370f67a37274206bb12c5c451dc2602061018083015101527f1859105e4ad21829c12c4a5b50d5a2a5d988fd73eb4424465638e199ab367b826101a0820151527f0abbccc29007b3c64dad550f76c99ea330b102dd7fb57a542a9add84845d51c360206101a083015101527f263a7ebacbf181a281a3494d75e822165d3f50e9ac14e74a822ad91503ec78a96101c0820151527f1f0968f3165c00c63964e71ef0c42396a146190a97ff2f436ae89288cb9d344660206101c083015101527f2f7cd5cc72420dd90cf820746b89e616dff8b21e9aadb9a4a06f41ece2039a5e6101e0820151527f15a34038506ec14fc8c26ad2551619bace01483f085e208d2302ad4c2111cb3760206101e083015101527f172d2aa0fb172d331b0f3671ae68be93ecfbda63a722176be8841e839031b61e610200820151527f13b29e31f3730117e54309a33f472f538f688bb94ccc3085da13a561dc8865e9602061020083015101527f0bf4050e8f045922cae613d4a626aeaeee7dc24a2b7bb473aee45e5c94e7ede3610220820151527f15aa6d9399cd9b8ab3883839d300e76f9e4e2baad7d39e0aa2e382f235d22263602061022083015101527f09dd102380546061aa42f087f8ac5525a6747b8db1e3c4fe033fdbe3d80d6e9a610240820151527f2edfb5b603bbb2d376ffe876bd219319d34d8813d09b70fb37da3cc2b77ebacb602061024083015101527f044bef6f37b3b1db2da99a5262d054163fc465d24e53925d07e5d4b5fe946746610260820151527f10453728e61b7fdf863adffb97c4a65b9c116087c10f01563fc31393ee69ea3f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b6110c8611d60565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561110e94919091048116928116911617611570565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806111705750600a546001600160401b0316155b1561117c57505f919050565b600a546001600160401b03166111938360056134fd565b61119d9190613530565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111d25750600a546001600160401b0316155b156111de57505f919050565b600a546111f4906001600160401b031683613530565b6001600160401b031615806112415750600a5461121c906005906001600160401b031661355d565b600a546001600160401b0391821691611236911684613530565b6001600160401b0316115b92915050565b61124f611d60565b5f516020613abf5f395f51905f52805460039190600160401b900460ff1680611285575080546001600160401b03808416911610155b156112a35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a546112dd9291810482169116611570565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b611346611d60565b61134f816115df565b50565b61135a611dbb565b61136382611e5f565b61136d8282611ea0565b5050565b5f61137a611f61565b505f516020613a9f5f395f51905f5290565b611394611d60565b6008546001600160a01b0316156113df57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b611402611d60565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91611440916001600160401b03600160401b90920482169116611570565b905090565b600980545f9182919061145960018361357c565b815481106114695761146961358f565b5f918252602090912060029091020154600160801b90046001600160401b031684106114a857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156115695784600982815481106114d8576114d861358f565b5f918252602090912060029091020154600160801b90046001600160401b0316111561156157600981815481106115115761151161358f565b905f5260205f20906002020160010154600982815481106115345761153461358f565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b6001016114bc565b5050915091565b5f816001600160401b03165f0361158857505f611241565b826001600160401b03165f036115a057506001611241565b6115aa8284613530565b6001600160401b03165f036115ca576115c382846135a3565b9050611241565b6115d482846135a3565b6115c39060016134fd565b6115e7611d60565b610e108163ffffffff16108061160657506301e133808163ffffffff16115b80611624575060085463ffffffff600160a01b909104811690821611155b15611642576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f516020613abf5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156116995750825b90505f826001600160401b031660011480156116b45750303b155b9050811580156116c2575080155b156116e05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561170a57845460ff60401b1916600160401b1785555b61171386611faa565b61171b611fbb565b611726898989611fc3565b831561176c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561179c57506008546001600160a01b03163314155b156117ba576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806117f3575060065460208501516001600160401b03600160401b9092048216911611155b156118115760405163051c46ef60e01b815260040160405180910390fd5b61181e84604001516120ef565b61182b83602001516120ef565b61183883604001516120ef565b61184583606001516120ef565b5f61184e61141b565b6020860151600a549192505f9161186e91906001600160401b0316611570565b6010549091506001600160401b03908116908216106118b25761189486602001516111b2565b156118b25760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561195e5760026118d5838361355d565b6001600160401b0316106118fc5760405163080ae8d960e01b815260040160405180910390fd5b6119078260016134fd565b6001600160401b0316816001600160401b0316148015611940575060065461193e90600160401b90046001600160401b0316611150565b155b1561195e5760405163080ae8d960e01b815260040160405180910390fd5b61196a86868686612130565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906119c757506119c78660200151611150565b15611a31578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b611a158260016134fd565b6040516001600160401b03909116815260200160405180910390a15b611a3c43428861235a565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68860400151604051611a8c91815260200190565b60405180910390a3505050505050565b611aa4611d60565b5f516020613abf5f395f51905f52805460029190600160401b900460ff1680611ada575080546001600160401b03808416911610155b15611af85760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611b40576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611b898385611570565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561134f43428361235a565b6010545f90600160401b900460ff16611c5e57611c598383612543565b611c6f565b8160115484611c6d919061357c565b115b9392505050565b611c7e611d60565b6001600160a01b038116611cac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61134f8161269b565b611cc060095f612b77565b5f5b815181101561136d576009828281518110611cdf57611cdf61358f565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611cc2565b33611d927f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113f85760405163118cdaa760e01b8152336004820152602401611ca3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611e4157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e355f516020613a9f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113f85760405163703e46dd60e11b815260040160405180910390fd5b611e67611d60565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610a3c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611efa575060408051601f3d908101601f19168201909252611ef7918101906135d0565b60015b611f2257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611ca3565b5f516020613a9f5f395f51905f528114611f5257604051632a87526960e21b815260048101829052602401611ca3565b611f5c838361270b565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113f85760405163703e46dd60e11b815260040160405180910390fd5b611fb2612760565b61134f81612796565b6113f8612760565b82516001600160401b0316151580611fe7575060208301516001600160401b031615155b80611ff457506020820151155b8061200157506040820151155b8061200e57506060820151155b8061201857508151155b8061202a5750610e108163ffffffff16105b8061203e57506301e133808163ffffffff16115b1561205c576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061136d5760405163016c173360e21b815260040160405180910390fd5b5f612139610a90565b9050612143612b95565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b909104811691161080159061219b575061219b8760200151611150565b156121e4576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a001604051602081830303815290604052905061221f565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261227091849089906020016135fe565b60408051601f19818403018152919052805160209091012090506122b47f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613620565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd67906122f490879087908a90600401613815565b602060405180830381865af415801561230f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123339190613a35565b612350576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906123cf575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061239a5761239a61358f565b5f9182526020909120600290910201546123c490600160401b90046001600160401b03168461355d565b6001600160401b0316115b1561246257600854600980549091600160c01b90046001600160401b03169081106123fc576123fc61358f565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861243c83613a54565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6009545f9043841180612554575080155b8061259e5750600854600980549091600160c01b90046001600160401b03169081106125825761258261358f565b5f9182526020909120600290910201546001600160401b031684105b156125bc5760405163b0b4387760e01b815260040160405180910390fd5b5f80806125ca60018561357c565b90505b8161266657600854600160c01b90046001600160401b031681106126665786600982815481106125ff576125ff61358f565b5f9182526020909120600290910201546001600160401b0316116126545760019150600981815481106126345761263461358f565b5f9182526020909120600290910201546001600160401b03169250612666565b8061265e81613a7e565b9150506125cd565b816126845760405163b0b4387760e01b815260040160405180910390fd5b8561268f848961357c565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6127148261279e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561275857611f5c8282612801565b61136d612873565b5f516020613abf5f395f51905f5254600160401b900460ff166113f857604051631afcd79f60e31b815260040160405180910390fd5b611c7e612760565b806001600160a01b03163b5f036127d357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611ca3565b5f516020613a9f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161281d9190613a93565b5f60405180830381855af49150503d805f8114612855576040519150601f19603f3d011682016040523d82523d5f602084013e61285a565b606091505b509150915061286a858383612892565b95945050505050565b34156113f85760405163b398979f60e01b815260040160405180910390fd5b6060826128a257611c59826128e9565b81511580156128b957506001600160a01b0384163b155b156128e257604051639996b31560e01b81526001600160a01b0385166004820152602401611ca3565b5092915050565b8051156128f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161294560405180604001604052805f81526020015f81525090565b815260200161296560405180604001604052805f81526020015f81525090565b815260200161298560405180604001604052805f81526020015f81525090565b81526020016129a560405180604001604052805f81526020015f81525090565b81526020016129c560405180604001604052805f81526020015f81525090565b81526020016129e560405180604001604052805f81526020015f81525090565b8152602001612a0560405180604001604052805f81526020015f81525090565b8152602001612a2560405180604001604052805f81526020015f81525090565b8152602001612a4560405180604001604052805f81526020015f81525090565b8152602001612a6560405180604001604052805f81526020015f81525090565b8152602001612a8560405180604001604052805f81526020015f81525090565b8152602001612aa560405180604001604052805f81526020015f81525090565b8152602001612ac560405180604001604052805f81526020015f81525090565b8152602001612ae560405180604001604052805f81526020015f81525090565b8152602001612b0560405180604001604052805f81526020015f81525090565b8152602001612b2560405180604001604052805f81526020015f81525090565b8152602001612b4560405180604001604052805f81526020015f81525090565b8152602001612b6560405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f209081019061134f9190612bb3565b6040518060a001604052806005906020820280368337509192915050565b5b80821115612bd85780546001600160c01b03191681555f6001820155600201612bb4565b5090565b80356001600160a01b03811681146111ad575f5ffd5b5f60208284031215612c02575f5ffd5b611c6f82612bdc565b5f60208284031215612c1b575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612c54604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146111ad575f5ffd5b5f60208284031215612e49575f5ffd5b611c6f82612e23565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612e8957612e89612e52565b60405290565b604051608081016001600160401b0381118282101715612e8957612e89612e52565b604051601f8201601f191681016001600160401b0381118282101715612ed957612ed9612e52565b604052919050565b5f60608284031215612ef1575f5ffd5b604051606081016001600160401b0381118282101715612f1357612f13612e52565b604052905080612f2283612e23565b8152612f3060208401612e23565b6020820152604092830135920191909152919050565b5f60408284031215612f56575f5ffd5b604080519081016001600160401b0381118282101715612f7857612f78612e52565b604052823581526020928301359281019290925250919050565b5f6104808284031215612fa3575f5ffd5b612fab612e66565b9050612fb78383612f46565b8152612fc68360408401612f46565b6020820152612fd88360808401612f46565b6040820152612fea8360c08401612f46565b6060820152612ffd836101008401612f46565b6080820152613010836101408401612f46565b60a0820152613023836101808401612f46565b60c0820152613036836101c08401612f46565b60e0820152613049836102008401612f46565b61010082015261305d836102408401612f46565b610120820152613071836102808401612f46565b610140820152613085836102c08401612f46565b610160820152613099836103008401612f46565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e0838503121561312f575f5ffd5b6131398484612ee1565b91506131488460608501612f92565b90509250929050565b803563ffffffff811681146111ad575f5ffd5b5f60208284031215613174575f5ffd5b611c6f82613151565b5f5f6040838503121561318e575f5ffd5b61319783612bdc565b915060208301356001600160401b038111156131b1575f5ffd5b8301601f810185136131c1575f5ffd5b80356001600160401b038111156131da576131da612e52565b6131ed601f8201601f1916602001612eb1565b818152866020838501011115613201575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613230575f5ffd5b613238612e8f565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613273575f5ffd5b611c6f8383613220565b5f5f5f6105608486031215613290575f5ffd5b61329a8585612ee1565b92506132a98560608601613220565b91506132b88560e08601612f92565b90509250925092565b5f5f604083850312156132d2575f5ffd5b6132db83612e23565b915061314860208401612e23565b5f5f5f5f61012085870312156132fd575f5ffd5b6133078686612ee1565b93506133168660608701613220565b925061332460e08601613151565b91506133336101008601612bdc565b905092959194509250565b5f5f5f5f6105808587031215613352575f5ffd5b61335c8686612ee1565b935061336b8660608701613220565b925060e08501359150613333866101008701612f92565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f606082840312156133c7575f5ffd5b611c6f8383612ee1565b5f5f604083850312156133e2575f5ffd5b50508035926020909101359150565b5f60208284031215613401575f5ffd5b81356001600160401b03811115613416575f5ffd5b8201601f81018413613426575f5ffd5b80356001600160401b0381111561343f5761343f612e52565b61344e60208260051b01612eb1565b8082825260208201915060208360071b85010192508683111561346f575f5ffd5b6020840193505b828410156134df576080848803121561348d575f5ffd5b613495612e8f565b61349e85612e23565b81526134ac60208601612e23565b60208201526134bd60408601612e23565b6040820152606085810135908201528252608090930192602090910190613476565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115611241576112416134e9565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b038316806135485761354861351c565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115611241576112416134e9565b81810381811115611241576112416134e9565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806135bb576135bb61351c565b806001600160401b0384160491505092915050565b5f602082840312156135e0575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f61361261360c83876135e7565b856135e7565b928352505060200192915050565b5f8261362e5761362e61351c565b500690565b805f5b6005811015613655578151845260209384019390910190600101613636565b50505050565b61367082825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613847604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613a1f610500830185613633565b613a2d6105a083018461365b565b949350505050565b5f60208284031215613a45575f5ffd5b81518015158114611c6f575f5ffd5b5f6001600160401b0382166001600160401b038103613a7557613a756134e9565b60010192915050565b5f81613a8c57613a8c6134e9565b505f190190565b5f611c6f82846135e756fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c634300081c000a
5745    /// ```
5746    #[rustfmt::skip]
5747    #[allow(clippy::all)]
5748    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5749        b"`\x80`@R`\x046\x10a\x02\x80W_5`\xE0\x1C\x80ci\xCCj\x04\x11a\x01UW\x80c\xAA\xBD]\xB3\x11a\0\xBEW\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x08\xD5W\x80c\xE003\x01\x14a\t\x04W\x80c\xF0h T\x14a\t#W\x80c\xF2\xFD\xE3\x8B\x14a\tBW\x80c\xF5ga`\x14a\taW\x80c\xF9\xE5\r\x19\x14a\t\x80W__\xFD[\x80c\xAA\xBD]\xB3\x14a\x07\xE5W\x80c\xAD<\xB1\xCC\x14a\x08\x04W\x80c\xB3;\xC4\x91\x14a\x08AW\x80c\xB5\xAD\xEA<\x14a\x08`W\x80c\xC2;\x9E\x9E\x14a\x08\x7FW\x80c\xC8\xE5\xE4\x98\x14a\x08\xB7W__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x0FW\x80c\x8D\xA5\xCB[\x14a\x06\xE2W\x80c\x90\xC1C\x90\x14a\x07\x1EW\x80c\x96\xC1\xCAa\x14a\x07=W\x80c\x99\x83(\xE8\x14a\x07\\W\x80c\x9B\xAA<\xC9\x14a\x07qW\x80c\x9F\xDBT\xA7\x14a\x07\x90W__\xFD[\x80ci\xCCj\x04\x14a\x061W\x80cqP\x18\xA6\x14a\x06EW\x80cu|7\xAD\x14a\x06YW\x80cvg\x18\x08\x14a\x06sW\x80c\x82nA\xFC\x14a\x06\x87W\x80c\x85\x84\xD2?\x14a\x06\xA6W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xF7W\x80cAh'D\x11a\x01\xB1W\x80cAh'D\x14a\x05uW\x80cBm1\x94\x14a\x05\x92W\x80cC=\xBA\x9F\x14a\x05\xB3W\x80cO\x1E\xF2\x86\x14a\x05\xD2W\x80cR\xD1\x90-\x14a\x05\xE5W\x80cb:\x138\x14a\x05\xF9W__\xFD[\x80c0\x0C\x89\xDD\x14a\x04\x8CW\x80c1=\xF7\xB1\x14a\x04\xABW\x80c7\x8E\xC2;\x14a\x04\xE2W\x80c8\xE4T\xB1\x14a\x04\xFEW\x80c<#\xB6\xDB\x14a\x05\x12W\x80c>\xD5[{\x14a\x05OW__\xFD[\x80c\x16z\xC6\x18\x11a\x02HW\x80c\x16z\xC6\x18\x14a\x03\x90W\x80c\x1A\xF0\x804\x14a\x03\xAFW\x80c c\xD4\xF7\x14a\x03\xCEW\x80c%)t'\x14a\x03\xEDW\x80c-R\xAA\xD6\x14a\x04\x1CW\x80c/y\x88\x9D\x14a\x04NW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x84W\x80c\x02\xB5\x92\xF3\x14a\x02\xA5W\x80c\x06%\xE1\x9B\x14a\x03\x02W\x80c\r\x8En,\x14a\x03DW\x80c\x12\x17<,\x14a\x03oW[__\xFD[4\x80\x15a\x02\x8FW__\xFD[Pa\x02\xA3a\x02\x9E6`\x04a+\xF2V[a\t\x94V[\0[4\x80\x15a\x02\xB0W__\xFD[Pa\x02\xC4a\x02\xBF6`\x04a,\x0BV[a\nGV[`@Qa\x02\xF9\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\x03\rW__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x03$\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xF9V[4\x80\x15a\x03OW__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xF9V[4\x80\x15a\x03zW__\xFD[Pa\x03\x83a\n\x90V[`@Qa\x02\xF9\x91\x90a,\"V[4\x80\x15a\x03\x9BW__\xFD[Pa\x02\xA3a\x03\xAA6`\x04a.9V[a\x10\xC0V[4\x80\x15a\x03\xBAW__\xFD[Pa\x02\xA3a\x03\xC96`\x04a,\x0BV[`\x0FUV[4\x80\x15a\x03\xD9W__\xFD[Pa\x02\xA3a\x03\xE86`\x04a1\x1DV[a\x117V[4\x80\x15a\x03\xF8W__\xFD[Pa\x04\x0Ca\x04\x076`\x04a.9V[a\x11PV[`@Q\x90\x15\x15\x81R` \x01a\x02\xF9V[4\x80\x15a\x04'W__\xFD[Pa\x02\xA3a\x0466`\x04a,\x0BV[`\x10\x80T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x90U`\x11UV[4\x80\x15a\x04YW__\xFD[P`\x08Ta\x04t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x04\x97W__\xFD[Pa\x04\x0Ca\x04\xA66`\x04a.9V[a\x11\xB2V[4\x80\x15a\x04\xB6W__\xFD[P`\x08Ta\x04\xCA\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x04\xEDW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xF9V[4\x80\x15a\x05\tW__\xFD[Pa\x02\xA3a\x12GV[4\x80\x15a\x05\x1DW__\xFD[Pa\x02\xA3a\x05,6`\x04a.9V[`\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\x05ZW__\xFD[P`\nTa\x04t\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x80W__\xFD[P`\x10T`\x01`\x01`@\x1B\x03\x16a\x04tV[4\x80\x15a\x05\x9DW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03$\x93\x92\x91\x90\x84V[4\x80\x15a\x05\xBEW__\xFD[Pa\x02\xA3a\x05\xCD6`\x04a1dV[a\x13>V[a\x02\xA3a\x05\xE06`\x04a1}V[a\x13RV[4\x80\x15a\x05\xF0W__\xFD[Pa\x04\xF0a\x13qV[4\x80\x15a\x06\x04W__\xFD[Pa\x02\xA3a\x06\x136`\x04a2cV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x06<W__\xFD[Pa\x02\xA3a\x13\x8CV[4\x80\x15a\x06PW__\xFD[Pa\x02\xA3a\x13\xFAV[4\x80\x15a\x06dW__\xFD[Pa\x02\xA3a\x03\xE86`\x04a2}V[4\x80\x15a\x06~W__\xFD[Pa\x04ta\x14\x1BV[4\x80\x15a\x06\x92W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x04\x0CV[4\x80\x15a\x06\xB1W__\xFD[Pa\x06\xC5a\x06\xC06`\x04a,\x0BV[a\x14EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xF9V[4\x80\x15a\x06\xEDW__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\xCAV[4\x80\x15a\x07)W__\xFD[Pa\x04ta\x0786`\x04a2\xC1V[a\x15pV[4\x80\x15a\x07HW__\xFD[Pa\x02\xA3a\x07W6`\x04a1dV[a\x15\xDFV[4\x80\x15a\x07gW__\xFD[Pa\x04\xF0`\x0FT\x81V[4\x80\x15a\x07|W__\xFD[Pa\x02\xA3a\x07\x8B6`\x04a2\xE9V[a\x16hV[4\x80\x15a\x07\x9BW__\xFD[P`\x06T`\x07Ta\x07\xBF\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\xF9V[4\x80\x15a\x07\xF0W__\xFD[Pa\x02\xA3a\x07\xFF6`\x04a3>V[a\x17wV[4\x80\x15a\x08\x0FW__\xFD[Pa\x084`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xF9\x91\x90a3\x82V[4\x80\x15a\x08LW__\xFD[Pa\x02\xA3a\x08[6`\x04a2\xC1V[a\x1A\x9CV[4\x80\x15a\x08kW__\xFD[Pa\x02\xA3a\x08z6`\x04a3\xB7V[a\x1B\xF5V[4\x80\x15a\x08\x8AW__\xFD[P`\x08Ta\x08\xA2\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xF9V[4\x80\x15a\x08\xC2W__\xFD[Pa\x02\xA3`\x10\x80T`\xFF`@\x1B\x19\x16\x90UV[4\x80\x15a\x08\xE0W__\xFD[P`\x04T`\x05Ta\x07\xBF\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\t\x0FW__\xFD[Pa\x04\x0Ca\t\x1E6`\x04a3\xD1V[a\x1C<V[4\x80\x15a\t.W__\xFD[P`\nTa\x04t\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\tMW__\xFD[Pa\x02\xA3a\t\\6`\x04a+\xF2V[a\x1CvV[4\x80\x15a\tlW__\xFD[Pa\x02\xA3a\t{6`\x04a3\xF1V[a\x1C\xB5V[4\x80\x15a\t\x8BW__\xFD[P`\tTa\x04\xF0V[a\t\x9Ca\x1D`V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t\xC3W`@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\t\xF2W`@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\nVW_\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\n\x98a)\x12V[b\x01\0\0\x81R`\x05` \x82\x01R\x7F\x01\x8F|\xCD&e/*\xD0\xA0\xD8\x91\xBF)\xC5\xEF\x9F{*NZ\x82\x95\xEE\n\xCD\xE6\x9B\x16i\xAC\xB5`@\x82\x01QR\x7F\x0C;\x19\xCB0\xF3\xED\xF9>\xB2\xB9\xE0\xB1\x1C\xE0\x99\xC5t[\xC3\xED\xA3\"l\x7F]_9\xA9{\xFC\xAA` `@\x83\x01Q\x01R\x7F\x14\x1E=h\xAA\xD5\x0B\xF0\x84?d]a\xF5\xE8\xFE6\x08\xD3\x12\xE4W\xD1\xBFq,\xE2\x0C,\xE9\x06\xA9``\x82\x01QR\x7F+D\xC06v\xD0\xA3\xCD\x12%~X\x9Bx\xF0Y\xA5%\xAA\xC5\xD6\xBF\xAB\ra\x89\xD4\xB4\n\xE5\x11\"` ``\x83\x01Q\x01R\x7F\x18`\x9Fy\xB8){?\x99Q\xE7\x13\x99E\xAA`\xE3>\x91M\xEAo'\xBD\xA9 \xB0\xE0\xC9\t5\xF3`\x80\x82\x01QR\x7F\x11\xA61Z\xBB\x98\xF7l\xCE[O\xA5\xD8{\x8A d\xD2\xD0L \xF83\x14\xD2\xDD/\xDBh\x14\x1E=` `\x80\x83\x01Q\x01R\x7F/\xA93Hh\x9E\xA0{\xB7`\xD7\xC3\x10\r1H\xAF\xC3B\xC0P\xEB\xA7\xF3\x94U\xE4x\xA5s\r\x05`\xA0\x82\x01QR\x7F\x0B|\x92\x11>\xCA\xBF\xA5I\x88\xD3\xA8\x1E\x13#q\x96\xC9\x97]\xD3\xDE\xA0\xA3%\xC4\x9B\xCF\x90\x1F\x8BJ` `\xA0\x83\x01Q\x01R\x7F*\xE1\x10\0\xA5\xBD\ny\xAD\xF8\xE3\xA5\xA4I\xEA\\X\xDF\xA7\xD6\xA2\xFA$\xB9\xC9v\xEC\xFC\xA7\x06X@`\xC0\x82\x01QR\x7F\x0CFw\xBE\xFD\xD8\xC7\xD2GO/}\x19\xF2\xD0\xE2tz~\x05F\x9C\xC0\x8E\xEE+{\x81\xADHr\xE2` `\xC0\x83\x01Q\x01R\x7F\x04\x06]\xA2\xEEXX\xE505\xE3\xFA\xB8DD\xA8f:\x8E\xAD])\x9B\x0B\x04`\xB9\xBDk\x9C4\xCB`\xE0\x82\x01QR\x7F\r\xD3;\xF9\xF5\x03\xC9\xD0\xB4\x86\xEC\x82[\xD8\xDD\xFB\xC9:\x96\xF4\xE0\x99x\xBE\xA9M\xB7\xCA\xA3>2\xF0` `\xE0\x83\x01Q\x01R\x7F\rS\xEC\xF3FL;C\xF6t\xA4\xC9\xAE]\xAC\xD9\xE2\xA6\xCFi\xCC\xD0k\xDB8\xCD\xEF\x07\xAC\xD0\xB9\xB8a\x01\0\x82\x01QR\x7F\x0C\nSX\xE2t\xA8w\xCD\x87\xE0\x17\xA9\x0E>,F0c|\x14@\r\x16\x14\x16\x10\x81uC\xCCl` a\x01\0\x83\x01Q\x01R\x7F\x05=!IB\x94\xA2+><V|\x9Fa\x86\x15\xAFA\xC2W\x04;\x87G\x07\x88\xD7\xC3\x0E\x91[2a\x01 \x82\x01QR\x7F\x04\xCF\xEB\x1D\x7F\xF9\xE0w\x94\xE4~Ho\xCF\xE6\xB0\xE1C\xC7JI\xCE\x91^\xBD\xF6\xAEh\xDFn\x06\xB8` a\x01 \x83\x01Q\x01R\x7F\x11?(&\xBFr!\xDE\x17\\\xA0F\xF8/Q\x11*\x9E\xB1Hk\x06t\x7FM\x13\x94\x0B\xC2oK\xB8a\x01@\x82\x01QR\x7F\x05\xCF\xAAz\xA0\x8B\x08\r\xCB\xC3\x1C\xAD\xDDP\x1F\xE5\xEF\x8C\x11\x8D\x8E\xD7\xD5\0p\x8E\xC6\x89\xB3\xAC\x7F+` a\x01@\x83\x01Q\x01R\x7F\n\x9D\x14{,<c\xD2\x98\x19\x8A\xF3\x85U\x88q\xA9\xB6\x9C\x19\"\x91\xA4\xEEi\xDE\xF6\xD8-\xD7\xC3\x1Ea\x01`\x82\x01QR\x7F\x01mZ\xE3\xFC<m\xC5(?\xF6>/\xFE\x92\xD0\x93\x1C\xC7rX\xCC\xCF=\x1C\x9A\xED`\x1E\xD2\xE8\xBA` a\x01`\x83\x01Q\x01R\x7F\x12=\x9F)\x08\xCDO\x03\x8B\xB2\x81\x80Z\xD8\xE9\"DDi\xB0/K\x83\xE6\xC0Q\xC0\xE1\xCA\xAD\x15,a\x01\x80\x82\x01QR\x7F\x08\xE6G\xCC\x02\xB9\xDFL\xEB[\x15EP\xD2\xB2\x9A{g7\x0Fg\xA3rt k\xB1,\\E\x1D\xC2` a\x01\x80\x83\x01Q\x01R\x7F\x18Y\x10^J\xD2\x18)\xC1,J[P\xD5\xA2\xA5\xD9\x88\xFDs\xEBD$FV8\xE1\x99\xAB6{\x82a\x01\xA0\x82\x01QR\x7F\n\xBB\xCC\xC2\x90\x07\xB3\xC6M\xADU\x0Fv\xC9\x9E\xA30\xB1\x02\xDD\x7F\xB5zT*\x9A\xDD\x84\x84]Q\xC3` a\x01\xA0\x83\x01Q\x01R\x7F&:~\xBA\xCB\xF1\x81\xA2\x81\xA3IMu\xE8\"\x16]?P\xE9\xAC\x14\xE7J\x82*\xD9\x15\x03\xECx\xA9a\x01\xC0\x82\x01QR\x7F\x1F\th\xF3\x16\\\0\xC69d\xE7\x1E\xF0\xC4#\x96\xA1F\x19\n\x97\xFF/Cj\xE8\x92\x88\xCB\x9D4F` a\x01\xC0\x83\x01Q\x01R\x7F/|\xD5\xCCrB\r\xD9\x0C\xF8 tk\x89\xE6\x16\xDF\xF8\xB2\x1E\x9A\xAD\xB9\xA4\xA0oA\xEC\xE2\x03\x9A^a\x01\xE0\x82\x01QR\x7F\x15\xA3@8Pn\xC1O\xC8\xC2j\xD2U\x16\x19\xBA\xCE\x01H?\x08^ \x8D#\x02\xADL!\x11\xCB7` a\x01\xE0\x83\x01Q\x01R\x7F\x17-*\xA0\xFB\x17-3\x1B\x0F6q\xAEh\xBE\x93\xEC\xFB\xDAc\xA7\"\x17k\xE8\x84\x1E\x83\x901\xB6\x1Ea\x02\0\x82\x01QR\x7F\x13\xB2\x9E1\xF3s\x01\x17\xE5C\t\xA3?G/S\x8Fh\x8B\xB9L\xCC0\x85\xDA\x13\xA5a\xDC\x88e\xE9` a\x02\0\x83\x01Q\x01R\x7F\x0B\xF4\x05\x0E\x8F\x04Y\"\xCA\xE6\x13\xD4\xA6&\xAE\xAE\xEE}\xC2J+{\xB4s\xAE\xE4^\\\x94\xE7\xED\xE3a\x02 \x82\x01QR\x7F\x15\xAAm\x93\x99\xCD\x9B\x8A\xB3\x8889\xD3\0\xE7o\x9EN+\xAA\xD7\xD3\x9E\n\xA2\xE3\x82\xF25\xD2\"c` a\x02 \x83\x01Q\x01R\x7F\t\xDD\x10#\x80T`a\xAAB\xF0\x87\xF8\xACU%\xA6t{\x8D\xB1\xE3\xC4\xFE\x03?\xDB\xE3\xD8\rn\x9Aa\x02@\x82\x01QR\x7F.\xDF\xB5\xB6\x03\xBB\xB2\xD3v\xFF\xE8v\xBD!\x93\x19\xD3M\x88\x13\xD0\x9Bp\xFB7\xDA<\xC2\xB7~\xBA\xCB` a\x02@\x83\x01Q\x01R\x7F\x04K\xEFo7\xB3\xB1\xDB-\xA9\x9ARb\xD0T\x16?\xC4e\xD2NS\x92]\x07\xE5\xD4\xB5\xFE\x94gFa\x02`\x82\x01QR\x7F\x10E7(\xE6\x1B\x7F\xDF\x86:\xDF\xFB\x97\xC4\xA6[\x9C\x11`\x87\xC1\x0F\x01V?\xC3\x13\x93\xEEi\xEA?` 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\xC8a\x1D`V[`\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\x11\x0E\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x15pV[`\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\x11pWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11|WP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x11\x93\x83`\x05a4\xFDV[a\x11\x9D\x91\x90a50V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x11\xD2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11\xDEWP_\x91\x90PV[`\nTa\x11\xF4\x90`\x01`\x01`@\x1B\x03\x16\x83a50V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x12AWP`\nTa\x12\x1C\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a5]V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x126\x91\x16\x84a50V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x12Oa\x1D`V[_Q` a:\xBF_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x12\x85WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\xA3W`@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\x90\x81\x17\x83U`\nTa\x12\xDD\x92\x91\x81\x04\x82\x16\x91\x16a\x15pV[`\x10\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x83\x16\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\xA1PPV[a\x13Fa\x1D`V[a\x13O\x81a\x15\xDFV[PV[a\x13Za\x1D\xBBV[a\x13c\x82a\x1E_V[a\x13m\x82\x82a\x1E\xA0V[PPV[_a\x13za\x1FaV[P_Q` a:\x9F_9_Q\x90_R\x90V[a\x13\x94a\x1D`V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x13\xDFW`\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\x14\x02a\x1D`V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\x14@\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x15pV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x14Y`\x01\x83a5|V[\x81T\x81\x10a\x14iWa\x14ia5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x14\xA8W`@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\x15iW\x84`\t\x82\x81T\x81\x10a\x14\xD8Wa\x14\xD8a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x15aW`\t\x81\x81T\x81\x10a\x15\x11Wa\x15\x11a5\x8FV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x154Wa\x154a5\x8FV[\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\x14\xBCV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x15\x88WP_a\x12AV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x15\xA0WP`\x01a\x12AV[a\x15\xAA\x82\x84a50V[`\x01`\x01`@\x1B\x03\x16_\x03a\x15\xCAWa\x15\xC3\x82\x84a5\xA3V[\x90Pa\x12AV[a\x15\xD4\x82\x84a5\xA3V[a\x15\xC3\x90`\x01a4\xFDV[a\x15\xE7a\x1D`V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x16\x06WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x16$WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x16BW`@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[_Q` a:\xBF_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x16\x99WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x16\xB4WP0;\x15[\x90P\x81\x15\x80\x15a\x16\xC2WP\x80\x15[\x15a\x16\xE0W`@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\x17\nW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x17\x13\x86a\x1F\xAAV[a\x17\x1Ba\x1F\xBBV[a\x17&\x89\x89\x89a\x1F\xC3V[\x83\x15a\x17lW\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[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x17\x9CWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x17\xBAW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x84Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x17\xF3WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x18\x11W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\x1E\x84`@\x01Qa \xEFV[a\x18+\x83` \x01Qa \xEFV[a\x188\x83`@\x01Qa \xEFV[a\x18E\x83``\x01Qa \xEFV[_a\x18Na\x14\x1BV[` \x86\x01Q`\nT\x91\x92P_\x91a\x18n\x91\x90`\x01`\x01`@\x1B\x03\x16a\x15pV[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x18\xB2Wa\x18\x94\x86` \x01Qa\x11\xB2V[\x15a\x18\xB2W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x10T`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x11\x15a\x19^W`\x02a\x18\xD5\x83\x83a5]V[`\x01`\x01`@\x1B\x03\x16\x10a\x18\xFCW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19\x07\x82`\x01a4\xFDV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x19@WP`\x06Ta\x19>\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x11PV[\x15[\x15a\x19^W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19j\x86\x86\x86\x86a!0V[\x85Q`\x06\x80T` \x89\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`@\x87\x01Q`\x07U`\x0F\x85\x90U`\x10T\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x19\xC7WPa\x19\xC7\x86` \x01Qa\x11PV[\x15a\x1A1W\x84Q`\x0BU` \x85\x01Q`\x0CU`@\x85\x01Q`\rU``\x85\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\x1A\x15\x82`\x01a4\xFDV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x1A<CB\x88a#ZV[\x85` \x01Q`\x01`\x01`@\x1B\x03\x16\x86_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x88`@\x01Q`@Qa\x1A\x8C\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x1A\xA4a\x1D`V[_Q` a:\xBF_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x1A\xDAWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x1A\xF8W`@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\x1B@W`@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\x1B\x89\x83\x85a\x15pV[`\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[\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\x13OCB\x83a#ZV[`\x10T_\x90`\x01`@\x1B\x90\x04`\xFF\x16a\x1C^Wa\x1CY\x83\x83a%CV[a\x1CoV[\x81`\x11T\x84a\x1Cm\x91\x90a5|V[\x11[\x93\x92PPPV[a\x1C~a\x1D`V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1C\xACW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x13O\x81a&\x9BV[a\x1C\xC0`\t_a+wV[_[\x81Q\x81\x10\x15a\x13mW`\t\x82\x82\x81Q\x81\x10a\x1C\xDFWa\x1C\xDFa5\x8FV[` \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\x1C\xC2V[3a\x1D\x92\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\x13\xF8W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1C\xA3V[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\x1EAWP\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\x1E5_Q` a:\x9F_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x13\xF8W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1Ega\x1D`V[`@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\n<V[\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\x1E\xFAWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1E\xF7\x91\x81\x01\x90a5\xD0V[`\x01[a\x1F\"W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[_Q` a:\x9F_9_Q\x90_R\x81\x14a\x1FRW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1C\xA3V[a\x1F\\\x83\x83a'\x0BV[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\x13\xF8W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1F\xB2a'`V[a\x13O\x81a'\x96V[a\x13\xF8a'`V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1F\xE7WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1F\xF4WP` \x82\x01Q\x15[\x80a \x01WP`@\x82\x01Q\x15[\x80a \x0EWP``\x82\x01Q\x15[\x80a \x18WP\x81Q\x15[\x80a *WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a >WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a \\W`@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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x13mW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a!9a\n\x90V[\x90Pa!Ca+\x95V[`\x0CT\x81R`\rT` \x80\x83\x01\x91\x90\x91R`\x0ET`@\x83\x01R`\x0BT``\x80\x84\x01\x91\x90\x91R`\nT\x91\x88\x01Q\x90\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x91\x04\x81\x16\x91\x16\x10\x80\x15\x90a!\x9BWPa!\x9B\x87` \x01Qa\x11PV[\x15a!\xE4W`@\x80Q\x87Q` \x80\x83\x01\x91\x90\x91R\x88\x01Q\x81\x83\x01R\x90\x87\x01Q``\x80\x83\x01\x91\x90\x91R\x87\x01Q`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90Pa\"\x1FV[`@\x80Q`\x0BT` \x82\x01R`\x0CT\x91\x81\x01\x91\x90\x91R`\rT``\x82\x01R`\x0ET`\x80\x82\x01R`\xA0\x01`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P[`@\x80Q\x88Q`\x01`\x01`@\x1B\x03\x90\x81\x16` \x80\x84\x01\x91\x90\x91R\x8A\x01Q\x16\x81\x83\x01R\x90\x88\x01Q``\x82\x01R_\x90`\x80\x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90Ra\"p\x91\x84\x90\x89\x90` \x01a5\xFEV[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa\"\xB4\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a6 V[`\x80\x84\x01R`@QcT\xE8\xBDg`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90cT\xE8\xBDg\x90a\"\xF4\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a8\x15V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a#\x0FW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a#3\x91\x90a:5V[a#PW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a#\xCFWP`\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#\x9AWa#\x9Aa5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta#\xC4\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a5]V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a$bW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\xFCWa#\xFCa5\x8FV[_\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$<\x83a:TV[\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[`\tT_\x90C\x84\x11\x80a%TWP\x80\x15[\x80a%\x9EWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a%\x82Wa%\x82a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a%\xBCW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a%\xCA`\x01\x85a5|V[\x90P[\x81a&fW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a&fW\x86`\t\x82\x81T\x81\x10a%\xFFWa%\xFFa5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a&TW`\x01\x91P`\t\x81\x81T\x81\x10a&4Wa&4a5\x8FV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa&fV[\x80a&^\x81a:~V[\x91PPa%\xCDV[\x81a&\x84W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a&\x8F\x84\x89a5|V[\x11\x97\x96PPPPPPPV[\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[a'\x14\x82a'\x9EV[`@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'XWa\x1F\\\x82\x82a(\x01V[a\x13ma(sV[_Q` a:\xBF_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x13\xF8W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1C~a'`V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a'\xD3W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[_Q` a:\x9F_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(\x1D\x91\x90a:\x93V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a(UW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a(ZV[``\x91P[P\x91P\x91Pa(j\x85\x83\x83a(\x92V[\x95\x94PPPPPV[4\x15a\x13\xF8W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a(\xA2Wa\x1CY\x82a(\xE9V[\x81Q\x15\x80\x15a(\xB9WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a(\xE2W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x1C\xA3V[P\x92\x91PPV[\x80Q\x15a(\xF9W\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)E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*e`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\x85`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xA5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xC5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a*\xE5`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+\x05`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+%`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a+e`@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\x13O\x91\x90a+\xB3V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a+\xD8W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a+\xB4V[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a,\x02W__\xFD[a\x1Co\x82a+\xDCV[_` \x82\x84\x03\x12\x15a,\x1BW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa,T`@\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\xADW__\xFD[_` \x82\x84\x03\x12\x15a.IW__\xFD[a\x1Co\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.\x89Wa.\x89a.RV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x89Wa.\x89a.RV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xD9Wa.\xD9a.RV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a.\xF1W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\x13Wa/\x13a.RV[`@R\x90P\x80a/\"\x83a.#V[\x81Ra/0` \x84\x01a.#V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a/VW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/xWa/xa.RV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a/\xA3W__\xFD[a/\xABa.fV[\x90Pa/\xB7\x83\x83a/FV[\x81Ra/\xC6\x83`@\x84\x01a/FV[` \x82\x01Ra/\xD8\x83`\x80\x84\x01a/FV[`@\x82\x01Ra/\xEA\x83`\xC0\x84\x01a/FV[``\x82\x01Ra/\xFD\x83a\x01\0\x84\x01a/FV[`\x80\x82\x01Ra0\x10\x83a\x01@\x84\x01a/FV[`\xA0\x82\x01Ra0#\x83a\x01\x80\x84\x01a/FV[`\xC0\x82\x01Ra06\x83a\x01\xC0\x84\x01a/FV[`\xE0\x82\x01Ra0I\x83a\x02\0\x84\x01a/FV[a\x01\0\x82\x01Ra0]\x83a\x02@\x84\x01a/FV[a\x01 \x82\x01Ra0q\x83a\x02\x80\x84\x01a/FV[a\x01@\x82\x01Ra0\x85\x83a\x02\xC0\x84\x01a/FV[a\x01`\x82\x01Ra0\x99\x83a\x03\0\x84\x01a/FV[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\x15a1/W__\xFD[a19\x84\x84a.\xE1V[\x91Pa1H\x84``\x85\x01a/\x92V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a1tW__\xFD[a\x1Co\x82a1QV[__`@\x83\x85\x03\x12\x15a1\x8EW__\xFD[a1\x97\x83a+\xDCV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB1W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\xC1W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAWa1\xDAa.RV[a1\xED`\x1F\x82\x01`\x1F\x19\x16` \x01a.\xB1V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a2\x01W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a20W__\xFD[a28a.\x8FV[\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\x15a2sW__\xFD[a\x1Co\x83\x83a2 V[___a\x05`\x84\x86\x03\x12\x15a2\x90W__\xFD[a2\x9A\x85\x85a.\xE1V[\x92Pa2\xA9\x85``\x86\x01a2 V[\x91Pa2\xB8\x85`\xE0\x86\x01a/\x92V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a2\xD2W__\xFD[a2\xDB\x83a.#V[\x91Pa1H` \x84\x01a.#V[____a\x01 \x85\x87\x03\x12\x15a2\xFDW__\xFD[a3\x07\x86\x86a.\xE1V[\x93Pa3\x16\x86``\x87\x01a2 V[\x92Pa3$`\xE0\x86\x01a1QV[\x91Pa33a\x01\0\x86\x01a+\xDCV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a3RW__\xFD[a3\\\x86\x86a.\xE1V[\x93Pa3k\x86``\x87\x01a2 V[\x92P`\xE0\x85\x015\x91Pa33\x86a\x01\0\x87\x01a/\x92V[` \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\x15a3\xC7W__\xFD[a\x1Co\x83\x83a.\xE1V[__`@\x83\x85\x03\x12\x15a3\xE2W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a4\x01W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a4\x16W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a4&W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a4?Wa4?a.RV[a4N` \x82`\x05\x1B\x01a.\xB1V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a4oW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\xDFW`\x80\x84\x88\x03\x12\x15a4\x8DW__\xFD[a4\x95a.\x8FV[a4\x9E\x85a.#V[\x81Ra4\xAC` \x86\x01a.#V[` \x82\x01Ra4\xBD`@\x86\x01a.#V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a4vV[\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\x12AWa\x12Aa4\xE9V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5HWa5Ha5\x1CV[\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\x12AWa\x12Aa4\xE9V[\x81\x81\x03\x81\x81\x11\x15a\x12AWa\x12Aa4\xE9V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5\xBBWa5\xBBa5\x1CV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a5\xE0W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a6\x12a6\x0C\x83\x87a5\xE7V[\x85a5\xE7V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a6.Wa6.a5\x1CV[P\x06\x90V[\x80_[`\x05\x81\x10\x15a6UW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a66V[PPPPV[a6p\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 \x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa8G`@\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\x01Ra:\x1Fa\x05\0\x83\x01\x85a63V[a:-a\x05\xA0\x83\x01\x84a6[V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a:EW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1CoW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a:uWa:ua4\xE9V[`\x01\x01\x92\x91PPV[_\x81a:\x8CWa:\x8Ca4\xE9V[P_\x19\x01\x90V[_a\x1Co\x82\x84a5\xE7V\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\xA1dsolcC\0\x08\x1C\0\n",
5750    );
5751    #[derive(serde::Serialize, serde::Deserialize)]
5752    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5753    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5754```solidity
5755error AddressEmptyCode(address target);
5756```*/
5757    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5758    #[derive(Clone)]
5759    pub struct AddressEmptyCode {
5760        #[allow(missing_docs)]
5761        pub target: alloy::sol_types::private::Address,
5762    }
5763    #[allow(
5764        non_camel_case_types,
5765        non_snake_case,
5766        clippy::pub_underscore_fields,
5767        clippy::style
5768    )]
5769    const _: () = {
5770        use alloy::sol_types as alloy_sol_types;
5771        #[doc(hidden)]
5772        #[allow(dead_code)]
5773        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5774        #[doc(hidden)]
5775        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5776        #[cfg(test)]
5777        #[allow(dead_code, unreachable_patterns)]
5778        fn _type_assertion(
5779            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5780        ) {
5781            match _t {
5782                alloy_sol_types::private::AssertTypeEq::<
5783                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5784                >(_) => {}
5785            }
5786        }
5787        #[automatically_derived]
5788        #[doc(hidden)]
5789        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5790            fn from(value: AddressEmptyCode) -> Self {
5791                (value.target,)
5792            }
5793        }
5794        #[automatically_derived]
5795        #[doc(hidden)]
5796        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5797            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5798                Self { target: tuple.0 }
5799            }
5800        }
5801        #[automatically_derived]
5802        impl alloy_sol_types::SolError for AddressEmptyCode {
5803            type Parameters<'a> = UnderlyingSolTuple<'a>;
5804            type Token<'a> = <Self::Parameters<
5805                'a,
5806            > as alloy_sol_types::SolType>::Token<'a>;
5807            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5808            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5809            #[inline]
5810            fn new<'a>(
5811                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5812            ) -> Self {
5813                tuple.into()
5814            }
5815            #[inline]
5816            fn tokenize(&self) -> Self::Token<'_> {
5817                (
5818                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5819                        &self.target,
5820                    ),
5821                )
5822            }
5823            #[inline]
5824            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5825                <Self::Parameters<
5826                    '_,
5827                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5828                    .map(Self::new)
5829            }
5830        }
5831    };
5832    #[derive(serde::Serialize, serde::Deserialize)]
5833    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5834    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5835```solidity
5836error DeprecatedApi();
5837```*/
5838    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5839    #[derive(Clone)]
5840    pub struct DeprecatedApi;
5841    #[allow(
5842        non_camel_case_types,
5843        non_snake_case,
5844        clippy::pub_underscore_fields,
5845        clippy::style
5846    )]
5847    const _: () = {
5848        use alloy::sol_types as alloy_sol_types;
5849        #[doc(hidden)]
5850        #[allow(dead_code)]
5851        type UnderlyingSolTuple<'a> = ();
5852        #[doc(hidden)]
5853        type UnderlyingRustTuple<'a> = ();
5854        #[cfg(test)]
5855        #[allow(dead_code, unreachable_patterns)]
5856        fn _type_assertion(
5857            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5858        ) {
5859            match _t {
5860                alloy_sol_types::private::AssertTypeEq::<
5861                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5862                >(_) => {}
5863            }
5864        }
5865        #[automatically_derived]
5866        #[doc(hidden)]
5867        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5868            fn from(value: DeprecatedApi) -> Self {
5869                ()
5870            }
5871        }
5872        #[automatically_derived]
5873        #[doc(hidden)]
5874        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5875            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5876                Self
5877            }
5878        }
5879        #[automatically_derived]
5880        impl alloy_sol_types::SolError for DeprecatedApi {
5881            type Parameters<'a> = UnderlyingSolTuple<'a>;
5882            type Token<'a> = <Self::Parameters<
5883                'a,
5884            > as alloy_sol_types::SolType>::Token<'a>;
5885            const SIGNATURE: &'static str = "DeprecatedApi()";
5886            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5887            #[inline]
5888            fn new<'a>(
5889                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5890            ) -> Self {
5891                tuple.into()
5892            }
5893            #[inline]
5894            fn tokenize(&self) -> Self::Token<'_> {
5895                ()
5896            }
5897            #[inline]
5898            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5899                <Self::Parameters<
5900                    '_,
5901                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5902                    .map(Self::new)
5903            }
5904        }
5905    };
5906    #[derive(serde::Serialize, serde::Deserialize)]
5907    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5908    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5909```solidity
5910error ERC1967InvalidImplementation(address implementation);
5911```*/
5912    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5913    #[derive(Clone)]
5914    pub struct ERC1967InvalidImplementation {
5915        #[allow(missing_docs)]
5916        pub implementation: alloy::sol_types::private::Address,
5917    }
5918    #[allow(
5919        non_camel_case_types,
5920        non_snake_case,
5921        clippy::pub_underscore_fields,
5922        clippy::style
5923    )]
5924    const _: () = {
5925        use alloy::sol_types as alloy_sol_types;
5926        #[doc(hidden)]
5927        #[allow(dead_code)]
5928        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5929        #[doc(hidden)]
5930        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5931        #[cfg(test)]
5932        #[allow(dead_code, unreachable_patterns)]
5933        fn _type_assertion(
5934            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5935        ) {
5936            match _t {
5937                alloy_sol_types::private::AssertTypeEq::<
5938                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5939                >(_) => {}
5940            }
5941        }
5942        #[automatically_derived]
5943        #[doc(hidden)]
5944        impl ::core::convert::From<ERC1967InvalidImplementation>
5945        for UnderlyingRustTuple<'_> {
5946            fn from(value: ERC1967InvalidImplementation) -> Self {
5947                (value.implementation,)
5948            }
5949        }
5950        #[automatically_derived]
5951        #[doc(hidden)]
5952        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5953        for ERC1967InvalidImplementation {
5954            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5955                Self { implementation: tuple.0 }
5956            }
5957        }
5958        #[automatically_derived]
5959        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5960            type Parameters<'a> = UnderlyingSolTuple<'a>;
5961            type Token<'a> = <Self::Parameters<
5962                'a,
5963            > as alloy_sol_types::SolType>::Token<'a>;
5964            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5965            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5966            #[inline]
5967            fn new<'a>(
5968                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5969            ) -> Self {
5970                tuple.into()
5971            }
5972            #[inline]
5973            fn tokenize(&self) -> Self::Token<'_> {
5974                (
5975                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5976                        &self.implementation,
5977                    ),
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 `ERC1967NonPayable()` and selector `0xb398979f`.
5992```solidity
5993error ERC1967NonPayable();
5994```*/
5995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5996    #[derive(Clone)]
5997    pub struct ERC1967NonPayable;
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<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
6025            fn from(value: ERC1967NonPayable) -> Self {
6026                ()
6027            }
6028        }
6029        #[automatically_derived]
6030        #[doc(hidden)]
6031        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
6032            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6033                Self
6034            }
6035        }
6036        #[automatically_derived]
6037        impl alloy_sol_types::SolError for ERC1967NonPayable {
6038            type Parameters<'a> = UnderlyingSolTuple<'a>;
6039            type Token<'a> = <Self::Parameters<
6040                'a,
6041            > as alloy_sol_types::SolType>::Token<'a>;
6042            const SIGNATURE: &'static str = "ERC1967NonPayable()";
6043            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
6044            #[inline]
6045            fn new<'a>(
6046                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6047            ) -> Self {
6048                tuple.into()
6049            }
6050            #[inline]
6051            fn tokenize(&self) -> Self::Token<'_> {
6052                ()
6053            }
6054            #[inline]
6055            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6056                <Self::Parameters<
6057                    '_,
6058                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6059                    .map(Self::new)
6060            }
6061        }
6062    };
6063    #[derive(serde::Serialize, serde::Deserialize)]
6064    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6065    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
6066```solidity
6067error FailedInnerCall();
6068```*/
6069    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6070    #[derive(Clone)]
6071    pub struct FailedInnerCall;
6072    #[allow(
6073        non_camel_case_types,
6074        non_snake_case,
6075        clippy::pub_underscore_fields,
6076        clippy::style
6077    )]
6078    const _: () = {
6079        use alloy::sol_types as alloy_sol_types;
6080        #[doc(hidden)]
6081        #[allow(dead_code)]
6082        type UnderlyingSolTuple<'a> = ();
6083        #[doc(hidden)]
6084        type UnderlyingRustTuple<'a> = ();
6085        #[cfg(test)]
6086        #[allow(dead_code, unreachable_patterns)]
6087        fn _type_assertion(
6088            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6089        ) {
6090            match _t {
6091                alloy_sol_types::private::AssertTypeEq::<
6092                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6093                >(_) => {}
6094            }
6095        }
6096        #[automatically_derived]
6097        #[doc(hidden)]
6098        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
6099            fn from(value: FailedInnerCall) -> Self {
6100                ()
6101            }
6102        }
6103        #[automatically_derived]
6104        #[doc(hidden)]
6105        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
6106            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6107                Self
6108            }
6109        }
6110        #[automatically_derived]
6111        impl alloy_sol_types::SolError for FailedInnerCall {
6112            type Parameters<'a> = UnderlyingSolTuple<'a>;
6113            type Token<'a> = <Self::Parameters<
6114                'a,
6115            > as alloy_sol_types::SolType>::Token<'a>;
6116            const SIGNATURE: &'static str = "FailedInnerCall()";
6117            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
6118            #[inline]
6119            fn new<'a>(
6120                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6121            ) -> Self {
6122                tuple.into()
6123            }
6124            #[inline]
6125            fn tokenize(&self) -> Self::Token<'_> {
6126                ()
6127            }
6128            #[inline]
6129            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6130                <Self::Parameters<
6131                    '_,
6132                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6133                    .map(Self::new)
6134            }
6135        }
6136    };
6137    #[derive(serde::Serialize, serde::Deserialize)]
6138    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6139    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
6140```solidity
6141error InsufficientSnapshotHistory();
6142```*/
6143    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6144    #[derive(Clone)]
6145    pub struct InsufficientSnapshotHistory;
6146    #[allow(
6147        non_camel_case_types,
6148        non_snake_case,
6149        clippy::pub_underscore_fields,
6150        clippy::style
6151    )]
6152    const _: () = {
6153        use alloy::sol_types as alloy_sol_types;
6154        #[doc(hidden)]
6155        #[allow(dead_code)]
6156        type UnderlyingSolTuple<'a> = ();
6157        #[doc(hidden)]
6158        type UnderlyingRustTuple<'a> = ();
6159        #[cfg(test)]
6160        #[allow(dead_code, unreachable_patterns)]
6161        fn _type_assertion(
6162            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6163        ) {
6164            match _t {
6165                alloy_sol_types::private::AssertTypeEq::<
6166                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6167                >(_) => {}
6168            }
6169        }
6170        #[automatically_derived]
6171        #[doc(hidden)]
6172        impl ::core::convert::From<InsufficientSnapshotHistory>
6173        for UnderlyingRustTuple<'_> {
6174            fn from(value: InsufficientSnapshotHistory) -> Self {
6175                ()
6176            }
6177        }
6178        #[automatically_derived]
6179        #[doc(hidden)]
6180        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6181        for InsufficientSnapshotHistory {
6182            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6183                Self
6184            }
6185        }
6186        #[automatically_derived]
6187        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
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 = "InsufficientSnapshotHistory()";
6193            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
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 `InvalidAddress()` and selector `0xe6c4247b`.
6216```solidity
6217error InvalidAddress();
6218```*/
6219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6220    #[derive(Clone)]
6221    pub struct InvalidAddress;
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<InvalidAddress> for UnderlyingRustTuple<'_> {
6249            fn from(value: InvalidAddress) -> Self {
6250                ()
6251            }
6252        }
6253        #[automatically_derived]
6254        #[doc(hidden)]
6255        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
6256            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6257                Self
6258            }
6259        }
6260        #[automatically_derived]
6261        impl alloy_sol_types::SolError for InvalidAddress {
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 = "InvalidAddress()";
6267            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
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 `InvalidArgs()` and selector `0xa1ba07ee`.
6290```solidity
6291error InvalidArgs();
6292```*/
6293    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6294    #[derive(Clone)]
6295    pub struct InvalidArgs;
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<InvalidArgs> for UnderlyingRustTuple<'_> {
6323            fn from(value: InvalidArgs) -> Self {
6324                ()
6325            }
6326        }
6327        #[automatically_derived]
6328        #[doc(hidden)]
6329        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
6330            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6331                Self
6332            }
6333        }
6334        #[automatically_derived]
6335        impl alloy_sol_types::SolError for InvalidArgs {
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 = "InvalidArgs()";
6341            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
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 `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
6364```solidity
6365error InvalidHotShotBlockForCommitmentCheck();
6366```*/
6367    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6368    #[derive(Clone)]
6369    pub struct InvalidHotShotBlockForCommitmentCheck;
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<InvalidHotShotBlockForCommitmentCheck>
6397        for UnderlyingRustTuple<'_> {
6398            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
6399                ()
6400            }
6401        }
6402        #[automatically_derived]
6403        #[doc(hidden)]
6404        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6405        for InvalidHotShotBlockForCommitmentCheck {
6406            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6407                Self
6408            }
6409        }
6410        #[automatically_derived]
6411        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
6412            type Parameters<'a> = UnderlyingSolTuple<'a>;
6413            type Token<'a> = <Self::Parameters<
6414                'a,
6415            > as alloy_sol_types::SolType>::Token<'a>;
6416            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
6417            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
6418            #[inline]
6419            fn new<'a>(
6420                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6421            ) -> Self {
6422                tuple.into()
6423            }
6424            #[inline]
6425            fn tokenize(&self) -> Self::Token<'_> {
6426                ()
6427            }
6428            #[inline]
6429            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6430                <Self::Parameters<
6431                    '_,
6432                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6433                    .map(Self::new)
6434            }
6435        }
6436    };
6437    #[derive(serde::Serialize, serde::Deserialize)]
6438    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6439    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6440```solidity
6441error InvalidInitialization();
6442```*/
6443    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6444    #[derive(Clone)]
6445    pub struct InvalidInitialization;
6446    #[allow(
6447        non_camel_case_types,
6448        non_snake_case,
6449        clippy::pub_underscore_fields,
6450        clippy::style
6451    )]
6452    const _: () = {
6453        use alloy::sol_types as alloy_sol_types;
6454        #[doc(hidden)]
6455        #[allow(dead_code)]
6456        type UnderlyingSolTuple<'a> = ();
6457        #[doc(hidden)]
6458        type UnderlyingRustTuple<'a> = ();
6459        #[cfg(test)]
6460        #[allow(dead_code, unreachable_patterns)]
6461        fn _type_assertion(
6462            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6463        ) {
6464            match _t {
6465                alloy_sol_types::private::AssertTypeEq::<
6466                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6467                >(_) => {}
6468            }
6469        }
6470        #[automatically_derived]
6471        #[doc(hidden)]
6472        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6473            fn from(value: InvalidInitialization) -> Self {
6474                ()
6475            }
6476        }
6477        #[automatically_derived]
6478        #[doc(hidden)]
6479        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6480            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6481                Self
6482            }
6483        }
6484        #[automatically_derived]
6485        impl alloy_sol_types::SolError for InvalidInitialization {
6486            type Parameters<'a> = UnderlyingSolTuple<'a>;
6487            type Token<'a> = <Self::Parameters<
6488                'a,
6489            > as alloy_sol_types::SolType>::Token<'a>;
6490            const SIGNATURE: &'static str = "InvalidInitialization()";
6491            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6492            #[inline]
6493            fn new<'a>(
6494                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6495            ) -> Self {
6496                tuple.into()
6497            }
6498            #[inline]
6499            fn tokenize(&self) -> Self::Token<'_> {
6500                ()
6501            }
6502            #[inline]
6503            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6504                <Self::Parameters<
6505                    '_,
6506                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6507                    .map(Self::new)
6508            }
6509        }
6510    };
6511    #[derive(serde::Serialize, serde::Deserialize)]
6512    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6513    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6514```solidity
6515error InvalidMaxStateHistory();
6516```*/
6517    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6518    #[derive(Clone)]
6519    pub struct InvalidMaxStateHistory;
6520    #[allow(
6521        non_camel_case_types,
6522        non_snake_case,
6523        clippy::pub_underscore_fields,
6524        clippy::style
6525    )]
6526    const _: () = {
6527        use alloy::sol_types as alloy_sol_types;
6528        #[doc(hidden)]
6529        #[allow(dead_code)]
6530        type UnderlyingSolTuple<'a> = ();
6531        #[doc(hidden)]
6532        type UnderlyingRustTuple<'a> = ();
6533        #[cfg(test)]
6534        #[allow(dead_code, unreachable_patterns)]
6535        fn _type_assertion(
6536            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6537        ) {
6538            match _t {
6539                alloy_sol_types::private::AssertTypeEq::<
6540                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6541                >(_) => {}
6542            }
6543        }
6544        #[automatically_derived]
6545        #[doc(hidden)]
6546        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6547            fn from(value: InvalidMaxStateHistory) -> Self {
6548                ()
6549            }
6550        }
6551        #[automatically_derived]
6552        #[doc(hidden)]
6553        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6554            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6555                Self
6556            }
6557        }
6558        #[automatically_derived]
6559        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6560            type Parameters<'a> = UnderlyingSolTuple<'a>;
6561            type Token<'a> = <Self::Parameters<
6562                'a,
6563            > as alloy_sol_types::SolType>::Token<'a>;
6564            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6565            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6566            #[inline]
6567            fn new<'a>(
6568                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6569            ) -> Self {
6570                tuple.into()
6571            }
6572            #[inline]
6573            fn tokenize(&self) -> Self::Token<'_> {
6574                ()
6575            }
6576            #[inline]
6577            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6578                <Self::Parameters<
6579                    '_,
6580                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6581                    .map(Self::new)
6582            }
6583        }
6584    };
6585    #[derive(serde::Serialize, serde::Deserialize)]
6586    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6587    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6588```solidity
6589error InvalidProof();
6590```*/
6591    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6592    #[derive(Clone)]
6593    pub struct InvalidProof;
6594    #[allow(
6595        non_camel_case_types,
6596        non_snake_case,
6597        clippy::pub_underscore_fields,
6598        clippy::style
6599    )]
6600    const _: () = {
6601        use alloy::sol_types as alloy_sol_types;
6602        #[doc(hidden)]
6603        #[allow(dead_code)]
6604        type UnderlyingSolTuple<'a> = ();
6605        #[doc(hidden)]
6606        type UnderlyingRustTuple<'a> = ();
6607        #[cfg(test)]
6608        #[allow(dead_code, unreachable_patterns)]
6609        fn _type_assertion(
6610            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6611        ) {
6612            match _t {
6613                alloy_sol_types::private::AssertTypeEq::<
6614                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6615                >(_) => {}
6616            }
6617        }
6618        #[automatically_derived]
6619        #[doc(hidden)]
6620        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6621            fn from(value: InvalidProof) -> Self {
6622                ()
6623            }
6624        }
6625        #[automatically_derived]
6626        #[doc(hidden)]
6627        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6628            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6629                Self
6630            }
6631        }
6632        #[automatically_derived]
6633        impl alloy_sol_types::SolError for InvalidProof {
6634            type Parameters<'a> = UnderlyingSolTuple<'a>;
6635            type Token<'a> = <Self::Parameters<
6636                'a,
6637            > as alloy_sol_types::SolType>::Token<'a>;
6638            const SIGNATURE: &'static str = "InvalidProof()";
6639            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6640            #[inline]
6641            fn new<'a>(
6642                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6643            ) -> Self {
6644                tuple.into()
6645            }
6646            #[inline]
6647            fn tokenize(&self) -> Self::Token<'_> {
6648                ()
6649            }
6650            #[inline]
6651            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6652                <Self::Parameters<
6653                    '_,
6654                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6655                    .map(Self::new)
6656            }
6657        }
6658    };
6659    #[derive(serde::Serialize, serde::Deserialize)]
6660    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6661    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
6662```solidity
6663error InvalidScalar();
6664```*/
6665    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6666    #[derive(Clone)]
6667    pub struct InvalidScalar;
6668    #[allow(
6669        non_camel_case_types,
6670        non_snake_case,
6671        clippy::pub_underscore_fields,
6672        clippy::style
6673    )]
6674    const _: () = {
6675        use alloy::sol_types as alloy_sol_types;
6676        #[doc(hidden)]
6677        #[allow(dead_code)]
6678        type UnderlyingSolTuple<'a> = ();
6679        #[doc(hidden)]
6680        type UnderlyingRustTuple<'a> = ();
6681        #[cfg(test)]
6682        #[allow(dead_code, unreachable_patterns)]
6683        fn _type_assertion(
6684            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6685        ) {
6686            match _t {
6687                alloy_sol_types::private::AssertTypeEq::<
6688                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6689                >(_) => {}
6690            }
6691        }
6692        #[automatically_derived]
6693        #[doc(hidden)]
6694        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
6695            fn from(value: InvalidScalar) -> Self {
6696                ()
6697            }
6698        }
6699        #[automatically_derived]
6700        #[doc(hidden)]
6701        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
6702            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6703                Self
6704            }
6705        }
6706        #[automatically_derived]
6707        impl alloy_sol_types::SolError for InvalidScalar {
6708            type Parameters<'a> = UnderlyingSolTuple<'a>;
6709            type Token<'a> = <Self::Parameters<
6710                'a,
6711            > as alloy_sol_types::SolType>::Token<'a>;
6712            const SIGNATURE: &'static str = "InvalidScalar()";
6713            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
6714            #[inline]
6715            fn new<'a>(
6716                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6717            ) -> Self {
6718                tuple.into()
6719            }
6720            #[inline]
6721            fn tokenize(&self) -> Self::Token<'_> {
6722                ()
6723            }
6724            #[inline]
6725            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6726                <Self::Parameters<
6727                    '_,
6728                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6729                    .map(Self::new)
6730            }
6731        }
6732    };
6733    #[derive(serde::Serialize, serde::Deserialize)]
6734    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6735    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6736```solidity
6737error MissingEpochRootUpdate();
6738```*/
6739    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6740    #[derive(Clone)]
6741    pub struct MissingEpochRootUpdate;
6742    #[allow(
6743        non_camel_case_types,
6744        non_snake_case,
6745        clippy::pub_underscore_fields,
6746        clippy::style
6747    )]
6748    const _: () = {
6749        use alloy::sol_types as alloy_sol_types;
6750        #[doc(hidden)]
6751        #[allow(dead_code)]
6752        type UnderlyingSolTuple<'a> = ();
6753        #[doc(hidden)]
6754        type UnderlyingRustTuple<'a> = ();
6755        #[cfg(test)]
6756        #[allow(dead_code, unreachable_patterns)]
6757        fn _type_assertion(
6758            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6759        ) {
6760            match _t {
6761                alloy_sol_types::private::AssertTypeEq::<
6762                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6763                >(_) => {}
6764            }
6765        }
6766        #[automatically_derived]
6767        #[doc(hidden)]
6768        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6769            fn from(value: MissingEpochRootUpdate) -> Self {
6770                ()
6771            }
6772        }
6773        #[automatically_derived]
6774        #[doc(hidden)]
6775        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6776            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6777                Self
6778            }
6779        }
6780        #[automatically_derived]
6781        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6782            type Parameters<'a> = UnderlyingSolTuple<'a>;
6783            type Token<'a> = <Self::Parameters<
6784                'a,
6785            > as alloy_sol_types::SolType>::Token<'a>;
6786            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6787            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6788            #[inline]
6789            fn new<'a>(
6790                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6791            ) -> Self {
6792                tuple.into()
6793            }
6794            #[inline]
6795            fn tokenize(&self) -> Self::Token<'_> {
6796                ()
6797            }
6798            #[inline]
6799            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6800                <Self::Parameters<
6801                    '_,
6802                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6803                    .map(Self::new)
6804            }
6805        }
6806    };
6807    #[derive(serde::Serialize, serde::Deserialize)]
6808    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6809    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6810```solidity
6811error NoChangeRequired();
6812```*/
6813    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6814    #[derive(Clone)]
6815    pub struct NoChangeRequired;
6816    #[allow(
6817        non_camel_case_types,
6818        non_snake_case,
6819        clippy::pub_underscore_fields,
6820        clippy::style
6821    )]
6822    const _: () = {
6823        use alloy::sol_types as alloy_sol_types;
6824        #[doc(hidden)]
6825        #[allow(dead_code)]
6826        type UnderlyingSolTuple<'a> = ();
6827        #[doc(hidden)]
6828        type UnderlyingRustTuple<'a> = ();
6829        #[cfg(test)]
6830        #[allow(dead_code, unreachable_patterns)]
6831        fn _type_assertion(
6832            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6833        ) {
6834            match _t {
6835                alloy_sol_types::private::AssertTypeEq::<
6836                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6837                >(_) => {}
6838            }
6839        }
6840        #[automatically_derived]
6841        #[doc(hidden)]
6842        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6843            fn from(value: NoChangeRequired) -> Self {
6844                ()
6845            }
6846        }
6847        #[automatically_derived]
6848        #[doc(hidden)]
6849        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6850            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6851                Self
6852            }
6853        }
6854        #[automatically_derived]
6855        impl alloy_sol_types::SolError for NoChangeRequired {
6856            type Parameters<'a> = UnderlyingSolTuple<'a>;
6857            type Token<'a> = <Self::Parameters<
6858                'a,
6859            > as alloy_sol_types::SolType>::Token<'a>;
6860            const SIGNATURE: &'static str = "NoChangeRequired()";
6861            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6862            #[inline]
6863            fn new<'a>(
6864                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6865            ) -> Self {
6866                tuple.into()
6867            }
6868            #[inline]
6869            fn tokenize(&self) -> Self::Token<'_> {
6870                ()
6871            }
6872            #[inline]
6873            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6874                <Self::Parameters<
6875                    '_,
6876                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6877                    .map(Self::new)
6878            }
6879        }
6880    };
6881    #[derive(serde::Serialize, serde::Deserialize)]
6882    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6883    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6884```solidity
6885error NotInitializing();
6886```*/
6887    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6888    #[derive(Clone)]
6889    pub struct NotInitializing;
6890    #[allow(
6891        non_camel_case_types,
6892        non_snake_case,
6893        clippy::pub_underscore_fields,
6894        clippy::style
6895    )]
6896    const _: () = {
6897        use alloy::sol_types as alloy_sol_types;
6898        #[doc(hidden)]
6899        #[allow(dead_code)]
6900        type UnderlyingSolTuple<'a> = ();
6901        #[doc(hidden)]
6902        type UnderlyingRustTuple<'a> = ();
6903        #[cfg(test)]
6904        #[allow(dead_code, unreachable_patterns)]
6905        fn _type_assertion(
6906            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6907        ) {
6908            match _t {
6909                alloy_sol_types::private::AssertTypeEq::<
6910                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6911                >(_) => {}
6912            }
6913        }
6914        #[automatically_derived]
6915        #[doc(hidden)]
6916        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6917            fn from(value: NotInitializing) -> Self {
6918                ()
6919            }
6920        }
6921        #[automatically_derived]
6922        #[doc(hidden)]
6923        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6924            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6925                Self
6926            }
6927        }
6928        #[automatically_derived]
6929        impl alloy_sol_types::SolError for NotInitializing {
6930            type Parameters<'a> = UnderlyingSolTuple<'a>;
6931            type Token<'a> = <Self::Parameters<
6932                'a,
6933            > as alloy_sol_types::SolType>::Token<'a>;
6934            const SIGNATURE: &'static str = "NotInitializing()";
6935            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6936            #[inline]
6937            fn new<'a>(
6938                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6939            ) -> Self {
6940                tuple.into()
6941            }
6942            #[inline]
6943            fn tokenize(&self) -> Self::Token<'_> {
6944                ()
6945            }
6946            #[inline]
6947            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6948                <Self::Parameters<
6949                    '_,
6950                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6951                    .map(Self::new)
6952            }
6953        }
6954    };
6955    #[derive(serde::Serialize, serde::Deserialize)]
6956    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6957    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6958```solidity
6959error OutdatedState();
6960```*/
6961    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6962    #[derive(Clone)]
6963    pub struct OutdatedState;
6964    #[allow(
6965        non_camel_case_types,
6966        non_snake_case,
6967        clippy::pub_underscore_fields,
6968        clippy::style
6969    )]
6970    const _: () = {
6971        use alloy::sol_types as alloy_sol_types;
6972        #[doc(hidden)]
6973        #[allow(dead_code)]
6974        type UnderlyingSolTuple<'a> = ();
6975        #[doc(hidden)]
6976        type UnderlyingRustTuple<'a> = ();
6977        #[cfg(test)]
6978        #[allow(dead_code, unreachable_patterns)]
6979        fn _type_assertion(
6980            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6981        ) {
6982            match _t {
6983                alloy_sol_types::private::AssertTypeEq::<
6984                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6985                >(_) => {}
6986            }
6987        }
6988        #[automatically_derived]
6989        #[doc(hidden)]
6990        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6991            fn from(value: OutdatedState) -> Self {
6992                ()
6993            }
6994        }
6995        #[automatically_derived]
6996        #[doc(hidden)]
6997        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6998            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6999                Self
7000            }
7001        }
7002        #[automatically_derived]
7003        impl alloy_sol_types::SolError for OutdatedState {
7004            type Parameters<'a> = UnderlyingSolTuple<'a>;
7005            type Token<'a> = <Self::Parameters<
7006                'a,
7007            > as alloy_sol_types::SolType>::Token<'a>;
7008            const SIGNATURE: &'static str = "OutdatedState()";
7009            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
7010            #[inline]
7011            fn new<'a>(
7012                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7013            ) -> Self {
7014                tuple.into()
7015            }
7016            #[inline]
7017            fn tokenize(&self) -> Self::Token<'_> {
7018                ()
7019            }
7020            #[inline]
7021            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7022                <Self::Parameters<
7023                    '_,
7024                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7025                    .map(Self::new)
7026            }
7027        }
7028    };
7029    #[derive(serde::Serialize, serde::Deserialize)]
7030    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7031    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
7032```solidity
7033error OwnableInvalidOwner(address owner);
7034```*/
7035    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7036    #[derive(Clone)]
7037    pub struct OwnableInvalidOwner {
7038        #[allow(missing_docs)]
7039        pub owner: alloy::sol_types::private::Address,
7040    }
7041    #[allow(
7042        non_camel_case_types,
7043        non_snake_case,
7044        clippy::pub_underscore_fields,
7045        clippy::style
7046    )]
7047    const _: () = {
7048        use alloy::sol_types as alloy_sol_types;
7049        #[doc(hidden)]
7050        #[allow(dead_code)]
7051        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7052        #[doc(hidden)]
7053        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7054        #[cfg(test)]
7055        #[allow(dead_code, unreachable_patterns)]
7056        fn _type_assertion(
7057            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7058        ) {
7059            match _t {
7060                alloy_sol_types::private::AssertTypeEq::<
7061                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7062                >(_) => {}
7063            }
7064        }
7065        #[automatically_derived]
7066        #[doc(hidden)]
7067        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
7068            fn from(value: OwnableInvalidOwner) -> Self {
7069                (value.owner,)
7070            }
7071        }
7072        #[automatically_derived]
7073        #[doc(hidden)]
7074        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
7075            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7076                Self { owner: tuple.0 }
7077            }
7078        }
7079        #[automatically_derived]
7080        impl alloy_sol_types::SolError for OwnableInvalidOwner {
7081            type Parameters<'a> = UnderlyingSolTuple<'a>;
7082            type Token<'a> = <Self::Parameters<
7083                'a,
7084            > as alloy_sol_types::SolType>::Token<'a>;
7085            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
7086            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
7087            #[inline]
7088            fn new<'a>(
7089                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7090            ) -> Self {
7091                tuple.into()
7092            }
7093            #[inline]
7094            fn tokenize(&self) -> Self::Token<'_> {
7095                (
7096                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7097                        &self.owner,
7098                    ),
7099                )
7100            }
7101            #[inline]
7102            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7103                <Self::Parameters<
7104                    '_,
7105                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7106                    .map(Self::new)
7107            }
7108        }
7109    };
7110    #[derive(serde::Serialize, serde::Deserialize)]
7111    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7112    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
7113```solidity
7114error OwnableUnauthorizedAccount(address account);
7115```*/
7116    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7117    #[derive(Clone)]
7118    pub struct OwnableUnauthorizedAccount {
7119        #[allow(missing_docs)]
7120        pub account: alloy::sol_types::private::Address,
7121    }
7122    #[allow(
7123        non_camel_case_types,
7124        non_snake_case,
7125        clippy::pub_underscore_fields,
7126        clippy::style
7127    )]
7128    const _: () = {
7129        use alloy::sol_types as alloy_sol_types;
7130        #[doc(hidden)]
7131        #[allow(dead_code)]
7132        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7133        #[doc(hidden)]
7134        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7135        #[cfg(test)]
7136        #[allow(dead_code, unreachable_patterns)]
7137        fn _type_assertion(
7138            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7139        ) {
7140            match _t {
7141                alloy_sol_types::private::AssertTypeEq::<
7142                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7143                >(_) => {}
7144            }
7145        }
7146        #[automatically_derived]
7147        #[doc(hidden)]
7148        impl ::core::convert::From<OwnableUnauthorizedAccount>
7149        for UnderlyingRustTuple<'_> {
7150            fn from(value: OwnableUnauthorizedAccount) -> Self {
7151                (value.account,)
7152            }
7153        }
7154        #[automatically_derived]
7155        #[doc(hidden)]
7156        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7157        for OwnableUnauthorizedAccount {
7158            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7159                Self { account: tuple.0 }
7160            }
7161        }
7162        #[automatically_derived]
7163        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
7164            type Parameters<'a> = UnderlyingSolTuple<'a>;
7165            type Token<'a> = <Self::Parameters<
7166                'a,
7167            > as alloy_sol_types::SolType>::Token<'a>;
7168            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
7169            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
7170            #[inline]
7171            fn new<'a>(
7172                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7173            ) -> Self {
7174                tuple.into()
7175            }
7176            #[inline]
7177            fn tokenize(&self) -> Self::Token<'_> {
7178                (
7179                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7180                        &self.account,
7181                    ),
7182                )
7183            }
7184            #[inline]
7185            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7186                <Self::Parameters<
7187                    '_,
7188                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7189                    .map(Self::new)
7190            }
7191        }
7192    };
7193    #[derive(serde::Serialize, serde::Deserialize)]
7194    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7195    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
7196```solidity
7197error OwnershipCannotBeRenounced();
7198```*/
7199    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7200    #[derive(Clone)]
7201    pub struct OwnershipCannotBeRenounced;
7202    #[allow(
7203        non_camel_case_types,
7204        non_snake_case,
7205        clippy::pub_underscore_fields,
7206        clippy::style
7207    )]
7208    const _: () = {
7209        use alloy::sol_types as alloy_sol_types;
7210        #[doc(hidden)]
7211        #[allow(dead_code)]
7212        type UnderlyingSolTuple<'a> = ();
7213        #[doc(hidden)]
7214        type UnderlyingRustTuple<'a> = ();
7215        #[cfg(test)]
7216        #[allow(dead_code, unreachable_patterns)]
7217        fn _type_assertion(
7218            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7219        ) {
7220            match _t {
7221                alloy_sol_types::private::AssertTypeEq::<
7222                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7223                >(_) => {}
7224            }
7225        }
7226        #[automatically_derived]
7227        #[doc(hidden)]
7228        impl ::core::convert::From<OwnershipCannotBeRenounced>
7229        for UnderlyingRustTuple<'_> {
7230            fn from(value: OwnershipCannotBeRenounced) -> Self {
7231                ()
7232            }
7233        }
7234        #[automatically_derived]
7235        #[doc(hidden)]
7236        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7237        for OwnershipCannotBeRenounced {
7238            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7239                Self
7240            }
7241        }
7242        #[automatically_derived]
7243        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
7244            type Parameters<'a> = UnderlyingSolTuple<'a>;
7245            type Token<'a> = <Self::Parameters<
7246                'a,
7247            > as alloy_sol_types::SolType>::Token<'a>;
7248            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
7249            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
7250            #[inline]
7251            fn new<'a>(
7252                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7253            ) -> Self {
7254                tuple.into()
7255            }
7256            #[inline]
7257            fn tokenize(&self) -> Self::Token<'_> {
7258                ()
7259            }
7260            #[inline]
7261            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7262                <Self::Parameters<
7263                    '_,
7264                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7265                    .map(Self::new)
7266            }
7267        }
7268    };
7269    #[derive(serde::Serialize, serde::Deserialize)]
7270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7271    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
7272```solidity
7273error ProverNotPermissioned();
7274```*/
7275    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7276    #[derive(Clone)]
7277    pub struct ProverNotPermissioned;
7278    #[allow(
7279        non_camel_case_types,
7280        non_snake_case,
7281        clippy::pub_underscore_fields,
7282        clippy::style
7283    )]
7284    const _: () = {
7285        use alloy::sol_types as alloy_sol_types;
7286        #[doc(hidden)]
7287        #[allow(dead_code)]
7288        type UnderlyingSolTuple<'a> = ();
7289        #[doc(hidden)]
7290        type UnderlyingRustTuple<'a> = ();
7291        #[cfg(test)]
7292        #[allow(dead_code, unreachable_patterns)]
7293        fn _type_assertion(
7294            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7295        ) {
7296            match _t {
7297                alloy_sol_types::private::AssertTypeEq::<
7298                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7299                >(_) => {}
7300            }
7301        }
7302        #[automatically_derived]
7303        #[doc(hidden)]
7304        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
7305            fn from(value: ProverNotPermissioned) -> Self {
7306                ()
7307            }
7308        }
7309        #[automatically_derived]
7310        #[doc(hidden)]
7311        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
7312            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7313                Self
7314            }
7315        }
7316        #[automatically_derived]
7317        impl alloy_sol_types::SolError for ProverNotPermissioned {
7318            type Parameters<'a> = UnderlyingSolTuple<'a>;
7319            type Token<'a> = <Self::Parameters<
7320                'a,
7321            > as alloy_sol_types::SolType>::Token<'a>;
7322            const SIGNATURE: &'static str = "ProverNotPermissioned()";
7323            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
7324            #[inline]
7325            fn new<'a>(
7326                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7327            ) -> Self {
7328                tuple.into()
7329            }
7330            #[inline]
7331            fn tokenize(&self) -> Self::Token<'_> {
7332                ()
7333            }
7334            #[inline]
7335            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7336                <Self::Parameters<
7337                    '_,
7338                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7339                    .map(Self::new)
7340            }
7341        }
7342    };
7343    #[derive(serde::Serialize, serde::Deserialize)]
7344    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7345    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
7346```solidity
7347error UUPSUnauthorizedCallContext();
7348```*/
7349    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7350    #[derive(Clone)]
7351    pub struct UUPSUnauthorizedCallContext;
7352    #[allow(
7353        non_camel_case_types,
7354        non_snake_case,
7355        clippy::pub_underscore_fields,
7356        clippy::style
7357    )]
7358    const _: () = {
7359        use alloy::sol_types as alloy_sol_types;
7360        #[doc(hidden)]
7361        #[allow(dead_code)]
7362        type UnderlyingSolTuple<'a> = ();
7363        #[doc(hidden)]
7364        type UnderlyingRustTuple<'a> = ();
7365        #[cfg(test)]
7366        #[allow(dead_code, unreachable_patterns)]
7367        fn _type_assertion(
7368            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7369        ) {
7370            match _t {
7371                alloy_sol_types::private::AssertTypeEq::<
7372                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7373                >(_) => {}
7374            }
7375        }
7376        #[automatically_derived]
7377        #[doc(hidden)]
7378        impl ::core::convert::From<UUPSUnauthorizedCallContext>
7379        for UnderlyingRustTuple<'_> {
7380            fn from(value: UUPSUnauthorizedCallContext) -> Self {
7381                ()
7382            }
7383        }
7384        #[automatically_derived]
7385        #[doc(hidden)]
7386        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7387        for UUPSUnauthorizedCallContext {
7388            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7389                Self
7390            }
7391        }
7392        #[automatically_derived]
7393        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7394            type Parameters<'a> = UnderlyingSolTuple<'a>;
7395            type Token<'a> = <Self::Parameters<
7396                'a,
7397            > as alloy_sol_types::SolType>::Token<'a>;
7398            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7399            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7400            #[inline]
7401            fn new<'a>(
7402                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7403            ) -> Self {
7404                tuple.into()
7405            }
7406            #[inline]
7407            fn tokenize(&self) -> Self::Token<'_> {
7408                ()
7409            }
7410            #[inline]
7411            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7412                <Self::Parameters<
7413                    '_,
7414                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7415                    .map(Self::new)
7416            }
7417        }
7418    };
7419    #[derive(serde::Serialize, serde::Deserialize)]
7420    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7421    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7422```solidity
7423error UUPSUnsupportedProxiableUUID(bytes32 slot);
7424```*/
7425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7426    #[derive(Clone)]
7427    pub struct UUPSUnsupportedProxiableUUID {
7428        #[allow(missing_docs)]
7429        pub slot: alloy::sol_types::private::FixedBytes<32>,
7430    }
7431    #[allow(
7432        non_camel_case_types,
7433        non_snake_case,
7434        clippy::pub_underscore_fields,
7435        clippy::style
7436    )]
7437    const _: () = {
7438        use alloy::sol_types as alloy_sol_types;
7439        #[doc(hidden)]
7440        #[allow(dead_code)]
7441        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7442        #[doc(hidden)]
7443        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7444        #[cfg(test)]
7445        #[allow(dead_code, unreachable_patterns)]
7446        fn _type_assertion(
7447            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7448        ) {
7449            match _t {
7450                alloy_sol_types::private::AssertTypeEq::<
7451                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7452                >(_) => {}
7453            }
7454        }
7455        #[automatically_derived]
7456        #[doc(hidden)]
7457        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7458        for UnderlyingRustTuple<'_> {
7459            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7460                (value.slot,)
7461            }
7462        }
7463        #[automatically_derived]
7464        #[doc(hidden)]
7465        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7466        for UUPSUnsupportedProxiableUUID {
7467            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7468                Self { slot: tuple.0 }
7469            }
7470        }
7471        #[automatically_derived]
7472        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7473            type Parameters<'a> = UnderlyingSolTuple<'a>;
7474            type Token<'a> = <Self::Parameters<
7475                'a,
7476            > as alloy_sol_types::SolType>::Token<'a>;
7477            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7478            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7479            #[inline]
7480            fn new<'a>(
7481                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7482            ) -> Self {
7483                tuple.into()
7484            }
7485            #[inline]
7486            fn tokenize(&self) -> Self::Token<'_> {
7487                (
7488                    <alloy::sol_types::sol_data::FixedBytes<
7489                        32,
7490                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7491                )
7492            }
7493            #[inline]
7494            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7495                <Self::Parameters<
7496                    '_,
7497                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7498                    .map(Self::new)
7499            }
7500        }
7501    };
7502    #[derive(serde::Serialize, serde::Deserialize)]
7503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7504    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
7505```solidity
7506error WrongStakeTableUsed();
7507```*/
7508    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7509    #[derive(Clone)]
7510    pub struct WrongStakeTableUsed;
7511    #[allow(
7512        non_camel_case_types,
7513        non_snake_case,
7514        clippy::pub_underscore_fields,
7515        clippy::style
7516    )]
7517    const _: () = {
7518        use alloy::sol_types as alloy_sol_types;
7519        #[doc(hidden)]
7520        #[allow(dead_code)]
7521        type UnderlyingSolTuple<'a> = ();
7522        #[doc(hidden)]
7523        type UnderlyingRustTuple<'a> = ();
7524        #[cfg(test)]
7525        #[allow(dead_code, unreachable_patterns)]
7526        fn _type_assertion(
7527            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7528        ) {
7529            match _t {
7530                alloy_sol_types::private::AssertTypeEq::<
7531                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7532                >(_) => {}
7533            }
7534        }
7535        #[automatically_derived]
7536        #[doc(hidden)]
7537        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7538            fn from(value: WrongStakeTableUsed) -> Self {
7539                ()
7540            }
7541        }
7542        #[automatically_derived]
7543        #[doc(hidden)]
7544        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7545            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7546                Self
7547            }
7548        }
7549        #[automatically_derived]
7550        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7551            type Parameters<'a> = UnderlyingSolTuple<'a>;
7552            type Token<'a> = <Self::Parameters<
7553                'a,
7554            > as alloy_sol_types::SolType>::Token<'a>;
7555            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7556            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7557            #[inline]
7558            fn new<'a>(
7559                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7560            ) -> Self {
7561                tuple.into()
7562            }
7563            #[inline]
7564            fn tokenize(&self) -> Self::Token<'_> {
7565                ()
7566            }
7567            #[inline]
7568            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7569                <Self::Parameters<
7570                    '_,
7571                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7572                    .map(Self::new)
7573            }
7574        }
7575    };
7576    #[derive(serde::Serialize, serde::Deserialize)]
7577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7578    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7579```solidity
7580event Initialized(uint64 version);
7581```*/
7582    #[allow(
7583        non_camel_case_types,
7584        non_snake_case,
7585        clippy::pub_underscore_fields,
7586        clippy::style
7587    )]
7588    #[derive(Clone)]
7589    pub struct Initialized {
7590        #[allow(missing_docs)]
7591        pub version: u64,
7592    }
7593    #[allow(
7594        non_camel_case_types,
7595        non_snake_case,
7596        clippy::pub_underscore_fields,
7597        clippy::style
7598    )]
7599    const _: () = {
7600        use alloy::sol_types as alloy_sol_types;
7601        #[automatically_derived]
7602        impl alloy_sol_types::SolEvent for Initialized {
7603            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7604            type DataToken<'a> = <Self::DataTuple<
7605                'a,
7606            > as alloy_sol_types::SolType>::Token<'a>;
7607            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7608            const SIGNATURE: &'static str = "Initialized(uint64)";
7609            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7610                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7611                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7612                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7613            ]);
7614            const ANONYMOUS: bool = false;
7615            #[allow(unused_variables)]
7616            #[inline]
7617            fn new(
7618                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7619                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7620            ) -> Self {
7621                Self { version: data.0 }
7622            }
7623            #[inline]
7624            fn check_signature(
7625                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7626            ) -> alloy_sol_types::Result<()> {
7627                if topics.0 != Self::SIGNATURE_HASH {
7628                    return Err(
7629                        alloy_sol_types::Error::invalid_event_signature_hash(
7630                            Self::SIGNATURE,
7631                            topics.0,
7632                            Self::SIGNATURE_HASH,
7633                        ),
7634                    );
7635                }
7636                Ok(())
7637            }
7638            #[inline]
7639            fn tokenize_body(&self) -> Self::DataToken<'_> {
7640                (
7641                    <alloy::sol_types::sol_data::Uint<
7642                        64,
7643                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7644                )
7645            }
7646            #[inline]
7647            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7648                (Self::SIGNATURE_HASH.into(),)
7649            }
7650            #[inline]
7651            fn encode_topics_raw(
7652                &self,
7653                out: &mut [alloy_sol_types::abi::token::WordToken],
7654            ) -> alloy_sol_types::Result<()> {
7655                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7656                    return Err(alloy_sol_types::Error::Overrun);
7657                }
7658                out[0usize] = alloy_sol_types::abi::token::WordToken(
7659                    Self::SIGNATURE_HASH,
7660                );
7661                Ok(())
7662            }
7663        }
7664        #[automatically_derived]
7665        impl alloy_sol_types::private::IntoLogData for Initialized {
7666            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7667                From::from(self)
7668            }
7669            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7670                From::from(&self)
7671            }
7672        }
7673        #[automatically_derived]
7674        impl From<&Initialized> for alloy_sol_types::private::LogData {
7675            #[inline]
7676            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7677                alloy_sol_types::SolEvent::encode_log_data(this)
7678            }
7679        }
7680    };
7681    #[derive(serde::Serialize, serde::Deserialize)]
7682    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7683    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7684```solidity
7685event NewEpoch(uint64 epoch);
7686```*/
7687    #[allow(
7688        non_camel_case_types,
7689        non_snake_case,
7690        clippy::pub_underscore_fields,
7691        clippy::style
7692    )]
7693    #[derive(Clone)]
7694    pub struct NewEpoch {
7695        #[allow(missing_docs)]
7696        pub epoch: u64,
7697    }
7698    #[allow(
7699        non_camel_case_types,
7700        non_snake_case,
7701        clippy::pub_underscore_fields,
7702        clippy::style
7703    )]
7704    const _: () = {
7705        use alloy::sol_types as alloy_sol_types;
7706        #[automatically_derived]
7707        impl alloy_sol_types::SolEvent for NewEpoch {
7708            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7709            type DataToken<'a> = <Self::DataTuple<
7710                'a,
7711            > as alloy_sol_types::SolType>::Token<'a>;
7712            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7713            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7714            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7715                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7716                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7717                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7718            ]);
7719            const ANONYMOUS: bool = false;
7720            #[allow(unused_variables)]
7721            #[inline]
7722            fn new(
7723                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7724                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7725            ) -> Self {
7726                Self { epoch: data.0 }
7727            }
7728            #[inline]
7729            fn check_signature(
7730                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7731            ) -> alloy_sol_types::Result<()> {
7732                if topics.0 != Self::SIGNATURE_HASH {
7733                    return Err(
7734                        alloy_sol_types::Error::invalid_event_signature_hash(
7735                            Self::SIGNATURE,
7736                            topics.0,
7737                            Self::SIGNATURE_HASH,
7738                        ),
7739                    );
7740                }
7741                Ok(())
7742            }
7743            #[inline]
7744            fn tokenize_body(&self) -> Self::DataToken<'_> {
7745                (
7746                    <alloy::sol_types::sol_data::Uint<
7747                        64,
7748                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7749                )
7750            }
7751            #[inline]
7752            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7753                (Self::SIGNATURE_HASH.into(),)
7754            }
7755            #[inline]
7756            fn encode_topics_raw(
7757                &self,
7758                out: &mut [alloy_sol_types::abi::token::WordToken],
7759            ) -> alloy_sol_types::Result<()> {
7760                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7761                    return Err(alloy_sol_types::Error::Overrun);
7762                }
7763                out[0usize] = alloy_sol_types::abi::token::WordToken(
7764                    Self::SIGNATURE_HASH,
7765                );
7766                Ok(())
7767            }
7768        }
7769        #[automatically_derived]
7770        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7771            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7772                From::from(self)
7773            }
7774            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7775                From::from(&self)
7776            }
7777        }
7778        #[automatically_derived]
7779        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7780            #[inline]
7781            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7782                alloy_sol_types::SolEvent::encode_log_data(this)
7783            }
7784        }
7785    };
7786    #[derive(serde::Serialize, serde::Deserialize)]
7787    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7788    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7789```solidity
7790event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7791```*/
7792    #[allow(
7793        non_camel_case_types,
7794        non_snake_case,
7795        clippy::pub_underscore_fields,
7796        clippy::style
7797    )]
7798    #[derive(Clone)]
7799    pub struct NewState {
7800        #[allow(missing_docs)]
7801        pub viewNum: u64,
7802        #[allow(missing_docs)]
7803        pub blockHeight: u64,
7804        #[allow(missing_docs)]
7805        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7806    }
7807    #[allow(
7808        non_camel_case_types,
7809        non_snake_case,
7810        clippy::pub_underscore_fields,
7811        clippy::style
7812    )]
7813    const _: () = {
7814        use alloy::sol_types as alloy_sol_types;
7815        #[automatically_derived]
7816        impl alloy_sol_types::SolEvent for NewState {
7817            type DataTuple<'a> = (BN254::ScalarField,);
7818            type DataToken<'a> = <Self::DataTuple<
7819                'a,
7820            > as alloy_sol_types::SolType>::Token<'a>;
7821            type TopicList = (
7822                alloy_sol_types::sol_data::FixedBytes<32>,
7823                alloy::sol_types::sol_data::Uint<64>,
7824                alloy::sol_types::sol_data::Uint<64>,
7825            );
7826            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7827            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7828                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7829                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7830                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7831            ]);
7832            const ANONYMOUS: bool = false;
7833            #[allow(unused_variables)]
7834            #[inline]
7835            fn new(
7836                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7837                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7838            ) -> Self {
7839                Self {
7840                    viewNum: topics.1,
7841                    blockHeight: topics.2,
7842                    blockCommRoot: data.0,
7843                }
7844            }
7845            #[inline]
7846            fn check_signature(
7847                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7848            ) -> alloy_sol_types::Result<()> {
7849                if topics.0 != Self::SIGNATURE_HASH {
7850                    return Err(
7851                        alloy_sol_types::Error::invalid_event_signature_hash(
7852                            Self::SIGNATURE,
7853                            topics.0,
7854                            Self::SIGNATURE_HASH,
7855                        ),
7856                    );
7857                }
7858                Ok(())
7859            }
7860            #[inline]
7861            fn tokenize_body(&self) -> Self::DataToken<'_> {
7862                (
7863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7864                        &self.blockCommRoot,
7865                    ),
7866                )
7867            }
7868            #[inline]
7869            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7870                (
7871                    Self::SIGNATURE_HASH.into(),
7872                    self.viewNum.clone(),
7873                    self.blockHeight.clone(),
7874                )
7875            }
7876            #[inline]
7877            fn encode_topics_raw(
7878                &self,
7879                out: &mut [alloy_sol_types::abi::token::WordToken],
7880            ) -> alloy_sol_types::Result<()> {
7881                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7882                    return Err(alloy_sol_types::Error::Overrun);
7883                }
7884                out[0usize] = alloy_sol_types::abi::token::WordToken(
7885                    Self::SIGNATURE_HASH,
7886                );
7887                out[1usize] = <alloy::sol_types::sol_data::Uint<
7888                    64,
7889                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7890                out[2usize] = <alloy::sol_types::sol_data::Uint<
7891                    64,
7892                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7893                Ok(())
7894            }
7895        }
7896        #[automatically_derived]
7897        impl alloy_sol_types::private::IntoLogData for NewState {
7898            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7899                From::from(self)
7900            }
7901            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7902                From::from(&self)
7903            }
7904        }
7905        #[automatically_derived]
7906        impl From<&NewState> for alloy_sol_types::private::LogData {
7907            #[inline]
7908            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7909                alloy_sol_types::SolEvent::encode_log_data(this)
7910            }
7911        }
7912    };
7913    #[derive(serde::Serialize, serde::Deserialize)]
7914    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7915    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7916```solidity
7917event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7918```*/
7919    #[allow(
7920        non_camel_case_types,
7921        non_snake_case,
7922        clippy::pub_underscore_fields,
7923        clippy::style
7924    )]
7925    #[derive(Clone)]
7926    pub struct OwnershipTransferred {
7927        #[allow(missing_docs)]
7928        pub previousOwner: alloy::sol_types::private::Address,
7929        #[allow(missing_docs)]
7930        pub newOwner: alloy::sol_types::private::Address,
7931    }
7932    #[allow(
7933        non_camel_case_types,
7934        non_snake_case,
7935        clippy::pub_underscore_fields,
7936        clippy::style
7937    )]
7938    const _: () = {
7939        use alloy::sol_types as alloy_sol_types;
7940        #[automatically_derived]
7941        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7942            type DataTuple<'a> = ();
7943            type DataToken<'a> = <Self::DataTuple<
7944                'a,
7945            > as alloy_sol_types::SolType>::Token<'a>;
7946            type TopicList = (
7947                alloy_sol_types::sol_data::FixedBytes<32>,
7948                alloy::sol_types::sol_data::Address,
7949                alloy::sol_types::sol_data::Address,
7950            );
7951            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7952            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7953                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7954                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7955                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7956            ]);
7957            const ANONYMOUS: bool = false;
7958            #[allow(unused_variables)]
7959            #[inline]
7960            fn new(
7961                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7962                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7963            ) -> Self {
7964                Self {
7965                    previousOwner: topics.1,
7966                    newOwner: topics.2,
7967                }
7968            }
7969            #[inline]
7970            fn check_signature(
7971                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7972            ) -> alloy_sol_types::Result<()> {
7973                if topics.0 != Self::SIGNATURE_HASH {
7974                    return Err(
7975                        alloy_sol_types::Error::invalid_event_signature_hash(
7976                            Self::SIGNATURE,
7977                            topics.0,
7978                            Self::SIGNATURE_HASH,
7979                        ),
7980                    );
7981                }
7982                Ok(())
7983            }
7984            #[inline]
7985            fn tokenize_body(&self) -> Self::DataToken<'_> {
7986                ()
7987            }
7988            #[inline]
7989            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7990                (
7991                    Self::SIGNATURE_HASH.into(),
7992                    self.previousOwner.clone(),
7993                    self.newOwner.clone(),
7994                )
7995            }
7996            #[inline]
7997            fn encode_topics_raw(
7998                &self,
7999                out: &mut [alloy_sol_types::abi::token::WordToken],
8000            ) -> alloy_sol_types::Result<()> {
8001                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8002                    return Err(alloy_sol_types::Error::Overrun);
8003                }
8004                out[0usize] = alloy_sol_types::abi::token::WordToken(
8005                    Self::SIGNATURE_HASH,
8006                );
8007                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8008                    &self.previousOwner,
8009                );
8010                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8011                    &self.newOwner,
8012                );
8013                Ok(())
8014            }
8015        }
8016        #[automatically_derived]
8017        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
8018            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8019                From::from(self)
8020            }
8021            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8022                From::from(&self)
8023            }
8024        }
8025        #[automatically_derived]
8026        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
8027            #[inline]
8028            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
8029                alloy_sol_types::SolEvent::encode_log_data(this)
8030            }
8031        }
8032    };
8033    #[derive(serde::Serialize, serde::Deserialize)]
8034    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8035    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
8036```solidity
8037event PermissionedProverNotRequired();
8038```*/
8039    #[allow(
8040        non_camel_case_types,
8041        non_snake_case,
8042        clippy::pub_underscore_fields,
8043        clippy::style
8044    )]
8045    #[derive(Clone)]
8046    pub struct PermissionedProverNotRequired;
8047    #[allow(
8048        non_camel_case_types,
8049        non_snake_case,
8050        clippy::pub_underscore_fields,
8051        clippy::style
8052    )]
8053    const _: () = {
8054        use alloy::sol_types as alloy_sol_types;
8055        #[automatically_derived]
8056        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
8057            type DataTuple<'a> = ();
8058            type DataToken<'a> = <Self::DataTuple<
8059                'a,
8060            > as alloy_sol_types::SolType>::Token<'a>;
8061            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8062            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
8063            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8064                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
8065                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
8066                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
8067            ]);
8068            const ANONYMOUS: bool = false;
8069            #[allow(unused_variables)]
8070            #[inline]
8071            fn new(
8072                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8073                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8074            ) -> Self {
8075                Self {}
8076            }
8077            #[inline]
8078            fn check_signature(
8079                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8080            ) -> alloy_sol_types::Result<()> {
8081                if topics.0 != Self::SIGNATURE_HASH {
8082                    return Err(
8083                        alloy_sol_types::Error::invalid_event_signature_hash(
8084                            Self::SIGNATURE,
8085                            topics.0,
8086                            Self::SIGNATURE_HASH,
8087                        ),
8088                    );
8089                }
8090                Ok(())
8091            }
8092            #[inline]
8093            fn tokenize_body(&self) -> Self::DataToken<'_> {
8094                ()
8095            }
8096            #[inline]
8097            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8098                (Self::SIGNATURE_HASH.into(),)
8099            }
8100            #[inline]
8101            fn encode_topics_raw(
8102                &self,
8103                out: &mut [alloy_sol_types::abi::token::WordToken],
8104            ) -> alloy_sol_types::Result<()> {
8105                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8106                    return Err(alloy_sol_types::Error::Overrun);
8107                }
8108                out[0usize] = alloy_sol_types::abi::token::WordToken(
8109                    Self::SIGNATURE_HASH,
8110                );
8111                Ok(())
8112            }
8113        }
8114        #[automatically_derived]
8115        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
8116            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8117                From::from(self)
8118            }
8119            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8120                From::from(&self)
8121            }
8122        }
8123        #[automatically_derived]
8124        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
8125            #[inline]
8126            fn from(
8127                this: &PermissionedProverNotRequired,
8128            ) -> alloy_sol_types::private::LogData {
8129                alloy_sol_types::SolEvent::encode_log_data(this)
8130            }
8131        }
8132    };
8133    #[derive(serde::Serialize, serde::Deserialize)]
8134    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8135    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
8136```solidity
8137event PermissionedProverRequired(address permissionedProver);
8138```*/
8139    #[allow(
8140        non_camel_case_types,
8141        non_snake_case,
8142        clippy::pub_underscore_fields,
8143        clippy::style
8144    )]
8145    #[derive(Clone)]
8146    pub struct PermissionedProverRequired {
8147        #[allow(missing_docs)]
8148        pub permissionedProver: alloy::sol_types::private::Address,
8149    }
8150    #[allow(
8151        non_camel_case_types,
8152        non_snake_case,
8153        clippy::pub_underscore_fields,
8154        clippy::style
8155    )]
8156    const _: () = {
8157        use alloy::sol_types as alloy_sol_types;
8158        #[automatically_derived]
8159        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
8160            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
8161            type DataToken<'a> = <Self::DataTuple<
8162                'a,
8163            > as alloy_sol_types::SolType>::Token<'a>;
8164            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8165            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
8166            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8167                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
8168                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
8169                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
8170            ]);
8171            const ANONYMOUS: bool = false;
8172            #[allow(unused_variables)]
8173            #[inline]
8174            fn new(
8175                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8176                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8177            ) -> Self {
8178                Self { permissionedProver: data.0 }
8179            }
8180            #[inline]
8181            fn check_signature(
8182                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8183            ) -> alloy_sol_types::Result<()> {
8184                if topics.0 != Self::SIGNATURE_HASH {
8185                    return Err(
8186                        alloy_sol_types::Error::invalid_event_signature_hash(
8187                            Self::SIGNATURE,
8188                            topics.0,
8189                            Self::SIGNATURE_HASH,
8190                        ),
8191                    );
8192                }
8193                Ok(())
8194            }
8195            #[inline]
8196            fn tokenize_body(&self) -> Self::DataToken<'_> {
8197                (
8198                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8199                        &self.permissionedProver,
8200                    ),
8201                )
8202            }
8203            #[inline]
8204            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8205                (Self::SIGNATURE_HASH.into(),)
8206            }
8207            #[inline]
8208            fn encode_topics_raw(
8209                &self,
8210                out: &mut [alloy_sol_types::abi::token::WordToken],
8211            ) -> alloy_sol_types::Result<()> {
8212                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8213                    return Err(alloy_sol_types::Error::Overrun);
8214                }
8215                out[0usize] = alloy_sol_types::abi::token::WordToken(
8216                    Self::SIGNATURE_HASH,
8217                );
8218                Ok(())
8219            }
8220        }
8221        #[automatically_derived]
8222        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
8223            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8224                From::from(self)
8225            }
8226            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8227                From::from(&self)
8228            }
8229        }
8230        #[automatically_derived]
8231        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
8232            #[inline]
8233            fn from(
8234                this: &PermissionedProverRequired,
8235            ) -> alloy_sol_types::private::LogData {
8236                alloy_sol_types::SolEvent::encode_log_data(this)
8237            }
8238        }
8239    };
8240    #[derive(serde::Serialize, serde::Deserialize)]
8241    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8242    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
8243```solidity
8244event Upgrade(address implementation);
8245```*/
8246    #[allow(
8247        non_camel_case_types,
8248        non_snake_case,
8249        clippy::pub_underscore_fields,
8250        clippy::style
8251    )]
8252    #[derive(Clone)]
8253    pub struct Upgrade {
8254        #[allow(missing_docs)]
8255        pub implementation: alloy::sol_types::private::Address,
8256    }
8257    #[allow(
8258        non_camel_case_types,
8259        non_snake_case,
8260        clippy::pub_underscore_fields,
8261        clippy::style
8262    )]
8263    const _: () = {
8264        use alloy::sol_types as alloy_sol_types;
8265        #[automatically_derived]
8266        impl alloy_sol_types::SolEvent for Upgrade {
8267            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
8268            type DataToken<'a> = <Self::DataTuple<
8269                'a,
8270            > as alloy_sol_types::SolType>::Token<'a>;
8271            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
8272            const SIGNATURE: &'static str = "Upgrade(address)";
8273            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8274                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
8275                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
8276                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
8277            ]);
8278            const ANONYMOUS: bool = false;
8279            #[allow(unused_variables)]
8280            #[inline]
8281            fn new(
8282                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8283                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8284            ) -> Self {
8285                Self { implementation: data.0 }
8286            }
8287            #[inline]
8288            fn check_signature(
8289                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8290            ) -> alloy_sol_types::Result<()> {
8291                if topics.0 != Self::SIGNATURE_HASH {
8292                    return Err(
8293                        alloy_sol_types::Error::invalid_event_signature_hash(
8294                            Self::SIGNATURE,
8295                            topics.0,
8296                            Self::SIGNATURE_HASH,
8297                        ),
8298                    );
8299                }
8300                Ok(())
8301            }
8302            #[inline]
8303            fn tokenize_body(&self) -> Self::DataToken<'_> {
8304                (
8305                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8306                        &self.implementation,
8307                    ),
8308                )
8309            }
8310            #[inline]
8311            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8312                (Self::SIGNATURE_HASH.into(),)
8313            }
8314            #[inline]
8315            fn encode_topics_raw(
8316                &self,
8317                out: &mut [alloy_sol_types::abi::token::WordToken],
8318            ) -> alloy_sol_types::Result<()> {
8319                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8320                    return Err(alloy_sol_types::Error::Overrun);
8321                }
8322                out[0usize] = alloy_sol_types::abi::token::WordToken(
8323                    Self::SIGNATURE_HASH,
8324                );
8325                Ok(())
8326            }
8327        }
8328        #[automatically_derived]
8329        impl alloy_sol_types::private::IntoLogData for Upgrade {
8330            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8331                From::from(self)
8332            }
8333            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8334                From::from(&self)
8335            }
8336        }
8337        #[automatically_derived]
8338        impl From<&Upgrade> for alloy_sol_types::private::LogData {
8339            #[inline]
8340            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
8341                alloy_sol_types::SolEvent::encode_log_data(this)
8342            }
8343        }
8344    };
8345    #[derive(serde::Serialize, serde::Deserialize)]
8346    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8347    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
8348```solidity
8349event Upgraded(address indexed implementation);
8350```*/
8351    #[allow(
8352        non_camel_case_types,
8353        non_snake_case,
8354        clippy::pub_underscore_fields,
8355        clippy::style
8356    )]
8357    #[derive(Clone)]
8358    pub struct Upgraded {
8359        #[allow(missing_docs)]
8360        pub implementation: alloy::sol_types::private::Address,
8361    }
8362    #[allow(
8363        non_camel_case_types,
8364        non_snake_case,
8365        clippy::pub_underscore_fields,
8366        clippy::style
8367    )]
8368    const _: () = {
8369        use alloy::sol_types as alloy_sol_types;
8370        #[automatically_derived]
8371        impl alloy_sol_types::SolEvent for Upgraded {
8372            type DataTuple<'a> = ();
8373            type DataToken<'a> = <Self::DataTuple<
8374                'a,
8375            > as alloy_sol_types::SolType>::Token<'a>;
8376            type TopicList = (
8377                alloy_sol_types::sol_data::FixedBytes<32>,
8378                alloy::sol_types::sol_data::Address,
8379            );
8380            const SIGNATURE: &'static str = "Upgraded(address)";
8381            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
8382                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
8383                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
8384                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
8385            ]);
8386            const ANONYMOUS: bool = false;
8387            #[allow(unused_variables)]
8388            #[inline]
8389            fn new(
8390                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
8391                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
8392            ) -> Self {
8393                Self { implementation: topics.1 }
8394            }
8395            #[inline]
8396            fn check_signature(
8397                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8398            ) -> alloy_sol_types::Result<()> {
8399                if topics.0 != Self::SIGNATURE_HASH {
8400                    return Err(
8401                        alloy_sol_types::Error::invalid_event_signature_hash(
8402                            Self::SIGNATURE,
8403                            topics.0,
8404                            Self::SIGNATURE_HASH,
8405                        ),
8406                    );
8407                }
8408                Ok(())
8409            }
8410            #[inline]
8411            fn tokenize_body(&self) -> Self::DataToken<'_> {
8412                ()
8413            }
8414            #[inline]
8415            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8416                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
8417            }
8418            #[inline]
8419            fn encode_topics_raw(
8420                &self,
8421                out: &mut [alloy_sol_types::abi::token::WordToken],
8422            ) -> alloy_sol_types::Result<()> {
8423                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8424                    return Err(alloy_sol_types::Error::Overrun);
8425                }
8426                out[0usize] = alloy_sol_types::abi::token::WordToken(
8427                    Self::SIGNATURE_HASH,
8428                );
8429                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8430                    &self.implementation,
8431                );
8432                Ok(())
8433            }
8434        }
8435        #[automatically_derived]
8436        impl alloy_sol_types::private::IntoLogData for Upgraded {
8437            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8438                From::from(self)
8439            }
8440            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8441                From::from(&self)
8442            }
8443        }
8444        #[automatically_derived]
8445        impl From<&Upgraded> for alloy_sol_types::private::LogData {
8446            #[inline]
8447            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
8448                alloy_sol_types::SolEvent::encode_log_data(this)
8449            }
8450        }
8451    };
8452    #[derive(serde::Serialize, serde::Deserialize)]
8453    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8454    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
8455```solidity
8456function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
8457```*/
8458    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8459    #[derive(Clone)]
8460    pub struct UPGRADE_INTERFACE_VERSIONCall;
8461    #[derive(serde::Serialize, serde::Deserialize)]
8462    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8463    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
8464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8465    #[derive(Clone)]
8466    pub struct UPGRADE_INTERFACE_VERSIONReturn {
8467        #[allow(missing_docs)]
8468        pub _0: alloy::sol_types::private::String,
8469    }
8470    #[allow(
8471        non_camel_case_types,
8472        non_snake_case,
8473        clippy::pub_underscore_fields,
8474        clippy::style
8475    )]
8476    const _: () = {
8477        use alloy::sol_types as alloy_sol_types;
8478        {
8479            #[doc(hidden)]
8480            #[allow(dead_code)]
8481            type UnderlyingSolTuple<'a> = ();
8482            #[doc(hidden)]
8483            type UnderlyingRustTuple<'a> = ();
8484            #[cfg(test)]
8485            #[allow(dead_code, unreachable_patterns)]
8486            fn _type_assertion(
8487                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8488            ) {
8489                match _t {
8490                    alloy_sol_types::private::AssertTypeEq::<
8491                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8492                    >(_) => {}
8493                }
8494            }
8495            #[automatically_derived]
8496            #[doc(hidden)]
8497            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
8498            for UnderlyingRustTuple<'_> {
8499                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
8500                    ()
8501                }
8502            }
8503            #[automatically_derived]
8504            #[doc(hidden)]
8505            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8506            for UPGRADE_INTERFACE_VERSIONCall {
8507                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8508                    Self
8509                }
8510            }
8511        }
8512        {
8513            #[doc(hidden)]
8514            #[allow(dead_code)]
8515            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8516            #[doc(hidden)]
8517            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8518            #[cfg(test)]
8519            #[allow(dead_code, unreachable_patterns)]
8520            fn _type_assertion(
8521                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8522            ) {
8523                match _t {
8524                    alloy_sol_types::private::AssertTypeEq::<
8525                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8526                    >(_) => {}
8527                }
8528            }
8529            #[automatically_derived]
8530            #[doc(hidden)]
8531            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8532            for UnderlyingRustTuple<'_> {
8533                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8534                    (value._0,)
8535                }
8536            }
8537            #[automatically_derived]
8538            #[doc(hidden)]
8539            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8540            for UPGRADE_INTERFACE_VERSIONReturn {
8541                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8542                    Self { _0: tuple.0 }
8543                }
8544            }
8545        }
8546        #[automatically_derived]
8547        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8548            type Parameters<'a> = ();
8549            type Token<'a> = <Self::Parameters<
8550                'a,
8551            > as alloy_sol_types::SolType>::Token<'a>;
8552            type Return = alloy::sol_types::private::String;
8553            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8554            type ReturnToken<'a> = <Self::ReturnTuple<
8555                'a,
8556            > as alloy_sol_types::SolType>::Token<'a>;
8557            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8558            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8559            #[inline]
8560            fn new<'a>(
8561                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8562            ) -> Self {
8563                tuple.into()
8564            }
8565            #[inline]
8566            fn tokenize(&self) -> Self::Token<'_> {
8567                ()
8568            }
8569            #[inline]
8570            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8571                (
8572                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8573                        ret,
8574                    ),
8575                )
8576            }
8577            #[inline]
8578            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8579                <Self::ReturnTuple<
8580                    '_,
8581                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8582                    .map(|r| {
8583                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8584                        r._0
8585                    })
8586            }
8587            #[inline]
8588            fn abi_decode_returns_validate(
8589                data: &[u8],
8590            ) -> alloy_sol_types::Result<Self::Return> {
8591                <Self::ReturnTuple<
8592                    '_,
8593                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8594                    .map(|r| {
8595                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8596                        r._0
8597                    })
8598            }
8599        }
8600    };
8601    #[derive(serde::Serialize, serde::Deserialize)]
8602    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8603    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8604```solidity
8605function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8606```*/
8607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8608    #[derive(Clone)]
8609    pub struct _getVkCall;
8610    #[derive(serde::Serialize, serde::Deserialize)]
8611    #[derive()]
8612    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8613    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8614    #[derive(Clone)]
8615    pub struct _getVkReturn {
8616        #[allow(missing_docs)]
8617        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8618    }
8619    #[allow(
8620        non_camel_case_types,
8621        non_snake_case,
8622        clippy::pub_underscore_fields,
8623        clippy::style
8624    )]
8625    const _: () = {
8626        use alloy::sol_types as alloy_sol_types;
8627        {
8628            #[doc(hidden)]
8629            #[allow(dead_code)]
8630            type UnderlyingSolTuple<'a> = ();
8631            #[doc(hidden)]
8632            type UnderlyingRustTuple<'a> = ();
8633            #[cfg(test)]
8634            #[allow(dead_code, unreachable_patterns)]
8635            fn _type_assertion(
8636                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8637            ) {
8638                match _t {
8639                    alloy_sol_types::private::AssertTypeEq::<
8640                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8641                    >(_) => {}
8642                }
8643            }
8644            #[automatically_derived]
8645            #[doc(hidden)]
8646            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8647                fn from(value: _getVkCall) -> Self {
8648                    ()
8649                }
8650            }
8651            #[automatically_derived]
8652            #[doc(hidden)]
8653            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8654                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8655                    Self
8656                }
8657            }
8658        }
8659        {
8660            #[doc(hidden)]
8661            #[allow(dead_code)]
8662            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8663            #[doc(hidden)]
8664            type UnderlyingRustTuple<'a> = (
8665                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8666            );
8667            #[cfg(test)]
8668            #[allow(dead_code, unreachable_patterns)]
8669            fn _type_assertion(
8670                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8671            ) {
8672                match _t {
8673                    alloy_sol_types::private::AssertTypeEq::<
8674                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8675                    >(_) => {}
8676                }
8677            }
8678            #[automatically_derived]
8679            #[doc(hidden)]
8680            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8681                fn from(value: _getVkReturn) -> Self {
8682                    (value.vk,)
8683                }
8684            }
8685            #[automatically_derived]
8686            #[doc(hidden)]
8687            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8688                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8689                    Self { vk: tuple.0 }
8690                }
8691            }
8692        }
8693        #[automatically_derived]
8694        impl alloy_sol_types::SolCall for _getVkCall {
8695            type Parameters<'a> = ();
8696            type Token<'a> = <Self::Parameters<
8697                'a,
8698            > as alloy_sol_types::SolType>::Token<'a>;
8699            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8700            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8701            type ReturnToken<'a> = <Self::ReturnTuple<
8702                'a,
8703            > as alloy_sol_types::SolType>::Token<'a>;
8704            const SIGNATURE: &'static str = "_getVk()";
8705            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8706            #[inline]
8707            fn new<'a>(
8708                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8709            ) -> Self {
8710                tuple.into()
8711            }
8712            #[inline]
8713            fn tokenize(&self) -> Self::Token<'_> {
8714                ()
8715            }
8716            #[inline]
8717            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8718                (
8719                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8720                        ret,
8721                    ),
8722                )
8723            }
8724            #[inline]
8725            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8726                <Self::ReturnTuple<
8727                    '_,
8728                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8729                    .map(|r| {
8730                        let r: _getVkReturn = r.into();
8731                        r.vk
8732                    })
8733            }
8734            #[inline]
8735            fn abi_decode_returns_validate(
8736                data: &[u8],
8737            ) -> alloy_sol_types::Result<Self::Return> {
8738                <Self::ReturnTuple<
8739                    '_,
8740                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8741                    .map(|r| {
8742                        let r: _getVkReturn = r.into();
8743                        r.vk
8744                    })
8745            }
8746        }
8747    };
8748    #[derive(serde::Serialize, serde::Deserialize)]
8749    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8750    /**Function with signature `authRoot()` and selector `0x998328e8`.
8751```solidity
8752function authRoot() external view returns (uint256);
8753```*/
8754    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8755    #[derive(Clone)]
8756    pub struct authRootCall;
8757    #[derive(serde::Serialize, serde::Deserialize)]
8758    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8759    ///Container type for the return parameters of the [`authRoot()`](authRootCall) function.
8760    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8761    #[derive(Clone)]
8762    pub struct authRootReturn {
8763        #[allow(missing_docs)]
8764        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8765    }
8766    #[allow(
8767        non_camel_case_types,
8768        non_snake_case,
8769        clippy::pub_underscore_fields,
8770        clippy::style
8771    )]
8772    const _: () = {
8773        use alloy::sol_types as alloy_sol_types;
8774        {
8775            #[doc(hidden)]
8776            #[allow(dead_code)]
8777            type UnderlyingSolTuple<'a> = ();
8778            #[doc(hidden)]
8779            type UnderlyingRustTuple<'a> = ();
8780            #[cfg(test)]
8781            #[allow(dead_code, unreachable_patterns)]
8782            fn _type_assertion(
8783                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8784            ) {
8785                match _t {
8786                    alloy_sol_types::private::AssertTypeEq::<
8787                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8788                    >(_) => {}
8789                }
8790            }
8791            #[automatically_derived]
8792            #[doc(hidden)]
8793            impl ::core::convert::From<authRootCall> for UnderlyingRustTuple<'_> {
8794                fn from(value: authRootCall) -> Self {
8795                    ()
8796                }
8797            }
8798            #[automatically_derived]
8799            #[doc(hidden)]
8800            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootCall {
8801                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8802                    Self
8803                }
8804            }
8805        }
8806        {
8807            #[doc(hidden)]
8808            #[allow(dead_code)]
8809            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8810            #[doc(hidden)]
8811            type UnderlyingRustTuple<'a> = (
8812                alloy::sol_types::private::primitives::aliases::U256,
8813            );
8814            #[cfg(test)]
8815            #[allow(dead_code, unreachable_patterns)]
8816            fn _type_assertion(
8817                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8818            ) {
8819                match _t {
8820                    alloy_sol_types::private::AssertTypeEq::<
8821                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8822                    >(_) => {}
8823                }
8824            }
8825            #[automatically_derived]
8826            #[doc(hidden)]
8827            impl ::core::convert::From<authRootReturn> for UnderlyingRustTuple<'_> {
8828                fn from(value: authRootReturn) -> Self {
8829                    (value._0,)
8830                }
8831            }
8832            #[automatically_derived]
8833            #[doc(hidden)]
8834            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootReturn {
8835                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8836                    Self { _0: tuple.0 }
8837                }
8838            }
8839        }
8840        #[automatically_derived]
8841        impl alloy_sol_types::SolCall for authRootCall {
8842            type Parameters<'a> = ();
8843            type Token<'a> = <Self::Parameters<
8844                'a,
8845            > as alloy_sol_types::SolType>::Token<'a>;
8846            type Return = alloy::sol_types::private::primitives::aliases::U256;
8847            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8848            type ReturnToken<'a> = <Self::ReturnTuple<
8849                'a,
8850            > as alloy_sol_types::SolType>::Token<'a>;
8851            const SIGNATURE: &'static str = "authRoot()";
8852            const SELECTOR: [u8; 4] = [153u8, 131u8, 40u8, 232u8];
8853            #[inline]
8854            fn new<'a>(
8855                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8856            ) -> Self {
8857                tuple.into()
8858            }
8859            #[inline]
8860            fn tokenize(&self) -> Self::Token<'_> {
8861                ()
8862            }
8863            #[inline]
8864            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8865                (
8866                    <alloy::sol_types::sol_data::Uint<
8867                        256,
8868                    > as alloy_sol_types::SolType>::tokenize(ret),
8869                )
8870            }
8871            #[inline]
8872            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8873                <Self::ReturnTuple<
8874                    '_,
8875                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8876                    .map(|r| {
8877                        let r: authRootReturn = r.into();
8878                        r._0
8879                    })
8880            }
8881            #[inline]
8882            fn abi_decode_returns_validate(
8883                data: &[u8],
8884            ) -> alloy_sol_types::Result<Self::Return> {
8885                <Self::ReturnTuple<
8886                    '_,
8887                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8888                    .map(|r| {
8889                        let r: authRootReturn = r.into();
8890                        r._0
8891                    })
8892            }
8893        }
8894    };
8895    #[derive(serde::Serialize, serde::Deserialize)]
8896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8897    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8898```solidity
8899function blocksPerEpoch() external view returns (uint64);
8900```*/
8901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8902    #[derive(Clone)]
8903    pub struct blocksPerEpochCall;
8904    #[derive(serde::Serialize, serde::Deserialize)]
8905    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8906    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8907    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8908    #[derive(Clone)]
8909    pub struct blocksPerEpochReturn {
8910        #[allow(missing_docs)]
8911        pub _0: u64,
8912    }
8913    #[allow(
8914        non_camel_case_types,
8915        non_snake_case,
8916        clippy::pub_underscore_fields,
8917        clippy::style
8918    )]
8919    const _: () = {
8920        use alloy::sol_types as alloy_sol_types;
8921        {
8922            #[doc(hidden)]
8923            #[allow(dead_code)]
8924            type UnderlyingSolTuple<'a> = ();
8925            #[doc(hidden)]
8926            type UnderlyingRustTuple<'a> = ();
8927            #[cfg(test)]
8928            #[allow(dead_code, unreachable_patterns)]
8929            fn _type_assertion(
8930                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8931            ) {
8932                match _t {
8933                    alloy_sol_types::private::AssertTypeEq::<
8934                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8935                    >(_) => {}
8936                }
8937            }
8938            #[automatically_derived]
8939            #[doc(hidden)]
8940            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8941                fn from(value: blocksPerEpochCall) -> Self {
8942                    ()
8943                }
8944            }
8945            #[automatically_derived]
8946            #[doc(hidden)]
8947            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8948                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8949                    Self
8950                }
8951            }
8952        }
8953        {
8954            #[doc(hidden)]
8955            #[allow(dead_code)]
8956            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8957            #[doc(hidden)]
8958            type UnderlyingRustTuple<'a> = (u64,);
8959            #[cfg(test)]
8960            #[allow(dead_code, unreachable_patterns)]
8961            fn _type_assertion(
8962                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8963            ) {
8964                match _t {
8965                    alloy_sol_types::private::AssertTypeEq::<
8966                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8967                    >(_) => {}
8968                }
8969            }
8970            #[automatically_derived]
8971            #[doc(hidden)]
8972            impl ::core::convert::From<blocksPerEpochReturn>
8973            for UnderlyingRustTuple<'_> {
8974                fn from(value: blocksPerEpochReturn) -> Self {
8975                    (value._0,)
8976                }
8977            }
8978            #[automatically_derived]
8979            #[doc(hidden)]
8980            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8981            for blocksPerEpochReturn {
8982                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8983                    Self { _0: tuple.0 }
8984                }
8985            }
8986        }
8987        #[automatically_derived]
8988        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8989            type Parameters<'a> = ();
8990            type Token<'a> = <Self::Parameters<
8991                'a,
8992            > as alloy_sol_types::SolType>::Token<'a>;
8993            type Return = u64;
8994            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8995            type ReturnToken<'a> = <Self::ReturnTuple<
8996                'a,
8997            > as alloy_sol_types::SolType>::Token<'a>;
8998            const SIGNATURE: &'static str = "blocksPerEpoch()";
8999            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
9000            #[inline]
9001            fn new<'a>(
9002                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9003            ) -> Self {
9004                tuple.into()
9005            }
9006            #[inline]
9007            fn tokenize(&self) -> Self::Token<'_> {
9008                ()
9009            }
9010            #[inline]
9011            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9012                (
9013                    <alloy::sol_types::sol_data::Uint<
9014                        64,
9015                    > as alloy_sol_types::SolType>::tokenize(ret),
9016                )
9017            }
9018            #[inline]
9019            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9020                <Self::ReturnTuple<
9021                    '_,
9022                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9023                    .map(|r| {
9024                        let r: blocksPerEpochReturn = r.into();
9025                        r._0
9026                    })
9027            }
9028            #[inline]
9029            fn abi_decode_returns_validate(
9030                data: &[u8],
9031            ) -> alloy_sol_types::Result<Self::Return> {
9032                <Self::ReturnTuple<
9033                    '_,
9034                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9035                    .map(|r| {
9036                        let r: blocksPerEpochReturn = r.into();
9037                        r._0
9038                    })
9039            }
9040        }
9041    };
9042    #[derive(serde::Serialize, serde::Deserialize)]
9043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9044    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
9045```solidity
9046function currentBlockNumber() external view returns (uint256);
9047```*/
9048    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9049    #[derive(Clone)]
9050    pub struct currentBlockNumberCall;
9051    #[derive(serde::Serialize, serde::Deserialize)]
9052    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9053    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
9054    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9055    #[derive(Clone)]
9056    pub struct currentBlockNumberReturn {
9057        #[allow(missing_docs)]
9058        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9059    }
9060    #[allow(
9061        non_camel_case_types,
9062        non_snake_case,
9063        clippy::pub_underscore_fields,
9064        clippy::style
9065    )]
9066    const _: () = {
9067        use alloy::sol_types as alloy_sol_types;
9068        {
9069            #[doc(hidden)]
9070            #[allow(dead_code)]
9071            type UnderlyingSolTuple<'a> = ();
9072            #[doc(hidden)]
9073            type UnderlyingRustTuple<'a> = ();
9074            #[cfg(test)]
9075            #[allow(dead_code, unreachable_patterns)]
9076            fn _type_assertion(
9077                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9078            ) {
9079                match _t {
9080                    alloy_sol_types::private::AssertTypeEq::<
9081                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9082                    >(_) => {}
9083                }
9084            }
9085            #[automatically_derived]
9086            #[doc(hidden)]
9087            impl ::core::convert::From<currentBlockNumberCall>
9088            for UnderlyingRustTuple<'_> {
9089                fn from(value: currentBlockNumberCall) -> Self {
9090                    ()
9091                }
9092            }
9093            #[automatically_derived]
9094            #[doc(hidden)]
9095            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9096            for currentBlockNumberCall {
9097                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9098                    Self
9099                }
9100            }
9101        }
9102        {
9103            #[doc(hidden)]
9104            #[allow(dead_code)]
9105            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9106            #[doc(hidden)]
9107            type UnderlyingRustTuple<'a> = (
9108                alloy::sol_types::private::primitives::aliases::U256,
9109            );
9110            #[cfg(test)]
9111            #[allow(dead_code, unreachable_patterns)]
9112            fn _type_assertion(
9113                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9114            ) {
9115                match _t {
9116                    alloy_sol_types::private::AssertTypeEq::<
9117                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9118                    >(_) => {}
9119                }
9120            }
9121            #[automatically_derived]
9122            #[doc(hidden)]
9123            impl ::core::convert::From<currentBlockNumberReturn>
9124            for UnderlyingRustTuple<'_> {
9125                fn from(value: currentBlockNumberReturn) -> Self {
9126                    (value._0,)
9127                }
9128            }
9129            #[automatically_derived]
9130            #[doc(hidden)]
9131            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9132            for currentBlockNumberReturn {
9133                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9134                    Self { _0: tuple.0 }
9135                }
9136            }
9137        }
9138        #[automatically_derived]
9139        impl alloy_sol_types::SolCall for currentBlockNumberCall {
9140            type Parameters<'a> = ();
9141            type Token<'a> = <Self::Parameters<
9142                'a,
9143            > as alloy_sol_types::SolType>::Token<'a>;
9144            type Return = alloy::sol_types::private::primitives::aliases::U256;
9145            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9146            type ReturnToken<'a> = <Self::ReturnTuple<
9147                'a,
9148            > as alloy_sol_types::SolType>::Token<'a>;
9149            const SIGNATURE: &'static str = "currentBlockNumber()";
9150            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
9151            #[inline]
9152            fn new<'a>(
9153                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9154            ) -> Self {
9155                tuple.into()
9156            }
9157            #[inline]
9158            fn tokenize(&self) -> Self::Token<'_> {
9159                ()
9160            }
9161            #[inline]
9162            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9163                (
9164                    <alloy::sol_types::sol_data::Uint<
9165                        256,
9166                    > as alloy_sol_types::SolType>::tokenize(ret),
9167                )
9168            }
9169            #[inline]
9170            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9171                <Self::ReturnTuple<
9172                    '_,
9173                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9174                    .map(|r| {
9175                        let r: currentBlockNumberReturn = r.into();
9176                        r._0
9177                    })
9178            }
9179            #[inline]
9180            fn abi_decode_returns_validate(
9181                data: &[u8],
9182            ) -> alloy_sol_types::Result<Self::Return> {
9183                <Self::ReturnTuple<
9184                    '_,
9185                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9186                    .map(|r| {
9187                        let r: currentBlockNumberReturn = r.into();
9188                        r._0
9189                    })
9190            }
9191        }
9192    };
9193    #[derive(serde::Serialize, serde::Deserialize)]
9194    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9195    /**Function with signature `currentEpoch()` and selector `0x76671808`.
9196```solidity
9197function currentEpoch() external view returns (uint64);
9198```*/
9199    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9200    #[derive(Clone)]
9201    pub struct currentEpochCall;
9202    #[derive(serde::Serialize, serde::Deserialize)]
9203    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9204    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
9205    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9206    #[derive(Clone)]
9207    pub struct currentEpochReturn {
9208        #[allow(missing_docs)]
9209        pub _0: u64,
9210    }
9211    #[allow(
9212        non_camel_case_types,
9213        non_snake_case,
9214        clippy::pub_underscore_fields,
9215        clippy::style
9216    )]
9217    const _: () = {
9218        use alloy::sol_types as alloy_sol_types;
9219        {
9220            #[doc(hidden)]
9221            #[allow(dead_code)]
9222            type UnderlyingSolTuple<'a> = ();
9223            #[doc(hidden)]
9224            type UnderlyingRustTuple<'a> = ();
9225            #[cfg(test)]
9226            #[allow(dead_code, unreachable_patterns)]
9227            fn _type_assertion(
9228                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9229            ) {
9230                match _t {
9231                    alloy_sol_types::private::AssertTypeEq::<
9232                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9233                    >(_) => {}
9234                }
9235            }
9236            #[automatically_derived]
9237            #[doc(hidden)]
9238            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
9239                fn from(value: currentEpochCall) -> Self {
9240                    ()
9241                }
9242            }
9243            #[automatically_derived]
9244            #[doc(hidden)]
9245            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
9246                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9247                    Self
9248                }
9249            }
9250        }
9251        {
9252            #[doc(hidden)]
9253            #[allow(dead_code)]
9254            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9255            #[doc(hidden)]
9256            type UnderlyingRustTuple<'a> = (u64,);
9257            #[cfg(test)]
9258            #[allow(dead_code, unreachable_patterns)]
9259            fn _type_assertion(
9260                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9261            ) {
9262                match _t {
9263                    alloy_sol_types::private::AssertTypeEq::<
9264                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9265                    >(_) => {}
9266                }
9267            }
9268            #[automatically_derived]
9269            #[doc(hidden)]
9270            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
9271                fn from(value: currentEpochReturn) -> Self {
9272                    (value._0,)
9273                }
9274            }
9275            #[automatically_derived]
9276            #[doc(hidden)]
9277            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
9278                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9279                    Self { _0: tuple.0 }
9280                }
9281            }
9282        }
9283        #[automatically_derived]
9284        impl alloy_sol_types::SolCall for currentEpochCall {
9285            type Parameters<'a> = ();
9286            type Token<'a> = <Self::Parameters<
9287                'a,
9288            > as alloy_sol_types::SolType>::Token<'a>;
9289            type Return = u64;
9290            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9291            type ReturnToken<'a> = <Self::ReturnTuple<
9292                'a,
9293            > as alloy_sol_types::SolType>::Token<'a>;
9294            const SIGNATURE: &'static str = "currentEpoch()";
9295            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
9296            #[inline]
9297            fn new<'a>(
9298                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9299            ) -> Self {
9300                tuple.into()
9301            }
9302            #[inline]
9303            fn tokenize(&self) -> Self::Token<'_> {
9304                ()
9305            }
9306            #[inline]
9307            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9308                (
9309                    <alloy::sol_types::sol_data::Uint<
9310                        64,
9311                    > as alloy_sol_types::SolType>::tokenize(ret),
9312                )
9313            }
9314            #[inline]
9315            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9316                <Self::ReturnTuple<
9317                    '_,
9318                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9319                    .map(|r| {
9320                        let r: currentEpochReturn = r.into();
9321                        r._0
9322                    })
9323            }
9324            #[inline]
9325            fn abi_decode_returns_validate(
9326                data: &[u8],
9327            ) -> alloy_sol_types::Result<Self::Return> {
9328                <Self::ReturnTuple<
9329                    '_,
9330                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9331                    .map(|r| {
9332                        let r: currentEpochReturn = r.into();
9333                        r._0
9334                    })
9335            }
9336        }
9337    };
9338    #[derive(serde::Serialize, serde::Deserialize)]
9339    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9340    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
9341```solidity
9342function disablePermissionedProverMode() external;
9343```*/
9344    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9345    #[derive(Clone)]
9346    pub struct disablePermissionedProverModeCall;
9347    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
9348    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9349    #[derive(Clone)]
9350    pub struct disablePermissionedProverModeReturn {}
9351    #[allow(
9352        non_camel_case_types,
9353        non_snake_case,
9354        clippy::pub_underscore_fields,
9355        clippy::style
9356    )]
9357    const _: () = {
9358        use alloy::sol_types as alloy_sol_types;
9359        {
9360            #[doc(hidden)]
9361            #[allow(dead_code)]
9362            type UnderlyingSolTuple<'a> = ();
9363            #[doc(hidden)]
9364            type UnderlyingRustTuple<'a> = ();
9365            #[cfg(test)]
9366            #[allow(dead_code, unreachable_patterns)]
9367            fn _type_assertion(
9368                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9369            ) {
9370                match _t {
9371                    alloy_sol_types::private::AssertTypeEq::<
9372                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9373                    >(_) => {}
9374                }
9375            }
9376            #[automatically_derived]
9377            #[doc(hidden)]
9378            impl ::core::convert::From<disablePermissionedProverModeCall>
9379            for UnderlyingRustTuple<'_> {
9380                fn from(value: disablePermissionedProverModeCall) -> Self {
9381                    ()
9382                }
9383            }
9384            #[automatically_derived]
9385            #[doc(hidden)]
9386            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9387            for disablePermissionedProverModeCall {
9388                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9389                    Self
9390                }
9391            }
9392        }
9393        {
9394            #[doc(hidden)]
9395            #[allow(dead_code)]
9396            type UnderlyingSolTuple<'a> = ();
9397            #[doc(hidden)]
9398            type UnderlyingRustTuple<'a> = ();
9399            #[cfg(test)]
9400            #[allow(dead_code, unreachable_patterns)]
9401            fn _type_assertion(
9402                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9403            ) {
9404                match _t {
9405                    alloy_sol_types::private::AssertTypeEq::<
9406                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9407                    >(_) => {}
9408                }
9409            }
9410            #[automatically_derived]
9411            #[doc(hidden)]
9412            impl ::core::convert::From<disablePermissionedProverModeReturn>
9413            for UnderlyingRustTuple<'_> {
9414                fn from(value: disablePermissionedProverModeReturn) -> Self {
9415                    ()
9416                }
9417            }
9418            #[automatically_derived]
9419            #[doc(hidden)]
9420            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9421            for disablePermissionedProverModeReturn {
9422                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9423                    Self {}
9424                }
9425            }
9426        }
9427        impl disablePermissionedProverModeReturn {
9428            fn _tokenize(
9429                &self,
9430            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
9431                '_,
9432            > {
9433                ()
9434            }
9435        }
9436        #[automatically_derived]
9437        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
9438            type Parameters<'a> = ();
9439            type Token<'a> = <Self::Parameters<
9440                'a,
9441            > as alloy_sol_types::SolType>::Token<'a>;
9442            type Return = disablePermissionedProverModeReturn;
9443            type ReturnTuple<'a> = ();
9444            type ReturnToken<'a> = <Self::ReturnTuple<
9445                'a,
9446            > as alloy_sol_types::SolType>::Token<'a>;
9447            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
9448            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
9449            #[inline]
9450            fn new<'a>(
9451                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9452            ) -> Self {
9453                tuple.into()
9454            }
9455            #[inline]
9456            fn tokenize(&self) -> Self::Token<'_> {
9457                ()
9458            }
9459            #[inline]
9460            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9461                disablePermissionedProverModeReturn::_tokenize(ret)
9462            }
9463            #[inline]
9464            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9465                <Self::ReturnTuple<
9466                    '_,
9467                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9468                    .map(Into::into)
9469            }
9470            #[inline]
9471            fn abi_decode_returns_validate(
9472                data: &[u8],
9473            ) -> alloy_sol_types::Result<Self::Return> {
9474                <Self::ReturnTuple<
9475                    '_,
9476                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9477                    .map(Into::into)
9478            }
9479        }
9480    };
9481    #[derive(serde::Serialize, serde::Deserialize)]
9482    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9483    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
9484```solidity
9485function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
9486```*/
9487    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9488    #[derive(Clone)]
9489    pub struct epochFromBlockNumberCall {
9490        #[allow(missing_docs)]
9491        pub _blockNum: u64,
9492        #[allow(missing_docs)]
9493        pub _blocksPerEpoch: u64,
9494    }
9495    #[derive(serde::Serialize, serde::Deserialize)]
9496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9497    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
9498    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9499    #[derive(Clone)]
9500    pub struct epochFromBlockNumberReturn {
9501        #[allow(missing_docs)]
9502        pub _0: u64,
9503    }
9504    #[allow(
9505        non_camel_case_types,
9506        non_snake_case,
9507        clippy::pub_underscore_fields,
9508        clippy::style
9509    )]
9510    const _: () = {
9511        use alloy::sol_types as alloy_sol_types;
9512        {
9513            #[doc(hidden)]
9514            #[allow(dead_code)]
9515            type UnderlyingSolTuple<'a> = (
9516                alloy::sol_types::sol_data::Uint<64>,
9517                alloy::sol_types::sol_data::Uint<64>,
9518            );
9519            #[doc(hidden)]
9520            type UnderlyingRustTuple<'a> = (u64, u64);
9521            #[cfg(test)]
9522            #[allow(dead_code, unreachable_patterns)]
9523            fn _type_assertion(
9524                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9525            ) {
9526                match _t {
9527                    alloy_sol_types::private::AssertTypeEq::<
9528                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9529                    >(_) => {}
9530                }
9531            }
9532            #[automatically_derived]
9533            #[doc(hidden)]
9534            impl ::core::convert::From<epochFromBlockNumberCall>
9535            for UnderlyingRustTuple<'_> {
9536                fn from(value: epochFromBlockNumberCall) -> Self {
9537                    (value._blockNum, value._blocksPerEpoch)
9538                }
9539            }
9540            #[automatically_derived]
9541            #[doc(hidden)]
9542            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9543            for epochFromBlockNumberCall {
9544                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9545                    Self {
9546                        _blockNum: tuple.0,
9547                        _blocksPerEpoch: tuple.1,
9548                    }
9549                }
9550            }
9551        }
9552        {
9553            #[doc(hidden)]
9554            #[allow(dead_code)]
9555            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9556            #[doc(hidden)]
9557            type UnderlyingRustTuple<'a> = (u64,);
9558            #[cfg(test)]
9559            #[allow(dead_code, unreachable_patterns)]
9560            fn _type_assertion(
9561                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9562            ) {
9563                match _t {
9564                    alloy_sol_types::private::AssertTypeEq::<
9565                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9566                    >(_) => {}
9567                }
9568            }
9569            #[automatically_derived]
9570            #[doc(hidden)]
9571            impl ::core::convert::From<epochFromBlockNumberReturn>
9572            for UnderlyingRustTuple<'_> {
9573                fn from(value: epochFromBlockNumberReturn) -> Self {
9574                    (value._0,)
9575                }
9576            }
9577            #[automatically_derived]
9578            #[doc(hidden)]
9579            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9580            for epochFromBlockNumberReturn {
9581                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9582                    Self { _0: tuple.0 }
9583                }
9584            }
9585        }
9586        #[automatically_derived]
9587        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9588            type Parameters<'a> = (
9589                alloy::sol_types::sol_data::Uint<64>,
9590                alloy::sol_types::sol_data::Uint<64>,
9591            );
9592            type Token<'a> = <Self::Parameters<
9593                'a,
9594            > as alloy_sol_types::SolType>::Token<'a>;
9595            type Return = u64;
9596            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9597            type ReturnToken<'a> = <Self::ReturnTuple<
9598                'a,
9599            > as alloy_sol_types::SolType>::Token<'a>;
9600            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9601            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9602            #[inline]
9603            fn new<'a>(
9604                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9605            ) -> Self {
9606                tuple.into()
9607            }
9608            #[inline]
9609            fn tokenize(&self) -> Self::Token<'_> {
9610                (
9611                    <alloy::sol_types::sol_data::Uint<
9612                        64,
9613                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9614                    <alloy::sol_types::sol_data::Uint<
9615                        64,
9616                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9617                )
9618            }
9619            #[inline]
9620            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9621                (
9622                    <alloy::sol_types::sol_data::Uint<
9623                        64,
9624                    > as alloy_sol_types::SolType>::tokenize(ret),
9625                )
9626            }
9627            #[inline]
9628            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9629                <Self::ReturnTuple<
9630                    '_,
9631                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9632                    .map(|r| {
9633                        let r: epochFromBlockNumberReturn = r.into();
9634                        r._0
9635                    })
9636            }
9637            #[inline]
9638            fn abi_decode_returns_validate(
9639                data: &[u8],
9640            ) -> alloy_sol_types::Result<Self::Return> {
9641                <Self::ReturnTuple<
9642                    '_,
9643                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9644                    .map(|r| {
9645                        let r: epochFromBlockNumberReturn = r.into();
9646                        r._0
9647                    })
9648            }
9649        }
9650    };
9651    #[derive(serde::Serialize, serde::Deserialize)]
9652    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9653    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9654```solidity
9655function epochStartBlock() external view returns (uint64);
9656```*/
9657    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9658    #[derive(Clone)]
9659    pub struct epochStartBlockCall;
9660    #[derive(serde::Serialize, serde::Deserialize)]
9661    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9662    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9663    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9664    #[derive(Clone)]
9665    pub struct epochStartBlockReturn {
9666        #[allow(missing_docs)]
9667        pub _0: u64,
9668    }
9669    #[allow(
9670        non_camel_case_types,
9671        non_snake_case,
9672        clippy::pub_underscore_fields,
9673        clippy::style
9674    )]
9675    const _: () = {
9676        use alloy::sol_types as alloy_sol_types;
9677        {
9678            #[doc(hidden)]
9679            #[allow(dead_code)]
9680            type UnderlyingSolTuple<'a> = ();
9681            #[doc(hidden)]
9682            type UnderlyingRustTuple<'a> = ();
9683            #[cfg(test)]
9684            #[allow(dead_code, unreachable_patterns)]
9685            fn _type_assertion(
9686                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9687            ) {
9688                match _t {
9689                    alloy_sol_types::private::AssertTypeEq::<
9690                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9691                    >(_) => {}
9692                }
9693            }
9694            #[automatically_derived]
9695            #[doc(hidden)]
9696            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9697                fn from(value: epochStartBlockCall) -> Self {
9698                    ()
9699                }
9700            }
9701            #[automatically_derived]
9702            #[doc(hidden)]
9703            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9704                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9705                    Self
9706                }
9707            }
9708        }
9709        {
9710            #[doc(hidden)]
9711            #[allow(dead_code)]
9712            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9713            #[doc(hidden)]
9714            type UnderlyingRustTuple<'a> = (u64,);
9715            #[cfg(test)]
9716            #[allow(dead_code, unreachable_patterns)]
9717            fn _type_assertion(
9718                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9719            ) {
9720                match _t {
9721                    alloy_sol_types::private::AssertTypeEq::<
9722                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9723                    >(_) => {}
9724                }
9725            }
9726            #[automatically_derived]
9727            #[doc(hidden)]
9728            impl ::core::convert::From<epochStartBlockReturn>
9729            for UnderlyingRustTuple<'_> {
9730                fn from(value: epochStartBlockReturn) -> Self {
9731                    (value._0,)
9732                }
9733            }
9734            #[automatically_derived]
9735            #[doc(hidden)]
9736            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9737            for epochStartBlockReturn {
9738                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9739                    Self { _0: tuple.0 }
9740                }
9741            }
9742        }
9743        #[automatically_derived]
9744        impl alloy_sol_types::SolCall for epochStartBlockCall {
9745            type Parameters<'a> = ();
9746            type Token<'a> = <Self::Parameters<
9747                'a,
9748            > as alloy_sol_types::SolType>::Token<'a>;
9749            type Return = u64;
9750            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9751            type ReturnToken<'a> = <Self::ReturnTuple<
9752                'a,
9753            > as alloy_sol_types::SolType>::Token<'a>;
9754            const SIGNATURE: &'static str = "epochStartBlock()";
9755            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9756            #[inline]
9757            fn new<'a>(
9758                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9759            ) -> Self {
9760                tuple.into()
9761            }
9762            #[inline]
9763            fn tokenize(&self) -> Self::Token<'_> {
9764                ()
9765            }
9766            #[inline]
9767            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9768                (
9769                    <alloy::sol_types::sol_data::Uint<
9770                        64,
9771                    > as alloy_sol_types::SolType>::tokenize(ret),
9772                )
9773            }
9774            #[inline]
9775            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9776                <Self::ReturnTuple<
9777                    '_,
9778                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9779                    .map(|r| {
9780                        let r: epochStartBlockReturn = r.into();
9781                        r._0
9782                    })
9783            }
9784            #[inline]
9785            fn abi_decode_returns_validate(
9786                data: &[u8],
9787            ) -> alloy_sol_types::Result<Self::Return> {
9788                <Self::ReturnTuple<
9789                    '_,
9790                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9791                    .map(|r| {
9792                        let r: epochStartBlockReturn = r.into();
9793                        r._0
9794                    })
9795            }
9796        }
9797    };
9798    #[derive(serde::Serialize, serde::Deserialize)]
9799    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9800    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9801```solidity
9802function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9803```*/
9804    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9805    #[derive(Clone)]
9806    pub struct finalizedStateCall;
9807    #[derive(serde::Serialize, serde::Deserialize)]
9808    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9809    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9811    #[derive(Clone)]
9812    pub struct finalizedStateReturn {
9813        #[allow(missing_docs)]
9814        pub viewNum: u64,
9815        #[allow(missing_docs)]
9816        pub blockHeight: u64,
9817        #[allow(missing_docs)]
9818        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9819    }
9820    #[allow(
9821        non_camel_case_types,
9822        non_snake_case,
9823        clippy::pub_underscore_fields,
9824        clippy::style
9825    )]
9826    const _: () = {
9827        use alloy::sol_types as alloy_sol_types;
9828        {
9829            #[doc(hidden)]
9830            #[allow(dead_code)]
9831            type UnderlyingSolTuple<'a> = ();
9832            #[doc(hidden)]
9833            type UnderlyingRustTuple<'a> = ();
9834            #[cfg(test)]
9835            #[allow(dead_code, unreachable_patterns)]
9836            fn _type_assertion(
9837                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9838            ) {
9839                match _t {
9840                    alloy_sol_types::private::AssertTypeEq::<
9841                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9842                    >(_) => {}
9843                }
9844            }
9845            #[automatically_derived]
9846            #[doc(hidden)]
9847            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9848                fn from(value: finalizedStateCall) -> Self {
9849                    ()
9850                }
9851            }
9852            #[automatically_derived]
9853            #[doc(hidden)]
9854            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9855                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9856                    Self
9857                }
9858            }
9859        }
9860        {
9861            #[doc(hidden)]
9862            #[allow(dead_code)]
9863            type UnderlyingSolTuple<'a> = (
9864                alloy::sol_types::sol_data::Uint<64>,
9865                alloy::sol_types::sol_data::Uint<64>,
9866                BN254::ScalarField,
9867            );
9868            #[doc(hidden)]
9869            type UnderlyingRustTuple<'a> = (
9870                u64,
9871                u64,
9872                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9873            );
9874            #[cfg(test)]
9875            #[allow(dead_code, unreachable_patterns)]
9876            fn _type_assertion(
9877                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9878            ) {
9879                match _t {
9880                    alloy_sol_types::private::AssertTypeEq::<
9881                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9882                    >(_) => {}
9883                }
9884            }
9885            #[automatically_derived]
9886            #[doc(hidden)]
9887            impl ::core::convert::From<finalizedStateReturn>
9888            for UnderlyingRustTuple<'_> {
9889                fn from(value: finalizedStateReturn) -> Self {
9890                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9891                }
9892            }
9893            #[automatically_derived]
9894            #[doc(hidden)]
9895            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9896            for finalizedStateReturn {
9897                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9898                    Self {
9899                        viewNum: tuple.0,
9900                        blockHeight: tuple.1,
9901                        blockCommRoot: tuple.2,
9902                    }
9903                }
9904            }
9905        }
9906        impl finalizedStateReturn {
9907            fn _tokenize(
9908                &self,
9909            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9910                (
9911                    <alloy::sol_types::sol_data::Uint<
9912                        64,
9913                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9914                    <alloy::sol_types::sol_data::Uint<
9915                        64,
9916                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9917                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9918                        &self.blockCommRoot,
9919                    ),
9920                )
9921            }
9922        }
9923        #[automatically_derived]
9924        impl alloy_sol_types::SolCall for finalizedStateCall {
9925            type Parameters<'a> = ();
9926            type Token<'a> = <Self::Parameters<
9927                'a,
9928            > as alloy_sol_types::SolType>::Token<'a>;
9929            type Return = finalizedStateReturn;
9930            type ReturnTuple<'a> = (
9931                alloy::sol_types::sol_data::Uint<64>,
9932                alloy::sol_types::sol_data::Uint<64>,
9933                BN254::ScalarField,
9934            );
9935            type ReturnToken<'a> = <Self::ReturnTuple<
9936                'a,
9937            > as alloy_sol_types::SolType>::Token<'a>;
9938            const SIGNATURE: &'static str = "finalizedState()";
9939            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9940            #[inline]
9941            fn new<'a>(
9942                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9943            ) -> Self {
9944                tuple.into()
9945            }
9946            #[inline]
9947            fn tokenize(&self) -> Self::Token<'_> {
9948                ()
9949            }
9950            #[inline]
9951            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9952                finalizedStateReturn::_tokenize(ret)
9953            }
9954            #[inline]
9955            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9956                <Self::ReturnTuple<
9957                    '_,
9958                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9959                    .map(Into::into)
9960            }
9961            #[inline]
9962            fn abi_decode_returns_validate(
9963                data: &[u8],
9964            ) -> alloy_sol_types::Result<Self::Return> {
9965                <Self::ReturnTuple<
9966                    '_,
9967                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9968                    .map(Into::into)
9969            }
9970        }
9971    };
9972    #[derive(serde::Serialize, serde::Deserialize)]
9973    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9974    /**Function with signature `firstEpoch()` and selector `0x41682744`.
9975```solidity
9976function firstEpoch() external view returns (uint64);
9977```*/
9978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9979    #[derive(Clone)]
9980    pub struct firstEpochCall;
9981    #[derive(serde::Serialize, serde::Deserialize)]
9982    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9983    ///Container type for the return parameters of the [`firstEpoch()`](firstEpochCall) function.
9984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9985    #[derive(Clone)]
9986    pub struct firstEpochReturn {
9987        #[allow(missing_docs)]
9988        pub _0: u64,
9989    }
9990    #[allow(
9991        non_camel_case_types,
9992        non_snake_case,
9993        clippy::pub_underscore_fields,
9994        clippy::style
9995    )]
9996    const _: () = {
9997        use alloy::sol_types as alloy_sol_types;
9998        {
9999            #[doc(hidden)]
10000            #[allow(dead_code)]
10001            type UnderlyingSolTuple<'a> = ();
10002            #[doc(hidden)]
10003            type UnderlyingRustTuple<'a> = ();
10004            #[cfg(test)]
10005            #[allow(dead_code, unreachable_patterns)]
10006            fn _type_assertion(
10007                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10008            ) {
10009                match _t {
10010                    alloy_sol_types::private::AssertTypeEq::<
10011                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10012                    >(_) => {}
10013                }
10014            }
10015            #[automatically_derived]
10016            #[doc(hidden)]
10017            impl ::core::convert::From<firstEpochCall> for UnderlyingRustTuple<'_> {
10018                fn from(value: firstEpochCall) -> Self {
10019                    ()
10020                }
10021            }
10022            #[automatically_derived]
10023            #[doc(hidden)]
10024            impl ::core::convert::From<UnderlyingRustTuple<'_>> for firstEpochCall {
10025                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10026                    Self
10027                }
10028            }
10029        }
10030        {
10031            #[doc(hidden)]
10032            #[allow(dead_code)]
10033            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10034            #[doc(hidden)]
10035            type UnderlyingRustTuple<'a> = (u64,);
10036            #[cfg(test)]
10037            #[allow(dead_code, unreachable_patterns)]
10038            fn _type_assertion(
10039                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10040            ) {
10041                match _t {
10042                    alloy_sol_types::private::AssertTypeEq::<
10043                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10044                    >(_) => {}
10045                }
10046            }
10047            #[automatically_derived]
10048            #[doc(hidden)]
10049            impl ::core::convert::From<firstEpochReturn> for UnderlyingRustTuple<'_> {
10050                fn from(value: firstEpochReturn) -> Self {
10051                    (value._0,)
10052                }
10053            }
10054            #[automatically_derived]
10055            #[doc(hidden)]
10056            impl ::core::convert::From<UnderlyingRustTuple<'_>> for firstEpochReturn {
10057                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10058                    Self { _0: tuple.0 }
10059                }
10060            }
10061        }
10062        #[automatically_derived]
10063        impl alloy_sol_types::SolCall for firstEpochCall {
10064            type Parameters<'a> = ();
10065            type Token<'a> = <Self::Parameters<
10066                'a,
10067            > as alloy_sol_types::SolType>::Token<'a>;
10068            type Return = u64;
10069            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10070            type ReturnToken<'a> = <Self::ReturnTuple<
10071                'a,
10072            > as alloy_sol_types::SolType>::Token<'a>;
10073            const SIGNATURE: &'static str = "firstEpoch()";
10074            const SELECTOR: [u8; 4] = [65u8, 104u8, 39u8, 68u8];
10075            #[inline]
10076            fn new<'a>(
10077                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10078            ) -> Self {
10079                tuple.into()
10080            }
10081            #[inline]
10082            fn tokenize(&self) -> Self::Token<'_> {
10083                ()
10084            }
10085            #[inline]
10086            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10087                (
10088                    <alloy::sol_types::sol_data::Uint<
10089                        64,
10090                    > as alloy_sol_types::SolType>::tokenize(ret),
10091                )
10092            }
10093            #[inline]
10094            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10095                <Self::ReturnTuple<
10096                    '_,
10097                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10098                    .map(|r| {
10099                        let r: firstEpochReturn = r.into();
10100                        r._0
10101                    })
10102            }
10103            #[inline]
10104            fn abi_decode_returns_validate(
10105                data: &[u8],
10106            ) -> alloy_sol_types::Result<Self::Return> {
10107                <Self::ReturnTuple<
10108                    '_,
10109                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10110                    .map(|r| {
10111                        let r: firstEpochReturn = r.into();
10112                        r._0
10113                    })
10114            }
10115        }
10116    };
10117    #[derive(serde::Serialize, serde::Deserialize)]
10118    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10119    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
10120```solidity
10121function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
10122```*/
10123    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10124    #[derive(Clone)]
10125    pub struct genesisStakeTableStateCall;
10126    #[derive(serde::Serialize, serde::Deserialize)]
10127    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10128    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
10129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10130    #[derive(Clone)]
10131    pub struct genesisStakeTableStateReturn {
10132        #[allow(missing_docs)]
10133        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
10134        #[allow(missing_docs)]
10135        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10136        #[allow(missing_docs)]
10137        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10138        #[allow(missing_docs)]
10139        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10140    }
10141    #[allow(
10142        non_camel_case_types,
10143        non_snake_case,
10144        clippy::pub_underscore_fields,
10145        clippy::style
10146    )]
10147    const _: () = {
10148        use alloy::sol_types as alloy_sol_types;
10149        {
10150            #[doc(hidden)]
10151            #[allow(dead_code)]
10152            type UnderlyingSolTuple<'a> = ();
10153            #[doc(hidden)]
10154            type UnderlyingRustTuple<'a> = ();
10155            #[cfg(test)]
10156            #[allow(dead_code, unreachable_patterns)]
10157            fn _type_assertion(
10158                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10159            ) {
10160                match _t {
10161                    alloy_sol_types::private::AssertTypeEq::<
10162                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10163                    >(_) => {}
10164                }
10165            }
10166            #[automatically_derived]
10167            #[doc(hidden)]
10168            impl ::core::convert::From<genesisStakeTableStateCall>
10169            for UnderlyingRustTuple<'_> {
10170                fn from(value: genesisStakeTableStateCall) -> Self {
10171                    ()
10172                }
10173            }
10174            #[automatically_derived]
10175            #[doc(hidden)]
10176            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10177            for genesisStakeTableStateCall {
10178                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10179                    Self
10180                }
10181            }
10182        }
10183        {
10184            #[doc(hidden)]
10185            #[allow(dead_code)]
10186            type UnderlyingSolTuple<'a> = (
10187                alloy::sol_types::sol_data::Uint<256>,
10188                BN254::ScalarField,
10189                BN254::ScalarField,
10190                BN254::ScalarField,
10191            );
10192            #[doc(hidden)]
10193            type UnderlyingRustTuple<'a> = (
10194                alloy::sol_types::private::primitives::aliases::U256,
10195                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10196                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10197                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10198            );
10199            #[cfg(test)]
10200            #[allow(dead_code, unreachable_patterns)]
10201            fn _type_assertion(
10202                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10203            ) {
10204                match _t {
10205                    alloy_sol_types::private::AssertTypeEq::<
10206                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10207                    >(_) => {}
10208                }
10209            }
10210            #[automatically_derived]
10211            #[doc(hidden)]
10212            impl ::core::convert::From<genesisStakeTableStateReturn>
10213            for UnderlyingRustTuple<'_> {
10214                fn from(value: genesisStakeTableStateReturn) -> Self {
10215                    (
10216                        value.threshold,
10217                        value.blsKeyComm,
10218                        value.schnorrKeyComm,
10219                        value.amountComm,
10220                    )
10221                }
10222            }
10223            #[automatically_derived]
10224            #[doc(hidden)]
10225            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10226            for genesisStakeTableStateReturn {
10227                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10228                    Self {
10229                        threshold: tuple.0,
10230                        blsKeyComm: tuple.1,
10231                        schnorrKeyComm: tuple.2,
10232                        amountComm: tuple.3,
10233                    }
10234                }
10235            }
10236        }
10237        impl genesisStakeTableStateReturn {
10238            fn _tokenize(
10239                &self,
10240            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
10241                '_,
10242            > {
10243                (
10244                    <alloy::sol_types::sol_data::Uint<
10245                        256,
10246                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
10247                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10248                        &self.blsKeyComm,
10249                    ),
10250                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10251                        &self.schnorrKeyComm,
10252                    ),
10253                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10254                        &self.amountComm,
10255                    ),
10256                )
10257            }
10258        }
10259        #[automatically_derived]
10260        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
10261            type Parameters<'a> = ();
10262            type Token<'a> = <Self::Parameters<
10263                'a,
10264            > as alloy_sol_types::SolType>::Token<'a>;
10265            type Return = genesisStakeTableStateReturn;
10266            type ReturnTuple<'a> = (
10267                alloy::sol_types::sol_data::Uint<256>,
10268                BN254::ScalarField,
10269                BN254::ScalarField,
10270                BN254::ScalarField,
10271            );
10272            type ReturnToken<'a> = <Self::ReturnTuple<
10273                'a,
10274            > as alloy_sol_types::SolType>::Token<'a>;
10275            const SIGNATURE: &'static str = "genesisStakeTableState()";
10276            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
10277            #[inline]
10278            fn new<'a>(
10279                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10280            ) -> Self {
10281                tuple.into()
10282            }
10283            #[inline]
10284            fn tokenize(&self) -> Self::Token<'_> {
10285                ()
10286            }
10287            #[inline]
10288            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10289                genesisStakeTableStateReturn::_tokenize(ret)
10290            }
10291            #[inline]
10292            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10293                <Self::ReturnTuple<
10294                    '_,
10295                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10296                    .map(Into::into)
10297            }
10298            #[inline]
10299            fn abi_decode_returns_validate(
10300                data: &[u8],
10301            ) -> alloy_sol_types::Result<Self::Return> {
10302                <Self::ReturnTuple<
10303                    '_,
10304                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10305                    .map(Into::into)
10306            }
10307        }
10308    };
10309    #[derive(serde::Serialize, serde::Deserialize)]
10310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10311    /**Function with signature `genesisState()` and selector `0xd24d933d`.
10312```solidity
10313function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
10314```*/
10315    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10316    #[derive(Clone)]
10317    pub struct genesisStateCall;
10318    #[derive(serde::Serialize, serde::Deserialize)]
10319    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10320    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
10321    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10322    #[derive(Clone)]
10323    pub struct genesisStateReturn {
10324        #[allow(missing_docs)]
10325        pub viewNum: u64,
10326        #[allow(missing_docs)]
10327        pub blockHeight: u64,
10328        #[allow(missing_docs)]
10329        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10330    }
10331    #[allow(
10332        non_camel_case_types,
10333        non_snake_case,
10334        clippy::pub_underscore_fields,
10335        clippy::style
10336    )]
10337    const _: () = {
10338        use alloy::sol_types as alloy_sol_types;
10339        {
10340            #[doc(hidden)]
10341            #[allow(dead_code)]
10342            type UnderlyingSolTuple<'a> = ();
10343            #[doc(hidden)]
10344            type UnderlyingRustTuple<'a> = ();
10345            #[cfg(test)]
10346            #[allow(dead_code, unreachable_patterns)]
10347            fn _type_assertion(
10348                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10349            ) {
10350                match _t {
10351                    alloy_sol_types::private::AssertTypeEq::<
10352                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10353                    >(_) => {}
10354                }
10355            }
10356            #[automatically_derived]
10357            #[doc(hidden)]
10358            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
10359                fn from(value: genesisStateCall) -> Self {
10360                    ()
10361                }
10362            }
10363            #[automatically_derived]
10364            #[doc(hidden)]
10365            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
10366                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10367                    Self
10368                }
10369            }
10370        }
10371        {
10372            #[doc(hidden)]
10373            #[allow(dead_code)]
10374            type UnderlyingSolTuple<'a> = (
10375                alloy::sol_types::sol_data::Uint<64>,
10376                alloy::sol_types::sol_data::Uint<64>,
10377                BN254::ScalarField,
10378            );
10379            #[doc(hidden)]
10380            type UnderlyingRustTuple<'a> = (
10381                u64,
10382                u64,
10383                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10384            );
10385            #[cfg(test)]
10386            #[allow(dead_code, unreachable_patterns)]
10387            fn _type_assertion(
10388                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10389            ) {
10390                match _t {
10391                    alloy_sol_types::private::AssertTypeEq::<
10392                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10393                    >(_) => {}
10394                }
10395            }
10396            #[automatically_derived]
10397            #[doc(hidden)]
10398            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
10399                fn from(value: genesisStateReturn) -> Self {
10400                    (value.viewNum, value.blockHeight, value.blockCommRoot)
10401                }
10402            }
10403            #[automatically_derived]
10404            #[doc(hidden)]
10405            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
10406                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10407                    Self {
10408                        viewNum: tuple.0,
10409                        blockHeight: tuple.1,
10410                        blockCommRoot: tuple.2,
10411                    }
10412                }
10413            }
10414        }
10415        impl genesisStateReturn {
10416            fn _tokenize(
10417                &self,
10418            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10419                (
10420                    <alloy::sol_types::sol_data::Uint<
10421                        64,
10422                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
10423                    <alloy::sol_types::sol_data::Uint<
10424                        64,
10425                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10426                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10427                        &self.blockCommRoot,
10428                    ),
10429                )
10430            }
10431        }
10432        #[automatically_derived]
10433        impl alloy_sol_types::SolCall for genesisStateCall {
10434            type Parameters<'a> = ();
10435            type Token<'a> = <Self::Parameters<
10436                'a,
10437            > as alloy_sol_types::SolType>::Token<'a>;
10438            type Return = genesisStateReturn;
10439            type ReturnTuple<'a> = (
10440                alloy::sol_types::sol_data::Uint<64>,
10441                alloy::sol_types::sol_data::Uint<64>,
10442                BN254::ScalarField,
10443            );
10444            type ReturnToken<'a> = <Self::ReturnTuple<
10445                'a,
10446            > as alloy_sol_types::SolType>::Token<'a>;
10447            const SIGNATURE: &'static str = "genesisState()";
10448            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
10449            #[inline]
10450            fn new<'a>(
10451                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10452            ) -> Self {
10453                tuple.into()
10454            }
10455            #[inline]
10456            fn tokenize(&self) -> Self::Token<'_> {
10457                ()
10458            }
10459            #[inline]
10460            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10461                genesisStateReturn::_tokenize(ret)
10462            }
10463            #[inline]
10464            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10465                <Self::ReturnTuple<
10466                    '_,
10467                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10468                    .map(Into::into)
10469            }
10470            #[inline]
10471            fn abi_decode_returns_validate(
10472                data: &[u8],
10473            ) -> alloy_sol_types::Result<Self::Return> {
10474                <Self::ReturnTuple<
10475                    '_,
10476                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10477                    .map(Into::into)
10478            }
10479        }
10480    };
10481    #[derive(serde::Serialize, serde::Deserialize)]
10482    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10483    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
10484```solidity
10485function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
10486```*/
10487    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10488    #[derive(Clone)]
10489    pub struct getHotShotCommitmentCall {
10490        #[allow(missing_docs)]
10491        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
10492    }
10493    #[derive(serde::Serialize, serde::Deserialize)]
10494    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10495    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
10496    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10497    #[derive(Clone)]
10498    pub struct getHotShotCommitmentReturn {
10499        #[allow(missing_docs)]
10500        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10501        #[allow(missing_docs)]
10502        pub hotshotBlockHeight: u64,
10503    }
10504    #[allow(
10505        non_camel_case_types,
10506        non_snake_case,
10507        clippy::pub_underscore_fields,
10508        clippy::style
10509    )]
10510    const _: () = {
10511        use alloy::sol_types as alloy_sol_types;
10512        {
10513            #[doc(hidden)]
10514            #[allow(dead_code)]
10515            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10516            #[doc(hidden)]
10517            type UnderlyingRustTuple<'a> = (
10518                alloy::sol_types::private::primitives::aliases::U256,
10519            );
10520            #[cfg(test)]
10521            #[allow(dead_code, unreachable_patterns)]
10522            fn _type_assertion(
10523                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10524            ) {
10525                match _t {
10526                    alloy_sol_types::private::AssertTypeEq::<
10527                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10528                    >(_) => {}
10529                }
10530            }
10531            #[automatically_derived]
10532            #[doc(hidden)]
10533            impl ::core::convert::From<getHotShotCommitmentCall>
10534            for UnderlyingRustTuple<'_> {
10535                fn from(value: getHotShotCommitmentCall) -> Self {
10536                    (value.hotShotBlockHeight,)
10537                }
10538            }
10539            #[automatically_derived]
10540            #[doc(hidden)]
10541            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10542            for getHotShotCommitmentCall {
10543                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10544                    Self {
10545                        hotShotBlockHeight: tuple.0,
10546                    }
10547                }
10548            }
10549        }
10550        {
10551            #[doc(hidden)]
10552            #[allow(dead_code)]
10553            type UnderlyingSolTuple<'a> = (
10554                BN254::ScalarField,
10555                alloy::sol_types::sol_data::Uint<64>,
10556            );
10557            #[doc(hidden)]
10558            type UnderlyingRustTuple<'a> = (
10559                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10560                u64,
10561            );
10562            #[cfg(test)]
10563            #[allow(dead_code, unreachable_patterns)]
10564            fn _type_assertion(
10565                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10566            ) {
10567                match _t {
10568                    alloy_sol_types::private::AssertTypeEq::<
10569                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10570                    >(_) => {}
10571                }
10572            }
10573            #[automatically_derived]
10574            #[doc(hidden)]
10575            impl ::core::convert::From<getHotShotCommitmentReturn>
10576            for UnderlyingRustTuple<'_> {
10577                fn from(value: getHotShotCommitmentReturn) -> Self {
10578                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
10579                }
10580            }
10581            #[automatically_derived]
10582            #[doc(hidden)]
10583            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10584            for getHotShotCommitmentReturn {
10585                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10586                    Self {
10587                        hotShotBlockCommRoot: tuple.0,
10588                        hotshotBlockHeight: tuple.1,
10589                    }
10590                }
10591            }
10592        }
10593        impl getHotShotCommitmentReturn {
10594            fn _tokenize(
10595                &self,
10596            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
10597                '_,
10598            > {
10599                (
10600                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10601                        &self.hotShotBlockCommRoot,
10602                    ),
10603                    <alloy::sol_types::sol_data::Uint<
10604                        64,
10605                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
10606                )
10607            }
10608        }
10609        #[automatically_derived]
10610        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
10611            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10612            type Token<'a> = <Self::Parameters<
10613                'a,
10614            > as alloy_sol_types::SolType>::Token<'a>;
10615            type Return = getHotShotCommitmentReturn;
10616            type ReturnTuple<'a> = (
10617                BN254::ScalarField,
10618                alloy::sol_types::sol_data::Uint<64>,
10619            );
10620            type ReturnToken<'a> = <Self::ReturnTuple<
10621                'a,
10622            > as alloy_sol_types::SolType>::Token<'a>;
10623            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
10624            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
10625            #[inline]
10626            fn new<'a>(
10627                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10628            ) -> Self {
10629                tuple.into()
10630            }
10631            #[inline]
10632            fn tokenize(&self) -> Self::Token<'_> {
10633                (
10634                    <alloy::sol_types::sol_data::Uint<
10635                        256,
10636                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10637                )
10638            }
10639            #[inline]
10640            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10641                getHotShotCommitmentReturn::_tokenize(ret)
10642            }
10643            #[inline]
10644            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10645                <Self::ReturnTuple<
10646                    '_,
10647                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10648                    .map(Into::into)
10649            }
10650            #[inline]
10651            fn abi_decode_returns_validate(
10652                data: &[u8],
10653            ) -> alloy_sol_types::Result<Self::Return> {
10654                <Self::ReturnTuple<
10655                    '_,
10656                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10657                    .map(Into::into)
10658            }
10659        }
10660    };
10661    #[derive(serde::Serialize, serde::Deserialize)]
10662    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10663    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10664```solidity
10665function getStateHistoryCount() external view returns (uint256);
10666```*/
10667    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10668    #[derive(Clone)]
10669    pub struct getStateHistoryCountCall;
10670    #[derive(serde::Serialize, serde::Deserialize)]
10671    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10672    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10673    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10674    #[derive(Clone)]
10675    pub struct getStateHistoryCountReturn {
10676        #[allow(missing_docs)]
10677        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10678    }
10679    #[allow(
10680        non_camel_case_types,
10681        non_snake_case,
10682        clippy::pub_underscore_fields,
10683        clippy::style
10684    )]
10685    const _: () = {
10686        use alloy::sol_types as alloy_sol_types;
10687        {
10688            #[doc(hidden)]
10689            #[allow(dead_code)]
10690            type UnderlyingSolTuple<'a> = ();
10691            #[doc(hidden)]
10692            type UnderlyingRustTuple<'a> = ();
10693            #[cfg(test)]
10694            #[allow(dead_code, unreachable_patterns)]
10695            fn _type_assertion(
10696                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10697            ) {
10698                match _t {
10699                    alloy_sol_types::private::AssertTypeEq::<
10700                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10701                    >(_) => {}
10702                }
10703            }
10704            #[automatically_derived]
10705            #[doc(hidden)]
10706            impl ::core::convert::From<getStateHistoryCountCall>
10707            for UnderlyingRustTuple<'_> {
10708                fn from(value: getStateHistoryCountCall) -> Self {
10709                    ()
10710                }
10711            }
10712            #[automatically_derived]
10713            #[doc(hidden)]
10714            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10715            for getStateHistoryCountCall {
10716                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10717                    Self
10718                }
10719            }
10720        }
10721        {
10722            #[doc(hidden)]
10723            #[allow(dead_code)]
10724            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10725            #[doc(hidden)]
10726            type UnderlyingRustTuple<'a> = (
10727                alloy::sol_types::private::primitives::aliases::U256,
10728            );
10729            #[cfg(test)]
10730            #[allow(dead_code, unreachable_patterns)]
10731            fn _type_assertion(
10732                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10733            ) {
10734                match _t {
10735                    alloy_sol_types::private::AssertTypeEq::<
10736                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10737                    >(_) => {}
10738                }
10739            }
10740            #[automatically_derived]
10741            #[doc(hidden)]
10742            impl ::core::convert::From<getStateHistoryCountReturn>
10743            for UnderlyingRustTuple<'_> {
10744                fn from(value: getStateHistoryCountReturn) -> Self {
10745                    (value._0,)
10746                }
10747            }
10748            #[automatically_derived]
10749            #[doc(hidden)]
10750            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10751            for getStateHistoryCountReturn {
10752                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10753                    Self { _0: tuple.0 }
10754                }
10755            }
10756        }
10757        #[automatically_derived]
10758        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10759            type Parameters<'a> = ();
10760            type Token<'a> = <Self::Parameters<
10761                'a,
10762            > as alloy_sol_types::SolType>::Token<'a>;
10763            type Return = alloy::sol_types::private::primitives::aliases::U256;
10764            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10765            type ReturnToken<'a> = <Self::ReturnTuple<
10766                'a,
10767            > as alloy_sol_types::SolType>::Token<'a>;
10768            const SIGNATURE: &'static str = "getStateHistoryCount()";
10769            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10770            #[inline]
10771            fn new<'a>(
10772                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10773            ) -> Self {
10774                tuple.into()
10775            }
10776            #[inline]
10777            fn tokenize(&self) -> Self::Token<'_> {
10778                ()
10779            }
10780            #[inline]
10781            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10782                (
10783                    <alloy::sol_types::sol_data::Uint<
10784                        256,
10785                    > as alloy_sol_types::SolType>::tokenize(ret),
10786                )
10787            }
10788            #[inline]
10789            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10790                <Self::ReturnTuple<
10791                    '_,
10792                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10793                    .map(|r| {
10794                        let r: getStateHistoryCountReturn = r.into();
10795                        r._0
10796                    })
10797            }
10798            #[inline]
10799            fn abi_decode_returns_validate(
10800                data: &[u8],
10801            ) -> alloy_sol_types::Result<Self::Return> {
10802                <Self::ReturnTuple<
10803                    '_,
10804                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10805                    .map(|r| {
10806                        let r: getStateHistoryCountReturn = r.into();
10807                        r._0
10808                    })
10809            }
10810        }
10811    };
10812    #[derive(serde::Serialize, serde::Deserialize)]
10813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10814    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10815```solidity
10816function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10817```*/
10818    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10819    #[derive(Clone)]
10820    pub struct getVersionCall;
10821    #[derive(serde::Serialize, serde::Deserialize)]
10822    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10823    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10825    #[derive(Clone)]
10826    pub struct getVersionReturn {
10827        #[allow(missing_docs)]
10828        pub majorVersion: u8,
10829        #[allow(missing_docs)]
10830        pub minorVersion: u8,
10831        #[allow(missing_docs)]
10832        pub patchVersion: u8,
10833    }
10834    #[allow(
10835        non_camel_case_types,
10836        non_snake_case,
10837        clippy::pub_underscore_fields,
10838        clippy::style
10839    )]
10840    const _: () = {
10841        use alloy::sol_types as alloy_sol_types;
10842        {
10843            #[doc(hidden)]
10844            #[allow(dead_code)]
10845            type UnderlyingSolTuple<'a> = ();
10846            #[doc(hidden)]
10847            type UnderlyingRustTuple<'a> = ();
10848            #[cfg(test)]
10849            #[allow(dead_code, unreachable_patterns)]
10850            fn _type_assertion(
10851                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10852            ) {
10853                match _t {
10854                    alloy_sol_types::private::AssertTypeEq::<
10855                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10856                    >(_) => {}
10857                }
10858            }
10859            #[automatically_derived]
10860            #[doc(hidden)]
10861            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10862                fn from(value: getVersionCall) -> Self {
10863                    ()
10864                }
10865            }
10866            #[automatically_derived]
10867            #[doc(hidden)]
10868            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10869                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10870                    Self
10871                }
10872            }
10873        }
10874        {
10875            #[doc(hidden)]
10876            #[allow(dead_code)]
10877            type UnderlyingSolTuple<'a> = (
10878                alloy::sol_types::sol_data::Uint<8>,
10879                alloy::sol_types::sol_data::Uint<8>,
10880                alloy::sol_types::sol_data::Uint<8>,
10881            );
10882            #[doc(hidden)]
10883            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10884            #[cfg(test)]
10885            #[allow(dead_code, unreachable_patterns)]
10886            fn _type_assertion(
10887                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10888            ) {
10889                match _t {
10890                    alloy_sol_types::private::AssertTypeEq::<
10891                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10892                    >(_) => {}
10893                }
10894            }
10895            #[automatically_derived]
10896            #[doc(hidden)]
10897            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10898                fn from(value: getVersionReturn) -> Self {
10899                    (value.majorVersion, value.minorVersion, value.patchVersion)
10900                }
10901            }
10902            #[automatically_derived]
10903            #[doc(hidden)]
10904            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10905                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10906                    Self {
10907                        majorVersion: tuple.0,
10908                        minorVersion: tuple.1,
10909                        patchVersion: tuple.2,
10910                    }
10911                }
10912            }
10913        }
10914        impl getVersionReturn {
10915            fn _tokenize(
10916                &self,
10917            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10918                (
10919                    <alloy::sol_types::sol_data::Uint<
10920                        8,
10921                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10922                    <alloy::sol_types::sol_data::Uint<
10923                        8,
10924                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10925                    <alloy::sol_types::sol_data::Uint<
10926                        8,
10927                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10928                )
10929            }
10930        }
10931        #[automatically_derived]
10932        impl alloy_sol_types::SolCall for getVersionCall {
10933            type Parameters<'a> = ();
10934            type Token<'a> = <Self::Parameters<
10935                'a,
10936            > as alloy_sol_types::SolType>::Token<'a>;
10937            type Return = getVersionReturn;
10938            type ReturnTuple<'a> = (
10939                alloy::sol_types::sol_data::Uint<8>,
10940                alloy::sol_types::sol_data::Uint<8>,
10941                alloy::sol_types::sol_data::Uint<8>,
10942            );
10943            type ReturnToken<'a> = <Self::ReturnTuple<
10944                'a,
10945            > as alloy_sol_types::SolType>::Token<'a>;
10946            const SIGNATURE: &'static str = "getVersion()";
10947            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10948            #[inline]
10949            fn new<'a>(
10950                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10951            ) -> Self {
10952                tuple.into()
10953            }
10954            #[inline]
10955            fn tokenize(&self) -> Self::Token<'_> {
10956                ()
10957            }
10958            #[inline]
10959            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10960                getVersionReturn::_tokenize(ret)
10961            }
10962            #[inline]
10963            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10964                <Self::ReturnTuple<
10965                    '_,
10966                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10967                    .map(Into::into)
10968            }
10969            #[inline]
10970            fn abi_decode_returns_validate(
10971                data: &[u8],
10972            ) -> alloy_sol_types::Result<Self::Return> {
10973                <Self::ReturnTuple<
10974                    '_,
10975                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10976                    .map(Into::into)
10977            }
10978        }
10979    };
10980    #[derive(serde::Serialize, serde::Deserialize)]
10981    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10982    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10983```solidity
10984function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10985```*/
10986    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10987    #[derive(Clone)]
10988    pub struct initializeCall {
10989        #[allow(missing_docs)]
10990        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10991        #[allow(missing_docs)]
10992        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10993        #[allow(missing_docs)]
10994        pub _stateHistoryRetentionPeriod: u32,
10995        #[allow(missing_docs)]
10996        pub owner: alloy::sol_types::private::Address,
10997    }
10998    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10999    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11000    #[derive(Clone)]
11001    pub struct initializeReturn {}
11002    #[allow(
11003        non_camel_case_types,
11004        non_snake_case,
11005        clippy::pub_underscore_fields,
11006        clippy::style
11007    )]
11008    const _: () = {
11009        use alloy::sol_types as alloy_sol_types;
11010        {
11011            #[doc(hidden)]
11012            #[allow(dead_code)]
11013            type UnderlyingSolTuple<'a> = (
11014                LightClient::LightClientState,
11015                LightClient::StakeTableState,
11016                alloy::sol_types::sol_data::Uint<32>,
11017                alloy::sol_types::sol_data::Address,
11018            );
11019            #[doc(hidden)]
11020            type UnderlyingRustTuple<'a> = (
11021                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11022                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11023                u32,
11024                alloy::sol_types::private::Address,
11025            );
11026            #[cfg(test)]
11027            #[allow(dead_code, unreachable_patterns)]
11028            fn _type_assertion(
11029                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11030            ) {
11031                match _t {
11032                    alloy_sol_types::private::AssertTypeEq::<
11033                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11034                    >(_) => {}
11035                }
11036            }
11037            #[automatically_derived]
11038            #[doc(hidden)]
11039            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
11040                fn from(value: initializeCall) -> Self {
11041                    (
11042                        value._genesis,
11043                        value._genesisStakeTableState,
11044                        value._stateHistoryRetentionPeriod,
11045                        value.owner,
11046                    )
11047                }
11048            }
11049            #[automatically_derived]
11050            #[doc(hidden)]
11051            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
11052                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11053                    Self {
11054                        _genesis: tuple.0,
11055                        _genesisStakeTableState: tuple.1,
11056                        _stateHistoryRetentionPeriod: tuple.2,
11057                        owner: tuple.3,
11058                    }
11059                }
11060            }
11061        }
11062        {
11063            #[doc(hidden)]
11064            #[allow(dead_code)]
11065            type UnderlyingSolTuple<'a> = ();
11066            #[doc(hidden)]
11067            type UnderlyingRustTuple<'a> = ();
11068            #[cfg(test)]
11069            #[allow(dead_code, unreachable_patterns)]
11070            fn _type_assertion(
11071                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11072            ) {
11073                match _t {
11074                    alloy_sol_types::private::AssertTypeEq::<
11075                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11076                    >(_) => {}
11077                }
11078            }
11079            #[automatically_derived]
11080            #[doc(hidden)]
11081            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
11082                fn from(value: initializeReturn) -> Self {
11083                    ()
11084                }
11085            }
11086            #[automatically_derived]
11087            #[doc(hidden)]
11088            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
11089                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11090                    Self {}
11091                }
11092            }
11093        }
11094        impl initializeReturn {
11095            fn _tokenize(
11096                &self,
11097            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11098                ()
11099            }
11100        }
11101        #[automatically_derived]
11102        impl alloy_sol_types::SolCall for initializeCall {
11103            type Parameters<'a> = (
11104                LightClient::LightClientState,
11105                LightClient::StakeTableState,
11106                alloy::sol_types::sol_data::Uint<32>,
11107                alloy::sol_types::sol_data::Address,
11108            );
11109            type Token<'a> = <Self::Parameters<
11110                'a,
11111            > as alloy_sol_types::SolType>::Token<'a>;
11112            type Return = initializeReturn;
11113            type ReturnTuple<'a> = ();
11114            type ReturnToken<'a> = <Self::ReturnTuple<
11115                'a,
11116            > as alloy_sol_types::SolType>::Token<'a>;
11117            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
11118            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
11119            #[inline]
11120            fn new<'a>(
11121                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11122            ) -> Self {
11123                tuple.into()
11124            }
11125            #[inline]
11126            fn tokenize(&self) -> Self::Token<'_> {
11127                (
11128                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11129                        &self._genesis,
11130                    ),
11131                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11132                        &self._genesisStakeTableState,
11133                    ),
11134                    <alloy::sol_types::sol_data::Uint<
11135                        32,
11136                    > as alloy_sol_types::SolType>::tokenize(
11137                        &self._stateHistoryRetentionPeriod,
11138                    ),
11139                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11140                        &self.owner,
11141                    ),
11142                )
11143            }
11144            #[inline]
11145            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11146                initializeReturn::_tokenize(ret)
11147            }
11148            #[inline]
11149            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11150                <Self::ReturnTuple<
11151                    '_,
11152                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11153                    .map(Into::into)
11154            }
11155            #[inline]
11156            fn abi_decode_returns_validate(
11157                data: &[u8],
11158            ) -> alloy_sol_types::Result<Self::Return> {
11159                <Self::ReturnTuple<
11160                    '_,
11161                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11162                    .map(Into::into)
11163            }
11164        }
11165    };
11166    #[derive(serde::Serialize, serde::Deserialize)]
11167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11168    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
11169```solidity
11170function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
11171```*/
11172    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11173    #[derive(Clone)]
11174    pub struct initializeV2Call {
11175        #[allow(missing_docs)]
11176        pub _blocksPerEpoch: u64,
11177        #[allow(missing_docs)]
11178        pub _epochStartBlock: u64,
11179    }
11180    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
11181    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11182    #[derive(Clone)]
11183    pub struct initializeV2Return {}
11184    #[allow(
11185        non_camel_case_types,
11186        non_snake_case,
11187        clippy::pub_underscore_fields,
11188        clippy::style
11189    )]
11190    const _: () = {
11191        use alloy::sol_types as alloy_sol_types;
11192        {
11193            #[doc(hidden)]
11194            #[allow(dead_code)]
11195            type UnderlyingSolTuple<'a> = (
11196                alloy::sol_types::sol_data::Uint<64>,
11197                alloy::sol_types::sol_data::Uint<64>,
11198            );
11199            #[doc(hidden)]
11200            type UnderlyingRustTuple<'a> = (u64, u64);
11201            #[cfg(test)]
11202            #[allow(dead_code, unreachable_patterns)]
11203            fn _type_assertion(
11204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11205            ) {
11206                match _t {
11207                    alloy_sol_types::private::AssertTypeEq::<
11208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11209                    >(_) => {}
11210                }
11211            }
11212            #[automatically_derived]
11213            #[doc(hidden)]
11214            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
11215                fn from(value: initializeV2Call) -> Self {
11216                    (value._blocksPerEpoch, value._epochStartBlock)
11217                }
11218            }
11219            #[automatically_derived]
11220            #[doc(hidden)]
11221            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
11222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11223                    Self {
11224                        _blocksPerEpoch: tuple.0,
11225                        _epochStartBlock: tuple.1,
11226                    }
11227                }
11228            }
11229        }
11230        {
11231            #[doc(hidden)]
11232            #[allow(dead_code)]
11233            type UnderlyingSolTuple<'a> = ();
11234            #[doc(hidden)]
11235            type UnderlyingRustTuple<'a> = ();
11236            #[cfg(test)]
11237            #[allow(dead_code, unreachable_patterns)]
11238            fn _type_assertion(
11239                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11240            ) {
11241                match _t {
11242                    alloy_sol_types::private::AssertTypeEq::<
11243                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11244                    >(_) => {}
11245                }
11246            }
11247            #[automatically_derived]
11248            #[doc(hidden)]
11249            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
11250                fn from(value: initializeV2Return) -> Self {
11251                    ()
11252                }
11253            }
11254            #[automatically_derived]
11255            #[doc(hidden)]
11256            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
11257                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11258                    Self {}
11259                }
11260            }
11261        }
11262        impl initializeV2Return {
11263            fn _tokenize(
11264                &self,
11265            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11266                ()
11267            }
11268        }
11269        #[automatically_derived]
11270        impl alloy_sol_types::SolCall for initializeV2Call {
11271            type Parameters<'a> = (
11272                alloy::sol_types::sol_data::Uint<64>,
11273                alloy::sol_types::sol_data::Uint<64>,
11274            );
11275            type Token<'a> = <Self::Parameters<
11276                'a,
11277            > as alloy_sol_types::SolType>::Token<'a>;
11278            type Return = initializeV2Return;
11279            type ReturnTuple<'a> = ();
11280            type ReturnToken<'a> = <Self::ReturnTuple<
11281                'a,
11282            > as alloy_sol_types::SolType>::Token<'a>;
11283            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
11284            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
11285            #[inline]
11286            fn new<'a>(
11287                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11288            ) -> Self {
11289                tuple.into()
11290            }
11291            #[inline]
11292            fn tokenize(&self) -> Self::Token<'_> {
11293                (
11294                    <alloy::sol_types::sol_data::Uint<
11295                        64,
11296                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
11297                    <alloy::sol_types::sol_data::Uint<
11298                        64,
11299                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
11300                )
11301            }
11302            #[inline]
11303            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11304                initializeV2Return::_tokenize(ret)
11305            }
11306            #[inline]
11307            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11308                <Self::ReturnTuple<
11309                    '_,
11310                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11311                    .map(Into::into)
11312            }
11313            #[inline]
11314            fn abi_decode_returns_validate(
11315                data: &[u8],
11316            ) -> alloy_sol_types::Result<Self::Return> {
11317                <Self::ReturnTuple<
11318                    '_,
11319                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11320                    .map(Into::into)
11321            }
11322        }
11323    };
11324    #[derive(serde::Serialize, serde::Deserialize)]
11325    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11326    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
11327```solidity
11328function initializeV3() external;
11329```*/
11330    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11331    #[derive(Clone)]
11332    pub struct initializeV3Call;
11333    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
11334    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11335    #[derive(Clone)]
11336    pub struct initializeV3Return {}
11337    #[allow(
11338        non_camel_case_types,
11339        non_snake_case,
11340        clippy::pub_underscore_fields,
11341        clippy::style
11342    )]
11343    const _: () = {
11344        use alloy::sol_types as alloy_sol_types;
11345        {
11346            #[doc(hidden)]
11347            #[allow(dead_code)]
11348            type UnderlyingSolTuple<'a> = ();
11349            #[doc(hidden)]
11350            type UnderlyingRustTuple<'a> = ();
11351            #[cfg(test)]
11352            #[allow(dead_code, unreachable_patterns)]
11353            fn _type_assertion(
11354                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11355            ) {
11356                match _t {
11357                    alloy_sol_types::private::AssertTypeEq::<
11358                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11359                    >(_) => {}
11360                }
11361            }
11362            #[automatically_derived]
11363            #[doc(hidden)]
11364            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
11365                fn from(value: initializeV3Call) -> Self {
11366                    ()
11367                }
11368            }
11369            #[automatically_derived]
11370            #[doc(hidden)]
11371            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
11372                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11373                    Self
11374                }
11375            }
11376        }
11377        {
11378            #[doc(hidden)]
11379            #[allow(dead_code)]
11380            type UnderlyingSolTuple<'a> = ();
11381            #[doc(hidden)]
11382            type UnderlyingRustTuple<'a> = ();
11383            #[cfg(test)]
11384            #[allow(dead_code, unreachable_patterns)]
11385            fn _type_assertion(
11386                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11387            ) {
11388                match _t {
11389                    alloy_sol_types::private::AssertTypeEq::<
11390                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11391                    >(_) => {}
11392                }
11393            }
11394            #[automatically_derived]
11395            #[doc(hidden)]
11396            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
11397                fn from(value: initializeV3Return) -> Self {
11398                    ()
11399                }
11400            }
11401            #[automatically_derived]
11402            #[doc(hidden)]
11403            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
11404                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11405                    Self {}
11406                }
11407            }
11408        }
11409        impl initializeV3Return {
11410            fn _tokenize(
11411                &self,
11412            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11413                ()
11414            }
11415        }
11416        #[automatically_derived]
11417        impl alloy_sol_types::SolCall for initializeV3Call {
11418            type Parameters<'a> = ();
11419            type Token<'a> = <Self::Parameters<
11420                'a,
11421            > as alloy_sol_types::SolType>::Token<'a>;
11422            type Return = initializeV3Return;
11423            type ReturnTuple<'a> = ();
11424            type ReturnToken<'a> = <Self::ReturnTuple<
11425                'a,
11426            > as alloy_sol_types::SolType>::Token<'a>;
11427            const SIGNATURE: &'static str = "initializeV3()";
11428            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
11429            #[inline]
11430            fn new<'a>(
11431                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11432            ) -> Self {
11433                tuple.into()
11434            }
11435            #[inline]
11436            fn tokenize(&self) -> Self::Token<'_> {
11437                ()
11438            }
11439            #[inline]
11440            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11441                initializeV3Return::_tokenize(ret)
11442            }
11443            #[inline]
11444            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11445                <Self::ReturnTuple<
11446                    '_,
11447                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11448                    .map(Into::into)
11449            }
11450            #[inline]
11451            fn abi_decode_returns_validate(
11452                data: &[u8],
11453            ) -> alloy_sol_types::Result<Self::Return> {
11454                <Self::ReturnTuple<
11455                    '_,
11456                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11457                    .map(Into::into)
11458            }
11459        }
11460    };
11461    #[derive(serde::Serialize, serde::Deserialize)]
11462    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11463    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
11464```solidity
11465function isEpochRoot(uint64 blockHeight) external view returns (bool);
11466```*/
11467    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11468    #[derive(Clone)]
11469    pub struct isEpochRootCall {
11470        #[allow(missing_docs)]
11471        pub blockHeight: u64,
11472    }
11473    #[derive(serde::Serialize, serde::Deserialize)]
11474    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11475    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
11476    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11477    #[derive(Clone)]
11478    pub struct isEpochRootReturn {
11479        #[allow(missing_docs)]
11480        pub _0: bool,
11481    }
11482    #[allow(
11483        non_camel_case_types,
11484        non_snake_case,
11485        clippy::pub_underscore_fields,
11486        clippy::style
11487    )]
11488    const _: () = {
11489        use alloy::sol_types as alloy_sol_types;
11490        {
11491            #[doc(hidden)]
11492            #[allow(dead_code)]
11493            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11494            #[doc(hidden)]
11495            type UnderlyingRustTuple<'a> = (u64,);
11496            #[cfg(test)]
11497            #[allow(dead_code, unreachable_patterns)]
11498            fn _type_assertion(
11499                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11500            ) {
11501                match _t {
11502                    alloy_sol_types::private::AssertTypeEq::<
11503                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11504                    >(_) => {}
11505                }
11506            }
11507            #[automatically_derived]
11508            #[doc(hidden)]
11509            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
11510                fn from(value: isEpochRootCall) -> Self {
11511                    (value.blockHeight,)
11512                }
11513            }
11514            #[automatically_derived]
11515            #[doc(hidden)]
11516            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
11517                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11518                    Self { blockHeight: tuple.0 }
11519                }
11520            }
11521        }
11522        {
11523            #[doc(hidden)]
11524            #[allow(dead_code)]
11525            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11526            #[doc(hidden)]
11527            type UnderlyingRustTuple<'a> = (bool,);
11528            #[cfg(test)]
11529            #[allow(dead_code, unreachable_patterns)]
11530            fn _type_assertion(
11531                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11532            ) {
11533                match _t {
11534                    alloy_sol_types::private::AssertTypeEq::<
11535                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11536                    >(_) => {}
11537                }
11538            }
11539            #[automatically_derived]
11540            #[doc(hidden)]
11541            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
11542                fn from(value: isEpochRootReturn) -> Self {
11543                    (value._0,)
11544                }
11545            }
11546            #[automatically_derived]
11547            #[doc(hidden)]
11548            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
11549                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11550                    Self { _0: tuple.0 }
11551                }
11552            }
11553        }
11554        #[automatically_derived]
11555        impl alloy_sol_types::SolCall for isEpochRootCall {
11556            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11557            type Token<'a> = <Self::Parameters<
11558                'a,
11559            > as alloy_sol_types::SolType>::Token<'a>;
11560            type Return = bool;
11561            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11562            type ReturnToken<'a> = <Self::ReturnTuple<
11563                'a,
11564            > as alloy_sol_types::SolType>::Token<'a>;
11565            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
11566            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
11567            #[inline]
11568            fn new<'a>(
11569                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11570            ) -> Self {
11571                tuple.into()
11572            }
11573            #[inline]
11574            fn tokenize(&self) -> Self::Token<'_> {
11575                (
11576                    <alloy::sol_types::sol_data::Uint<
11577                        64,
11578                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11579                )
11580            }
11581            #[inline]
11582            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11583                (
11584                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11585                        ret,
11586                    ),
11587                )
11588            }
11589            #[inline]
11590            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11591                <Self::ReturnTuple<
11592                    '_,
11593                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11594                    .map(|r| {
11595                        let r: isEpochRootReturn = r.into();
11596                        r._0
11597                    })
11598            }
11599            #[inline]
11600            fn abi_decode_returns_validate(
11601                data: &[u8],
11602            ) -> alloy_sol_types::Result<Self::Return> {
11603                <Self::ReturnTuple<
11604                    '_,
11605                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11606                    .map(|r| {
11607                        let r: isEpochRootReturn = r.into();
11608                        r._0
11609                    })
11610            }
11611        }
11612    };
11613    #[derive(serde::Serialize, serde::Deserialize)]
11614    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11615    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
11616```solidity
11617function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
11618```*/
11619    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11620    #[derive(Clone)]
11621    pub struct isGtEpochRootCall {
11622        #[allow(missing_docs)]
11623        pub blockHeight: u64,
11624    }
11625    #[derive(serde::Serialize, serde::Deserialize)]
11626    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11627    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
11628    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11629    #[derive(Clone)]
11630    pub struct isGtEpochRootReturn {
11631        #[allow(missing_docs)]
11632        pub _0: bool,
11633    }
11634    #[allow(
11635        non_camel_case_types,
11636        non_snake_case,
11637        clippy::pub_underscore_fields,
11638        clippy::style
11639    )]
11640    const _: () = {
11641        use alloy::sol_types as alloy_sol_types;
11642        {
11643            #[doc(hidden)]
11644            #[allow(dead_code)]
11645            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11646            #[doc(hidden)]
11647            type UnderlyingRustTuple<'a> = (u64,);
11648            #[cfg(test)]
11649            #[allow(dead_code, unreachable_patterns)]
11650            fn _type_assertion(
11651                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11652            ) {
11653                match _t {
11654                    alloy_sol_types::private::AssertTypeEq::<
11655                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11656                    >(_) => {}
11657                }
11658            }
11659            #[automatically_derived]
11660            #[doc(hidden)]
11661            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
11662                fn from(value: isGtEpochRootCall) -> Self {
11663                    (value.blockHeight,)
11664                }
11665            }
11666            #[automatically_derived]
11667            #[doc(hidden)]
11668            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
11669                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11670                    Self { blockHeight: tuple.0 }
11671                }
11672            }
11673        }
11674        {
11675            #[doc(hidden)]
11676            #[allow(dead_code)]
11677            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11678            #[doc(hidden)]
11679            type UnderlyingRustTuple<'a> = (bool,);
11680            #[cfg(test)]
11681            #[allow(dead_code, unreachable_patterns)]
11682            fn _type_assertion(
11683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11684            ) {
11685                match _t {
11686                    alloy_sol_types::private::AssertTypeEq::<
11687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11688                    >(_) => {}
11689                }
11690            }
11691            #[automatically_derived]
11692            #[doc(hidden)]
11693            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
11694                fn from(value: isGtEpochRootReturn) -> Self {
11695                    (value._0,)
11696                }
11697            }
11698            #[automatically_derived]
11699            #[doc(hidden)]
11700            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
11701                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11702                    Self { _0: tuple.0 }
11703                }
11704            }
11705        }
11706        #[automatically_derived]
11707        impl alloy_sol_types::SolCall for isGtEpochRootCall {
11708            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11709            type Token<'a> = <Self::Parameters<
11710                'a,
11711            > as alloy_sol_types::SolType>::Token<'a>;
11712            type Return = bool;
11713            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11714            type ReturnToken<'a> = <Self::ReturnTuple<
11715                'a,
11716            > as alloy_sol_types::SolType>::Token<'a>;
11717            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11718            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11719            #[inline]
11720            fn new<'a>(
11721                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11722            ) -> Self {
11723                tuple.into()
11724            }
11725            #[inline]
11726            fn tokenize(&self) -> Self::Token<'_> {
11727                (
11728                    <alloy::sol_types::sol_data::Uint<
11729                        64,
11730                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11731                )
11732            }
11733            #[inline]
11734            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11735                (
11736                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11737                        ret,
11738                    ),
11739                )
11740            }
11741            #[inline]
11742            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11743                <Self::ReturnTuple<
11744                    '_,
11745                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11746                    .map(|r| {
11747                        let r: isGtEpochRootReturn = r.into();
11748                        r._0
11749                    })
11750            }
11751            #[inline]
11752            fn abi_decode_returns_validate(
11753                data: &[u8],
11754            ) -> alloy_sol_types::Result<Self::Return> {
11755                <Self::ReturnTuple<
11756                    '_,
11757                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11758                    .map(|r| {
11759                        let r: isGtEpochRootReturn = r.into();
11760                        r._0
11761                    })
11762            }
11763        }
11764    };
11765    #[derive(serde::Serialize, serde::Deserialize)]
11766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11767    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11768```solidity
11769function isPermissionedProverEnabled() external view returns (bool);
11770```*/
11771    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11772    #[derive(Clone)]
11773    pub struct isPermissionedProverEnabledCall;
11774    #[derive(serde::Serialize, serde::Deserialize)]
11775    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11776    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11777    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11778    #[derive(Clone)]
11779    pub struct isPermissionedProverEnabledReturn {
11780        #[allow(missing_docs)]
11781        pub _0: bool,
11782    }
11783    #[allow(
11784        non_camel_case_types,
11785        non_snake_case,
11786        clippy::pub_underscore_fields,
11787        clippy::style
11788    )]
11789    const _: () = {
11790        use alloy::sol_types as alloy_sol_types;
11791        {
11792            #[doc(hidden)]
11793            #[allow(dead_code)]
11794            type UnderlyingSolTuple<'a> = ();
11795            #[doc(hidden)]
11796            type UnderlyingRustTuple<'a> = ();
11797            #[cfg(test)]
11798            #[allow(dead_code, unreachable_patterns)]
11799            fn _type_assertion(
11800                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11801            ) {
11802                match _t {
11803                    alloy_sol_types::private::AssertTypeEq::<
11804                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11805                    >(_) => {}
11806                }
11807            }
11808            #[automatically_derived]
11809            #[doc(hidden)]
11810            impl ::core::convert::From<isPermissionedProverEnabledCall>
11811            for UnderlyingRustTuple<'_> {
11812                fn from(value: isPermissionedProverEnabledCall) -> Self {
11813                    ()
11814                }
11815            }
11816            #[automatically_derived]
11817            #[doc(hidden)]
11818            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11819            for isPermissionedProverEnabledCall {
11820                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11821                    Self
11822                }
11823            }
11824        }
11825        {
11826            #[doc(hidden)]
11827            #[allow(dead_code)]
11828            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11829            #[doc(hidden)]
11830            type UnderlyingRustTuple<'a> = (bool,);
11831            #[cfg(test)]
11832            #[allow(dead_code, unreachable_patterns)]
11833            fn _type_assertion(
11834                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11835            ) {
11836                match _t {
11837                    alloy_sol_types::private::AssertTypeEq::<
11838                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11839                    >(_) => {}
11840                }
11841            }
11842            #[automatically_derived]
11843            #[doc(hidden)]
11844            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11845            for UnderlyingRustTuple<'_> {
11846                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11847                    (value._0,)
11848                }
11849            }
11850            #[automatically_derived]
11851            #[doc(hidden)]
11852            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11853            for isPermissionedProverEnabledReturn {
11854                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11855                    Self { _0: tuple.0 }
11856                }
11857            }
11858        }
11859        #[automatically_derived]
11860        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11861            type Parameters<'a> = ();
11862            type Token<'a> = <Self::Parameters<
11863                'a,
11864            > as alloy_sol_types::SolType>::Token<'a>;
11865            type Return = bool;
11866            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11867            type ReturnToken<'a> = <Self::ReturnTuple<
11868                'a,
11869            > as alloy_sol_types::SolType>::Token<'a>;
11870            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11871            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11872            #[inline]
11873            fn new<'a>(
11874                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11875            ) -> Self {
11876                tuple.into()
11877            }
11878            #[inline]
11879            fn tokenize(&self) -> Self::Token<'_> {
11880                ()
11881            }
11882            #[inline]
11883            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11884                (
11885                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11886                        ret,
11887                    ),
11888                )
11889            }
11890            #[inline]
11891            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11892                <Self::ReturnTuple<
11893                    '_,
11894                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11895                    .map(|r| {
11896                        let r: isPermissionedProverEnabledReturn = r.into();
11897                        r._0
11898                    })
11899            }
11900            #[inline]
11901            fn abi_decode_returns_validate(
11902                data: &[u8],
11903            ) -> alloy_sol_types::Result<Self::Return> {
11904                <Self::ReturnTuple<
11905                    '_,
11906                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11907                    .map(|r| {
11908                        let r: isPermissionedProverEnabledReturn = r.into();
11909                        r._0
11910                    })
11911            }
11912        }
11913    };
11914    #[derive(serde::Serialize, serde::Deserialize)]
11915    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11916    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11917```solidity
11918function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
11919```*/
11920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11921    #[derive(Clone)]
11922    pub struct lagOverEscapeHatchThresholdCall {
11923        #[allow(missing_docs)]
11924        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11925        #[allow(missing_docs)]
11926        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
11927    }
11928    #[derive(serde::Serialize, serde::Deserialize)]
11929    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11930    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11932    #[derive(Clone)]
11933    pub struct lagOverEscapeHatchThresholdReturn {
11934        #[allow(missing_docs)]
11935        pub _0: bool,
11936    }
11937    #[allow(
11938        non_camel_case_types,
11939        non_snake_case,
11940        clippy::pub_underscore_fields,
11941        clippy::style
11942    )]
11943    const _: () = {
11944        use alloy::sol_types as alloy_sol_types;
11945        {
11946            #[doc(hidden)]
11947            #[allow(dead_code)]
11948            type UnderlyingSolTuple<'a> = (
11949                alloy::sol_types::sol_data::Uint<256>,
11950                alloy::sol_types::sol_data::Uint<256>,
11951            );
11952            #[doc(hidden)]
11953            type UnderlyingRustTuple<'a> = (
11954                alloy::sol_types::private::primitives::aliases::U256,
11955                alloy::sol_types::private::primitives::aliases::U256,
11956            );
11957            #[cfg(test)]
11958            #[allow(dead_code, unreachable_patterns)]
11959            fn _type_assertion(
11960                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11961            ) {
11962                match _t {
11963                    alloy_sol_types::private::AssertTypeEq::<
11964                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11965                    >(_) => {}
11966                }
11967            }
11968            #[automatically_derived]
11969            #[doc(hidden)]
11970            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11971            for UnderlyingRustTuple<'_> {
11972                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11973                    (value.blockNumber, value.threshold)
11974                }
11975            }
11976            #[automatically_derived]
11977            #[doc(hidden)]
11978            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11979            for lagOverEscapeHatchThresholdCall {
11980                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11981                    Self {
11982                        blockNumber: tuple.0,
11983                        threshold: tuple.1,
11984                    }
11985                }
11986            }
11987        }
11988        {
11989            #[doc(hidden)]
11990            #[allow(dead_code)]
11991            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11992            #[doc(hidden)]
11993            type UnderlyingRustTuple<'a> = (bool,);
11994            #[cfg(test)]
11995            #[allow(dead_code, unreachable_patterns)]
11996            fn _type_assertion(
11997                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11998            ) {
11999                match _t {
12000                    alloy_sol_types::private::AssertTypeEq::<
12001                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12002                    >(_) => {}
12003                }
12004            }
12005            #[automatically_derived]
12006            #[doc(hidden)]
12007            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
12008            for UnderlyingRustTuple<'_> {
12009                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
12010                    (value._0,)
12011                }
12012            }
12013            #[automatically_derived]
12014            #[doc(hidden)]
12015            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12016            for lagOverEscapeHatchThresholdReturn {
12017                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12018                    Self { _0: tuple.0 }
12019                }
12020            }
12021        }
12022        #[automatically_derived]
12023        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
12024            type Parameters<'a> = (
12025                alloy::sol_types::sol_data::Uint<256>,
12026                alloy::sol_types::sol_data::Uint<256>,
12027            );
12028            type Token<'a> = <Self::Parameters<
12029                'a,
12030            > as alloy_sol_types::SolType>::Token<'a>;
12031            type Return = bool;
12032            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12033            type ReturnToken<'a> = <Self::ReturnTuple<
12034                'a,
12035            > as alloy_sol_types::SolType>::Token<'a>;
12036            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
12037            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
12038            #[inline]
12039            fn new<'a>(
12040                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12041            ) -> Self {
12042                tuple.into()
12043            }
12044            #[inline]
12045            fn tokenize(&self) -> Self::Token<'_> {
12046                (
12047                    <alloy::sol_types::sol_data::Uint<
12048                        256,
12049                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
12050                    <alloy::sol_types::sol_data::Uint<
12051                        256,
12052                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
12053                )
12054            }
12055            #[inline]
12056            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12057                (
12058                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
12059                        ret,
12060                    ),
12061                )
12062            }
12063            #[inline]
12064            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12065                <Self::ReturnTuple<
12066                    '_,
12067                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12068                    .map(|r| {
12069                        let r: lagOverEscapeHatchThresholdReturn = r.into();
12070                        r._0
12071                    })
12072            }
12073            #[inline]
12074            fn abi_decode_returns_validate(
12075                data: &[u8],
12076            ) -> alloy_sol_types::Result<Self::Return> {
12077                <Self::ReturnTuple<
12078                    '_,
12079                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12080                    .map(|r| {
12081                        let r: lagOverEscapeHatchThresholdReturn = r.into();
12082                        r._0
12083                    })
12084            }
12085        }
12086    };
12087    #[derive(serde::Serialize, serde::Deserialize)]
12088    #[derive()]
12089    /**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`.
12090```solidity
12091function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
12092```*/
12093    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12094    #[derive(Clone)]
12095    pub struct newFinalizedState_0Call {
12096        #[allow(missing_docs)]
12097        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12098        #[allow(missing_docs)]
12099        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12100    }
12101    ///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.
12102    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12103    #[derive(Clone)]
12104    pub struct newFinalizedState_0Return {}
12105    #[allow(
12106        non_camel_case_types,
12107        non_snake_case,
12108        clippy::pub_underscore_fields,
12109        clippy::style
12110    )]
12111    const _: () = {
12112        use alloy::sol_types as alloy_sol_types;
12113        {
12114            #[doc(hidden)]
12115            #[allow(dead_code)]
12116            type UnderlyingSolTuple<'a> = (
12117                LightClient::LightClientState,
12118                IPlonkVerifier::PlonkProof,
12119            );
12120            #[doc(hidden)]
12121            type UnderlyingRustTuple<'a> = (
12122                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12123                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12124            );
12125            #[cfg(test)]
12126            #[allow(dead_code, unreachable_patterns)]
12127            fn _type_assertion(
12128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12129            ) {
12130                match _t {
12131                    alloy_sol_types::private::AssertTypeEq::<
12132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12133                    >(_) => {}
12134                }
12135            }
12136            #[automatically_derived]
12137            #[doc(hidden)]
12138            impl ::core::convert::From<newFinalizedState_0Call>
12139            for UnderlyingRustTuple<'_> {
12140                fn from(value: newFinalizedState_0Call) -> Self {
12141                    (value._0, value._1)
12142                }
12143            }
12144            #[automatically_derived]
12145            #[doc(hidden)]
12146            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12147            for newFinalizedState_0Call {
12148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12149                    Self { _0: tuple.0, _1: tuple.1 }
12150                }
12151            }
12152        }
12153        {
12154            #[doc(hidden)]
12155            #[allow(dead_code)]
12156            type UnderlyingSolTuple<'a> = ();
12157            #[doc(hidden)]
12158            type UnderlyingRustTuple<'a> = ();
12159            #[cfg(test)]
12160            #[allow(dead_code, unreachable_patterns)]
12161            fn _type_assertion(
12162                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12163            ) {
12164                match _t {
12165                    alloy_sol_types::private::AssertTypeEq::<
12166                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12167                    >(_) => {}
12168                }
12169            }
12170            #[automatically_derived]
12171            #[doc(hidden)]
12172            impl ::core::convert::From<newFinalizedState_0Return>
12173            for UnderlyingRustTuple<'_> {
12174                fn from(value: newFinalizedState_0Return) -> Self {
12175                    ()
12176                }
12177            }
12178            #[automatically_derived]
12179            #[doc(hidden)]
12180            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12181            for newFinalizedState_0Return {
12182                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12183                    Self {}
12184                }
12185            }
12186        }
12187        impl newFinalizedState_0Return {
12188            fn _tokenize(
12189                &self,
12190            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12191                ()
12192            }
12193        }
12194        #[automatically_derived]
12195        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
12196            type Parameters<'a> = (
12197                LightClient::LightClientState,
12198                IPlonkVerifier::PlonkProof,
12199            );
12200            type Token<'a> = <Self::Parameters<
12201                'a,
12202            > as alloy_sol_types::SolType>::Token<'a>;
12203            type Return = newFinalizedState_0Return;
12204            type ReturnTuple<'a> = ();
12205            type ReturnToken<'a> = <Self::ReturnTuple<
12206                'a,
12207            > as alloy_sol_types::SolType>::Token<'a>;
12208            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))";
12209            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
12210            #[inline]
12211            fn new<'a>(
12212                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12213            ) -> Self {
12214                tuple.into()
12215            }
12216            #[inline]
12217            fn tokenize(&self) -> Self::Token<'_> {
12218                (
12219                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12220                        &self._0,
12221                    ),
12222                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12223                        &self._1,
12224                    ),
12225                )
12226            }
12227            #[inline]
12228            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12229                newFinalizedState_0Return::_tokenize(ret)
12230            }
12231            #[inline]
12232            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12233                <Self::ReturnTuple<
12234                    '_,
12235                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12236                    .map(Into::into)
12237            }
12238            #[inline]
12239            fn abi_decode_returns_validate(
12240                data: &[u8],
12241            ) -> alloy_sol_types::Result<Self::Return> {
12242                <Self::ReturnTuple<
12243                    '_,
12244                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12245                    .map(Into::into)
12246            }
12247        }
12248    };
12249    #[derive(serde::Serialize, serde::Deserialize)]
12250    #[derive()]
12251    /**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`.
12252```solidity
12253function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
12254```*/
12255    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12256    #[derive(Clone)]
12257    pub struct newFinalizedState_1Call {
12258        #[allow(missing_docs)]
12259        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12260        #[allow(missing_docs)]
12261        pub _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12262        #[allow(missing_docs)]
12263        pub _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12264    }
12265    ///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.
12266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12267    #[derive(Clone)]
12268    pub struct newFinalizedState_1Return {}
12269    #[allow(
12270        non_camel_case_types,
12271        non_snake_case,
12272        clippy::pub_underscore_fields,
12273        clippy::style
12274    )]
12275    const _: () = {
12276        use alloy::sol_types as alloy_sol_types;
12277        {
12278            #[doc(hidden)]
12279            #[allow(dead_code)]
12280            type UnderlyingSolTuple<'a> = (
12281                LightClient::LightClientState,
12282                LightClient::StakeTableState,
12283                IPlonkVerifier::PlonkProof,
12284            );
12285            #[doc(hidden)]
12286            type UnderlyingRustTuple<'a> = (
12287                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12288                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12289                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12290            );
12291            #[cfg(test)]
12292            #[allow(dead_code, unreachable_patterns)]
12293            fn _type_assertion(
12294                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12295            ) {
12296                match _t {
12297                    alloy_sol_types::private::AssertTypeEq::<
12298                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12299                    >(_) => {}
12300                }
12301            }
12302            #[automatically_derived]
12303            #[doc(hidden)]
12304            impl ::core::convert::From<newFinalizedState_1Call>
12305            for UnderlyingRustTuple<'_> {
12306                fn from(value: newFinalizedState_1Call) -> Self {
12307                    (value._0, value._1, value._2)
12308                }
12309            }
12310            #[automatically_derived]
12311            #[doc(hidden)]
12312            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12313            for newFinalizedState_1Call {
12314                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12315                    Self {
12316                        _0: tuple.0,
12317                        _1: tuple.1,
12318                        _2: tuple.2,
12319                    }
12320                }
12321            }
12322        }
12323        {
12324            #[doc(hidden)]
12325            #[allow(dead_code)]
12326            type UnderlyingSolTuple<'a> = ();
12327            #[doc(hidden)]
12328            type UnderlyingRustTuple<'a> = ();
12329            #[cfg(test)]
12330            #[allow(dead_code, unreachable_patterns)]
12331            fn _type_assertion(
12332                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12333            ) {
12334                match _t {
12335                    alloy_sol_types::private::AssertTypeEq::<
12336                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12337                    >(_) => {}
12338                }
12339            }
12340            #[automatically_derived]
12341            #[doc(hidden)]
12342            impl ::core::convert::From<newFinalizedState_1Return>
12343            for UnderlyingRustTuple<'_> {
12344                fn from(value: newFinalizedState_1Return) -> Self {
12345                    ()
12346                }
12347            }
12348            #[automatically_derived]
12349            #[doc(hidden)]
12350            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12351            for newFinalizedState_1Return {
12352                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12353                    Self {}
12354                }
12355            }
12356        }
12357        impl newFinalizedState_1Return {
12358            fn _tokenize(
12359                &self,
12360            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12361                ()
12362            }
12363        }
12364        #[automatically_derived]
12365        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
12366            type Parameters<'a> = (
12367                LightClient::LightClientState,
12368                LightClient::StakeTableState,
12369                IPlonkVerifier::PlonkProof,
12370            );
12371            type Token<'a> = <Self::Parameters<
12372                'a,
12373            > as alloy_sol_types::SolType>::Token<'a>;
12374            type Return = newFinalizedState_1Return;
12375            type ReturnTuple<'a> = ();
12376            type ReturnToken<'a> = <Self::ReturnTuple<
12377                'a,
12378            > as alloy_sol_types::SolType>::Token<'a>;
12379            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))";
12380            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
12381            #[inline]
12382            fn new<'a>(
12383                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12384            ) -> Self {
12385                tuple.into()
12386            }
12387            #[inline]
12388            fn tokenize(&self) -> Self::Token<'_> {
12389                (
12390                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12391                        &self._0,
12392                    ),
12393                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12394                        &self._1,
12395                    ),
12396                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12397                        &self._2,
12398                    ),
12399                )
12400            }
12401            #[inline]
12402            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12403                newFinalizedState_1Return::_tokenize(ret)
12404            }
12405            #[inline]
12406            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12407                <Self::ReturnTuple<
12408                    '_,
12409                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12410                    .map(Into::into)
12411            }
12412            #[inline]
12413            fn abi_decode_returns_validate(
12414                data: &[u8],
12415            ) -> alloy_sol_types::Result<Self::Return> {
12416                <Self::ReturnTuple<
12417                    '_,
12418                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12419                    .map(Into::into)
12420            }
12421        }
12422    };
12423    #[derive(serde::Serialize, serde::Deserialize)]
12424    #[derive()]
12425    /**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,uint256))` and selector `0xaabd5db3`.
12426```solidity
12427function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
12428```*/
12429    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12430    #[derive(Clone)]
12431    pub struct newFinalizedState_2Call {
12432        #[allow(missing_docs)]
12433        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12434        #[allow(missing_docs)]
12435        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12436        #[allow(missing_docs)]
12437        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
12438        #[allow(missing_docs)]
12439        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12440    }
12441    ///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,uint256))`](newFinalizedState_2Call) function.
12442    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12443    #[derive(Clone)]
12444    pub struct newFinalizedState_2Return {}
12445    #[allow(
12446        non_camel_case_types,
12447        non_snake_case,
12448        clippy::pub_underscore_fields,
12449        clippy::style
12450    )]
12451    const _: () = {
12452        use alloy::sol_types as alloy_sol_types;
12453        {
12454            #[doc(hidden)]
12455            #[allow(dead_code)]
12456            type UnderlyingSolTuple<'a> = (
12457                LightClient::LightClientState,
12458                LightClient::StakeTableState,
12459                alloy::sol_types::sol_data::Uint<256>,
12460                IPlonkVerifier::PlonkProof,
12461            );
12462            #[doc(hidden)]
12463            type UnderlyingRustTuple<'a> = (
12464                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12465                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12466                alloy::sol_types::private::primitives::aliases::U256,
12467                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12468            );
12469            #[cfg(test)]
12470            #[allow(dead_code, unreachable_patterns)]
12471            fn _type_assertion(
12472                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12473            ) {
12474                match _t {
12475                    alloy_sol_types::private::AssertTypeEq::<
12476                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12477                    >(_) => {}
12478                }
12479            }
12480            #[automatically_derived]
12481            #[doc(hidden)]
12482            impl ::core::convert::From<newFinalizedState_2Call>
12483            for UnderlyingRustTuple<'_> {
12484                fn from(value: newFinalizedState_2Call) -> Self {
12485                    (
12486                        value.newState,
12487                        value.nextStakeTable,
12488                        value.newAuthRoot,
12489                        value.proof,
12490                    )
12491                }
12492            }
12493            #[automatically_derived]
12494            #[doc(hidden)]
12495            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12496            for newFinalizedState_2Call {
12497                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12498                    Self {
12499                        newState: tuple.0,
12500                        nextStakeTable: tuple.1,
12501                        newAuthRoot: tuple.2,
12502                        proof: tuple.3,
12503                    }
12504                }
12505            }
12506        }
12507        {
12508            #[doc(hidden)]
12509            #[allow(dead_code)]
12510            type UnderlyingSolTuple<'a> = ();
12511            #[doc(hidden)]
12512            type UnderlyingRustTuple<'a> = ();
12513            #[cfg(test)]
12514            #[allow(dead_code, unreachable_patterns)]
12515            fn _type_assertion(
12516                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12517            ) {
12518                match _t {
12519                    alloy_sol_types::private::AssertTypeEq::<
12520                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12521                    >(_) => {}
12522                }
12523            }
12524            #[automatically_derived]
12525            #[doc(hidden)]
12526            impl ::core::convert::From<newFinalizedState_2Return>
12527            for UnderlyingRustTuple<'_> {
12528                fn from(value: newFinalizedState_2Return) -> Self {
12529                    ()
12530                }
12531            }
12532            #[automatically_derived]
12533            #[doc(hidden)]
12534            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12535            for newFinalizedState_2Return {
12536                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12537                    Self {}
12538                }
12539            }
12540        }
12541        impl newFinalizedState_2Return {
12542            fn _tokenize(
12543                &self,
12544            ) -> <newFinalizedState_2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12545                ()
12546            }
12547        }
12548        #[automatically_derived]
12549        impl alloy_sol_types::SolCall for newFinalizedState_2Call {
12550            type Parameters<'a> = (
12551                LightClient::LightClientState,
12552                LightClient::StakeTableState,
12553                alloy::sol_types::sol_data::Uint<256>,
12554                IPlonkVerifier::PlonkProof,
12555            );
12556            type Token<'a> = <Self::Parameters<
12557                'a,
12558            > as alloy_sol_types::SolType>::Token<'a>;
12559            type Return = newFinalizedState_2Return;
12560            type ReturnTuple<'a> = ();
12561            type ReturnToken<'a> = <Self::ReturnTuple<
12562                'a,
12563            > as alloy_sol_types::SolType>::Token<'a>;
12564            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,uint256))";
12565            const SELECTOR: [u8; 4] = [170u8, 189u8, 93u8, 179u8];
12566            #[inline]
12567            fn new<'a>(
12568                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12569            ) -> Self {
12570                tuple.into()
12571            }
12572            #[inline]
12573            fn tokenize(&self) -> Self::Token<'_> {
12574                (
12575                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12576                        &self.newState,
12577                    ),
12578                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12579                        &self.nextStakeTable,
12580                    ),
12581                    <alloy::sol_types::sol_data::Uint<
12582                        256,
12583                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
12584                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12585                        &self.proof,
12586                    ),
12587                )
12588            }
12589            #[inline]
12590            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12591                newFinalizedState_2Return::_tokenize(ret)
12592            }
12593            #[inline]
12594            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12595                <Self::ReturnTuple<
12596                    '_,
12597                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12598                    .map(Into::into)
12599            }
12600            #[inline]
12601            fn abi_decode_returns_validate(
12602                data: &[u8],
12603            ) -> alloy_sol_types::Result<Self::Return> {
12604                <Self::ReturnTuple<
12605                    '_,
12606                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12607                    .map(Into::into)
12608            }
12609        }
12610    };
12611    #[derive(serde::Serialize, serde::Deserialize)]
12612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12613    /**Function with signature `owner()` and selector `0x8da5cb5b`.
12614```solidity
12615function owner() external view returns (address);
12616```*/
12617    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12618    #[derive(Clone)]
12619    pub struct ownerCall;
12620    #[derive(serde::Serialize, serde::Deserialize)]
12621    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12622    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
12623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12624    #[derive(Clone)]
12625    pub struct ownerReturn {
12626        #[allow(missing_docs)]
12627        pub _0: alloy::sol_types::private::Address,
12628    }
12629    #[allow(
12630        non_camel_case_types,
12631        non_snake_case,
12632        clippy::pub_underscore_fields,
12633        clippy::style
12634    )]
12635    const _: () = {
12636        use alloy::sol_types as alloy_sol_types;
12637        {
12638            #[doc(hidden)]
12639            #[allow(dead_code)]
12640            type UnderlyingSolTuple<'a> = ();
12641            #[doc(hidden)]
12642            type UnderlyingRustTuple<'a> = ();
12643            #[cfg(test)]
12644            #[allow(dead_code, unreachable_patterns)]
12645            fn _type_assertion(
12646                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12647            ) {
12648                match _t {
12649                    alloy_sol_types::private::AssertTypeEq::<
12650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12651                    >(_) => {}
12652                }
12653            }
12654            #[automatically_derived]
12655            #[doc(hidden)]
12656            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
12657                fn from(value: ownerCall) -> Self {
12658                    ()
12659                }
12660            }
12661            #[automatically_derived]
12662            #[doc(hidden)]
12663            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
12664                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12665                    Self
12666                }
12667            }
12668        }
12669        {
12670            #[doc(hidden)]
12671            #[allow(dead_code)]
12672            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12673            #[doc(hidden)]
12674            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12675            #[cfg(test)]
12676            #[allow(dead_code, unreachable_patterns)]
12677            fn _type_assertion(
12678                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12679            ) {
12680                match _t {
12681                    alloy_sol_types::private::AssertTypeEq::<
12682                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12683                    >(_) => {}
12684                }
12685            }
12686            #[automatically_derived]
12687            #[doc(hidden)]
12688            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
12689                fn from(value: ownerReturn) -> Self {
12690                    (value._0,)
12691                }
12692            }
12693            #[automatically_derived]
12694            #[doc(hidden)]
12695            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
12696                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12697                    Self { _0: tuple.0 }
12698                }
12699            }
12700        }
12701        #[automatically_derived]
12702        impl alloy_sol_types::SolCall for ownerCall {
12703            type Parameters<'a> = ();
12704            type Token<'a> = <Self::Parameters<
12705                'a,
12706            > as alloy_sol_types::SolType>::Token<'a>;
12707            type Return = alloy::sol_types::private::Address;
12708            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12709            type ReturnToken<'a> = <Self::ReturnTuple<
12710                'a,
12711            > as alloy_sol_types::SolType>::Token<'a>;
12712            const SIGNATURE: &'static str = "owner()";
12713            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
12714            #[inline]
12715            fn new<'a>(
12716                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12717            ) -> Self {
12718                tuple.into()
12719            }
12720            #[inline]
12721            fn tokenize(&self) -> Self::Token<'_> {
12722                ()
12723            }
12724            #[inline]
12725            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12726                (
12727                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12728                        ret,
12729                    ),
12730                )
12731            }
12732            #[inline]
12733            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12734                <Self::ReturnTuple<
12735                    '_,
12736                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12737                    .map(|r| {
12738                        let r: ownerReturn = r.into();
12739                        r._0
12740                    })
12741            }
12742            #[inline]
12743            fn abi_decode_returns_validate(
12744                data: &[u8],
12745            ) -> alloy_sol_types::Result<Self::Return> {
12746                <Self::ReturnTuple<
12747                    '_,
12748                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12749                    .map(|r| {
12750                        let r: ownerReturn = r.into();
12751                        r._0
12752                    })
12753            }
12754        }
12755    };
12756    #[derive(serde::Serialize, serde::Deserialize)]
12757    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12758    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
12759```solidity
12760function permissionedProver() external view returns (address);
12761```*/
12762    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12763    #[derive(Clone)]
12764    pub struct permissionedProverCall;
12765    #[derive(serde::Serialize, serde::Deserialize)]
12766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12767    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
12768    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12769    #[derive(Clone)]
12770    pub struct permissionedProverReturn {
12771        #[allow(missing_docs)]
12772        pub _0: alloy::sol_types::private::Address,
12773    }
12774    #[allow(
12775        non_camel_case_types,
12776        non_snake_case,
12777        clippy::pub_underscore_fields,
12778        clippy::style
12779    )]
12780    const _: () = {
12781        use alloy::sol_types as alloy_sol_types;
12782        {
12783            #[doc(hidden)]
12784            #[allow(dead_code)]
12785            type UnderlyingSolTuple<'a> = ();
12786            #[doc(hidden)]
12787            type UnderlyingRustTuple<'a> = ();
12788            #[cfg(test)]
12789            #[allow(dead_code, unreachable_patterns)]
12790            fn _type_assertion(
12791                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12792            ) {
12793                match _t {
12794                    alloy_sol_types::private::AssertTypeEq::<
12795                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12796                    >(_) => {}
12797                }
12798            }
12799            #[automatically_derived]
12800            #[doc(hidden)]
12801            impl ::core::convert::From<permissionedProverCall>
12802            for UnderlyingRustTuple<'_> {
12803                fn from(value: permissionedProverCall) -> Self {
12804                    ()
12805                }
12806            }
12807            #[automatically_derived]
12808            #[doc(hidden)]
12809            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12810            for permissionedProverCall {
12811                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12812                    Self
12813                }
12814            }
12815        }
12816        {
12817            #[doc(hidden)]
12818            #[allow(dead_code)]
12819            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12820            #[doc(hidden)]
12821            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12822            #[cfg(test)]
12823            #[allow(dead_code, unreachable_patterns)]
12824            fn _type_assertion(
12825                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12826            ) {
12827                match _t {
12828                    alloy_sol_types::private::AssertTypeEq::<
12829                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12830                    >(_) => {}
12831                }
12832            }
12833            #[automatically_derived]
12834            #[doc(hidden)]
12835            impl ::core::convert::From<permissionedProverReturn>
12836            for UnderlyingRustTuple<'_> {
12837                fn from(value: permissionedProverReturn) -> Self {
12838                    (value._0,)
12839                }
12840            }
12841            #[automatically_derived]
12842            #[doc(hidden)]
12843            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12844            for permissionedProverReturn {
12845                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12846                    Self { _0: tuple.0 }
12847                }
12848            }
12849        }
12850        #[automatically_derived]
12851        impl alloy_sol_types::SolCall for permissionedProverCall {
12852            type Parameters<'a> = ();
12853            type Token<'a> = <Self::Parameters<
12854                'a,
12855            > as alloy_sol_types::SolType>::Token<'a>;
12856            type Return = alloy::sol_types::private::Address;
12857            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12858            type ReturnToken<'a> = <Self::ReturnTuple<
12859                'a,
12860            > as alloy_sol_types::SolType>::Token<'a>;
12861            const SIGNATURE: &'static str = "permissionedProver()";
12862            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
12863            #[inline]
12864            fn new<'a>(
12865                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12866            ) -> Self {
12867                tuple.into()
12868            }
12869            #[inline]
12870            fn tokenize(&self) -> Self::Token<'_> {
12871                ()
12872            }
12873            #[inline]
12874            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12875                (
12876                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12877                        ret,
12878                    ),
12879                )
12880            }
12881            #[inline]
12882            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12883                <Self::ReturnTuple<
12884                    '_,
12885                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12886                    .map(|r| {
12887                        let r: permissionedProverReturn = r.into();
12888                        r._0
12889                    })
12890            }
12891            #[inline]
12892            fn abi_decode_returns_validate(
12893                data: &[u8],
12894            ) -> alloy_sol_types::Result<Self::Return> {
12895                <Self::ReturnTuple<
12896                    '_,
12897                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12898                    .map(|r| {
12899                        let r: permissionedProverReturn = r.into();
12900                        r._0
12901                    })
12902            }
12903        }
12904    };
12905    #[derive(serde::Serialize, serde::Deserialize)]
12906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12907    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
12908```solidity
12909function proxiableUUID() external view returns (bytes32);
12910```*/
12911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12912    #[derive(Clone)]
12913    pub struct proxiableUUIDCall;
12914    #[derive(serde::Serialize, serde::Deserialize)]
12915    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12916    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
12917    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12918    #[derive(Clone)]
12919    pub struct proxiableUUIDReturn {
12920        #[allow(missing_docs)]
12921        pub _0: alloy::sol_types::private::FixedBytes<32>,
12922    }
12923    #[allow(
12924        non_camel_case_types,
12925        non_snake_case,
12926        clippy::pub_underscore_fields,
12927        clippy::style
12928    )]
12929    const _: () = {
12930        use alloy::sol_types as alloy_sol_types;
12931        {
12932            #[doc(hidden)]
12933            #[allow(dead_code)]
12934            type UnderlyingSolTuple<'a> = ();
12935            #[doc(hidden)]
12936            type UnderlyingRustTuple<'a> = ();
12937            #[cfg(test)]
12938            #[allow(dead_code, unreachable_patterns)]
12939            fn _type_assertion(
12940                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12941            ) {
12942                match _t {
12943                    alloy_sol_types::private::AssertTypeEq::<
12944                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12945                    >(_) => {}
12946                }
12947            }
12948            #[automatically_derived]
12949            #[doc(hidden)]
12950            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12951                fn from(value: proxiableUUIDCall) -> Self {
12952                    ()
12953                }
12954            }
12955            #[automatically_derived]
12956            #[doc(hidden)]
12957            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12958                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12959                    Self
12960                }
12961            }
12962        }
12963        {
12964            #[doc(hidden)]
12965            #[allow(dead_code)]
12966            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12967            #[doc(hidden)]
12968            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12969            #[cfg(test)]
12970            #[allow(dead_code, unreachable_patterns)]
12971            fn _type_assertion(
12972                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12973            ) {
12974                match _t {
12975                    alloy_sol_types::private::AssertTypeEq::<
12976                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12977                    >(_) => {}
12978                }
12979            }
12980            #[automatically_derived]
12981            #[doc(hidden)]
12982            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12983                fn from(value: proxiableUUIDReturn) -> Self {
12984                    (value._0,)
12985                }
12986            }
12987            #[automatically_derived]
12988            #[doc(hidden)]
12989            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12990                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12991                    Self { _0: tuple.0 }
12992                }
12993            }
12994        }
12995        #[automatically_derived]
12996        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12997            type Parameters<'a> = ();
12998            type Token<'a> = <Self::Parameters<
12999                'a,
13000            > as alloy_sol_types::SolType>::Token<'a>;
13001            type Return = alloy::sol_types::private::FixedBytes<32>;
13002            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13003            type ReturnToken<'a> = <Self::ReturnTuple<
13004                'a,
13005            > as alloy_sol_types::SolType>::Token<'a>;
13006            const SIGNATURE: &'static str = "proxiableUUID()";
13007            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
13008            #[inline]
13009            fn new<'a>(
13010                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13011            ) -> Self {
13012                tuple.into()
13013            }
13014            #[inline]
13015            fn tokenize(&self) -> Self::Token<'_> {
13016                ()
13017            }
13018            #[inline]
13019            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13020                (
13021                    <alloy::sol_types::sol_data::FixedBytes<
13022                        32,
13023                    > as alloy_sol_types::SolType>::tokenize(ret),
13024                )
13025            }
13026            #[inline]
13027            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13028                <Self::ReturnTuple<
13029                    '_,
13030                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13031                    .map(|r| {
13032                        let r: proxiableUUIDReturn = r.into();
13033                        r._0
13034                    })
13035            }
13036            #[inline]
13037            fn abi_decode_returns_validate(
13038                data: &[u8],
13039            ) -> alloy_sol_types::Result<Self::Return> {
13040                <Self::ReturnTuple<
13041                    '_,
13042                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13043                    .map(|r| {
13044                        let r: proxiableUUIDReturn = r.into();
13045                        r._0
13046                    })
13047            }
13048        }
13049    };
13050    #[derive(serde::Serialize, serde::Deserialize)]
13051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13052    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
13053```solidity
13054function renounceOwnership() external;
13055```*/
13056    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13057    #[derive(Clone)]
13058    pub struct renounceOwnershipCall;
13059    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
13060    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13061    #[derive(Clone)]
13062    pub struct renounceOwnershipReturn {}
13063    #[allow(
13064        non_camel_case_types,
13065        non_snake_case,
13066        clippy::pub_underscore_fields,
13067        clippy::style
13068    )]
13069    const _: () = {
13070        use alloy::sol_types as alloy_sol_types;
13071        {
13072            #[doc(hidden)]
13073            #[allow(dead_code)]
13074            type UnderlyingSolTuple<'a> = ();
13075            #[doc(hidden)]
13076            type UnderlyingRustTuple<'a> = ();
13077            #[cfg(test)]
13078            #[allow(dead_code, unreachable_patterns)]
13079            fn _type_assertion(
13080                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13081            ) {
13082                match _t {
13083                    alloy_sol_types::private::AssertTypeEq::<
13084                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13085                    >(_) => {}
13086                }
13087            }
13088            #[automatically_derived]
13089            #[doc(hidden)]
13090            impl ::core::convert::From<renounceOwnershipCall>
13091            for UnderlyingRustTuple<'_> {
13092                fn from(value: renounceOwnershipCall) -> Self {
13093                    ()
13094                }
13095            }
13096            #[automatically_derived]
13097            #[doc(hidden)]
13098            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13099            for renounceOwnershipCall {
13100                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13101                    Self
13102                }
13103            }
13104        }
13105        {
13106            #[doc(hidden)]
13107            #[allow(dead_code)]
13108            type UnderlyingSolTuple<'a> = ();
13109            #[doc(hidden)]
13110            type UnderlyingRustTuple<'a> = ();
13111            #[cfg(test)]
13112            #[allow(dead_code, unreachable_patterns)]
13113            fn _type_assertion(
13114                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13115            ) {
13116                match _t {
13117                    alloy_sol_types::private::AssertTypeEq::<
13118                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13119                    >(_) => {}
13120                }
13121            }
13122            #[automatically_derived]
13123            #[doc(hidden)]
13124            impl ::core::convert::From<renounceOwnershipReturn>
13125            for UnderlyingRustTuple<'_> {
13126                fn from(value: renounceOwnershipReturn) -> Self {
13127                    ()
13128                }
13129            }
13130            #[automatically_derived]
13131            #[doc(hidden)]
13132            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13133            for renounceOwnershipReturn {
13134                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13135                    Self {}
13136                }
13137            }
13138        }
13139        impl renounceOwnershipReturn {
13140            fn _tokenize(
13141                &self,
13142            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13143                ()
13144            }
13145        }
13146        #[automatically_derived]
13147        impl alloy_sol_types::SolCall for renounceOwnershipCall {
13148            type Parameters<'a> = ();
13149            type Token<'a> = <Self::Parameters<
13150                'a,
13151            > as alloy_sol_types::SolType>::Token<'a>;
13152            type Return = renounceOwnershipReturn;
13153            type ReturnTuple<'a> = ();
13154            type ReturnToken<'a> = <Self::ReturnTuple<
13155                'a,
13156            > as alloy_sol_types::SolType>::Token<'a>;
13157            const SIGNATURE: &'static str = "renounceOwnership()";
13158            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
13159            #[inline]
13160            fn new<'a>(
13161                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13162            ) -> Self {
13163                tuple.into()
13164            }
13165            #[inline]
13166            fn tokenize(&self) -> Self::Token<'_> {
13167                ()
13168            }
13169            #[inline]
13170            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13171                renounceOwnershipReturn::_tokenize(ret)
13172            }
13173            #[inline]
13174            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13175                <Self::ReturnTuple<
13176                    '_,
13177                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13178                    .map(Into::into)
13179            }
13180            #[inline]
13181            fn abi_decode_returns_validate(
13182                data: &[u8],
13183            ) -> alloy_sol_types::Result<Self::Return> {
13184                <Self::ReturnTuple<
13185                    '_,
13186                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13187                    .map(Into::into)
13188            }
13189        }
13190    };
13191    #[derive(serde::Serialize, serde::Deserialize)]
13192    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13193    /**Function with signature `setAuthRoot(uint256)` and selector `0x1af08034`.
13194```solidity
13195function setAuthRoot(uint256 newAuthRoot) external;
13196```*/
13197    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13198    #[derive(Clone)]
13199    pub struct setAuthRootCall {
13200        #[allow(missing_docs)]
13201        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
13202    }
13203    ///Container type for the return parameters of the [`setAuthRoot(uint256)`](setAuthRootCall) function.
13204    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13205    #[derive(Clone)]
13206    pub struct setAuthRootReturn {}
13207    #[allow(
13208        non_camel_case_types,
13209        non_snake_case,
13210        clippy::pub_underscore_fields,
13211        clippy::style
13212    )]
13213    const _: () = {
13214        use alloy::sol_types as alloy_sol_types;
13215        {
13216            #[doc(hidden)]
13217            #[allow(dead_code)]
13218            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13219            #[doc(hidden)]
13220            type UnderlyingRustTuple<'a> = (
13221                alloy::sol_types::private::primitives::aliases::U256,
13222            );
13223            #[cfg(test)]
13224            #[allow(dead_code, unreachable_patterns)]
13225            fn _type_assertion(
13226                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13227            ) {
13228                match _t {
13229                    alloy_sol_types::private::AssertTypeEq::<
13230                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13231                    >(_) => {}
13232                }
13233            }
13234            #[automatically_derived]
13235            #[doc(hidden)]
13236            impl ::core::convert::From<setAuthRootCall> for UnderlyingRustTuple<'_> {
13237                fn from(value: setAuthRootCall) -> Self {
13238                    (value.newAuthRoot,)
13239                }
13240            }
13241            #[automatically_derived]
13242            #[doc(hidden)]
13243            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAuthRootCall {
13244                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13245                    Self { newAuthRoot: tuple.0 }
13246                }
13247            }
13248        }
13249        {
13250            #[doc(hidden)]
13251            #[allow(dead_code)]
13252            type UnderlyingSolTuple<'a> = ();
13253            #[doc(hidden)]
13254            type UnderlyingRustTuple<'a> = ();
13255            #[cfg(test)]
13256            #[allow(dead_code, unreachable_patterns)]
13257            fn _type_assertion(
13258                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13259            ) {
13260                match _t {
13261                    alloy_sol_types::private::AssertTypeEq::<
13262                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13263                    >(_) => {}
13264                }
13265            }
13266            #[automatically_derived]
13267            #[doc(hidden)]
13268            impl ::core::convert::From<setAuthRootReturn> for UnderlyingRustTuple<'_> {
13269                fn from(value: setAuthRootReturn) -> Self {
13270                    ()
13271                }
13272            }
13273            #[automatically_derived]
13274            #[doc(hidden)]
13275            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAuthRootReturn {
13276                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13277                    Self {}
13278                }
13279            }
13280        }
13281        impl setAuthRootReturn {
13282            fn _tokenize(
13283                &self,
13284            ) -> <setAuthRootCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13285                ()
13286            }
13287        }
13288        #[automatically_derived]
13289        impl alloy_sol_types::SolCall for setAuthRootCall {
13290            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13291            type Token<'a> = <Self::Parameters<
13292                'a,
13293            > as alloy_sol_types::SolType>::Token<'a>;
13294            type Return = setAuthRootReturn;
13295            type ReturnTuple<'a> = ();
13296            type ReturnToken<'a> = <Self::ReturnTuple<
13297                'a,
13298            > as alloy_sol_types::SolType>::Token<'a>;
13299            const SIGNATURE: &'static str = "setAuthRoot(uint256)";
13300            const SELECTOR: [u8; 4] = [26u8, 240u8, 128u8, 52u8];
13301            #[inline]
13302            fn new<'a>(
13303                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13304            ) -> Self {
13305                tuple.into()
13306            }
13307            #[inline]
13308            fn tokenize(&self) -> Self::Token<'_> {
13309                (
13310                    <alloy::sol_types::sol_data::Uint<
13311                        256,
13312                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
13313                )
13314            }
13315            #[inline]
13316            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13317                setAuthRootReturn::_tokenize(ret)
13318            }
13319            #[inline]
13320            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13321                <Self::ReturnTuple<
13322                    '_,
13323                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13324                    .map(Into::into)
13325            }
13326            #[inline]
13327            fn abi_decode_returns_validate(
13328                data: &[u8],
13329            ) -> alloy_sol_types::Result<Self::Return> {
13330                <Self::ReturnTuple<
13331                    '_,
13332                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13333                    .map(Into::into)
13334            }
13335        }
13336    };
13337    #[derive(serde::Serialize, serde::Deserialize)]
13338    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13339    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
13340```solidity
13341function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
13342```*/
13343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13344    #[derive(Clone)]
13345    pub struct setBlocksPerEpochCall {
13346        #[allow(missing_docs)]
13347        pub newBlocksPerEpoch: u64,
13348    }
13349    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
13350    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13351    #[derive(Clone)]
13352    pub struct setBlocksPerEpochReturn {}
13353    #[allow(
13354        non_camel_case_types,
13355        non_snake_case,
13356        clippy::pub_underscore_fields,
13357        clippy::style
13358    )]
13359    const _: () = {
13360        use alloy::sol_types as alloy_sol_types;
13361        {
13362            #[doc(hidden)]
13363            #[allow(dead_code)]
13364            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13365            #[doc(hidden)]
13366            type UnderlyingRustTuple<'a> = (u64,);
13367            #[cfg(test)]
13368            #[allow(dead_code, unreachable_patterns)]
13369            fn _type_assertion(
13370                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13371            ) {
13372                match _t {
13373                    alloy_sol_types::private::AssertTypeEq::<
13374                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13375                    >(_) => {}
13376                }
13377            }
13378            #[automatically_derived]
13379            #[doc(hidden)]
13380            impl ::core::convert::From<setBlocksPerEpochCall>
13381            for UnderlyingRustTuple<'_> {
13382                fn from(value: setBlocksPerEpochCall) -> Self {
13383                    (value.newBlocksPerEpoch,)
13384                }
13385            }
13386            #[automatically_derived]
13387            #[doc(hidden)]
13388            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13389            for setBlocksPerEpochCall {
13390                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13391                    Self { newBlocksPerEpoch: tuple.0 }
13392                }
13393            }
13394        }
13395        {
13396            #[doc(hidden)]
13397            #[allow(dead_code)]
13398            type UnderlyingSolTuple<'a> = ();
13399            #[doc(hidden)]
13400            type UnderlyingRustTuple<'a> = ();
13401            #[cfg(test)]
13402            #[allow(dead_code, unreachable_patterns)]
13403            fn _type_assertion(
13404                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13405            ) {
13406                match _t {
13407                    alloy_sol_types::private::AssertTypeEq::<
13408                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13409                    >(_) => {}
13410                }
13411            }
13412            #[automatically_derived]
13413            #[doc(hidden)]
13414            impl ::core::convert::From<setBlocksPerEpochReturn>
13415            for UnderlyingRustTuple<'_> {
13416                fn from(value: setBlocksPerEpochReturn) -> Self {
13417                    ()
13418                }
13419            }
13420            #[automatically_derived]
13421            #[doc(hidden)]
13422            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13423            for setBlocksPerEpochReturn {
13424                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13425                    Self {}
13426                }
13427            }
13428        }
13429        impl setBlocksPerEpochReturn {
13430            fn _tokenize(
13431                &self,
13432            ) -> <setBlocksPerEpochCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13433                ()
13434            }
13435        }
13436        #[automatically_derived]
13437        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
13438            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13439            type Token<'a> = <Self::Parameters<
13440                'a,
13441            > as alloy_sol_types::SolType>::Token<'a>;
13442            type Return = setBlocksPerEpochReturn;
13443            type ReturnTuple<'a> = ();
13444            type ReturnToken<'a> = <Self::ReturnTuple<
13445                'a,
13446            > as alloy_sol_types::SolType>::Token<'a>;
13447            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
13448            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
13449            #[inline]
13450            fn new<'a>(
13451                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13452            ) -> Self {
13453                tuple.into()
13454            }
13455            #[inline]
13456            fn tokenize(&self) -> Self::Token<'_> {
13457                (
13458                    <alloy::sol_types::sol_data::Uint<
13459                        64,
13460                    > as alloy_sol_types::SolType>::tokenize(&self.newBlocksPerEpoch),
13461                )
13462            }
13463            #[inline]
13464            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13465                setBlocksPerEpochReturn::_tokenize(ret)
13466            }
13467            #[inline]
13468            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13469                <Self::ReturnTuple<
13470                    '_,
13471                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13472                    .map(Into::into)
13473            }
13474            #[inline]
13475            fn abi_decode_returns_validate(
13476                data: &[u8],
13477            ) -> alloy_sol_types::Result<Self::Return> {
13478                <Self::ReturnTuple<
13479                    '_,
13480                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13481                    .map(Into::into)
13482            }
13483        }
13484    };
13485    #[derive(serde::Serialize, serde::Deserialize)]
13486    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13487    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
13488```solidity
13489function setFinalizedState(LightClient.LightClientState memory state) external;
13490```*/
13491    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13492    #[derive(Clone)]
13493    pub struct setFinalizedStateCall {
13494        #[allow(missing_docs)]
13495        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13496    }
13497    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
13498    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13499    #[derive(Clone)]
13500    pub struct setFinalizedStateReturn {}
13501    #[allow(
13502        non_camel_case_types,
13503        non_snake_case,
13504        clippy::pub_underscore_fields,
13505        clippy::style
13506    )]
13507    const _: () = {
13508        use alloy::sol_types as alloy_sol_types;
13509        {
13510            #[doc(hidden)]
13511            #[allow(dead_code)]
13512            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
13513            #[doc(hidden)]
13514            type UnderlyingRustTuple<'a> = (
13515                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13516            );
13517            #[cfg(test)]
13518            #[allow(dead_code, unreachable_patterns)]
13519            fn _type_assertion(
13520                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13521            ) {
13522                match _t {
13523                    alloy_sol_types::private::AssertTypeEq::<
13524                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13525                    >(_) => {}
13526                }
13527            }
13528            #[automatically_derived]
13529            #[doc(hidden)]
13530            impl ::core::convert::From<setFinalizedStateCall>
13531            for UnderlyingRustTuple<'_> {
13532                fn from(value: setFinalizedStateCall) -> Self {
13533                    (value.state,)
13534                }
13535            }
13536            #[automatically_derived]
13537            #[doc(hidden)]
13538            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13539            for setFinalizedStateCall {
13540                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13541                    Self { state: tuple.0 }
13542                }
13543            }
13544        }
13545        {
13546            #[doc(hidden)]
13547            #[allow(dead_code)]
13548            type UnderlyingSolTuple<'a> = ();
13549            #[doc(hidden)]
13550            type UnderlyingRustTuple<'a> = ();
13551            #[cfg(test)]
13552            #[allow(dead_code, unreachable_patterns)]
13553            fn _type_assertion(
13554                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13555            ) {
13556                match _t {
13557                    alloy_sol_types::private::AssertTypeEq::<
13558                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13559                    >(_) => {}
13560                }
13561            }
13562            #[automatically_derived]
13563            #[doc(hidden)]
13564            impl ::core::convert::From<setFinalizedStateReturn>
13565            for UnderlyingRustTuple<'_> {
13566                fn from(value: setFinalizedStateReturn) -> Self {
13567                    ()
13568                }
13569            }
13570            #[automatically_derived]
13571            #[doc(hidden)]
13572            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13573            for setFinalizedStateReturn {
13574                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13575                    Self {}
13576                }
13577            }
13578        }
13579        impl setFinalizedStateReturn {
13580            fn _tokenize(
13581                &self,
13582            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13583                ()
13584            }
13585        }
13586        #[automatically_derived]
13587        impl alloy_sol_types::SolCall for setFinalizedStateCall {
13588            type Parameters<'a> = (LightClient::LightClientState,);
13589            type Token<'a> = <Self::Parameters<
13590                'a,
13591            > as alloy_sol_types::SolType>::Token<'a>;
13592            type Return = setFinalizedStateReturn;
13593            type ReturnTuple<'a> = ();
13594            type ReturnToken<'a> = <Self::ReturnTuple<
13595                'a,
13596            > as alloy_sol_types::SolType>::Token<'a>;
13597            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
13598            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
13599            #[inline]
13600            fn new<'a>(
13601                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13602            ) -> Self {
13603                tuple.into()
13604            }
13605            #[inline]
13606            fn tokenize(&self) -> Self::Token<'_> {
13607                (
13608                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
13609                        &self.state,
13610                    ),
13611                )
13612            }
13613            #[inline]
13614            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13615                setFinalizedStateReturn::_tokenize(ret)
13616            }
13617            #[inline]
13618            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13619                <Self::ReturnTuple<
13620                    '_,
13621                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13622                    .map(Into::into)
13623            }
13624            #[inline]
13625            fn abi_decode_returns_validate(
13626                data: &[u8],
13627            ) -> alloy_sol_types::Result<Self::Return> {
13628                <Self::ReturnTuple<
13629                    '_,
13630                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13631                    .map(Into::into)
13632            }
13633        }
13634    };
13635    #[derive(serde::Serialize, serde::Deserialize)]
13636    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13637    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
13638```solidity
13639function setHotShotDownSince(uint256 l1Height) external;
13640```*/
13641    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13642    #[derive(Clone)]
13643    pub struct setHotShotDownSinceCall {
13644        #[allow(missing_docs)]
13645        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
13646    }
13647    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
13648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13649    #[derive(Clone)]
13650    pub struct setHotShotDownSinceReturn {}
13651    #[allow(
13652        non_camel_case_types,
13653        non_snake_case,
13654        clippy::pub_underscore_fields,
13655        clippy::style
13656    )]
13657    const _: () = {
13658        use alloy::sol_types as alloy_sol_types;
13659        {
13660            #[doc(hidden)]
13661            #[allow(dead_code)]
13662            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13663            #[doc(hidden)]
13664            type UnderlyingRustTuple<'a> = (
13665                alloy::sol_types::private::primitives::aliases::U256,
13666            );
13667            #[cfg(test)]
13668            #[allow(dead_code, unreachable_patterns)]
13669            fn _type_assertion(
13670                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13671            ) {
13672                match _t {
13673                    alloy_sol_types::private::AssertTypeEq::<
13674                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13675                    >(_) => {}
13676                }
13677            }
13678            #[automatically_derived]
13679            #[doc(hidden)]
13680            impl ::core::convert::From<setHotShotDownSinceCall>
13681            for UnderlyingRustTuple<'_> {
13682                fn from(value: setHotShotDownSinceCall) -> Self {
13683                    (value.l1Height,)
13684                }
13685            }
13686            #[automatically_derived]
13687            #[doc(hidden)]
13688            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13689            for setHotShotDownSinceCall {
13690                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13691                    Self { l1Height: tuple.0 }
13692                }
13693            }
13694        }
13695        {
13696            #[doc(hidden)]
13697            #[allow(dead_code)]
13698            type UnderlyingSolTuple<'a> = ();
13699            #[doc(hidden)]
13700            type UnderlyingRustTuple<'a> = ();
13701            #[cfg(test)]
13702            #[allow(dead_code, unreachable_patterns)]
13703            fn _type_assertion(
13704                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13705            ) {
13706                match _t {
13707                    alloy_sol_types::private::AssertTypeEq::<
13708                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13709                    >(_) => {}
13710                }
13711            }
13712            #[automatically_derived]
13713            #[doc(hidden)]
13714            impl ::core::convert::From<setHotShotDownSinceReturn>
13715            for UnderlyingRustTuple<'_> {
13716                fn from(value: setHotShotDownSinceReturn) -> Self {
13717                    ()
13718                }
13719            }
13720            #[automatically_derived]
13721            #[doc(hidden)]
13722            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13723            for setHotShotDownSinceReturn {
13724                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13725                    Self {}
13726                }
13727            }
13728        }
13729        impl setHotShotDownSinceReturn {
13730            fn _tokenize(
13731                &self,
13732            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13733                ()
13734            }
13735        }
13736        #[automatically_derived]
13737        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
13738            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13739            type Token<'a> = <Self::Parameters<
13740                'a,
13741            > as alloy_sol_types::SolType>::Token<'a>;
13742            type Return = setHotShotDownSinceReturn;
13743            type ReturnTuple<'a> = ();
13744            type ReturnToken<'a> = <Self::ReturnTuple<
13745                'a,
13746            > as alloy_sol_types::SolType>::Token<'a>;
13747            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
13748            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
13749            #[inline]
13750            fn new<'a>(
13751                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13752            ) -> Self {
13753                tuple.into()
13754            }
13755            #[inline]
13756            fn tokenize(&self) -> Self::Token<'_> {
13757                (
13758                    <alloy::sol_types::sol_data::Uint<
13759                        256,
13760                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
13761                )
13762            }
13763            #[inline]
13764            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13765                setHotShotDownSinceReturn::_tokenize(ret)
13766            }
13767            #[inline]
13768            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13769                <Self::ReturnTuple<
13770                    '_,
13771                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13772                    .map(Into::into)
13773            }
13774            #[inline]
13775            fn abi_decode_returns_validate(
13776                data: &[u8],
13777            ) -> alloy_sol_types::Result<Self::Return> {
13778                <Self::ReturnTuple<
13779                    '_,
13780                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13781                    .map(Into::into)
13782            }
13783        }
13784    };
13785    #[derive(serde::Serialize, serde::Deserialize)]
13786    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13787    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
13788```solidity
13789function setHotShotUp() external;
13790```*/
13791    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13792    #[derive(Clone)]
13793    pub struct setHotShotUpCall;
13794    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
13795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13796    #[derive(Clone)]
13797    pub struct setHotShotUpReturn {}
13798    #[allow(
13799        non_camel_case_types,
13800        non_snake_case,
13801        clippy::pub_underscore_fields,
13802        clippy::style
13803    )]
13804    const _: () = {
13805        use alloy::sol_types as alloy_sol_types;
13806        {
13807            #[doc(hidden)]
13808            #[allow(dead_code)]
13809            type UnderlyingSolTuple<'a> = ();
13810            #[doc(hidden)]
13811            type UnderlyingRustTuple<'a> = ();
13812            #[cfg(test)]
13813            #[allow(dead_code, unreachable_patterns)]
13814            fn _type_assertion(
13815                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13816            ) {
13817                match _t {
13818                    alloy_sol_types::private::AssertTypeEq::<
13819                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13820                    >(_) => {}
13821                }
13822            }
13823            #[automatically_derived]
13824            #[doc(hidden)]
13825            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
13826                fn from(value: setHotShotUpCall) -> Self {
13827                    ()
13828                }
13829            }
13830            #[automatically_derived]
13831            #[doc(hidden)]
13832            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
13833                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13834                    Self
13835                }
13836            }
13837        }
13838        {
13839            #[doc(hidden)]
13840            #[allow(dead_code)]
13841            type UnderlyingSolTuple<'a> = ();
13842            #[doc(hidden)]
13843            type UnderlyingRustTuple<'a> = ();
13844            #[cfg(test)]
13845            #[allow(dead_code, unreachable_patterns)]
13846            fn _type_assertion(
13847                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13848            ) {
13849                match _t {
13850                    alloy_sol_types::private::AssertTypeEq::<
13851                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13852                    >(_) => {}
13853                }
13854            }
13855            #[automatically_derived]
13856            #[doc(hidden)]
13857            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
13858                fn from(value: setHotShotUpReturn) -> Self {
13859                    ()
13860                }
13861            }
13862            #[automatically_derived]
13863            #[doc(hidden)]
13864            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
13865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13866                    Self {}
13867                }
13868            }
13869        }
13870        impl setHotShotUpReturn {
13871            fn _tokenize(
13872                &self,
13873            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13874                ()
13875            }
13876        }
13877        #[automatically_derived]
13878        impl alloy_sol_types::SolCall for setHotShotUpCall {
13879            type Parameters<'a> = ();
13880            type Token<'a> = <Self::Parameters<
13881                'a,
13882            > as alloy_sol_types::SolType>::Token<'a>;
13883            type Return = setHotShotUpReturn;
13884            type ReturnTuple<'a> = ();
13885            type ReturnToken<'a> = <Self::ReturnTuple<
13886                'a,
13887            > as alloy_sol_types::SolType>::Token<'a>;
13888            const SIGNATURE: &'static str = "setHotShotUp()";
13889            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
13890            #[inline]
13891            fn new<'a>(
13892                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13893            ) -> Self {
13894                tuple.into()
13895            }
13896            #[inline]
13897            fn tokenize(&self) -> Self::Token<'_> {
13898                ()
13899            }
13900            #[inline]
13901            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13902                setHotShotUpReturn::_tokenize(ret)
13903            }
13904            #[inline]
13905            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13906                <Self::ReturnTuple<
13907                    '_,
13908                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13909                    .map(Into::into)
13910            }
13911            #[inline]
13912            fn abi_decode_returns_validate(
13913                data: &[u8],
13914            ) -> alloy_sol_types::Result<Self::Return> {
13915                <Self::ReturnTuple<
13916                    '_,
13917                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13918                    .map(Into::into)
13919            }
13920        }
13921    };
13922    #[derive(serde::Serialize, serde::Deserialize)]
13923    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13924    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
13925```solidity
13926function setPermissionedProver(address prover) external;
13927```*/
13928    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13929    #[derive(Clone)]
13930    pub struct setPermissionedProverCall {
13931        #[allow(missing_docs)]
13932        pub prover: alloy::sol_types::private::Address,
13933    }
13934    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
13935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13936    #[derive(Clone)]
13937    pub struct setPermissionedProverReturn {}
13938    #[allow(
13939        non_camel_case_types,
13940        non_snake_case,
13941        clippy::pub_underscore_fields,
13942        clippy::style
13943    )]
13944    const _: () = {
13945        use alloy::sol_types as alloy_sol_types;
13946        {
13947            #[doc(hidden)]
13948            #[allow(dead_code)]
13949            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13950            #[doc(hidden)]
13951            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13952            #[cfg(test)]
13953            #[allow(dead_code, unreachable_patterns)]
13954            fn _type_assertion(
13955                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13956            ) {
13957                match _t {
13958                    alloy_sol_types::private::AssertTypeEq::<
13959                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13960                    >(_) => {}
13961                }
13962            }
13963            #[automatically_derived]
13964            #[doc(hidden)]
13965            impl ::core::convert::From<setPermissionedProverCall>
13966            for UnderlyingRustTuple<'_> {
13967                fn from(value: setPermissionedProverCall) -> Self {
13968                    (value.prover,)
13969                }
13970            }
13971            #[automatically_derived]
13972            #[doc(hidden)]
13973            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13974            for setPermissionedProverCall {
13975                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13976                    Self { prover: tuple.0 }
13977                }
13978            }
13979        }
13980        {
13981            #[doc(hidden)]
13982            #[allow(dead_code)]
13983            type UnderlyingSolTuple<'a> = ();
13984            #[doc(hidden)]
13985            type UnderlyingRustTuple<'a> = ();
13986            #[cfg(test)]
13987            #[allow(dead_code, unreachable_patterns)]
13988            fn _type_assertion(
13989                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13990            ) {
13991                match _t {
13992                    alloy_sol_types::private::AssertTypeEq::<
13993                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13994                    >(_) => {}
13995                }
13996            }
13997            #[automatically_derived]
13998            #[doc(hidden)]
13999            impl ::core::convert::From<setPermissionedProverReturn>
14000            for UnderlyingRustTuple<'_> {
14001                fn from(value: setPermissionedProverReturn) -> Self {
14002                    ()
14003                }
14004            }
14005            #[automatically_derived]
14006            #[doc(hidden)]
14007            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14008            for setPermissionedProverReturn {
14009                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14010                    Self {}
14011                }
14012            }
14013        }
14014        impl setPermissionedProverReturn {
14015            fn _tokenize(
14016                &self,
14017            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
14018                '_,
14019            > {
14020                ()
14021            }
14022        }
14023        #[automatically_derived]
14024        impl alloy_sol_types::SolCall for setPermissionedProverCall {
14025            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14026            type Token<'a> = <Self::Parameters<
14027                'a,
14028            > as alloy_sol_types::SolType>::Token<'a>;
14029            type Return = setPermissionedProverReturn;
14030            type ReturnTuple<'a> = ();
14031            type ReturnToken<'a> = <Self::ReturnTuple<
14032                'a,
14033            > as alloy_sol_types::SolType>::Token<'a>;
14034            const SIGNATURE: &'static str = "setPermissionedProver(address)";
14035            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
14036            #[inline]
14037            fn new<'a>(
14038                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14039            ) -> Self {
14040                tuple.into()
14041            }
14042            #[inline]
14043            fn tokenize(&self) -> Self::Token<'_> {
14044                (
14045                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14046                        &self.prover,
14047                    ),
14048                )
14049            }
14050            #[inline]
14051            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14052                setPermissionedProverReturn::_tokenize(ret)
14053            }
14054            #[inline]
14055            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14056                <Self::ReturnTuple<
14057                    '_,
14058                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14059                    .map(Into::into)
14060            }
14061            #[inline]
14062            fn abi_decode_returns_validate(
14063                data: &[u8],
14064            ) -> alloy_sol_types::Result<Self::Return> {
14065                <Self::ReturnTuple<
14066                    '_,
14067                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14068                    .map(Into::into)
14069            }
14070        }
14071    };
14072    #[derive(serde::Serialize, serde::Deserialize)]
14073    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14074    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
14075```solidity
14076function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
14077```*/
14078    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14079    #[derive(Clone)]
14080    pub struct setStateHistoryCall {
14081        #[allow(missing_docs)]
14082        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
14083            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
14084        >,
14085    }
14086    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
14087    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14088    #[derive(Clone)]
14089    pub struct setStateHistoryReturn {}
14090    #[allow(
14091        non_camel_case_types,
14092        non_snake_case,
14093        clippy::pub_underscore_fields,
14094        clippy::style
14095    )]
14096    const _: () = {
14097        use alloy::sol_types as alloy_sol_types;
14098        {
14099            #[doc(hidden)]
14100            #[allow(dead_code)]
14101            type UnderlyingSolTuple<'a> = (
14102                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
14103            );
14104            #[doc(hidden)]
14105            type UnderlyingRustTuple<'a> = (
14106                alloy::sol_types::private::Vec<
14107                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
14108                >,
14109            );
14110            #[cfg(test)]
14111            #[allow(dead_code, unreachable_patterns)]
14112            fn _type_assertion(
14113                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14114            ) {
14115                match _t {
14116                    alloy_sol_types::private::AssertTypeEq::<
14117                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14118                    >(_) => {}
14119                }
14120            }
14121            #[automatically_derived]
14122            #[doc(hidden)]
14123            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
14124                fn from(value: setStateHistoryCall) -> Self {
14125                    (value._stateHistoryCommitments,)
14126                }
14127            }
14128            #[automatically_derived]
14129            #[doc(hidden)]
14130            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
14131                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14132                    Self {
14133                        _stateHistoryCommitments: tuple.0,
14134                    }
14135                }
14136            }
14137        }
14138        {
14139            #[doc(hidden)]
14140            #[allow(dead_code)]
14141            type UnderlyingSolTuple<'a> = ();
14142            #[doc(hidden)]
14143            type UnderlyingRustTuple<'a> = ();
14144            #[cfg(test)]
14145            #[allow(dead_code, unreachable_patterns)]
14146            fn _type_assertion(
14147                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14148            ) {
14149                match _t {
14150                    alloy_sol_types::private::AssertTypeEq::<
14151                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14152                    >(_) => {}
14153                }
14154            }
14155            #[automatically_derived]
14156            #[doc(hidden)]
14157            impl ::core::convert::From<setStateHistoryReturn>
14158            for UnderlyingRustTuple<'_> {
14159                fn from(value: setStateHistoryReturn) -> Self {
14160                    ()
14161                }
14162            }
14163            #[automatically_derived]
14164            #[doc(hidden)]
14165            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14166            for setStateHistoryReturn {
14167                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14168                    Self {}
14169                }
14170            }
14171        }
14172        impl setStateHistoryReturn {
14173            fn _tokenize(
14174                &self,
14175            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14176                ()
14177            }
14178        }
14179        #[automatically_derived]
14180        impl alloy_sol_types::SolCall for setStateHistoryCall {
14181            type Parameters<'a> = (
14182                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
14183            );
14184            type Token<'a> = <Self::Parameters<
14185                'a,
14186            > as alloy_sol_types::SolType>::Token<'a>;
14187            type Return = setStateHistoryReturn;
14188            type ReturnTuple<'a> = ();
14189            type ReturnToken<'a> = <Self::ReturnTuple<
14190                'a,
14191            > as alloy_sol_types::SolType>::Token<'a>;
14192            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
14193            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
14194            #[inline]
14195            fn new<'a>(
14196                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14197            ) -> Self {
14198                tuple.into()
14199            }
14200            #[inline]
14201            fn tokenize(&self) -> Self::Token<'_> {
14202                (
14203                    <alloy::sol_types::sol_data::Array<
14204                        LightClient::StateHistoryCommitment,
14205                    > as alloy_sol_types::SolType>::tokenize(
14206                        &self._stateHistoryCommitments,
14207                    ),
14208                )
14209            }
14210            #[inline]
14211            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14212                setStateHistoryReturn::_tokenize(ret)
14213            }
14214            #[inline]
14215            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14216                <Self::ReturnTuple<
14217                    '_,
14218                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14219                    .map(Into::into)
14220            }
14221            #[inline]
14222            fn abi_decode_returns_validate(
14223                data: &[u8],
14224            ) -> alloy_sol_types::Result<Self::Return> {
14225                <Self::ReturnTuple<
14226                    '_,
14227                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14228                    .map(Into::into)
14229            }
14230        }
14231    };
14232    #[derive(serde::Serialize, serde::Deserialize)]
14233    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14234    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
14235```solidity
14236function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
14237```*/
14238    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14239    #[derive(Clone)]
14240    pub struct setStateHistoryRetentionPeriodCall {
14241        #[allow(missing_docs)]
14242        pub historySeconds: u32,
14243    }
14244    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
14245    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14246    #[derive(Clone)]
14247    pub struct setStateHistoryRetentionPeriodReturn {}
14248    #[allow(
14249        non_camel_case_types,
14250        non_snake_case,
14251        clippy::pub_underscore_fields,
14252        clippy::style
14253    )]
14254    const _: () = {
14255        use alloy::sol_types as alloy_sol_types;
14256        {
14257            #[doc(hidden)]
14258            #[allow(dead_code)]
14259            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14260            #[doc(hidden)]
14261            type UnderlyingRustTuple<'a> = (u32,);
14262            #[cfg(test)]
14263            #[allow(dead_code, unreachable_patterns)]
14264            fn _type_assertion(
14265                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14266            ) {
14267                match _t {
14268                    alloy_sol_types::private::AssertTypeEq::<
14269                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14270                    >(_) => {}
14271                }
14272            }
14273            #[automatically_derived]
14274            #[doc(hidden)]
14275            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
14276            for UnderlyingRustTuple<'_> {
14277                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
14278                    (value.historySeconds,)
14279                }
14280            }
14281            #[automatically_derived]
14282            #[doc(hidden)]
14283            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14284            for setStateHistoryRetentionPeriodCall {
14285                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14286                    Self { historySeconds: tuple.0 }
14287                }
14288            }
14289        }
14290        {
14291            #[doc(hidden)]
14292            #[allow(dead_code)]
14293            type UnderlyingSolTuple<'a> = ();
14294            #[doc(hidden)]
14295            type UnderlyingRustTuple<'a> = ();
14296            #[cfg(test)]
14297            #[allow(dead_code, unreachable_patterns)]
14298            fn _type_assertion(
14299                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14300            ) {
14301                match _t {
14302                    alloy_sol_types::private::AssertTypeEq::<
14303                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14304                    >(_) => {}
14305                }
14306            }
14307            #[automatically_derived]
14308            #[doc(hidden)]
14309            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
14310            for UnderlyingRustTuple<'_> {
14311                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
14312                    ()
14313                }
14314            }
14315            #[automatically_derived]
14316            #[doc(hidden)]
14317            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14318            for setStateHistoryRetentionPeriodReturn {
14319                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14320                    Self {}
14321                }
14322            }
14323        }
14324        impl setStateHistoryRetentionPeriodReturn {
14325            fn _tokenize(
14326                &self,
14327            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
14328                '_,
14329            > {
14330                ()
14331            }
14332        }
14333        #[automatically_derived]
14334        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
14335            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14336            type Token<'a> = <Self::Parameters<
14337                'a,
14338            > as alloy_sol_types::SolType>::Token<'a>;
14339            type Return = setStateHistoryRetentionPeriodReturn;
14340            type ReturnTuple<'a> = ();
14341            type ReturnToken<'a> = <Self::ReturnTuple<
14342                'a,
14343            > as alloy_sol_types::SolType>::Token<'a>;
14344            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
14345            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
14346            #[inline]
14347            fn new<'a>(
14348                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14349            ) -> Self {
14350                tuple.into()
14351            }
14352            #[inline]
14353            fn tokenize(&self) -> Self::Token<'_> {
14354                (
14355                    <alloy::sol_types::sol_data::Uint<
14356                        32,
14357                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
14358                )
14359            }
14360            #[inline]
14361            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14362                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
14363            }
14364            #[inline]
14365            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14366                <Self::ReturnTuple<
14367                    '_,
14368                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14369                    .map(Into::into)
14370            }
14371            #[inline]
14372            fn abi_decode_returns_validate(
14373                data: &[u8],
14374            ) -> alloy_sol_types::Result<Self::Return> {
14375                <Self::ReturnTuple<
14376                    '_,
14377                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14378                    .map(Into::into)
14379            }
14380        }
14381    };
14382    #[derive(serde::Serialize, serde::Deserialize)]
14383    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14384    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
14385```solidity
14386function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
14387```*/
14388    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14389    #[derive(Clone)]
14390    pub struct setVotingStakeTableStateCall {
14391        #[allow(missing_docs)]
14392        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14393    }
14394    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
14395    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14396    #[derive(Clone)]
14397    pub struct setVotingStakeTableStateReturn {}
14398    #[allow(
14399        non_camel_case_types,
14400        non_snake_case,
14401        clippy::pub_underscore_fields,
14402        clippy::style
14403    )]
14404    const _: () = {
14405        use alloy::sol_types as alloy_sol_types;
14406        {
14407            #[doc(hidden)]
14408            #[allow(dead_code)]
14409            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
14410            #[doc(hidden)]
14411            type UnderlyingRustTuple<'a> = (
14412                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14413            );
14414            #[cfg(test)]
14415            #[allow(dead_code, unreachable_patterns)]
14416            fn _type_assertion(
14417                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14418            ) {
14419                match _t {
14420                    alloy_sol_types::private::AssertTypeEq::<
14421                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14422                    >(_) => {}
14423                }
14424            }
14425            #[automatically_derived]
14426            #[doc(hidden)]
14427            impl ::core::convert::From<setVotingStakeTableStateCall>
14428            for UnderlyingRustTuple<'_> {
14429                fn from(value: setVotingStakeTableStateCall) -> Self {
14430                    (value.stake,)
14431                }
14432            }
14433            #[automatically_derived]
14434            #[doc(hidden)]
14435            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14436            for setVotingStakeTableStateCall {
14437                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14438                    Self { stake: tuple.0 }
14439                }
14440            }
14441        }
14442        {
14443            #[doc(hidden)]
14444            #[allow(dead_code)]
14445            type UnderlyingSolTuple<'a> = ();
14446            #[doc(hidden)]
14447            type UnderlyingRustTuple<'a> = ();
14448            #[cfg(test)]
14449            #[allow(dead_code, unreachable_patterns)]
14450            fn _type_assertion(
14451                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14452            ) {
14453                match _t {
14454                    alloy_sol_types::private::AssertTypeEq::<
14455                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14456                    >(_) => {}
14457                }
14458            }
14459            #[automatically_derived]
14460            #[doc(hidden)]
14461            impl ::core::convert::From<setVotingStakeTableStateReturn>
14462            for UnderlyingRustTuple<'_> {
14463                fn from(value: setVotingStakeTableStateReturn) -> Self {
14464                    ()
14465                }
14466            }
14467            #[automatically_derived]
14468            #[doc(hidden)]
14469            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14470            for setVotingStakeTableStateReturn {
14471                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14472                    Self {}
14473                }
14474            }
14475        }
14476        impl setVotingStakeTableStateReturn {
14477            fn _tokenize(
14478                &self,
14479            ) -> <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14480                '_,
14481            > {
14482                ()
14483            }
14484        }
14485        #[automatically_derived]
14486        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
14487            type Parameters<'a> = (LightClient::StakeTableState,);
14488            type Token<'a> = <Self::Parameters<
14489                'a,
14490            > as alloy_sol_types::SolType>::Token<'a>;
14491            type Return = setVotingStakeTableStateReturn;
14492            type ReturnTuple<'a> = ();
14493            type ReturnToken<'a> = <Self::ReturnTuple<
14494                'a,
14495            > as alloy_sol_types::SolType>::Token<'a>;
14496            const SIGNATURE: &'static str = "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
14497            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
14498            #[inline]
14499            fn new<'a>(
14500                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14501            ) -> Self {
14502                tuple.into()
14503            }
14504            #[inline]
14505            fn tokenize(&self) -> Self::Token<'_> {
14506                (
14507                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
14508                        &self.stake,
14509                    ),
14510                )
14511            }
14512            #[inline]
14513            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14514                setVotingStakeTableStateReturn::_tokenize(ret)
14515            }
14516            #[inline]
14517            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14518                <Self::ReturnTuple<
14519                    '_,
14520                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14521                    .map(Into::into)
14522            }
14523            #[inline]
14524            fn abi_decode_returns_validate(
14525                data: &[u8],
14526            ) -> alloy_sol_types::Result<Self::Return> {
14527                <Self::ReturnTuple<
14528                    '_,
14529                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14530                    .map(Into::into)
14531            }
14532        }
14533    };
14534    #[derive(serde::Serialize, serde::Deserialize)]
14535    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14536    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
14537```solidity
14538function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
14539```*/
14540    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14541    #[derive(Clone)]
14542    pub struct setstateHistoryRetentionPeriodCall {
14543        #[allow(missing_docs)]
14544        pub historySeconds: u32,
14545    }
14546    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
14547    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14548    #[derive(Clone)]
14549    pub struct setstateHistoryRetentionPeriodReturn {}
14550    #[allow(
14551        non_camel_case_types,
14552        non_snake_case,
14553        clippy::pub_underscore_fields,
14554        clippy::style
14555    )]
14556    const _: () = {
14557        use alloy::sol_types as alloy_sol_types;
14558        {
14559            #[doc(hidden)]
14560            #[allow(dead_code)]
14561            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14562            #[doc(hidden)]
14563            type UnderlyingRustTuple<'a> = (u32,);
14564            #[cfg(test)]
14565            #[allow(dead_code, unreachable_patterns)]
14566            fn _type_assertion(
14567                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14568            ) {
14569                match _t {
14570                    alloy_sol_types::private::AssertTypeEq::<
14571                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14572                    >(_) => {}
14573                }
14574            }
14575            #[automatically_derived]
14576            #[doc(hidden)]
14577            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
14578            for UnderlyingRustTuple<'_> {
14579                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
14580                    (value.historySeconds,)
14581                }
14582            }
14583            #[automatically_derived]
14584            #[doc(hidden)]
14585            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14586            for setstateHistoryRetentionPeriodCall {
14587                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14588                    Self { historySeconds: tuple.0 }
14589                }
14590            }
14591        }
14592        {
14593            #[doc(hidden)]
14594            #[allow(dead_code)]
14595            type UnderlyingSolTuple<'a> = ();
14596            #[doc(hidden)]
14597            type UnderlyingRustTuple<'a> = ();
14598            #[cfg(test)]
14599            #[allow(dead_code, unreachable_patterns)]
14600            fn _type_assertion(
14601                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14602            ) {
14603                match _t {
14604                    alloy_sol_types::private::AssertTypeEq::<
14605                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14606                    >(_) => {}
14607                }
14608            }
14609            #[automatically_derived]
14610            #[doc(hidden)]
14611            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
14612            for UnderlyingRustTuple<'_> {
14613                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
14614                    ()
14615                }
14616            }
14617            #[automatically_derived]
14618            #[doc(hidden)]
14619            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14620            for setstateHistoryRetentionPeriodReturn {
14621                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14622                    Self {}
14623                }
14624            }
14625        }
14626        impl setstateHistoryRetentionPeriodReturn {
14627            fn _tokenize(
14628                &self,
14629            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
14630                '_,
14631            > {
14632                ()
14633            }
14634        }
14635        #[automatically_derived]
14636        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
14637            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14638            type Token<'a> = <Self::Parameters<
14639                'a,
14640            > as alloy_sol_types::SolType>::Token<'a>;
14641            type Return = setstateHistoryRetentionPeriodReturn;
14642            type ReturnTuple<'a> = ();
14643            type ReturnToken<'a> = <Self::ReturnTuple<
14644                'a,
14645            > as alloy_sol_types::SolType>::Token<'a>;
14646            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
14647            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
14648            #[inline]
14649            fn new<'a>(
14650                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14651            ) -> Self {
14652                tuple.into()
14653            }
14654            #[inline]
14655            fn tokenize(&self) -> Self::Token<'_> {
14656                (
14657                    <alloy::sol_types::sol_data::Uint<
14658                        32,
14659                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
14660                )
14661            }
14662            #[inline]
14663            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14664                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
14665            }
14666            #[inline]
14667            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14668                <Self::ReturnTuple<
14669                    '_,
14670                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14671                    .map(Into::into)
14672            }
14673            #[inline]
14674            fn abi_decode_returns_validate(
14675                data: &[u8],
14676            ) -> alloy_sol_types::Result<Self::Return> {
14677                <Self::ReturnTuple<
14678                    '_,
14679                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14680                    .map(Into::into)
14681            }
14682        }
14683    };
14684    #[derive(serde::Serialize, serde::Deserialize)]
14685    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14686    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
14687```solidity
14688function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
14689```*/
14690    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14691    #[derive(Clone)]
14692    pub struct stateHistoryCommitmentsCall(
14693        pub alloy::sol_types::private::primitives::aliases::U256,
14694    );
14695    #[derive(serde::Serialize, serde::Deserialize)]
14696    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14697    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
14698    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14699    #[derive(Clone)]
14700    pub struct stateHistoryCommitmentsReturn {
14701        #[allow(missing_docs)]
14702        pub l1BlockHeight: u64,
14703        #[allow(missing_docs)]
14704        pub l1BlockTimestamp: u64,
14705        #[allow(missing_docs)]
14706        pub hotShotBlockHeight: u64,
14707        #[allow(missing_docs)]
14708        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14709    }
14710    #[allow(
14711        non_camel_case_types,
14712        non_snake_case,
14713        clippy::pub_underscore_fields,
14714        clippy::style
14715    )]
14716    const _: () = {
14717        use alloy::sol_types as alloy_sol_types;
14718        {
14719            #[doc(hidden)]
14720            #[allow(dead_code)]
14721            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14722            #[doc(hidden)]
14723            type UnderlyingRustTuple<'a> = (
14724                alloy::sol_types::private::primitives::aliases::U256,
14725            );
14726            #[cfg(test)]
14727            #[allow(dead_code, unreachable_patterns)]
14728            fn _type_assertion(
14729                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14730            ) {
14731                match _t {
14732                    alloy_sol_types::private::AssertTypeEq::<
14733                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14734                    >(_) => {}
14735                }
14736            }
14737            #[automatically_derived]
14738            #[doc(hidden)]
14739            impl ::core::convert::From<stateHistoryCommitmentsCall>
14740            for UnderlyingRustTuple<'_> {
14741                fn from(value: stateHistoryCommitmentsCall) -> Self {
14742                    (value.0,)
14743                }
14744            }
14745            #[automatically_derived]
14746            #[doc(hidden)]
14747            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14748            for stateHistoryCommitmentsCall {
14749                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14750                    Self(tuple.0)
14751                }
14752            }
14753        }
14754        {
14755            #[doc(hidden)]
14756            #[allow(dead_code)]
14757            type UnderlyingSolTuple<'a> = (
14758                alloy::sol_types::sol_data::Uint<64>,
14759                alloy::sol_types::sol_data::Uint<64>,
14760                alloy::sol_types::sol_data::Uint<64>,
14761                BN254::ScalarField,
14762            );
14763            #[doc(hidden)]
14764            type UnderlyingRustTuple<'a> = (
14765                u64,
14766                u64,
14767                u64,
14768                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14769            );
14770            #[cfg(test)]
14771            #[allow(dead_code, unreachable_patterns)]
14772            fn _type_assertion(
14773                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14774            ) {
14775                match _t {
14776                    alloy_sol_types::private::AssertTypeEq::<
14777                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14778                    >(_) => {}
14779                }
14780            }
14781            #[automatically_derived]
14782            #[doc(hidden)]
14783            impl ::core::convert::From<stateHistoryCommitmentsReturn>
14784            for UnderlyingRustTuple<'_> {
14785                fn from(value: stateHistoryCommitmentsReturn) -> Self {
14786                    (
14787                        value.l1BlockHeight,
14788                        value.l1BlockTimestamp,
14789                        value.hotShotBlockHeight,
14790                        value.hotShotBlockCommRoot,
14791                    )
14792                }
14793            }
14794            #[automatically_derived]
14795            #[doc(hidden)]
14796            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14797            for stateHistoryCommitmentsReturn {
14798                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14799                    Self {
14800                        l1BlockHeight: tuple.0,
14801                        l1BlockTimestamp: tuple.1,
14802                        hotShotBlockHeight: tuple.2,
14803                        hotShotBlockCommRoot: tuple.3,
14804                    }
14805                }
14806            }
14807        }
14808        impl stateHistoryCommitmentsReturn {
14809            fn _tokenize(
14810                &self,
14811            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
14812                '_,
14813            > {
14814                (
14815                    <alloy::sol_types::sol_data::Uint<
14816                        64,
14817                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
14818                    <alloy::sol_types::sol_data::Uint<
14819                        64,
14820                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
14821                    <alloy::sol_types::sol_data::Uint<
14822                        64,
14823                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
14824                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14825                        &self.hotShotBlockCommRoot,
14826                    ),
14827                )
14828            }
14829        }
14830        #[automatically_derived]
14831        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
14832            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14833            type Token<'a> = <Self::Parameters<
14834                'a,
14835            > as alloy_sol_types::SolType>::Token<'a>;
14836            type Return = stateHistoryCommitmentsReturn;
14837            type ReturnTuple<'a> = (
14838                alloy::sol_types::sol_data::Uint<64>,
14839                alloy::sol_types::sol_data::Uint<64>,
14840                alloy::sol_types::sol_data::Uint<64>,
14841                BN254::ScalarField,
14842            );
14843            type ReturnToken<'a> = <Self::ReturnTuple<
14844                'a,
14845            > as alloy_sol_types::SolType>::Token<'a>;
14846            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
14847            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
14848            #[inline]
14849            fn new<'a>(
14850                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14851            ) -> Self {
14852                tuple.into()
14853            }
14854            #[inline]
14855            fn tokenize(&self) -> Self::Token<'_> {
14856                (
14857                    <alloy::sol_types::sol_data::Uint<
14858                        256,
14859                    > as alloy_sol_types::SolType>::tokenize(&self.0),
14860                )
14861            }
14862            #[inline]
14863            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14864                stateHistoryCommitmentsReturn::_tokenize(ret)
14865            }
14866            #[inline]
14867            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14868                <Self::ReturnTuple<
14869                    '_,
14870                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14871                    .map(Into::into)
14872            }
14873            #[inline]
14874            fn abi_decode_returns_validate(
14875                data: &[u8],
14876            ) -> alloy_sol_types::Result<Self::Return> {
14877                <Self::ReturnTuple<
14878                    '_,
14879                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14880                    .map(Into::into)
14881            }
14882        }
14883    };
14884    #[derive(serde::Serialize, serde::Deserialize)]
14885    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14886    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
14887```solidity
14888function stateHistoryFirstIndex() external view returns (uint64);
14889```*/
14890    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14891    #[derive(Clone)]
14892    pub struct stateHistoryFirstIndexCall;
14893    #[derive(serde::Serialize, serde::Deserialize)]
14894    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14895    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
14896    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14897    #[derive(Clone)]
14898    pub struct stateHistoryFirstIndexReturn {
14899        #[allow(missing_docs)]
14900        pub _0: u64,
14901    }
14902    #[allow(
14903        non_camel_case_types,
14904        non_snake_case,
14905        clippy::pub_underscore_fields,
14906        clippy::style
14907    )]
14908    const _: () = {
14909        use alloy::sol_types as alloy_sol_types;
14910        {
14911            #[doc(hidden)]
14912            #[allow(dead_code)]
14913            type UnderlyingSolTuple<'a> = ();
14914            #[doc(hidden)]
14915            type UnderlyingRustTuple<'a> = ();
14916            #[cfg(test)]
14917            #[allow(dead_code, unreachable_patterns)]
14918            fn _type_assertion(
14919                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14920            ) {
14921                match _t {
14922                    alloy_sol_types::private::AssertTypeEq::<
14923                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14924                    >(_) => {}
14925                }
14926            }
14927            #[automatically_derived]
14928            #[doc(hidden)]
14929            impl ::core::convert::From<stateHistoryFirstIndexCall>
14930            for UnderlyingRustTuple<'_> {
14931                fn from(value: stateHistoryFirstIndexCall) -> Self {
14932                    ()
14933                }
14934            }
14935            #[automatically_derived]
14936            #[doc(hidden)]
14937            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14938            for stateHistoryFirstIndexCall {
14939                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14940                    Self
14941                }
14942            }
14943        }
14944        {
14945            #[doc(hidden)]
14946            #[allow(dead_code)]
14947            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14948            #[doc(hidden)]
14949            type UnderlyingRustTuple<'a> = (u64,);
14950            #[cfg(test)]
14951            #[allow(dead_code, unreachable_patterns)]
14952            fn _type_assertion(
14953                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14954            ) {
14955                match _t {
14956                    alloy_sol_types::private::AssertTypeEq::<
14957                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14958                    >(_) => {}
14959                }
14960            }
14961            #[automatically_derived]
14962            #[doc(hidden)]
14963            impl ::core::convert::From<stateHistoryFirstIndexReturn>
14964            for UnderlyingRustTuple<'_> {
14965                fn from(value: stateHistoryFirstIndexReturn) -> Self {
14966                    (value._0,)
14967                }
14968            }
14969            #[automatically_derived]
14970            #[doc(hidden)]
14971            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14972            for stateHistoryFirstIndexReturn {
14973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14974                    Self { _0: tuple.0 }
14975                }
14976            }
14977        }
14978        #[automatically_derived]
14979        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
14980            type Parameters<'a> = ();
14981            type Token<'a> = <Self::Parameters<
14982                'a,
14983            > as alloy_sol_types::SolType>::Token<'a>;
14984            type Return = u64;
14985            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14986            type ReturnToken<'a> = <Self::ReturnTuple<
14987                'a,
14988            > as alloy_sol_types::SolType>::Token<'a>;
14989            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
14990            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
14991            #[inline]
14992            fn new<'a>(
14993                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14994            ) -> Self {
14995                tuple.into()
14996            }
14997            #[inline]
14998            fn tokenize(&self) -> Self::Token<'_> {
14999                ()
15000            }
15001            #[inline]
15002            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15003                (
15004                    <alloy::sol_types::sol_data::Uint<
15005                        64,
15006                    > as alloy_sol_types::SolType>::tokenize(ret),
15007                )
15008            }
15009            #[inline]
15010            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15011                <Self::ReturnTuple<
15012                    '_,
15013                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15014                    .map(|r| {
15015                        let r: stateHistoryFirstIndexReturn = r.into();
15016                        r._0
15017                    })
15018            }
15019            #[inline]
15020            fn abi_decode_returns_validate(
15021                data: &[u8],
15022            ) -> alloy_sol_types::Result<Self::Return> {
15023                <Self::ReturnTuple<
15024                    '_,
15025                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15026                    .map(|r| {
15027                        let r: stateHistoryFirstIndexReturn = r.into();
15028                        r._0
15029                    })
15030            }
15031        }
15032    };
15033    #[derive(serde::Serialize, serde::Deserialize)]
15034    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15035    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
15036```solidity
15037function stateHistoryRetentionPeriod() external view returns (uint32);
15038```*/
15039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15040    #[derive(Clone)]
15041    pub struct stateHistoryRetentionPeriodCall;
15042    #[derive(serde::Serialize, serde::Deserialize)]
15043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15044    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
15045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15046    #[derive(Clone)]
15047    pub struct stateHistoryRetentionPeriodReturn {
15048        #[allow(missing_docs)]
15049        pub _0: u32,
15050    }
15051    #[allow(
15052        non_camel_case_types,
15053        non_snake_case,
15054        clippy::pub_underscore_fields,
15055        clippy::style
15056    )]
15057    const _: () = {
15058        use alloy::sol_types as alloy_sol_types;
15059        {
15060            #[doc(hidden)]
15061            #[allow(dead_code)]
15062            type UnderlyingSolTuple<'a> = ();
15063            #[doc(hidden)]
15064            type UnderlyingRustTuple<'a> = ();
15065            #[cfg(test)]
15066            #[allow(dead_code, unreachable_patterns)]
15067            fn _type_assertion(
15068                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15069            ) {
15070                match _t {
15071                    alloy_sol_types::private::AssertTypeEq::<
15072                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15073                    >(_) => {}
15074                }
15075            }
15076            #[automatically_derived]
15077            #[doc(hidden)]
15078            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
15079            for UnderlyingRustTuple<'_> {
15080                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
15081                    ()
15082                }
15083            }
15084            #[automatically_derived]
15085            #[doc(hidden)]
15086            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15087            for stateHistoryRetentionPeriodCall {
15088                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15089                    Self
15090                }
15091            }
15092        }
15093        {
15094            #[doc(hidden)]
15095            #[allow(dead_code)]
15096            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
15097            #[doc(hidden)]
15098            type UnderlyingRustTuple<'a> = (u32,);
15099            #[cfg(test)]
15100            #[allow(dead_code, unreachable_patterns)]
15101            fn _type_assertion(
15102                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15103            ) {
15104                match _t {
15105                    alloy_sol_types::private::AssertTypeEq::<
15106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15107                    >(_) => {}
15108                }
15109            }
15110            #[automatically_derived]
15111            #[doc(hidden)]
15112            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
15113            for UnderlyingRustTuple<'_> {
15114                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
15115                    (value._0,)
15116                }
15117            }
15118            #[automatically_derived]
15119            #[doc(hidden)]
15120            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15121            for stateHistoryRetentionPeriodReturn {
15122                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15123                    Self { _0: tuple.0 }
15124                }
15125            }
15126        }
15127        #[automatically_derived]
15128        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
15129            type Parameters<'a> = ();
15130            type Token<'a> = <Self::Parameters<
15131                'a,
15132            > as alloy_sol_types::SolType>::Token<'a>;
15133            type Return = u32;
15134            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
15135            type ReturnToken<'a> = <Self::ReturnTuple<
15136                'a,
15137            > as alloy_sol_types::SolType>::Token<'a>;
15138            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
15139            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
15140            #[inline]
15141            fn new<'a>(
15142                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15143            ) -> Self {
15144                tuple.into()
15145            }
15146            #[inline]
15147            fn tokenize(&self) -> Self::Token<'_> {
15148                ()
15149            }
15150            #[inline]
15151            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15152                (
15153                    <alloy::sol_types::sol_data::Uint<
15154                        32,
15155                    > as alloy_sol_types::SolType>::tokenize(ret),
15156                )
15157            }
15158            #[inline]
15159            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15160                <Self::ReturnTuple<
15161                    '_,
15162                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15163                    .map(|r| {
15164                        let r: stateHistoryRetentionPeriodReturn = r.into();
15165                        r._0
15166                    })
15167            }
15168            #[inline]
15169            fn abi_decode_returns_validate(
15170                data: &[u8],
15171            ) -> alloy_sol_types::Result<Self::Return> {
15172                <Self::ReturnTuple<
15173                    '_,
15174                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15175                    .map(|r| {
15176                        let r: stateHistoryRetentionPeriodReturn = r.into();
15177                        r._0
15178                    })
15179            }
15180        }
15181    };
15182    #[derive(serde::Serialize, serde::Deserialize)]
15183    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15184    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
15185```solidity
15186function transferOwnership(address newOwner) external;
15187```*/
15188    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15189    #[derive(Clone)]
15190    pub struct transferOwnershipCall {
15191        #[allow(missing_docs)]
15192        pub newOwner: alloy::sol_types::private::Address,
15193    }
15194    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
15195    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15196    #[derive(Clone)]
15197    pub struct transferOwnershipReturn {}
15198    #[allow(
15199        non_camel_case_types,
15200        non_snake_case,
15201        clippy::pub_underscore_fields,
15202        clippy::style
15203    )]
15204    const _: () = {
15205        use alloy::sol_types as alloy_sol_types;
15206        {
15207            #[doc(hidden)]
15208            #[allow(dead_code)]
15209            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
15210            #[doc(hidden)]
15211            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
15212            #[cfg(test)]
15213            #[allow(dead_code, unreachable_patterns)]
15214            fn _type_assertion(
15215                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15216            ) {
15217                match _t {
15218                    alloy_sol_types::private::AssertTypeEq::<
15219                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15220                    >(_) => {}
15221                }
15222            }
15223            #[automatically_derived]
15224            #[doc(hidden)]
15225            impl ::core::convert::From<transferOwnershipCall>
15226            for UnderlyingRustTuple<'_> {
15227                fn from(value: transferOwnershipCall) -> Self {
15228                    (value.newOwner,)
15229                }
15230            }
15231            #[automatically_derived]
15232            #[doc(hidden)]
15233            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15234            for transferOwnershipCall {
15235                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15236                    Self { newOwner: tuple.0 }
15237                }
15238            }
15239        }
15240        {
15241            #[doc(hidden)]
15242            #[allow(dead_code)]
15243            type UnderlyingSolTuple<'a> = ();
15244            #[doc(hidden)]
15245            type UnderlyingRustTuple<'a> = ();
15246            #[cfg(test)]
15247            #[allow(dead_code, unreachable_patterns)]
15248            fn _type_assertion(
15249                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15250            ) {
15251                match _t {
15252                    alloy_sol_types::private::AssertTypeEq::<
15253                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15254                    >(_) => {}
15255                }
15256            }
15257            #[automatically_derived]
15258            #[doc(hidden)]
15259            impl ::core::convert::From<transferOwnershipReturn>
15260            for UnderlyingRustTuple<'_> {
15261                fn from(value: transferOwnershipReturn) -> Self {
15262                    ()
15263                }
15264            }
15265            #[automatically_derived]
15266            #[doc(hidden)]
15267            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15268            for transferOwnershipReturn {
15269                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15270                    Self {}
15271                }
15272            }
15273        }
15274        impl transferOwnershipReturn {
15275            fn _tokenize(
15276                &self,
15277            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15278                ()
15279            }
15280        }
15281        #[automatically_derived]
15282        impl alloy_sol_types::SolCall for transferOwnershipCall {
15283            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
15284            type Token<'a> = <Self::Parameters<
15285                'a,
15286            > as alloy_sol_types::SolType>::Token<'a>;
15287            type Return = transferOwnershipReturn;
15288            type ReturnTuple<'a> = ();
15289            type ReturnToken<'a> = <Self::ReturnTuple<
15290                'a,
15291            > as alloy_sol_types::SolType>::Token<'a>;
15292            const SIGNATURE: &'static str = "transferOwnership(address)";
15293            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
15294            #[inline]
15295            fn new<'a>(
15296                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15297            ) -> Self {
15298                tuple.into()
15299            }
15300            #[inline]
15301            fn tokenize(&self) -> Self::Token<'_> {
15302                (
15303                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15304                        &self.newOwner,
15305                    ),
15306                )
15307            }
15308            #[inline]
15309            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15310                transferOwnershipReturn::_tokenize(ret)
15311            }
15312            #[inline]
15313            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15314                <Self::ReturnTuple<
15315                    '_,
15316                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15317                    .map(Into::into)
15318            }
15319            #[inline]
15320            fn abi_decode_returns_validate(
15321                data: &[u8],
15322            ) -> alloy_sol_types::Result<Self::Return> {
15323                <Self::ReturnTuple<
15324                    '_,
15325                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15326                    .map(Into::into)
15327            }
15328        }
15329    };
15330    #[derive(serde::Serialize, serde::Deserialize)]
15331    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15332    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
15333```solidity
15334function updateEpochStartBlock(uint64 newEpochStartBlock) external;
15335```*/
15336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15337    #[derive(Clone)]
15338    pub struct updateEpochStartBlockCall {
15339        #[allow(missing_docs)]
15340        pub newEpochStartBlock: u64,
15341    }
15342    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
15343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15344    #[derive(Clone)]
15345    pub struct updateEpochStartBlockReturn {}
15346    #[allow(
15347        non_camel_case_types,
15348        non_snake_case,
15349        clippy::pub_underscore_fields,
15350        clippy::style
15351    )]
15352    const _: () = {
15353        use alloy::sol_types as alloy_sol_types;
15354        {
15355            #[doc(hidden)]
15356            #[allow(dead_code)]
15357            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
15358            #[doc(hidden)]
15359            type UnderlyingRustTuple<'a> = (u64,);
15360            #[cfg(test)]
15361            #[allow(dead_code, unreachable_patterns)]
15362            fn _type_assertion(
15363                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15364            ) {
15365                match _t {
15366                    alloy_sol_types::private::AssertTypeEq::<
15367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15368                    >(_) => {}
15369                }
15370            }
15371            #[automatically_derived]
15372            #[doc(hidden)]
15373            impl ::core::convert::From<updateEpochStartBlockCall>
15374            for UnderlyingRustTuple<'_> {
15375                fn from(value: updateEpochStartBlockCall) -> Self {
15376                    (value.newEpochStartBlock,)
15377                }
15378            }
15379            #[automatically_derived]
15380            #[doc(hidden)]
15381            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15382            for updateEpochStartBlockCall {
15383                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15384                    Self {
15385                        newEpochStartBlock: tuple.0,
15386                    }
15387                }
15388            }
15389        }
15390        {
15391            #[doc(hidden)]
15392            #[allow(dead_code)]
15393            type UnderlyingSolTuple<'a> = ();
15394            #[doc(hidden)]
15395            type UnderlyingRustTuple<'a> = ();
15396            #[cfg(test)]
15397            #[allow(dead_code, unreachable_patterns)]
15398            fn _type_assertion(
15399                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15400            ) {
15401                match _t {
15402                    alloy_sol_types::private::AssertTypeEq::<
15403                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15404                    >(_) => {}
15405                }
15406            }
15407            #[automatically_derived]
15408            #[doc(hidden)]
15409            impl ::core::convert::From<updateEpochStartBlockReturn>
15410            for UnderlyingRustTuple<'_> {
15411                fn from(value: updateEpochStartBlockReturn) -> Self {
15412                    ()
15413                }
15414            }
15415            #[automatically_derived]
15416            #[doc(hidden)]
15417            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15418            for updateEpochStartBlockReturn {
15419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15420                    Self {}
15421                }
15422            }
15423        }
15424        impl updateEpochStartBlockReturn {
15425            fn _tokenize(
15426                &self,
15427            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
15428                '_,
15429            > {
15430                ()
15431            }
15432        }
15433        #[automatically_derived]
15434        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
15435            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
15436            type Token<'a> = <Self::Parameters<
15437                'a,
15438            > as alloy_sol_types::SolType>::Token<'a>;
15439            type Return = updateEpochStartBlockReturn;
15440            type ReturnTuple<'a> = ();
15441            type ReturnToken<'a> = <Self::ReturnTuple<
15442                'a,
15443            > as alloy_sol_types::SolType>::Token<'a>;
15444            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
15445            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
15446            #[inline]
15447            fn new<'a>(
15448                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15449            ) -> Self {
15450                tuple.into()
15451            }
15452            #[inline]
15453            fn tokenize(&self) -> Self::Token<'_> {
15454                (
15455                    <alloy::sol_types::sol_data::Uint<
15456                        64,
15457                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
15458                )
15459            }
15460            #[inline]
15461            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15462                updateEpochStartBlockReturn::_tokenize(ret)
15463            }
15464            #[inline]
15465            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15466                <Self::ReturnTuple<
15467                    '_,
15468                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15469                    .map(Into::into)
15470            }
15471            #[inline]
15472            fn abi_decode_returns_validate(
15473                data: &[u8],
15474            ) -> alloy_sol_types::Result<Self::Return> {
15475                <Self::ReturnTuple<
15476                    '_,
15477                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15478                    .map(Into::into)
15479            }
15480        }
15481    };
15482    #[derive(serde::Serialize, serde::Deserialize)]
15483    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15484    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
15485```solidity
15486function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
15487```*/
15488    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15489    #[derive(Clone)]
15490    pub struct upgradeToAndCallCall {
15491        #[allow(missing_docs)]
15492        pub newImplementation: alloy::sol_types::private::Address,
15493        #[allow(missing_docs)]
15494        pub data: alloy::sol_types::private::Bytes,
15495    }
15496    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
15497    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15498    #[derive(Clone)]
15499    pub struct upgradeToAndCallReturn {}
15500    #[allow(
15501        non_camel_case_types,
15502        non_snake_case,
15503        clippy::pub_underscore_fields,
15504        clippy::style
15505    )]
15506    const _: () = {
15507        use alloy::sol_types as alloy_sol_types;
15508        {
15509            #[doc(hidden)]
15510            #[allow(dead_code)]
15511            type UnderlyingSolTuple<'a> = (
15512                alloy::sol_types::sol_data::Address,
15513                alloy::sol_types::sol_data::Bytes,
15514            );
15515            #[doc(hidden)]
15516            type UnderlyingRustTuple<'a> = (
15517                alloy::sol_types::private::Address,
15518                alloy::sol_types::private::Bytes,
15519            );
15520            #[cfg(test)]
15521            #[allow(dead_code, unreachable_patterns)]
15522            fn _type_assertion(
15523                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15524            ) {
15525                match _t {
15526                    alloy_sol_types::private::AssertTypeEq::<
15527                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15528                    >(_) => {}
15529                }
15530            }
15531            #[automatically_derived]
15532            #[doc(hidden)]
15533            impl ::core::convert::From<upgradeToAndCallCall>
15534            for UnderlyingRustTuple<'_> {
15535                fn from(value: upgradeToAndCallCall) -> Self {
15536                    (value.newImplementation, value.data)
15537                }
15538            }
15539            #[automatically_derived]
15540            #[doc(hidden)]
15541            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15542            for upgradeToAndCallCall {
15543                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15544                    Self {
15545                        newImplementation: tuple.0,
15546                        data: tuple.1,
15547                    }
15548                }
15549            }
15550        }
15551        {
15552            #[doc(hidden)]
15553            #[allow(dead_code)]
15554            type UnderlyingSolTuple<'a> = ();
15555            #[doc(hidden)]
15556            type UnderlyingRustTuple<'a> = ();
15557            #[cfg(test)]
15558            #[allow(dead_code, unreachable_patterns)]
15559            fn _type_assertion(
15560                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15561            ) {
15562                match _t {
15563                    alloy_sol_types::private::AssertTypeEq::<
15564                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15565                    >(_) => {}
15566                }
15567            }
15568            #[automatically_derived]
15569            #[doc(hidden)]
15570            impl ::core::convert::From<upgradeToAndCallReturn>
15571            for UnderlyingRustTuple<'_> {
15572                fn from(value: upgradeToAndCallReturn) -> Self {
15573                    ()
15574                }
15575            }
15576            #[automatically_derived]
15577            #[doc(hidden)]
15578            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15579            for upgradeToAndCallReturn {
15580                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15581                    Self {}
15582                }
15583            }
15584        }
15585        impl upgradeToAndCallReturn {
15586            fn _tokenize(
15587                &self,
15588            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15589                ()
15590            }
15591        }
15592        #[automatically_derived]
15593        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
15594            type Parameters<'a> = (
15595                alloy::sol_types::sol_data::Address,
15596                alloy::sol_types::sol_data::Bytes,
15597            );
15598            type Token<'a> = <Self::Parameters<
15599                'a,
15600            > as alloy_sol_types::SolType>::Token<'a>;
15601            type Return = upgradeToAndCallReturn;
15602            type ReturnTuple<'a> = ();
15603            type ReturnToken<'a> = <Self::ReturnTuple<
15604                'a,
15605            > as alloy_sol_types::SolType>::Token<'a>;
15606            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
15607            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
15608            #[inline]
15609            fn new<'a>(
15610                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15611            ) -> Self {
15612                tuple.into()
15613            }
15614            #[inline]
15615            fn tokenize(&self) -> Self::Token<'_> {
15616                (
15617                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15618                        &self.newImplementation,
15619                    ),
15620                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
15621                        &self.data,
15622                    ),
15623                )
15624            }
15625            #[inline]
15626            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15627                upgradeToAndCallReturn::_tokenize(ret)
15628            }
15629            #[inline]
15630            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15631                <Self::ReturnTuple<
15632                    '_,
15633                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15634                    .map(Into::into)
15635            }
15636            #[inline]
15637            fn abi_decode_returns_validate(
15638                data: &[u8],
15639            ) -> alloy_sol_types::Result<Self::Return> {
15640                <Self::ReturnTuple<
15641                    '_,
15642                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15643                    .map(Into::into)
15644            }
15645        }
15646    };
15647    #[derive(serde::Serialize, serde::Deserialize)]
15648    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15649    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
15650```solidity
15651function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
15652```*/
15653    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15654    #[derive(Clone)]
15655    pub struct votingStakeTableStateCall;
15656    #[derive(serde::Serialize, serde::Deserialize)]
15657    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15658    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
15659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15660    #[derive(Clone)]
15661    pub struct votingStakeTableStateReturn {
15662        #[allow(missing_docs)]
15663        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
15664        #[allow(missing_docs)]
15665        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15666        #[allow(missing_docs)]
15667        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15668        #[allow(missing_docs)]
15669        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15670    }
15671    #[allow(
15672        non_camel_case_types,
15673        non_snake_case,
15674        clippy::pub_underscore_fields,
15675        clippy::style
15676    )]
15677    const _: () = {
15678        use alloy::sol_types as alloy_sol_types;
15679        {
15680            #[doc(hidden)]
15681            #[allow(dead_code)]
15682            type UnderlyingSolTuple<'a> = ();
15683            #[doc(hidden)]
15684            type UnderlyingRustTuple<'a> = ();
15685            #[cfg(test)]
15686            #[allow(dead_code, unreachable_patterns)]
15687            fn _type_assertion(
15688                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15689            ) {
15690                match _t {
15691                    alloy_sol_types::private::AssertTypeEq::<
15692                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15693                    >(_) => {}
15694                }
15695            }
15696            #[automatically_derived]
15697            #[doc(hidden)]
15698            impl ::core::convert::From<votingStakeTableStateCall>
15699            for UnderlyingRustTuple<'_> {
15700                fn from(value: votingStakeTableStateCall) -> Self {
15701                    ()
15702                }
15703            }
15704            #[automatically_derived]
15705            #[doc(hidden)]
15706            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15707            for votingStakeTableStateCall {
15708                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15709                    Self
15710                }
15711            }
15712        }
15713        {
15714            #[doc(hidden)]
15715            #[allow(dead_code)]
15716            type UnderlyingSolTuple<'a> = (
15717                alloy::sol_types::sol_data::Uint<256>,
15718                BN254::ScalarField,
15719                BN254::ScalarField,
15720                BN254::ScalarField,
15721            );
15722            #[doc(hidden)]
15723            type UnderlyingRustTuple<'a> = (
15724                alloy::sol_types::private::primitives::aliases::U256,
15725                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15726                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15727                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15728            );
15729            #[cfg(test)]
15730            #[allow(dead_code, unreachable_patterns)]
15731            fn _type_assertion(
15732                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15733            ) {
15734                match _t {
15735                    alloy_sol_types::private::AssertTypeEq::<
15736                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15737                    >(_) => {}
15738                }
15739            }
15740            #[automatically_derived]
15741            #[doc(hidden)]
15742            impl ::core::convert::From<votingStakeTableStateReturn>
15743            for UnderlyingRustTuple<'_> {
15744                fn from(value: votingStakeTableStateReturn) -> Self {
15745                    (
15746                        value.threshold,
15747                        value.blsKeyComm,
15748                        value.schnorrKeyComm,
15749                        value.amountComm,
15750                    )
15751                }
15752            }
15753            #[automatically_derived]
15754            #[doc(hidden)]
15755            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15756            for votingStakeTableStateReturn {
15757                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15758                    Self {
15759                        threshold: tuple.0,
15760                        blsKeyComm: tuple.1,
15761                        schnorrKeyComm: tuple.2,
15762                        amountComm: tuple.3,
15763                    }
15764                }
15765            }
15766        }
15767        impl votingStakeTableStateReturn {
15768            fn _tokenize(
15769                &self,
15770            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
15771                '_,
15772            > {
15773                (
15774                    <alloy::sol_types::sol_data::Uint<
15775                        256,
15776                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
15777                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15778                        &self.blsKeyComm,
15779                    ),
15780                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15781                        &self.schnorrKeyComm,
15782                    ),
15783                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15784                        &self.amountComm,
15785                    ),
15786                )
15787            }
15788        }
15789        #[automatically_derived]
15790        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
15791            type Parameters<'a> = ();
15792            type Token<'a> = <Self::Parameters<
15793                'a,
15794            > as alloy_sol_types::SolType>::Token<'a>;
15795            type Return = votingStakeTableStateReturn;
15796            type ReturnTuple<'a> = (
15797                alloy::sol_types::sol_data::Uint<256>,
15798                BN254::ScalarField,
15799                BN254::ScalarField,
15800                BN254::ScalarField,
15801            );
15802            type ReturnToken<'a> = <Self::ReturnTuple<
15803                'a,
15804            > as alloy_sol_types::SolType>::Token<'a>;
15805            const SIGNATURE: &'static str = "votingStakeTableState()";
15806            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
15807            #[inline]
15808            fn new<'a>(
15809                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15810            ) -> Self {
15811                tuple.into()
15812            }
15813            #[inline]
15814            fn tokenize(&self) -> Self::Token<'_> {
15815                ()
15816            }
15817            #[inline]
15818            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15819                votingStakeTableStateReturn::_tokenize(ret)
15820            }
15821            #[inline]
15822            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15823                <Self::ReturnTuple<
15824                    '_,
15825                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15826                    .map(Into::into)
15827            }
15828            #[inline]
15829            fn abi_decode_returns_validate(
15830                data: &[u8],
15831            ) -> alloy_sol_types::Result<Self::Return> {
15832                <Self::ReturnTuple<
15833                    '_,
15834                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
15835                    .map(Into::into)
15836            }
15837        }
15838    };
15839    ///Container for all the [`LightClientV3Mock`](self) function calls.
15840    #[derive(Clone)]
15841    #[derive(serde::Serialize, serde::Deserialize)]
15842    #[derive()]
15843    pub enum LightClientV3MockCalls {
15844        #[allow(missing_docs)]
15845        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
15846        #[allow(missing_docs)]
15847        _getVk(_getVkCall),
15848        #[allow(missing_docs)]
15849        authRoot(authRootCall),
15850        #[allow(missing_docs)]
15851        blocksPerEpoch(blocksPerEpochCall),
15852        #[allow(missing_docs)]
15853        currentBlockNumber(currentBlockNumberCall),
15854        #[allow(missing_docs)]
15855        currentEpoch(currentEpochCall),
15856        #[allow(missing_docs)]
15857        disablePermissionedProverMode(disablePermissionedProverModeCall),
15858        #[allow(missing_docs)]
15859        epochFromBlockNumber(epochFromBlockNumberCall),
15860        #[allow(missing_docs)]
15861        epochStartBlock(epochStartBlockCall),
15862        #[allow(missing_docs)]
15863        finalizedState(finalizedStateCall),
15864        #[allow(missing_docs)]
15865        firstEpoch(firstEpochCall),
15866        #[allow(missing_docs)]
15867        genesisStakeTableState(genesisStakeTableStateCall),
15868        #[allow(missing_docs)]
15869        genesisState(genesisStateCall),
15870        #[allow(missing_docs)]
15871        getHotShotCommitment(getHotShotCommitmentCall),
15872        #[allow(missing_docs)]
15873        getStateHistoryCount(getStateHistoryCountCall),
15874        #[allow(missing_docs)]
15875        getVersion(getVersionCall),
15876        #[allow(missing_docs)]
15877        initialize(initializeCall),
15878        #[allow(missing_docs)]
15879        initializeV2(initializeV2Call),
15880        #[allow(missing_docs)]
15881        initializeV3(initializeV3Call),
15882        #[allow(missing_docs)]
15883        isEpochRoot(isEpochRootCall),
15884        #[allow(missing_docs)]
15885        isGtEpochRoot(isGtEpochRootCall),
15886        #[allow(missing_docs)]
15887        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
15888        #[allow(missing_docs)]
15889        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
15890        #[allow(missing_docs)]
15891        newFinalizedState_0(newFinalizedState_0Call),
15892        #[allow(missing_docs)]
15893        newFinalizedState_1(newFinalizedState_1Call),
15894        #[allow(missing_docs)]
15895        newFinalizedState_2(newFinalizedState_2Call),
15896        #[allow(missing_docs)]
15897        owner(ownerCall),
15898        #[allow(missing_docs)]
15899        permissionedProver(permissionedProverCall),
15900        #[allow(missing_docs)]
15901        proxiableUUID(proxiableUUIDCall),
15902        #[allow(missing_docs)]
15903        renounceOwnership(renounceOwnershipCall),
15904        #[allow(missing_docs)]
15905        setAuthRoot(setAuthRootCall),
15906        #[allow(missing_docs)]
15907        setBlocksPerEpoch(setBlocksPerEpochCall),
15908        #[allow(missing_docs)]
15909        setFinalizedState(setFinalizedStateCall),
15910        #[allow(missing_docs)]
15911        setHotShotDownSince(setHotShotDownSinceCall),
15912        #[allow(missing_docs)]
15913        setHotShotUp(setHotShotUpCall),
15914        #[allow(missing_docs)]
15915        setPermissionedProver(setPermissionedProverCall),
15916        #[allow(missing_docs)]
15917        setStateHistory(setStateHistoryCall),
15918        #[allow(missing_docs)]
15919        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
15920        #[allow(missing_docs)]
15921        setVotingStakeTableState(setVotingStakeTableStateCall),
15922        #[allow(missing_docs)]
15923        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
15924        #[allow(missing_docs)]
15925        stateHistoryCommitments(stateHistoryCommitmentsCall),
15926        #[allow(missing_docs)]
15927        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
15928        #[allow(missing_docs)]
15929        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
15930        #[allow(missing_docs)]
15931        transferOwnership(transferOwnershipCall),
15932        #[allow(missing_docs)]
15933        updateEpochStartBlock(updateEpochStartBlockCall),
15934        #[allow(missing_docs)]
15935        upgradeToAndCall(upgradeToAndCallCall),
15936        #[allow(missing_docs)]
15937        votingStakeTableState(votingStakeTableStateCall),
15938    }
15939    impl LightClientV3MockCalls {
15940        /// All the selectors of this enum.
15941        ///
15942        /// Note that the selectors might not be in the same order as the variants.
15943        /// No guarantees are made about the order of the selectors.
15944        ///
15945        /// Prefer using `SolInterface` methods instead.
15946        pub const SELECTORS: &'static [[u8; 4usize]] = &[
15947            [1u8, 63u8, 165u8, 252u8],
15948            [2u8, 181u8, 146u8, 243u8],
15949            [6u8, 37u8, 225u8, 155u8],
15950            [13u8, 142u8, 110u8, 44u8],
15951            [18u8, 23u8, 60u8, 44u8],
15952            [22u8, 122u8, 198u8, 24u8],
15953            [26u8, 240u8, 128u8, 52u8],
15954            [32u8, 99u8, 212u8, 247u8],
15955            [37u8, 41u8, 116u8, 39u8],
15956            [45u8, 82u8, 170u8, 214u8],
15957            [47u8, 121u8, 136u8, 157u8],
15958            [48u8, 12u8, 137u8, 221u8],
15959            [49u8, 61u8, 247u8, 177u8],
15960            [55u8, 142u8, 194u8, 59u8],
15961            [56u8, 228u8, 84u8, 177u8],
15962            [60u8, 35u8, 182u8, 219u8],
15963            [62u8, 213u8, 91u8, 123u8],
15964            [65u8, 104u8, 39u8, 68u8],
15965            [66u8, 109u8, 49u8, 148u8],
15966            [67u8, 61u8, 186u8, 159u8],
15967            [79u8, 30u8, 242u8, 134u8],
15968            [82u8, 209u8, 144u8, 45u8],
15969            [98u8, 58u8, 19u8, 56u8],
15970            [105u8, 204u8, 106u8, 4u8],
15971            [113u8, 80u8, 24u8, 166u8],
15972            [117u8, 124u8, 55u8, 173u8],
15973            [118u8, 103u8, 24u8, 8u8],
15974            [130u8, 110u8, 65u8, 252u8],
15975            [133u8, 132u8, 210u8, 63u8],
15976            [141u8, 165u8, 203u8, 91u8],
15977            [144u8, 193u8, 67u8, 144u8],
15978            [150u8, 193u8, 202u8, 97u8],
15979            [153u8, 131u8, 40u8, 232u8],
15980            [155u8, 170u8, 60u8, 201u8],
15981            [159u8, 219u8, 84u8, 167u8],
15982            [170u8, 189u8, 93u8, 179u8],
15983            [173u8, 60u8, 177u8, 204u8],
15984            [179u8, 59u8, 196u8, 145u8],
15985            [181u8, 173u8, 234u8, 60u8],
15986            [194u8, 59u8, 158u8, 158u8],
15987            [200u8, 229u8, 228u8, 152u8],
15988            [210u8, 77u8, 147u8, 61u8],
15989            [224u8, 48u8, 51u8, 1u8],
15990            [240u8, 104u8, 32u8, 84u8],
15991            [242u8, 253u8, 227u8, 139u8],
15992            [245u8, 103u8, 97u8, 96u8],
15993            [249u8, 229u8, 13u8, 25u8],
15994        ];
15995        /// The names of the variants in the same order as `SELECTORS`.
15996        pub const VARIANT_NAMES: &'static [&'static str] = &[
15997            ::core::stringify!(setPermissionedProver),
15998            ::core::stringify!(stateHistoryCommitments),
15999            ::core::stringify!(votingStakeTableState),
16000            ::core::stringify!(getVersion),
16001            ::core::stringify!(_getVk),
16002            ::core::stringify!(updateEpochStartBlock),
16003            ::core::stringify!(setAuthRoot),
16004            ::core::stringify!(newFinalizedState_0),
16005            ::core::stringify!(isEpochRoot),
16006            ::core::stringify!(setHotShotDownSince),
16007            ::core::stringify!(stateHistoryFirstIndex),
16008            ::core::stringify!(isGtEpochRoot),
16009            ::core::stringify!(permissionedProver),
16010            ::core::stringify!(currentBlockNumber),
16011            ::core::stringify!(initializeV3),
16012            ::core::stringify!(setBlocksPerEpoch),
16013            ::core::stringify!(epochStartBlock),
16014            ::core::stringify!(firstEpoch),
16015            ::core::stringify!(genesisStakeTableState),
16016            ::core::stringify!(setStateHistoryRetentionPeriod),
16017            ::core::stringify!(upgradeToAndCall),
16018            ::core::stringify!(proxiableUUID),
16019            ::core::stringify!(setVotingStakeTableState),
16020            ::core::stringify!(disablePermissionedProverMode),
16021            ::core::stringify!(renounceOwnership),
16022            ::core::stringify!(newFinalizedState_1),
16023            ::core::stringify!(currentEpoch),
16024            ::core::stringify!(isPermissionedProverEnabled),
16025            ::core::stringify!(getHotShotCommitment),
16026            ::core::stringify!(owner),
16027            ::core::stringify!(epochFromBlockNumber),
16028            ::core::stringify!(setstateHistoryRetentionPeriod),
16029            ::core::stringify!(authRoot),
16030            ::core::stringify!(initialize),
16031            ::core::stringify!(finalizedState),
16032            ::core::stringify!(newFinalizedState_2),
16033            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
16034            ::core::stringify!(initializeV2),
16035            ::core::stringify!(setFinalizedState),
16036            ::core::stringify!(stateHistoryRetentionPeriod),
16037            ::core::stringify!(setHotShotUp),
16038            ::core::stringify!(genesisState),
16039            ::core::stringify!(lagOverEscapeHatchThreshold),
16040            ::core::stringify!(blocksPerEpoch),
16041            ::core::stringify!(transferOwnership),
16042            ::core::stringify!(setStateHistory),
16043            ::core::stringify!(getStateHistoryCount),
16044        ];
16045        /// The signatures in the same order as `SELECTORS`.
16046        pub const SIGNATURES: &'static [&'static str] = &[
16047            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
16048            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
16049            <votingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16050            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
16051            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
16052            <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
16053            <setAuthRootCall as alloy_sol_types::SolCall>::SIGNATURE,
16054            <newFinalizedState_0Call as alloy_sol_types::SolCall>::SIGNATURE,
16055            <isEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
16056            <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SIGNATURE,
16057            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
16058            <isGtEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
16059            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
16060            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
16061            <initializeV3Call as alloy_sol_types::SolCall>::SIGNATURE,
16062            <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
16063            <epochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
16064            <firstEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
16065            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16066            <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
16067            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
16068            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
16069            <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16070            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
16071            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
16072            <newFinalizedState_1Call as alloy_sol_types::SolCall>::SIGNATURE,
16073            <currentEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
16074            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
16075            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
16076            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
16077            <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
16078            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
16079            <authRootCall as alloy_sol_types::SolCall>::SIGNATURE,
16080            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
16081            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16082            <newFinalizedState_2Call as alloy_sol_types::SolCall>::SIGNATURE,
16083            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
16084            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
16085            <setFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16086            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
16087            <setHotShotUpCall as alloy_sol_types::SolCall>::SIGNATURE,
16088            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16089            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
16090            <blocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
16091            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
16092            <setStateHistoryCall as alloy_sol_types::SolCall>::SIGNATURE,
16093            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
16094        ];
16095        /// Returns the signature for the given selector, if known.
16096        #[inline]
16097        pub fn signature_by_selector(
16098            selector: [u8; 4usize],
16099        ) -> ::core::option::Option<&'static str> {
16100            match Self::SELECTORS.binary_search(&selector) {
16101                ::core::result::Result::Ok(idx) => {
16102                    ::core::option::Option::Some(Self::SIGNATURES[idx])
16103                }
16104                ::core::result::Result::Err(_) => ::core::option::Option::None,
16105            }
16106        }
16107        /// Returns the enum variant name for the given selector, if known.
16108        #[inline]
16109        pub fn name_by_selector(
16110            selector: [u8; 4usize],
16111        ) -> ::core::option::Option<&'static str> {
16112            let sig = Self::signature_by_selector(selector)?;
16113            sig.split_once('(').map(|(name, _)| name)
16114        }
16115    }
16116    #[automatically_derived]
16117    impl alloy_sol_types::SolInterface for LightClientV3MockCalls {
16118        const NAME: &'static str = "LightClientV3MockCalls";
16119        const MIN_DATA_LENGTH: usize = 0usize;
16120        const COUNT: usize = 47usize;
16121        #[inline]
16122        fn selector(&self) -> [u8; 4] {
16123            match self {
16124                Self::UPGRADE_INTERFACE_VERSION(_) => {
16125                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
16126                }
16127                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
16128                Self::authRoot(_) => <authRootCall as alloy_sol_types::SolCall>::SELECTOR,
16129                Self::blocksPerEpoch(_) => {
16130                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
16131                }
16132                Self::currentBlockNumber(_) => {
16133                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
16134                }
16135                Self::currentEpoch(_) => {
16136                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
16137                }
16138                Self::disablePermissionedProverMode(_) => {
16139                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
16140                }
16141                Self::epochFromBlockNumber(_) => {
16142                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
16143                }
16144                Self::epochStartBlock(_) => {
16145                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
16146                }
16147                Self::finalizedState(_) => {
16148                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
16149                }
16150                Self::firstEpoch(_) => {
16151                    <firstEpochCall as alloy_sol_types::SolCall>::SELECTOR
16152                }
16153                Self::genesisStakeTableState(_) => {
16154                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
16155                }
16156                Self::genesisState(_) => {
16157                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
16158                }
16159                Self::getHotShotCommitment(_) => {
16160                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
16161                }
16162                Self::getStateHistoryCount(_) => {
16163                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
16164                }
16165                Self::getVersion(_) => {
16166                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
16167                }
16168                Self::initialize(_) => {
16169                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
16170                }
16171                Self::initializeV2(_) => {
16172                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
16173                }
16174                Self::initializeV3(_) => {
16175                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
16176                }
16177                Self::isEpochRoot(_) => {
16178                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
16179                }
16180                Self::isGtEpochRoot(_) => {
16181                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
16182                }
16183                Self::isPermissionedProverEnabled(_) => {
16184                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
16185                }
16186                Self::lagOverEscapeHatchThreshold(_) => {
16187                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
16188                }
16189                Self::newFinalizedState_0(_) => {
16190                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
16191                }
16192                Self::newFinalizedState_1(_) => {
16193                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
16194                }
16195                Self::newFinalizedState_2(_) => {
16196                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::SELECTOR
16197                }
16198                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
16199                Self::permissionedProver(_) => {
16200                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
16201                }
16202                Self::proxiableUUID(_) => {
16203                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
16204                }
16205                Self::renounceOwnership(_) => {
16206                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
16207                }
16208                Self::setAuthRoot(_) => {
16209                    <setAuthRootCall as alloy_sol_types::SolCall>::SELECTOR
16210                }
16211                Self::setBlocksPerEpoch(_) => {
16212                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
16213                }
16214                Self::setFinalizedState(_) => {
16215                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
16216                }
16217                Self::setHotShotDownSince(_) => {
16218                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
16219                }
16220                Self::setHotShotUp(_) => {
16221                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
16222                }
16223                Self::setPermissionedProver(_) => {
16224                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
16225                }
16226                Self::setStateHistory(_) => {
16227                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
16228                }
16229                Self::setStateHistoryRetentionPeriod(_) => {
16230                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
16231                }
16232                Self::setVotingStakeTableState(_) => {
16233                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
16234                }
16235                Self::setstateHistoryRetentionPeriod(_) => {
16236                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
16237                }
16238                Self::stateHistoryCommitments(_) => {
16239                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
16240                }
16241                Self::stateHistoryFirstIndex(_) => {
16242                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
16243                }
16244                Self::stateHistoryRetentionPeriod(_) => {
16245                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
16246                }
16247                Self::transferOwnership(_) => {
16248                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
16249                }
16250                Self::updateEpochStartBlock(_) => {
16251                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
16252                }
16253                Self::upgradeToAndCall(_) => {
16254                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
16255                }
16256                Self::votingStakeTableState(_) => {
16257                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
16258                }
16259            }
16260        }
16261        #[inline]
16262        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
16263            Self::SELECTORS.get(i).copied()
16264        }
16265        #[inline]
16266        fn valid_selector(selector: [u8; 4]) -> bool {
16267            Self::SELECTORS.binary_search(&selector).is_ok()
16268        }
16269        #[inline]
16270        #[allow(non_snake_case)]
16271        fn abi_decode_raw(
16272            selector: [u8; 4],
16273            data: &[u8],
16274        ) -> alloy_sol_types::Result<Self> {
16275            static DECODE_SHIMS: &[fn(
16276                &[u8],
16277            ) -> alloy_sol_types::Result<LightClientV3MockCalls>] = &[
16278                {
16279                    fn setPermissionedProver(
16280                        data: &[u8],
16281                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16282                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
16283                                data,
16284                            )
16285                            .map(LightClientV3MockCalls::setPermissionedProver)
16286                    }
16287                    setPermissionedProver
16288                },
16289                {
16290                    fn stateHistoryCommitments(
16291                        data: &[u8],
16292                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16293                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
16294                                data,
16295                            )
16296                            .map(LightClientV3MockCalls::stateHistoryCommitments)
16297                    }
16298                    stateHistoryCommitments
16299                },
16300                {
16301                    fn votingStakeTableState(
16302                        data: &[u8],
16303                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16304                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16305                                data,
16306                            )
16307                            .map(LightClientV3MockCalls::votingStakeTableState)
16308                    }
16309                    votingStakeTableState
16310                },
16311                {
16312                    fn getVersion(
16313                        data: &[u8],
16314                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16315                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
16316                                data,
16317                            )
16318                            .map(LightClientV3MockCalls::getVersion)
16319                    }
16320                    getVersion
16321                },
16322                {
16323                    fn _getVk(
16324                        data: &[u8],
16325                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16326                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16327                            .map(LightClientV3MockCalls::_getVk)
16328                    }
16329                    _getVk
16330                },
16331                {
16332                    fn updateEpochStartBlock(
16333                        data: &[u8],
16334                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16335                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
16336                                data,
16337                            )
16338                            .map(LightClientV3MockCalls::updateEpochStartBlock)
16339                    }
16340                    updateEpochStartBlock
16341                },
16342                {
16343                    fn setAuthRoot(
16344                        data: &[u8],
16345                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16346                        <setAuthRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
16347                                data,
16348                            )
16349                            .map(LightClientV3MockCalls::setAuthRoot)
16350                    }
16351                    setAuthRoot
16352                },
16353                {
16354                    fn newFinalizedState_0(
16355                        data: &[u8],
16356                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16357                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
16358                                data,
16359                            )
16360                            .map(LightClientV3MockCalls::newFinalizedState_0)
16361                    }
16362                    newFinalizedState_0
16363                },
16364                {
16365                    fn isEpochRoot(
16366                        data: &[u8],
16367                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16368                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
16369                                data,
16370                            )
16371                            .map(LightClientV3MockCalls::isEpochRoot)
16372                    }
16373                    isEpochRoot
16374                },
16375                {
16376                    fn setHotShotDownSince(
16377                        data: &[u8],
16378                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16379                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
16380                                data,
16381                            )
16382                            .map(LightClientV3MockCalls::setHotShotDownSince)
16383                    }
16384                    setHotShotDownSince
16385                },
16386                {
16387                    fn stateHistoryFirstIndex(
16388                        data: &[u8],
16389                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16390                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
16391                                data,
16392                            )
16393                            .map(LightClientV3MockCalls::stateHistoryFirstIndex)
16394                    }
16395                    stateHistoryFirstIndex
16396                },
16397                {
16398                    fn isGtEpochRoot(
16399                        data: &[u8],
16400                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16401                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
16402                                data,
16403                            )
16404                            .map(LightClientV3MockCalls::isGtEpochRoot)
16405                    }
16406                    isGtEpochRoot
16407                },
16408                {
16409                    fn permissionedProver(
16410                        data: &[u8],
16411                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16412                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
16413                                data,
16414                            )
16415                            .map(LightClientV3MockCalls::permissionedProver)
16416                    }
16417                    permissionedProver
16418                },
16419                {
16420                    fn currentBlockNumber(
16421                        data: &[u8],
16422                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16423                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
16424                                data,
16425                            )
16426                            .map(LightClientV3MockCalls::currentBlockNumber)
16427                    }
16428                    currentBlockNumber
16429                },
16430                {
16431                    fn initializeV3(
16432                        data: &[u8],
16433                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16434                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw(
16435                                data,
16436                            )
16437                            .map(LightClientV3MockCalls::initializeV3)
16438                    }
16439                    initializeV3
16440                },
16441                {
16442                    fn setBlocksPerEpoch(
16443                        data: &[u8],
16444                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16445                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16446                                data,
16447                            )
16448                            .map(LightClientV3MockCalls::setBlocksPerEpoch)
16449                    }
16450                    setBlocksPerEpoch
16451                },
16452                {
16453                    fn epochStartBlock(
16454                        data: &[u8],
16455                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16456                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
16457                                data,
16458                            )
16459                            .map(LightClientV3MockCalls::epochStartBlock)
16460                    }
16461                    epochStartBlock
16462                },
16463                {
16464                    fn firstEpoch(
16465                        data: &[u8],
16466                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16467                        <firstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16468                                data,
16469                            )
16470                            .map(LightClientV3MockCalls::firstEpoch)
16471                    }
16472                    firstEpoch
16473                },
16474                {
16475                    fn genesisStakeTableState(
16476                        data: &[u8],
16477                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16478                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16479                                data,
16480                            )
16481                            .map(LightClientV3MockCalls::genesisStakeTableState)
16482                    }
16483                    genesisStakeTableState
16484                },
16485                {
16486                    fn setStateHistoryRetentionPeriod(
16487                        data: &[u8],
16488                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16489                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
16490                                data,
16491                            )
16492                            .map(LightClientV3MockCalls::setStateHistoryRetentionPeriod)
16493                    }
16494                    setStateHistoryRetentionPeriod
16495                },
16496                {
16497                    fn upgradeToAndCall(
16498                        data: &[u8],
16499                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16500                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
16501                                data,
16502                            )
16503                            .map(LightClientV3MockCalls::upgradeToAndCall)
16504                    }
16505                    upgradeToAndCall
16506                },
16507                {
16508                    fn proxiableUUID(
16509                        data: &[u8],
16510                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16511                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
16512                                data,
16513                            )
16514                            .map(LightClientV3MockCalls::proxiableUUID)
16515                    }
16516                    proxiableUUID
16517                },
16518                {
16519                    fn setVotingStakeTableState(
16520                        data: &[u8],
16521                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16522                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16523                                data,
16524                            )
16525                            .map(LightClientV3MockCalls::setVotingStakeTableState)
16526                    }
16527                    setVotingStakeTableState
16528                },
16529                {
16530                    fn disablePermissionedProverMode(
16531                        data: &[u8],
16532                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16533                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
16534                                data,
16535                            )
16536                            .map(LightClientV3MockCalls::disablePermissionedProverMode)
16537                    }
16538                    disablePermissionedProverMode
16539                },
16540                {
16541                    fn renounceOwnership(
16542                        data: &[u8],
16543                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16544                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
16545                                data,
16546                            )
16547                            .map(LightClientV3MockCalls::renounceOwnership)
16548                    }
16549                    renounceOwnership
16550                },
16551                {
16552                    fn newFinalizedState_1(
16553                        data: &[u8],
16554                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16555                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
16556                                data,
16557                            )
16558                            .map(LightClientV3MockCalls::newFinalizedState_1)
16559                    }
16560                    newFinalizedState_1
16561                },
16562                {
16563                    fn currentEpoch(
16564                        data: &[u8],
16565                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16566                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16567                                data,
16568                            )
16569                            .map(LightClientV3MockCalls::currentEpoch)
16570                    }
16571                    currentEpoch
16572                },
16573                {
16574                    fn isPermissionedProverEnabled(
16575                        data: &[u8],
16576                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16577                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
16578                                data,
16579                            )
16580                            .map(LightClientV3MockCalls::isPermissionedProverEnabled)
16581                    }
16582                    isPermissionedProverEnabled
16583                },
16584                {
16585                    fn getHotShotCommitment(
16586                        data: &[u8],
16587                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16588                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
16589                                data,
16590                            )
16591                            .map(LightClientV3MockCalls::getHotShotCommitment)
16592                    }
16593                    getHotShotCommitment
16594                },
16595                {
16596                    fn owner(
16597                        data: &[u8],
16598                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16599                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16600                            .map(LightClientV3MockCalls::owner)
16601                    }
16602                    owner
16603                },
16604                {
16605                    fn epochFromBlockNumber(
16606                        data: &[u8],
16607                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16608                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
16609                                data,
16610                            )
16611                            .map(LightClientV3MockCalls::epochFromBlockNumber)
16612                    }
16613                    epochFromBlockNumber
16614                },
16615                {
16616                    fn setstateHistoryRetentionPeriod(
16617                        data: &[u8],
16618                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16619                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
16620                                data,
16621                            )
16622                            .map(LightClientV3MockCalls::setstateHistoryRetentionPeriod)
16623                    }
16624                    setstateHistoryRetentionPeriod
16625                },
16626                {
16627                    fn authRoot(
16628                        data: &[u8],
16629                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16630                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
16631                            .map(LightClientV3MockCalls::authRoot)
16632                    }
16633                    authRoot
16634                },
16635                {
16636                    fn initialize(
16637                        data: &[u8],
16638                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16639                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
16640                                data,
16641                            )
16642                            .map(LightClientV3MockCalls::initialize)
16643                    }
16644                    initialize
16645                },
16646                {
16647                    fn finalizedState(
16648                        data: &[u8],
16649                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16650                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16651                                data,
16652                            )
16653                            .map(LightClientV3MockCalls::finalizedState)
16654                    }
16655                    finalizedState
16656                },
16657                {
16658                    fn newFinalizedState_2(
16659                        data: &[u8],
16660                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16661                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw(
16662                                data,
16663                            )
16664                            .map(LightClientV3MockCalls::newFinalizedState_2)
16665                    }
16666                    newFinalizedState_2
16667                },
16668                {
16669                    fn UPGRADE_INTERFACE_VERSION(
16670                        data: &[u8],
16671                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16672                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
16673                                data,
16674                            )
16675                            .map(LightClientV3MockCalls::UPGRADE_INTERFACE_VERSION)
16676                    }
16677                    UPGRADE_INTERFACE_VERSION
16678                },
16679                {
16680                    fn initializeV2(
16681                        data: &[u8],
16682                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16683                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
16684                                data,
16685                            )
16686                            .map(LightClientV3MockCalls::initializeV2)
16687                    }
16688                    initializeV2
16689                },
16690                {
16691                    fn setFinalizedState(
16692                        data: &[u8],
16693                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16694                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16695                                data,
16696                            )
16697                            .map(LightClientV3MockCalls::setFinalizedState)
16698                    }
16699                    setFinalizedState
16700                },
16701                {
16702                    fn stateHistoryRetentionPeriod(
16703                        data: &[u8],
16704                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16705                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
16706                                data,
16707                            )
16708                            .map(LightClientV3MockCalls::stateHistoryRetentionPeriod)
16709                    }
16710                    stateHistoryRetentionPeriod
16711                },
16712                {
16713                    fn setHotShotUp(
16714                        data: &[u8],
16715                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16716                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
16717                                data,
16718                            )
16719                            .map(LightClientV3MockCalls::setHotShotUp)
16720                    }
16721                    setHotShotUp
16722                },
16723                {
16724                    fn genesisState(
16725                        data: &[u8],
16726                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16727                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
16728                                data,
16729                            )
16730                            .map(LightClientV3MockCalls::genesisState)
16731                    }
16732                    genesisState
16733                },
16734                {
16735                    fn lagOverEscapeHatchThreshold(
16736                        data: &[u8],
16737                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16738                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
16739                                data,
16740                            )
16741                            .map(LightClientV3MockCalls::lagOverEscapeHatchThreshold)
16742                    }
16743                    lagOverEscapeHatchThreshold
16744                },
16745                {
16746                    fn blocksPerEpoch(
16747                        data: &[u8],
16748                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16749                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
16750                                data,
16751                            )
16752                            .map(LightClientV3MockCalls::blocksPerEpoch)
16753                    }
16754                    blocksPerEpoch
16755                },
16756                {
16757                    fn transferOwnership(
16758                        data: &[u8],
16759                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16760                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
16761                                data,
16762                            )
16763                            .map(LightClientV3MockCalls::transferOwnership)
16764                    }
16765                    transferOwnership
16766                },
16767                {
16768                    fn setStateHistory(
16769                        data: &[u8],
16770                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16771                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
16772                                data,
16773                            )
16774                            .map(LightClientV3MockCalls::setStateHistory)
16775                    }
16776                    setStateHistory
16777                },
16778                {
16779                    fn getStateHistoryCount(
16780                        data: &[u8],
16781                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16782                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
16783                                data,
16784                            )
16785                            .map(LightClientV3MockCalls::getStateHistoryCount)
16786                    }
16787                    getStateHistoryCount
16788                },
16789            ];
16790            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16791                return Err(
16792                    alloy_sol_types::Error::unknown_selector(
16793                        <Self as alloy_sol_types::SolInterface>::NAME,
16794                        selector,
16795                    ),
16796                );
16797            };
16798            DECODE_SHIMS[idx](data)
16799        }
16800        #[inline]
16801        #[allow(non_snake_case)]
16802        fn abi_decode_raw_validate(
16803            selector: [u8; 4],
16804            data: &[u8],
16805        ) -> alloy_sol_types::Result<Self> {
16806            static DECODE_VALIDATE_SHIMS: &[fn(
16807                &[u8],
16808            ) -> alloy_sol_types::Result<LightClientV3MockCalls>] = &[
16809                {
16810                    fn setPermissionedProver(
16811                        data: &[u8],
16812                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16813                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16814                                data,
16815                            )
16816                            .map(LightClientV3MockCalls::setPermissionedProver)
16817                    }
16818                    setPermissionedProver
16819                },
16820                {
16821                    fn stateHistoryCommitments(
16822                        data: &[u8],
16823                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16824                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16825                                data,
16826                            )
16827                            .map(LightClientV3MockCalls::stateHistoryCommitments)
16828                    }
16829                    stateHistoryCommitments
16830                },
16831                {
16832                    fn votingStakeTableState(
16833                        data: &[u8],
16834                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16835                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16836                                data,
16837                            )
16838                            .map(LightClientV3MockCalls::votingStakeTableState)
16839                    }
16840                    votingStakeTableState
16841                },
16842                {
16843                    fn getVersion(
16844                        data: &[u8],
16845                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16846                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16847                                data,
16848                            )
16849                            .map(LightClientV3MockCalls::getVersion)
16850                    }
16851                    getVersion
16852                },
16853                {
16854                    fn _getVk(
16855                        data: &[u8],
16856                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16857                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16858                                data,
16859                            )
16860                            .map(LightClientV3MockCalls::_getVk)
16861                    }
16862                    _getVk
16863                },
16864                {
16865                    fn updateEpochStartBlock(
16866                        data: &[u8],
16867                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16868                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16869                                data,
16870                            )
16871                            .map(LightClientV3MockCalls::updateEpochStartBlock)
16872                    }
16873                    updateEpochStartBlock
16874                },
16875                {
16876                    fn setAuthRoot(
16877                        data: &[u8],
16878                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16879                        <setAuthRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16880                                data,
16881                            )
16882                            .map(LightClientV3MockCalls::setAuthRoot)
16883                    }
16884                    setAuthRoot
16885                },
16886                {
16887                    fn newFinalizedState_0(
16888                        data: &[u8],
16889                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16890                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16891                                data,
16892                            )
16893                            .map(LightClientV3MockCalls::newFinalizedState_0)
16894                    }
16895                    newFinalizedState_0
16896                },
16897                {
16898                    fn isEpochRoot(
16899                        data: &[u8],
16900                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16901                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16902                                data,
16903                            )
16904                            .map(LightClientV3MockCalls::isEpochRoot)
16905                    }
16906                    isEpochRoot
16907                },
16908                {
16909                    fn setHotShotDownSince(
16910                        data: &[u8],
16911                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16912                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16913                                data,
16914                            )
16915                            .map(LightClientV3MockCalls::setHotShotDownSince)
16916                    }
16917                    setHotShotDownSince
16918                },
16919                {
16920                    fn stateHistoryFirstIndex(
16921                        data: &[u8],
16922                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16923                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16924                                data,
16925                            )
16926                            .map(LightClientV3MockCalls::stateHistoryFirstIndex)
16927                    }
16928                    stateHistoryFirstIndex
16929                },
16930                {
16931                    fn isGtEpochRoot(
16932                        data: &[u8],
16933                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16934                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16935                                data,
16936                            )
16937                            .map(LightClientV3MockCalls::isGtEpochRoot)
16938                    }
16939                    isGtEpochRoot
16940                },
16941                {
16942                    fn permissionedProver(
16943                        data: &[u8],
16944                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16945                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16946                                data,
16947                            )
16948                            .map(LightClientV3MockCalls::permissionedProver)
16949                    }
16950                    permissionedProver
16951                },
16952                {
16953                    fn currentBlockNumber(
16954                        data: &[u8],
16955                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16956                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16957                                data,
16958                            )
16959                            .map(LightClientV3MockCalls::currentBlockNumber)
16960                    }
16961                    currentBlockNumber
16962                },
16963                {
16964                    fn initializeV3(
16965                        data: &[u8],
16966                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16967                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16968                                data,
16969                            )
16970                            .map(LightClientV3MockCalls::initializeV3)
16971                    }
16972                    initializeV3
16973                },
16974                {
16975                    fn setBlocksPerEpoch(
16976                        data: &[u8],
16977                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16978                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16979                                data,
16980                            )
16981                            .map(LightClientV3MockCalls::setBlocksPerEpoch)
16982                    }
16983                    setBlocksPerEpoch
16984                },
16985                {
16986                    fn epochStartBlock(
16987                        data: &[u8],
16988                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16989                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
16990                                data,
16991                            )
16992                            .map(LightClientV3MockCalls::epochStartBlock)
16993                    }
16994                    epochStartBlock
16995                },
16996                {
16997                    fn firstEpoch(
16998                        data: &[u8],
16999                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17000                        <firstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17001                                data,
17002                            )
17003                            .map(LightClientV3MockCalls::firstEpoch)
17004                    }
17005                    firstEpoch
17006                },
17007                {
17008                    fn genesisStakeTableState(
17009                        data: &[u8],
17010                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17011                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17012                                data,
17013                            )
17014                            .map(LightClientV3MockCalls::genesisStakeTableState)
17015                    }
17016                    genesisStakeTableState
17017                },
17018                {
17019                    fn setStateHistoryRetentionPeriod(
17020                        data: &[u8],
17021                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17022                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17023                                data,
17024                            )
17025                            .map(LightClientV3MockCalls::setStateHistoryRetentionPeriod)
17026                    }
17027                    setStateHistoryRetentionPeriod
17028                },
17029                {
17030                    fn upgradeToAndCall(
17031                        data: &[u8],
17032                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17033                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17034                                data,
17035                            )
17036                            .map(LightClientV3MockCalls::upgradeToAndCall)
17037                    }
17038                    upgradeToAndCall
17039                },
17040                {
17041                    fn proxiableUUID(
17042                        data: &[u8],
17043                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17044                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17045                                data,
17046                            )
17047                            .map(LightClientV3MockCalls::proxiableUUID)
17048                    }
17049                    proxiableUUID
17050                },
17051                {
17052                    fn setVotingStakeTableState(
17053                        data: &[u8],
17054                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17055                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17056                                data,
17057                            )
17058                            .map(LightClientV3MockCalls::setVotingStakeTableState)
17059                    }
17060                    setVotingStakeTableState
17061                },
17062                {
17063                    fn disablePermissionedProverMode(
17064                        data: &[u8],
17065                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17066                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17067                                data,
17068                            )
17069                            .map(LightClientV3MockCalls::disablePermissionedProverMode)
17070                    }
17071                    disablePermissionedProverMode
17072                },
17073                {
17074                    fn renounceOwnership(
17075                        data: &[u8],
17076                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17077                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17078                                data,
17079                            )
17080                            .map(LightClientV3MockCalls::renounceOwnership)
17081                    }
17082                    renounceOwnership
17083                },
17084                {
17085                    fn newFinalizedState_1(
17086                        data: &[u8],
17087                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17088                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17089                                data,
17090                            )
17091                            .map(LightClientV3MockCalls::newFinalizedState_1)
17092                    }
17093                    newFinalizedState_1
17094                },
17095                {
17096                    fn currentEpoch(
17097                        data: &[u8],
17098                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17099                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17100                                data,
17101                            )
17102                            .map(LightClientV3MockCalls::currentEpoch)
17103                    }
17104                    currentEpoch
17105                },
17106                {
17107                    fn isPermissionedProverEnabled(
17108                        data: &[u8],
17109                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17110                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17111                                data,
17112                            )
17113                            .map(LightClientV3MockCalls::isPermissionedProverEnabled)
17114                    }
17115                    isPermissionedProverEnabled
17116                },
17117                {
17118                    fn getHotShotCommitment(
17119                        data: &[u8],
17120                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17121                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17122                                data,
17123                            )
17124                            .map(LightClientV3MockCalls::getHotShotCommitment)
17125                    }
17126                    getHotShotCommitment
17127                },
17128                {
17129                    fn owner(
17130                        data: &[u8],
17131                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17132                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17133                                data,
17134                            )
17135                            .map(LightClientV3MockCalls::owner)
17136                    }
17137                    owner
17138                },
17139                {
17140                    fn epochFromBlockNumber(
17141                        data: &[u8],
17142                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17143                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17144                                data,
17145                            )
17146                            .map(LightClientV3MockCalls::epochFromBlockNumber)
17147                    }
17148                    epochFromBlockNumber
17149                },
17150                {
17151                    fn setstateHistoryRetentionPeriod(
17152                        data: &[u8],
17153                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17154                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17155                                data,
17156                            )
17157                            .map(LightClientV3MockCalls::setstateHistoryRetentionPeriod)
17158                    }
17159                    setstateHistoryRetentionPeriod
17160                },
17161                {
17162                    fn authRoot(
17163                        data: &[u8],
17164                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17165                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17166                                data,
17167                            )
17168                            .map(LightClientV3MockCalls::authRoot)
17169                    }
17170                    authRoot
17171                },
17172                {
17173                    fn initialize(
17174                        data: &[u8],
17175                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17176                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17177                                data,
17178                            )
17179                            .map(LightClientV3MockCalls::initialize)
17180                    }
17181                    initialize
17182                },
17183                {
17184                    fn finalizedState(
17185                        data: &[u8],
17186                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17187                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17188                                data,
17189                            )
17190                            .map(LightClientV3MockCalls::finalizedState)
17191                    }
17192                    finalizedState
17193                },
17194                {
17195                    fn newFinalizedState_2(
17196                        data: &[u8],
17197                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17198                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17199                                data,
17200                            )
17201                            .map(LightClientV3MockCalls::newFinalizedState_2)
17202                    }
17203                    newFinalizedState_2
17204                },
17205                {
17206                    fn UPGRADE_INTERFACE_VERSION(
17207                        data: &[u8],
17208                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17209                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17210                                data,
17211                            )
17212                            .map(LightClientV3MockCalls::UPGRADE_INTERFACE_VERSION)
17213                    }
17214                    UPGRADE_INTERFACE_VERSION
17215                },
17216                {
17217                    fn initializeV2(
17218                        data: &[u8],
17219                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17220                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17221                                data,
17222                            )
17223                            .map(LightClientV3MockCalls::initializeV2)
17224                    }
17225                    initializeV2
17226                },
17227                {
17228                    fn setFinalizedState(
17229                        data: &[u8],
17230                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17231                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17232                                data,
17233                            )
17234                            .map(LightClientV3MockCalls::setFinalizedState)
17235                    }
17236                    setFinalizedState
17237                },
17238                {
17239                    fn stateHistoryRetentionPeriod(
17240                        data: &[u8],
17241                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17242                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17243                                data,
17244                            )
17245                            .map(LightClientV3MockCalls::stateHistoryRetentionPeriod)
17246                    }
17247                    stateHistoryRetentionPeriod
17248                },
17249                {
17250                    fn setHotShotUp(
17251                        data: &[u8],
17252                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17253                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17254                                data,
17255                            )
17256                            .map(LightClientV3MockCalls::setHotShotUp)
17257                    }
17258                    setHotShotUp
17259                },
17260                {
17261                    fn genesisState(
17262                        data: &[u8],
17263                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17264                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17265                                data,
17266                            )
17267                            .map(LightClientV3MockCalls::genesisState)
17268                    }
17269                    genesisState
17270                },
17271                {
17272                    fn lagOverEscapeHatchThreshold(
17273                        data: &[u8],
17274                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17275                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17276                                data,
17277                            )
17278                            .map(LightClientV3MockCalls::lagOverEscapeHatchThreshold)
17279                    }
17280                    lagOverEscapeHatchThreshold
17281                },
17282                {
17283                    fn blocksPerEpoch(
17284                        data: &[u8],
17285                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17286                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17287                                data,
17288                            )
17289                            .map(LightClientV3MockCalls::blocksPerEpoch)
17290                    }
17291                    blocksPerEpoch
17292                },
17293                {
17294                    fn transferOwnership(
17295                        data: &[u8],
17296                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17297                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17298                                data,
17299                            )
17300                            .map(LightClientV3MockCalls::transferOwnership)
17301                    }
17302                    transferOwnership
17303                },
17304                {
17305                    fn setStateHistory(
17306                        data: &[u8],
17307                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17308                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17309                                data,
17310                            )
17311                            .map(LightClientV3MockCalls::setStateHistory)
17312                    }
17313                    setStateHistory
17314                },
17315                {
17316                    fn getStateHistoryCount(
17317                        data: &[u8],
17318                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17319                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
17320                                data,
17321                            )
17322                            .map(LightClientV3MockCalls::getStateHistoryCount)
17323                    }
17324                    getStateHistoryCount
17325                },
17326            ];
17327            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17328                return Err(
17329                    alloy_sol_types::Error::unknown_selector(
17330                        <Self as alloy_sol_types::SolInterface>::NAME,
17331                        selector,
17332                    ),
17333                );
17334            };
17335            DECODE_VALIDATE_SHIMS[idx](data)
17336        }
17337        #[inline]
17338        fn abi_encoded_size(&self) -> usize {
17339            match self {
17340                Self::UPGRADE_INTERFACE_VERSION(inner) => {
17341                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
17342                        inner,
17343                    )
17344                }
17345                Self::_getVk(inner) => {
17346                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17347                }
17348                Self::authRoot(inner) => {
17349                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17350                }
17351                Self::blocksPerEpoch(inner) => {
17352                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
17353                        inner,
17354                    )
17355                }
17356                Self::currentBlockNumber(inner) => {
17357                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
17358                        inner,
17359                    )
17360                }
17361                Self::currentEpoch(inner) => {
17362                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
17363                        inner,
17364                    )
17365                }
17366                Self::disablePermissionedProverMode(inner) => {
17367                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
17368                        inner,
17369                    )
17370                }
17371                Self::epochFromBlockNumber(inner) => {
17372                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
17373                        inner,
17374                    )
17375                }
17376                Self::epochStartBlock(inner) => {
17377                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
17378                        inner,
17379                    )
17380                }
17381                Self::finalizedState(inner) => {
17382                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17383                        inner,
17384                    )
17385                }
17386                Self::firstEpoch(inner) => {
17387                    <firstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17388                }
17389                Self::genesisStakeTableState(inner) => {
17390                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17391                        inner,
17392                    )
17393                }
17394                Self::genesisState(inner) => {
17395                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17396                        inner,
17397                    )
17398                }
17399                Self::getHotShotCommitment(inner) => {
17400                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
17401                        inner,
17402                    )
17403                }
17404                Self::getStateHistoryCount(inner) => {
17405                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
17406                        inner,
17407                    )
17408                }
17409                Self::getVersion(inner) => {
17410                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17411                }
17412                Self::initialize(inner) => {
17413                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17414                }
17415                Self::initializeV2(inner) => {
17416                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
17417                        inner,
17418                    )
17419                }
17420                Self::initializeV3(inner) => {
17421                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
17422                        inner,
17423                    )
17424                }
17425                Self::isEpochRoot(inner) => {
17426                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17427                        inner,
17428                    )
17429                }
17430                Self::isGtEpochRoot(inner) => {
17431                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17432                        inner,
17433                    )
17434                }
17435                Self::isPermissionedProverEnabled(inner) => {
17436                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
17437                        inner,
17438                    )
17439                }
17440                Self::lagOverEscapeHatchThreshold(inner) => {
17441                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
17442                        inner,
17443                    )
17444                }
17445                Self::newFinalizedState_0(inner) => {
17446                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
17447                        inner,
17448                    )
17449                }
17450                Self::newFinalizedState_1(inner) => {
17451                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
17452                        inner,
17453                    )
17454                }
17455                Self::newFinalizedState_2(inner) => {
17456                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
17457                        inner,
17458                    )
17459                }
17460                Self::owner(inner) => {
17461                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17462                }
17463                Self::permissionedProver(inner) => {
17464                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
17465                        inner,
17466                    )
17467                }
17468                Self::proxiableUUID(inner) => {
17469                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
17470                        inner,
17471                    )
17472                }
17473                Self::renounceOwnership(inner) => {
17474                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
17475                        inner,
17476                    )
17477                }
17478                Self::setAuthRoot(inner) => {
17479                    <setAuthRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17480                        inner,
17481                    )
17482                }
17483                Self::setBlocksPerEpoch(inner) => {
17484                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
17485                        inner,
17486                    )
17487                }
17488                Self::setFinalizedState(inner) => {
17489                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17490                        inner,
17491                    )
17492                }
17493                Self::setHotShotDownSince(inner) => {
17494                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
17495                        inner,
17496                    )
17497                }
17498                Self::setHotShotUp(inner) => {
17499                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
17500                        inner,
17501                    )
17502                }
17503                Self::setPermissionedProver(inner) => {
17504                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
17505                        inner,
17506                    )
17507                }
17508                Self::setStateHistory(inner) => {
17509                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
17510                        inner,
17511                    )
17512                }
17513                Self::setStateHistoryRetentionPeriod(inner) => {
17514                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17515                        inner,
17516                    )
17517                }
17518                Self::setVotingStakeTableState(inner) => {
17519                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17520                        inner,
17521                    )
17522                }
17523                Self::setstateHistoryRetentionPeriod(inner) => {
17524                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17525                        inner,
17526                    )
17527                }
17528                Self::stateHistoryCommitments(inner) => {
17529                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17530                        inner,
17531                    )
17532                }
17533                Self::stateHistoryFirstIndex(inner) => {
17534                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
17535                        inner,
17536                    )
17537                }
17538                Self::stateHistoryRetentionPeriod(inner) => {
17539                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17540                        inner,
17541                    )
17542                }
17543                Self::transferOwnership(inner) => {
17544                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
17545                        inner,
17546                    )
17547                }
17548                Self::updateEpochStartBlock(inner) => {
17549                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
17550                        inner,
17551                    )
17552                }
17553                Self::upgradeToAndCall(inner) => {
17554                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
17555                        inner,
17556                    )
17557                }
17558                Self::votingStakeTableState(inner) => {
17559                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17560                        inner,
17561                    )
17562                }
17563            }
17564        }
17565        #[inline]
17566        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
17567            match self {
17568                Self::UPGRADE_INTERFACE_VERSION(inner) => {
17569                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
17570                        inner,
17571                        out,
17572                    )
17573                }
17574                Self::_getVk(inner) => {
17575                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17576                }
17577                Self::authRoot(inner) => {
17578                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17579                        inner,
17580                        out,
17581                    )
17582                }
17583                Self::blocksPerEpoch(inner) => {
17584                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17585                        inner,
17586                        out,
17587                    )
17588                }
17589                Self::currentBlockNumber(inner) => {
17590                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
17591                        inner,
17592                        out,
17593                    )
17594                }
17595                Self::currentEpoch(inner) => {
17596                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17597                        inner,
17598                        out,
17599                    )
17600                }
17601                Self::disablePermissionedProverMode(inner) => {
17602                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
17603                        inner,
17604                        out,
17605                    )
17606                }
17607                Self::epochFromBlockNumber(inner) => {
17608                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
17609                        inner,
17610                        out,
17611                    )
17612                }
17613                Self::epochStartBlock(inner) => {
17614                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
17615                        inner,
17616                        out,
17617                    )
17618                }
17619                Self::finalizedState(inner) => {
17620                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17621                        inner,
17622                        out,
17623                    )
17624                }
17625                Self::firstEpoch(inner) => {
17626                    <firstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17627                        inner,
17628                        out,
17629                    )
17630                }
17631                Self::genesisStakeTableState(inner) => {
17632                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17633                        inner,
17634                        out,
17635                    )
17636                }
17637                Self::genesisState(inner) => {
17638                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17639                        inner,
17640                        out,
17641                    )
17642                }
17643                Self::getHotShotCommitment(inner) => {
17644                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
17645                        inner,
17646                        out,
17647                    )
17648                }
17649                Self::getStateHistoryCount(inner) => {
17650                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
17651                        inner,
17652                        out,
17653                    )
17654                }
17655                Self::getVersion(inner) => {
17656                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
17657                        inner,
17658                        out,
17659                    )
17660                }
17661                Self::initialize(inner) => {
17662                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
17663                        inner,
17664                        out,
17665                    )
17666                }
17667                Self::initializeV2(inner) => {
17668                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
17669                        inner,
17670                        out,
17671                    )
17672                }
17673                Self::initializeV3(inner) => {
17674                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
17675                        inner,
17676                        out,
17677                    )
17678                }
17679                Self::isEpochRoot(inner) => {
17680                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17681                        inner,
17682                        out,
17683                    )
17684                }
17685                Self::isGtEpochRoot(inner) => {
17686                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17687                        inner,
17688                        out,
17689                    )
17690                }
17691                Self::isPermissionedProverEnabled(inner) => {
17692                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
17693                        inner,
17694                        out,
17695                    )
17696                }
17697                Self::lagOverEscapeHatchThreshold(inner) => {
17698                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
17699                        inner,
17700                        out,
17701                    )
17702                }
17703                Self::newFinalizedState_0(inner) => {
17704                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
17705                        inner,
17706                        out,
17707                    )
17708                }
17709                Self::newFinalizedState_1(inner) => {
17710                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
17711                        inner,
17712                        out,
17713                    )
17714                }
17715                Self::newFinalizedState_2(inner) => {
17716                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
17717                        inner,
17718                        out,
17719                    )
17720                }
17721                Self::owner(inner) => {
17722                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17723                }
17724                Self::permissionedProver(inner) => {
17725                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
17726                        inner,
17727                        out,
17728                    )
17729                }
17730                Self::proxiableUUID(inner) => {
17731                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
17732                        inner,
17733                        out,
17734                    )
17735                }
17736                Self::renounceOwnership(inner) => {
17737                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
17738                        inner,
17739                        out,
17740                    )
17741                }
17742                Self::setAuthRoot(inner) => {
17743                    <setAuthRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17744                        inner,
17745                        out,
17746                    )
17747                }
17748                Self::setBlocksPerEpoch(inner) => {
17749                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17750                        inner,
17751                        out,
17752                    )
17753                }
17754                Self::setFinalizedState(inner) => {
17755                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17756                        inner,
17757                        out,
17758                    )
17759                }
17760                Self::setHotShotDownSince(inner) => {
17761                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
17762                        inner,
17763                        out,
17764                    )
17765                }
17766                Self::setHotShotUp(inner) => {
17767                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
17768                        inner,
17769                        out,
17770                    )
17771                }
17772                Self::setPermissionedProver(inner) => {
17773                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
17774                        inner,
17775                        out,
17776                    )
17777                }
17778                Self::setStateHistory(inner) => {
17779                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
17780                        inner,
17781                        out,
17782                    )
17783                }
17784                Self::setStateHistoryRetentionPeriod(inner) => {
17785                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17786                        inner,
17787                        out,
17788                    )
17789                }
17790                Self::setVotingStakeTableState(inner) => {
17791                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17792                        inner,
17793                        out,
17794                    )
17795                }
17796                Self::setstateHistoryRetentionPeriod(inner) => {
17797                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17798                        inner,
17799                        out,
17800                    )
17801                }
17802                Self::stateHistoryCommitments(inner) => {
17803                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
17804                        inner,
17805                        out,
17806                    )
17807                }
17808                Self::stateHistoryFirstIndex(inner) => {
17809                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
17810                        inner,
17811                        out,
17812                    )
17813                }
17814                Self::stateHistoryRetentionPeriod(inner) => {
17815                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17816                        inner,
17817                        out,
17818                    )
17819                }
17820                Self::transferOwnership(inner) => {
17821                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
17822                        inner,
17823                        out,
17824                    )
17825                }
17826                Self::updateEpochStartBlock(inner) => {
17827                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
17828                        inner,
17829                        out,
17830                    )
17831                }
17832                Self::upgradeToAndCall(inner) => {
17833                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
17834                        inner,
17835                        out,
17836                    )
17837                }
17838                Self::votingStakeTableState(inner) => {
17839                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17840                        inner,
17841                        out,
17842                    )
17843                }
17844            }
17845        }
17846    }
17847    ///Container for all the [`LightClientV3Mock`](self) custom errors.
17848    #[derive(Clone)]
17849    #[derive(serde::Serialize, serde::Deserialize)]
17850    #[derive(Debug, PartialEq, Eq, Hash)]
17851    pub enum LightClientV3MockErrors {
17852        #[allow(missing_docs)]
17853        AddressEmptyCode(AddressEmptyCode),
17854        #[allow(missing_docs)]
17855        DeprecatedApi(DeprecatedApi),
17856        #[allow(missing_docs)]
17857        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
17858        #[allow(missing_docs)]
17859        ERC1967NonPayable(ERC1967NonPayable),
17860        #[allow(missing_docs)]
17861        FailedInnerCall(FailedInnerCall),
17862        #[allow(missing_docs)]
17863        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
17864        #[allow(missing_docs)]
17865        InvalidAddress(InvalidAddress),
17866        #[allow(missing_docs)]
17867        InvalidArgs(InvalidArgs),
17868        #[allow(missing_docs)]
17869        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
17870        #[allow(missing_docs)]
17871        InvalidInitialization(InvalidInitialization),
17872        #[allow(missing_docs)]
17873        InvalidMaxStateHistory(InvalidMaxStateHistory),
17874        #[allow(missing_docs)]
17875        InvalidProof(InvalidProof),
17876        #[allow(missing_docs)]
17877        InvalidScalar(InvalidScalar),
17878        #[allow(missing_docs)]
17879        MissingEpochRootUpdate(MissingEpochRootUpdate),
17880        #[allow(missing_docs)]
17881        NoChangeRequired(NoChangeRequired),
17882        #[allow(missing_docs)]
17883        NotInitializing(NotInitializing),
17884        #[allow(missing_docs)]
17885        OutdatedState(OutdatedState),
17886        #[allow(missing_docs)]
17887        OwnableInvalidOwner(OwnableInvalidOwner),
17888        #[allow(missing_docs)]
17889        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
17890        #[allow(missing_docs)]
17891        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
17892        #[allow(missing_docs)]
17893        ProverNotPermissioned(ProverNotPermissioned),
17894        #[allow(missing_docs)]
17895        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
17896        #[allow(missing_docs)]
17897        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
17898        #[allow(missing_docs)]
17899        WrongStakeTableUsed(WrongStakeTableUsed),
17900    }
17901    impl LightClientV3MockErrors {
17902        /// All the selectors of this enum.
17903        ///
17904        /// Note that the selectors might not be in the same order as the variants.
17905        /// No guarantees are made about the order of the selectors.
17906        ///
17907        /// Prefer using `SolInterface` methods instead.
17908        pub const SELECTORS: &'static [[u8; 4usize]] = &[
17909            [5u8, 28u8, 70u8, 239u8],
17910            [5u8, 176u8, 92u8, 204u8],
17911            [8u8, 10u8, 232u8, 217u8],
17912            [9u8, 189u8, 227u8, 57u8],
17913            [17u8, 140u8, 218u8, 167u8],
17914            [20u8, 37u8, 234u8, 66u8],
17915            [30u8, 79u8, 189u8, 247u8],
17916            [47u8, 171u8, 146u8, 202u8],
17917            [76u8, 156u8, 140u8, 227u8],
17918            [78u8, 64u8, 92u8, 141u8],
17919            [81u8, 97u8, 128u8, 137u8],
17920            [97u8, 90u8, 146u8, 100u8],
17921            [153u8, 150u8, 179u8, 21u8],
17922            [161u8, 186u8, 7u8, 238u8],
17923            [163u8, 166u8, 71u8, 128u8],
17924            [168u8, 99u8, 174u8, 201u8],
17925            [170u8, 29u8, 73u8, 164u8],
17926            [176u8, 180u8, 56u8, 119u8],
17927            [179u8, 152u8, 151u8, 159u8],
17928            [215u8, 230u8, 188u8, 248u8],
17929            [224u8, 124u8, 141u8, 186u8],
17930            [230u8, 196u8, 36u8, 123u8],
17931            [244u8, 160u8, 238u8, 224u8],
17932            [249u8, 46u8, 232u8, 169u8],
17933        ];
17934        /// The names of the variants in the same order as `SELECTORS`.
17935        pub const VARIANT_NAMES: &'static [&'static str] = &[
17936            ::core::stringify!(OutdatedState),
17937            ::core::stringify!(InvalidScalar),
17938            ::core::stringify!(MissingEpochRootUpdate),
17939            ::core::stringify!(InvalidProof),
17940            ::core::stringify!(OwnableUnauthorizedAccount),
17941            ::core::stringify!(FailedInnerCall),
17942            ::core::stringify!(OwnableInvalidOwner),
17943            ::core::stringify!(OwnershipCannotBeRenounced),
17944            ::core::stringify!(ERC1967InvalidImplementation),
17945            ::core::stringify!(DeprecatedApi),
17946            ::core::stringify!(WrongStakeTableUsed),
17947            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
17948            ::core::stringify!(AddressEmptyCode),
17949            ::core::stringify!(InvalidArgs),
17950            ::core::stringify!(ProverNotPermissioned),
17951            ::core::stringify!(NoChangeRequired),
17952            ::core::stringify!(UUPSUnsupportedProxiableUUID),
17953            ::core::stringify!(InsufficientSnapshotHistory),
17954            ::core::stringify!(ERC1967NonPayable),
17955            ::core::stringify!(NotInitializing),
17956            ::core::stringify!(UUPSUnauthorizedCallContext),
17957            ::core::stringify!(InvalidAddress),
17958            ::core::stringify!(InvalidMaxStateHistory),
17959            ::core::stringify!(InvalidInitialization),
17960        ];
17961        /// The signatures in the same order as `SELECTORS`.
17962        pub const SIGNATURES: &'static [&'static str] = &[
17963            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
17964            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
17965            <MissingEpochRootUpdate as alloy_sol_types::SolError>::SIGNATURE,
17966            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
17967            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
17968            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
17969            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
17970            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
17971            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
17972            <DeprecatedApi as alloy_sol_types::SolError>::SIGNATURE,
17973            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
17974            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
17975            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
17976            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
17977            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
17978            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
17979            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
17980            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
17981            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
17982            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
17983            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
17984            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
17985            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
17986            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
17987        ];
17988        /// Returns the signature for the given selector, if known.
17989        #[inline]
17990        pub fn signature_by_selector(
17991            selector: [u8; 4usize],
17992        ) -> ::core::option::Option<&'static str> {
17993            match Self::SELECTORS.binary_search(&selector) {
17994                ::core::result::Result::Ok(idx) => {
17995                    ::core::option::Option::Some(Self::SIGNATURES[idx])
17996                }
17997                ::core::result::Result::Err(_) => ::core::option::Option::None,
17998            }
17999        }
18000        /// Returns the enum variant name for the given selector, if known.
18001        #[inline]
18002        pub fn name_by_selector(
18003            selector: [u8; 4usize],
18004        ) -> ::core::option::Option<&'static str> {
18005            let sig = Self::signature_by_selector(selector)?;
18006            sig.split_once('(').map(|(name, _)| name)
18007        }
18008    }
18009    #[automatically_derived]
18010    impl alloy_sol_types::SolInterface for LightClientV3MockErrors {
18011        const NAME: &'static str = "LightClientV3MockErrors";
18012        const MIN_DATA_LENGTH: usize = 0usize;
18013        const COUNT: usize = 24usize;
18014        #[inline]
18015        fn selector(&self) -> [u8; 4] {
18016            match self {
18017                Self::AddressEmptyCode(_) => {
18018                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
18019                }
18020                Self::DeprecatedApi(_) => {
18021                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
18022                }
18023                Self::ERC1967InvalidImplementation(_) => {
18024                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
18025                }
18026                Self::ERC1967NonPayable(_) => {
18027                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
18028                }
18029                Self::FailedInnerCall(_) => {
18030                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
18031                }
18032                Self::InsufficientSnapshotHistory(_) => {
18033                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
18034                }
18035                Self::InvalidAddress(_) => {
18036                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
18037                }
18038                Self::InvalidArgs(_) => {
18039                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
18040                }
18041                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
18042                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
18043                }
18044                Self::InvalidInitialization(_) => {
18045                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
18046                }
18047                Self::InvalidMaxStateHistory(_) => {
18048                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
18049                }
18050                Self::InvalidProof(_) => {
18051                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
18052                }
18053                Self::InvalidScalar(_) => {
18054                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
18055                }
18056                Self::MissingEpochRootUpdate(_) => {
18057                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
18058                }
18059                Self::NoChangeRequired(_) => {
18060                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
18061                }
18062                Self::NotInitializing(_) => {
18063                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
18064                }
18065                Self::OutdatedState(_) => {
18066                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
18067                }
18068                Self::OwnableInvalidOwner(_) => {
18069                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
18070                }
18071                Self::OwnableUnauthorizedAccount(_) => {
18072                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
18073                }
18074                Self::OwnershipCannotBeRenounced(_) => {
18075                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
18076                }
18077                Self::ProverNotPermissioned(_) => {
18078                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
18079                }
18080                Self::UUPSUnauthorizedCallContext(_) => {
18081                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
18082                }
18083                Self::UUPSUnsupportedProxiableUUID(_) => {
18084                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
18085                }
18086                Self::WrongStakeTableUsed(_) => {
18087                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
18088                }
18089            }
18090        }
18091        #[inline]
18092        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
18093            Self::SELECTORS.get(i).copied()
18094        }
18095        #[inline]
18096        fn valid_selector(selector: [u8; 4]) -> bool {
18097            Self::SELECTORS.binary_search(&selector).is_ok()
18098        }
18099        #[inline]
18100        #[allow(non_snake_case)]
18101        fn abi_decode_raw(
18102            selector: [u8; 4],
18103            data: &[u8],
18104        ) -> alloy_sol_types::Result<Self> {
18105            static DECODE_SHIMS: &[fn(
18106                &[u8],
18107            ) -> alloy_sol_types::Result<LightClientV3MockErrors>] = &[
18108                {
18109                    fn OutdatedState(
18110                        data: &[u8],
18111                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18112                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
18113                                data,
18114                            )
18115                            .map(LightClientV3MockErrors::OutdatedState)
18116                    }
18117                    OutdatedState
18118                },
18119                {
18120                    fn InvalidScalar(
18121                        data: &[u8],
18122                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18123                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
18124                                data,
18125                            )
18126                            .map(LightClientV3MockErrors::InvalidScalar)
18127                    }
18128                    InvalidScalar
18129                },
18130                {
18131                    fn MissingEpochRootUpdate(
18132                        data: &[u8],
18133                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18134                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
18135                                data,
18136                            )
18137                            .map(LightClientV3MockErrors::MissingEpochRootUpdate)
18138                    }
18139                    MissingEpochRootUpdate
18140                },
18141                {
18142                    fn InvalidProof(
18143                        data: &[u8],
18144                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18145                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
18146                            .map(LightClientV3MockErrors::InvalidProof)
18147                    }
18148                    InvalidProof
18149                },
18150                {
18151                    fn OwnableUnauthorizedAccount(
18152                        data: &[u8],
18153                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18154                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
18155                                data,
18156                            )
18157                            .map(LightClientV3MockErrors::OwnableUnauthorizedAccount)
18158                    }
18159                    OwnableUnauthorizedAccount
18160                },
18161                {
18162                    fn FailedInnerCall(
18163                        data: &[u8],
18164                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18165                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
18166                                data,
18167                            )
18168                            .map(LightClientV3MockErrors::FailedInnerCall)
18169                    }
18170                    FailedInnerCall
18171                },
18172                {
18173                    fn OwnableInvalidOwner(
18174                        data: &[u8],
18175                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18176                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
18177                                data,
18178                            )
18179                            .map(LightClientV3MockErrors::OwnableInvalidOwner)
18180                    }
18181                    OwnableInvalidOwner
18182                },
18183                {
18184                    fn OwnershipCannotBeRenounced(
18185                        data: &[u8],
18186                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18187                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
18188                                data,
18189                            )
18190                            .map(LightClientV3MockErrors::OwnershipCannotBeRenounced)
18191                    }
18192                    OwnershipCannotBeRenounced
18193                },
18194                {
18195                    fn ERC1967InvalidImplementation(
18196                        data: &[u8],
18197                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18198                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
18199                                data,
18200                            )
18201                            .map(LightClientV3MockErrors::ERC1967InvalidImplementation)
18202                    }
18203                    ERC1967InvalidImplementation
18204                },
18205                {
18206                    fn DeprecatedApi(
18207                        data: &[u8],
18208                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18209                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
18210                                data,
18211                            )
18212                            .map(LightClientV3MockErrors::DeprecatedApi)
18213                    }
18214                    DeprecatedApi
18215                },
18216                {
18217                    fn WrongStakeTableUsed(
18218                        data: &[u8],
18219                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18220                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
18221                                data,
18222                            )
18223                            .map(LightClientV3MockErrors::WrongStakeTableUsed)
18224                    }
18225                    WrongStakeTableUsed
18226                },
18227                {
18228                    fn InvalidHotShotBlockForCommitmentCheck(
18229                        data: &[u8],
18230                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18231                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
18232                                data,
18233                            )
18234                            .map(
18235                                LightClientV3MockErrors::InvalidHotShotBlockForCommitmentCheck,
18236                            )
18237                    }
18238                    InvalidHotShotBlockForCommitmentCheck
18239                },
18240                {
18241                    fn AddressEmptyCode(
18242                        data: &[u8],
18243                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18244                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
18245                                data,
18246                            )
18247                            .map(LightClientV3MockErrors::AddressEmptyCode)
18248                    }
18249                    AddressEmptyCode
18250                },
18251                {
18252                    fn InvalidArgs(
18253                        data: &[u8],
18254                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18255                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
18256                            .map(LightClientV3MockErrors::InvalidArgs)
18257                    }
18258                    InvalidArgs
18259                },
18260                {
18261                    fn ProverNotPermissioned(
18262                        data: &[u8],
18263                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18264                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
18265                                data,
18266                            )
18267                            .map(LightClientV3MockErrors::ProverNotPermissioned)
18268                    }
18269                    ProverNotPermissioned
18270                },
18271                {
18272                    fn NoChangeRequired(
18273                        data: &[u8],
18274                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18275                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
18276                                data,
18277                            )
18278                            .map(LightClientV3MockErrors::NoChangeRequired)
18279                    }
18280                    NoChangeRequired
18281                },
18282                {
18283                    fn UUPSUnsupportedProxiableUUID(
18284                        data: &[u8],
18285                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18286                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
18287                                data,
18288                            )
18289                            .map(LightClientV3MockErrors::UUPSUnsupportedProxiableUUID)
18290                    }
18291                    UUPSUnsupportedProxiableUUID
18292                },
18293                {
18294                    fn InsufficientSnapshotHistory(
18295                        data: &[u8],
18296                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18297                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
18298                                data,
18299                            )
18300                            .map(LightClientV3MockErrors::InsufficientSnapshotHistory)
18301                    }
18302                    InsufficientSnapshotHistory
18303                },
18304                {
18305                    fn ERC1967NonPayable(
18306                        data: &[u8],
18307                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18308                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
18309                                data,
18310                            )
18311                            .map(LightClientV3MockErrors::ERC1967NonPayable)
18312                    }
18313                    ERC1967NonPayable
18314                },
18315                {
18316                    fn NotInitializing(
18317                        data: &[u8],
18318                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18319                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
18320                                data,
18321                            )
18322                            .map(LightClientV3MockErrors::NotInitializing)
18323                    }
18324                    NotInitializing
18325                },
18326                {
18327                    fn UUPSUnauthorizedCallContext(
18328                        data: &[u8],
18329                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18330                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
18331                                data,
18332                            )
18333                            .map(LightClientV3MockErrors::UUPSUnauthorizedCallContext)
18334                    }
18335                    UUPSUnauthorizedCallContext
18336                },
18337                {
18338                    fn InvalidAddress(
18339                        data: &[u8],
18340                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18341                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
18342                                data,
18343                            )
18344                            .map(LightClientV3MockErrors::InvalidAddress)
18345                    }
18346                    InvalidAddress
18347                },
18348                {
18349                    fn InvalidMaxStateHistory(
18350                        data: &[u8],
18351                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18352                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
18353                                data,
18354                            )
18355                            .map(LightClientV3MockErrors::InvalidMaxStateHistory)
18356                    }
18357                    InvalidMaxStateHistory
18358                },
18359                {
18360                    fn InvalidInitialization(
18361                        data: &[u8],
18362                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18363                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
18364                                data,
18365                            )
18366                            .map(LightClientV3MockErrors::InvalidInitialization)
18367                    }
18368                    InvalidInitialization
18369                },
18370            ];
18371            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
18372                return Err(
18373                    alloy_sol_types::Error::unknown_selector(
18374                        <Self as alloy_sol_types::SolInterface>::NAME,
18375                        selector,
18376                    ),
18377                );
18378            };
18379            DECODE_SHIMS[idx](data)
18380        }
18381        #[inline]
18382        #[allow(non_snake_case)]
18383        fn abi_decode_raw_validate(
18384            selector: [u8; 4],
18385            data: &[u8],
18386        ) -> alloy_sol_types::Result<Self> {
18387            static DECODE_VALIDATE_SHIMS: &[fn(
18388                &[u8],
18389            ) -> alloy_sol_types::Result<LightClientV3MockErrors>] = &[
18390                {
18391                    fn OutdatedState(
18392                        data: &[u8],
18393                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18394                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
18395                                data,
18396                            )
18397                            .map(LightClientV3MockErrors::OutdatedState)
18398                    }
18399                    OutdatedState
18400                },
18401                {
18402                    fn InvalidScalar(
18403                        data: &[u8],
18404                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18405                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
18406                                data,
18407                            )
18408                            .map(LightClientV3MockErrors::InvalidScalar)
18409                    }
18410                    InvalidScalar
18411                },
18412                {
18413                    fn MissingEpochRootUpdate(
18414                        data: &[u8],
18415                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18416                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
18417                                data,
18418                            )
18419                            .map(LightClientV3MockErrors::MissingEpochRootUpdate)
18420                    }
18421                    MissingEpochRootUpdate
18422                },
18423                {
18424                    fn InvalidProof(
18425                        data: &[u8],
18426                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18427                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
18428                                data,
18429                            )
18430                            .map(LightClientV3MockErrors::InvalidProof)
18431                    }
18432                    InvalidProof
18433                },
18434                {
18435                    fn OwnableUnauthorizedAccount(
18436                        data: &[u8],
18437                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18438                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
18439                                data,
18440                            )
18441                            .map(LightClientV3MockErrors::OwnableUnauthorizedAccount)
18442                    }
18443                    OwnableUnauthorizedAccount
18444                },
18445                {
18446                    fn FailedInnerCall(
18447                        data: &[u8],
18448                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18449                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
18450                                data,
18451                            )
18452                            .map(LightClientV3MockErrors::FailedInnerCall)
18453                    }
18454                    FailedInnerCall
18455                },
18456                {
18457                    fn OwnableInvalidOwner(
18458                        data: &[u8],
18459                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18460                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
18461                                data,
18462                            )
18463                            .map(LightClientV3MockErrors::OwnableInvalidOwner)
18464                    }
18465                    OwnableInvalidOwner
18466                },
18467                {
18468                    fn OwnershipCannotBeRenounced(
18469                        data: &[u8],
18470                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18471                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
18472                                data,
18473                            )
18474                            .map(LightClientV3MockErrors::OwnershipCannotBeRenounced)
18475                    }
18476                    OwnershipCannotBeRenounced
18477                },
18478                {
18479                    fn ERC1967InvalidImplementation(
18480                        data: &[u8],
18481                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18482                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
18483                                data,
18484                            )
18485                            .map(LightClientV3MockErrors::ERC1967InvalidImplementation)
18486                    }
18487                    ERC1967InvalidImplementation
18488                },
18489                {
18490                    fn DeprecatedApi(
18491                        data: &[u8],
18492                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18493                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
18494                                data,
18495                            )
18496                            .map(LightClientV3MockErrors::DeprecatedApi)
18497                    }
18498                    DeprecatedApi
18499                },
18500                {
18501                    fn WrongStakeTableUsed(
18502                        data: &[u8],
18503                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18504                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
18505                                data,
18506                            )
18507                            .map(LightClientV3MockErrors::WrongStakeTableUsed)
18508                    }
18509                    WrongStakeTableUsed
18510                },
18511                {
18512                    fn InvalidHotShotBlockForCommitmentCheck(
18513                        data: &[u8],
18514                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18515                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
18516                                data,
18517                            )
18518                            .map(
18519                                LightClientV3MockErrors::InvalidHotShotBlockForCommitmentCheck,
18520                            )
18521                    }
18522                    InvalidHotShotBlockForCommitmentCheck
18523                },
18524                {
18525                    fn AddressEmptyCode(
18526                        data: &[u8],
18527                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18528                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
18529                                data,
18530                            )
18531                            .map(LightClientV3MockErrors::AddressEmptyCode)
18532                    }
18533                    AddressEmptyCode
18534                },
18535                {
18536                    fn InvalidArgs(
18537                        data: &[u8],
18538                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18539                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
18540                                data,
18541                            )
18542                            .map(LightClientV3MockErrors::InvalidArgs)
18543                    }
18544                    InvalidArgs
18545                },
18546                {
18547                    fn ProverNotPermissioned(
18548                        data: &[u8],
18549                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18550                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
18551                                data,
18552                            )
18553                            .map(LightClientV3MockErrors::ProverNotPermissioned)
18554                    }
18555                    ProverNotPermissioned
18556                },
18557                {
18558                    fn NoChangeRequired(
18559                        data: &[u8],
18560                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18561                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
18562                                data,
18563                            )
18564                            .map(LightClientV3MockErrors::NoChangeRequired)
18565                    }
18566                    NoChangeRequired
18567                },
18568                {
18569                    fn UUPSUnsupportedProxiableUUID(
18570                        data: &[u8],
18571                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18572                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
18573                                data,
18574                            )
18575                            .map(LightClientV3MockErrors::UUPSUnsupportedProxiableUUID)
18576                    }
18577                    UUPSUnsupportedProxiableUUID
18578                },
18579                {
18580                    fn InsufficientSnapshotHistory(
18581                        data: &[u8],
18582                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18583                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
18584                                data,
18585                            )
18586                            .map(LightClientV3MockErrors::InsufficientSnapshotHistory)
18587                    }
18588                    InsufficientSnapshotHistory
18589                },
18590                {
18591                    fn ERC1967NonPayable(
18592                        data: &[u8],
18593                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18594                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
18595                                data,
18596                            )
18597                            .map(LightClientV3MockErrors::ERC1967NonPayable)
18598                    }
18599                    ERC1967NonPayable
18600                },
18601                {
18602                    fn NotInitializing(
18603                        data: &[u8],
18604                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18605                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
18606                                data,
18607                            )
18608                            .map(LightClientV3MockErrors::NotInitializing)
18609                    }
18610                    NotInitializing
18611                },
18612                {
18613                    fn UUPSUnauthorizedCallContext(
18614                        data: &[u8],
18615                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18616                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
18617                                data,
18618                            )
18619                            .map(LightClientV3MockErrors::UUPSUnauthorizedCallContext)
18620                    }
18621                    UUPSUnauthorizedCallContext
18622                },
18623                {
18624                    fn InvalidAddress(
18625                        data: &[u8],
18626                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18627                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
18628                                data,
18629                            )
18630                            .map(LightClientV3MockErrors::InvalidAddress)
18631                    }
18632                    InvalidAddress
18633                },
18634                {
18635                    fn InvalidMaxStateHistory(
18636                        data: &[u8],
18637                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18638                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
18639                                data,
18640                            )
18641                            .map(LightClientV3MockErrors::InvalidMaxStateHistory)
18642                    }
18643                    InvalidMaxStateHistory
18644                },
18645                {
18646                    fn InvalidInitialization(
18647                        data: &[u8],
18648                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18649                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
18650                                data,
18651                            )
18652                            .map(LightClientV3MockErrors::InvalidInitialization)
18653                    }
18654                    InvalidInitialization
18655                },
18656            ];
18657            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
18658                return Err(
18659                    alloy_sol_types::Error::unknown_selector(
18660                        <Self as alloy_sol_types::SolInterface>::NAME,
18661                        selector,
18662                    ),
18663                );
18664            };
18665            DECODE_VALIDATE_SHIMS[idx](data)
18666        }
18667        #[inline]
18668        fn abi_encoded_size(&self) -> usize {
18669            match self {
18670                Self::AddressEmptyCode(inner) => {
18671                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
18672                        inner,
18673                    )
18674                }
18675                Self::DeprecatedApi(inner) => {
18676                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
18677                }
18678                Self::ERC1967InvalidImplementation(inner) => {
18679                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
18680                        inner,
18681                    )
18682                }
18683                Self::ERC1967NonPayable(inner) => {
18684                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
18685                        inner,
18686                    )
18687                }
18688                Self::FailedInnerCall(inner) => {
18689                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
18690                        inner,
18691                    )
18692                }
18693                Self::InsufficientSnapshotHistory(inner) => {
18694                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
18695                        inner,
18696                    )
18697                }
18698                Self::InvalidAddress(inner) => {
18699                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
18700                        inner,
18701                    )
18702                }
18703                Self::InvalidArgs(inner) => {
18704                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
18705                }
18706                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
18707                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
18708                        inner,
18709                    )
18710                }
18711                Self::InvalidInitialization(inner) => {
18712                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
18713                        inner,
18714                    )
18715                }
18716                Self::InvalidMaxStateHistory(inner) => {
18717                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
18718                        inner,
18719                    )
18720                }
18721                Self::InvalidProof(inner) => {
18722                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
18723                }
18724                Self::InvalidScalar(inner) => {
18725                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
18726                }
18727                Self::MissingEpochRootUpdate(inner) => {
18728                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
18729                        inner,
18730                    )
18731                }
18732                Self::NoChangeRequired(inner) => {
18733                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
18734                        inner,
18735                    )
18736                }
18737                Self::NotInitializing(inner) => {
18738                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
18739                        inner,
18740                    )
18741                }
18742                Self::OutdatedState(inner) => {
18743                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
18744                }
18745                Self::OwnableInvalidOwner(inner) => {
18746                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
18747                        inner,
18748                    )
18749                }
18750                Self::OwnableUnauthorizedAccount(inner) => {
18751                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
18752                        inner,
18753                    )
18754                }
18755                Self::OwnershipCannotBeRenounced(inner) => {
18756                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
18757                        inner,
18758                    )
18759                }
18760                Self::ProverNotPermissioned(inner) => {
18761                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
18762                        inner,
18763                    )
18764                }
18765                Self::UUPSUnauthorizedCallContext(inner) => {
18766                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
18767                        inner,
18768                    )
18769                }
18770                Self::UUPSUnsupportedProxiableUUID(inner) => {
18771                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
18772                        inner,
18773                    )
18774                }
18775                Self::WrongStakeTableUsed(inner) => {
18776                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
18777                        inner,
18778                    )
18779                }
18780            }
18781        }
18782        #[inline]
18783        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
18784            match self {
18785                Self::AddressEmptyCode(inner) => {
18786                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
18787                        inner,
18788                        out,
18789                    )
18790                }
18791                Self::DeprecatedApi(inner) => {
18792                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
18793                        inner,
18794                        out,
18795                    )
18796                }
18797                Self::ERC1967InvalidImplementation(inner) => {
18798                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
18799                        inner,
18800                        out,
18801                    )
18802                }
18803                Self::ERC1967NonPayable(inner) => {
18804                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
18805                        inner,
18806                        out,
18807                    )
18808                }
18809                Self::FailedInnerCall(inner) => {
18810                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
18811                        inner,
18812                        out,
18813                    )
18814                }
18815                Self::InsufficientSnapshotHistory(inner) => {
18816                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
18817                        inner,
18818                        out,
18819                    )
18820                }
18821                Self::InvalidAddress(inner) => {
18822                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
18823                        inner,
18824                        out,
18825                    )
18826                }
18827                Self::InvalidArgs(inner) => {
18828                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
18829                        inner,
18830                        out,
18831                    )
18832                }
18833                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
18834                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
18835                        inner,
18836                        out,
18837                    )
18838                }
18839                Self::InvalidInitialization(inner) => {
18840                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
18841                        inner,
18842                        out,
18843                    )
18844                }
18845                Self::InvalidMaxStateHistory(inner) => {
18846                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
18847                        inner,
18848                        out,
18849                    )
18850                }
18851                Self::InvalidProof(inner) => {
18852                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
18853                        inner,
18854                        out,
18855                    )
18856                }
18857                Self::InvalidScalar(inner) => {
18858                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
18859                        inner,
18860                        out,
18861                    )
18862                }
18863                Self::MissingEpochRootUpdate(inner) => {
18864                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
18865                        inner,
18866                        out,
18867                    )
18868                }
18869                Self::NoChangeRequired(inner) => {
18870                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
18871                        inner,
18872                        out,
18873                    )
18874                }
18875                Self::NotInitializing(inner) => {
18876                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
18877                        inner,
18878                        out,
18879                    )
18880                }
18881                Self::OutdatedState(inner) => {
18882                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
18883                        inner,
18884                        out,
18885                    )
18886                }
18887                Self::OwnableInvalidOwner(inner) => {
18888                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
18889                        inner,
18890                        out,
18891                    )
18892                }
18893                Self::OwnableUnauthorizedAccount(inner) => {
18894                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
18895                        inner,
18896                        out,
18897                    )
18898                }
18899                Self::OwnershipCannotBeRenounced(inner) => {
18900                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
18901                        inner,
18902                        out,
18903                    )
18904                }
18905                Self::ProverNotPermissioned(inner) => {
18906                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
18907                        inner,
18908                        out,
18909                    )
18910                }
18911                Self::UUPSUnauthorizedCallContext(inner) => {
18912                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
18913                        inner,
18914                        out,
18915                    )
18916                }
18917                Self::UUPSUnsupportedProxiableUUID(inner) => {
18918                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
18919                        inner,
18920                        out,
18921                    )
18922                }
18923                Self::WrongStakeTableUsed(inner) => {
18924                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
18925                        inner,
18926                        out,
18927                    )
18928                }
18929            }
18930        }
18931    }
18932    ///Container for all the [`LightClientV3Mock`](self) events.
18933    #[derive(Clone)]
18934    #[derive(serde::Serialize, serde::Deserialize)]
18935    #[derive(Debug, PartialEq, Eq, Hash)]
18936    pub enum LightClientV3MockEvents {
18937        #[allow(missing_docs)]
18938        Initialized(Initialized),
18939        #[allow(missing_docs)]
18940        NewEpoch(NewEpoch),
18941        #[allow(missing_docs)]
18942        NewState(NewState),
18943        #[allow(missing_docs)]
18944        OwnershipTransferred(OwnershipTransferred),
18945        #[allow(missing_docs)]
18946        PermissionedProverNotRequired(PermissionedProverNotRequired),
18947        #[allow(missing_docs)]
18948        PermissionedProverRequired(PermissionedProverRequired),
18949        #[allow(missing_docs)]
18950        Upgrade(Upgrade),
18951        #[allow(missing_docs)]
18952        Upgraded(Upgraded),
18953    }
18954    impl LightClientV3MockEvents {
18955        /// All the selectors of this enum.
18956        ///
18957        /// Note that the selectors might not be in the same order as the variants.
18958        /// No guarantees are made about the order of the selectors.
18959        ///
18960        /// Prefer using `SolInterface` methods instead.
18961        pub const SELECTORS: &'static [[u8; 32usize]] = &[
18962            [
18963                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
18964                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
18965                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
18966            ],
18967            [
18968                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
18969                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
18970                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
18971            ],
18972            [
18973                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
18974                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
18975                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
18976            ],
18977            [
18978                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
18979                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
18980                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
18981            ],
18982            [
18983                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
18984                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
18985                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
18986            ],
18987            [
18988                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
18989                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
18990                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
18991            ],
18992            [
18993                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
18994                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
18995                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
18996            ],
18997            [
18998                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
18999                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
19000                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
19001            ],
19002        ];
19003        /// The names of the variants in the same order as `SELECTORS`.
19004        pub const VARIANT_NAMES: &'static [&'static str] = &[
19005            ::core::stringify!(NewEpoch),
19006            ::core::stringify!(PermissionedProverRequired),
19007            ::core::stringify!(OwnershipTransferred),
19008            ::core::stringify!(PermissionedProverNotRequired),
19009            ::core::stringify!(NewState),
19010            ::core::stringify!(Upgraded),
19011            ::core::stringify!(Initialized),
19012            ::core::stringify!(Upgrade),
19013        ];
19014        /// The signatures in the same order as `SELECTORS`.
19015        pub const SIGNATURES: &'static [&'static str] = &[
19016            <NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE,
19017            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
19018            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
19019            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
19020            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
19021            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
19022            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
19023            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
19024        ];
19025        /// Returns the signature for the given selector, if known.
19026        #[inline]
19027        pub fn signature_by_selector(
19028            selector: [u8; 32usize],
19029        ) -> ::core::option::Option<&'static str> {
19030            match Self::SELECTORS.binary_search(&selector) {
19031                ::core::result::Result::Ok(idx) => {
19032                    ::core::option::Option::Some(Self::SIGNATURES[idx])
19033                }
19034                ::core::result::Result::Err(_) => ::core::option::Option::None,
19035            }
19036        }
19037        /// Returns the enum variant name for the given selector, if known.
19038        #[inline]
19039        pub fn name_by_selector(
19040            selector: [u8; 32usize],
19041        ) -> ::core::option::Option<&'static str> {
19042            let sig = Self::signature_by_selector(selector)?;
19043            sig.split_once('(').map(|(name, _)| name)
19044        }
19045    }
19046    #[automatically_derived]
19047    impl alloy_sol_types::SolEventInterface for LightClientV3MockEvents {
19048        const NAME: &'static str = "LightClientV3MockEvents";
19049        const COUNT: usize = 8usize;
19050        fn decode_raw_log(
19051            topics: &[alloy_sol_types::Word],
19052            data: &[u8],
19053        ) -> alloy_sol_types::Result<Self> {
19054            match topics.first().copied() {
19055                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
19056                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
19057                            topics,
19058                            data,
19059                        )
19060                        .map(Self::Initialized)
19061                }
19062                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
19063                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
19064                        .map(Self::NewEpoch)
19065                }
19066                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
19067                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
19068                        .map(Self::NewState)
19069                }
19070                Some(
19071                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
19072                ) => {
19073                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
19074                            topics,
19075                            data,
19076                        )
19077                        .map(Self::OwnershipTransferred)
19078                }
19079                Some(
19080                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
19081                ) => {
19082                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
19083                            topics,
19084                            data,
19085                        )
19086                        .map(Self::PermissionedProverNotRequired)
19087                }
19088                Some(
19089                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
19090                ) => {
19091                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
19092                            topics,
19093                            data,
19094                        )
19095                        .map(Self::PermissionedProverRequired)
19096                }
19097                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
19098                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
19099                        .map(Self::Upgrade)
19100                }
19101                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
19102                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
19103                        .map(Self::Upgraded)
19104                }
19105                _ => {
19106                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
19107                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
19108                        log: alloy_sol_types::private::Box::new(
19109                            alloy_sol_types::private::LogData::new_unchecked(
19110                                topics.to_vec(),
19111                                data.to_vec().into(),
19112                            ),
19113                        ),
19114                    })
19115                }
19116            }
19117        }
19118    }
19119    #[automatically_derived]
19120    impl alloy_sol_types::private::IntoLogData for LightClientV3MockEvents {
19121        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
19122            match self {
19123                Self::Initialized(inner) => {
19124                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19125                }
19126                Self::NewEpoch(inner) => {
19127                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19128                }
19129                Self::NewState(inner) => {
19130                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19131                }
19132                Self::OwnershipTransferred(inner) => {
19133                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19134                }
19135                Self::PermissionedProverNotRequired(inner) => {
19136                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19137                }
19138                Self::PermissionedProverRequired(inner) => {
19139                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19140                }
19141                Self::Upgrade(inner) => {
19142                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19143                }
19144                Self::Upgraded(inner) => {
19145                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19146                }
19147            }
19148        }
19149        fn into_log_data(self) -> alloy_sol_types::private::LogData {
19150            match self {
19151                Self::Initialized(inner) => {
19152                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19153                }
19154                Self::NewEpoch(inner) => {
19155                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19156                }
19157                Self::NewState(inner) => {
19158                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19159                }
19160                Self::OwnershipTransferred(inner) => {
19161                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19162                }
19163                Self::PermissionedProverNotRequired(inner) => {
19164                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19165                }
19166                Self::PermissionedProverRequired(inner) => {
19167                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19168                }
19169                Self::Upgrade(inner) => {
19170                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19171                }
19172                Self::Upgraded(inner) => {
19173                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19174                }
19175            }
19176        }
19177    }
19178    use alloy::contract as alloy_contract;
19179    /**Creates a new wrapper around an on-chain [`LightClientV3Mock`](self) contract instance.
19180
19181See the [wrapper's documentation](`LightClientV3MockInstance`) for more details.*/
19182    #[inline]
19183    pub const fn new<
19184        P: alloy_contract::private::Provider<N>,
19185        N: alloy_contract::private::Network,
19186    >(
19187        address: alloy_sol_types::private::Address,
19188        __provider: P,
19189    ) -> LightClientV3MockInstance<P, N> {
19190        LightClientV3MockInstance::<P, N>::new(address, __provider)
19191    }
19192    /**Deploys this contract using the given `provider` and constructor arguments, if any.
19193
19194Returns a new instance of the contract, if the deployment was successful.
19195
19196For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
19197    #[inline]
19198    pub fn deploy<
19199        P: alloy_contract::private::Provider<N>,
19200        N: alloy_contract::private::Network,
19201    >(
19202        __provider: P,
19203    ) -> impl ::core::future::Future<
19204        Output = alloy_contract::Result<LightClientV3MockInstance<P, N>>,
19205    > {
19206        LightClientV3MockInstance::<P, N>::deploy(__provider)
19207    }
19208    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
19209and constructor arguments, if any.
19210
19211This is a simple wrapper around creating a `RawCallBuilder` with the data set to
19212the bytecode concatenated with the constructor's ABI-encoded arguments.*/
19213    #[inline]
19214    pub fn deploy_builder<
19215        P: alloy_contract::private::Provider<N>,
19216        N: alloy_contract::private::Network,
19217    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
19218        LightClientV3MockInstance::<P, N>::deploy_builder(__provider)
19219    }
19220    /**A [`LightClientV3Mock`](self) instance.
19221
19222Contains type-safe methods for interacting with an on-chain instance of the
19223[`LightClientV3Mock`](self) contract located at a given `address`, using a given
19224provider `P`.
19225
19226If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
19227documentation on how to provide it), the `deploy` and `deploy_builder` methods can
19228be used to deploy a new instance of the contract.
19229
19230See the [module-level documentation](self) for all the available methods.*/
19231    #[derive(Clone)]
19232    pub struct LightClientV3MockInstance<P, N = alloy_contract::private::Ethereum> {
19233        address: alloy_sol_types::private::Address,
19234        provider: P,
19235        _network: ::core::marker::PhantomData<N>,
19236    }
19237    #[automatically_derived]
19238    impl<P, N> ::core::fmt::Debug for LightClientV3MockInstance<P, N> {
19239        #[inline]
19240        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
19241            f.debug_tuple("LightClientV3MockInstance").field(&self.address).finish()
19242        }
19243    }
19244    /// Instantiation and getters/setters.
19245    impl<
19246        P: alloy_contract::private::Provider<N>,
19247        N: alloy_contract::private::Network,
19248    > LightClientV3MockInstance<P, N> {
19249        /**Creates a new wrapper around an on-chain [`LightClientV3Mock`](self) contract instance.
19250
19251See the [wrapper's documentation](`LightClientV3MockInstance`) for more details.*/
19252        #[inline]
19253        pub const fn new(
19254            address: alloy_sol_types::private::Address,
19255            __provider: P,
19256        ) -> Self {
19257            Self {
19258                address,
19259                provider: __provider,
19260                _network: ::core::marker::PhantomData,
19261            }
19262        }
19263        /**Deploys this contract using the given `provider` and constructor arguments, if any.
19264
19265Returns a new instance of the contract, if the deployment was successful.
19266
19267For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
19268        #[inline]
19269        pub async fn deploy(
19270            __provider: P,
19271        ) -> alloy_contract::Result<LightClientV3MockInstance<P, N>> {
19272            let call_builder = Self::deploy_builder(__provider);
19273            let contract_address = call_builder.deploy().await?;
19274            Ok(Self::new(contract_address, call_builder.provider))
19275        }
19276        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
19277and constructor arguments, if any.
19278
19279This is a simple wrapper around creating a `RawCallBuilder` with the data set to
19280the bytecode concatenated with the constructor's ABI-encoded arguments.*/
19281        #[inline]
19282        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
19283            alloy_contract::RawCallBuilder::new_raw_deploy(
19284                __provider,
19285                ::core::clone::Clone::clone(&BYTECODE),
19286            )
19287        }
19288        /// Returns a reference to the address.
19289        #[inline]
19290        pub const fn address(&self) -> &alloy_sol_types::private::Address {
19291            &self.address
19292        }
19293        /// Sets the address.
19294        #[inline]
19295        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
19296            self.address = address;
19297        }
19298        /// Sets the address and returns `self`.
19299        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
19300            self.set_address(address);
19301            self
19302        }
19303        /// Returns a reference to the provider.
19304        #[inline]
19305        pub const fn provider(&self) -> &P {
19306            &self.provider
19307        }
19308    }
19309    impl<P: ::core::clone::Clone, N> LightClientV3MockInstance<&P, N> {
19310        /// Clones the provider and returns a new instance with the cloned provider.
19311        #[inline]
19312        pub fn with_cloned_provider(self) -> LightClientV3MockInstance<P, N> {
19313            LightClientV3MockInstance {
19314                address: self.address,
19315                provider: ::core::clone::Clone::clone(&self.provider),
19316                _network: ::core::marker::PhantomData,
19317            }
19318        }
19319    }
19320    /// Function calls.
19321    impl<
19322        P: alloy_contract::private::Provider<N>,
19323        N: alloy_contract::private::Network,
19324    > LightClientV3MockInstance<P, N> {
19325        /// Creates a new call builder using this contract instance's provider and address.
19326        ///
19327        /// Note that the call can be any function call, not just those defined in this
19328        /// contract. Prefer using the other methods for building type-safe contract calls.
19329        pub fn call_builder<C: alloy_sol_types::SolCall>(
19330            &self,
19331            call: &C,
19332        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
19333            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
19334        }
19335        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
19336        pub fn UPGRADE_INTERFACE_VERSION(
19337            &self,
19338        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
19339            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
19340        }
19341        ///Creates a new call builder for the [`_getVk`] function.
19342        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
19343            self.call_builder(&_getVkCall)
19344        }
19345        ///Creates a new call builder for the [`authRoot`] function.
19346        pub fn authRoot(&self) -> alloy_contract::SolCallBuilder<&P, authRootCall, N> {
19347            self.call_builder(&authRootCall)
19348        }
19349        ///Creates a new call builder for the [`blocksPerEpoch`] function.
19350        pub fn blocksPerEpoch(
19351            &self,
19352        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
19353            self.call_builder(&blocksPerEpochCall)
19354        }
19355        ///Creates a new call builder for the [`currentBlockNumber`] function.
19356        pub fn currentBlockNumber(
19357            &self,
19358        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
19359            self.call_builder(&currentBlockNumberCall)
19360        }
19361        ///Creates a new call builder for the [`currentEpoch`] function.
19362        pub fn currentEpoch(
19363            &self,
19364        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
19365            self.call_builder(&currentEpochCall)
19366        }
19367        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
19368        pub fn disablePermissionedProverMode(
19369            &self,
19370        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
19371            self.call_builder(&disablePermissionedProverModeCall)
19372        }
19373        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
19374        pub fn epochFromBlockNumber(
19375            &self,
19376            _blockNum: u64,
19377            _blocksPerEpoch: u64,
19378        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
19379            self.call_builder(
19380                &epochFromBlockNumberCall {
19381                    _blockNum,
19382                    _blocksPerEpoch,
19383                },
19384            )
19385        }
19386        ///Creates a new call builder for the [`epochStartBlock`] function.
19387        pub fn epochStartBlock(
19388            &self,
19389        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
19390            self.call_builder(&epochStartBlockCall)
19391        }
19392        ///Creates a new call builder for the [`finalizedState`] function.
19393        pub fn finalizedState(
19394            &self,
19395        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
19396            self.call_builder(&finalizedStateCall)
19397        }
19398        ///Creates a new call builder for the [`firstEpoch`] function.
19399        pub fn firstEpoch(
19400            &self,
19401        ) -> alloy_contract::SolCallBuilder<&P, firstEpochCall, N> {
19402            self.call_builder(&firstEpochCall)
19403        }
19404        ///Creates a new call builder for the [`genesisStakeTableState`] function.
19405        pub fn genesisStakeTableState(
19406            &self,
19407        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
19408            self.call_builder(&genesisStakeTableStateCall)
19409        }
19410        ///Creates a new call builder for the [`genesisState`] function.
19411        pub fn genesisState(
19412            &self,
19413        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
19414            self.call_builder(&genesisStateCall)
19415        }
19416        ///Creates a new call builder for the [`getHotShotCommitment`] function.
19417        pub fn getHotShotCommitment(
19418            &self,
19419            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
19420        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
19421            self.call_builder(
19422                &getHotShotCommitmentCall {
19423                    hotShotBlockHeight,
19424                },
19425            )
19426        }
19427        ///Creates a new call builder for the [`getStateHistoryCount`] function.
19428        pub fn getStateHistoryCount(
19429            &self,
19430        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
19431            self.call_builder(&getStateHistoryCountCall)
19432        }
19433        ///Creates a new call builder for the [`getVersion`] function.
19434        pub fn getVersion(
19435            &self,
19436        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
19437            self.call_builder(&getVersionCall)
19438        }
19439        ///Creates a new call builder for the [`initialize`] function.
19440        pub fn initialize(
19441            &self,
19442            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19443            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19444            _stateHistoryRetentionPeriod: u32,
19445            owner: alloy::sol_types::private::Address,
19446        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
19447            self.call_builder(
19448                &initializeCall {
19449                    _genesis,
19450                    _genesisStakeTableState,
19451                    _stateHistoryRetentionPeriod,
19452                    owner,
19453                },
19454            )
19455        }
19456        ///Creates a new call builder for the [`initializeV2`] function.
19457        pub fn initializeV2(
19458            &self,
19459            _blocksPerEpoch: u64,
19460            _epochStartBlock: u64,
19461        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
19462            self.call_builder(
19463                &initializeV2Call {
19464                    _blocksPerEpoch,
19465                    _epochStartBlock,
19466                },
19467            )
19468        }
19469        ///Creates a new call builder for the [`initializeV3`] function.
19470        pub fn initializeV3(
19471            &self,
19472        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
19473            self.call_builder(&initializeV3Call)
19474        }
19475        ///Creates a new call builder for the [`isEpochRoot`] function.
19476        pub fn isEpochRoot(
19477            &self,
19478            blockHeight: u64,
19479        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
19480            self.call_builder(&isEpochRootCall { blockHeight })
19481        }
19482        ///Creates a new call builder for the [`isGtEpochRoot`] function.
19483        pub fn isGtEpochRoot(
19484            &self,
19485            blockHeight: u64,
19486        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
19487            self.call_builder(&isGtEpochRootCall { blockHeight })
19488        }
19489        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
19490        pub fn isPermissionedProverEnabled(
19491            &self,
19492        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
19493            self.call_builder(&isPermissionedProverEnabledCall)
19494        }
19495        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
19496        pub fn lagOverEscapeHatchThreshold(
19497            &self,
19498            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
19499            threshold: alloy::sol_types::private::primitives::aliases::U256,
19500        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
19501            self.call_builder(
19502                &lagOverEscapeHatchThresholdCall {
19503                    blockNumber,
19504                    threshold,
19505                },
19506            )
19507        }
19508        ///Creates a new call builder for the [`newFinalizedState_0`] function.
19509        pub fn newFinalizedState_0(
19510            &self,
19511            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19512            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
19513        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
19514            self.call_builder(&newFinalizedState_0Call { _0, _1 })
19515        }
19516        ///Creates a new call builder for the [`newFinalizedState_1`] function.
19517        pub fn newFinalizedState_1(
19518            &self,
19519            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19520            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19521            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
19522        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
19523            self.call_builder(
19524                &newFinalizedState_1Call {
19525                    _0,
19526                    _1,
19527                    _2,
19528                },
19529            )
19530        }
19531        ///Creates a new call builder for the [`newFinalizedState_2`] function.
19532        pub fn newFinalizedState_2(
19533            &self,
19534            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19535            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19536            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
19537            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
19538        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_2Call, N> {
19539            self.call_builder(
19540                &newFinalizedState_2Call {
19541                    newState,
19542                    nextStakeTable,
19543                    newAuthRoot,
19544                    proof,
19545                },
19546            )
19547        }
19548        ///Creates a new call builder for the [`owner`] function.
19549        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
19550            self.call_builder(&ownerCall)
19551        }
19552        ///Creates a new call builder for the [`permissionedProver`] function.
19553        pub fn permissionedProver(
19554            &self,
19555        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
19556            self.call_builder(&permissionedProverCall)
19557        }
19558        ///Creates a new call builder for the [`proxiableUUID`] function.
19559        pub fn proxiableUUID(
19560            &self,
19561        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
19562            self.call_builder(&proxiableUUIDCall)
19563        }
19564        ///Creates a new call builder for the [`renounceOwnership`] function.
19565        pub fn renounceOwnership(
19566            &self,
19567        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
19568            self.call_builder(&renounceOwnershipCall)
19569        }
19570        ///Creates a new call builder for the [`setAuthRoot`] function.
19571        pub fn setAuthRoot(
19572            &self,
19573            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
19574        ) -> alloy_contract::SolCallBuilder<&P, setAuthRootCall, N> {
19575            self.call_builder(&setAuthRootCall { newAuthRoot })
19576        }
19577        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
19578        pub fn setBlocksPerEpoch(
19579            &self,
19580            newBlocksPerEpoch: u64,
19581        ) -> alloy_contract::SolCallBuilder<&P, setBlocksPerEpochCall, N> {
19582            self.call_builder(
19583                &setBlocksPerEpochCall {
19584                    newBlocksPerEpoch,
19585                },
19586            )
19587        }
19588        ///Creates a new call builder for the [`setFinalizedState`] function.
19589        pub fn setFinalizedState(
19590            &self,
19591            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19592        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
19593            self.call_builder(&setFinalizedStateCall { state })
19594        }
19595        ///Creates a new call builder for the [`setHotShotDownSince`] function.
19596        pub fn setHotShotDownSince(
19597            &self,
19598            l1Height: alloy::sol_types::private::primitives::aliases::U256,
19599        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
19600            self.call_builder(
19601                &setHotShotDownSinceCall {
19602                    l1Height,
19603                },
19604            )
19605        }
19606        ///Creates a new call builder for the [`setHotShotUp`] function.
19607        pub fn setHotShotUp(
19608            &self,
19609        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
19610            self.call_builder(&setHotShotUpCall)
19611        }
19612        ///Creates a new call builder for the [`setPermissionedProver`] function.
19613        pub fn setPermissionedProver(
19614            &self,
19615            prover: alloy::sol_types::private::Address,
19616        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
19617            self.call_builder(
19618                &setPermissionedProverCall {
19619                    prover,
19620                },
19621            )
19622        }
19623        ///Creates a new call builder for the [`setStateHistory`] function.
19624        pub fn setStateHistory(
19625            &self,
19626            _stateHistoryCommitments: alloy::sol_types::private::Vec<
19627                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
19628            >,
19629        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
19630            self.call_builder(
19631                &setStateHistoryCall {
19632                    _stateHistoryCommitments,
19633                },
19634            )
19635        }
19636        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
19637        pub fn setStateHistoryRetentionPeriod(
19638            &self,
19639            historySeconds: u32,
19640        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
19641            self.call_builder(
19642                &setStateHistoryRetentionPeriodCall {
19643                    historySeconds,
19644                },
19645            )
19646        }
19647        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
19648        pub fn setVotingStakeTableState(
19649            &self,
19650            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19651        ) -> alloy_contract::SolCallBuilder<&P, setVotingStakeTableStateCall, N> {
19652            self.call_builder(
19653                &setVotingStakeTableStateCall {
19654                    stake,
19655                },
19656            )
19657        }
19658        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
19659        pub fn setstateHistoryRetentionPeriod(
19660            &self,
19661            historySeconds: u32,
19662        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
19663            self.call_builder(
19664                &setstateHistoryRetentionPeriodCall {
19665                    historySeconds,
19666                },
19667            )
19668        }
19669        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
19670        pub fn stateHistoryCommitments(
19671            &self,
19672            _0: alloy::sol_types::private::primitives::aliases::U256,
19673        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
19674            self.call_builder(&stateHistoryCommitmentsCall(_0))
19675        }
19676        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
19677        pub fn stateHistoryFirstIndex(
19678            &self,
19679        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
19680            self.call_builder(&stateHistoryFirstIndexCall)
19681        }
19682        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
19683        pub fn stateHistoryRetentionPeriod(
19684            &self,
19685        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
19686            self.call_builder(&stateHistoryRetentionPeriodCall)
19687        }
19688        ///Creates a new call builder for the [`transferOwnership`] function.
19689        pub fn transferOwnership(
19690            &self,
19691            newOwner: alloy::sol_types::private::Address,
19692        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
19693            self.call_builder(&transferOwnershipCall { newOwner })
19694        }
19695        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
19696        pub fn updateEpochStartBlock(
19697            &self,
19698            newEpochStartBlock: u64,
19699        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
19700            self.call_builder(
19701                &updateEpochStartBlockCall {
19702                    newEpochStartBlock,
19703                },
19704            )
19705        }
19706        ///Creates a new call builder for the [`upgradeToAndCall`] function.
19707        pub fn upgradeToAndCall(
19708            &self,
19709            newImplementation: alloy::sol_types::private::Address,
19710            data: alloy::sol_types::private::Bytes,
19711        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
19712            self.call_builder(
19713                &upgradeToAndCallCall {
19714                    newImplementation,
19715                    data,
19716                },
19717            )
19718        }
19719        ///Creates a new call builder for the [`votingStakeTableState`] function.
19720        pub fn votingStakeTableState(
19721            &self,
19722        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
19723            self.call_builder(&votingStakeTableStateCall)
19724        }
19725    }
19726    /// Event filters.
19727    impl<
19728        P: alloy_contract::private::Provider<N>,
19729        N: alloy_contract::private::Network,
19730    > LightClientV3MockInstance<P, N> {
19731        /// Creates a new event filter using this contract instance's provider and address.
19732        ///
19733        /// Note that the type can be any event, not just those defined in this contract.
19734        /// Prefer using the other methods for building type-safe event filters.
19735        pub fn event_filter<E: alloy_sol_types::SolEvent>(
19736            &self,
19737        ) -> alloy_contract::Event<&P, E, N> {
19738            alloy_contract::Event::new_sol(&self.provider, &self.address)
19739        }
19740        ///Creates a new event filter for the [`Initialized`] event.
19741        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
19742            self.event_filter::<Initialized>()
19743        }
19744        ///Creates a new event filter for the [`NewEpoch`] event.
19745        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
19746            self.event_filter::<NewEpoch>()
19747        }
19748        ///Creates a new event filter for the [`NewState`] event.
19749        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
19750            self.event_filter::<NewState>()
19751        }
19752        ///Creates a new event filter for the [`OwnershipTransferred`] event.
19753        pub fn OwnershipTransferred_filter(
19754            &self,
19755        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
19756            self.event_filter::<OwnershipTransferred>()
19757        }
19758        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
19759        pub fn PermissionedProverNotRequired_filter(
19760            &self,
19761        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
19762            self.event_filter::<PermissionedProverNotRequired>()
19763        }
19764        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
19765        pub fn PermissionedProverRequired_filter(
19766            &self,
19767        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
19768            self.event_filter::<PermissionedProverRequired>()
19769        }
19770        ///Creates a new event filter for the [`Upgrade`] event.
19771        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
19772            self.event_filter::<Upgrade>()
19773        }
19774        ///Creates a new event filter for the [`Upgraded`] event.
19775        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
19776            self.event_filter::<Upgraded>()
19777        }
19778    }
19779}