Skip to main content

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!(BaseField);
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!(ScalarField);
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(Default, Debug, PartialEq, Eq, Hash)]
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(Default, Debug, PartialEq, Eq, Hash)]
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    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613ae96100f95f395f8181611dc601528181611def0152611f6c0152613ae95ff3fe608060405260043610610280575f3560e01c806369cc6a0411610155578063aabd5db3116100be578063d24d933d11610078578063d24d933d146108d5578063e030330114610904578063f068205414610923578063f2fde38b14610942578063f567616014610961578063f9e50d1914610980575f5ffd5b8063aabd5db3146107e5578063ad3cb1cc14610804578063b33bc49114610841578063b5adea3c14610860578063c23b9e9e1461087f578063c8e5e498146108b7575f5ffd5b80638da5cb5b1161010f5780638da5cb5b146106e257806390c143901461071e57806396c1ca611461073d578063998328e81461075c5780639baa3cc9146107715780639fdb54a714610790575f5ffd5b806369cc6a0414610631578063715018a614610645578063757c37ad146106595780637667180814610673578063826e41fc146106875780638584d23f146106a6575f5ffd5b8063300c89dd116101f757806341682744116101b15780634168274414610575578063426d319414610592578063433dba9f146105b35780634f1ef286146105d257806352d1902d146105e5578063623a1338146105f9575f5ffd5b8063300c89dd1461048c578063313df7b1146104ab578063378ec23b146104e257806338e454b1146104fe5780633c23b6db146105125780633ed55b7b1461054f575f5ffd5b8063167ac61811610248578063167ac618146103905780631af08034146103af5780632063d4f7146103ce57806325297427146103ed5780632d52aad61461041c5780632f79889d1461044e575f5ffd5b8063013fa5fc1461028457806302b592f3146102a55780630625e19b146103025780630d8e6e2c1461034457806312173c2c1461036f575b5f5ffd5b34801561028f575f5ffd5b506102a361029e366004612bf0565b610994565b005b3480156102b0575f5ffd5b506102c46102bf366004612c09565b610a47565b6040516102f994939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b34801561030d575f5ffd5b50600b54600c54600d54600e546103249392919084565b6040805194855260208501939093529183015260608201526080016102f9565b34801561034f575f5ffd5b5060408051600381525f60208201819052918101919091526060016102f9565b34801561037a575f5ffd5b50610383610a90565b6040516102f99190612c20565b34801561039b575f5ffd5b506102a36103aa366004612e37565b6110c0565b3480156103ba575f5ffd5b506102a36103c9366004612c09565b600f55565b3480156103d9575f5ffd5b506102a36103e836600461311b565b611137565b3480156103f8575f5ffd5b5061040c610407366004612e37565b611150565b60405190151581526020016102f9565b348015610427575f5ffd5b506102a3610436366004612c09565b6010805460ff60401b1916600160401b179055601155565b348015610459575f5ffd5b5060085461047490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102f9565b348015610497575f5ffd5b5061040c6104a6366004612e37565b6111b2565b3480156104b6575f5ffd5b506008546104ca906001600160a01b031681565b6040516001600160a01b0390911681526020016102f9565b3480156104ed575f5ffd5b50435b6040519081526020016102f9565b348015610509575f5ffd5b506102a3611247565b34801561051d575f5ffd5b506102a361052c366004612e37565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b34801561055a575f5ffd5b50600a5461047490600160401b90046001600160401b031681565b348015610580575f5ffd5b506010546001600160401b0316610474565b34801561059d575f5ffd5b505f546001546002546003546103249392919084565b3480156105be575f5ffd5b506102a36105cd366004613162565b61133e565b6102a36105e036600461317b565b611352565b3480156105f0575f5ffd5b506104f0611371565b348015610604575f5ffd5b506102a3610613366004613261565b8051600b556020810151600c556040810151600d5560600151600e55565b34801561063c575f5ffd5b506102a361138c565b348015610650575f5ffd5b506102a36113fa565b348015610664575f5ffd5b506102a36103e836600461327b565b34801561067e575f5ffd5b5061047461141b565b348015610692575f5ffd5b506008546001600160a01b0316151561040c565b3480156106b1575f5ffd5b506106c56106c0366004612c09565b611445565b604080519283526001600160401b039091166020830152016102f9565b3480156106ed575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166104ca565b348015610729575f5ffd5b506104746107383660046132bf565b611570565b348015610748575f5ffd5b506102a3610757366004613162565b6115df565b348015610767575f5ffd5b506104f0600f5481565b34801561077c575f5ffd5b506102a361078b3660046132e7565b611668565b34801561079b575f5ffd5b506006546007546107bf916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102f9565b3480156107f0575f5ffd5b506102a36107ff36600461333c565b611777565b34801561080f575f5ffd5b50610834604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102f99190613380565b34801561084c575f5ffd5b506102a361085b3660046132bf565b611a9c565b34801561086b575f5ffd5b506102a361087a3660046133b5565b611bf5565b34801561088a575f5ffd5b506008546108a290600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102f9565b3480156108c2575f5ffd5b506102a36010805460ff60401b19169055565b3480156108e0575f5ffd5b506004546005546107bf916001600160401b0380821692600160401b909204169083565b34801561090f575f5ffd5b5061040c61091e3660046133cf565b611c3c565b34801561092e575f5ffd5b50600a54610474906001600160401b031681565b34801561094d575f5ffd5b506102a361095c366004612bf0565b611c76565b34801561096c575f5ffd5b506102a361097b3660046133ef565b611cb5565b34801561098b575f5ffd5b506009546104f0565b61099c611d60565b6001600160a01b0381166109c35760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109f25760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610a56575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610a98612912565b620100008152600560208201527f018f7ccd26652f2ad0a0d891bf29c5ef9f7b2a4e5a8295ee0acde69b1669acb56040820151527f0c3b19cb30f3edf93eb2b9e0b11ce099c5745bc3eda3226c7f5d5f39a97bfcaa6020604083015101527f141e3d68aad50bf0843f645d61f5e8fe3608d312e457d1bf712ce20c2ce906a96060820151527f2b44c03676d0a3cd12257e589b78f059a525aac5d6bfab0d6189d4b40ae511226020606083015101527f18609f79b8297b3f9951e7139945aa60e33e914dea6f27bda920b0e0c90935f36080820151527f11a6315abb98f76cce5b4fa5d87b8a2064d2d04c20f83314d2dd2fdb68141e3d6020608083015101527f2fa93348689ea07bb760d7c3100d3148afc342c050eba7f39455e478a5730d0560a0820151527f0b7c92113ecabfa54988d3a81e13237196c9975dd3dea0a325c49bcf901f8b4a602060a083015101527f2ae11000a5bd0a79adf8e3a5a449ea5c58dfa7d6a2fa24b9c976ecfca706584060c0820151527f0c4677befdd8c7d2474f2f7d19f2d0e2747a7e05469cc08eee2b7b81ad4872e2602060c083015101527f04065da2ee5858e53035e3fab84444a8663a8ead5d299b0b0460b9bd6b9c34cb60e0820151527f0dd33bf9f503c9d0b486ec825bd8ddfbc93a96f4e09978bea94db7caa33e32f0602060e083015101527f0d53ecf3464c3b43f674a4c9ae5dacd9e2a6cf69ccd06bdb38cdef07acd0b9b8610100820151527f0c0a5358e274a877cd87e017a90e3e2c4630637c14400d16141610817543cc6c602061010083015101527f053d21494294a22b3e3c567c9f618615af41c257043b87470788d7c30e915b32610120820151527f04cfeb1d7ff9e07794e47e486fcfe6b0e143c74a49ce915ebdf6ae68df6e06b8602061012083015101527f113f2826bf7221de175ca046f82f51112a9eb1486b06747f4d13940bc26f4bb8610140820151527f05cfaa7aa08b080dcbc31caddd501fe5ef8c118d8ed7d500708ec689b3ac7f2b602061014083015101527f0a9d147b2c3c63d298198af385558871a9b69c192291a4ee69def6d82dd7c31e610160820151527f016d5ae3fc3c6dc5283ff63e2ffe92d0931cc77258cccf3d1c9aed601ed2e8ba602061016083015101527f123d9f2908cd4f038bb281805ad8e922444469b02f4b83e6c051c0e1caad152c610180820151527f08e647cc02b9df4ceb5b154550d2b29a7b67370f67a37274206bb12c5c451dc2602061018083015101527f1859105e4ad21829c12c4a5b50d5a2a5d988fd73eb4424465638e199ab367b826101a0820151527f0abbccc29007b3c64dad550f76c99ea330b102dd7fb57a542a9add84845d51c360206101a083015101527f263a7ebacbf181a281a3494d75e822165d3f50e9ac14e74a822ad91503ec78a96101c0820151527f1f0968f3165c00c63964e71ef0c42396a146190a97ff2f436ae89288cb9d344660206101c083015101527f2f7cd5cc72420dd90cf820746b89e616dff8b21e9aadb9a4a06f41ece2039a5e6101e0820151527f15a34038506ec14fc8c26ad2551619bace01483f085e208d2302ad4c2111cb3760206101e083015101527f172d2aa0fb172d331b0f3671ae68be93ecfbda63a722176be8841e839031b61e610200820151527f13b29e31f3730117e54309a33f472f538f688bb94ccc3085da13a561dc8865e9602061020083015101527f0bf4050e8f045922cae613d4a626aeaeee7dc24a2b7bb473aee45e5c94e7ede3610220820151527f15aa6d9399cd9b8ab3883839d300e76f9e4e2baad7d39e0aa2e382f235d22263602061022083015101527f09dd102380546061aa42f087f8ac5525a6747b8db1e3c4fe033fdbe3d80d6e9a610240820151527f2edfb5b603bbb2d376ffe876bd219319d34d8813d09b70fb37da3cc2b77ebacb602061024083015101527f044bef6f37b3b1db2da99a5262d054163fc465d24e53925d07e5d4b5fe946746610260820151527f10453728e61b7fdf863adffb97c4a65b9c116087c10f01563fc31393ee69ea3f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b6110c8611d60565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561110e94919091048116928116911617611570565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806111705750600a546001600160401b0316155b1561117c57505f919050565b600a546001600160401b03166111938360056134fb565b61119d919061352e565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111d25750600a546001600160401b0316155b156111de57505f919050565b600a546111f4906001600160401b03168361352e565b6001600160401b031615806112415750600a5461121c906005906001600160401b031661355b565b600a546001600160401b039182169161123691168461352e565b6001600160401b0316115b92915050565b61124f611d60565b5f516020613abd5f395f51905f52805460039190600160401b900460ff1680611285575080546001600160401b03808416911610155b156112a35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a546112dd9291810482169116611570565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b611346611d60565b61134f816115df565b50565b61135a611dbb565b61136382611e5f565b61136d8282611ea0565b5050565b5f61137a611f61565b505f516020613a9d5f395f51905f5290565b611394611d60565b6008546001600160a01b0316156113df57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b611402611d60565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91611440916001600160401b03600160401b90920482169116611570565b905090565b600980545f9182919061145960018361357a565b815481106114695761146961358d565b5f918252602090912060029091020154600160801b90046001600160401b031684106114a857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156115695784600982815481106114d8576114d861358d565b5f918252602090912060029091020154600160801b90046001600160401b0316111561156157600981815481106115115761151161358d565b905f5260205f20906002020160010154600982815481106115345761153461358d565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b6001016114bc565b5050915091565b5f816001600160401b03165f0361158857505f611241565b826001600160401b03165f036115a057506001611241565b6115aa828461352e565b6001600160401b03165f036115ca576115c382846135a1565b9050611241565b6115d482846135a1565b6115c39060016134fb565b6115e7611d60565b610e108163ffffffff16108061160657506301e133808163ffffffff16115b80611624575060085463ffffffff600160a01b909104811690821611155b15611642576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f516020613abd5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156116995750825b90505f826001600160401b031660011480156116b45750303b155b9050811580156116c2575080155b156116e05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561170a57845460ff60401b1916600160401b1785555b61171386611faa565b61171b611fbb565b611726898989611fc3565b831561176c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561179c57506008546001600160a01b03163314155b156117ba576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806117f3575060065460208501516001600160401b03600160401b9092048216911611155b156118115760405163051c46ef60e01b815260040160405180910390fd5b61181e84604001516120ef565b61182b83602001516120ef565b61183883604001516120ef565b61184583606001516120ef565b5f61184e61141b565b6020860151600a549192505f9161186e91906001600160401b0316611570565b6010549091506001600160401b03908116908216106118b25761189486602001516111b2565b156118b25760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561195e5760026118d5838361355b565b6001600160401b0316106118fc5760405163080ae8d960e01b815260040160405180910390fd5b6119078260016134fb565b6001600160401b0316816001600160401b0316148015611940575060065461193e90600160401b90046001600160401b0316611150565b155b1561195e5760405163080ae8d960e01b815260040160405180910390fd5b61196a86868686612130565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906119c757506119c78660200151611150565b15611a31578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b611a158260016134fb565b6040516001600160401b03909116815260200160405180910390a15b611a3c43428861235a565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68860400151604051611a8c91815260200190565b60405180910390a3505050505050565b611aa4611d60565b5f516020613abd5f395f51905f52805460029190600160401b900460ff1680611ada575080546001600160401b03808416911610155b15611af85760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611b40576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611b898385611570565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561134f43428361235a565b6010545f90600160401b900460ff16611c5e57611c598383612543565b611c6f565b8160115484611c6d919061357a565b115b9392505050565b611c7e611d60565b6001600160a01b038116611cac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61134f8161269b565b611cc060095f612b77565b5f5b815181101561136d576009828281518110611cdf57611cdf61358d565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611cc2565b33611d927f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113f85760405163118cdaa760e01b8152336004820152602401611ca3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611e4157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e355f516020613a9d5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113f85760405163703e46dd60e11b815260040160405180910390fd5b611e67611d60565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610a3c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611efa575060408051601f3d908101601f19168201909252611ef7918101906135ce565b60015b611f2257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611ca3565b5f516020613a9d5f395f51905f528114611f5257604051632a87526960e21b815260048101829052602401611ca3565b611f5c838361270b565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113f85760405163703e46dd60e11b815260040160405180910390fd5b611fb2612760565b61134f81612796565b6113f8612760565b82516001600160401b0316151580611fe7575060208301516001600160401b031615155b80611ff457506020820151155b8061200157506040820151155b8061200e57506060820151155b8061201857508151155b8061202a5750610e108163ffffffff16105b8061203e57506301e133808163ffffffff16115b1561205c576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061136d5760405163016c173360e21b815260040160405180910390fd5b5f612139610a90565b9050612143612b92565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b909104811691161080159061219b575061219b8760200151611150565b156121e4576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a001604051602081830303815290604052905061221f565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261227091849089906020016135fc565b60408051601f19818403018152919052805160209091012090506122b47f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018261361e565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd67906122f490879087908a90600401613813565b602060405180830381865af415801561230f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123339190613a33565b612350576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906123cf575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061239a5761239a61358d565b5f9182526020909120600290910201546123c490600160401b90046001600160401b03168461355b565b6001600160401b0316115b1561246257600854600980549091600160c01b90046001600160401b03169081106123fc576123fc61358d565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861243c83613a52565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6009545f9043841180612554575080155b8061259e5750600854600980549091600160c01b90046001600160401b03169081106125825761258261358d565b5f9182526020909120600290910201546001600160401b031684105b156125bc5760405163b0b4387760e01b815260040160405180910390fd5b5f80806125ca60018561357a565b90505b8161266657600854600160c01b90046001600160401b031681106126665786600982815481106125ff576125ff61358d565b5f9182526020909120600290910201546001600160401b0316116126545760019150600981815481106126345761263461358d565b5f9182526020909120600290910201546001600160401b03169250612666565b8061265e81613a7c565b9150506125cd565b816126845760405163b0b4387760e01b815260040160405180910390fd5b8561268f848961357a565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6127148261279e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561275857611f5c8282612801565b61136d612873565b5f516020613abd5f395f51905f5254600160401b900460ff166113f857604051631afcd79f60e31b815260040160405180910390fd5b611c7e612760565b806001600160a01b03163b5f036127d357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611ca3565b5f516020613a9d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161281d9190613a91565b5f60405180830381855af49150503d805f8114612855576040519150601f19603f3d011682016040523d82523d5f602084013e61285a565b606091505b509150915061286a858383612892565b95945050505050565b34156113f85760405163b398979f60e01b815260040160405180910390fd5b6060826128a257611c59826128e9565b81511580156128b957506001600160a01b0384163b155b156128e257604051639996b31560e01b81526001600160a01b0385166004820152602401611ca3565b5092915050565b8051156128f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161294560405180604001604052805f81526020015f81525090565b815260200161296560405180604001604052805f81526020015f81525090565b815260200161298560405180604001604052805f81526020015f81525090565b81526020016129a560405180604001604052805f81526020015f81525090565b81526020016129c560405180604001604052805f81526020015f81525090565b81526020016129e560405180604001604052805f81526020015f81525090565b8152602001612a0560405180604001604052805f81526020015f81525090565b8152602001612a2560405180604001604052805f81526020015f81525090565b8152602001612a4560405180604001604052805f81526020015f81525090565b8152602001612a6560405180604001604052805f81526020015f81525090565b8152602001612a8560405180604001604052805f81526020015f81525090565b8152602001612aa560405180604001604052805f81526020015f81525090565b8152602001612ac560405180604001604052805f81526020015f81525090565b8152602001612ae560405180604001604052805f81526020015f81525090565b8152602001612b0560405180604001604052805f81526020015f81525090565b8152602001612b2560405180604001604052805f81526020015f81525090565b8152602001612b4560405180604001604052805f81526020015f81525090565b8152602001612b6560405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20906113f89190612bb0565b6040518060a001604052806005906020820280368337509192915050565b5f5b80821115611f5c5780830180546001600160c01b03191681555f600190910155600201612bb2565b80356001600160a01b03811681146111ad575f5ffd5b5f60208284031215612c00575f5ffd5b611c6f82612bda565b5f60208284031215612c19575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612c52604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146111ad575f5ffd5b5f60208284031215612e47575f5ffd5b611c6f82612e21565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612e8757612e87612e50565b60405290565b604051608081016001600160401b0381118282101715612e8757612e87612e50565b604051601f8201601f191681016001600160401b0381118282101715612ed757612ed7612e50565b604052919050565b5f60608284031215612eef575f5ffd5b604051606081016001600160401b0381118282101715612f1157612f11612e50565b604052905080612f2083612e21565b8152612f2e60208401612e21565b6020820152604092830135920191909152919050565b5f60408284031215612f54575f5ffd5b604080519081016001600160401b0381118282101715612f7657612f76612e50565b604052823581526020928301359281019290925250919050565b5f6104808284031215612fa1575f5ffd5b612fa9612e64565b9050612fb58383612f44565b8152612fc48360408401612f44565b6020820152612fd68360808401612f44565b6040820152612fe88360c08401612f44565b6060820152612ffb836101008401612f44565b608082015261300e836101408401612f44565b60a0820152613021836101808401612f44565b60c0820152613034836101c08401612f44565b60e0820152613047836102008401612f44565b61010082015261305b836102408401612f44565b61012082015261306f836102808401612f44565b610140820152613083836102c08401612f44565b610160820152613097836103008401612f44565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e0838503121561312d575f5ffd5b6131378484612edf565b91506131468460608501612f90565b90509250929050565b803563ffffffff811681146111ad575f5ffd5b5f60208284031215613172575f5ffd5b611c6f8261314f565b5f5f6040838503121561318c575f5ffd5b61319583612bda565b915060208301356001600160401b038111156131af575f5ffd5b8301601f810185136131bf575f5ffd5b80356001600160401b038111156131d8576131d8612e50565b6131eb601f8201601f1916602001612eaf565b8181528660208385010111156131ff575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6080828403121561322e575f5ffd5b613236612e8d565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613271575f5ffd5b611c6f838361321e565b5f5f5f610560848603121561328e575f5ffd5b6132988585612edf565b92506132a7856060860161321e565b91506132b68560e08601612f90565b90509250925092565b5f5f604083850312156132d0575f5ffd5b6132d983612e21565b915061314660208401612e21565b5f5f5f5f61012085870312156132fb575f5ffd5b6133058686612edf565b9350613314866060870161321e565b925061332260e0860161314f565b91506133316101008601612bda565b905092959194509250565b5f5f5f5f6105808587031215613350575f5ffd5b61335a8686612edf565b9350613369866060870161321e565b925060e08501359150613331866101008701612f90565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f606082840312156133c5575f5ffd5b611c6f8383612edf565b5f5f604083850312156133e0575f5ffd5b50508035926020909101359150565b5f602082840312156133ff575f5ffd5b81356001600160401b03811115613414575f5ffd5b8201601f81018413613424575f5ffd5b80356001600160401b0381111561343d5761343d612e50565b61344c60208260051b01612eaf565b8082825260208201915060208360071b85010192508683111561346d575f5ffd5b6020840193505b828410156134dd576080848803121561348b575f5ffd5b613493612e8d565b61349c85612e21565b81526134aa60208601612e21565b60208201526134bb60408601612e21565b6040820152606085810135908201528252608090930192602090910190613474565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115611241576112416134e7565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b038316806135465761354661351a565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115611241576112416134e7565b81810381811115611241576112416134e7565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806135b9576135b961351a565b806001600160401b0384160491505092915050565b5f602082840312156135de575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f61361061360a83876135e5565b856135e5565b928352505060200192915050565b5f8261362c5761362c61351a565b500690565b805f5b6005811015613653578151845260209384019390910190600101613634565b50505050565b61366e82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613845604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613a1d610500830185613631565b613a2b6105a0830184613659565b949350505050565b5f60208284031215613a43575f5ffd5b81518015158114611c6f575f5ffd5b5f6001600160401b0382166001600160401b038103613a7357613a736134e7565b60010192915050565b5f81613a8a57613a8a6134e7565b505f190190565b5f611c6f82846135e556fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
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:\xE9a\0\xF9_9_\x81\x81a\x1D\xC6\x01R\x81\x81a\x1D\xEF\x01Ra\x1Fl\x01Ra:\xE9_\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+\xF0V[a\t\x94V[\0[4\x80\x15a\x02\xB0W__\xFD[Pa\x02\xC4a\x02\xBF6`\x04a,\tV[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.7V[a\x10\xC0V[4\x80\x15a\x03\xBAW__\xFD[Pa\x02\xA3a\x03\xC96`\x04a,\tV[`\x0FUV[4\x80\x15a\x03\xD9W__\xFD[Pa\x02\xA3a\x03\xE86`\x04a1\x1BV[a\x117V[4\x80\x15a\x03\xF8W__\xFD[Pa\x04\x0Ca\x04\x076`\x04a.7V[a\x11PV[`@Q\x90\x15\x15\x81R` \x01a\x02\xF9V[4\x80\x15a\x04'W__\xFD[Pa\x02\xA3a\x0466`\x04a,\tV[`\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.7V[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.7V[`\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`\x04a1bV[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`\x04a2aV[\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,\tV[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\xBFV[a\x15pV[4\x80\x15a\x07HW__\xFD[Pa\x02\xA3a\x07W6`\x04a1bV[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\xE7V[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\x80V[4\x80\x15a\x08LW__\xFD[Pa\x02\xA3a\x08[6`\x04a2\xBFV[a\x1A\x9CV[4\x80\x15a\x08kW__\xFD[Pa\x02\xA3a\x08z6`\x04a3\xB5V[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\xCFV[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+\xF0V[a\x1CvV[4\x80\x15a\tlW__\xFD[Pa\x02\xA3a\t{6`\x04a3\xEFV[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\xFBV[a\x11\x9D\x91\x90a5.V[`\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\x83a5.V[`\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\x84a5.V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x12Oa\x1D`V[_Q` a:\xBD_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:\x9D_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\x83a5zV[\x81T\x81\x10a\x14iWa\x14ia5\x8DV[_\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\x8DV[_\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\x8DV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x154Wa\x154a5\x8DV[\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\x84a5.V[`\x01`\x01`@\x1B\x03\x16_\x03a\x15\xCAWa\x15\xC3\x82\x84a5\xA1V[\x90Pa\x12AV[a\x15\xD4\x82\x84a5\xA1V[a\x15\xC3\x90`\x01a4\xFBV[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:\xBD_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\xFBV[`\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\xFBV[`@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:\xBD_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\x90a5zV[\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\x8DV[` \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:\x9D_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\xCEV[`\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:\x9D_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+\x92V[`\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\xFCV[`@\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\x1EV[`\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\x13V[` `@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:3V[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\x8DV[_\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\x8DV[_\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:RV[\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\x8DV[_\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\x85a5zV[\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\x8DV[_\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\x8DV[_\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\x89a5zV[\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:\xBD_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:\x9D_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:\x91V[_`@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` _ \x90a\x13\xF8\x91\x90a+\xB0V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[_[\x80\x82\x11\x15a\x1F\\W\x80\x83\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x90\x91\x01U`\x02\x01a+\xB2V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a,\0W__\xFD[a\x1Co\x82a+\xDAV[_` \x82\x84\x03\x12\x15a,\x19W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa,R`@\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.GW__\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.\x87Wa.\x87a.PV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x87Wa.\x87a.PV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xD7Wa.\xD7a.PV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a.\xEFW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\x11Wa/\x11a.PV[`@R\x90P\x80a/ \x83a.!V[\x81Ra/.` \x84\x01a.!V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a/TW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/vWa/va.PV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a/\xA1W__\xFD[a/\xA9a.dV[\x90Pa/\xB5\x83\x83a/DV[\x81Ra/\xC4\x83`@\x84\x01a/DV[` \x82\x01Ra/\xD6\x83`\x80\x84\x01a/DV[`@\x82\x01Ra/\xE8\x83`\xC0\x84\x01a/DV[``\x82\x01Ra/\xFB\x83a\x01\0\x84\x01a/DV[`\x80\x82\x01Ra0\x0E\x83a\x01@\x84\x01a/DV[`\xA0\x82\x01Ra0!\x83a\x01\x80\x84\x01a/DV[`\xC0\x82\x01Ra04\x83a\x01\xC0\x84\x01a/DV[`\xE0\x82\x01Ra0G\x83a\x02\0\x84\x01a/DV[a\x01\0\x82\x01Ra0[\x83a\x02@\x84\x01a/DV[a\x01 \x82\x01Ra0o\x83a\x02\x80\x84\x01a/DV[a\x01@\x82\x01Ra0\x83\x83a\x02\xC0\x84\x01a/DV[a\x01`\x82\x01Ra0\x97\x83a\x03\0\x84\x01a/DV[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[a17\x84\x84a.\xDFV[\x91Pa1F\x84``\x85\x01a/\x90V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a1rW__\xFD[a\x1Co\x82a1OV[__`@\x83\x85\x03\x12\x15a1\x8CW__\xFD[a1\x95\x83a+\xDAV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xAFW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\xBFW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xD8Wa1\xD8a.PV[a1\xEB`\x1F\x82\x01`\x1F\x19\x16` \x01a.\xAFV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1\xFFW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a2.W__\xFD[a26a.\x8DV[\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\x15a2qW__\xFD[a\x1Co\x83\x83a2\x1EV[___a\x05`\x84\x86\x03\x12\x15a2\x8EW__\xFD[a2\x98\x85\x85a.\xDFV[\x92Pa2\xA7\x85``\x86\x01a2\x1EV[\x91Pa2\xB6\x85`\xE0\x86\x01a/\x90V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a2\xD0W__\xFD[a2\xD9\x83a.!V[\x91Pa1F` \x84\x01a.!V[____a\x01 \x85\x87\x03\x12\x15a2\xFBW__\xFD[a3\x05\x86\x86a.\xDFV[\x93Pa3\x14\x86``\x87\x01a2\x1EV[\x92Pa3\"`\xE0\x86\x01a1OV[\x91Pa31a\x01\0\x86\x01a+\xDAV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a3PW__\xFD[a3Z\x86\x86a.\xDFV[\x93Pa3i\x86``\x87\x01a2\x1EV[\x92P`\xE0\x85\x015\x91Pa31\x86a\x01\0\x87\x01a/\x90V[` \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\xC5W__\xFD[a\x1Co\x83\x83a.\xDFV[__`@\x83\x85\x03\x12\x15a3\xE0W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a3\xFFW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a4\x14W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a4$W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a4=Wa4=a.PV[a4L` \x82`\x05\x1B\x01a.\xAFV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a4mW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\xDDW`\x80\x84\x88\x03\x12\x15a4\x8BW__\xFD[a4\x93a.\x8DV[a4\x9C\x85a.!V[\x81Ra4\xAA` \x86\x01a.!V[` \x82\x01Ra4\xBB`@\x86\x01a.!V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a4tV[\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\xE7V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5FWa5Fa5\x1AV[\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\xE7V[\x81\x81\x03\x81\x81\x11\x15a\x12AWa\x12Aa4\xE7V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5\xB9Wa5\xB9a5\x1AV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a5\xDEW__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a6\x10a6\n\x83\x87a5\xE5V[\x85a5\xE5V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a6,Wa6,a5\x1AV[P\x06\x90V[\x80_[`\x05\x81\x10\x15a6SW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a64V[PPPPV[a6n\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\x01Qa8E`@\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:\x1Da\x05\0\x83\x01\x85a61V[a:+a\x05\xA0\x83\x01\x84a6YV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a:CW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1CoW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a:sWa:sa4\xE7V[`\x01\x01\x92\x91PPV[_\x81a:\x8AWa:\x8Aa4\xE7V[P_\x19\x01\x90V[_a\x1Co\x82\x84a5\xE5V\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#\0\n",
5740    );
5741    /// The runtime bytecode of the contract, as deployed on the network.
5742    ///
5743    /// ```text
5744    ///0x608060405260043610610280575f3560e01c806369cc6a0411610155578063aabd5db3116100be578063d24d933d11610078578063d24d933d146108d5578063e030330114610904578063f068205414610923578063f2fde38b14610942578063f567616014610961578063f9e50d1914610980575f5ffd5b8063aabd5db3146107e5578063ad3cb1cc14610804578063b33bc49114610841578063b5adea3c14610860578063c23b9e9e1461087f578063c8e5e498146108b7575f5ffd5b80638da5cb5b1161010f5780638da5cb5b146106e257806390c143901461071e57806396c1ca611461073d578063998328e81461075c5780639baa3cc9146107715780639fdb54a714610790575f5ffd5b806369cc6a0414610631578063715018a614610645578063757c37ad146106595780637667180814610673578063826e41fc146106875780638584d23f146106a6575f5ffd5b8063300c89dd116101f757806341682744116101b15780634168274414610575578063426d319414610592578063433dba9f146105b35780634f1ef286146105d257806352d1902d146105e5578063623a1338146105f9575f5ffd5b8063300c89dd1461048c578063313df7b1146104ab578063378ec23b146104e257806338e454b1146104fe5780633c23b6db146105125780633ed55b7b1461054f575f5ffd5b8063167ac61811610248578063167ac618146103905780631af08034146103af5780632063d4f7146103ce57806325297427146103ed5780632d52aad61461041c5780632f79889d1461044e575f5ffd5b8063013fa5fc1461028457806302b592f3146102a55780630625e19b146103025780630d8e6e2c1461034457806312173c2c1461036f575b5f5ffd5b34801561028f575f5ffd5b506102a361029e366004612bf0565b610994565b005b3480156102b0575f5ffd5b506102c46102bf366004612c09565b610a47565b6040516102f994939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b34801561030d575f5ffd5b50600b54600c54600d54600e546103249392919084565b6040805194855260208501939093529183015260608201526080016102f9565b34801561034f575f5ffd5b5060408051600381525f60208201819052918101919091526060016102f9565b34801561037a575f5ffd5b50610383610a90565b6040516102f99190612c20565b34801561039b575f5ffd5b506102a36103aa366004612e37565b6110c0565b3480156103ba575f5ffd5b506102a36103c9366004612c09565b600f55565b3480156103d9575f5ffd5b506102a36103e836600461311b565b611137565b3480156103f8575f5ffd5b5061040c610407366004612e37565b611150565b60405190151581526020016102f9565b348015610427575f5ffd5b506102a3610436366004612c09565b6010805460ff60401b1916600160401b179055601155565b348015610459575f5ffd5b5060085461047490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102f9565b348015610497575f5ffd5b5061040c6104a6366004612e37565b6111b2565b3480156104b6575f5ffd5b506008546104ca906001600160a01b031681565b6040516001600160a01b0390911681526020016102f9565b3480156104ed575f5ffd5b50435b6040519081526020016102f9565b348015610509575f5ffd5b506102a3611247565b34801561051d575f5ffd5b506102a361052c366004612e37565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b34801561055a575f5ffd5b50600a5461047490600160401b90046001600160401b031681565b348015610580575f5ffd5b506010546001600160401b0316610474565b34801561059d575f5ffd5b505f546001546002546003546103249392919084565b3480156105be575f5ffd5b506102a36105cd366004613162565b61133e565b6102a36105e036600461317b565b611352565b3480156105f0575f5ffd5b506104f0611371565b348015610604575f5ffd5b506102a3610613366004613261565b8051600b556020810151600c556040810151600d5560600151600e55565b34801561063c575f5ffd5b506102a361138c565b348015610650575f5ffd5b506102a36113fa565b348015610664575f5ffd5b506102a36103e836600461327b565b34801561067e575f5ffd5b5061047461141b565b348015610692575f5ffd5b506008546001600160a01b0316151561040c565b3480156106b1575f5ffd5b506106c56106c0366004612c09565b611445565b604080519283526001600160401b039091166020830152016102f9565b3480156106ed575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166104ca565b348015610729575f5ffd5b506104746107383660046132bf565b611570565b348015610748575f5ffd5b506102a3610757366004613162565b6115df565b348015610767575f5ffd5b506104f0600f5481565b34801561077c575f5ffd5b506102a361078b3660046132e7565b611668565b34801561079b575f5ffd5b506006546007546107bf916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102f9565b3480156107f0575f5ffd5b506102a36107ff36600461333c565b611777565b34801561080f575f5ffd5b50610834604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102f99190613380565b34801561084c575f5ffd5b506102a361085b3660046132bf565b611a9c565b34801561086b575f5ffd5b506102a361087a3660046133b5565b611bf5565b34801561088a575f5ffd5b506008546108a290600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102f9565b3480156108c2575f5ffd5b506102a36010805460ff60401b19169055565b3480156108e0575f5ffd5b506004546005546107bf916001600160401b0380821692600160401b909204169083565b34801561090f575f5ffd5b5061040c61091e3660046133cf565b611c3c565b34801561092e575f5ffd5b50600a54610474906001600160401b031681565b34801561094d575f5ffd5b506102a361095c366004612bf0565b611c76565b34801561096c575f5ffd5b506102a361097b3660046133ef565b611cb5565b34801561098b575f5ffd5b506009546104f0565b61099c611d60565b6001600160a01b0381166109c35760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109f25760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610a56575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610a98612912565b620100008152600560208201527f018f7ccd26652f2ad0a0d891bf29c5ef9f7b2a4e5a8295ee0acde69b1669acb56040820151527f0c3b19cb30f3edf93eb2b9e0b11ce099c5745bc3eda3226c7f5d5f39a97bfcaa6020604083015101527f141e3d68aad50bf0843f645d61f5e8fe3608d312e457d1bf712ce20c2ce906a96060820151527f2b44c03676d0a3cd12257e589b78f059a525aac5d6bfab0d6189d4b40ae511226020606083015101527f18609f79b8297b3f9951e7139945aa60e33e914dea6f27bda920b0e0c90935f36080820151527f11a6315abb98f76cce5b4fa5d87b8a2064d2d04c20f83314d2dd2fdb68141e3d6020608083015101527f2fa93348689ea07bb760d7c3100d3148afc342c050eba7f39455e478a5730d0560a0820151527f0b7c92113ecabfa54988d3a81e13237196c9975dd3dea0a325c49bcf901f8b4a602060a083015101527f2ae11000a5bd0a79adf8e3a5a449ea5c58dfa7d6a2fa24b9c976ecfca706584060c0820151527f0c4677befdd8c7d2474f2f7d19f2d0e2747a7e05469cc08eee2b7b81ad4872e2602060c083015101527f04065da2ee5858e53035e3fab84444a8663a8ead5d299b0b0460b9bd6b9c34cb60e0820151527f0dd33bf9f503c9d0b486ec825bd8ddfbc93a96f4e09978bea94db7caa33e32f0602060e083015101527f0d53ecf3464c3b43f674a4c9ae5dacd9e2a6cf69ccd06bdb38cdef07acd0b9b8610100820151527f0c0a5358e274a877cd87e017a90e3e2c4630637c14400d16141610817543cc6c602061010083015101527f053d21494294a22b3e3c567c9f618615af41c257043b87470788d7c30e915b32610120820151527f04cfeb1d7ff9e07794e47e486fcfe6b0e143c74a49ce915ebdf6ae68df6e06b8602061012083015101527f113f2826bf7221de175ca046f82f51112a9eb1486b06747f4d13940bc26f4bb8610140820151527f05cfaa7aa08b080dcbc31caddd501fe5ef8c118d8ed7d500708ec689b3ac7f2b602061014083015101527f0a9d147b2c3c63d298198af385558871a9b69c192291a4ee69def6d82dd7c31e610160820151527f016d5ae3fc3c6dc5283ff63e2ffe92d0931cc77258cccf3d1c9aed601ed2e8ba602061016083015101527f123d9f2908cd4f038bb281805ad8e922444469b02f4b83e6c051c0e1caad152c610180820151527f08e647cc02b9df4ceb5b154550d2b29a7b67370f67a37274206bb12c5c451dc2602061018083015101527f1859105e4ad21829c12c4a5b50d5a2a5d988fd73eb4424465638e199ab367b826101a0820151527f0abbccc29007b3c64dad550f76c99ea330b102dd7fb57a542a9add84845d51c360206101a083015101527f263a7ebacbf181a281a3494d75e822165d3f50e9ac14e74a822ad91503ec78a96101c0820151527f1f0968f3165c00c63964e71ef0c42396a146190a97ff2f436ae89288cb9d344660206101c083015101527f2f7cd5cc72420dd90cf820746b89e616dff8b21e9aadb9a4a06f41ece2039a5e6101e0820151527f15a34038506ec14fc8c26ad2551619bace01483f085e208d2302ad4c2111cb3760206101e083015101527f172d2aa0fb172d331b0f3671ae68be93ecfbda63a722176be8841e839031b61e610200820151527f13b29e31f3730117e54309a33f472f538f688bb94ccc3085da13a561dc8865e9602061020083015101527f0bf4050e8f045922cae613d4a626aeaeee7dc24a2b7bb473aee45e5c94e7ede3610220820151527f15aa6d9399cd9b8ab3883839d300e76f9e4e2baad7d39e0aa2e382f235d22263602061022083015101527f09dd102380546061aa42f087f8ac5525a6747b8db1e3c4fe033fdbe3d80d6e9a610240820151527f2edfb5b603bbb2d376ffe876bd219319d34d8813d09b70fb37da3cc2b77ebacb602061024083015101527f044bef6f37b3b1db2da99a5262d054163fc465d24e53925d07e5d4b5fe946746610260820151527f10453728e61b7fdf863adffb97c4a65b9c116087c10f01563fc31393ee69ea3f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b6110c8611d60565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561110e94919091048116928116911617611570565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806111705750600a546001600160401b0316155b1561117c57505f919050565b600a546001600160401b03166111938360056134fb565b61119d919061352e565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111d25750600a546001600160401b0316155b156111de57505f919050565b600a546111f4906001600160401b03168361352e565b6001600160401b031615806112415750600a5461121c906005906001600160401b031661355b565b600a546001600160401b039182169161123691168461352e565b6001600160401b0316115b92915050565b61124f611d60565b5f516020613abd5f395f51905f52805460039190600160401b900460ff1680611285575080546001600160401b03808416911610155b156112a35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a546112dd9291810482169116611570565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b611346611d60565b61134f816115df565b50565b61135a611dbb565b61136382611e5f565b61136d8282611ea0565b5050565b5f61137a611f61565b505f516020613a9d5f395f51905f5290565b611394611d60565b6008546001600160a01b0316156113df57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b611402611d60565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91611440916001600160401b03600160401b90920482169116611570565b905090565b600980545f9182919061145960018361357a565b815481106114695761146961358d565b5f918252602090912060029091020154600160801b90046001600160401b031684106114a857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156115695784600982815481106114d8576114d861358d565b5f918252602090912060029091020154600160801b90046001600160401b0316111561156157600981815481106115115761151161358d565b905f5260205f20906002020160010154600982815481106115345761153461358d565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b6001016114bc565b5050915091565b5f816001600160401b03165f0361158857505f611241565b826001600160401b03165f036115a057506001611241565b6115aa828461352e565b6001600160401b03165f036115ca576115c382846135a1565b9050611241565b6115d482846135a1565b6115c39060016134fb565b6115e7611d60565b610e108163ffffffff16108061160657506301e133808163ffffffff16115b80611624575060085463ffffffff600160a01b909104811690821611155b15611642576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f516020613abd5f395f51905f528054600160401b810460ff1615906001600160401b03165f811580156116995750825b90505f826001600160401b031660011480156116b45750303b155b9050811580156116c2575080155b156116e05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561170a57845460ff60401b1916600160401b1785555b61171386611faa565b61171b611fbb565b611726898989611fc3565b831561176c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b03161515801561179c57506008546001600160a01b03163314155b156117ba576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b0391821691161115806117f3575060065460208501516001600160401b03600160401b9092048216911611155b156118115760405163051c46ef60e01b815260040160405180910390fd5b61181e84604001516120ef565b61182b83602001516120ef565b61183883604001516120ef565b61184583606001516120ef565b5f61184e61141b565b6020860151600a549192505f9161186e91906001600160401b0316611570565b6010549091506001600160401b03908116908216106118b25761189486602001516111b2565b156118b25760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b03908116908216111561195e5760026118d5838361355b565b6001600160401b0316106118fc5760405163080ae8d960e01b815260040160405180910390fd5b6119078260016134fb565b6001600160401b0316816001600160401b0316148015611940575060065461193e90600160401b90046001600160401b0316611150565b155b1561195e5760405163080ae8d960e01b815260040160405180910390fd5b61196a86868686612130565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906119c757506119c78660200151611150565b15611a31578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b611a158260016134fb565b6040516001600160401b03909116815260200160405180910390a15b611a3c43428861235a565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68860400151604051611a8c91815260200190565b60405180910390a3505050505050565b611aa4611d60565b5f516020613abd5f395f51905f52805460029190600160401b900460ff1680611ada575080546001600160401b03808416911610155b15611af85760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611b40576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611b898385611570565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b80516006805460208401516001600160401b03908116600160401b026001600160801b0319909216931692909217919091179055604081015160075561134f43428361235a565b6010545f90600160401b900460ff16611c5e57611c598383612543565b611c6f565b8160115484611c6d919061357a565b115b9392505050565b611c7e611d60565b6001600160a01b038116611cac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61134f8161269b565b611cc060095f612b77565b5f5b815181101561136d576009828281518110611cdf57611cdf61358d565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611cc2565b33611d927f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146113f85760405163118cdaa760e01b8152336004820152602401611ca3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611e4157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611e355f516020613a9d5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156113f85760405163703e46dd60e11b815260040160405180910390fd5b611e67611d60565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610a3c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611efa575060408051601f3d908101601f19168201909252611ef7918101906135ce565b60015b611f2257604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611ca3565b5f516020613a9d5f395f51905f528114611f5257604051632a87526960e21b815260048101829052602401611ca3565b611f5c838361270b565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113f85760405163703e46dd60e11b815260040160405180910390fd5b611fb2612760565b61134f81612796565b6113f8612760565b82516001600160401b0316151580611fe7575060208301516001600160401b031615155b80611ff457506020820151155b8061200157506040820151155b8061200e57506060820151155b8061201857508151155b8061202a5750610e108163ffffffff16105b8061203e57506301e133808163ffffffff16115b1561205c576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061136d5760405163016c173360e21b815260040160405180910390fd5b5f612139610a90565b9050612143612b92565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b909104811691161080159061219b575061219b8760200151611150565b156121e4576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a001604051602081830303815290604052905061221f565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261227091849089906020016135fc565b60408051601f19818403018152919052805160209091012090506122b47f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018261361e565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd67906122f490879087908a90600401613813565b602060405180830381865af415801561230f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123339190613a33565b612350576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b600954158015906123cf575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061239a5761239a61358d565b5f9182526020909120600290910201546123c490600160401b90046001600160401b03168461355b565b6001600160401b0316115b1561246257600854600980549091600160c01b90046001600160401b03169081106123fc576123fc61358d565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861243c83613a52565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6009545f9043841180612554575080155b8061259e5750600854600980549091600160c01b90046001600160401b03169081106125825761258261358d565b5f9182526020909120600290910201546001600160401b031684105b156125bc5760405163b0b4387760e01b815260040160405180910390fd5b5f80806125ca60018561357a565b90505b8161266657600854600160c01b90046001600160401b031681106126665786600982815481106125ff576125ff61358d565b5f9182526020909120600290910201546001600160401b0316116126545760019150600981815481106126345761263461358d565b5f9182526020909120600290910201546001600160401b03169250612666565b8061265e81613a7c565b9150506125cd565b816126845760405163b0b4387760e01b815260040160405180910390fd5b8561268f848961357a565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6127148261279e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561275857611f5c8282612801565b61136d612873565b5f516020613abd5f395f51905f5254600160401b900460ff166113f857604051631afcd79f60e31b815260040160405180910390fd5b611c7e612760565b806001600160a01b03163b5f036127d357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611ca3565b5f516020613a9d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161281d9190613a91565b5f60405180830381855af49150503d805f8114612855576040519150601f19603f3d011682016040523d82523d5f602084013e61285a565b606091505b509150915061286a858383612892565b95945050505050565b34156113f85760405163b398979f60e01b815260040160405180910390fd5b6060826128a257611c59826128e9565b81511580156128b957506001600160a01b0384163b155b156128e257604051639996b31560e01b81526001600160a01b0385166004820152602401611ca3565b5092915050565b8051156128f95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161294560405180604001604052805f81526020015f81525090565b815260200161296560405180604001604052805f81526020015f81525090565b815260200161298560405180604001604052805f81526020015f81525090565b81526020016129a560405180604001604052805f81526020015f81525090565b81526020016129c560405180604001604052805f81526020015f81525090565b81526020016129e560405180604001604052805f81526020015f81525090565b8152602001612a0560405180604001604052805f81526020015f81525090565b8152602001612a2560405180604001604052805f81526020015f81525090565b8152602001612a4560405180604001604052805f81526020015f81525090565b8152602001612a6560405180604001604052805f81526020015f81525090565b8152602001612a8560405180604001604052805f81526020015f81525090565b8152602001612aa560405180604001604052805f81526020015f81525090565b8152602001612ac560405180604001604052805f81526020015f81525090565b8152602001612ae560405180604001604052805f81526020015f81525090565b8152602001612b0560405180604001604052805f81526020015f81525090565b8152602001612b2560405180604001604052805f81526020015f81525090565b8152602001612b4560405180604001604052805f81526020015f81525090565b8152602001612b6560405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20906113f89190612bb0565b6040518060a001604052806005906020820280368337509192915050565b5f5b80821115611f5c5780830180546001600160c01b03191681555f600190910155600201612bb2565b80356001600160a01b03811681146111ad575f5ffd5b5f60208284031215612c00575f5ffd5b611c6f82612bda565b5f60208284031215612c19575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612c52604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146111ad575f5ffd5b5f60208284031215612e47575f5ffd5b611c6f82612e21565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612e8757612e87612e50565b60405290565b604051608081016001600160401b0381118282101715612e8757612e87612e50565b604051601f8201601f191681016001600160401b0381118282101715612ed757612ed7612e50565b604052919050565b5f60608284031215612eef575f5ffd5b604051606081016001600160401b0381118282101715612f1157612f11612e50565b604052905080612f2083612e21565b8152612f2e60208401612e21565b6020820152604092830135920191909152919050565b5f60408284031215612f54575f5ffd5b604080519081016001600160401b0381118282101715612f7657612f76612e50565b604052823581526020928301359281019290925250919050565b5f6104808284031215612fa1575f5ffd5b612fa9612e64565b9050612fb58383612f44565b8152612fc48360408401612f44565b6020820152612fd68360808401612f44565b6040820152612fe88360c08401612f44565b6060820152612ffb836101008401612f44565b608082015261300e836101408401612f44565b60a0820152613021836101808401612f44565b60c0820152613034836101c08401612f44565b60e0820152613047836102008401612f44565b61010082015261305b836102408401612f44565b61012082015261306f836102808401612f44565b610140820152613083836102c08401612f44565b610160820152613097836103008401612f44565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e0838503121561312d575f5ffd5b6131378484612edf565b91506131468460608501612f90565b90509250929050565b803563ffffffff811681146111ad575f5ffd5b5f60208284031215613172575f5ffd5b611c6f8261314f565b5f5f6040838503121561318c575f5ffd5b61319583612bda565b915060208301356001600160401b038111156131af575f5ffd5b8301601f810185136131bf575f5ffd5b80356001600160401b038111156131d8576131d8612e50565b6131eb601f8201601f1916602001612eaf565b8181528660208385010111156131ff575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6080828403121561322e575f5ffd5b613236612e8d565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f60808284031215613271575f5ffd5b611c6f838361321e565b5f5f5f610560848603121561328e575f5ffd5b6132988585612edf565b92506132a7856060860161321e565b91506132b68560e08601612f90565b90509250925092565b5f5f604083850312156132d0575f5ffd5b6132d983612e21565b915061314660208401612e21565b5f5f5f5f61012085870312156132fb575f5ffd5b6133058686612edf565b9350613314866060870161321e565b925061332260e0860161314f565b91506133316101008601612bda565b905092959194509250565b5f5f5f5f6105808587031215613350575f5ffd5b61335a8686612edf565b9350613369866060870161321e565b925060e08501359150613331866101008701612f90565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f606082840312156133c5575f5ffd5b611c6f8383612edf565b5f5f604083850312156133e0575f5ffd5b50508035926020909101359150565b5f602082840312156133ff575f5ffd5b81356001600160401b03811115613414575f5ffd5b8201601f81018413613424575f5ffd5b80356001600160401b0381111561343d5761343d612e50565b61344c60208260051b01612eaf565b8082825260208201915060208360071b85010192508683111561346d575f5ffd5b6020840193505b828410156134dd576080848803121561348b575f5ffd5b613493612e8d565b61349c85612e21565b81526134aa60208601612e21565b60208201526134bb60408601612e21565b6040820152606085810135908201528252608090930192602090910190613474565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115611241576112416134e7565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b038316806135465761354661351a565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115611241576112416134e7565b81810381811115611241576112416134e7565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b038316806135b9576135b961351a565b806001600160401b0384160491505092915050565b5f602082840312156135de575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f61361061360a83876135e5565b856135e5565b928352505060200192915050565b5f8261362c5761362c61351a565b500690565b805f5b6005811015613653578151845260209384019390910190600101613634565b50505050565b61366e82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613845604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613a1d610500830185613631565b613a2b6105a0830184613659565b949350505050565b5f60208284031215613a43575f5ffd5b81518015158114611c6f575f5ffd5b5f6001600160401b0382166001600160401b038103613a7357613a736134e7565b60010192915050565b5f81613a8a57613a8a6134e7565b505f190190565b5f611c6f82846135e556fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
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+\xF0V[a\t\x94V[\0[4\x80\x15a\x02\xB0W__\xFD[Pa\x02\xC4a\x02\xBF6`\x04a,\tV[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.7V[a\x10\xC0V[4\x80\x15a\x03\xBAW__\xFD[Pa\x02\xA3a\x03\xC96`\x04a,\tV[`\x0FUV[4\x80\x15a\x03\xD9W__\xFD[Pa\x02\xA3a\x03\xE86`\x04a1\x1BV[a\x117V[4\x80\x15a\x03\xF8W__\xFD[Pa\x04\x0Ca\x04\x076`\x04a.7V[a\x11PV[`@Q\x90\x15\x15\x81R` \x01a\x02\xF9V[4\x80\x15a\x04'W__\xFD[Pa\x02\xA3a\x0466`\x04a,\tV[`\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.7V[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.7V[`\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`\x04a1bV[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`\x04a2aV[\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,\tV[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\xBFV[a\x15pV[4\x80\x15a\x07HW__\xFD[Pa\x02\xA3a\x07W6`\x04a1bV[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\xE7V[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\x80V[4\x80\x15a\x08LW__\xFD[Pa\x02\xA3a\x08[6`\x04a2\xBFV[a\x1A\x9CV[4\x80\x15a\x08kW__\xFD[Pa\x02\xA3a\x08z6`\x04a3\xB5V[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\xCFV[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+\xF0V[a\x1CvV[4\x80\x15a\tlW__\xFD[Pa\x02\xA3a\t{6`\x04a3\xEFV[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\xFBV[a\x11\x9D\x91\x90a5.V[`\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\x83a5.V[`\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\x84a5.V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x12Oa\x1D`V[_Q` a:\xBD_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:\x9D_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\x83a5zV[\x81T\x81\x10a\x14iWa\x14ia5\x8DV[_\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\x8DV[_\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\x8DV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x154Wa\x154a5\x8DV[\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\x84a5.V[`\x01`\x01`@\x1B\x03\x16_\x03a\x15\xCAWa\x15\xC3\x82\x84a5\xA1V[\x90Pa\x12AV[a\x15\xD4\x82\x84a5\xA1V[a\x15\xC3\x90`\x01a4\xFBV[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:\xBD_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\xFBV[`\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\xFBV[`@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:\xBD_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\x90a5zV[\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\x8DV[` \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:\x9D_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\xCEV[`\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:\x9D_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+\x92V[`\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\xFCV[`@\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\x1EV[`\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\x13V[` `@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:3V[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\x8DV[_\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\x8DV[_\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:RV[\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\x8DV[_\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\x85a5zV[\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\x8DV[_\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\x8DV[_\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\x89a5zV[\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:\xBD_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:\x9D_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:\x91V[_`@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` _ \x90a\x13\xF8\x91\x90a+\xB0V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[_[\x80\x82\x11\x15a\x1F\\W\x80\x83\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x90\x91\x01U`\x02\x01a+\xB2V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a,\0W__\xFD[a\x1Co\x82a+\xDAV[_` \x82\x84\x03\x12\x15a,\x19W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa,R`@\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.GW__\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.\x87Wa.\x87a.PV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\x87Wa.\x87a.PV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a.\xD7Wa.\xD7a.PV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a.\xEFW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/\x11Wa/\x11a.PV[`@R\x90P\x80a/ \x83a.!V[\x81Ra/.` \x84\x01a.!V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a/TW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/vWa/va.PV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a/\xA1W__\xFD[a/\xA9a.dV[\x90Pa/\xB5\x83\x83a/DV[\x81Ra/\xC4\x83`@\x84\x01a/DV[` \x82\x01Ra/\xD6\x83`\x80\x84\x01a/DV[`@\x82\x01Ra/\xE8\x83`\xC0\x84\x01a/DV[``\x82\x01Ra/\xFB\x83a\x01\0\x84\x01a/DV[`\x80\x82\x01Ra0\x0E\x83a\x01@\x84\x01a/DV[`\xA0\x82\x01Ra0!\x83a\x01\x80\x84\x01a/DV[`\xC0\x82\x01Ra04\x83a\x01\xC0\x84\x01a/DV[`\xE0\x82\x01Ra0G\x83a\x02\0\x84\x01a/DV[a\x01\0\x82\x01Ra0[\x83a\x02@\x84\x01a/DV[a\x01 \x82\x01Ra0o\x83a\x02\x80\x84\x01a/DV[a\x01@\x82\x01Ra0\x83\x83a\x02\xC0\x84\x01a/DV[a\x01`\x82\x01Ra0\x97\x83a\x03\0\x84\x01a/DV[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[a17\x84\x84a.\xDFV[\x91Pa1F\x84``\x85\x01a/\x90V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\xADW__\xFD[_` \x82\x84\x03\x12\x15a1rW__\xFD[a\x1Co\x82a1OV[__`@\x83\x85\x03\x12\x15a1\x8CW__\xFD[a1\x95\x83a+\xDAV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xAFW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a1\xBFW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xD8Wa1\xD8a.PV[a1\xEB`\x1F\x82\x01`\x1F\x19\x16` \x01a.\xAFV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a1\xFFW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a2.W__\xFD[a26a.\x8DV[\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\x15a2qW__\xFD[a\x1Co\x83\x83a2\x1EV[___a\x05`\x84\x86\x03\x12\x15a2\x8EW__\xFD[a2\x98\x85\x85a.\xDFV[\x92Pa2\xA7\x85``\x86\x01a2\x1EV[\x91Pa2\xB6\x85`\xE0\x86\x01a/\x90V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a2\xD0W__\xFD[a2\xD9\x83a.!V[\x91Pa1F` \x84\x01a.!V[____a\x01 \x85\x87\x03\x12\x15a2\xFBW__\xFD[a3\x05\x86\x86a.\xDFV[\x93Pa3\x14\x86``\x87\x01a2\x1EV[\x92Pa3\"`\xE0\x86\x01a1OV[\x91Pa31a\x01\0\x86\x01a+\xDAV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a3PW__\xFD[a3Z\x86\x86a.\xDFV[\x93Pa3i\x86``\x87\x01a2\x1EV[\x92P`\xE0\x85\x015\x91Pa31\x86a\x01\0\x87\x01a/\x90V[` \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\xC5W__\xFD[a\x1Co\x83\x83a.\xDFV[__`@\x83\x85\x03\x12\x15a3\xE0W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a3\xFFW__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a4\x14W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a4$W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a4=Wa4=a.PV[a4L` \x82`\x05\x1B\x01a.\xAFV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a4mW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a4\xDDW`\x80\x84\x88\x03\x12\x15a4\x8BW__\xFD[a4\x93a.\x8DV[a4\x9C\x85a.!V[\x81Ra4\xAA` \x86\x01a.!V[` \x82\x01Ra4\xBB`@\x86\x01a.!V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a4tV[\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\xE7V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5FWa5Fa5\x1AV[\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\xE7V[\x81\x81\x03\x81\x81\x11\x15a\x12AWa\x12Aa4\xE7V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a5\xB9Wa5\xB9a5\x1AV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a5\xDEW__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a6\x10a6\n\x83\x87a5\xE5V[\x85a5\xE5V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a6,Wa6,a5\x1AV[P\x06\x90V[\x80_[`\x05\x81\x10\x15a6SW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a64V[PPPPV[a6n\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\x01Qa8E`@\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:\x1Da\x05\0\x83\x01\x85a61V[a:+a\x05\xA0\x83\x01\x84a6YV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a:CW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1CoW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a:sWa:sa4\xE7V[`\x01\x01\x92\x91PPV[_\x81a:\x8AWa:\x8Aa4\xE7V[P_\x19\x01\x90V[_a\x1Co\x82\x84a5\xE5V\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#\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::abi_decode_raw_with_config(
5826                    data,
5827                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5828                )
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::abi_decode_raw_with_config(
5900                    data,
5901                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5902                )
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::abi_decode_raw_with_config(
5983                    data,
5984                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5985                )
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::abi_decode_raw_with_config(
6057                    data,
6058                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6059                )
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::abi_decode_raw_with_config(
6131                    data,
6132                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6133                )
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::abi_decode_raw_with_config(
6207                    data,
6208                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6209                )
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::abi_decode_raw_with_config(
6281                    data,
6282                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6283                )
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::abi_decode_raw_with_config(
6355                    data,
6356                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6357                )
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::abi_decode_raw_with_config(
6431                    data,
6432                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6433                )
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::abi_decode_raw_with_config(
6505                    data,
6506                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6507                )
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::abi_decode_raw_with_config(
6579                    data,
6580                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6581                )
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::abi_decode_raw_with_config(
6653                    data,
6654                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6655                )
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::abi_decode_raw_with_config(
6727                    data,
6728                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6729                )
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::abi_decode_raw_with_config(
6801                    data,
6802                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6803                )
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::abi_decode_raw_with_config(
6875                    data,
6876                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6877                )
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::abi_decode_raw_with_config(
6949                    data,
6950                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6951                )
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::abi_decode_raw_with_config(
7023                    data,
7024                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7025                )
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::abi_decode_raw_with_config(
7104                    data,
7105                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7106                )
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::abi_decode_raw_with_config(
7187                    data,
7188                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7189                )
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::abi_decode_raw_with_config(
7263                    data,
7264                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7265                )
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::abi_decode_raw_with_config(
7337                    data,
7338                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7339                )
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::abi_decode_raw_with_config(
7413                    data,
7414                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7415                )
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::abi_decode_raw_with_config(
7496                    data,
7497                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7498                )
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::abi_decode_raw_with_config(
7570                    data,
7571                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7572                )
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_with_config(
8589                data: &[u8],
8590                config: alloy_sol_types::abi::AbiDecoderConfig,
8591            ) -> alloy_sol_types::Result<Self::Return> {
8592                <Self::ReturnTuple<
8593                    '_,
8594                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8595                        data,
8596                        config,
8597                    )
8598                    .map(|r| {
8599                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8600                        r._0
8601                    })
8602            }
8603            #[inline]
8604            fn abi_decode_returns_validate(
8605                data: &[u8],
8606            ) -> alloy_sol_types::Result<Self::Return> {
8607                Self::abi_decode_returns_with_config(
8608                    data,
8609                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8610                )
8611            }
8612        }
8613    };
8614    #[derive(serde::Serialize, serde::Deserialize)]
8615    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8616    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8617```solidity
8618function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8619```*/
8620    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8621    #[derive(Clone)]
8622    pub struct _getVkCall;
8623    #[derive(serde::Serialize, serde::Deserialize)]
8624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8625    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8626    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8627    #[derive(Clone)]
8628    pub struct _getVkReturn {
8629        #[allow(missing_docs)]
8630        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8631    }
8632    #[allow(
8633        non_camel_case_types,
8634        non_snake_case,
8635        clippy::pub_underscore_fields,
8636        clippy::style
8637    )]
8638    const _: () = {
8639        use alloy::sol_types as alloy_sol_types;
8640        {
8641            #[doc(hidden)]
8642            #[allow(dead_code)]
8643            type UnderlyingSolTuple<'a> = ();
8644            #[doc(hidden)]
8645            type UnderlyingRustTuple<'a> = ();
8646            #[cfg(test)]
8647            #[allow(dead_code, unreachable_patterns)]
8648            fn _type_assertion(
8649                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8650            ) {
8651                match _t {
8652                    alloy_sol_types::private::AssertTypeEq::<
8653                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8654                    >(_) => {}
8655                }
8656            }
8657            #[automatically_derived]
8658            #[doc(hidden)]
8659            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8660                fn from(value: _getVkCall) -> Self {
8661                    ()
8662                }
8663            }
8664            #[automatically_derived]
8665            #[doc(hidden)]
8666            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8667                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8668                    Self
8669                }
8670            }
8671        }
8672        {
8673            #[doc(hidden)]
8674            #[allow(dead_code)]
8675            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8676            #[doc(hidden)]
8677            type UnderlyingRustTuple<'a> = (
8678                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8679            );
8680            #[cfg(test)]
8681            #[allow(dead_code, unreachable_patterns)]
8682            fn _type_assertion(
8683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8684            ) {
8685                match _t {
8686                    alloy_sol_types::private::AssertTypeEq::<
8687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8688                    >(_) => {}
8689                }
8690            }
8691            #[automatically_derived]
8692            #[doc(hidden)]
8693            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8694                fn from(value: _getVkReturn) -> Self {
8695                    (value.vk,)
8696                }
8697            }
8698            #[automatically_derived]
8699            #[doc(hidden)]
8700            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8701                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8702                    Self { vk: tuple.0 }
8703                }
8704            }
8705        }
8706        #[automatically_derived]
8707        impl alloy_sol_types::SolCall for _getVkCall {
8708            type Parameters<'a> = ();
8709            type Token<'a> = <Self::Parameters<
8710                'a,
8711            > as alloy_sol_types::SolType>::Token<'a>;
8712            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8713            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8714            type ReturnToken<'a> = <Self::ReturnTuple<
8715                'a,
8716            > as alloy_sol_types::SolType>::Token<'a>;
8717            const SIGNATURE: &'static str = "_getVk()";
8718            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8719            #[inline]
8720            fn new<'a>(
8721                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8722            ) -> Self {
8723                tuple.into()
8724            }
8725            #[inline]
8726            fn tokenize(&self) -> Self::Token<'_> {
8727                ()
8728            }
8729            #[inline]
8730            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8731                (
8732                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8733                        ret,
8734                    ),
8735                )
8736            }
8737            #[inline]
8738            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8739                <Self::ReturnTuple<
8740                    '_,
8741                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8742                    .map(|r| {
8743                        let r: _getVkReturn = r.into();
8744                        r.vk
8745                    })
8746            }
8747            #[inline]
8748            fn abi_decode_returns_with_config(
8749                data: &[u8],
8750                config: alloy_sol_types::abi::AbiDecoderConfig,
8751            ) -> alloy_sol_types::Result<Self::Return> {
8752                <Self::ReturnTuple<
8753                    '_,
8754                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8755                        data,
8756                        config,
8757                    )
8758                    .map(|r| {
8759                        let r: _getVkReturn = r.into();
8760                        r.vk
8761                    })
8762            }
8763            #[inline]
8764            fn abi_decode_returns_validate(
8765                data: &[u8],
8766            ) -> alloy_sol_types::Result<Self::Return> {
8767                Self::abi_decode_returns_with_config(
8768                    data,
8769                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8770                )
8771            }
8772        }
8773    };
8774    #[derive(serde::Serialize, serde::Deserialize)]
8775    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8776    /**Function with signature `authRoot()` and selector `0x998328e8`.
8777```solidity
8778function authRoot() external view returns (uint256);
8779```*/
8780    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8781    #[derive(Clone)]
8782    pub struct authRootCall;
8783    #[derive(serde::Serialize, serde::Deserialize)]
8784    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8785    ///Container type for the return parameters of the [`authRoot()`](authRootCall) function.
8786    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8787    #[derive(Clone)]
8788    pub struct authRootReturn {
8789        #[allow(missing_docs)]
8790        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8791    }
8792    #[allow(
8793        non_camel_case_types,
8794        non_snake_case,
8795        clippy::pub_underscore_fields,
8796        clippy::style
8797    )]
8798    const _: () = {
8799        use alloy::sol_types as alloy_sol_types;
8800        {
8801            #[doc(hidden)]
8802            #[allow(dead_code)]
8803            type UnderlyingSolTuple<'a> = ();
8804            #[doc(hidden)]
8805            type UnderlyingRustTuple<'a> = ();
8806            #[cfg(test)]
8807            #[allow(dead_code, unreachable_patterns)]
8808            fn _type_assertion(
8809                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8810            ) {
8811                match _t {
8812                    alloy_sol_types::private::AssertTypeEq::<
8813                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8814                    >(_) => {}
8815                }
8816            }
8817            #[automatically_derived]
8818            #[doc(hidden)]
8819            impl ::core::convert::From<authRootCall> for UnderlyingRustTuple<'_> {
8820                fn from(value: authRootCall) -> Self {
8821                    ()
8822                }
8823            }
8824            #[automatically_derived]
8825            #[doc(hidden)]
8826            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootCall {
8827                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8828                    Self
8829                }
8830            }
8831        }
8832        {
8833            #[doc(hidden)]
8834            #[allow(dead_code)]
8835            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8836            #[doc(hidden)]
8837            type UnderlyingRustTuple<'a> = (
8838                alloy::sol_types::private::primitives::aliases::U256,
8839            );
8840            #[cfg(test)]
8841            #[allow(dead_code, unreachable_patterns)]
8842            fn _type_assertion(
8843                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8844            ) {
8845                match _t {
8846                    alloy_sol_types::private::AssertTypeEq::<
8847                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8848                    >(_) => {}
8849                }
8850            }
8851            #[automatically_derived]
8852            #[doc(hidden)]
8853            impl ::core::convert::From<authRootReturn> for UnderlyingRustTuple<'_> {
8854                fn from(value: authRootReturn) -> Self {
8855                    (value._0,)
8856                }
8857            }
8858            #[automatically_derived]
8859            #[doc(hidden)]
8860            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootReturn {
8861                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8862                    Self { _0: tuple.0 }
8863                }
8864            }
8865        }
8866        #[automatically_derived]
8867        impl alloy_sol_types::SolCall for authRootCall {
8868            type Parameters<'a> = ();
8869            type Token<'a> = <Self::Parameters<
8870                'a,
8871            > as alloy_sol_types::SolType>::Token<'a>;
8872            type Return = alloy::sol_types::private::primitives::aliases::U256;
8873            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8874            type ReturnToken<'a> = <Self::ReturnTuple<
8875                'a,
8876            > as alloy_sol_types::SolType>::Token<'a>;
8877            const SIGNATURE: &'static str = "authRoot()";
8878            const SELECTOR: [u8; 4] = [153u8, 131u8, 40u8, 232u8];
8879            #[inline]
8880            fn new<'a>(
8881                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8882            ) -> Self {
8883                tuple.into()
8884            }
8885            #[inline]
8886            fn tokenize(&self) -> Self::Token<'_> {
8887                ()
8888            }
8889            #[inline]
8890            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8891                (
8892                    <alloy::sol_types::sol_data::Uint<
8893                        256,
8894                    > as alloy_sol_types::SolType>::tokenize(ret),
8895                )
8896            }
8897            #[inline]
8898            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8899                <Self::ReturnTuple<
8900                    '_,
8901                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8902                    .map(|r| {
8903                        let r: authRootReturn = r.into();
8904                        r._0
8905                    })
8906            }
8907            #[inline]
8908            fn abi_decode_returns_with_config(
8909                data: &[u8],
8910                config: alloy_sol_types::abi::AbiDecoderConfig,
8911            ) -> alloy_sol_types::Result<Self::Return> {
8912                <Self::ReturnTuple<
8913                    '_,
8914                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8915                        data,
8916                        config,
8917                    )
8918                    .map(|r| {
8919                        let r: authRootReturn = r.into();
8920                        r._0
8921                    })
8922            }
8923            #[inline]
8924            fn abi_decode_returns_validate(
8925                data: &[u8],
8926            ) -> alloy_sol_types::Result<Self::Return> {
8927                Self::abi_decode_returns_with_config(
8928                    data,
8929                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8930                )
8931            }
8932        }
8933    };
8934    #[derive(serde::Serialize, serde::Deserialize)]
8935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8936    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8937```solidity
8938function blocksPerEpoch() external view returns (uint64);
8939```*/
8940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8941    #[derive(Clone)]
8942    pub struct blocksPerEpochCall;
8943    #[derive(serde::Serialize, serde::Deserialize)]
8944    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8945    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8947    #[derive(Clone)]
8948    pub struct blocksPerEpochReturn {
8949        #[allow(missing_docs)]
8950        pub _0: u64,
8951    }
8952    #[allow(
8953        non_camel_case_types,
8954        non_snake_case,
8955        clippy::pub_underscore_fields,
8956        clippy::style
8957    )]
8958    const _: () = {
8959        use alloy::sol_types as alloy_sol_types;
8960        {
8961            #[doc(hidden)]
8962            #[allow(dead_code)]
8963            type UnderlyingSolTuple<'a> = ();
8964            #[doc(hidden)]
8965            type UnderlyingRustTuple<'a> = ();
8966            #[cfg(test)]
8967            #[allow(dead_code, unreachable_patterns)]
8968            fn _type_assertion(
8969                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8970            ) {
8971                match _t {
8972                    alloy_sol_types::private::AssertTypeEq::<
8973                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8974                    >(_) => {}
8975                }
8976            }
8977            #[automatically_derived]
8978            #[doc(hidden)]
8979            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8980                fn from(value: blocksPerEpochCall) -> Self {
8981                    ()
8982                }
8983            }
8984            #[automatically_derived]
8985            #[doc(hidden)]
8986            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8987                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8988                    Self
8989                }
8990            }
8991        }
8992        {
8993            #[doc(hidden)]
8994            #[allow(dead_code)]
8995            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8996            #[doc(hidden)]
8997            type UnderlyingRustTuple<'a> = (u64,);
8998            #[cfg(test)]
8999            #[allow(dead_code, unreachable_patterns)]
9000            fn _type_assertion(
9001                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9002            ) {
9003                match _t {
9004                    alloy_sol_types::private::AssertTypeEq::<
9005                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9006                    >(_) => {}
9007                }
9008            }
9009            #[automatically_derived]
9010            #[doc(hidden)]
9011            impl ::core::convert::From<blocksPerEpochReturn>
9012            for UnderlyingRustTuple<'_> {
9013                fn from(value: blocksPerEpochReturn) -> Self {
9014                    (value._0,)
9015                }
9016            }
9017            #[automatically_derived]
9018            #[doc(hidden)]
9019            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9020            for blocksPerEpochReturn {
9021                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9022                    Self { _0: tuple.0 }
9023                }
9024            }
9025        }
9026        #[automatically_derived]
9027        impl alloy_sol_types::SolCall for blocksPerEpochCall {
9028            type Parameters<'a> = ();
9029            type Token<'a> = <Self::Parameters<
9030                'a,
9031            > as alloy_sol_types::SolType>::Token<'a>;
9032            type Return = u64;
9033            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9034            type ReturnToken<'a> = <Self::ReturnTuple<
9035                'a,
9036            > as alloy_sol_types::SolType>::Token<'a>;
9037            const SIGNATURE: &'static str = "blocksPerEpoch()";
9038            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
9039            #[inline]
9040            fn new<'a>(
9041                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9042            ) -> Self {
9043                tuple.into()
9044            }
9045            #[inline]
9046            fn tokenize(&self) -> Self::Token<'_> {
9047                ()
9048            }
9049            #[inline]
9050            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9051                (
9052                    <alloy::sol_types::sol_data::Uint<
9053                        64,
9054                    > as alloy_sol_types::SolType>::tokenize(ret),
9055                )
9056            }
9057            #[inline]
9058            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9059                <Self::ReturnTuple<
9060                    '_,
9061                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9062                    .map(|r| {
9063                        let r: blocksPerEpochReturn = r.into();
9064                        r._0
9065                    })
9066            }
9067            #[inline]
9068            fn abi_decode_returns_with_config(
9069                data: &[u8],
9070                config: alloy_sol_types::abi::AbiDecoderConfig,
9071            ) -> alloy_sol_types::Result<Self::Return> {
9072                <Self::ReturnTuple<
9073                    '_,
9074                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9075                        data,
9076                        config,
9077                    )
9078                    .map(|r| {
9079                        let r: blocksPerEpochReturn = r.into();
9080                        r._0
9081                    })
9082            }
9083            #[inline]
9084            fn abi_decode_returns_validate(
9085                data: &[u8],
9086            ) -> alloy_sol_types::Result<Self::Return> {
9087                Self::abi_decode_returns_with_config(
9088                    data,
9089                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9090                )
9091            }
9092        }
9093    };
9094    #[derive(serde::Serialize, serde::Deserialize)]
9095    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9096    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
9097```solidity
9098function currentBlockNumber() external view returns (uint256);
9099```*/
9100    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9101    #[derive(Clone)]
9102    pub struct currentBlockNumberCall;
9103    #[derive(serde::Serialize, serde::Deserialize)]
9104    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9105    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
9106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9107    #[derive(Clone)]
9108    pub struct currentBlockNumberReturn {
9109        #[allow(missing_docs)]
9110        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9111    }
9112    #[allow(
9113        non_camel_case_types,
9114        non_snake_case,
9115        clippy::pub_underscore_fields,
9116        clippy::style
9117    )]
9118    const _: () = {
9119        use alloy::sol_types as alloy_sol_types;
9120        {
9121            #[doc(hidden)]
9122            #[allow(dead_code)]
9123            type UnderlyingSolTuple<'a> = ();
9124            #[doc(hidden)]
9125            type UnderlyingRustTuple<'a> = ();
9126            #[cfg(test)]
9127            #[allow(dead_code, unreachable_patterns)]
9128            fn _type_assertion(
9129                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9130            ) {
9131                match _t {
9132                    alloy_sol_types::private::AssertTypeEq::<
9133                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9134                    >(_) => {}
9135                }
9136            }
9137            #[automatically_derived]
9138            #[doc(hidden)]
9139            impl ::core::convert::From<currentBlockNumberCall>
9140            for UnderlyingRustTuple<'_> {
9141                fn from(value: currentBlockNumberCall) -> Self {
9142                    ()
9143                }
9144            }
9145            #[automatically_derived]
9146            #[doc(hidden)]
9147            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9148            for currentBlockNumberCall {
9149                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9150                    Self
9151                }
9152            }
9153        }
9154        {
9155            #[doc(hidden)]
9156            #[allow(dead_code)]
9157            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9158            #[doc(hidden)]
9159            type UnderlyingRustTuple<'a> = (
9160                alloy::sol_types::private::primitives::aliases::U256,
9161            );
9162            #[cfg(test)]
9163            #[allow(dead_code, unreachable_patterns)]
9164            fn _type_assertion(
9165                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9166            ) {
9167                match _t {
9168                    alloy_sol_types::private::AssertTypeEq::<
9169                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9170                    >(_) => {}
9171                }
9172            }
9173            #[automatically_derived]
9174            #[doc(hidden)]
9175            impl ::core::convert::From<currentBlockNumberReturn>
9176            for UnderlyingRustTuple<'_> {
9177                fn from(value: currentBlockNumberReturn) -> Self {
9178                    (value._0,)
9179                }
9180            }
9181            #[automatically_derived]
9182            #[doc(hidden)]
9183            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9184            for currentBlockNumberReturn {
9185                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9186                    Self { _0: tuple.0 }
9187                }
9188            }
9189        }
9190        #[automatically_derived]
9191        impl alloy_sol_types::SolCall for currentBlockNumberCall {
9192            type Parameters<'a> = ();
9193            type Token<'a> = <Self::Parameters<
9194                'a,
9195            > as alloy_sol_types::SolType>::Token<'a>;
9196            type Return = alloy::sol_types::private::primitives::aliases::U256;
9197            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9198            type ReturnToken<'a> = <Self::ReturnTuple<
9199                'a,
9200            > as alloy_sol_types::SolType>::Token<'a>;
9201            const SIGNATURE: &'static str = "currentBlockNumber()";
9202            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
9203            #[inline]
9204            fn new<'a>(
9205                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9206            ) -> Self {
9207                tuple.into()
9208            }
9209            #[inline]
9210            fn tokenize(&self) -> Self::Token<'_> {
9211                ()
9212            }
9213            #[inline]
9214            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9215                (
9216                    <alloy::sol_types::sol_data::Uint<
9217                        256,
9218                    > as alloy_sol_types::SolType>::tokenize(ret),
9219                )
9220            }
9221            #[inline]
9222            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9223                <Self::ReturnTuple<
9224                    '_,
9225                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9226                    .map(|r| {
9227                        let r: currentBlockNumberReturn = r.into();
9228                        r._0
9229                    })
9230            }
9231            #[inline]
9232            fn abi_decode_returns_with_config(
9233                data: &[u8],
9234                config: alloy_sol_types::abi::AbiDecoderConfig,
9235            ) -> alloy_sol_types::Result<Self::Return> {
9236                <Self::ReturnTuple<
9237                    '_,
9238                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9239                        data,
9240                        config,
9241                    )
9242                    .map(|r| {
9243                        let r: currentBlockNumberReturn = r.into();
9244                        r._0
9245                    })
9246            }
9247            #[inline]
9248            fn abi_decode_returns_validate(
9249                data: &[u8],
9250            ) -> alloy_sol_types::Result<Self::Return> {
9251                Self::abi_decode_returns_with_config(
9252                    data,
9253                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9254                )
9255            }
9256        }
9257    };
9258    #[derive(serde::Serialize, serde::Deserialize)]
9259    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9260    /**Function with signature `currentEpoch()` and selector `0x76671808`.
9261```solidity
9262function currentEpoch() external view returns (uint64);
9263```*/
9264    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9265    #[derive(Clone)]
9266    pub struct currentEpochCall;
9267    #[derive(serde::Serialize, serde::Deserialize)]
9268    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9269    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
9270    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9271    #[derive(Clone)]
9272    pub struct currentEpochReturn {
9273        #[allow(missing_docs)]
9274        pub _0: u64,
9275    }
9276    #[allow(
9277        non_camel_case_types,
9278        non_snake_case,
9279        clippy::pub_underscore_fields,
9280        clippy::style
9281    )]
9282    const _: () = {
9283        use alloy::sol_types as alloy_sol_types;
9284        {
9285            #[doc(hidden)]
9286            #[allow(dead_code)]
9287            type UnderlyingSolTuple<'a> = ();
9288            #[doc(hidden)]
9289            type UnderlyingRustTuple<'a> = ();
9290            #[cfg(test)]
9291            #[allow(dead_code, unreachable_patterns)]
9292            fn _type_assertion(
9293                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9294            ) {
9295                match _t {
9296                    alloy_sol_types::private::AssertTypeEq::<
9297                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9298                    >(_) => {}
9299                }
9300            }
9301            #[automatically_derived]
9302            #[doc(hidden)]
9303            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
9304                fn from(value: currentEpochCall) -> Self {
9305                    ()
9306                }
9307            }
9308            #[automatically_derived]
9309            #[doc(hidden)]
9310            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
9311                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9312                    Self
9313                }
9314            }
9315        }
9316        {
9317            #[doc(hidden)]
9318            #[allow(dead_code)]
9319            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9320            #[doc(hidden)]
9321            type UnderlyingRustTuple<'a> = (u64,);
9322            #[cfg(test)]
9323            #[allow(dead_code, unreachable_patterns)]
9324            fn _type_assertion(
9325                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9326            ) {
9327                match _t {
9328                    alloy_sol_types::private::AssertTypeEq::<
9329                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9330                    >(_) => {}
9331                }
9332            }
9333            #[automatically_derived]
9334            #[doc(hidden)]
9335            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
9336                fn from(value: currentEpochReturn) -> Self {
9337                    (value._0,)
9338                }
9339            }
9340            #[automatically_derived]
9341            #[doc(hidden)]
9342            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
9343                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9344                    Self { _0: tuple.0 }
9345                }
9346            }
9347        }
9348        #[automatically_derived]
9349        impl alloy_sol_types::SolCall for currentEpochCall {
9350            type Parameters<'a> = ();
9351            type Token<'a> = <Self::Parameters<
9352                'a,
9353            > as alloy_sol_types::SolType>::Token<'a>;
9354            type Return = u64;
9355            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9356            type ReturnToken<'a> = <Self::ReturnTuple<
9357                'a,
9358            > as alloy_sol_types::SolType>::Token<'a>;
9359            const SIGNATURE: &'static str = "currentEpoch()";
9360            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
9361            #[inline]
9362            fn new<'a>(
9363                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9364            ) -> Self {
9365                tuple.into()
9366            }
9367            #[inline]
9368            fn tokenize(&self) -> Self::Token<'_> {
9369                ()
9370            }
9371            #[inline]
9372            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9373                (
9374                    <alloy::sol_types::sol_data::Uint<
9375                        64,
9376                    > as alloy_sol_types::SolType>::tokenize(ret),
9377                )
9378            }
9379            #[inline]
9380            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9381                <Self::ReturnTuple<
9382                    '_,
9383                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9384                    .map(|r| {
9385                        let r: currentEpochReturn = r.into();
9386                        r._0
9387                    })
9388            }
9389            #[inline]
9390            fn abi_decode_returns_with_config(
9391                data: &[u8],
9392                config: alloy_sol_types::abi::AbiDecoderConfig,
9393            ) -> alloy_sol_types::Result<Self::Return> {
9394                <Self::ReturnTuple<
9395                    '_,
9396                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9397                        data,
9398                        config,
9399                    )
9400                    .map(|r| {
9401                        let r: currentEpochReturn = r.into();
9402                        r._0
9403                    })
9404            }
9405            #[inline]
9406            fn abi_decode_returns_validate(
9407                data: &[u8],
9408            ) -> alloy_sol_types::Result<Self::Return> {
9409                Self::abi_decode_returns_with_config(
9410                    data,
9411                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9412                )
9413            }
9414        }
9415    };
9416    #[derive(serde::Serialize, serde::Deserialize)]
9417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9418    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
9419```solidity
9420function disablePermissionedProverMode() external;
9421```*/
9422    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9423    #[derive(Clone)]
9424    pub struct disablePermissionedProverModeCall;
9425    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
9426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9427    #[derive(Clone)]
9428    pub struct disablePermissionedProverModeReturn {}
9429    #[allow(
9430        non_camel_case_types,
9431        non_snake_case,
9432        clippy::pub_underscore_fields,
9433        clippy::style
9434    )]
9435    const _: () = {
9436        use alloy::sol_types as alloy_sol_types;
9437        {
9438            #[doc(hidden)]
9439            #[allow(dead_code)]
9440            type UnderlyingSolTuple<'a> = ();
9441            #[doc(hidden)]
9442            type UnderlyingRustTuple<'a> = ();
9443            #[cfg(test)]
9444            #[allow(dead_code, unreachable_patterns)]
9445            fn _type_assertion(
9446                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9447            ) {
9448                match _t {
9449                    alloy_sol_types::private::AssertTypeEq::<
9450                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9451                    >(_) => {}
9452                }
9453            }
9454            #[automatically_derived]
9455            #[doc(hidden)]
9456            impl ::core::convert::From<disablePermissionedProverModeCall>
9457            for UnderlyingRustTuple<'_> {
9458                fn from(value: disablePermissionedProverModeCall) -> Self {
9459                    ()
9460                }
9461            }
9462            #[automatically_derived]
9463            #[doc(hidden)]
9464            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9465            for disablePermissionedProverModeCall {
9466                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9467                    Self
9468                }
9469            }
9470        }
9471        {
9472            #[doc(hidden)]
9473            #[allow(dead_code)]
9474            type UnderlyingSolTuple<'a> = ();
9475            #[doc(hidden)]
9476            type UnderlyingRustTuple<'a> = ();
9477            #[cfg(test)]
9478            #[allow(dead_code, unreachable_patterns)]
9479            fn _type_assertion(
9480                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9481            ) {
9482                match _t {
9483                    alloy_sol_types::private::AssertTypeEq::<
9484                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9485                    >(_) => {}
9486                }
9487            }
9488            #[automatically_derived]
9489            #[doc(hidden)]
9490            impl ::core::convert::From<disablePermissionedProverModeReturn>
9491            for UnderlyingRustTuple<'_> {
9492                fn from(value: disablePermissionedProverModeReturn) -> Self {
9493                    ()
9494                }
9495            }
9496            #[automatically_derived]
9497            #[doc(hidden)]
9498            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9499            for disablePermissionedProverModeReturn {
9500                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9501                    Self {}
9502                }
9503            }
9504        }
9505        impl disablePermissionedProverModeReturn {
9506            fn _tokenize(
9507                &self,
9508            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
9509                '_,
9510            > {
9511                ()
9512            }
9513        }
9514        #[automatically_derived]
9515        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
9516            type Parameters<'a> = ();
9517            type Token<'a> = <Self::Parameters<
9518                'a,
9519            > as alloy_sol_types::SolType>::Token<'a>;
9520            type Return = disablePermissionedProverModeReturn;
9521            type ReturnTuple<'a> = ();
9522            type ReturnToken<'a> = <Self::ReturnTuple<
9523                'a,
9524            > as alloy_sol_types::SolType>::Token<'a>;
9525            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
9526            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
9527            #[inline]
9528            fn new<'a>(
9529                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9530            ) -> Self {
9531                tuple.into()
9532            }
9533            #[inline]
9534            fn tokenize(&self) -> Self::Token<'_> {
9535                ()
9536            }
9537            #[inline]
9538            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9539                disablePermissionedProverModeReturn::_tokenize(ret)
9540            }
9541            #[inline]
9542            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9543                <Self::ReturnTuple<
9544                    '_,
9545                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9546                    .map(Into::into)
9547            }
9548            #[inline]
9549            fn abi_decode_returns_with_config(
9550                data: &[u8],
9551                config: alloy_sol_types::abi::AbiDecoderConfig,
9552            ) -> alloy_sol_types::Result<Self::Return> {
9553                <Self::ReturnTuple<
9554                    '_,
9555                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9556                        data,
9557                        config,
9558                    )
9559                    .map(Into::into)
9560            }
9561            #[inline]
9562            fn abi_decode_returns_validate(
9563                data: &[u8],
9564            ) -> alloy_sol_types::Result<Self::Return> {
9565                Self::abi_decode_returns_with_config(
9566                    data,
9567                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9568                )
9569            }
9570        }
9571    };
9572    #[derive(serde::Serialize, serde::Deserialize)]
9573    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9574    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
9575```solidity
9576function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
9577```*/
9578    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9579    #[derive(Clone)]
9580    pub struct epochFromBlockNumberCall {
9581        #[allow(missing_docs)]
9582        pub _blockNum: u64,
9583        #[allow(missing_docs)]
9584        pub _blocksPerEpoch: u64,
9585    }
9586    #[derive(serde::Serialize, serde::Deserialize)]
9587    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9588    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
9589    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9590    #[derive(Clone)]
9591    pub struct epochFromBlockNumberReturn {
9592        #[allow(missing_docs)]
9593        pub _0: u64,
9594    }
9595    #[allow(
9596        non_camel_case_types,
9597        non_snake_case,
9598        clippy::pub_underscore_fields,
9599        clippy::style
9600    )]
9601    const _: () = {
9602        use alloy::sol_types as alloy_sol_types;
9603        {
9604            #[doc(hidden)]
9605            #[allow(dead_code)]
9606            type UnderlyingSolTuple<'a> = (
9607                alloy::sol_types::sol_data::Uint<64>,
9608                alloy::sol_types::sol_data::Uint<64>,
9609            );
9610            #[doc(hidden)]
9611            type UnderlyingRustTuple<'a> = (u64, u64);
9612            #[cfg(test)]
9613            #[allow(dead_code, unreachable_patterns)]
9614            fn _type_assertion(
9615                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9616            ) {
9617                match _t {
9618                    alloy_sol_types::private::AssertTypeEq::<
9619                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9620                    >(_) => {}
9621                }
9622            }
9623            #[automatically_derived]
9624            #[doc(hidden)]
9625            impl ::core::convert::From<epochFromBlockNumberCall>
9626            for UnderlyingRustTuple<'_> {
9627                fn from(value: epochFromBlockNumberCall) -> Self {
9628                    (value._blockNum, value._blocksPerEpoch)
9629                }
9630            }
9631            #[automatically_derived]
9632            #[doc(hidden)]
9633            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9634            for epochFromBlockNumberCall {
9635                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9636                    Self {
9637                        _blockNum: tuple.0,
9638                        _blocksPerEpoch: tuple.1,
9639                    }
9640                }
9641            }
9642        }
9643        {
9644            #[doc(hidden)]
9645            #[allow(dead_code)]
9646            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9647            #[doc(hidden)]
9648            type UnderlyingRustTuple<'a> = (u64,);
9649            #[cfg(test)]
9650            #[allow(dead_code, unreachable_patterns)]
9651            fn _type_assertion(
9652                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9653            ) {
9654                match _t {
9655                    alloy_sol_types::private::AssertTypeEq::<
9656                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9657                    >(_) => {}
9658                }
9659            }
9660            #[automatically_derived]
9661            #[doc(hidden)]
9662            impl ::core::convert::From<epochFromBlockNumberReturn>
9663            for UnderlyingRustTuple<'_> {
9664                fn from(value: epochFromBlockNumberReturn) -> Self {
9665                    (value._0,)
9666                }
9667            }
9668            #[automatically_derived]
9669            #[doc(hidden)]
9670            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9671            for epochFromBlockNumberReturn {
9672                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9673                    Self { _0: tuple.0 }
9674                }
9675            }
9676        }
9677        #[automatically_derived]
9678        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9679            type Parameters<'a> = (
9680                alloy::sol_types::sol_data::Uint<64>,
9681                alloy::sol_types::sol_data::Uint<64>,
9682            );
9683            type Token<'a> = <Self::Parameters<
9684                'a,
9685            > as alloy_sol_types::SolType>::Token<'a>;
9686            type Return = u64;
9687            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9688            type ReturnToken<'a> = <Self::ReturnTuple<
9689                'a,
9690            > as alloy_sol_types::SolType>::Token<'a>;
9691            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9692            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9693            #[inline]
9694            fn new<'a>(
9695                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9696            ) -> Self {
9697                tuple.into()
9698            }
9699            #[inline]
9700            fn tokenize(&self) -> Self::Token<'_> {
9701                (
9702                    <alloy::sol_types::sol_data::Uint<
9703                        64,
9704                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9705                    <alloy::sol_types::sol_data::Uint<
9706                        64,
9707                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9708                )
9709            }
9710            #[inline]
9711            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9712                (
9713                    <alloy::sol_types::sol_data::Uint<
9714                        64,
9715                    > as alloy_sol_types::SolType>::tokenize(ret),
9716                )
9717            }
9718            #[inline]
9719            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9720                <Self::ReturnTuple<
9721                    '_,
9722                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9723                    .map(|r| {
9724                        let r: epochFromBlockNumberReturn = r.into();
9725                        r._0
9726                    })
9727            }
9728            #[inline]
9729            fn abi_decode_returns_with_config(
9730                data: &[u8],
9731                config: alloy_sol_types::abi::AbiDecoderConfig,
9732            ) -> alloy_sol_types::Result<Self::Return> {
9733                <Self::ReturnTuple<
9734                    '_,
9735                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9736                        data,
9737                        config,
9738                    )
9739                    .map(|r| {
9740                        let r: epochFromBlockNumberReturn = r.into();
9741                        r._0
9742                    })
9743            }
9744            #[inline]
9745            fn abi_decode_returns_validate(
9746                data: &[u8],
9747            ) -> alloy_sol_types::Result<Self::Return> {
9748                Self::abi_decode_returns_with_config(
9749                    data,
9750                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9751                )
9752            }
9753        }
9754    };
9755    #[derive(serde::Serialize, serde::Deserialize)]
9756    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9757    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9758```solidity
9759function epochStartBlock() external view returns (uint64);
9760```*/
9761    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9762    #[derive(Clone)]
9763    pub struct epochStartBlockCall;
9764    #[derive(serde::Serialize, serde::Deserialize)]
9765    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9766    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9768    #[derive(Clone)]
9769    pub struct epochStartBlockReturn {
9770        #[allow(missing_docs)]
9771        pub _0: u64,
9772    }
9773    #[allow(
9774        non_camel_case_types,
9775        non_snake_case,
9776        clippy::pub_underscore_fields,
9777        clippy::style
9778    )]
9779    const _: () = {
9780        use alloy::sol_types as alloy_sol_types;
9781        {
9782            #[doc(hidden)]
9783            #[allow(dead_code)]
9784            type UnderlyingSolTuple<'a> = ();
9785            #[doc(hidden)]
9786            type UnderlyingRustTuple<'a> = ();
9787            #[cfg(test)]
9788            #[allow(dead_code, unreachable_patterns)]
9789            fn _type_assertion(
9790                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9791            ) {
9792                match _t {
9793                    alloy_sol_types::private::AssertTypeEq::<
9794                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9795                    >(_) => {}
9796                }
9797            }
9798            #[automatically_derived]
9799            #[doc(hidden)]
9800            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9801                fn from(value: epochStartBlockCall) -> Self {
9802                    ()
9803                }
9804            }
9805            #[automatically_derived]
9806            #[doc(hidden)]
9807            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9808                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9809                    Self
9810                }
9811            }
9812        }
9813        {
9814            #[doc(hidden)]
9815            #[allow(dead_code)]
9816            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9817            #[doc(hidden)]
9818            type UnderlyingRustTuple<'a> = (u64,);
9819            #[cfg(test)]
9820            #[allow(dead_code, unreachable_patterns)]
9821            fn _type_assertion(
9822                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9823            ) {
9824                match _t {
9825                    alloy_sol_types::private::AssertTypeEq::<
9826                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9827                    >(_) => {}
9828                }
9829            }
9830            #[automatically_derived]
9831            #[doc(hidden)]
9832            impl ::core::convert::From<epochStartBlockReturn>
9833            for UnderlyingRustTuple<'_> {
9834                fn from(value: epochStartBlockReturn) -> Self {
9835                    (value._0,)
9836                }
9837            }
9838            #[automatically_derived]
9839            #[doc(hidden)]
9840            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9841            for epochStartBlockReturn {
9842                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9843                    Self { _0: tuple.0 }
9844                }
9845            }
9846        }
9847        #[automatically_derived]
9848        impl alloy_sol_types::SolCall for epochStartBlockCall {
9849            type Parameters<'a> = ();
9850            type Token<'a> = <Self::Parameters<
9851                'a,
9852            > as alloy_sol_types::SolType>::Token<'a>;
9853            type Return = u64;
9854            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9855            type ReturnToken<'a> = <Self::ReturnTuple<
9856                'a,
9857            > as alloy_sol_types::SolType>::Token<'a>;
9858            const SIGNATURE: &'static str = "epochStartBlock()";
9859            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9860            #[inline]
9861            fn new<'a>(
9862                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9863            ) -> Self {
9864                tuple.into()
9865            }
9866            #[inline]
9867            fn tokenize(&self) -> Self::Token<'_> {
9868                ()
9869            }
9870            #[inline]
9871            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9872                (
9873                    <alloy::sol_types::sol_data::Uint<
9874                        64,
9875                    > as alloy_sol_types::SolType>::tokenize(ret),
9876                )
9877            }
9878            #[inline]
9879            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9880                <Self::ReturnTuple<
9881                    '_,
9882                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9883                    .map(|r| {
9884                        let r: epochStartBlockReturn = r.into();
9885                        r._0
9886                    })
9887            }
9888            #[inline]
9889            fn abi_decode_returns_with_config(
9890                data: &[u8],
9891                config: alloy_sol_types::abi::AbiDecoderConfig,
9892            ) -> alloy_sol_types::Result<Self::Return> {
9893                <Self::ReturnTuple<
9894                    '_,
9895                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9896                        data,
9897                        config,
9898                    )
9899                    .map(|r| {
9900                        let r: epochStartBlockReturn = r.into();
9901                        r._0
9902                    })
9903            }
9904            #[inline]
9905            fn abi_decode_returns_validate(
9906                data: &[u8],
9907            ) -> alloy_sol_types::Result<Self::Return> {
9908                Self::abi_decode_returns_with_config(
9909                    data,
9910                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9911                )
9912            }
9913        }
9914    };
9915    #[derive(serde::Serialize, serde::Deserialize)]
9916    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9917    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9918```solidity
9919function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9920```*/
9921    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9922    #[derive(Clone)]
9923    pub struct finalizedStateCall;
9924    #[derive(serde::Serialize, serde::Deserialize)]
9925    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9926    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9927    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9928    #[derive(Clone)]
9929    pub struct finalizedStateReturn {
9930        #[allow(missing_docs)]
9931        pub viewNum: u64,
9932        #[allow(missing_docs)]
9933        pub blockHeight: u64,
9934        #[allow(missing_docs)]
9935        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9936    }
9937    #[allow(
9938        non_camel_case_types,
9939        non_snake_case,
9940        clippy::pub_underscore_fields,
9941        clippy::style
9942    )]
9943    const _: () = {
9944        use alloy::sol_types as alloy_sol_types;
9945        {
9946            #[doc(hidden)]
9947            #[allow(dead_code)]
9948            type UnderlyingSolTuple<'a> = ();
9949            #[doc(hidden)]
9950            type UnderlyingRustTuple<'a> = ();
9951            #[cfg(test)]
9952            #[allow(dead_code, unreachable_patterns)]
9953            fn _type_assertion(
9954                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9955            ) {
9956                match _t {
9957                    alloy_sol_types::private::AssertTypeEq::<
9958                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9959                    >(_) => {}
9960                }
9961            }
9962            #[automatically_derived]
9963            #[doc(hidden)]
9964            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9965                fn from(value: finalizedStateCall) -> Self {
9966                    ()
9967                }
9968            }
9969            #[automatically_derived]
9970            #[doc(hidden)]
9971            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9972                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9973                    Self
9974                }
9975            }
9976        }
9977        {
9978            #[doc(hidden)]
9979            #[allow(dead_code)]
9980            type UnderlyingSolTuple<'a> = (
9981                alloy::sol_types::sol_data::Uint<64>,
9982                alloy::sol_types::sol_data::Uint<64>,
9983                BN254::ScalarField,
9984            );
9985            #[doc(hidden)]
9986            type UnderlyingRustTuple<'a> = (
9987                u64,
9988                u64,
9989                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9990            );
9991            #[cfg(test)]
9992            #[allow(dead_code, unreachable_patterns)]
9993            fn _type_assertion(
9994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9995            ) {
9996                match _t {
9997                    alloy_sol_types::private::AssertTypeEq::<
9998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9999                    >(_) => {}
10000                }
10001            }
10002            #[automatically_derived]
10003            #[doc(hidden)]
10004            impl ::core::convert::From<finalizedStateReturn>
10005            for UnderlyingRustTuple<'_> {
10006                fn from(value: finalizedStateReturn) -> Self {
10007                    (value.viewNum, value.blockHeight, value.blockCommRoot)
10008                }
10009            }
10010            #[automatically_derived]
10011            #[doc(hidden)]
10012            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10013            for finalizedStateReturn {
10014                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10015                    Self {
10016                        viewNum: tuple.0,
10017                        blockHeight: tuple.1,
10018                        blockCommRoot: tuple.2,
10019                    }
10020                }
10021            }
10022        }
10023        impl finalizedStateReturn {
10024            fn _tokenize(
10025                &self,
10026            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10027                (
10028                    <alloy::sol_types::sol_data::Uint<
10029                        64,
10030                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
10031                    <alloy::sol_types::sol_data::Uint<
10032                        64,
10033                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10034                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10035                        &self.blockCommRoot,
10036                    ),
10037                )
10038            }
10039        }
10040        #[automatically_derived]
10041        impl alloy_sol_types::SolCall for finalizedStateCall {
10042            type Parameters<'a> = ();
10043            type Token<'a> = <Self::Parameters<
10044                'a,
10045            > as alloy_sol_types::SolType>::Token<'a>;
10046            type Return = finalizedStateReturn;
10047            type ReturnTuple<'a> = (
10048                alloy::sol_types::sol_data::Uint<64>,
10049                alloy::sol_types::sol_data::Uint<64>,
10050                BN254::ScalarField,
10051            );
10052            type ReturnToken<'a> = <Self::ReturnTuple<
10053                'a,
10054            > as alloy_sol_types::SolType>::Token<'a>;
10055            const SIGNATURE: &'static str = "finalizedState()";
10056            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
10057            #[inline]
10058            fn new<'a>(
10059                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10060            ) -> Self {
10061                tuple.into()
10062            }
10063            #[inline]
10064            fn tokenize(&self) -> Self::Token<'_> {
10065                ()
10066            }
10067            #[inline]
10068            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10069                finalizedStateReturn::_tokenize(ret)
10070            }
10071            #[inline]
10072            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10073                <Self::ReturnTuple<
10074                    '_,
10075                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10076                    .map(Into::into)
10077            }
10078            #[inline]
10079            fn abi_decode_returns_with_config(
10080                data: &[u8],
10081                config: alloy_sol_types::abi::AbiDecoderConfig,
10082            ) -> alloy_sol_types::Result<Self::Return> {
10083                <Self::ReturnTuple<
10084                    '_,
10085                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10086                        data,
10087                        config,
10088                    )
10089                    .map(Into::into)
10090            }
10091            #[inline]
10092            fn abi_decode_returns_validate(
10093                data: &[u8],
10094            ) -> alloy_sol_types::Result<Self::Return> {
10095                Self::abi_decode_returns_with_config(
10096                    data,
10097                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10098                )
10099            }
10100        }
10101    };
10102    #[derive(serde::Serialize, serde::Deserialize)]
10103    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10104    /**Function with signature `firstEpoch()` and selector `0x41682744`.
10105```solidity
10106function firstEpoch() external view returns (uint64);
10107```*/
10108    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10109    #[derive(Clone)]
10110    pub struct firstEpochCall;
10111    #[derive(serde::Serialize, serde::Deserialize)]
10112    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10113    ///Container type for the return parameters of the [`firstEpoch()`](firstEpochCall) function.
10114    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10115    #[derive(Clone)]
10116    pub struct firstEpochReturn {
10117        #[allow(missing_docs)]
10118        pub _0: u64,
10119    }
10120    #[allow(
10121        non_camel_case_types,
10122        non_snake_case,
10123        clippy::pub_underscore_fields,
10124        clippy::style
10125    )]
10126    const _: () = {
10127        use alloy::sol_types as alloy_sol_types;
10128        {
10129            #[doc(hidden)]
10130            #[allow(dead_code)]
10131            type UnderlyingSolTuple<'a> = ();
10132            #[doc(hidden)]
10133            type UnderlyingRustTuple<'a> = ();
10134            #[cfg(test)]
10135            #[allow(dead_code, unreachable_patterns)]
10136            fn _type_assertion(
10137                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10138            ) {
10139                match _t {
10140                    alloy_sol_types::private::AssertTypeEq::<
10141                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10142                    >(_) => {}
10143                }
10144            }
10145            #[automatically_derived]
10146            #[doc(hidden)]
10147            impl ::core::convert::From<firstEpochCall> for UnderlyingRustTuple<'_> {
10148                fn from(value: firstEpochCall) -> Self {
10149                    ()
10150                }
10151            }
10152            #[automatically_derived]
10153            #[doc(hidden)]
10154            impl ::core::convert::From<UnderlyingRustTuple<'_>> for firstEpochCall {
10155                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10156                    Self
10157                }
10158            }
10159        }
10160        {
10161            #[doc(hidden)]
10162            #[allow(dead_code)]
10163            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10164            #[doc(hidden)]
10165            type UnderlyingRustTuple<'a> = (u64,);
10166            #[cfg(test)]
10167            #[allow(dead_code, unreachable_patterns)]
10168            fn _type_assertion(
10169                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10170            ) {
10171                match _t {
10172                    alloy_sol_types::private::AssertTypeEq::<
10173                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10174                    >(_) => {}
10175                }
10176            }
10177            #[automatically_derived]
10178            #[doc(hidden)]
10179            impl ::core::convert::From<firstEpochReturn> for UnderlyingRustTuple<'_> {
10180                fn from(value: firstEpochReturn) -> Self {
10181                    (value._0,)
10182                }
10183            }
10184            #[automatically_derived]
10185            #[doc(hidden)]
10186            impl ::core::convert::From<UnderlyingRustTuple<'_>> for firstEpochReturn {
10187                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10188                    Self { _0: tuple.0 }
10189                }
10190            }
10191        }
10192        #[automatically_derived]
10193        impl alloy_sol_types::SolCall for firstEpochCall {
10194            type Parameters<'a> = ();
10195            type Token<'a> = <Self::Parameters<
10196                'a,
10197            > as alloy_sol_types::SolType>::Token<'a>;
10198            type Return = u64;
10199            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10200            type ReturnToken<'a> = <Self::ReturnTuple<
10201                'a,
10202            > as alloy_sol_types::SolType>::Token<'a>;
10203            const SIGNATURE: &'static str = "firstEpoch()";
10204            const SELECTOR: [u8; 4] = [65u8, 104u8, 39u8, 68u8];
10205            #[inline]
10206            fn new<'a>(
10207                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10208            ) -> Self {
10209                tuple.into()
10210            }
10211            #[inline]
10212            fn tokenize(&self) -> Self::Token<'_> {
10213                ()
10214            }
10215            #[inline]
10216            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10217                (
10218                    <alloy::sol_types::sol_data::Uint<
10219                        64,
10220                    > as alloy_sol_types::SolType>::tokenize(ret),
10221                )
10222            }
10223            #[inline]
10224            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10225                <Self::ReturnTuple<
10226                    '_,
10227                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10228                    .map(|r| {
10229                        let r: firstEpochReturn = r.into();
10230                        r._0
10231                    })
10232            }
10233            #[inline]
10234            fn abi_decode_returns_with_config(
10235                data: &[u8],
10236                config: alloy_sol_types::abi::AbiDecoderConfig,
10237            ) -> alloy_sol_types::Result<Self::Return> {
10238                <Self::ReturnTuple<
10239                    '_,
10240                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10241                        data,
10242                        config,
10243                    )
10244                    .map(|r| {
10245                        let r: firstEpochReturn = r.into();
10246                        r._0
10247                    })
10248            }
10249            #[inline]
10250            fn abi_decode_returns_validate(
10251                data: &[u8],
10252            ) -> alloy_sol_types::Result<Self::Return> {
10253                Self::abi_decode_returns_with_config(
10254                    data,
10255                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10256                )
10257            }
10258        }
10259    };
10260    #[derive(serde::Serialize, serde::Deserialize)]
10261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10262    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
10263```solidity
10264function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
10265```*/
10266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10267    #[derive(Clone)]
10268    pub struct genesisStakeTableStateCall;
10269    #[derive(serde::Serialize, serde::Deserialize)]
10270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10271    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
10272    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10273    #[derive(Clone)]
10274    pub struct genesisStakeTableStateReturn {
10275        #[allow(missing_docs)]
10276        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
10277        #[allow(missing_docs)]
10278        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10279        #[allow(missing_docs)]
10280        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10281        #[allow(missing_docs)]
10282        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10283    }
10284    #[allow(
10285        non_camel_case_types,
10286        non_snake_case,
10287        clippy::pub_underscore_fields,
10288        clippy::style
10289    )]
10290    const _: () = {
10291        use alloy::sol_types as alloy_sol_types;
10292        {
10293            #[doc(hidden)]
10294            #[allow(dead_code)]
10295            type UnderlyingSolTuple<'a> = ();
10296            #[doc(hidden)]
10297            type UnderlyingRustTuple<'a> = ();
10298            #[cfg(test)]
10299            #[allow(dead_code, unreachable_patterns)]
10300            fn _type_assertion(
10301                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10302            ) {
10303                match _t {
10304                    alloy_sol_types::private::AssertTypeEq::<
10305                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10306                    >(_) => {}
10307                }
10308            }
10309            #[automatically_derived]
10310            #[doc(hidden)]
10311            impl ::core::convert::From<genesisStakeTableStateCall>
10312            for UnderlyingRustTuple<'_> {
10313                fn from(value: genesisStakeTableStateCall) -> Self {
10314                    ()
10315                }
10316            }
10317            #[automatically_derived]
10318            #[doc(hidden)]
10319            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10320            for genesisStakeTableStateCall {
10321                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10322                    Self
10323                }
10324            }
10325        }
10326        {
10327            #[doc(hidden)]
10328            #[allow(dead_code)]
10329            type UnderlyingSolTuple<'a> = (
10330                alloy::sol_types::sol_data::Uint<256>,
10331                BN254::ScalarField,
10332                BN254::ScalarField,
10333                BN254::ScalarField,
10334            );
10335            #[doc(hidden)]
10336            type UnderlyingRustTuple<'a> = (
10337                alloy::sol_types::private::primitives::aliases::U256,
10338                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10339                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10340                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10341            );
10342            #[cfg(test)]
10343            #[allow(dead_code, unreachable_patterns)]
10344            fn _type_assertion(
10345                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10346            ) {
10347                match _t {
10348                    alloy_sol_types::private::AssertTypeEq::<
10349                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10350                    >(_) => {}
10351                }
10352            }
10353            #[automatically_derived]
10354            #[doc(hidden)]
10355            impl ::core::convert::From<genesisStakeTableStateReturn>
10356            for UnderlyingRustTuple<'_> {
10357                fn from(value: genesisStakeTableStateReturn) -> Self {
10358                    (
10359                        value.threshold,
10360                        value.blsKeyComm,
10361                        value.schnorrKeyComm,
10362                        value.amountComm,
10363                    )
10364                }
10365            }
10366            #[automatically_derived]
10367            #[doc(hidden)]
10368            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10369            for genesisStakeTableStateReturn {
10370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10371                    Self {
10372                        threshold: tuple.0,
10373                        blsKeyComm: tuple.1,
10374                        schnorrKeyComm: tuple.2,
10375                        amountComm: tuple.3,
10376                    }
10377                }
10378            }
10379        }
10380        impl genesisStakeTableStateReturn {
10381            fn _tokenize(
10382                &self,
10383            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
10384                '_,
10385            > {
10386                (
10387                    <alloy::sol_types::sol_data::Uint<
10388                        256,
10389                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
10390                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10391                        &self.blsKeyComm,
10392                    ),
10393                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10394                        &self.schnorrKeyComm,
10395                    ),
10396                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10397                        &self.amountComm,
10398                    ),
10399                )
10400            }
10401        }
10402        #[automatically_derived]
10403        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
10404            type Parameters<'a> = ();
10405            type Token<'a> = <Self::Parameters<
10406                'a,
10407            > as alloy_sol_types::SolType>::Token<'a>;
10408            type Return = genesisStakeTableStateReturn;
10409            type ReturnTuple<'a> = (
10410                alloy::sol_types::sol_data::Uint<256>,
10411                BN254::ScalarField,
10412                BN254::ScalarField,
10413                BN254::ScalarField,
10414            );
10415            type ReturnToken<'a> = <Self::ReturnTuple<
10416                'a,
10417            > as alloy_sol_types::SolType>::Token<'a>;
10418            const SIGNATURE: &'static str = "genesisStakeTableState()";
10419            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
10420            #[inline]
10421            fn new<'a>(
10422                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10423            ) -> Self {
10424                tuple.into()
10425            }
10426            #[inline]
10427            fn tokenize(&self) -> Self::Token<'_> {
10428                ()
10429            }
10430            #[inline]
10431            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10432                genesisStakeTableStateReturn::_tokenize(ret)
10433            }
10434            #[inline]
10435            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10436                <Self::ReturnTuple<
10437                    '_,
10438                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10439                    .map(Into::into)
10440            }
10441            #[inline]
10442            fn abi_decode_returns_with_config(
10443                data: &[u8],
10444                config: alloy_sol_types::abi::AbiDecoderConfig,
10445            ) -> alloy_sol_types::Result<Self::Return> {
10446                <Self::ReturnTuple<
10447                    '_,
10448                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10449                        data,
10450                        config,
10451                    )
10452                    .map(Into::into)
10453            }
10454            #[inline]
10455            fn abi_decode_returns_validate(
10456                data: &[u8],
10457            ) -> alloy_sol_types::Result<Self::Return> {
10458                Self::abi_decode_returns_with_config(
10459                    data,
10460                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10461                )
10462            }
10463        }
10464    };
10465    #[derive(serde::Serialize, serde::Deserialize)]
10466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10467    /**Function with signature `genesisState()` and selector `0xd24d933d`.
10468```solidity
10469function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
10470```*/
10471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10472    #[derive(Clone)]
10473    pub struct genesisStateCall;
10474    #[derive(serde::Serialize, serde::Deserialize)]
10475    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10476    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
10477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10478    #[derive(Clone)]
10479    pub struct genesisStateReturn {
10480        #[allow(missing_docs)]
10481        pub viewNum: u64,
10482        #[allow(missing_docs)]
10483        pub blockHeight: u64,
10484        #[allow(missing_docs)]
10485        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10486    }
10487    #[allow(
10488        non_camel_case_types,
10489        non_snake_case,
10490        clippy::pub_underscore_fields,
10491        clippy::style
10492    )]
10493    const _: () = {
10494        use alloy::sol_types as alloy_sol_types;
10495        {
10496            #[doc(hidden)]
10497            #[allow(dead_code)]
10498            type UnderlyingSolTuple<'a> = ();
10499            #[doc(hidden)]
10500            type UnderlyingRustTuple<'a> = ();
10501            #[cfg(test)]
10502            #[allow(dead_code, unreachable_patterns)]
10503            fn _type_assertion(
10504                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10505            ) {
10506                match _t {
10507                    alloy_sol_types::private::AssertTypeEq::<
10508                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10509                    >(_) => {}
10510                }
10511            }
10512            #[automatically_derived]
10513            #[doc(hidden)]
10514            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
10515                fn from(value: genesisStateCall) -> Self {
10516                    ()
10517                }
10518            }
10519            #[automatically_derived]
10520            #[doc(hidden)]
10521            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
10522                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10523                    Self
10524                }
10525            }
10526        }
10527        {
10528            #[doc(hidden)]
10529            #[allow(dead_code)]
10530            type UnderlyingSolTuple<'a> = (
10531                alloy::sol_types::sol_data::Uint<64>,
10532                alloy::sol_types::sol_data::Uint<64>,
10533                BN254::ScalarField,
10534            );
10535            #[doc(hidden)]
10536            type UnderlyingRustTuple<'a> = (
10537                u64,
10538                u64,
10539                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10540            );
10541            #[cfg(test)]
10542            #[allow(dead_code, unreachable_patterns)]
10543            fn _type_assertion(
10544                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10545            ) {
10546                match _t {
10547                    alloy_sol_types::private::AssertTypeEq::<
10548                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10549                    >(_) => {}
10550                }
10551            }
10552            #[automatically_derived]
10553            #[doc(hidden)]
10554            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
10555                fn from(value: genesisStateReturn) -> Self {
10556                    (value.viewNum, value.blockHeight, value.blockCommRoot)
10557                }
10558            }
10559            #[automatically_derived]
10560            #[doc(hidden)]
10561            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
10562                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10563                    Self {
10564                        viewNum: tuple.0,
10565                        blockHeight: tuple.1,
10566                        blockCommRoot: tuple.2,
10567                    }
10568                }
10569            }
10570        }
10571        impl genesisStateReturn {
10572            fn _tokenize(
10573                &self,
10574            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10575                (
10576                    <alloy::sol_types::sol_data::Uint<
10577                        64,
10578                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
10579                    <alloy::sol_types::sol_data::Uint<
10580                        64,
10581                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10582                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10583                        &self.blockCommRoot,
10584                    ),
10585                )
10586            }
10587        }
10588        #[automatically_derived]
10589        impl alloy_sol_types::SolCall for genesisStateCall {
10590            type Parameters<'a> = ();
10591            type Token<'a> = <Self::Parameters<
10592                'a,
10593            > as alloy_sol_types::SolType>::Token<'a>;
10594            type Return = genesisStateReturn;
10595            type ReturnTuple<'a> = (
10596                alloy::sol_types::sol_data::Uint<64>,
10597                alloy::sol_types::sol_data::Uint<64>,
10598                BN254::ScalarField,
10599            );
10600            type ReturnToken<'a> = <Self::ReturnTuple<
10601                'a,
10602            > as alloy_sol_types::SolType>::Token<'a>;
10603            const SIGNATURE: &'static str = "genesisState()";
10604            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
10605            #[inline]
10606            fn new<'a>(
10607                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10608            ) -> Self {
10609                tuple.into()
10610            }
10611            #[inline]
10612            fn tokenize(&self) -> Self::Token<'_> {
10613                ()
10614            }
10615            #[inline]
10616            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10617                genesisStateReturn::_tokenize(ret)
10618            }
10619            #[inline]
10620            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10621                <Self::ReturnTuple<
10622                    '_,
10623                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10624                    .map(Into::into)
10625            }
10626            #[inline]
10627            fn abi_decode_returns_with_config(
10628                data: &[u8],
10629                config: alloy_sol_types::abi::AbiDecoderConfig,
10630            ) -> alloy_sol_types::Result<Self::Return> {
10631                <Self::ReturnTuple<
10632                    '_,
10633                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10634                        data,
10635                        config,
10636                    )
10637                    .map(Into::into)
10638            }
10639            #[inline]
10640            fn abi_decode_returns_validate(
10641                data: &[u8],
10642            ) -> alloy_sol_types::Result<Self::Return> {
10643                Self::abi_decode_returns_with_config(
10644                    data,
10645                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10646                )
10647            }
10648        }
10649    };
10650    #[derive(serde::Serialize, serde::Deserialize)]
10651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10652    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
10653```solidity
10654function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
10655```*/
10656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10657    #[derive(Clone)]
10658    pub struct getHotShotCommitmentCall {
10659        #[allow(missing_docs)]
10660        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
10661    }
10662    #[derive(serde::Serialize, serde::Deserialize)]
10663    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10664    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
10665    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10666    #[derive(Clone)]
10667    pub struct getHotShotCommitmentReturn {
10668        #[allow(missing_docs)]
10669        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10670        #[allow(missing_docs)]
10671        pub hotshotBlockHeight: u64,
10672    }
10673    #[allow(
10674        non_camel_case_types,
10675        non_snake_case,
10676        clippy::pub_underscore_fields,
10677        clippy::style
10678    )]
10679    const _: () = {
10680        use alloy::sol_types as alloy_sol_types;
10681        {
10682            #[doc(hidden)]
10683            #[allow(dead_code)]
10684            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10685            #[doc(hidden)]
10686            type UnderlyingRustTuple<'a> = (
10687                alloy::sol_types::private::primitives::aliases::U256,
10688            );
10689            #[cfg(test)]
10690            #[allow(dead_code, unreachable_patterns)]
10691            fn _type_assertion(
10692                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10693            ) {
10694                match _t {
10695                    alloy_sol_types::private::AssertTypeEq::<
10696                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10697                    >(_) => {}
10698                }
10699            }
10700            #[automatically_derived]
10701            #[doc(hidden)]
10702            impl ::core::convert::From<getHotShotCommitmentCall>
10703            for UnderlyingRustTuple<'_> {
10704                fn from(value: getHotShotCommitmentCall) -> Self {
10705                    (value.hotShotBlockHeight,)
10706                }
10707            }
10708            #[automatically_derived]
10709            #[doc(hidden)]
10710            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10711            for getHotShotCommitmentCall {
10712                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10713                    Self {
10714                        hotShotBlockHeight: tuple.0,
10715                    }
10716                }
10717            }
10718        }
10719        {
10720            #[doc(hidden)]
10721            #[allow(dead_code)]
10722            type UnderlyingSolTuple<'a> = (
10723                BN254::ScalarField,
10724                alloy::sol_types::sol_data::Uint<64>,
10725            );
10726            #[doc(hidden)]
10727            type UnderlyingRustTuple<'a> = (
10728                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10729                u64,
10730            );
10731            #[cfg(test)]
10732            #[allow(dead_code, unreachable_patterns)]
10733            fn _type_assertion(
10734                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10735            ) {
10736                match _t {
10737                    alloy_sol_types::private::AssertTypeEq::<
10738                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10739                    >(_) => {}
10740                }
10741            }
10742            #[automatically_derived]
10743            #[doc(hidden)]
10744            impl ::core::convert::From<getHotShotCommitmentReturn>
10745            for UnderlyingRustTuple<'_> {
10746                fn from(value: getHotShotCommitmentReturn) -> Self {
10747                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
10748                }
10749            }
10750            #[automatically_derived]
10751            #[doc(hidden)]
10752            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10753            for getHotShotCommitmentReturn {
10754                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10755                    Self {
10756                        hotShotBlockCommRoot: tuple.0,
10757                        hotshotBlockHeight: tuple.1,
10758                    }
10759                }
10760            }
10761        }
10762        impl getHotShotCommitmentReturn {
10763            fn _tokenize(
10764                &self,
10765            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
10766                '_,
10767            > {
10768                (
10769                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10770                        &self.hotShotBlockCommRoot,
10771                    ),
10772                    <alloy::sol_types::sol_data::Uint<
10773                        64,
10774                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
10775                )
10776            }
10777        }
10778        #[automatically_derived]
10779        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
10780            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10781            type Token<'a> = <Self::Parameters<
10782                'a,
10783            > as alloy_sol_types::SolType>::Token<'a>;
10784            type Return = getHotShotCommitmentReturn;
10785            type ReturnTuple<'a> = (
10786                BN254::ScalarField,
10787                alloy::sol_types::sol_data::Uint<64>,
10788            );
10789            type ReturnToken<'a> = <Self::ReturnTuple<
10790                'a,
10791            > as alloy_sol_types::SolType>::Token<'a>;
10792            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
10793            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
10794            #[inline]
10795            fn new<'a>(
10796                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10797            ) -> Self {
10798                tuple.into()
10799            }
10800            #[inline]
10801            fn tokenize(&self) -> Self::Token<'_> {
10802                (
10803                    <alloy::sol_types::sol_data::Uint<
10804                        256,
10805                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10806                )
10807            }
10808            #[inline]
10809            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10810                getHotShotCommitmentReturn::_tokenize(ret)
10811            }
10812            #[inline]
10813            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10814                <Self::ReturnTuple<
10815                    '_,
10816                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10817                    .map(Into::into)
10818            }
10819            #[inline]
10820            fn abi_decode_returns_with_config(
10821                data: &[u8],
10822                config: alloy_sol_types::abi::AbiDecoderConfig,
10823            ) -> alloy_sol_types::Result<Self::Return> {
10824                <Self::ReturnTuple<
10825                    '_,
10826                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10827                        data,
10828                        config,
10829                    )
10830                    .map(Into::into)
10831            }
10832            #[inline]
10833            fn abi_decode_returns_validate(
10834                data: &[u8],
10835            ) -> alloy_sol_types::Result<Self::Return> {
10836                Self::abi_decode_returns_with_config(
10837                    data,
10838                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10839                )
10840            }
10841        }
10842    };
10843    #[derive(serde::Serialize, serde::Deserialize)]
10844    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10845    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10846```solidity
10847function getStateHistoryCount() external view returns (uint256);
10848```*/
10849    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10850    #[derive(Clone)]
10851    pub struct getStateHistoryCountCall;
10852    #[derive(serde::Serialize, serde::Deserialize)]
10853    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10854    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10855    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10856    #[derive(Clone)]
10857    pub struct getStateHistoryCountReturn {
10858        #[allow(missing_docs)]
10859        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10860    }
10861    #[allow(
10862        non_camel_case_types,
10863        non_snake_case,
10864        clippy::pub_underscore_fields,
10865        clippy::style
10866    )]
10867    const _: () = {
10868        use alloy::sol_types as alloy_sol_types;
10869        {
10870            #[doc(hidden)]
10871            #[allow(dead_code)]
10872            type UnderlyingSolTuple<'a> = ();
10873            #[doc(hidden)]
10874            type UnderlyingRustTuple<'a> = ();
10875            #[cfg(test)]
10876            #[allow(dead_code, unreachable_patterns)]
10877            fn _type_assertion(
10878                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10879            ) {
10880                match _t {
10881                    alloy_sol_types::private::AssertTypeEq::<
10882                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10883                    >(_) => {}
10884                }
10885            }
10886            #[automatically_derived]
10887            #[doc(hidden)]
10888            impl ::core::convert::From<getStateHistoryCountCall>
10889            for UnderlyingRustTuple<'_> {
10890                fn from(value: getStateHistoryCountCall) -> Self {
10891                    ()
10892                }
10893            }
10894            #[automatically_derived]
10895            #[doc(hidden)]
10896            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10897            for getStateHistoryCountCall {
10898                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10899                    Self
10900                }
10901            }
10902        }
10903        {
10904            #[doc(hidden)]
10905            #[allow(dead_code)]
10906            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10907            #[doc(hidden)]
10908            type UnderlyingRustTuple<'a> = (
10909                alloy::sol_types::private::primitives::aliases::U256,
10910            );
10911            #[cfg(test)]
10912            #[allow(dead_code, unreachable_patterns)]
10913            fn _type_assertion(
10914                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10915            ) {
10916                match _t {
10917                    alloy_sol_types::private::AssertTypeEq::<
10918                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10919                    >(_) => {}
10920                }
10921            }
10922            #[automatically_derived]
10923            #[doc(hidden)]
10924            impl ::core::convert::From<getStateHistoryCountReturn>
10925            for UnderlyingRustTuple<'_> {
10926                fn from(value: getStateHistoryCountReturn) -> Self {
10927                    (value._0,)
10928                }
10929            }
10930            #[automatically_derived]
10931            #[doc(hidden)]
10932            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10933            for getStateHistoryCountReturn {
10934                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10935                    Self { _0: tuple.0 }
10936                }
10937            }
10938        }
10939        #[automatically_derived]
10940        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10941            type Parameters<'a> = ();
10942            type Token<'a> = <Self::Parameters<
10943                'a,
10944            > as alloy_sol_types::SolType>::Token<'a>;
10945            type Return = alloy::sol_types::private::primitives::aliases::U256;
10946            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10947            type ReturnToken<'a> = <Self::ReturnTuple<
10948                'a,
10949            > as alloy_sol_types::SolType>::Token<'a>;
10950            const SIGNATURE: &'static str = "getStateHistoryCount()";
10951            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10952            #[inline]
10953            fn new<'a>(
10954                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10955            ) -> Self {
10956                tuple.into()
10957            }
10958            #[inline]
10959            fn tokenize(&self) -> Self::Token<'_> {
10960                ()
10961            }
10962            #[inline]
10963            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10964                (
10965                    <alloy::sol_types::sol_data::Uint<
10966                        256,
10967                    > as alloy_sol_types::SolType>::tokenize(ret),
10968                )
10969            }
10970            #[inline]
10971            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10972                <Self::ReturnTuple<
10973                    '_,
10974                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10975                    .map(|r| {
10976                        let r: getStateHistoryCountReturn = r.into();
10977                        r._0
10978                    })
10979            }
10980            #[inline]
10981            fn abi_decode_returns_with_config(
10982                data: &[u8],
10983                config: alloy_sol_types::abi::AbiDecoderConfig,
10984            ) -> alloy_sol_types::Result<Self::Return> {
10985                <Self::ReturnTuple<
10986                    '_,
10987                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10988                        data,
10989                        config,
10990                    )
10991                    .map(|r| {
10992                        let r: getStateHistoryCountReturn = r.into();
10993                        r._0
10994                    })
10995            }
10996            #[inline]
10997            fn abi_decode_returns_validate(
10998                data: &[u8],
10999            ) -> alloy_sol_types::Result<Self::Return> {
11000                Self::abi_decode_returns_with_config(
11001                    data,
11002                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11003                )
11004            }
11005        }
11006    };
11007    #[derive(serde::Serialize, serde::Deserialize)]
11008    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11009    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
11010```solidity
11011function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
11012```*/
11013    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11014    #[derive(Clone)]
11015    pub struct getVersionCall;
11016    #[derive(serde::Serialize, serde::Deserialize)]
11017    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11018    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
11019    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11020    #[derive(Clone)]
11021    pub struct getVersionReturn {
11022        #[allow(missing_docs)]
11023        pub majorVersion: u8,
11024        #[allow(missing_docs)]
11025        pub minorVersion: u8,
11026        #[allow(missing_docs)]
11027        pub patchVersion: u8,
11028    }
11029    #[allow(
11030        non_camel_case_types,
11031        non_snake_case,
11032        clippy::pub_underscore_fields,
11033        clippy::style
11034    )]
11035    const _: () = {
11036        use alloy::sol_types as alloy_sol_types;
11037        {
11038            #[doc(hidden)]
11039            #[allow(dead_code)]
11040            type UnderlyingSolTuple<'a> = ();
11041            #[doc(hidden)]
11042            type UnderlyingRustTuple<'a> = ();
11043            #[cfg(test)]
11044            #[allow(dead_code, unreachable_patterns)]
11045            fn _type_assertion(
11046                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11047            ) {
11048                match _t {
11049                    alloy_sol_types::private::AssertTypeEq::<
11050                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11051                    >(_) => {}
11052                }
11053            }
11054            #[automatically_derived]
11055            #[doc(hidden)]
11056            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
11057                fn from(value: getVersionCall) -> Self {
11058                    ()
11059                }
11060            }
11061            #[automatically_derived]
11062            #[doc(hidden)]
11063            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
11064                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11065                    Self
11066                }
11067            }
11068        }
11069        {
11070            #[doc(hidden)]
11071            #[allow(dead_code)]
11072            type UnderlyingSolTuple<'a> = (
11073                alloy::sol_types::sol_data::Uint<8>,
11074                alloy::sol_types::sol_data::Uint<8>,
11075                alloy::sol_types::sol_data::Uint<8>,
11076            );
11077            #[doc(hidden)]
11078            type UnderlyingRustTuple<'a> = (u8, u8, u8);
11079            #[cfg(test)]
11080            #[allow(dead_code, unreachable_patterns)]
11081            fn _type_assertion(
11082                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11083            ) {
11084                match _t {
11085                    alloy_sol_types::private::AssertTypeEq::<
11086                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11087                    >(_) => {}
11088                }
11089            }
11090            #[automatically_derived]
11091            #[doc(hidden)]
11092            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
11093                fn from(value: getVersionReturn) -> Self {
11094                    (value.majorVersion, value.minorVersion, value.patchVersion)
11095                }
11096            }
11097            #[automatically_derived]
11098            #[doc(hidden)]
11099            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
11100                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11101                    Self {
11102                        majorVersion: tuple.0,
11103                        minorVersion: tuple.1,
11104                        patchVersion: tuple.2,
11105                    }
11106                }
11107            }
11108        }
11109        impl getVersionReturn {
11110            fn _tokenize(
11111                &self,
11112            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11113                (
11114                    <alloy::sol_types::sol_data::Uint<
11115                        8,
11116                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
11117                    <alloy::sol_types::sol_data::Uint<
11118                        8,
11119                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
11120                    <alloy::sol_types::sol_data::Uint<
11121                        8,
11122                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
11123                )
11124            }
11125        }
11126        #[automatically_derived]
11127        impl alloy_sol_types::SolCall for getVersionCall {
11128            type Parameters<'a> = ();
11129            type Token<'a> = <Self::Parameters<
11130                'a,
11131            > as alloy_sol_types::SolType>::Token<'a>;
11132            type Return = getVersionReturn;
11133            type ReturnTuple<'a> = (
11134                alloy::sol_types::sol_data::Uint<8>,
11135                alloy::sol_types::sol_data::Uint<8>,
11136                alloy::sol_types::sol_data::Uint<8>,
11137            );
11138            type ReturnToken<'a> = <Self::ReturnTuple<
11139                'a,
11140            > as alloy_sol_types::SolType>::Token<'a>;
11141            const SIGNATURE: &'static str = "getVersion()";
11142            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
11143            #[inline]
11144            fn new<'a>(
11145                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11146            ) -> Self {
11147                tuple.into()
11148            }
11149            #[inline]
11150            fn tokenize(&self) -> Self::Token<'_> {
11151                ()
11152            }
11153            #[inline]
11154            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11155                getVersionReturn::_tokenize(ret)
11156            }
11157            #[inline]
11158            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11159                <Self::ReturnTuple<
11160                    '_,
11161                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11162                    .map(Into::into)
11163            }
11164            #[inline]
11165            fn abi_decode_returns_with_config(
11166                data: &[u8],
11167                config: alloy_sol_types::abi::AbiDecoderConfig,
11168            ) -> alloy_sol_types::Result<Self::Return> {
11169                <Self::ReturnTuple<
11170                    '_,
11171                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11172                        data,
11173                        config,
11174                    )
11175                    .map(Into::into)
11176            }
11177            #[inline]
11178            fn abi_decode_returns_validate(
11179                data: &[u8],
11180            ) -> alloy_sol_types::Result<Self::Return> {
11181                Self::abi_decode_returns_with_config(
11182                    data,
11183                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11184                )
11185            }
11186        }
11187    };
11188    #[derive(serde::Serialize, serde::Deserialize)]
11189    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11190    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
11191```solidity
11192function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
11193```*/
11194    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11195    #[derive(Clone)]
11196    pub struct initializeCall {
11197        #[allow(missing_docs)]
11198        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11199        #[allow(missing_docs)]
11200        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11201        #[allow(missing_docs)]
11202        pub _stateHistoryRetentionPeriod: u32,
11203        #[allow(missing_docs)]
11204        pub owner: alloy::sol_types::private::Address,
11205    }
11206    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
11207    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11208    #[derive(Clone)]
11209    pub struct initializeReturn {}
11210    #[allow(
11211        non_camel_case_types,
11212        non_snake_case,
11213        clippy::pub_underscore_fields,
11214        clippy::style
11215    )]
11216    const _: () = {
11217        use alloy::sol_types as alloy_sol_types;
11218        {
11219            #[doc(hidden)]
11220            #[allow(dead_code)]
11221            type UnderlyingSolTuple<'a> = (
11222                LightClient::LightClientState,
11223                LightClient::StakeTableState,
11224                alloy::sol_types::sol_data::Uint<32>,
11225                alloy::sol_types::sol_data::Address,
11226            );
11227            #[doc(hidden)]
11228            type UnderlyingRustTuple<'a> = (
11229                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11230                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11231                u32,
11232                alloy::sol_types::private::Address,
11233            );
11234            #[cfg(test)]
11235            #[allow(dead_code, unreachable_patterns)]
11236            fn _type_assertion(
11237                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11238            ) {
11239                match _t {
11240                    alloy_sol_types::private::AssertTypeEq::<
11241                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11242                    >(_) => {}
11243                }
11244            }
11245            #[automatically_derived]
11246            #[doc(hidden)]
11247            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
11248                fn from(value: initializeCall) -> Self {
11249                    (
11250                        value._genesis,
11251                        value._genesisStakeTableState,
11252                        value._stateHistoryRetentionPeriod,
11253                        value.owner,
11254                    )
11255                }
11256            }
11257            #[automatically_derived]
11258            #[doc(hidden)]
11259            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
11260                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11261                    Self {
11262                        _genesis: tuple.0,
11263                        _genesisStakeTableState: tuple.1,
11264                        _stateHistoryRetentionPeriod: tuple.2,
11265                        owner: tuple.3,
11266                    }
11267                }
11268            }
11269        }
11270        {
11271            #[doc(hidden)]
11272            #[allow(dead_code)]
11273            type UnderlyingSolTuple<'a> = ();
11274            #[doc(hidden)]
11275            type UnderlyingRustTuple<'a> = ();
11276            #[cfg(test)]
11277            #[allow(dead_code, unreachable_patterns)]
11278            fn _type_assertion(
11279                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11280            ) {
11281                match _t {
11282                    alloy_sol_types::private::AssertTypeEq::<
11283                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11284                    >(_) => {}
11285                }
11286            }
11287            #[automatically_derived]
11288            #[doc(hidden)]
11289            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
11290                fn from(value: initializeReturn) -> Self {
11291                    ()
11292                }
11293            }
11294            #[automatically_derived]
11295            #[doc(hidden)]
11296            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
11297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11298                    Self {}
11299                }
11300            }
11301        }
11302        impl initializeReturn {
11303            fn _tokenize(
11304                &self,
11305            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11306                ()
11307            }
11308        }
11309        #[automatically_derived]
11310        impl alloy_sol_types::SolCall for initializeCall {
11311            type Parameters<'a> = (
11312                LightClient::LightClientState,
11313                LightClient::StakeTableState,
11314                alloy::sol_types::sol_data::Uint<32>,
11315                alloy::sol_types::sol_data::Address,
11316            );
11317            type Token<'a> = <Self::Parameters<
11318                'a,
11319            > as alloy_sol_types::SolType>::Token<'a>;
11320            type Return = initializeReturn;
11321            type ReturnTuple<'a> = ();
11322            type ReturnToken<'a> = <Self::ReturnTuple<
11323                'a,
11324            > as alloy_sol_types::SolType>::Token<'a>;
11325            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
11326            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
11327            #[inline]
11328            fn new<'a>(
11329                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11330            ) -> Self {
11331                tuple.into()
11332            }
11333            #[inline]
11334            fn tokenize(&self) -> Self::Token<'_> {
11335                (
11336                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11337                        &self._genesis,
11338                    ),
11339                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11340                        &self._genesisStakeTableState,
11341                    ),
11342                    <alloy::sol_types::sol_data::Uint<
11343                        32,
11344                    > as alloy_sol_types::SolType>::tokenize(
11345                        &self._stateHistoryRetentionPeriod,
11346                    ),
11347                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11348                        &self.owner,
11349                    ),
11350                )
11351            }
11352            #[inline]
11353            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11354                initializeReturn::_tokenize(ret)
11355            }
11356            #[inline]
11357            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11358                <Self::ReturnTuple<
11359                    '_,
11360                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11361                    .map(Into::into)
11362            }
11363            #[inline]
11364            fn abi_decode_returns_with_config(
11365                data: &[u8],
11366                config: alloy_sol_types::abi::AbiDecoderConfig,
11367            ) -> alloy_sol_types::Result<Self::Return> {
11368                <Self::ReturnTuple<
11369                    '_,
11370                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11371                        data,
11372                        config,
11373                    )
11374                    .map(Into::into)
11375            }
11376            #[inline]
11377            fn abi_decode_returns_validate(
11378                data: &[u8],
11379            ) -> alloy_sol_types::Result<Self::Return> {
11380                Self::abi_decode_returns_with_config(
11381                    data,
11382                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11383                )
11384            }
11385        }
11386    };
11387    #[derive(serde::Serialize, serde::Deserialize)]
11388    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11389    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
11390```solidity
11391function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
11392```*/
11393    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11394    #[derive(Clone)]
11395    pub struct initializeV2Call {
11396        #[allow(missing_docs)]
11397        pub _blocksPerEpoch: u64,
11398        #[allow(missing_docs)]
11399        pub _epochStartBlock: u64,
11400    }
11401    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
11402    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11403    #[derive(Clone)]
11404    pub struct initializeV2Return {}
11405    #[allow(
11406        non_camel_case_types,
11407        non_snake_case,
11408        clippy::pub_underscore_fields,
11409        clippy::style
11410    )]
11411    const _: () = {
11412        use alloy::sol_types as alloy_sol_types;
11413        {
11414            #[doc(hidden)]
11415            #[allow(dead_code)]
11416            type UnderlyingSolTuple<'a> = (
11417                alloy::sol_types::sol_data::Uint<64>,
11418                alloy::sol_types::sol_data::Uint<64>,
11419            );
11420            #[doc(hidden)]
11421            type UnderlyingRustTuple<'a> = (u64, u64);
11422            #[cfg(test)]
11423            #[allow(dead_code, unreachable_patterns)]
11424            fn _type_assertion(
11425                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11426            ) {
11427                match _t {
11428                    alloy_sol_types::private::AssertTypeEq::<
11429                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11430                    >(_) => {}
11431                }
11432            }
11433            #[automatically_derived]
11434            #[doc(hidden)]
11435            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
11436                fn from(value: initializeV2Call) -> Self {
11437                    (value._blocksPerEpoch, value._epochStartBlock)
11438                }
11439            }
11440            #[automatically_derived]
11441            #[doc(hidden)]
11442            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
11443                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11444                    Self {
11445                        _blocksPerEpoch: tuple.0,
11446                        _epochStartBlock: tuple.1,
11447                    }
11448                }
11449            }
11450        }
11451        {
11452            #[doc(hidden)]
11453            #[allow(dead_code)]
11454            type UnderlyingSolTuple<'a> = ();
11455            #[doc(hidden)]
11456            type UnderlyingRustTuple<'a> = ();
11457            #[cfg(test)]
11458            #[allow(dead_code, unreachable_patterns)]
11459            fn _type_assertion(
11460                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11461            ) {
11462                match _t {
11463                    alloy_sol_types::private::AssertTypeEq::<
11464                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11465                    >(_) => {}
11466                }
11467            }
11468            #[automatically_derived]
11469            #[doc(hidden)]
11470            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
11471                fn from(value: initializeV2Return) -> Self {
11472                    ()
11473                }
11474            }
11475            #[automatically_derived]
11476            #[doc(hidden)]
11477            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
11478                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11479                    Self {}
11480                }
11481            }
11482        }
11483        impl initializeV2Return {
11484            fn _tokenize(
11485                &self,
11486            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11487                ()
11488            }
11489        }
11490        #[automatically_derived]
11491        impl alloy_sol_types::SolCall for initializeV2Call {
11492            type Parameters<'a> = (
11493                alloy::sol_types::sol_data::Uint<64>,
11494                alloy::sol_types::sol_data::Uint<64>,
11495            );
11496            type Token<'a> = <Self::Parameters<
11497                'a,
11498            > as alloy_sol_types::SolType>::Token<'a>;
11499            type Return = initializeV2Return;
11500            type ReturnTuple<'a> = ();
11501            type ReturnToken<'a> = <Self::ReturnTuple<
11502                'a,
11503            > as alloy_sol_types::SolType>::Token<'a>;
11504            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
11505            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
11506            #[inline]
11507            fn new<'a>(
11508                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11509            ) -> Self {
11510                tuple.into()
11511            }
11512            #[inline]
11513            fn tokenize(&self) -> Self::Token<'_> {
11514                (
11515                    <alloy::sol_types::sol_data::Uint<
11516                        64,
11517                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
11518                    <alloy::sol_types::sol_data::Uint<
11519                        64,
11520                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
11521                )
11522            }
11523            #[inline]
11524            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11525                initializeV2Return::_tokenize(ret)
11526            }
11527            #[inline]
11528            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11529                <Self::ReturnTuple<
11530                    '_,
11531                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11532                    .map(Into::into)
11533            }
11534            #[inline]
11535            fn abi_decode_returns_with_config(
11536                data: &[u8],
11537                config: alloy_sol_types::abi::AbiDecoderConfig,
11538            ) -> alloy_sol_types::Result<Self::Return> {
11539                <Self::ReturnTuple<
11540                    '_,
11541                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11542                        data,
11543                        config,
11544                    )
11545                    .map(Into::into)
11546            }
11547            #[inline]
11548            fn abi_decode_returns_validate(
11549                data: &[u8],
11550            ) -> alloy_sol_types::Result<Self::Return> {
11551                Self::abi_decode_returns_with_config(
11552                    data,
11553                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11554                )
11555            }
11556        }
11557    };
11558    #[derive(serde::Serialize, serde::Deserialize)]
11559    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11560    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
11561```solidity
11562function initializeV3() external;
11563```*/
11564    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11565    #[derive(Clone)]
11566    pub struct initializeV3Call;
11567    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
11568    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11569    #[derive(Clone)]
11570    pub struct initializeV3Return {}
11571    #[allow(
11572        non_camel_case_types,
11573        non_snake_case,
11574        clippy::pub_underscore_fields,
11575        clippy::style
11576    )]
11577    const _: () = {
11578        use alloy::sol_types as alloy_sol_types;
11579        {
11580            #[doc(hidden)]
11581            #[allow(dead_code)]
11582            type UnderlyingSolTuple<'a> = ();
11583            #[doc(hidden)]
11584            type UnderlyingRustTuple<'a> = ();
11585            #[cfg(test)]
11586            #[allow(dead_code, unreachable_patterns)]
11587            fn _type_assertion(
11588                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11589            ) {
11590                match _t {
11591                    alloy_sol_types::private::AssertTypeEq::<
11592                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11593                    >(_) => {}
11594                }
11595            }
11596            #[automatically_derived]
11597            #[doc(hidden)]
11598            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
11599                fn from(value: initializeV3Call) -> Self {
11600                    ()
11601                }
11602            }
11603            #[automatically_derived]
11604            #[doc(hidden)]
11605            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
11606                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11607                    Self
11608                }
11609            }
11610        }
11611        {
11612            #[doc(hidden)]
11613            #[allow(dead_code)]
11614            type UnderlyingSolTuple<'a> = ();
11615            #[doc(hidden)]
11616            type UnderlyingRustTuple<'a> = ();
11617            #[cfg(test)]
11618            #[allow(dead_code, unreachable_patterns)]
11619            fn _type_assertion(
11620                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11621            ) {
11622                match _t {
11623                    alloy_sol_types::private::AssertTypeEq::<
11624                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11625                    >(_) => {}
11626                }
11627            }
11628            #[automatically_derived]
11629            #[doc(hidden)]
11630            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
11631                fn from(value: initializeV3Return) -> Self {
11632                    ()
11633                }
11634            }
11635            #[automatically_derived]
11636            #[doc(hidden)]
11637            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
11638                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11639                    Self {}
11640                }
11641            }
11642        }
11643        impl initializeV3Return {
11644            fn _tokenize(
11645                &self,
11646            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11647                ()
11648            }
11649        }
11650        #[automatically_derived]
11651        impl alloy_sol_types::SolCall for initializeV3Call {
11652            type Parameters<'a> = ();
11653            type Token<'a> = <Self::Parameters<
11654                'a,
11655            > as alloy_sol_types::SolType>::Token<'a>;
11656            type Return = initializeV3Return;
11657            type ReturnTuple<'a> = ();
11658            type ReturnToken<'a> = <Self::ReturnTuple<
11659                'a,
11660            > as alloy_sol_types::SolType>::Token<'a>;
11661            const SIGNATURE: &'static str = "initializeV3()";
11662            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
11663            #[inline]
11664            fn new<'a>(
11665                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11666            ) -> Self {
11667                tuple.into()
11668            }
11669            #[inline]
11670            fn tokenize(&self) -> Self::Token<'_> {
11671                ()
11672            }
11673            #[inline]
11674            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11675                initializeV3Return::_tokenize(ret)
11676            }
11677            #[inline]
11678            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11679                <Self::ReturnTuple<
11680                    '_,
11681                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11682                    .map(Into::into)
11683            }
11684            #[inline]
11685            fn abi_decode_returns_with_config(
11686                data: &[u8],
11687                config: alloy_sol_types::abi::AbiDecoderConfig,
11688            ) -> alloy_sol_types::Result<Self::Return> {
11689                <Self::ReturnTuple<
11690                    '_,
11691                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11692                        data,
11693                        config,
11694                    )
11695                    .map(Into::into)
11696            }
11697            #[inline]
11698            fn abi_decode_returns_validate(
11699                data: &[u8],
11700            ) -> alloy_sol_types::Result<Self::Return> {
11701                Self::abi_decode_returns_with_config(
11702                    data,
11703                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11704                )
11705            }
11706        }
11707    };
11708    #[derive(serde::Serialize, serde::Deserialize)]
11709    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11710    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
11711```solidity
11712function isEpochRoot(uint64 blockHeight) external view returns (bool);
11713```*/
11714    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11715    #[derive(Clone)]
11716    pub struct isEpochRootCall {
11717        #[allow(missing_docs)]
11718        pub blockHeight: u64,
11719    }
11720    #[derive(serde::Serialize, serde::Deserialize)]
11721    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11722    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
11723    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11724    #[derive(Clone)]
11725    pub struct isEpochRootReturn {
11726        #[allow(missing_docs)]
11727        pub _0: bool,
11728    }
11729    #[allow(
11730        non_camel_case_types,
11731        non_snake_case,
11732        clippy::pub_underscore_fields,
11733        clippy::style
11734    )]
11735    const _: () = {
11736        use alloy::sol_types as alloy_sol_types;
11737        {
11738            #[doc(hidden)]
11739            #[allow(dead_code)]
11740            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11741            #[doc(hidden)]
11742            type UnderlyingRustTuple<'a> = (u64,);
11743            #[cfg(test)]
11744            #[allow(dead_code, unreachable_patterns)]
11745            fn _type_assertion(
11746                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11747            ) {
11748                match _t {
11749                    alloy_sol_types::private::AssertTypeEq::<
11750                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11751                    >(_) => {}
11752                }
11753            }
11754            #[automatically_derived]
11755            #[doc(hidden)]
11756            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
11757                fn from(value: isEpochRootCall) -> Self {
11758                    (value.blockHeight,)
11759                }
11760            }
11761            #[automatically_derived]
11762            #[doc(hidden)]
11763            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
11764                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11765                    Self { blockHeight: tuple.0 }
11766                }
11767            }
11768        }
11769        {
11770            #[doc(hidden)]
11771            #[allow(dead_code)]
11772            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11773            #[doc(hidden)]
11774            type UnderlyingRustTuple<'a> = (bool,);
11775            #[cfg(test)]
11776            #[allow(dead_code, unreachable_patterns)]
11777            fn _type_assertion(
11778                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11779            ) {
11780                match _t {
11781                    alloy_sol_types::private::AssertTypeEq::<
11782                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11783                    >(_) => {}
11784                }
11785            }
11786            #[automatically_derived]
11787            #[doc(hidden)]
11788            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
11789                fn from(value: isEpochRootReturn) -> Self {
11790                    (value._0,)
11791                }
11792            }
11793            #[automatically_derived]
11794            #[doc(hidden)]
11795            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
11796                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11797                    Self { _0: tuple.0 }
11798                }
11799            }
11800        }
11801        #[automatically_derived]
11802        impl alloy_sol_types::SolCall for isEpochRootCall {
11803            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11804            type Token<'a> = <Self::Parameters<
11805                'a,
11806            > as alloy_sol_types::SolType>::Token<'a>;
11807            type Return = bool;
11808            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11809            type ReturnToken<'a> = <Self::ReturnTuple<
11810                'a,
11811            > as alloy_sol_types::SolType>::Token<'a>;
11812            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
11813            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
11814            #[inline]
11815            fn new<'a>(
11816                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11817            ) -> Self {
11818                tuple.into()
11819            }
11820            #[inline]
11821            fn tokenize(&self) -> Self::Token<'_> {
11822                (
11823                    <alloy::sol_types::sol_data::Uint<
11824                        64,
11825                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11826                )
11827            }
11828            #[inline]
11829            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11830                (
11831                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11832                        ret,
11833                    ),
11834                )
11835            }
11836            #[inline]
11837            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11838                <Self::ReturnTuple<
11839                    '_,
11840                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11841                    .map(|r| {
11842                        let r: isEpochRootReturn = r.into();
11843                        r._0
11844                    })
11845            }
11846            #[inline]
11847            fn abi_decode_returns_with_config(
11848                data: &[u8],
11849                config: alloy_sol_types::abi::AbiDecoderConfig,
11850            ) -> alloy_sol_types::Result<Self::Return> {
11851                <Self::ReturnTuple<
11852                    '_,
11853                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11854                        data,
11855                        config,
11856                    )
11857                    .map(|r| {
11858                        let r: isEpochRootReturn = r.into();
11859                        r._0
11860                    })
11861            }
11862            #[inline]
11863            fn abi_decode_returns_validate(
11864                data: &[u8],
11865            ) -> alloy_sol_types::Result<Self::Return> {
11866                Self::abi_decode_returns_with_config(
11867                    data,
11868                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11869                )
11870            }
11871        }
11872    };
11873    #[derive(serde::Serialize, serde::Deserialize)]
11874    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11875    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
11876```solidity
11877function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
11878```*/
11879    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11880    #[derive(Clone)]
11881    pub struct isGtEpochRootCall {
11882        #[allow(missing_docs)]
11883        pub blockHeight: u64,
11884    }
11885    #[derive(serde::Serialize, serde::Deserialize)]
11886    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11887    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
11888    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11889    #[derive(Clone)]
11890    pub struct isGtEpochRootReturn {
11891        #[allow(missing_docs)]
11892        pub _0: bool,
11893    }
11894    #[allow(
11895        non_camel_case_types,
11896        non_snake_case,
11897        clippy::pub_underscore_fields,
11898        clippy::style
11899    )]
11900    const _: () = {
11901        use alloy::sol_types as alloy_sol_types;
11902        {
11903            #[doc(hidden)]
11904            #[allow(dead_code)]
11905            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11906            #[doc(hidden)]
11907            type UnderlyingRustTuple<'a> = (u64,);
11908            #[cfg(test)]
11909            #[allow(dead_code, unreachable_patterns)]
11910            fn _type_assertion(
11911                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11912            ) {
11913                match _t {
11914                    alloy_sol_types::private::AssertTypeEq::<
11915                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11916                    >(_) => {}
11917                }
11918            }
11919            #[automatically_derived]
11920            #[doc(hidden)]
11921            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
11922                fn from(value: isGtEpochRootCall) -> Self {
11923                    (value.blockHeight,)
11924                }
11925            }
11926            #[automatically_derived]
11927            #[doc(hidden)]
11928            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
11929                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11930                    Self { blockHeight: tuple.0 }
11931                }
11932            }
11933        }
11934        {
11935            #[doc(hidden)]
11936            #[allow(dead_code)]
11937            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11938            #[doc(hidden)]
11939            type UnderlyingRustTuple<'a> = (bool,);
11940            #[cfg(test)]
11941            #[allow(dead_code, unreachable_patterns)]
11942            fn _type_assertion(
11943                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11944            ) {
11945                match _t {
11946                    alloy_sol_types::private::AssertTypeEq::<
11947                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11948                    >(_) => {}
11949                }
11950            }
11951            #[automatically_derived]
11952            #[doc(hidden)]
11953            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
11954                fn from(value: isGtEpochRootReturn) -> Self {
11955                    (value._0,)
11956                }
11957            }
11958            #[automatically_derived]
11959            #[doc(hidden)]
11960            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
11961                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11962                    Self { _0: tuple.0 }
11963                }
11964            }
11965        }
11966        #[automatically_derived]
11967        impl alloy_sol_types::SolCall for isGtEpochRootCall {
11968            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11969            type Token<'a> = <Self::Parameters<
11970                'a,
11971            > as alloy_sol_types::SolType>::Token<'a>;
11972            type Return = bool;
11973            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11974            type ReturnToken<'a> = <Self::ReturnTuple<
11975                'a,
11976            > as alloy_sol_types::SolType>::Token<'a>;
11977            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11978            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11979            #[inline]
11980            fn new<'a>(
11981                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11982            ) -> Self {
11983                tuple.into()
11984            }
11985            #[inline]
11986            fn tokenize(&self) -> Self::Token<'_> {
11987                (
11988                    <alloy::sol_types::sol_data::Uint<
11989                        64,
11990                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11991                )
11992            }
11993            #[inline]
11994            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11995                (
11996                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11997                        ret,
11998                    ),
11999                )
12000            }
12001            #[inline]
12002            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12003                <Self::ReturnTuple<
12004                    '_,
12005                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12006                    .map(|r| {
12007                        let r: isGtEpochRootReturn = r.into();
12008                        r._0
12009                    })
12010            }
12011            #[inline]
12012            fn abi_decode_returns_with_config(
12013                data: &[u8],
12014                config: alloy_sol_types::abi::AbiDecoderConfig,
12015            ) -> alloy_sol_types::Result<Self::Return> {
12016                <Self::ReturnTuple<
12017                    '_,
12018                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12019                        data,
12020                        config,
12021                    )
12022                    .map(|r| {
12023                        let r: isGtEpochRootReturn = r.into();
12024                        r._0
12025                    })
12026            }
12027            #[inline]
12028            fn abi_decode_returns_validate(
12029                data: &[u8],
12030            ) -> alloy_sol_types::Result<Self::Return> {
12031                Self::abi_decode_returns_with_config(
12032                    data,
12033                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12034                )
12035            }
12036        }
12037    };
12038    #[derive(serde::Serialize, serde::Deserialize)]
12039    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12040    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
12041```solidity
12042function isPermissionedProverEnabled() external view returns (bool);
12043```*/
12044    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12045    #[derive(Clone)]
12046    pub struct isPermissionedProverEnabledCall;
12047    #[derive(serde::Serialize, serde::Deserialize)]
12048    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12049    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
12050    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12051    #[derive(Clone)]
12052    pub struct isPermissionedProverEnabledReturn {
12053        #[allow(missing_docs)]
12054        pub _0: bool,
12055    }
12056    #[allow(
12057        non_camel_case_types,
12058        non_snake_case,
12059        clippy::pub_underscore_fields,
12060        clippy::style
12061    )]
12062    const _: () = {
12063        use alloy::sol_types as alloy_sol_types;
12064        {
12065            #[doc(hidden)]
12066            #[allow(dead_code)]
12067            type UnderlyingSolTuple<'a> = ();
12068            #[doc(hidden)]
12069            type UnderlyingRustTuple<'a> = ();
12070            #[cfg(test)]
12071            #[allow(dead_code, unreachable_patterns)]
12072            fn _type_assertion(
12073                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12074            ) {
12075                match _t {
12076                    alloy_sol_types::private::AssertTypeEq::<
12077                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12078                    >(_) => {}
12079                }
12080            }
12081            #[automatically_derived]
12082            #[doc(hidden)]
12083            impl ::core::convert::From<isPermissionedProverEnabledCall>
12084            for UnderlyingRustTuple<'_> {
12085                fn from(value: isPermissionedProverEnabledCall) -> Self {
12086                    ()
12087                }
12088            }
12089            #[automatically_derived]
12090            #[doc(hidden)]
12091            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12092            for isPermissionedProverEnabledCall {
12093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12094                    Self
12095                }
12096            }
12097        }
12098        {
12099            #[doc(hidden)]
12100            #[allow(dead_code)]
12101            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12102            #[doc(hidden)]
12103            type UnderlyingRustTuple<'a> = (bool,);
12104            #[cfg(test)]
12105            #[allow(dead_code, unreachable_patterns)]
12106            fn _type_assertion(
12107                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12108            ) {
12109                match _t {
12110                    alloy_sol_types::private::AssertTypeEq::<
12111                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12112                    >(_) => {}
12113                }
12114            }
12115            #[automatically_derived]
12116            #[doc(hidden)]
12117            impl ::core::convert::From<isPermissionedProverEnabledReturn>
12118            for UnderlyingRustTuple<'_> {
12119                fn from(value: isPermissionedProverEnabledReturn) -> Self {
12120                    (value._0,)
12121                }
12122            }
12123            #[automatically_derived]
12124            #[doc(hidden)]
12125            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12126            for isPermissionedProverEnabledReturn {
12127                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12128                    Self { _0: tuple.0 }
12129                }
12130            }
12131        }
12132        #[automatically_derived]
12133        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
12134            type Parameters<'a> = ();
12135            type Token<'a> = <Self::Parameters<
12136                'a,
12137            > as alloy_sol_types::SolType>::Token<'a>;
12138            type Return = bool;
12139            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12140            type ReturnToken<'a> = <Self::ReturnTuple<
12141                'a,
12142            > as alloy_sol_types::SolType>::Token<'a>;
12143            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
12144            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
12145            #[inline]
12146            fn new<'a>(
12147                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12148            ) -> Self {
12149                tuple.into()
12150            }
12151            #[inline]
12152            fn tokenize(&self) -> Self::Token<'_> {
12153                ()
12154            }
12155            #[inline]
12156            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12157                (
12158                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
12159                        ret,
12160                    ),
12161                )
12162            }
12163            #[inline]
12164            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12165                <Self::ReturnTuple<
12166                    '_,
12167                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12168                    .map(|r| {
12169                        let r: isPermissionedProverEnabledReturn = r.into();
12170                        r._0
12171                    })
12172            }
12173            #[inline]
12174            fn abi_decode_returns_with_config(
12175                data: &[u8],
12176                config: alloy_sol_types::abi::AbiDecoderConfig,
12177            ) -> alloy_sol_types::Result<Self::Return> {
12178                <Self::ReturnTuple<
12179                    '_,
12180                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12181                        data,
12182                        config,
12183                    )
12184                    .map(|r| {
12185                        let r: isPermissionedProverEnabledReturn = r.into();
12186                        r._0
12187                    })
12188            }
12189            #[inline]
12190            fn abi_decode_returns_validate(
12191                data: &[u8],
12192            ) -> alloy_sol_types::Result<Self::Return> {
12193                Self::abi_decode_returns_with_config(
12194                    data,
12195                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12196                )
12197            }
12198        }
12199    };
12200    #[derive(serde::Serialize, serde::Deserialize)]
12201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12202    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
12203```solidity
12204function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
12205```*/
12206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12207    #[derive(Clone)]
12208    pub struct lagOverEscapeHatchThresholdCall {
12209        #[allow(missing_docs)]
12210        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
12211        #[allow(missing_docs)]
12212        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
12213    }
12214    #[derive(serde::Serialize, serde::Deserialize)]
12215    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12216    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
12217    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12218    #[derive(Clone)]
12219    pub struct lagOverEscapeHatchThresholdReturn {
12220        #[allow(missing_docs)]
12221        pub _0: bool,
12222    }
12223    #[allow(
12224        non_camel_case_types,
12225        non_snake_case,
12226        clippy::pub_underscore_fields,
12227        clippy::style
12228    )]
12229    const _: () = {
12230        use alloy::sol_types as alloy_sol_types;
12231        {
12232            #[doc(hidden)]
12233            #[allow(dead_code)]
12234            type UnderlyingSolTuple<'a> = (
12235                alloy::sol_types::sol_data::Uint<256>,
12236                alloy::sol_types::sol_data::Uint<256>,
12237            );
12238            #[doc(hidden)]
12239            type UnderlyingRustTuple<'a> = (
12240                alloy::sol_types::private::primitives::aliases::U256,
12241                alloy::sol_types::private::primitives::aliases::U256,
12242            );
12243            #[cfg(test)]
12244            #[allow(dead_code, unreachable_patterns)]
12245            fn _type_assertion(
12246                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12247            ) {
12248                match _t {
12249                    alloy_sol_types::private::AssertTypeEq::<
12250                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12251                    >(_) => {}
12252                }
12253            }
12254            #[automatically_derived]
12255            #[doc(hidden)]
12256            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
12257            for UnderlyingRustTuple<'_> {
12258                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
12259                    (value.blockNumber, value.threshold)
12260                }
12261            }
12262            #[automatically_derived]
12263            #[doc(hidden)]
12264            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12265            for lagOverEscapeHatchThresholdCall {
12266                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12267                    Self {
12268                        blockNumber: tuple.0,
12269                        threshold: tuple.1,
12270                    }
12271                }
12272            }
12273        }
12274        {
12275            #[doc(hidden)]
12276            #[allow(dead_code)]
12277            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12278            #[doc(hidden)]
12279            type UnderlyingRustTuple<'a> = (bool,);
12280            #[cfg(test)]
12281            #[allow(dead_code, unreachable_patterns)]
12282            fn _type_assertion(
12283                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12284            ) {
12285                match _t {
12286                    alloy_sol_types::private::AssertTypeEq::<
12287                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12288                    >(_) => {}
12289                }
12290            }
12291            #[automatically_derived]
12292            #[doc(hidden)]
12293            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
12294            for UnderlyingRustTuple<'_> {
12295                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
12296                    (value._0,)
12297                }
12298            }
12299            #[automatically_derived]
12300            #[doc(hidden)]
12301            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12302            for lagOverEscapeHatchThresholdReturn {
12303                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12304                    Self { _0: tuple.0 }
12305                }
12306            }
12307        }
12308        #[automatically_derived]
12309        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
12310            type Parameters<'a> = (
12311                alloy::sol_types::sol_data::Uint<256>,
12312                alloy::sol_types::sol_data::Uint<256>,
12313            );
12314            type Token<'a> = <Self::Parameters<
12315                'a,
12316            > as alloy_sol_types::SolType>::Token<'a>;
12317            type Return = bool;
12318            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
12319            type ReturnToken<'a> = <Self::ReturnTuple<
12320                'a,
12321            > as alloy_sol_types::SolType>::Token<'a>;
12322            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
12323            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
12324            #[inline]
12325            fn new<'a>(
12326                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12327            ) -> Self {
12328                tuple.into()
12329            }
12330            #[inline]
12331            fn tokenize(&self) -> Self::Token<'_> {
12332                (
12333                    <alloy::sol_types::sol_data::Uint<
12334                        256,
12335                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
12336                    <alloy::sol_types::sol_data::Uint<
12337                        256,
12338                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
12339                )
12340            }
12341            #[inline]
12342            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12343                (
12344                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
12345                        ret,
12346                    ),
12347                )
12348            }
12349            #[inline]
12350            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12351                <Self::ReturnTuple<
12352                    '_,
12353                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12354                    .map(|r| {
12355                        let r: lagOverEscapeHatchThresholdReturn = r.into();
12356                        r._0
12357                    })
12358            }
12359            #[inline]
12360            fn abi_decode_returns_with_config(
12361                data: &[u8],
12362                config: alloy_sol_types::abi::AbiDecoderConfig,
12363            ) -> alloy_sol_types::Result<Self::Return> {
12364                <Self::ReturnTuple<
12365                    '_,
12366                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12367                        data,
12368                        config,
12369                    )
12370                    .map(|r| {
12371                        let r: lagOverEscapeHatchThresholdReturn = r.into();
12372                        r._0
12373                    })
12374            }
12375            #[inline]
12376            fn abi_decode_returns_validate(
12377                data: &[u8],
12378            ) -> alloy_sol_types::Result<Self::Return> {
12379                Self::abi_decode_returns_with_config(
12380                    data,
12381                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12382                )
12383            }
12384        }
12385    };
12386    #[derive(serde::Serialize, serde::Deserialize)]
12387    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12388    /**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`.
12389```solidity
12390function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
12391```*/
12392    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12393    #[derive(Clone)]
12394    pub struct newFinalizedState_0Call {
12395        #[allow(missing_docs)]
12396        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12397        #[allow(missing_docs)]
12398        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12399    }
12400    ///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.
12401    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12402    #[derive(Clone)]
12403    pub struct newFinalizedState_0Return {}
12404    #[allow(
12405        non_camel_case_types,
12406        non_snake_case,
12407        clippy::pub_underscore_fields,
12408        clippy::style
12409    )]
12410    const _: () = {
12411        use alloy::sol_types as alloy_sol_types;
12412        {
12413            #[doc(hidden)]
12414            #[allow(dead_code)]
12415            type UnderlyingSolTuple<'a> = (
12416                LightClient::LightClientState,
12417                IPlonkVerifier::PlonkProof,
12418            );
12419            #[doc(hidden)]
12420            type UnderlyingRustTuple<'a> = (
12421                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12422                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12423            );
12424            #[cfg(test)]
12425            #[allow(dead_code, unreachable_patterns)]
12426            fn _type_assertion(
12427                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12428            ) {
12429                match _t {
12430                    alloy_sol_types::private::AssertTypeEq::<
12431                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12432                    >(_) => {}
12433                }
12434            }
12435            #[automatically_derived]
12436            #[doc(hidden)]
12437            impl ::core::convert::From<newFinalizedState_0Call>
12438            for UnderlyingRustTuple<'_> {
12439                fn from(value: newFinalizedState_0Call) -> Self {
12440                    (value._0, value._1)
12441                }
12442            }
12443            #[automatically_derived]
12444            #[doc(hidden)]
12445            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12446            for newFinalizedState_0Call {
12447                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12448                    Self { _0: tuple.0, _1: tuple.1 }
12449                }
12450            }
12451        }
12452        {
12453            #[doc(hidden)]
12454            #[allow(dead_code)]
12455            type UnderlyingSolTuple<'a> = ();
12456            #[doc(hidden)]
12457            type UnderlyingRustTuple<'a> = ();
12458            #[cfg(test)]
12459            #[allow(dead_code, unreachable_patterns)]
12460            fn _type_assertion(
12461                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12462            ) {
12463                match _t {
12464                    alloy_sol_types::private::AssertTypeEq::<
12465                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12466                    >(_) => {}
12467                }
12468            }
12469            #[automatically_derived]
12470            #[doc(hidden)]
12471            impl ::core::convert::From<newFinalizedState_0Return>
12472            for UnderlyingRustTuple<'_> {
12473                fn from(value: newFinalizedState_0Return) -> Self {
12474                    ()
12475                }
12476            }
12477            #[automatically_derived]
12478            #[doc(hidden)]
12479            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12480            for newFinalizedState_0Return {
12481                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12482                    Self {}
12483                }
12484            }
12485        }
12486        impl newFinalizedState_0Return {
12487            fn _tokenize(
12488                &self,
12489            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12490                ()
12491            }
12492        }
12493        #[automatically_derived]
12494        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
12495            type Parameters<'a> = (
12496                LightClient::LightClientState,
12497                IPlonkVerifier::PlonkProof,
12498            );
12499            type Token<'a> = <Self::Parameters<
12500                'a,
12501            > as alloy_sol_types::SolType>::Token<'a>;
12502            type Return = newFinalizedState_0Return;
12503            type ReturnTuple<'a> = ();
12504            type ReturnToken<'a> = <Self::ReturnTuple<
12505                'a,
12506            > as alloy_sol_types::SolType>::Token<'a>;
12507            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))";
12508            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
12509            #[inline]
12510            fn new<'a>(
12511                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12512            ) -> Self {
12513                tuple.into()
12514            }
12515            #[inline]
12516            fn tokenize(&self) -> Self::Token<'_> {
12517                (
12518                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12519                        &self._0,
12520                    ),
12521                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12522                        &self._1,
12523                    ),
12524                )
12525            }
12526            #[inline]
12527            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12528                newFinalizedState_0Return::_tokenize(ret)
12529            }
12530            #[inline]
12531            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12532                <Self::ReturnTuple<
12533                    '_,
12534                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12535                    .map(Into::into)
12536            }
12537            #[inline]
12538            fn abi_decode_returns_with_config(
12539                data: &[u8],
12540                config: alloy_sol_types::abi::AbiDecoderConfig,
12541            ) -> alloy_sol_types::Result<Self::Return> {
12542                <Self::ReturnTuple<
12543                    '_,
12544                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12545                        data,
12546                        config,
12547                    )
12548                    .map(Into::into)
12549            }
12550            #[inline]
12551            fn abi_decode_returns_validate(
12552                data: &[u8],
12553            ) -> alloy_sol_types::Result<Self::Return> {
12554                Self::abi_decode_returns_with_config(
12555                    data,
12556                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12557                )
12558            }
12559        }
12560    };
12561    #[derive(serde::Serialize, serde::Deserialize)]
12562    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12563    /**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`.
12564```solidity
12565function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
12566```*/
12567    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12568    #[derive(Clone)]
12569    pub struct newFinalizedState_1Call {
12570        #[allow(missing_docs)]
12571        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12572        #[allow(missing_docs)]
12573        pub _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12574        #[allow(missing_docs)]
12575        pub _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12576    }
12577    ///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.
12578    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12579    #[derive(Clone)]
12580    pub struct newFinalizedState_1Return {}
12581    #[allow(
12582        non_camel_case_types,
12583        non_snake_case,
12584        clippy::pub_underscore_fields,
12585        clippy::style
12586    )]
12587    const _: () = {
12588        use alloy::sol_types as alloy_sol_types;
12589        {
12590            #[doc(hidden)]
12591            #[allow(dead_code)]
12592            type UnderlyingSolTuple<'a> = (
12593                LightClient::LightClientState,
12594                LightClient::StakeTableState,
12595                IPlonkVerifier::PlonkProof,
12596            );
12597            #[doc(hidden)]
12598            type UnderlyingRustTuple<'a> = (
12599                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12600                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12601                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12602            );
12603            #[cfg(test)]
12604            #[allow(dead_code, unreachable_patterns)]
12605            fn _type_assertion(
12606                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12607            ) {
12608                match _t {
12609                    alloy_sol_types::private::AssertTypeEq::<
12610                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12611                    >(_) => {}
12612                }
12613            }
12614            #[automatically_derived]
12615            #[doc(hidden)]
12616            impl ::core::convert::From<newFinalizedState_1Call>
12617            for UnderlyingRustTuple<'_> {
12618                fn from(value: newFinalizedState_1Call) -> Self {
12619                    (value._0, value._1, value._2)
12620                }
12621            }
12622            #[automatically_derived]
12623            #[doc(hidden)]
12624            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12625            for newFinalizedState_1Call {
12626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12627                    Self {
12628                        _0: tuple.0,
12629                        _1: tuple.1,
12630                        _2: tuple.2,
12631                    }
12632                }
12633            }
12634        }
12635        {
12636            #[doc(hidden)]
12637            #[allow(dead_code)]
12638            type UnderlyingSolTuple<'a> = ();
12639            #[doc(hidden)]
12640            type UnderlyingRustTuple<'a> = ();
12641            #[cfg(test)]
12642            #[allow(dead_code, unreachable_patterns)]
12643            fn _type_assertion(
12644                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12645            ) {
12646                match _t {
12647                    alloy_sol_types::private::AssertTypeEq::<
12648                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12649                    >(_) => {}
12650                }
12651            }
12652            #[automatically_derived]
12653            #[doc(hidden)]
12654            impl ::core::convert::From<newFinalizedState_1Return>
12655            for UnderlyingRustTuple<'_> {
12656                fn from(value: newFinalizedState_1Return) -> Self {
12657                    ()
12658                }
12659            }
12660            #[automatically_derived]
12661            #[doc(hidden)]
12662            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12663            for newFinalizedState_1Return {
12664                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12665                    Self {}
12666                }
12667            }
12668        }
12669        impl newFinalizedState_1Return {
12670            fn _tokenize(
12671                &self,
12672            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12673                ()
12674            }
12675        }
12676        #[automatically_derived]
12677        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
12678            type Parameters<'a> = (
12679                LightClient::LightClientState,
12680                LightClient::StakeTableState,
12681                IPlonkVerifier::PlonkProof,
12682            );
12683            type Token<'a> = <Self::Parameters<
12684                'a,
12685            > as alloy_sol_types::SolType>::Token<'a>;
12686            type Return = newFinalizedState_1Return;
12687            type ReturnTuple<'a> = ();
12688            type ReturnToken<'a> = <Self::ReturnTuple<
12689                'a,
12690            > as alloy_sol_types::SolType>::Token<'a>;
12691            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))";
12692            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
12693            #[inline]
12694            fn new<'a>(
12695                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12696            ) -> Self {
12697                tuple.into()
12698            }
12699            #[inline]
12700            fn tokenize(&self) -> Self::Token<'_> {
12701                (
12702                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12703                        &self._0,
12704                    ),
12705                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12706                        &self._1,
12707                    ),
12708                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12709                        &self._2,
12710                    ),
12711                )
12712            }
12713            #[inline]
12714            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12715                newFinalizedState_1Return::_tokenize(ret)
12716            }
12717            #[inline]
12718            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12719                <Self::ReturnTuple<
12720                    '_,
12721                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12722                    .map(Into::into)
12723            }
12724            #[inline]
12725            fn abi_decode_returns_with_config(
12726                data: &[u8],
12727                config: alloy_sol_types::abi::AbiDecoderConfig,
12728            ) -> alloy_sol_types::Result<Self::Return> {
12729                <Self::ReturnTuple<
12730                    '_,
12731                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12732                        data,
12733                        config,
12734                    )
12735                    .map(Into::into)
12736            }
12737            #[inline]
12738            fn abi_decode_returns_validate(
12739                data: &[u8],
12740            ) -> alloy_sol_types::Result<Self::Return> {
12741                Self::abi_decode_returns_with_config(
12742                    data,
12743                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12744                )
12745            }
12746        }
12747    };
12748    #[derive(serde::Serialize, serde::Deserialize)]
12749    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12750    /**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`.
12751```solidity
12752function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
12753```*/
12754    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12755    #[derive(Clone)]
12756    pub struct newFinalizedState_2Call {
12757        #[allow(missing_docs)]
12758        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12759        #[allow(missing_docs)]
12760        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12761        #[allow(missing_docs)]
12762        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
12763        #[allow(missing_docs)]
12764        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12765    }
12766    ///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.
12767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12768    #[derive(Clone)]
12769    pub struct newFinalizedState_2Return {}
12770    #[allow(
12771        non_camel_case_types,
12772        non_snake_case,
12773        clippy::pub_underscore_fields,
12774        clippy::style
12775    )]
12776    const _: () = {
12777        use alloy::sol_types as alloy_sol_types;
12778        {
12779            #[doc(hidden)]
12780            #[allow(dead_code)]
12781            type UnderlyingSolTuple<'a> = (
12782                LightClient::LightClientState,
12783                LightClient::StakeTableState,
12784                alloy::sol_types::sol_data::Uint<256>,
12785                IPlonkVerifier::PlonkProof,
12786            );
12787            #[doc(hidden)]
12788            type UnderlyingRustTuple<'a> = (
12789                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12790                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12791                alloy::sol_types::private::primitives::aliases::U256,
12792                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12793            );
12794            #[cfg(test)]
12795            #[allow(dead_code, unreachable_patterns)]
12796            fn _type_assertion(
12797                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12798            ) {
12799                match _t {
12800                    alloy_sol_types::private::AssertTypeEq::<
12801                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12802                    >(_) => {}
12803                }
12804            }
12805            #[automatically_derived]
12806            #[doc(hidden)]
12807            impl ::core::convert::From<newFinalizedState_2Call>
12808            for UnderlyingRustTuple<'_> {
12809                fn from(value: newFinalizedState_2Call) -> Self {
12810                    (
12811                        value.newState,
12812                        value.nextStakeTable,
12813                        value.newAuthRoot,
12814                        value.proof,
12815                    )
12816                }
12817            }
12818            #[automatically_derived]
12819            #[doc(hidden)]
12820            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12821            for newFinalizedState_2Call {
12822                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12823                    Self {
12824                        newState: tuple.0,
12825                        nextStakeTable: tuple.1,
12826                        newAuthRoot: tuple.2,
12827                        proof: tuple.3,
12828                    }
12829                }
12830            }
12831        }
12832        {
12833            #[doc(hidden)]
12834            #[allow(dead_code)]
12835            type UnderlyingSolTuple<'a> = ();
12836            #[doc(hidden)]
12837            type UnderlyingRustTuple<'a> = ();
12838            #[cfg(test)]
12839            #[allow(dead_code, unreachable_patterns)]
12840            fn _type_assertion(
12841                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12842            ) {
12843                match _t {
12844                    alloy_sol_types::private::AssertTypeEq::<
12845                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12846                    >(_) => {}
12847                }
12848            }
12849            #[automatically_derived]
12850            #[doc(hidden)]
12851            impl ::core::convert::From<newFinalizedState_2Return>
12852            for UnderlyingRustTuple<'_> {
12853                fn from(value: newFinalizedState_2Return) -> Self {
12854                    ()
12855                }
12856            }
12857            #[automatically_derived]
12858            #[doc(hidden)]
12859            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12860            for newFinalizedState_2Return {
12861                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12862                    Self {}
12863                }
12864            }
12865        }
12866        impl newFinalizedState_2Return {
12867            fn _tokenize(
12868                &self,
12869            ) -> <newFinalizedState_2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12870                ()
12871            }
12872        }
12873        #[automatically_derived]
12874        impl alloy_sol_types::SolCall for newFinalizedState_2Call {
12875            type Parameters<'a> = (
12876                LightClient::LightClientState,
12877                LightClient::StakeTableState,
12878                alloy::sol_types::sol_data::Uint<256>,
12879                IPlonkVerifier::PlonkProof,
12880            );
12881            type Token<'a> = <Self::Parameters<
12882                'a,
12883            > as alloy_sol_types::SolType>::Token<'a>;
12884            type Return = newFinalizedState_2Return;
12885            type ReturnTuple<'a> = ();
12886            type ReturnToken<'a> = <Self::ReturnTuple<
12887                'a,
12888            > as alloy_sol_types::SolType>::Token<'a>;
12889            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))";
12890            const SELECTOR: [u8; 4] = [170u8, 189u8, 93u8, 179u8];
12891            #[inline]
12892            fn new<'a>(
12893                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12894            ) -> Self {
12895                tuple.into()
12896            }
12897            #[inline]
12898            fn tokenize(&self) -> Self::Token<'_> {
12899                (
12900                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12901                        &self.newState,
12902                    ),
12903                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12904                        &self.nextStakeTable,
12905                    ),
12906                    <alloy::sol_types::sol_data::Uint<
12907                        256,
12908                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
12909                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12910                        &self.proof,
12911                    ),
12912                )
12913            }
12914            #[inline]
12915            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12916                newFinalizedState_2Return::_tokenize(ret)
12917            }
12918            #[inline]
12919            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12920                <Self::ReturnTuple<
12921                    '_,
12922                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12923                    .map(Into::into)
12924            }
12925            #[inline]
12926            fn abi_decode_returns_with_config(
12927                data: &[u8],
12928                config: alloy_sol_types::abi::AbiDecoderConfig,
12929            ) -> alloy_sol_types::Result<Self::Return> {
12930                <Self::ReturnTuple<
12931                    '_,
12932                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12933                        data,
12934                        config,
12935                    )
12936                    .map(Into::into)
12937            }
12938            #[inline]
12939            fn abi_decode_returns_validate(
12940                data: &[u8],
12941            ) -> alloy_sol_types::Result<Self::Return> {
12942                Self::abi_decode_returns_with_config(
12943                    data,
12944                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12945                )
12946            }
12947        }
12948    };
12949    #[derive(serde::Serialize, serde::Deserialize)]
12950    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12951    /**Function with signature `owner()` and selector `0x8da5cb5b`.
12952```solidity
12953function owner() external view returns (address);
12954```*/
12955    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12956    #[derive(Clone)]
12957    pub struct ownerCall;
12958    #[derive(serde::Serialize, serde::Deserialize)]
12959    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12960    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
12961    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12962    #[derive(Clone)]
12963    pub struct ownerReturn {
12964        #[allow(missing_docs)]
12965        pub _0: alloy::sol_types::private::Address,
12966    }
12967    #[allow(
12968        non_camel_case_types,
12969        non_snake_case,
12970        clippy::pub_underscore_fields,
12971        clippy::style
12972    )]
12973    const _: () = {
12974        use alloy::sol_types as alloy_sol_types;
12975        {
12976            #[doc(hidden)]
12977            #[allow(dead_code)]
12978            type UnderlyingSolTuple<'a> = ();
12979            #[doc(hidden)]
12980            type UnderlyingRustTuple<'a> = ();
12981            #[cfg(test)]
12982            #[allow(dead_code, unreachable_patterns)]
12983            fn _type_assertion(
12984                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12985            ) {
12986                match _t {
12987                    alloy_sol_types::private::AssertTypeEq::<
12988                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12989                    >(_) => {}
12990                }
12991            }
12992            #[automatically_derived]
12993            #[doc(hidden)]
12994            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
12995                fn from(value: ownerCall) -> Self {
12996                    ()
12997                }
12998            }
12999            #[automatically_derived]
13000            #[doc(hidden)]
13001            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
13002                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13003                    Self
13004                }
13005            }
13006        }
13007        {
13008            #[doc(hidden)]
13009            #[allow(dead_code)]
13010            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13011            #[doc(hidden)]
13012            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13013            #[cfg(test)]
13014            #[allow(dead_code, unreachable_patterns)]
13015            fn _type_assertion(
13016                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13017            ) {
13018                match _t {
13019                    alloy_sol_types::private::AssertTypeEq::<
13020                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13021                    >(_) => {}
13022                }
13023            }
13024            #[automatically_derived]
13025            #[doc(hidden)]
13026            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
13027                fn from(value: ownerReturn) -> Self {
13028                    (value._0,)
13029                }
13030            }
13031            #[automatically_derived]
13032            #[doc(hidden)]
13033            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
13034                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13035                    Self { _0: tuple.0 }
13036                }
13037            }
13038        }
13039        #[automatically_derived]
13040        impl alloy_sol_types::SolCall for ownerCall {
13041            type Parameters<'a> = ();
13042            type Token<'a> = <Self::Parameters<
13043                'a,
13044            > as alloy_sol_types::SolType>::Token<'a>;
13045            type Return = alloy::sol_types::private::Address;
13046            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
13047            type ReturnToken<'a> = <Self::ReturnTuple<
13048                'a,
13049            > as alloy_sol_types::SolType>::Token<'a>;
13050            const SIGNATURE: &'static str = "owner()";
13051            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
13052            #[inline]
13053            fn new<'a>(
13054                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13055            ) -> Self {
13056                tuple.into()
13057            }
13058            #[inline]
13059            fn tokenize(&self) -> Self::Token<'_> {
13060                ()
13061            }
13062            #[inline]
13063            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13064                (
13065                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13066                        ret,
13067                    ),
13068                )
13069            }
13070            #[inline]
13071            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13072                <Self::ReturnTuple<
13073                    '_,
13074                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13075                    .map(|r| {
13076                        let r: ownerReturn = r.into();
13077                        r._0
13078                    })
13079            }
13080            #[inline]
13081            fn abi_decode_returns_with_config(
13082                data: &[u8],
13083                config: alloy_sol_types::abi::AbiDecoderConfig,
13084            ) -> alloy_sol_types::Result<Self::Return> {
13085                <Self::ReturnTuple<
13086                    '_,
13087                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13088                        data,
13089                        config,
13090                    )
13091                    .map(|r| {
13092                        let r: ownerReturn = r.into();
13093                        r._0
13094                    })
13095            }
13096            #[inline]
13097            fn abi_decode_returns_validate(
13098                data: &[u8],
13099            ) -> alloy_sol_types::Result<Self::Return> {
13100                Self::abi_decode_returns_with_config(
13101                    data,
13102                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13103                )
13104            }
13105        }
13106    };
13107    #[derive(serde::Serialize, serde::Deserialize)]
13108    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13109    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
13110```solidity
13111function permissionedProver() external view returns (address);
13112```*/
13113    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13114    #[derive(Clone)]
13115    pub struct permissionedProverCall;
13116    #[derive(serde::Serialize, serde::Deserialize)]
13117    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13118    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
13119    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13120    #[derive(Clone)]
13121    pub struct permissionedProverReturn {
13122        #[allow(missing_docs)]
13123        pub _0: alloy::sol_types::private::Address,
13124    }
13125    #[allow(
13126        non_camel_case_types,
13127        non_snake_case,
13128        clippy::pub_underscore_fields,
13129        clippy::style
13130    )]
13131    const _: () = {
13132        use alloy::sol_types as alloy_sol_types;
13133        {
13134            #[doc(hidden)]
13135            #[allow(dead_code)]
13136            type UnderlyingSolTuple<'a> = ();
13137            #[doc(hidden)]
13138            type UnderlyingRustTuple<'a> = ();
13139            #[cfg(test)]
13140            #[allow(dead_code, unreachable_patterns)]
13141            fn _type_assertion(
13142                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13143            ) {
13144                match _t {
13145                    alloy_sol_types::private::AssertTypeEq::<
13146                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13147                    >(_) => {}
13148                }
13149            }
13150            #[automatically_derived]
13151            #[doc(hidden)]
13152            impl ::core::convert::From<permissionedProverCall>
13153            for UnderlyingRustTuple<'_> {
13154                fn from(value: permissionedProverCall) -> Self {
13155                    ()
13156                }
13157            }
13158            #[automatically_derived]
13159            #[doc(hidden)]
13160            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13161            for permissionedProverCall {
13162                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13163                    Self
13164                }
13165            }
13166        }
13167        {
13168            #[doc(hidden)]
13169            #[allow(dead_code)]
13170            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
13171            #[doc(hidden)]
13172            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
13173            #[cfg(test)]
13174            #[allow(dead_code, unreachable_patterns)]
13175            fn _type_assertion(
13176                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13177            ) {
13178                match _t {
13179                    alloy_sol_types::private::AssertTypeEq::<
13180                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13181                    >(_) => {}
13182                }
13183            }
13184            #[automatically_derived]
13185            #[doc(hidden)]
13186            impl ::core::convert::From<permissionedProverReturn>
13187            for UnderlyingRustTuple<'_> {
13188                fn from(value: permissionedProverReturn) -> Self {
13189                    (value._0,)
13190                }
13191            }
13192            #[automatically_derived]
13193            #[doc(hidden)]
13194            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13195            for permissionedProverReturn {
13196                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13197                    Self { _0: tuple.0 }
13198                }
13199            }
13200        }
13201        #[automatically_derived]
13202        impl alloy_sol_types::SolCall for permissionedProverCall {
13203            type Parameters<'a> = ();
13204            type Token<'a> = <Self::Parameters<
13205                'a,
13206            > as alloy_sol_types::SolType>::Token<'a>;
13207            type Return = alloy::sol_types::private::Address;
13208            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
13209            type ReturnToken<'a> = <Self::ReturnTuple<
13210                'a,
13211            > as alloy_sol_types::SolType>::Token<'a>;
13212            const SIGNATURE: &'static str = "permissionedProver()";
13213            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
13214            #[inline]
13215            fn new<'a>(
13216                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13217            ) -> Self {
13218                tuple.into()
13219            }
13220            #[inline]
13221            fn tokenize(&self) -> Self::Token<'_> {
13222                ()
13223            }
13224            #[inline]
13225            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13226                (
13227                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13228                        ret,
13229                    ),
13230                )
13231            }
13232            #[inline]
13233            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13234                <Self::ReturnTuple<
13235                    '_,
13236                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13237                    .map(|r| {
13238                        let r: permissionedProverReturn = r.into();
13239                        r._0
13240                    })
13241            }
13242            #[inline]
13243            fn abi_decode_returns_with_config(
13244                data: &[u8],
13245                config: alloy_sol_types::abi::AbiDecoderConfig,
13246            ) -> alloy_sol_types::Result<Self::Return> {
13247                <Self::ReturnTuple<
13248                    '_,
13249                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13250                        data,
13251                        config,
13252                    )
13253                    .map(|r| {
13254                        let r: permissionedProverReturn = r.into();
13255                        r._0
13256                    })
13257            }
13258            #[inline]
13259            fn abi_decode_returns_validate(
13260                data: &[u8],
13261            ) -> alloy_sol_types::Result<Self::Return> {
13262                Self::abi_decode_returns_with_config(
13263                    data,
13264                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13265                )
13266            }
13267        }
13268    };
13269    #[derive(serde::Serialize, serde::Deserialize)]
13270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13271    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
13272```solidity
13273function proxiableUUID() external view returns (bytes32);
13274```*/
13275    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13276    #[derive(Clone)]
13277    pub struct proxiableUUIDCall;
13278    #[derive(serde::Serialize, serde::Deserialize)]
13279    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13280    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
13281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13282    #[derive(Clone)]
13283    pub struct proxiableUUIDReturn {
13284        #[allow(missing_docs)]
13285        pub _0: alloy::sol_types::private::FixedBytes<32>,
13286    }
13287    #[allow(
13288        non_camel_case_types,
13289        non_snake_case,
13290        clippy::pub_underscore_fields,
13291        clippy::style
13292    )]
13293    const _: () = {
13294        use alloy::sol_types as alloy_sol_types;
13295        {
13296            #[doc(hidden)]
13297            #[allow(dead_code)]
13298            type UnderlyingSolTuple<'a> = ();
13299            #[doc(hidden)]
13300            type UnderlyingRustTuple<'a> = ();
13301            #[cfg(test)]
13302            #[allow(dead_code, unreachable_patterns)]
13303            fn _type_assertion(
13304                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13305            ) {
13306                match _t {
13307                    alloy_sol_types::private::AssertTypeEq::<
13308                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13309                    >(_) => {}
13310                }
13311            }
13312            #[automatically_derived]
13313            #[doc(hidden)]
13314            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
13315                fn from(value: proxiableUUIDCall) -> Self {
13316                    ()
13317                }
13318            }
13319            #[automatically_derived]
13320            #[doc(hidden)]
13321            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
13322                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13323                    Self
13324                }
13325            }
13326        }
13327        {
13328            #[doc(hidden)]
13329            #[allow(dead_code)]
13330            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13331            #[doc(hidden)]
13332            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
13333            #[cfg(test)]
13334            #[allow(dead_code, unreachable_patterns)]
13335            fn _type_assertion(
13336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13337            ) {
13338                match _t {
13339                    alloy_sol_types::private::AssertTypeEq::<
13340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13341                    >(_) => {}
13342                }
13343            }
13344            #[automatically_derived]
13345            #[doc(hidden)]
13346            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
13347                fn from(value: proxiableUUIDReturn) -> Self {
13348                    (value._0,)
13349                }
13350            }
13351            #[automatically_derived]
13352            #[doc(hidden)]
13353            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
13354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13355                    Self { _0: tuple.0 }
13356                }
13357            }
13358        }
13359        #[automatically_derived]
13360        impl alloy_sol_types::SolCall for proxiableUUIDCall {
13361            type Parameters<'a> = ();
13362            type Token<'a> = <Self::Parameters<
13363                'a,
13364            > as alloy_sol_types::SolType>::Token<'a>;
13365            type Return = alloy::sol_types::private::FixedBytes<32>;
13366            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
13367            type ReturnToken<'a> = <Self::ReturnTuple<
13368                'a,
13369            > as alloy_sol_types::SolType>::Token<'a>;
13370            const SIGNATURE: &'static str = "proxiableUUID()";
13371            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
13372            #[inline]
13373            fn new<'a>(
13374                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13375            ) -> Self {
13376                tuple.into()
13377            }
13378            #[inline]
13379            fn tokenize(&self) -> Self::Token<'_> {
13380                ()
13381            }
13382            #[inline]
13383            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13384                (
13385                    <alloy::sol_types::sol_data::FixedBytes<
13386                        32,
13387                    > as alloy_sol_types::SolType>::tokenize(ret),
13388                )
13389            }
13390            #[inline]
13391            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13392                <Self::ReturnTuple<
13393                    '_,
13394                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13395                    .map(|r| {
13396                        let r: proxiableUUIDReturn = r.into();
13397                        r._0
13398                    })
13399            }
13400            #[inline]
13401            fn abi_decode_returns_with_config(
13402                data: &[u8],
13403                config: alloy_sol_types::abi::AbiDecoderConfig,
13404            ) -> alloy_sol_types::Result<Self::Return> {
13405                <Self::ReturnTuple<
13406                    '_,
13407                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13408                        data,
13409                        config,
13410                    )
13411                    .map(|r| {
13412                        let r: proxiableUUIDReturn = r.into();
13413                        r._0
13414                    })
13415            }
13416            #[inline]
13417            fn abi_decode_returns_validate(
13418                data: &[u8],
13419            ) -> alloy_sol_types::Result<Self::Return> {
13420                Self::abi_decode_returns_with_config(
13421                    data,
13422                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13423                )
13424            }
13425        }
13426    };
13427    #[derive(serde::Serialize, serde::Deserialize)]
13428    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13429    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
13430```solidity
13431function renounceOwnership() external;
13432```*/
13433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13434    #[derive(Clone)]
13435    pub struct renounceOwnershipCall;
13436    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
13437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13438    #[derive(Clone)]
13439    pub struct renounceOwnershipReturn {}
13440    #[allow(
13441        non_camel_case_types,
13442        non_snake_case,
13443        clippy::pub_underscore_fields,
13444        clippy::style
13445    )]
13446    const _: () = {
13447        use alloy::sol_types as alloy_sol_types;
13448        {
13449            #[doc(hidden)]
13450            #[allow(dead_code)]
13451            type UnderlyingSolTuple<'a> = ();
13452            #[doc(hidden)]
13453            type UnderlyingRustTuple<'a> = ();
13454            #[cfg(test)]
13455            #[allow(dead_code, unreachable_patterns)]
13456            fn _type_assertion(
13457                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13458            ) {
13459                match _t {
13460                    alloy_sol_types::private::AssertTypeEq::<
13461                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13462                    >(_) => {}
13463                }
13464            }
13465            #[automatically_derived]
13466            #[doc(hidden)]
13467            impl ::core::convert::From<renounceOwnershipCall>
13468            for UnderlyingRustTuple<'_> {
13469                fn from(value: renounceOwnershipCall) -> Self {
13470                    ()
13471                }
13472            }
13473            #[automatically_derived]
13474            #[doc(hidden)]
13475            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13476            for renounceOwnershipCall {
13477                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13478                    Self
13479                }
13480            }
13481        }
13482        {
13483            #[doc(hidden)]
13484            #[allow(dead_code)]
13485            type UnderlyingSolTuple<'a> = ();
13486            #[doc(hidden)]
13487            type UnderlyingRustTuple<'a> = ();
13488            #[cfg(test)]
13489            #[allow(dead_code, unreachable_patterns)]
13490            fn _type_assertion(
13491                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13492            ) {
13493                match _t {
13494                    alloy_sol_types::private::AssertTypeEq::<
13495                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13496                    >(_) => {}
13497                }
13498            }
13499            #[automatically_derived]
13500            #[doc(hidden)]
13501            impl ::core::convert::From<renounceOwnershipReturn>
13502            for UnderlyingRustTuple<'_> {
13503                fn from(value: renounceOwnershipReturn) -> Self {
13504                    ()
13505                }
13506            }
13507            #[automatically_derived]
13508            #[doc(hidden)]
13509            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13510            for renounceOwnershipReturn {
13511                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13512                    Self {}
13513                }
13514            }
13515        }
13516        impl renounceOwnershipReturn {
13517            fn _tokenize(
13518                &self,
13519            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13520                ()
13521            }
13522        }
13523        #[automatically_derived]
13524        impl alloy_sol_types::SolCall for renounceOwnershipCall {
13525            type Parameters<'a> = ();
13526            type Token<'a> = <Self::Parameters<
13527                'a,
13528            > as alloy_sol_types::SolType>::Token<'a>;
13529            type Return = renounceOwnershipReturn;
13530            type ReturnTuple<'a> = ();
13531            type ReturnToken<'a> = <Self::ReturnTuple<
13532                'a,
13533            > as alloy_sol_types::SolType>::Token<'a>;
13534            const SIGNATURE: &'static str = "renounceOwnership()";
13535            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
13536            #[inline]
13537            fn new<'a>(
13538                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13539            ) -> Self {
13540                tuple.into()
13541            }
13542            #[inline]
13543            fn tokenize(&self) -> Self::Token<'_> {
13544                ()
13545            }
13546            #[inline]
13547            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13548                renounceOwnershipReturn::_tokenize(ret)
13549            }
13550            #[inline]
13551            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13552                <Self::ReturnTuple<
13553                    '_,
13554                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13555                    .map(Into::into)
13556            }
13557            #[inline]
13558            fn abi_decode_returns_with_config(
13559                data: &[u8],
13560                config: alloy_sol_types::abi::AbiDecoderConfig,
13561            ) -> alloy_sol_types::Result<Self::Return> {
13562                <Self::ReturnTuple<
13563                    '_,
13564                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13565                        data,
13566                        config,
13567                    )
13568                    .map(Into::into)
13569            }
13570            #[inline]
13571            fn abi_decode_returns_validate(
13572                data: &[u8],
13573            ) -> alloy_sol_types::Result<Self::Return> {
13574                Self::abi_decode_returns_with_config(
13575                    data,
13576                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13577                )
13578            }
13579        }
13580    };
13581    #[derive(serde::Serialize, serde::Deserialize)]
13582    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13583    /**Function with signature `setAuthRoot(uint256)` and selector `0x1af08034`.
13584```solidity
13585function setAuthRoot(uint256 newAuthRoot) external;
13586```*/
13587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13588    #[derive(Clone)]
13589    pub struct setAuthRootCall {
13590        #[allow(missing_docs)]
13591        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
13592    }
13593    ///Container type for the return parameters of the [`setAuthRoot(uint256)`](setAuthRootCall) function.
13594    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13595    #[derive(Clone)]
13596    pub struct setAuthRootReturn {}
13597    #[allow(
13598        non_camel_case_types,
13599        non_snake_case,
13600        clippy::pub_underscore_fields,
13601        clippy::style
13602    )]
13603    const _: () = {
13604        use alloy::sol_types as alloy_sol_types;
13605        {
13606            #[doc(hidden)]
13607            #[allow(dead_code)]
13608            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13609            #[doc(hidden)]
13610            type UnderlyingRustTuple<'a> = (
13611                alloy::sol_types::private::primitives::aliases::U256,
13612            );
13613            #[cfg(test)]
13614            #[allow(dead_code, unreachable_patterns)]
13615            fn _type_assertion(
13616                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13617            ) {
13618                match _t {
13619                    alloy_sol_types::private::AssertTypeEq::<
13620                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13621                    >(_) => {}
13622                }
13623            }
13624            #[automatically_derived]
13625            #[doc(hidden)]
13626            impl ::core::convert::From<setAuthRootCall> for UnderlyingRustTuple<'_> {
13627                fn from(value: setAuthRootCall) -> Self {
13628                    (value.newAuthRoot,)
13629                }
13630            }
13631            #[automatically_derived]
13632            #[doc(hidden)]
13633            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAuthRootCall {
13634                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13635                    Self { newAuthRoot: tuple.0 }
13636                }
13637            }
13638        }
13639        {
13640            #[doc(hidden)]
13641            #[allow(dead_code)]
13642            type UnderlyingSolTuple<'a> = ();
13643            #[doc(hidden)]
13644            type UnderlyingRustTuple<'a> = ();
13645            #[cfg(test)]
13646            #[allow(dead_code, unreachable_patterns)]
13647            fn _type_assertion(
13648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13649            ) {
13650                match _t {
13651                    alloy_sol_types::private::AssertTypeEq::<
13652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13653                    >(_) => {}
13654                }
13655            }
13656            #[automatically_derived]
13657            #[doc(hidden)]
13658            impl ::core::convert::From<setAuthRootReturn> for UnderlyingRustTuple<'_> {
13659                fn from(value: setAuthRootReturn) -> Self {
13660                    ()
13661                }
13662            }
13663            #[automatically_derived]
13664            #[doc(hidden)]
13665            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setAuthRootReturn {
13666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13667                    Self {}
13668                }
13669            }
13670        }
13671        impl setAuthRootReturn {
13672            fn _tokenize(
13673                &self,
13674            ) -> <setAuthRootCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13675                ()
13676            }
13677        }
13678        #[automatically_derived]
13679        impl alloy_sol_types::SolCall for setAuthRootCall {
13680            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13681            type Token<'a> = <Self::Parameters<
13682                'a,
13683            > as alloy_sol_types::SolType>::Token<'a>;
13684            type Return = setAuthRootReturn;
13685            type ReturnTuple<'a> = ();
13686            type ReturnToken<'a> = <Self::ReturnTuple<
13687                'a,
13688            > as alloy_sol_types::SolType>::Token<'a>;
13689            const SIGNATURE: &'static str = "setAuthRoot(uint256)";
13690            const SELECTOR: [u8; 4] = [26u8, 240u8, 128u8, 52u8];
13691            #[inline]
13692            fn new<'a>(
13693                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13694            ) -> Self {
13695                tuple.into()
13696            }
13697            #[inline]
13698            fn tokenize(&self) -> Self::Token<'_> {
13699                (
13700                    <alloy::sol_types::sol_data::Uint<
13701                        256,
13702                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
13703                )
13704            }
13705            #[inline]
13706            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13707                setAuthRootReturn::_tokenize(ret)
13708            }
13709            #[inline]
13710            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13711                <Self::ReturnTuple<
13712                    '_,
13713                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13714                    .map(Into::into)
13715            }
13716            #[inline]
13717            fn abi_decode_returns_with_config(
13718                data: &[u8],
13719                config: alloy_sol_types::abi::AbiDecoderConfig,
13720            ) -> alloy_sol_types::Result<Self::Return> {
13721                <Self::ReturnTuple<
13722                    '_,
13723                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13724                        data,
13725                        config,
13726                    )
13727                    .map(Into::into)
13728            }
13729            #[inline]
13730            fn abi_decode_returns_validate(
13731                data: &[u8],
13732            ) -> alloy_sol_types::Result<Self::Return> {
13733                Self::abi_decode_returns_with_config(
13734                    data,
13735                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13736                )
13737            }
13738        }
13739    };
13740    #[derive(serde::Serialize, serde::Deserialize)]
13741    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13742    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
13743```solidity
13744function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
13745```*/
13746    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13747    #[derive(Clone)]
13748    pub struct setBlocksPerEpochCall {
13749        #[allow(missing_docs)]
13750        pub newBlocksPerEpoch: u64,
13751    }
13752    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
13753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13754    #[derive(Clone)]
13755    pub struct setBlocksPerEpochReturn {}
13756    #[allow(
13757        non_camel_case_types,
13758        non_snake_case,
13759        clippy::pub_underscore_fields,
13760        clippy::style
13761    )]
13762    const _: () = {
13763        use alloy::sol_types as alloy_sol_types;
13764        {
13765            #[doc(hidden)]
13766            #[allow(dead_code)]
13767            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13768            #[doc(hidden)]
13769            type UnderlyingRustTuple<'a> = (u64,);
13770            #[cfg(test)]
13771            #[allow(dead_code, unreachable_patterns)]
13772            fn _type_assertion(
13773                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13774            ) {
13775                match _t {
13776                    alloy_sol_types::private::AssertTypeEq::<
13777                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13778                    >(_) => {}
13779                }
13780            }
13781            #[automatically_derived]
13782            #[doc(hidden)]
13783            impl ::core::convert::From<setBlocksPerEpochCall>
13784            for UnderlyingRustTuple<'_> {
13785                fn from(value: setBlocksPerEpochCall) -> Self {
13786                    (value.newBlocksPerEpoch,)
13787                }
13788            }
13789            #[automatically_derived]
13790            #[doc(hidden)]
13791            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13792            for setBlocksPerEpochCall {
13793                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13794                    Self { newBlocksPerEpoch: tuple.0 }
13795                }
13796            }
13797        }
13798        {
13799            #[doc(hidden)]
13800            #[allow(dead_code)]
13801            type UnderlyingSolTuple<'a> = ();
13802            #[doc(hidden)]
13803            type UnderlyingRustTuple<'a> = ();
13804            #[cfg(test)]
13805            #[allow(dead_code, unreachable_patterns)]
13806            fn _type_assertion(
13807                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13808            ) {
13809                match _t {
13810                    alloy_sol_types::private::AssertTypeEq::<
13811                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13812                    >(_) => {}
13813                }
13814            }
13815            #[automatically_derived]
13816            #[doc(hidden)]
13817            impl ::core::convert::From<setBlocksPerEpochReturn>
13818            for UnderlyingRustTuple<'_> {
13819                fn from(value: setBlocksPerEpochReturn) -> Self {
13820                    ()
13821                }
13822            }
13823            #[automatically_derived]
13824            #[doc(hidden)]
13825            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13826            for setBlocksPerEpochReturn {
13827                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13828                    Self {}
13829                }
13830            }
13831        }
13832        impl setBlocksPerEpochReturn {
13833            fn _tokenize(
13834                &self,
13835            ) -> <setBlocksPerEpochCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13836                ()
13837            }
13838        }
13839        #[automatically_derived]
13840        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
13841            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13842            type Token<'a> = <Self::Parameters<
13843                'a,
13844            > as alloy_sol_types::SolType>::Token<'a>;
13845            type Return = setBlocksPerEpochReturn;
13846            type ReturnTuple<'a> = ();
13847            type ReturnToken<'a> = <Self::ReturnTuple<
13848                'a,
13849            > as alloy_sol_types::SolType>::Token<'a>;
13850            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
13851            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
13852            #[inline]
13853            fn new<'a>(
13854                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13855            ) -> Self {
13856                tuple.into()
13857            }
13858            #[inline]
13859            fn tokenize(&self) -> Self::Token<'_> {
13860                (
13861                    <alloy::sol_types::sol_data::Uint<
13862                        64,
13863                    > as alloy_sol_types::SolType>::tokenize(&self.newBlocksPerEpoch),
13864                )
13865            }
13866            #[inline]
13867            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13868                setBlocksPerEpochReturn::_tokenize(ret)
13869            }
13870            #[inline]
13871            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13872                <Self::ReturnTuple<
13873                    '_,
13874                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13875                    .map(Into::into)
13876            }
13877            #[inline]
13878            fn abi_decode_returns_with_config(
13879                data: &[u8],
13880                config: alloy_sol_types::abi::AbiDecoderConfig,
13881            ) -> alloy_sol_types::Result<Self::Return> {
13882                <Self::ReturnTuple<
13883                    '_,
13884                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13885                        data,
13886                        config,
13887                    )
13888                    .map(Into::into)
13889            }
13890            #[inline]
13891            fn abi_decode_returns_validate(
13892                data: &[u8],
13893            ) -> alloy_sol_types::Result<Self::Return> {
13894                Self::abi_decode_returns_with_config(
13895                    data,
13896                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13897                )
13898            }
13899        }
13900    };
13901    #[derive(serde::Serialize, serde::Deserialize)]
13902    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13903    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
13904```solidity
13905function setFinalizedState(LightClient.LightClientState memory state) external;
13906```*/
13907    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13908    #[derive(Clone)]
13909    pub struct setFinalizedStateCall {
13910        #[allow(missing_docs)]
13911        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13912    }
13913    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
13914    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13915    #[derive(Clone)]
13916    pub struct setFinalizedStateReturn {}
13917    #[allow(
13918        non_camel_case_types,
13919        non_snake_case,
13920        clippy::pub_underscore_fields,
13921        clippy::style
13922    )]
13923    const _: () = {
13924        use alloy::sol_types as alloy_sol_types;
13925        {
13926            #[doc(hidden)]
13927            #[allow(dead_code)]
13928            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
13929            #[doc(hidden)]
13930            type UnderlyingRustTuple<'a> = (
13931                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13932            );
13933            #[cfg(test)]
13934            #[allow(dead_code, unreachable_patterns)]
13935            fn _type_assertion(
13936                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13937            ) {
13938                match _t {
13939                    alloy_sol_types::private::AssertTypeEq::<
13940                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13941                    >(_) => {}
13942                }
13943            }
13944            #[automatically_derived]
13945            #[doc(hidden)]
13946            impl ::core::convert::From<setFinalizedStateCall>
13947            for UnderlyingRustTuple<'_> {
13948                fn from(value: setFinalizedStateCall) -> Self {
13949                    (value.state,)
13950                }
13951            }
13952            #[automatically_derived]
13953            #[doc(hidden)]
13954            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13955            for setFinalizedStateCall {
13956                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13957                    Self { state: tuple.0 }
13958                }
13959            }
13960        }
13961        {
13962            #[doc(hidden)]
13963            #[allow(dead_code)]
13964            type UnderlyingSolTuple<'a> = ();
13965            #[doc(hidden)]
13966            type UnderlyingRustTuple<'a> = ();
13967            #[cfg(test)]
13968            #[allow(dead_code, unreachable_patterns)]
13969            fn _type_assertion(
13970                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13971            ) {
13972                match _t {
13973                    alloy_sol_types::private::AssertTypeEq::<
13974                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13975                    >(_) => {}
13976                }
13977            }
13978            #[automatically_derived]
13979            #[doc(hidden)]
13980            impl ::core::convert::From<setFinalizedStateReturn>
13981            for UnderlyingRustTuple<'_> {
13982                fn from(value: setFinalizedStateReturn) -> Self {
13983                    ()
13984                }
13985            }
13986            #[automatically_derived]
13987            #[doc(hidden)]
13988            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13989            for setFinalizedStateReturn {
13990                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13991                    Self {}
13992                }
13993            }
13994        }
13995        impl setFinalizedStateReturn {
13996            fn _tokenize(
13997                &self,
13998            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13999                ()
14000            }
14001        }
14002        #[automatically_derived]
14003        impl alloy_sol_types::SolCall for setFinalizedStateCall {
14004            type Parameters<'a> = (LightClient::LightClientState,);
14005            type Token<'a> = <Self::Parameters<
14006                'a,
14007            > as alloy_sol_types::SolType>::Token<'a>;
14008            type Return = setFinalizedStateReturn;
14009            type ReturnTuple<'a> = ();
14010            type ReturnToken<'a> = <Self::ReturnTuple<
14011                'a,
14012            > as alloy_sol_types::SolType>::Token<'a>;
14013            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
14014            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
14015            #[inline]
14016            fn new<'a>(
14017                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14018            ) -> Self {
14019                tuple.into()
14020            }
14021            #[inline]
14022            fn tokenize(&self) -> Self::Token<'_> {
14023                (
14024                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
14025                        &self.state,
14026                    ),
14027                )
14028            }
14029            #[inline]
14030            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14031                setFinalizedStateReturn::_tokenize(ret)
14032            }
14033            #[inline]
14034            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14035                <Self::ReturnTuple<
14036                    '_,
14037                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14038                    .map(Into::into)
14039            }
14040            #[inline]
14041            fn abi_decode_returns_with_config(
14042                data: &[u8],
14043                config: alloy_sol_types::abi::AbiDecoderConfig,
14044            ) -> alloy_sol_types::Result<Self::Return> {
14045                <Self::ReturnTuple<
14046                    '_,
14047                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14048                        data,
14049                        config,
14050                    )
14051                    .map(Into::into)
14052            }
14053            #[inline]
14054            fn abi_decode_returns_validate(
14055                data: &[u8],
14056            ) -> alloy_sol_types::Result<Self::Return> {
14057                Self::abi_decode_returns_with_config(
14058                    data,
14059                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14060                )
14061            }
14062        }
14063    };
14064    #[derive(serde::Serialize, serde::Deserialize)]
14065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14066    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
14067```solidity
14068function setHotShotDownSince(uint256 l1Height) external;
14069```*/
14070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14071    #[derive(Clone)]
14072    pub struct setHotShotDownSinceCall {
14073        #[allow(missing_docs)]
14074        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
14075    }
14076    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
14077    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14078    #[derive(Clone)]
14079    pub struct setHotShotDownSinceReturn {}
14080    #[allow(
14081        non_camel_case_types,
14082        non_snake_case,
14083        clippy::pub_underscore_fields,
14084        clippy::style
14085    )]
14086    const _: () = {
14087        use alloy::sol_types as alloy_sol_types;
14088        {
14089            #[doc(hidden)]
14090            #[allow(dead_code)]
14091            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14092            #[doc(hidden)]
14093            type UnderlyingRustTuple<'a> = (
14094                alloy::sol_types::private::primitives::aliases::U256,
14095            );
14096            #[cfg(test)]
14097            #[allow(dead_code, unreachable_patterns)]
14098            fn _type_assertion(
14099                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14100            ) {
14101                match _t {
14102                    alloy_sol_types::private::AssertTypeEq::<
14103                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14104                    >(_) => {}
14105                }
14106            }
14107            #[automatically_derived]
14108            #[doc(hidden)]
14109            impl ::core::convert::From<setHotShotDownSinceCall>
14110            for UnderlyingRustTuple<'_> {
14111                fn from(value: setHotShotDownSinceCall) -> Self {
14112                    (value.l1Height,)
14113                }
14114            }
14115            #[automatically_derived]
14116            #[doc(hidden)]
14117            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14118            for setHotShotDownSinceCall {
14119                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14120                    Self { l1Height: tuple.0 }
14121                }
14122            }
14123        }
14124        {
14125            #[doc(hidden)]
14126            #[allow(dead_code)]
14127            type UnderlyingSolTuple<'a> = ();
14128            #[doc(hidden)]
14129            type UnderlyingRustTuple<'a> = ();
14130            #[cfg(test)]
14131            #[allow(dead_code, unreachable_patterns)]
14132            fn _type_assertion(
14133                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14134            ) {
14135                match _t {
14136                    alloy_sol_types::private::AssertTypeEq::<
14137                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14138                    >(_) => {}
14139                }
14140            }
14141            #[automatically_derived]
14142            #[doc(hidden)]
14143            impl ::core::convert::From<setHotShotDownSinceReturn>
14144            for UnderlyingRustTuple<'_> {
14145                fn from(value: setHotShotDownSinceReturn) -> Self {
14146                    ()
14147                }
14148            }
14149            #[automatically_derived]
14150            #[doc(hidden)]
14151            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14152            for setHotShotDownSinceReturn {
14153                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14154                    Self {}
14155                }
14156            }
14157        }
14158        impl setHotShotDownSinceReturn {
14159            fn _tokenize(
14160                &self,
14161            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14162                ()
14163            }
14164        }
14165        #[automatically_derived]
14166        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
14167            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
14168            type Token<'a> = <Self::Parameters<
14169                'a,
14170            > as alloy_sol_types::SolType>::Token<'a>;
14171            type Return = setHotShotDownSinceReturn;
14172            type ReturnTuple<'a> = ();
14173            type ReturnToken<'a> = <Self::ReturnTuple<
14174                'a,
14175            > as alloy_sol_types::SolType>::Token<'a>;
14176            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
14177            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
14178            #[inline]
14179            fn new<'a>(
14180                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14181            ) -> Self {
14182                tuple.into()
14183            }
14184            #[inline]
14185            fn tokenize(&self) -> Self::Token<'_> {
14186                (
14187                    <alloy::sol_types::sol_data::Uint<
14188                        256,
14189                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
14190                )
14191            }
14192            #[inline]
14193            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14194                setHotShotDownSinceReturn::_tokenize(ret)
14195            }
14196            #[inline]
14197            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14198                <Self::ReturnTuple<
14199                    '_,
14200                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14201                    .map(Into::into)
14202            }
14203            #[inline]
14204            fn abi_decode_returns_with_config(
14205                data: &[u8],
14206                config: alloy_sol_types::abi::AbiDecoderConfig,
14207            ) -> alloy_sol_types::Result<Self::Return> {
14208                <Self::ReturnTuple<
14209                    '_,
14210                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14211                        data,
14212                        config,
14213                    )
14214                    .map(Into::into)
14215            }
14216            #[inline]
14217            fn abi_decode_returns_validate(
14218                data: &[u8],
14219            ) -> alloy_sol_types::Result<Self::Return> {
14220                Self::abi_decode_returns_with_config(
14221                    data,
14222                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14223                )
14224            }
14225        }
14226    };
14227    #[derive(serde::Serialize, serde::Deserialize)]
14228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14229    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
14230```solidity
14231function setHotShotUp() external;
14232```*/
14233    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14234    #[derive(Clone)]
14235    pub struct setHotShotUpCall;
14236    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
14237    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14238    #[derive(Clone)]
14239    pub struct setHotShotUpReturn {}
14240    #[allow(
14241        non_camel_case_types,
14242        non_snake_case,
14243        clippy::pub_underscore_fields,
14244        clippy::style
14245    )]
14246    const _: () = {
14247        use alloy::sol_types as alloy_sol_types;
14248        {
14249            #[doc(hidden)]
14250            #[allow(dead_code)]
14251            type UnderlyingSolTuple<'a> = ();
14252            #[doc(hidden)]
14253            type UnderlyingRustTuple<'a> = ();
14254            #[cfg(test)]
14255            #[allow(dead_code, unreachable_patterns)]
14256            fn _type_assertion(
14257                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14258            ) {
14259                match _t {
14260                    alloy_sol_types::private::AssertTypeEq::<
14261                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14262                    >(_) => {}
14263                }
14264            }
14265            #[automatically_derived]
14266            #[doc(hidden)]
14267            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
14268                fn from(value: setHotShotUpCall) -> Self {
14269                    ()
14270                }
14271            }
14272            #[automatically_derived]
14273            #[doc(hidden)]
14274            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
14275                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14276                    Self
14277                }
14278            }
14279        }
14280        {
14281            #[doc(hidden)]
14282            #[allow(dead_code)]
14283            type UnderlyingSolTuple<'a> = ();
14284            #[doc(hidden)]
14285            type UnderlyingRustTuple<'a> = ();
14286            #[cfg(test)]
14287            #[allow(dead_code, unreachable_patterns)]
14288            fn _type_assertion(
14289                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14290            ) {
14291                match _t {
14292                    alloy_sol_types::private::AssertTypeEq::<
14293                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14294                    >(_) => {}
14295                }
14296            }
14297            #[automatically_derived]
14298            #[doc(hidden)]
14299            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
14300                fn from(value: setHotShotUpReturn) -> Self {
14301                    ()
14302                }
14303            }
14304            #[automatically_derived]
14305            #[doc(hidden)]
14306            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
14307                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14308                    Self {}
14309                }
14310            }
14311        }
14312        impl setHotShotUpReturn {
14313            fn _tokenize(
14314                &self,
14315            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14316                ()
14317            }
14318        }
14319        #[automatically_derived]
14320        impl alloy_sol_types::SolCall for setHotShotUpCall {
14321            type Parameters<'a> = ();
14322            type Token<'a> = <Self::Parameters<
14323                'a,
14324            > as alloy_sol_types::SolType>::Token<'a>;
14325            type Return = setHotShotUpReturn;
14326            type ReturnTuple<'a> = ();
14327            type ReturnToken<'a> = <Self::ReturnTuple<
14328                'a,
14329            > as alloy_sol_types::SolType>::Token<'a>;
14330            const SIGNATURE: &'static str = "setHotShotUp()";
14331            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
14332            #[inline]
14333            fn new<'a>(
14334                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14335            ) -> Self {
14336                tuple.into()
14337            }
14338            #[inline]
14339            fn tokenize(&self) -> Self::Token<'_> {
14340                ()
14341            }
14342            #[inline]
14343            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14344                setHotShotUpReturn::_tokenize(ret)
14345            }
14346            #[inline]
14347            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14348                <Self::ReturnTuple<
14349                    '_,
14350                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14351                    .map(Into::into)
14352            }
14353            #[inline]
14354            fn abi_decode_returns_with_config(
14355                data: &[u8],
14356                config: alloy_sol_types::abi::AbiDecoderConfig,
14357            ) -> alloy_sol_types::Result<Self::Return> {
14358                <Self::ReturnTuple<
14359                    '_,
14360                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14361                        data,
14362                        config,
14363                    )
14364                    .map(Into::into)
14365            }
14366            #[inline]
14367            fn abi_decode_returns_validate(
14368                data: &[u8],
14369            ) -> alloy_sol_types::Result<Self::Return> {
14370                Self::abi_decode_returns_with_config(
14371                    data,
14372                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14373                )
14374            }
14375        }
14376    };
14377    #[derive(serde::Serialize, serde::Deserialize)]
14378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14379    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
14380```solidity
14381function setPermissionedProver(address prover) external;
14382```*/
14383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14384    #[derive(Clone)]
14385    pub struct setPermissionedProverCall {
14386        #[allow(missing_docs)]
14387        pub prover: alloy::sol_types::private::Address,
14388    }
14389    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
14390    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14391    #[derive(Clone)]
14392    pub struct setPermissionedProverReturn {}
14393    #[allow(
14394        non_camel_case_types,
14395        non_snake_case,
14396        clippy::pub_underscore_fields,
14397        clippy::style
14398    )]
14399    const _: () = {
14400        use alloy::sol_types as alloy_sol_types;
14401        {
14402            #[doc(hidden)]
14403            #[allow(dead_code)]
14404            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14405            #[doc(hidden)]
14406            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14407            #[cfg(test)]
14408            #[allow(dead_code, unreachable_patterns)]
14409            fn _type_assertion(
14410                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14411            ) {
14412                match _t {
14413                    alloy_sol_types::private::AssertTypeEq::<
14414                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14415                    >(_) => {}
14416                }
14417            }
14418            #[automatically_derived]
14419            #[doc(hidden)]
14420            impl ::core::convert::From<setPermissionedProverCall>
14421            for UnderlyingRustTuple<'_> {
14422                fn from(value: setPermissionedProverCall) -> Self {
14423                    (value.prover,)
14424                }
14425            }
14426            #[automatically_derived]
14427            #[doc(hidden)]
14428            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14429            for setPermissionedProverCall {
14430                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14431                    Self { prover: tuple.0 }
14432                }
14433            }
14434        }
14435        {
14436            #[doc(hidden)]
14437            #[allow(dead_code)]
14438            type UnderlyingSolTuple<'a> = ();
14439            #[doc(hidden)]
14440            type UnderlyingRustTuple<'a> = ();
14441            #[cfg(test)]
14442            #[allow(dead_code, unreachable_patterns)]
14443            fn _type_assertion(
14444                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14445            ) {
14446                match _t {
14447                    alloy_sol_types::private::AssertTypeEq::<
14448                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14449                    >(_) => {}
14450                }
14451            }
14452            #[automatically_derived]
14453            #[doc(hidden)]
14454            impl ::core::convert::From<setPermissionedProverReturn>
14455            for UnderlyingRustTuple<'_> {
14456                fn from(value: setPermissionedProverReturn) -> Self {
14457                    ()
14458                }
14459            }
14460            #[automatically_derived]
14461            #[doc(hidden)]
14462            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14463            for setPermissionedProverReturn {
14464                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14465                    Self {}
14466                }
14467            }
14468        }
14469        impl setPermissionedProverReturn {
14470            fn _tokenize(
14471                &self,
14472            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
14473                '_,
14474            > {
14475                ()
14476            }
14477        }
14478        #[automatically_derived]
14479        impl alloy_sol_types::SolCall for setPermissionedProverCall {
14480            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14481            type Token<'a> = <Self::Parameters<
14482                'a,
14483            > as alloy_sol_types::SolType>::Token<'a>;
14484            type Return = setPermissionedProverReturn;
14485            type ReturnTuple<'a> = ();
14486            type ReturnToken<'a> = <Self::ReturnTuple<
14487                'a,
14488            > as alloy_sol_types::SolType>::Token<'a>;
14489            const SIGNATURE: &'static str = "setPermissionedProver(address)";
14490            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
14491            #[inline]
14492            fn new<'a>(
14493                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14494            ) -> Self {
14495                tuple.into()
14496            }
14497            #[inline]
14498            fn tokenize(&self) -> Self::Token<'_> {
14499                (
14500                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14501                        &self.prover,
14502                    ),
14503                )
14504            }
14505            #[inline]
14506            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14507                setPermissionedProverReturn::_tokenize(ret)
14508            }
14509            #[inline]
14510            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14511                <Self::ReturnTuple<
14512                    '_,
14513                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14514                    .map(Into::into)
14515            }
14516            #[inline]
14517            fn abi_decode_returns_with_config(
14518                data: &[u8],
14519                config: alloy_sol_types::abi::AbiDecoderConfig,
14520            ) -> alloy_sol_types::Result<Self::Return> {
14521                <Self::ReturnTuple<
14522                    '_,
14523                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14524                        data,
14525                        config,
14526                    )
14527                    .map(Into::into)
14528            }
14529            #[inline]
14530            fn abi_decode_returns_validate(
14531                data: &[u8],
14532            ) -> alloy_sol_types::Result<Self::Return> {
14533                Self::abi_decode_returns_with_config(
14534                    data,
14535                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14536                )
14537            }
14538        }
14539    };
14540    #[derive(serde::Serialize, serde::Deserialize)]
14541    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14542    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
14543```solidity
14544function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
14545```*/
14546    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14547    #[derive(Clone)]
14548    pub struct setStateHistoryCall {
14549        #[allow(missing_docs)]
14550        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
14551            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
14552        >,
14553    }
14554    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
14555    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14556    #[derive(Clone)]
14557    pub struct setStateHistoryReturn {}
14558    #[allow(
14559        non_camel_case_types,
14560        non_snake_case,
14561        clippy::pub_underscore_fields,
14562        clippy::style
14563    )]
14564    const _: () = {
14565        use alloy::sol_types as alloy_sol_types;
14566        {
14567            #[doc(hidden)]
14568            #[allow(dead_code)]
14569            type UnderlyingSolTuple<'a> = (
14570                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
14571            );
14572            #[doc(hidden)]
14573            type UnderlyingRustTuple<'a> = (
14574                alloy::sol_types::private::Vec<
14575                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
14576                >,
14577            );
14578            #[cfg(test)]
14579            #[allow(dead_code, unreachable_patterns)]
14580            fn _type_assertion(
14581                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14582            ) {
14583                match _t {
14584                    alloy_sol_types::private::AssertTypeEq::<
14585                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14586                    >(_) => {}
14587                }
14588            }
14589            #[automatically_derived]
14590            #[doc(hidden)]
14591            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
14592                fn from(value: setStateHistoryCall) -> Self {
14593                    (value._stateHistoryCommitments,)
14594                }
14595            }
14596            #[automatically_derived]
14597            #[doc(hidden)]
14598            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
14599                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14600                    Self {
14601                        _stateHistoryCommitments: tuple.0,
14602                    }
14603                }
14604            }
14605        }
14606        {
14607            #[doc(hidden)]
14608            #[allow(dead_code)]
14609            type UnderlyingSolTuple<'a> = ();
14610            #[doc(hidden)]
14611            type UnderlyingRustTuple<'a> = ();
14612            #[cfg(test)]
14613            #[allow(dead_code, unreachable_patterns)]
14614            fn _type_assertion(
14615                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14616            ) {
14617                match _t {
14618                    alloy_sol_types::private::AssertTypeEq::<
14619                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14620                    >(_) => {}
14621                }
14622            }
14623            #[automatically_derived]
14624            #[doc(hidden)]
14625            impl ::core::convert::From<setStateHistoryReturn>
14626            for UnderlyingRustTuple<'_> {
14627                fn from(value: setStateHistoryReturn) -> Self {
14628                    ()
14629                }
14630            }
14631            #[automatically_derived]
14632            #[doc(hidden)]
14633            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14634            for setStateHistoryReturn {
14635                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14636                    Self {}
14637                }
14638            }
14639        }
14640        impl setStateHistoryReturn {
14641            fn _tokenize(
14642                &self,
14643            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14644                ()
14645            }
14646        }
14647        #[automatically_derived]
14648        impl alloy_sol_types::SolCall for setStateHistoryCall {
14649            type Parameters<'a> = (
14650                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
14651            );
14652            type Token<'a> = <Self::Parameters<
14653                'a,
14654            > as alloy_sol_types::SolType>::Token<'a>;
14655            type Return = setStateHistoryReturn;
14656            type ReturnTuple<'a> = ();
14657            type ReturnToken<'a> = <Self::ReturnTuple<
14658                'a,
14659            > as alloy_sol_types::SolType>::Token<'a>;
14660            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
14661            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
14662            #[inline]
14663            fn new<'a>(
14664                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14665            ) -> Self {
14666                tuple.into()
14667            }
14668            #[inline]
14669            fn tokenize(&self) -> Self::Token<'_> {
14670                (
14671                    <alloy::sol_types::sol_data::Array<
14672                        LightClient::StateHistoryCommitment,
14673                    > as alloy_sol_types::SolType>::tokenize(
14674                        &self._stateHistoryCommitments,
14675                    ),
14676                )
14677            }
14678            #[inline]
14679            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14680                setStateHistoryReturn::_tokenize(ret)
14681            }
14682            #[inline]
14683            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14684                <Self::ReturnTuple<
14685                    '_,
14686                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14687                    .map(Into::into)
14688            }
14689            #[inline]
14690            fn abi_decode_returns_with_config(
14691                data: &[u8],
14692                config: alloy_sol_types::abi::AbiDecoderConfig,
14693            ) -> alloy_sol_types::Result<Self::Return> {
14694                <Self::ReturnTuple<
14695                    '_,
14696                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14697                        data,
14698                        config,
14699                    )
14700                    .map(Into::into)
14701            }
14702            #[inline]
14703            fn abi_decode_returns_validate(
14704                data: &[u8],
14705            ) -> alloy_sol_types::Result<Self::Return> {
14706                Self::abi_decode_returns_with_config(
14707                    data,
14708                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14709                )
14710            }
14711        }
14712    };
14713    #[derive(serde::Serialize, serde::Deserialize)]
14714    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14715    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
14716```solidity
14717function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
14718```*/
14719    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14720    #[derive(Clone)]
14721    pub struct setStateHistoryRetentionPeriodCall {
14722        #[allow(missing_docs)]
14723        pub historySeconds: u32,
14724    }
14725    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
14726    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14727    #[derive(Clone)]
14728    pub struct setStateHistoryRetentionPeriodReturn {}
14729    #[allow(
14730        non_camel_case_types,
14731        non_snake_case,
14732        clippy::pub_underscore_fields,
14733        clippy::style
14734    )]
14735    const _: () = {
14736        use alloy::sol_types as alloy_sol_types;
14737        {
14738            #[doc(hidden)]
14739            #[allow(dead_code)]
14740            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14741            #[doc(hidden)]
14742            type UnderlyingRustTuple<'a> = (u32,);
14743            #[cfg(test)]
14744            #[allow(dead_code, unreachable_patterns)]
14745            fn _type_assertion(
14746                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14747            ) {
14748                match _t {
14749                    alloy_sol_types::private::AssertTypeEq::<
14750                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14751                    >(_) => {}
14752                }
14753            }
14754            #[automatically_derived]
14755            #[doc(hidden)]
14756            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
14757            for UnderlyingRustTuple<'_> {
14758                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
14759                    (value.historySeconds,)
14760                }
14761            }
14762            #[automatically_derived]
14763            #[doc(hidden)]
14764            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14765            for setStateHistoryRetentionPeriodCall {
14766                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14767                    Self { historySeconds: tuple.0 }
14768                }
14769            }
14770        }
14771        {
14772            #[doc(hidden)]
14773            #[allow(dead_code)]
14774            type UnderlyingSolTuple<'a> = ();
14775            #[doc(hidden)]
14776            type UnderlyingRustTuple<'a> = ();
14777            #[cfg(test)]
14778            #[allow(dead_code, unreachable_patterns)]
14779            fn _type_assertion(
14780                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14781            ) {
14782                match _t {
14783                    alloy_sol_types::private::AssertTypeEq::<
14784                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14785                    >(_) => {}
14786                }
14787            }
14788            #[automatically_derived]
14789            #[doc(hidden)]
14790            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
14791            for UnderlyingRustTuple<'_> {
14792                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
14793                    ()
14794                }
14795            }
14796            #[automatically_derived]
14797            #[doc(hidden)]
14798            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14799            for setStateHistoryRetentionPeriodReturn {
14800                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14801                    Self {}
14802                }
14803            }
14804        }
14805        impl setStateHistoryRetentionPeriodReturn {
14806            fn _tokenize(
14807                &self,
14808            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
14809                '_,
14810            > {
14811                ()
14812            }
14813        }
14814        #[automatically_derived]
14815        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
14816            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14817            type Token<'a> = <Self::Parameters<
14818                'a,
14819            > as alloy_sol_types::SolType>::Token<'a>;
14820            type Return = setStateHistoryRetentionPeriodReturn;
14821            type ReturnTuple<'a> = ();
14822            type ReturnToken<'a> = <Self::ReturnTuple<
14823                'a,
14824            > as alloy_sol_types::SolType>::Token<'a>;
14825            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
14826            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
14827            #[inline]
14828            fn new<'a>(
14829                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14830            ) -> Self {
14831                tuple.into()
14832            }
14833            #[inline]
14834            fn tokenize(&self) -> Self::Token<'_> {
14835                (
14836                    <alloy::sol_types::sol_data::Uint<
14837                        32,
14838                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
14839                )
14840            }
14841            #[inline]
14842            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14843                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
14844            }
14845            #[inline]
14846            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14847                <Self::ReturnTuple<
14848                    '_,
14849                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14850                    .map(Into::into)
14851            }
14852            #[inline]
14853            fn abi_decode_returns_with_config(
14854                data: &[u8],
14855                config: alloy_sol_types::abi::AbiDecoderConfig,
14856            ) -> alloy_sol_types::Result<Self::Return> {
14857                <Self::ReturnTuple<
14858                    '_,
14859                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14860                        data,
14861                        config,
14862                    )
14863                    .map(Into::into)
14864            }
14865            #[inline]
14866            fn abi_decode_returns_validate(
14867                data: &[u8],
14868            ) -> alloy_sol_types::Result<Self::Return> {
14869                Self::abi_decode_returns_with_config(
14870                    data,
14871                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14872                )
14873            }
14874        }
14875    };
14876    #[derive(serde::Serialize, serde::Deserialize)]
14877    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14878    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
14879```solidity
14880function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
14881```*/
14882    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14883    #[derive(Clone)]
14884    pub struct setVotingStakeTableStateCall {
14885        #[allow(missing_docs)]
14886        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14887    }
14888    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
14889    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14890    #[derive(Clone)]
14891    pub struct setVotingStakeTableStateReturn {}
14892    #[allow(
14893        non_camel_case_types,
14894        non_snake_case,
14895        clippy::pub_underscore_fields,
14896        clippy::style
14897    )]
14898    const _: () = {
14899        use alloy::sol_types as alloy_sol_types;
14900        {
14901            #[doc(hidden)]
14902            #[allow(dead_code)]
14903            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
14904            #[doc(hidden)]
14905            type UnderlyingRustTuple<'a> = (
14906                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14907            );
14908            #[cfg(test)]
14909            #[allow(dead_code, unreachable_patterns)]
14910            fn _type_assertion(
14911                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14912            ) {
14913                match _t {
14914                    alloy_sol_types::private::AssertTypeEq::<
14915                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14916                    >(_) => {}
14917                }
14918            }
14919            #[automatically_derived]
14920            #[doc(hidden)]
14921            impl ::core::convert::From<setVotingStakeTableStateCall>
14922            for UnderlyingRustTuple<'_> {
14923                fn from(value: setVotingStakeTableStateCall) -> Self {
14924                    (value.stake,)
14925                }
14926            }
14927            #[automatically_derived]
14928            #[doc(hidden)]
14929            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14930            for setVotingStakeTableStateCall {
14931                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14932                    Self { stake: tuple.0 }
14933                }
14934            }
14935        }
14936        {
14937            #[doc(hidden)]
14938            #[allow(dead_code)]
14939            type UnderlyingSolTuple<'a> = ();
14940            #[doc(hidden)]
14941            type UnderlyingRustTuple<'a> = ();
14942            #[cfg(test)]
14943            #[allow(dead_code, unreachable_patterns)]
14944            fn _type_assertion(
14945                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14946            ) {
14947                match _t {
14948                    alloy_sol_types::private::AssertTypeEq::<
14949                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14950                    >(_) => {}
14951                }
14952            }
14953            #[automatically_derived]
14954            #[doc(hidden)]
14955            impl ::core::convert::From<setVotingStakeTableStateReturn>
14956            for UnderlyingRustTuple<'_> {
14957                fn from(value: setVotingStakeTableStateReturn) -> Self {
14958                    ()
14959                }
14960            }
14961            #[automatically_derived]
14962            #[doc(hidden)]
14963            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14964            for setVotingStakeTableStateReturn {
14965                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14966                    Self {}
14967                }
14968            }
14969        }
14970        impl setVotingStakeTableStateReturn {
14971            fn _tokenize(
14972                &self,
14973            ) -> <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14974                '_,
14975            > {
14976                ()
14977            }
14978        }
14979        #[automatically_derived]
14980        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
14981            type Parameters<'a> = (LightClient::StakeTableState,);
14982            type Token<'a> = <Self::Parameters<
14983                'a,
14984            > as alloy_sol_types::SolType>::Token<'a>;
14985            type Return = setVotingStakeTableStateReturn;
14986            type ReturnTuple<'a> = ();
14987            type ReturnToken<'a> = <Self::ReturnTuple<
14988                'a,
14989            > as alloy_sol_types::SolType>::Token<'a>;
14990            const SIGNATURE: &'static str = "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
14991            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
14992            #[inline]
14993            fn new<'a>(
14994                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14995            ) -> Self {
14996                tuple.into()
14997            }
14998            #[inline]
14999            fn tokenize(&self) -> Self::Token<'_> {
15000                (
15001                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
15002                        &self.stake,
15003                    ),
15004                )
15005            }
15006            #[inline]
15007            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15008                setVotingStakeTableStateReturn::_tokenize(ret)
15009            }
15010            #[inline]
15011            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15012                <Self::ReturnTuple<
15013                    '_,
15014                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15015                    .map(Into::into)
15016            }
15017            #[inline]
15018            fn abi_decode_returns_with_config(
15019                data: &[u8],
15020                config: alloy_sol_types::abi::AbiDecoderConfig,
15021            ) -> alloy_sol_types::Result<Self::Return> {
15022                <Self::ReturnTuple<
15023                    '_,
15024                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15025                        data,
15026                        config,
15027                    )
15028                    .map(Into::into)
15029            }
15030            #[inline]
15031            fn abi_decode_returns_validate(
15032                data: &[u8],
15033            ) -> alloy_sol_types::Result<Self::Return> {
15034                Self::abi_decode_returns_with_config(
15035                    data,
15036                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15037                )
15038            }
15039        }
15040    };
15041    #[derive(serde::Serialize, serde::Deserialize)]
15042    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15043    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
15044```solidity
15045function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
15046```*/
15047    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15048    #[derive(Clone)]
15049    pub struct setstateHistoryRetentionPeriodCall {
15050        #[allow(missing_docs)]
15051        pub historySeconds: u32,
15052    }
15053    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
15054    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15055    #[derive(Clone)]
15056    pub struct setstateHistoryRetentionPeriodReturn {}
15057    #[allow(
15058        non_camel_case_types,
15059        non_snake_case,
15060        clippy::pub_underscore_fields,
15061        clippy::style
15062    )]
15063    const _: () = {
15064        use alloy::sol_types as alloy_sol_types;
15065        {
15066            #[doc(hidden)]
15067            #[allow(dead_code)]
15068            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
15069            #[doc(hidden)]
15070            type UnderlyingRustTuple<'a> = (u32,);
15071            #[cfg(test)]
15072            #[allow(dead_code, unreachable_patterns)]
15073            fn _type_assertion(
15074                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15075            ) {
15076                match _t {
15077                    alloy_sol_types::private::AssertTypeEq::<
15078                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15079                    >(_) => {}
15080                }
15081            }
15082            #[automatically_derived]
15083            #[doc(hidden)]
15084            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
15085            for UnderlyingRustTuple<'_> {
15086                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
15087                    (value.historySeconds,)
15088                }
15089            }
15090            #[automatically_derived]
15091            #[doc(hidden)]
15092            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15093            for setstateHistoryRetentionPeriodCall {
15094                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15095                    Self { historySeconds: tuple.0 }
15096                }
15097            }
15098        }
15099        {
15100            #[doc(hidden)]
15101            #[allow(dead_code)]
15102            type UnderlyingSolTuple<'a> = ();
15103            #[doc(hidden)]
15104            type UnderlyingRustTuple<'a> = ();
15105            #[cfg(test)]
15106            #[allow(dead_code, unreachable_patterns)]
15107            fn _type_assertion(
15108                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15109            ) {
15110                match _t {
15111                    alloy_sol_types::private::AssertTypeEq::<
15112                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15113                    >(_) => {}
15114                }
15115            }
15116            #[automatically_derived]
15117            #[doc(hidden)]
15118            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
15119            for UnderlyingRustTuple<'_> {
15120                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
15121                    ()
15122                }
15123            }
15124            #[automatically_derived]
15125            #[doc(hidden)]
15126            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15127            for setstateHistoryRetentionPeriodReturn {
15128                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15129                    Self {}
15130                }
15131            }
15132        }
15133        impl setstateHistoryRetentionPeriodReturn {
15134            fn _tokenize(
15135                &self,
15136            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
15137                '_,
15138            > {
15139                ()
15140            }
15141        }
15142        #[automatically_derived]
15143        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
15144            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
15145            type Token<'a> = <Self::Parameters<
15146                'a,
15147            > as alloy_sol_types::SolType>::Token<'a>;
15148            type Return = setstateHistoryRetentionPeriodReturn;
15149            type ReturnTuple<'a> = ();
15150            type ReturnToken<'a> = <Self::ReturnTuple<
15151                'a,
15152            > as alloy_sol_types::SolType>::Token<'a>;
15153            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
15154            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
15155            #[inline]
15156            fn new<'a>(
15157                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15158            ) -> Self {
15159                tuple.into()
15160            }
15161            #[inline]
15162            fn tokenize(&self) -> Self::Token<'_> {
15163                (
15164                    <alloy::sol_types::sol_data::Uint<
15165                        32,
15166                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
15167                )
15168            }
15169            #[inline]
15170            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15171                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
15172            }
15173            #[inline]
15174            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15175                <Self::ReturnTuple<
15176                    '_,
15177                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15178                    .map(Into::into)
15179            }
15180            #[inline]
15181            fn abi_decode_returns_with_config(
15182                data: &[u8],
15183                config: alloy_sol_types::abi::AbiDecoderConfig,
15184            ) -> alloy_sol_types::Result<Self::Return> {
15185                <Self::ReturnTuple<
15186                    '_,
15187                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15188                        data,
15189                        config,
15190                    )
15191                    .map(Into::into)
15192            }
15193            #[inline]
15194            fn abi_decode_returns_validate(
15195                data: &[u8],
15196            ) -> alloy_sol_types::Result<Self::Return> {
15197                Self::abi_decode_returns_with_config(
15198                    data,
15199                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15200                )
15201            }
15202        }
15203    };
15204    #[derive(serde::Serialize, serde::Deserialize)]
15205    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15206    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
15207```solidity
15208function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
15209```*/
15210    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15211    #[derive(Clone)]
15212    pub struct stateHistoryCommitmentsCall(
15213        pub alloy::sol_types::private::primitives::aliases::U256,
15214    );
15215    #[derive(serde::Serialize, serde::Deserialize)]
15216    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15217    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
15218    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15219    #[derive(Clone)]
15220    pub struct stateHistoryCommitmentsReturn {
15221        #[allow(missing_docs)]
15222        pub l1BlockHeight: u64,
15223        #[allow(missing_docs)]
15224        pub l1BlockTimestamp: u64,
15225        #[allow(missing_docs)]
15226        pub hotShotBlockHeight: u64,
15227        #[allow(missing_docs)]
15228        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15229    }
15230    #[allow(
15231        non_camel_case_types,
15232        non_snake_case,
15233        clippy::pub_underscore_fields,
15234        clippy::style
15235    )]
15236    const _: () = {
15237        use alloy::sol_types as alloy_sol_types;
15238        {
15239            #[doc(hidden)]
15240            #[allow(dead_code)]
15241            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15242            #[doc(hidden)]
15243            type UnderlyingRustTuple<'a> = (
15244                alloy::sol_types::private::primitives::aliases::U256,
15245            );
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<stateHistoryCommitmentsCall>
15260            for UnderlyingRustTuple<'_> {
15261                fn from(value: stateHistoryCommitmentsCall) -> Self {
15262                    (value.0,)
15263                }
15264            }
15265            #[automatically_derived]
15266            #[doc(hidden)]
15267            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15268            for stateHistoryCommitmentsCall {
15269                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15270                    Self(tuple.0)
15271                }
15272            }
15273        }
15274        {
15275            #[doc(hidden)]
15276            #[allow(dead_code)]
15277            type UnderlyingSolTuple<'a> = (
15278                alloy::sol_types::sol_data::Uint<64>,
15279                alloy::sol_types::sol_data::Uint<64>,
15280                alloy::sol_types::sol_data::Uint<64>,
15281                BN254::ScalarField,
15282            );
15283            #[doc(hidden)]
15284            type UnderlyingRustTuple<'a> = (
15285                u64,
15286                u64,
15287                u64,
15288                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
15289            );
15290            #[cfg(test)]
15291            #[allow(dead_code, unreachable_patterns)]
15292            fn _type_assertion(
15293                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15294            ) {
15295                match _t {
15296                    alloy_sol_types::private::AssertTypeEq::<
15297                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15298                    >(_) => {}
15299                }
15300            }
15301            #[automatically_derived]
15302            #[doc(hidden)]
15303            impl ::core::convert::From<stateHistoryCommitmentsReturn>
15304            for UnderlyingRustTuple<'_> {
15305                fn from(value: stateHistoryCommitmentsReturn) -> Self {
15306                    (
15307                        value.l1BlockHeight,
15308                        value.l1BlockTimestamp,
15309                        value.hotShotBlockHeight,
15310                        value.hotShotBlockCommRoot,
15311                    )
15312                }
15313            }
15314            #[automatically_derived]
15315            #[doc(hidden)]
15316            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15317            for stateHistoryCommitmentsReturn {
15318                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15319                    Self {
15320                        l1BlockHeight: tuple.0,
15321                        l1BlockTimestamp: tuple.1,
15322                        hotShotBlockHeight: tuple.2,
15323                        hotShotBlockCommRoot: tuple.3,
15324                    }
15325                }
15326            }
15327        }
15328        impl stateHistoryCommitmentsReturn {
15329            fn _tokenize(
15330                &self,
15331            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
15332                '_,
15333            > {
15334                (
15335                    <alloy::sol_types::sol_data::Uint<
15336                        64,
15337                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
15338                    <alloy::sol_types::sol_data::Uint<
15339                        64,
15340                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
15341                    <alloy::sol_types::sol_data::Uint<
15342                        64,
15343                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
15344                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
15345                        &self.hotShotBlockCommRoot,
15346                    ),
15347                )
15348            }
15349        }
15350        #[automatically_derived]
15351        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
15352            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
15353            type Token<'a> = <Self::Parameters<
15354                'a,
15355            > as alloy_sol_types::SolType>::Token<'a>;
15356            type Return = stateHistoryCommitmentsReturn;
15357            type ReturnTuple<'a> = (
15358                alloy::sol_types::sol_data::Uint<64>,
15359                alloy::sol_types::sol_data::Uint<64>,
15360                alloy::sol_types::sol_data::Uint<64>,
15361                BN254::ScalarField,
15362            );
15363            type ReturnToken<'a> = <Self::ReturnTuple<
15364                'a,
15365            > as alloy_sol_types::SolType>::Token<'a>;
15366            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
15367            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
15368            #[inline]
15369            fn new<'a>(
15370                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15371            ) -> Self {
15372                tuple.into()
15373            }
15374            #[inline]
15375            fn tokenize(&self) -> Self::Token<'_> {
15376                (
15377                    <alloy::sol_types::sol_data::Uint<
15378                        256,
15379                    > as alloy_sol_types::SolType>::tokenize(&self.0),
15380                )
15381            }
15382            #[inline]
15383            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15384                stateHistoryCommitmentsReturn::_tokenize(ret)
15385            }
15386            #[inline]
15387            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15388                <Self::ReturnTuple<
15389                    '_,
15390                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15391                    .map(Into::into)
15392            }
15393            #[inline]
15394            fn abi_decode_returns_with_config(
15395                data: &[u8],
15396                config: alloy_sol_types::abi::AbiDecoderConfig,
15397            ) -> alloy_sol_types::Result<Self::Return> {
15398                <Self::ReturnTuple<
15399                    '_,
15400                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15401                        data,
15402                        config,
15403                    )
15404                    .map(Into::into)
15405            }
15406            #[inline]
15407            fn abi_decode_returns_validate(
15408                data: &[u8],
15409            ) -> alloy_sol_types::Result<Self::Return> {
15410                Self::abi_decode_returns_with_config(
15411                    data,
15412                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15413                )
15414            }
15415        }
15416    };
15417    #[derive(serde::Serialize, serde::Deserialize)]
15418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15419    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
15420```solidity
15421function stateHistoryFirstIndex() external view returns (uint64);
15422```*/
15423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15424    #[derive(Clone)]
15425    pub struct stateHistoryFirstIndexCall;
15426    #[derive(serde::Serialize, serde::Deserialize)]
15427    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15428    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
15429    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15430    #[derive(Clone)]
15431    pub struct stateHistoryFirstIndexReturn {
15432        #[allow(missing_docs)]
15433        pub _0: u64,
15434    }
15435    #[allow(
15436        non_camel_case_types,
15437        non_snake_case,
15438        clippy::pub_underscore_fields,
15439        clippy::style
15440    )]
15441    const _: () = {
15442        use alloy::sol_types as alloy_sol_types;
15443        {
15444            #[doc(hidden)]
15445            #[allow(dead_code)]
15446            type UnderlyingSolTuple<'a> = ();
15447            #[doc(hidden)]
15448            type UnderlyingRustTuple<'a> = ();
15449            #[cfg(test)]
15450            #[allow(dead_code, unreachable_patterns)]
15451            fn _type_assertion(
15452                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15453            ) {
15454                match _t {
15455                    alloy_sol_types::private::AssertTypeEq::<
15456                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15457                    >(_) => {}
15458                }
15459            }
15460            #[automatically_derived]
15461            #[doc(hidden)]
15462            impl ::core::convert::From<stateHistoryFirstIndexCall>
15463            for UnderlyingRustTuple<'_> {
15464                fn from(value: stateHistoryFirstIndexCall) -> Self {
15465                    ()
15466                }
15467            }
15468            #[automatically_derived]
15469            #[doc(hidden)]
15470            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15471            for stateHistoryFirstIndexCall {
15472                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15473                    Self
15474                }
15475            }
15476        }
15477        {
15478            #[doc(hidden)]
15479            #[allow(dead_code)]
15480            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
15481            #[doc(hidden)]
15482            type UnderlyingRustTuple<'a> = (u64,);
15483            #[cfg(test)]
15484            #[allow(dead_code, unreachable_patterns)]
15485            fn _type_assertion(
15486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15487            ) {
15488                match _t {
15489                    alloy_sol_types::private::AssertTypeEq::<
15490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15491                    >(_) => {}
15492                }
15493            }
15494            #[automatically_derived]
15495            #[doc(hidden)]
15496            impl ::core::convert::From<stateHistoryFirstIndexReturn>
15497            for UnderlyingRustTuple<'_> {
15498                fn from(value: stateHistoryFirstIndexReturn) -> Self {
15499                    (value._0,)
15500                }
15501            }
15502            #[automatically_derived]
15503            #[doc(hidden)]
15504            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15505            for stateHistoryFirstIndexReturn {
15506                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15507                    Self { _0: tuple.0 }
15508                }
15509            }
15510        }
15511        #[automatically_derived]
15512        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
15513            type Parameters<'a> = ();
15514            type Token<'a> = <Self::Parameters<
15515                'a,
15516            > as alloy_sol_types::SolType>::Token<'a>;
15517            type Return = u64;
15518            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
15519            type ReturnToken<'a> = <Self::ReturnTuple<
15520                'a,
15521            > as alloy_sol_types::SolType>::Token<'a>;
15522            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
15523            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
15524            #[inline]
15525            fn new<'a>(
15526                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15527            ) -> Self {
15528                tuple.into()
15529            }
15530            #[inline]
15531            fn tokenize(&self) -> Self::Token<'_> {
15532                ()
15533            }
15534            #[inline]
15535            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15536                (
15537                    <alloy::sol_types::sol_data::Uint<
15538                        64,
15539                    > as alloy_sol_types::SolType>::tokenize(ret),
15540                )
15541            }
15542            #[inline]
15543            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15544                <Self::ReturnTuple<
15545                    '_,
15546                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15547                    .map(|r| {
15548                        let r: stateHistoryFirstIndexReturn = r.into();
15549                        r._0
15550                    })
15551            }
15552            #[inline]
15553            fn abi_decode_returns_with_config(
15554                data: &[u8],
15555                config: alloy_sol_types::abi::AbiDecoderConfig,
15556            ) -> alloy_sol_types::Result<Self::Return> {
15557                <Self::ReturnTuple<
15558                    '_,
15559                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15560                        data,
15561                        config,
15562                    )
15563                    .map(|r| {
15564                        let r: stateHistoryFirstIndexReturn = r.into();
15565                        r._0
15566                    })
15567            }
15568            #[inline]
15569            fn abi_decode_returns_validate(
15570                data: &[u8],
15571            ) -> alloy_sol_types::Result<Self::Return> {
15572                Self::abi_decode_returns_with_config(
15573                    data,
15574                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15575                )
15576            }
15577        }
15578    };
15579    #[derive(serde::Serialize, serde::Deserialize)]
15580    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15581    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
15582```solidity
15583function stateHistoryRetentionPeriod() external view returns (uint32);
15584```*/
15585    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15586    #[derive(Clone)]
15587    pub struct stateHistoryRetentionPeriodCall;
15588    #[derive(serde::Serialize, serde::Deserialize)]
15589    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15590    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
15591    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15592    #[derive(Clone)]
15593    pub struct stateHistoryRetentionPeriodReturn {
15594        #[allow(missing_docs)]
15595        pub _0: u32,
15596    }
15597    #[allow(
15598        non_camel_case_types,
15599        non_snake_case,
15600        clippy::pub_underscore_fields,
15601        clippy::style
15602    )]
15603    const _: () = {
15604        use alloy::sol_types as alloy_sol_types;
15605        {
15606            #[doc(hidden)]
15607            #[allow(dead_code)]
15608            type UnderlyingSolTuple<'a> = ();
15609            #[doc(hidden)]
15610            type UnderlyingRustTuple<'a> = ();
15611            #[cfg(test)]
15612            #[allow(dead_code, unreachable_patterns)]
15613            fn _type_assertion(
15614                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15615            ) {
15616                match _t {
15617                    alloy_sol_types::private::AssertTypeEq::<
15618                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15619                    >(_) => {}
15620                }
15621            }
15622            #[automatically_derived]
15623            #[doc(hidden)]
15624            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
15625            for UnderlyingRustTuple<'_> {
15626                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
15627                    ()
15628                }
15629            }
15630            #[automatically_derived]
15631            #[doc(hidden)]
15632            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15633            for stateHistoryRetentionPeriodCall {
15634                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15635                    Self
15636                }
15637            }
15638        }
15639        {
15640            #[doc(hidden)]
15641            #[allow(dead_code)]
15642            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
15643            #[doc(hidden)]
15644            type UnderlyingRustTuple<'a> = (u32,);
15645            #[cfg(test)]
15646            #[allow(dead_code, unreachable_patterns)]
15647            fn _type_assertion(
15648                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15649            ) {
15650                match _t {
15651                    alloy_sol_types::private::AssertTypeEq::<
15652                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15653                    >(_) => {}
15654                }
15655            }
15656            #[automatically_derived]
15657            #[doc(hidden)]
15658            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
15659            for UnderlyingRustTuple<'_> {
15660                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
15661                    (value._0,)
15662                }
15663            }
15664            #[automatically_derived]
15665            #[doc(hidden)]
15666            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15667            for stateHistoryRetentionPeriodReturn {
15668                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15669                    Self { _0: tuple.0 }
15670                }
15671            }
15672        }
15673        #[automatically_derived]
15674        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
15675            type Parameters<'a> = ();
15676            type Token<'a> = <Self::Parameters<
15677                'a,
15678            > as alloy_sol_types::SolType>::Token<'a>;
15679            type Return = u32;
15680            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
15681            type ReturnToken<'a> = <Self::ReturnTuple<
15682                'a,
15683            > as alloy_sol_types::SolType>::Token<'a>;
15684            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
15685            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
15686            #[inline]
15687            fn new<'a>(
15688                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15689            ) -> Self {
15690                tuple.into()
15691            }
15692            #[inline]
15693            fn tokenize(&self) -> Self::Token<'_> {
15694                ()
15695            }
15696            #[inline]
15697            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15698                (
15699                    <alloy::sol_types::sol_data::Uint<
15700                        32,
15701                    > as alloy_sol_types::SolType>::tokenize(ret),
15702                )
15703            }
15704            #[inline]
15705            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15706                <Self::ReturnTuple<
15707                    '_,
15708                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15709                    .map(|r| {
15710                        let r: stateHistoryRetentionPeriodReturn = r.into();
15711                        r._0
15712                    })
15713            }
15714            #[inline]
15715            fn abi_decode_returns_with_config(
15716                data: &[u8],
15717                config: alloy_sol_types::abi::AbiDecoderConfig,
15718            ) -> alloy_sol_types::Result<Self::Return> {
15719                <Self::ReturnTuple<
15720                    '_,
15721                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15722                        data,
15723                        config,
15724                    )
15725                    .map(|r| {
15726                        let r: stateHistoryRetentionPeriodReturn = r.into();
15727                        r._0
15728                    })
15729            }
15730            #[inline]
15731            fn abi_decode_returns_validate(
15732                data: &[u8],
15733            ) -> alloy_sol_types::Result<Self::Return> {
15734                Self::abi_decode_returns_with_config(
15735                    data,
15736                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15737                )
15738            }
15739        }
15740    };
15741    #[derive(serde::Serialize, serde::Deserialize)]
15742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15743    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
15744```solidity
15745function transferOwnership(address newOwner) external;
15746```*/
15747    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15748    #[derive(Clone)]
15749    pub struct transferOwnershipCall {
15750        #[allow(missing_docs)]
15751        pub newOwner: alloy::sol_types::private::Address,
15752    }
15753    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
15754    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15755    #[derive(Clone)]
15756    pub struct transferOwnershipReturn {}
15757    #[allow(
15758        non_camel_case_types,
15759        non_snake_case,
15760        clippy::pub_underscore_fields,
15761        clippy::style
15762    )]
15763    const _: () = {
15764        use alloy::sol_types as alloy_sol_types;
15765        {
15766            #[doc(hidden)]
15767            #[allow(dead_code)]
15768            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
15769            #[doc(hidden)]
15770            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
15771            #[cfg(test)]
15772            #[allow(dead_code, unreachable_patterns)]
15773            fn _type_assertion(
15774                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15775            ) {
15776                match _t {
15777                    alloy_sol_types::private::AssertTypeEq::<
15778                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15779                    >(_) => {}
15780                }
15781            }
15782            #[automatically_derived]
15783            #[doc(hidden)]
15784            impl ::core::convert::From<transferOwnershipCall>
15785            for UnderlyingRustTuple<'_> {
15786                fn from(value: transferOwnershipCall) -> Self {
15787                    (value.newOwner,)
15788                }
15789            }
15790            #[automatically_derived]
15791            #[doc(hidden)]
15792            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15793            for transferOwnershipCall {
15794                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15795                    Self { newOwner: tuple.0 }
15796                }
15797            }
15798        }
15799        {
15800            #[doc(hidden)]
15801            #[allow(dead_code)]
15802            type UnderlyingSolTuple<'a> = ();
15803            #[doc(hidden)]
15804            type UnderlyingRustTuple<'a> = ();
15805            #[cfg(test)]
15806            #[allow(dead_code, unreachable_patterns)]
15807            fn _type_assertion(
15808                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15809            ) {
15810                match _t {
15811                    alloy_sol_types::private::AssertTypeEq::<
15812                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15813                    >(_) => {}
15814                }
15815            }
15816            #[automatically_derived]
15817            #[doc(hidden)]
15818            impl ::core::convert::From<transferOwnershipReturn>
15819            for UnderlyingRustTuple<'_> {
15820                fn from(value: transferOwnershipReturn) -> Self {
15821                    ()
15822                }
15823            }
15824            #[automatically_derived]
15825            #[doc(hidden)]
15826            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15827            for transferOwnershipReturn {
15828                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15829                    Self {}
15830                }
15831            }
15832        }
15833        impl transferOwnershipReturn {
15834            fn _tokenize(
15835                &self,
15836            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
15837                ()
15838            }
15839        }
15840        #[automatically_derived]
15841        impl alloy_sol_types::SolCall for transferOwnershipCall {
15842            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
15843            type Token<'a> = <Self::Parameters<
15844                'a,
15845            > as alloy_sol_types::SolType>::Token<'a>;
15846            type Return = transferOwnershipReturn;
15847            type ReturnTuple<'a> = ();
15848            type ReturnToken<'a> = <Self::ReturnTuple<
15849                'a,
15850            > as alloy_sol_types::SolType>::Token<'a>;
15851            const SIGNATURE: &'static str = "transferOwnership(address)";
15852            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
15853            #[inline]
15854            fn new<'a>(
15855                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
15856            ) -> Self {
15857                tuple.into()
15858            }
15859            #[inline]
15860            fn tokenize(&self) -> Self::Token<'_> {
15861                (
15862                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
15863                        &self.newOwner,
15864                    ),
15865                )
15866            }
15867            #[inline]
15868            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
15869                transferOwnershipReturn::_tokenize(ret)
15870            }
15871            #[inline]
15872            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
15873                <Self::ReturnTuple<
15874                    '_,
15875                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
15876                    .map(Into::into)
15877            }
15878            #[inline]
15879            fn abi_decode_returns_with_config(
15880                data: &[u8],
15881                config: alloy_sol_types::abi::AbiDecoderConfig,
15882            ) -> alloy_sol_types::Result<Self::Return> {
15883                <Self::ReturnTuple<
15884                    '_,
15885                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
15886                        data,
15887                        config,
15888                    )
15889                    .map(Into::into)
15890            }
15891            #[inline]
15892            fn abi_decode_returns_validate(
15893                data: &[u8],
15894            ) -> alloy_sol_types::Result<Self::Return> {
15895                Self::abi_decode_returns_with_config(
15896                    data,
15897                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15898                )
15899            }
15900        }
15901    };
15902    #[derive(serde::Serialize, serde::Deserialize)]
15903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
15904    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
15905```solidity
15906function updateEpochStartBlock(uint64 newEpochStartBlock) external;
15907```*/
15908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15909    #[derive(Clone)]
15910    pub struct updateEpochStartBlockCall {
15911        #[allow(missing_docs)]
15912        pub newEpochStartBlock: u64,
15913    }
15914    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
15915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
15916    #[derive(Clone)]
15917    pub struct updateEpochStartBlockReturn {}
15918    #[allow(
15919        non_camel_case_types,
15920        non_snake_case,
15921        clippy::pub_underscore_fields,
15922        clippy::style
15923    )]
15924    const _: () = {
15925        use alloy::sol_types as alloy_sol_types;
15926        {
15927            #[doc(hidden)]
15928            #[allow(dead_code)]
15929            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
15930            #[doc(hidden)]
15931            type UnderlyingRustTuple<'a> = (u64,);
15932            #[cfg(test)]
15933            #[allow(dead_code, unreachable_patterns)]
15934            fn _type_assertion(
15935                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15936            ) {
15937                match _t {
15938                    alloy_sol_types::private::AssertTypeEq::<
15939                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15940                    >(_) => {}
15941                }
15942            }
15943            #[automatically_derived]
15944            #[doc(hidden)]
15945            impl ::core::convert::From<updateEpochStartBlockCall>
15946            for UnderlyingRustTuple<'_> {
15947                fn from(value: updateEpochStartBlockCall) -> Self {
15948                    (value.newEpochStartBlock,)
15949                }
15950            }
15951            #[automatically_derived]
15952            #[doc(hidden)]
15953            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15954            for updateEpochStartBlockCall {
15955                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15956                    Self {
15957                        newEpochStartBlock: tuple.0,
15958                    }
15959                }
15960            }
15961        }
15962        {
15963            #[doc(hidden)]
15964            #[allow(dead_code)]
15965            type UnderlyingSolTuple<'a> = ();
15966            #[doc(hidden)]
15967            type UnderlyingRustTuple<'a> = ();
15968            #[cfg(test)]
15969            #[allow(dead_code, unreachable_patterns)]
15970            fn _type_assertion(
15971                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
15972            ) {
15973                match _t {
15974                    alloy_sol_types::private::AssertTypeEq::<
15975                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
15976                    >(_) => {}
15977                }
15978            }
15979            #[automatically_derived]
15980            #[doc(hidden)]
15981            impl ::core::convert::From<updateEpochStartBlockReturn>
15982            for UnderlyingRustTuple<'_> {
15983                fn from(value: updateEpochStartBlockReturn) -> Self {
15984                    ()
15985                }
15986            }
15987            #[automatically_derived]
15988            #[doc(hidden)]
15989            impl ::core::convert::From<UnderlyingRustTuple<'_>>
15990            for updateEpochStartBlockReturn {
15991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
15992                    Self {}
15993                }
15994            }
15995        }
15996        impl updateEpochStartBlockReturn {
15997            fn _tokenize(
15998                &self,
15999            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
16000                '_,
16001            > {
16002                ()
16003            }
16004        }
16005        #[automatically_derived]
16006        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
16007            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
16008            type Token<'a> = <Self::Parameters<
16009                'a,
16010            > as alloy_sol_types::SolType>::Token<'a>;
16011            type Return = updateEpochStartBlockReturn;
16012            type ReturnTuple<'a> = ();
16013            type ReturnToken<'a> = <Self::ReturnTuple<
16014                'a,
16015            > as alloy_sol_types::SolType>::Token<'a>;
16016            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
16017            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
16018            #[inline]
16019            fn new<'a>(
16020                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16021            ) -> Self {
16022                tuple.into()
16023            }
16024            #[inline]
16025            fn tokenize(&self) -> Self::Token<'_> {
16026                (
16027                    <alloy::sol_types::sol_data::Uint<
16028                        64,
16029                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
16030                )
16031            }
16032            #[inline]
16033            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16034                updateEpochStartBlockReturn::_tokenize(ret)
16035            }
16036            #[inline]
16037            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16038                <Self::ReturnTuple<
16039                    '_,
16040                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16041                    .map(Into::into)
16042            }
16043            #[inline]
16044            fn abi_decode_returns_with_config(
16045                data: &[u8],
16046                config: alloy_sol_types::abi::AbiDecoderConfig,
16047            ) -> alloy_sol_types::Result<Self::Return> {
16048                <Self::ReturnTuple<
16049                    '_,
16050                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16051                        data,
16052                        config,
16053                    )
16054                    .map(Into::into)
16055            }
16056            #[inline]
16057            fn abi_decode_returns_validate(
16058                data: &[u8],
16059            ) -> alloy_sol_types::Result<Self::Return> {
16060                Self::abi_decode_returns_with_config(
16061                    data,
16062                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16063                )
16064            }
16065        }
16066    };
16067    #[derive(serde::Serialize, serde::Deserialize)]
16068    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16069    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
16070```solidity
16071function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
16072```*/
16073    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16074    #[derive(Clone)]
16075    pub struct upgradeToAndCallCall {
16076        #[allow(missing_docs)]
16077        pub newImplementation: alloy::sol_types::private::Address,
16078        #[allow(missing_docs)]
16079        pub data: alloy::sol_types::private::Bytes,
16080    }
16081    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
16082    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16083    #[derive(Clone)]
16084    pub struct upgradeToAndCallReturn {}
16085    #[allow(
16086        non_camel_case_types,
16087        non_snake_case,
16088        clippy::pub_underscore_fields,
16089        clippy::style
16090    )]
16091    const _: () = {
16092        use alloy::sol_types as alloy_sol_types;
16093        {
16094            #[doc(hidden)]
16095            #[allow(dead_code)]
16096            type UnderlyingSolTuple<'a> = (
16097                alloy::sol_types::sol_data::Address,
16098                alloy::sol_types::sol_data::Bytes,
16099            );
16100            #[doc(hidden)]
16101            type UnderlyingRustTuple<'a> = (
16102                alloy::sol_types::private::Address,
16103                alloy::sol_types::private::Bytes,
16104            );
16105            #[cfg(test)]
16106            #[allow(dead_code, unreachable_patterns)]
16107            fn _type_assertion(
16108                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16109            ) {
16110                match _t {
16111                    alloy_sol_types::private::AssertTypeEq::<
16112                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16113                    >(_) => {}
16114                }
16115            }
16116            #[automatically_derived]
16117            #[doc(hidden)]
16118            impl ::core::convert::From<upgradeToAndCallCall>
16119            for UnderlyingRustTuple<'_> {
16120                fn from(value: upgradeToAndCallCall) -> Self {
16121                    (value.newImplementation, value.data)
16122                }
16123            }
16124            #[automatically_derived]
16125            #[doc(hidden)]
16126            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16127            for upgradeToAndCallCall {
16128                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16129                    Self {
16130                        newImplementation: tuple.0,
16131                        data: tuple.1,
16132                    }
16133                }
16134            }
16135        }
16136        {
16137            #[doc(hidden)]
16138            #[allow(dead_code)]
16139            type UnderlyingSolTuple<'a> = ();
16140            #[doc(hidden)]
16141            type UnderlyingRustTuple<'a> = ();
16142            #[cfg(test)]
16143            #[allow(dead_code, unreachable_patterns)]
16144            fn _type_assertion(
16145                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16146            ) {
16147                match _t {
16148                    alloy_sol_types::private::AssertTypeEq::<
16149                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16150                    >(_) => {}
16151                }
16152            }
16153            #[automatically_derived]
16154            #[doc(hidden)]
16155            impl ::core::convert::From<upgradeToAndCallReturn>
16156            for UnderlyingRustTuple<'_> {
16157                fn from(value: upgradeToAndCallReturn) -> Self {
16158                    ()
16159                }
16160            }
16161            #[automatically_derived]
16162            #[doc(hidden)]
16163            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16164            for upgradeToAndCallReturn {
16165                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16166                    Self {}
16167                }
16168            }
16169        }
16170        impl upgradeToAndCallReturn {
16171            fn _tokenize(
16172                &self,
16173            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
16174                ()
16175            }
16176        }
16177        #[automatically_derived]
16178        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
16179            type Parameters<'a> = (
16180                alloy::sol_types::sol_data::Address,
16181                alloy::sol_types::sol_data::Bytes,
16182            );
16183            type Token<'a> = <Self::Parameters<
16184                'a,
16185            > as alloy_sol_types::SolType>::Token<'a>;
16186            type Return = upgradeToAndCallReturn;
16187            type ReturnTuple<'a> = ();
16188            type ReturnToken<'a> = <Self::ReturnTuple<
16189                'a,
16190            > as alloy_sol_types::SolType>::Token<'a>;
16191            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
16192            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
16193            #[inline]
16194            fn new<'a>(
16195                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16196            ) -> Self {
16197                tuple.into()
16198            }
16199            #[inline]
16200            fn tokenize(&self) -> Self::Token<'_> {
16201                (
16202                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
16203                        &self.newImplementation,
16204                    ),
16205                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
16206                        &self.data,
16207                    ),
16208                )
16209            }
16210            #[inline]
16211            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16212                upgradeToAndCallReturn::_tokenize(ret)
16213            }
16214            #[inline]
16215            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16216                <Self::ReturnTuple<
16217                    '_,
16218                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16219                    .map(Into::into)
16220            }
16221            #[inline]
16222            fn abi_decode_returns_with_config(
16223                data: &[u8],
16224                config: alloy_sol_types::abi::AbiDecoderConfig,
16225            ) -> alloy_sol_types::Result<Self::Return> {
16226                <Self::ReturnTuple<
16227                    '_,
16228                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16229                        data,
16230                        config,
16231                    )
16232                    .map(Into::into)
16233            }
16234            #[inline]
16235            fn abi_decode_returns_validate(
16236                data: &[u8],
16237            ) -> alloy_sol_types::Result<Self::Return> {
16238                Self::abi_decode_returns_with_config(
16239                    data,
16240                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16241                )
16242            }
16243        }
16244    };
16245    #[derive(serde::Serialize, serde::Deserialize)]
16246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16247    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
16248```solidity
16249function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
16250```*/
16251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16252    #[derive(Clone)]
16253    pub struct votingStakeTableStateCall;
16254    #[derive(serde::Serialize, serde::Deserialize)]
16255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
16256    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
16257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
16258    #[derive(Clone)]
16259    pub struct votingStakeTableStateReturn {
16260        #[allow(missing_docs)]
16261        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
16262        #[allow(missing_docs)]
16263        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
16264        #[allow(missing_docs)]
16265        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
16266        #[allow(missing_docs)]
16267        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
16268    }
16269    #[allow(
16270        non_camel_case_types,
16271        non_snake_case,
16272        clippy::pub_underscore_fields,
16273        clippy::style
16274    )]
16275    const _: () = {
16276        use alloy::sol_types as alloy_sol_types;
16277        {
16278            #[doc(hidden)]
16279            #[allow(dead_code)]
16280            type UnderlyingSolTuple<'a> = ();
16281            #[doc(hidden)]
16282            type UnderlyingRustTuple<'a> = ();
16283            #[cfg(test)]
16284            #[allow(dead_code, unreachable_patterns)]
16285            fn _type_assertion(
16286                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16287            ) {
16288                match _t {
16289                    alloy_sol_types::private::AssertTypeEq::<
16290                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16291                    >(_) => {}
16292                }
16293            }
16294            #[automatically_derived]
16295            #[doc(hidden)]
16296            impl ::core::convert::From<votingStakeTableStateCall>
16297            for UnderlyingRustTuple<'_> {
16298                fn from(value: votingStakeTableStateCall) -> Self {
16299                    ()
16300                }
16301            }
16302            #[automatically_derived]
16303            #[doc(hidden)]
16304            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16305            for votingStakeTableStateCall {
16306                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16307                    Self
16308                }
16309            }
16310        }
16311        {
16312            #[doc(hidden)]
16313            #[allow(dead_code)]
16314            type UnderlyingSolTuple<'a> = (
16315                alloy::sol_types::sol_data::Uint<256>,
16316                BN254::ScalarField,
16317                BN254::ScalarField,
16318                BN254::ScalarField,
16319            );
16320            #[doc(hidden)]
16321            type UnderlyingRustTuple<'a> = (
16322                alloy::sol_types::private::primitives::aliases::U256,
16323                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
16324                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
16325                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
16326            );
16327            #[cfg(test)]
16328            #[allow(dead_code, unreachable_patterns)]
16329            fn _type_assertion(
16330                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
16331            ) {
16332                match _t {
16333                    alloy_sol_types::private::AssertTypeEq::<
16334                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
16335                    >(_) => {}
16336                }
16337            }
16338            #[automatically_derived]
16339            #[doc(hidden)]
16340            impl ::core::convert::From<votingStakeTableStateReturn>
16341            for UnderlyingRustTuple<'_> {
16342                fn from(value: votingStakeTableStateReturn) -> Self {
16343                    (
16344                        value.threshold,
16345                        value.blsKeyComm,
16346                        value.schnorrKeyComm,
16347                        value.amountComm,
16348                    )
16349                }
16350            }
16351            #[automatically_derived]
16352            #[doc(hidden)]
16353            impl ::core::convert::From<UnderlyingRustTuple<'_>>
16354            for votingStakeTableStateReturn {
16355                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
16356                    Self {
16357                        threshold: tuple.0,
16358                        blsKeyComm: tuple.1,
16359                        schnorrKeyComm: tuple.2,
16360                        amountComm: tuple.3,
16361                    }
16362                }
16363            }
16364        }
16365        impl votingStakeTableStateReturn {
16366            fn _tokenize(
16367                &self,
16368            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
16369                '_,
16370            > {
16371                (
16372                    <alloy::sol_types::sol_data::Uint<
16373                        256,
16374                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
16375                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
16376                        &self.blsKeyComm,
16377                    ),
16378                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
16379                        &self.schnorrKeyComm,
16380                    ),
16381                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
16382                        &self.amountComm,
16383                    ),
16384                )
16385            }
16386        }
16387        #[automatically_derived]
16388        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
16389            type Parameters<'a> = ();
16390            type Token<'a> = <Self::Parameters<
16391                'a,
16392            > as alloy_sol_types::SolType>::Token<'a>;
16393            type Return = votingStakeTableStateReturn;
16394            type ReturnTuple<'a> = (
16395                alloy::sol_types::sol_data::Uint<256>,
16396                BN254::ScalarField,
16397                BN254::ScalarField,
16398                BN254::ScalarField,
16399            );
16400            type ReturnToken<'a> = <Self::ReturnTuple<
16401                'a,
16402            > as alloy_sol_types::SolType>::Token<'a>;
16403            const SIGNATURE: &'static str = "votingStakeTableState()";
16404            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
16405            #[inline]
16406            fn new<'a>(
16407                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
16408            ) -> Self {
16409                tuple.into()
16410            }
16411            #[inline]
16412            fn tokenize(&self) -> Self::Token<'_> {
16413                ()
16414            }
16415            #[inline]
16416            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
16417                votingStakeTableStateReturn::_tokenize(ret)
16418            }
16419            #[inline]
16420            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
16421                <Self::ReturnTuple<
16422                    '_,
16423                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
16424                    .map(Into::into)
16425            }
16426            #[inline]
16427            fn abi_decode_returns_with_config(
16428                data: &[u8],
16429                config: alloy_sol_types::abi::AbiDecoderConfig,
16430            ) -> alloy_sol_types::Result<Self::Return> {
16431                <Self::ReturnTuple<
16432                    '_,
16433                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
16434                        data,
16435                        config,
16436                    )
16437                    .map(Into::into)
16438            }
16439            #[inline]
16440            fn abi_decode_returns_validate(
16441                data: &[u8],
16442            ) -> alloy_sol_types::Result<Self::Return> {
16443                Self::abi_decode_returns_with_config(
16444                    data,
16445                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16446                )
16447            }
16448        }
16449    };
16450    ///Container for all the [`LightClientV3Mock`](self) function calls.
16451    #[derive(Clone)]
16452    #[derive(serde::Serialize, serde::Deserialize)]
16453    #[derive(Debug, PartialEq, Eq, Hash)]
16454    pub enum LightClientV3MockCalls {
16455        #[allow(missing_docs)]
16456        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
16457        #[allow(missing_docs)]
16458        _getVk(_getVkCall),
16459        #[allow(missing_docs)]
16460        authRoot(authRootCall),
16461        #[allow(missing_docs)]
16462        blocksPerEpoch(blocksPerEpochCall),
16463        #[allow(missing_docs)]
16464        currentBlockNumber(currentBlockNumberCall),
16465        #[allow(missing_docs)]
16466        currentEpoch(currentEpochCall),
16467        #[allow(missing_docs)]
16468        disablePermissionedProverMode(disablePermissionedProverModeCall),
16469        #[allow(missing_docs)]
16470        epochFromBlockNumber(epochFromBlockNumberCall),
16471        #[allow(missing_docs)]
16472        epochStartBlock(epochStartBlockCall),
16473        #[allow(missing_docs)]
16474        finalizedState(finalizedStateCall),
16475        #[allow(missing_docs)]
16476        firstEpoch(firstEpochCall),
16477        #[allow(missing_docs)]
16478        genesisStakeTableState(genesisStakeTableStateCall),
16479        #[allow(missing_docs)]
16480        genesisState(genesisStateCall),
16481        #[allow(missing_docs)]
16482        getHotShotCommitment(getHotShotCommitmentCall),
16483        #[allow(missing_docs)]
16484        getStateHistoryCount(getStateHistoryCountCall),
16485        #[allow(missing_docs)]
16486        getVersion(getVersionCall),
16487        #[allow(missing_docs)]
16488        initialize(initializeCall),
16489        #[allow(missing_docs)]
16490        initializeV2(initializeV2Call),
16491        #[allow(missing_docs)]
16492        initializeV3(initializeV3Call),
16493        #[allow(missing_docs)]
16494        isEpochRoot(isEpochRootCall),
16495        #[allow(missing_docs)]
16496        isGtEpochRoot(isGtEpochRootCall),
16497        #[allow(missing_docs)]
16498        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
16499        #[allow(missing_docs)]
16500        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
16501        #[allow(missing_docs)]
16502        newFinalizedState_0(newFinalizedState_0Call),
16503        #[allow(missing_docs)]
16504        newFinalizedState_1(newFinalizedState_1Call),
16505        #[allow(missing_docs)]
16506        newFinalizedState_2(newFinalizedState_2Call),
16507        #[allow(missing_docs)]
16508        owner(ownerCall),
16509        #[allow(missing_docs)]
16510        permissionedProver(permissionedProverCall),
16511        #[allow(missing_docs)]
16512        proxiableUUID(proxiableUUIDCall),
16513        #[allow(missing_docs)]
16514        renounceOwnership(renounceOwnershipCall),
16515        #[allow(missing_docs)]
16516        setAuthRoot(setAuthRootCall),
16517        #[allow(missing_docs)]
16518        setBlocksPerEpoch(setBlocksPerEpochCall),
16519        #[allow(missing_docs)]
16520        setFinalizedState(setFinalizedStateCall),
16521        #[allow(missing_docs)]
16522        setHotShotDownSince(setHotShotDownSinceCall),
16523        #[allow(missing_docs)]
16524        setHotShotUp(setHotShotUpCall),
16525        #[allow(missing_docs)]
16526        setPermissionedProver(setPermissionedProverCall),
16527        #[allow(missing_docs)]
16528        setStateHistory(setStateHistoryCall),
16529        #[allow(missing_docs)]
16530        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
16531        #[allow(missing_docs)]
16532        setVotingStakeTableState(setVotingStakeTableStateCall),
16533        #[allow(missing_docs)]
16534        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
16535        #[allow(missing_docs)]
16536        stateHistoryCommitments(stateHistoryCommitmentsCall),
16537        #[allow(missing_docs)]
16538        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
16539        #[allow(missing_docs)]
16540        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
16541        #[allow(missing_docs)]
16542        transferOwnership(transferOwnershipCall),
16543        #[allow(missing_docs)]
16544        updateEpochStartBlock(updateEpochStartBlockCall),
16545        #[allow(missing_docs)]
16546        upgradeToAndCall(upgradeToAndCallCall),
16547        #[allow(missing_docs)]
16548        votingStakeTableState(votingStakeTableStateCall),
16549    }
16550    impl LightClientV3MockCalls {
16551        /// All the selectors of this enum.
16552        ///
16553        /// Note that the selectors might not be in the same order as the variants.
16554        /// No guarantees are made about the order of the selectors.
16555        ///
16556        /// Prefer using `SolInterface` methods instead.
16557        pub const SELECTORS: &'static [[u8; 4usize]] = &[
16558            [1u8, 63u8, 165u8, 252u8],
16559            [2u8, 181u8, 146u8, 243u8],
16560            [6u8, 37u8, 225u8, 155u8],
16561            [13u8, 142u8, 110u8, 44u8],
16562            [18u8, 23u8, 60u8, 44u8],
16563            [22u8, 122u8, 198u8, 24u8],
16564            [26u8, 240u8, 128u8, 52u8],
16565            [32u8, 99u8, 212u8, 247u8],
16566            [37u8, 41u8, 116u8, 39u8],
16567            [45u8, 82u8, 170u8, 214u8],
16568            [47u8, 121u8, 136u8, 157u8],
16569            [48u8, 12u8, 137u8, 221u8],
16570            [49u8, 61u8, 247u8, 177u8],
16571            [55u8, 142u8, 194u8, 59u8],
16572            [56u8, 228u8, 84u8, 177u8],
16573            [60u8, 35u8, 182u8, 219u8],
16574            [62u8, 213u8, 91u8, 123u8],
16575            [65u8, 104u8, 39u8, 68u8],
16576            [66u8, 109u8, 49u8, 148u8],
16577            [67u8, 61u8, 186u8, 159u8],
16578            [79u8, 30u8, 242u8, 134u8],
16579            [82u8, 209u8, 144u8, 45u8],
16580            [98u8, 58u8, 19u8, 56u8],
16581            [105u8, 204u8, 106u8, 4u8],
16582            [113u8, 80u8, 24u8, 166u8],
16583            [117u8, 124u8, 55u8, 173u8],
16584            [118u8, 103u8, 24u8, 8u8],
16585            [130u8, 110u8, 65u8, 252u8],
16586            [133u8, 132u8, 210u8, 63u8],
16587            [141u8, 165u8, 203u8, 91u8],
16588            [144u8, 193u8, 67u8, 144u8],
16589            [150u8, 193u8, 202u8, 97u8],
16590            [153u8, 131u8, 40u8, 232u8],
16591            [155u8, 170u8, 60u8, 201u8],
16592            [159u8, 219u8, 84u8, 167u8],
16593            [170u8, 189u8, 93u8, 179u8],
16594            [173u8, 60u8, 177u8, 204u8],
16595            [179u8, 59u8, 196u8, 145u8],
16596            [181u8, 173u8, 234u8, 60u8],
16597            [194u8, 59u8, 158u8, 158u8],
16598            [200u8, 229u8, 228u8, 152u8],
16599            [210u8, 77u8, 147u8, 61u8],
16600            [224u8, 48u8, 51u8, 1u8],
16601            [240u8, 104u8, 32u8, 84u8],
16602            [242u8, 253u8, 227u8, 139u8],
16603            [245u8, 103u8, 97u8, 96u8],
16604            [249u8, 229u8, 13u8, 25u8],
16605        ];
16606        /// The names of the variants in the same order as `SELECTORS`.
16607        pub const VARIANT_NAMES: &'static [&'static str] = &[
16608            ::core::stringify!(setPermissionedProver),
16609            ::core::stringify!(stateHistoryCommitments),
16610            ::core::stringify!(votingStakeTableState),
16611            ::core::stringify!(getVersion),
16612            ::core::stringify!(_getVk),
16613            ::core::stringify!(updateEpochStartBlock),
16614            ::core::stringify!(setAuthRoot),
16615            ::core::stringify!(newFinalizedState_0),
16616            ::core::stringify!(isEpochRoot),
16617            ::core::stringify!(setHotShotDownSince),
16618            ::core::stringify!(stateHistoryFirstIndex),
16619            ::core::stringify!(isGtEpochRoot),
16620            ::core::stringify!(permissionedProver),
16621            ::core::stringify!(currentBlockNumber),
16622            ::core::stringify!(initializeV3),
16623            ::core::stringify!(setBlocksPerEpoch),
16624            ::core::stringify!(epochStartBlock),
16625            ::core::stringify!(firstEpoch),
16626            ::core::stringify!(genesisStakeTableState),
16627            ::core::stringify!(setStateHistoryRetentionPeriod),
16628            ::core::stringify!(upgradeToAndCall),
16629            ::core::stringify!(proxiableUUID),
16630            ::core::stringify!(setVotingStakeTableState),
16631            ::core::stringify!(disablePermissionedProverMode),
16632            ::core::stringify!(renounceOwnership),
16633            ::core::stringify!(newFinalizedState_1),
16634            ::core::stringify!(currentEpoch),
16635            ::core::stringify!(isPermissionedProverEnabled),
16636            ::core::stringify!(getHotShotCommitment),
16637            ::core::stringify!(owner),
16638            ::core::stringify!(epochFromBlockNumber),
16639            ::core::stringify!(setstateHistoryRetentionPeriod),
16640            ::core::stringify!(authRoot),
16641            ::core::stringify!(initialize),
16642            ::core::stringify!(finalizedState),
16643            ::core::stringify!(newFinalizedState_2),
16644            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
16645            ::core::stringify!(initializeV2),
16646            ::core::stringify!(setFinalizedState),
16647            ::core::stringify!(stateHistoryRetentionPeriod),
16648            ::core::stringify!(setHotShotUp),
16649            ::core::stringify!(genesisState),
16650            ::core::stringify!(lagOverEscapeHatchThreshold),
16651            ::core::stringify!(blocksPerEpoch),
16652            ::core::stringify!(transferOwnership),
16653            ::core::stringify!(setStateHistory),
16654            ::core::stringify!(getStateHistoryCount),
16655        ];
16656        /// The signatures in the same order as `SELECTORS`.
16657        pub const SIGNATURES: &'static [&'static str] = &[
16658            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
16659            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
16660            <votingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16661            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
16662            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
16663            <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
16664            <setAuthRootCall as alloy_sol_types::SolCall>::SIGNATURE,
16665            <newFinalizedState_0Call as alloy_sol_types::SolCall>::SIGNATURE,
16666            <isEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
16667            <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SIGNATURE,
16668            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
16669            <isGtEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
16670            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
16671            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
16672            <initializeV3Call as alloy_sol_types::SolCall>::SIGNATURE,
16673            <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
16674            <epochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
16675            <firstEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
16676            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16677            <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
16678            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
16679            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
16680            <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16681            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
16682            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
16683            <newFinalizedState_1Call as alloy_sol_types::SolCall>::SIGNATURE,
16684            <currentEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
16685            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
16686            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
16687            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
16688            <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
16689            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
16690            <authRootCall as alloy_sol_types::SolCall>::SIGNATURE,
16691            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
16692            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16693            <newFinalizedState_2Call as alloy_sol_types::SolCall>::SIGNATURE,
16694            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
16695            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
16696            <setFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16697            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
16698            <setHotShotUpCall as alloy_sol_types::SolCall>::SIGNATURE,
16699            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
16700            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
16701            <blocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
16702            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
16703            <setStateHistoryCall as alloy_sol_types::SolCall>::SIGNATURE,
16704            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
16705        ];
16706        /// Returns the signature for the given selector, if known.
16707        #[inline]
16708        pub fn signature_by_selector(
16709            selector: [u8; 4usize],
16710        ) -> ::core::option::Option<&'static str> {
16711            match Self::SELECTORS.binary_search(&selector) {
16712                ::core::result::Result::Ok(idx) => {
16713                    ::core::option::Option::Some(Self::SIGNATURES[idx])
16714                }
16715                ::core::result::Result::Err(_) => ::core::option::Option::None,
16716            }
16717        }
16718        /// Returns the enum variant name for the given selector, if known.
16719        #[inline]
16720        pub fn name_by_selector(
16721            selector: [u8; 4usize],
16722        ) -> ::core::option::Option<&'static str> {
16723            let sig = Self::signature_by_selector(selector)?;
16724            sig.split_once('(').map(|(name, _)| name)
16725        }
16726    }
16727    #[automatically_derived]
16728    impl alloy_sol_types::SolInterface for LightClientV3MockCalls {
16729        const NAME: &'static str = "LightClientV3MockCalls";
16730        const MIN_DATA_LENGTH: usize = 0usize;
16731        const COUNT: usize = 47usize;
16732        #[inline]
16733        fn selector(&self) -> [u8; 4] {
16734            match self {
16735                Self::UPGRADE_INTERFACE_VERSION(_) => {
16736                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
16737                }
16738                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
16739                Self::authRoot(_) => <authRootCall as alloy_sol_types::SolCall>::SELECTOR,
16740                Self::blocksPerEpoch(_) => {
16741                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
16742                }
16743                Self::currentBlockNumber(_) => {
16744                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
16745                }
16746                Self::currentEpoch(_) => {
16747                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
16748                }
16749                Self::disablePermissionedProverMode(_) => {
16750                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
16751                }
16752                Self::epochFromBlockNumber(_) => {
16753                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
16754                }
16755                Self::epochStartBlock(_) => {
16756                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
16757                }
16758                Self::finalizedState(_) => {
16759                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
16760                }
16761                Self::firstEpoch(_) => {
16762                    <firstEpochCall as alloy_sol_types::SolCall>::SELECTOR
16763                }
16764                Self::genesisStakeTableState(_) => {
16765                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
16766                }
16767                Self::genesisState(_) => {
16768                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
16769                }
16770                Self::getHotShotCommitment(_) => {
16771                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
16772                }
16773                Self::getStateHistoryCount(_) => {
16774                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
16775                }
16776                Self::getVersion(_) => {
16777                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
16778                }
16779                Self::initialize(_) => {
16780                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
16781                }
16782                Self::initializeV2(_) => {
16783                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
16784                }
16785                Self::initializeV3(_) => {
16786                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
16787                }
16788                Self::isEpochRoot(_) => {
16789                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
16790                }
16791                Self::isGtEpochRoot(_) => {
16792                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
16793                }
16794                Self::isPermissionedProverEnabled(_) => {
16795                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
16796                }
16797                Self::lagOverEscapeHatchThreshold(_) => {
16798                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
16799                }
16800                Self::newFinalizedState_0(_) => {
16801                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
16802                }
16803                Self::newFinalizedState_1(_) => {
16804                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
16805                }
16806                Self::newFinalizedState_2(_) => {
16807                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::SELECTOR
16808                }
16809                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
16810                Self::permissionedProver(_) => {
16811                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
16812                }
16813                Self::proxiableUUID(_) => {
16814                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
16815                }
16816                Self::renounceOwnership(_) => {
16817                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
16818                }
16819                Self::setAuthRoot(_) => {
16820                    <setAuthRootCall as alloy_sol_types::SolCall>::SELECTOR
16821                }
16822                Self::setBlocksPerEpoch(_) => {
16823                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
16824                }
16825                Self::setFinalizedState(_) => {
16826                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
16827                }
16828                Self::setHotShotDownSince(_) => {
16829                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
16830                }
16831                Self::setHotShotUp(_) => {
16832                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
16833                }
16834                Self::setPermissionedProver(_) => {
16835                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
16836                }
16837                Self::setStateHistory(_) => {
16838                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
16839                }
16840                Self::setStateHistoryRetentionPeriod(_) => {
16841                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
16842                }
16843                Self::setVotingStakeTableState(_) => {
16844                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
16845                }
16846                Self::setstateHistoryRetentionPeriod(_) => {
16847                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
16848                }
16849                Self::stateHistoryCommitments(_) => {
16850                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
16851                }
16852                Self::stateHistoryFirstIndex(_) => {
16853                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
16854                }
16855                Self::stateHistoryRetentionPeriod(_) => {
16856                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
16857                }
16858                Self::transferOwnership(_) => {
16859                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
16860                }
16861                Self::updateEpochStartBlock(_) => {
16862                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
16863                }
16864                Self::upgradeToAndCall(_) => {
16865                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
16866                }
16867                Self::votingStakeTableState(_) => {
16868                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
16869                }
16870            }
16871        }
16872        #[inline]
16873        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
16874            Self::SELECTORS.get(i).copied()
16875        }
16876        #[inline]
16877        fn valid_selector(selector: [u8; 4]) -> bool {
16878            Self::SELECTORS.binary_search(&selector).is_ok()
16879        }
16880        #[inline]
16881        #[allow(non_snake_case)]
16882        fn abi_decode_raw(
16883            selector: [u8; 4],
16884            data: &[u8],
16885        ) -> alloy_sol_types::Result<Self> {
16886            Self::abi_decode_raw_with_config(
16887                selector,
16888                data,
16889                alloy_sol_types::abi::AbiDecoderConfig::default(),
16890            )
16891        }
16892        #[inline]
16893        #[allow(non_snake_case)]
16894        fn abi_decode_raw_with_config(
16895            selector: [u8; 4],
16896            data: &[u8],
16897            config: alloy_sol_types::abi::AbiDecoderConfig,
16898        ) -> alloy_sol_types::Result<Self> {
16899            static DECODE_SHIMS: &[fn(
16900                &[u8],
16901                alloy_sol_types::abi::AbiDecoderConfig,
16902            ) -> alloy_sol_types::Result<LightClientV3MockCalls>] = &[
16903                {
16904                    fn setPermissionedProver(
16905                        data: &[u8],
16906                        config: alloy_sol_types::abi::AbiDecoderConfig,
16907                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16908                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16909                                data,
16910                                config,
16911                            )
16912                            .map(LightClientV3MockCalls::setPermissionedProver)
16913                    }
16914                    setPermissionedProver
16915                },
16916                {
16917                    fn stateHistoryCommitments(
16918                        data: &[u8],
16919                        config: alloy_sol_types::abi::AbiDecoderConfig,
16920                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16921                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16922                                data,
16923                                config,
16924                            )
16925                            .map(LightClientV3MockCalls::stateHistoryCommitments)
16926                    }
16927                    stateHistoryCommitments
16928                },
16929                {
16930                    fn votingStakeTableState(
16931                        data: &[u8],
16932                        config: alloy_sol_types::abi::AbiDecoderConfig,
16933                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16934                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16935                                data,
16936                                config,
16937                            )
16938                            .map(LightClientV3MockCalls::votingStakeTableState)
16939                    }
16940                    votingStakeTableState
16941                },
16942                {
16943                    fn getVersion(
16944                        data: &[u8],
16945                        config: alloy_sol_types::abi::AbiDecoderConfig,
16946                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16947                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16948                                data,
16949                                config,
16950                            )
16951                            .map(LightClientV3MockCalls::getVersion)
16952                    }
16953                    getVersion
16954                },
16955                {
16956                    fn _getVk(
16957                        data: &[u8],
16958                        config: alloy_sol_types::abi::AbiDecoderConfig,
16959                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16960                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16961                                data,
16962                                config,
16963                            )
16964                            .map(LightClientV3MockCalls::_getVk)
16965                    }
16966                    _getVk
16967                },
16968                {
16969                    fn updateEpochStartBlock(
16970                        data: &[u8],
16971                        config: alloy_sol_types::abi::AbiDecoderConfig,
16972                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16973                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16974                                data,
16975                                config,
16976                            )
16977                            .map(LightClientV3MockCalls::updateEpochStartBlock)
16978                    }
16979                    updateEpochStartBlock
16980                },
16981                {
16982                    fn setAuthRoot(
16983                        data: &[u8],
16984                        config: alloy_sol_types::abi::AbiDecoderConfig,
16985                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16986                        <setAuthRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
16987                                data,
16988                                config,
16989                            )
16990                            .map(LightClientV3MockCalls::setAuthRoot)
16991                    }
16992                    setAuthRoot
16993                },
16994                {
16995                    fn newFinalizedState_0(
16996                        data: &[u8],
16997                        config: alloy_sol_types::abi::AbiDecoderConfig,
16998                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
16999                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17000                                data,
17001                                config,
17002                            )
17003                            .map(LightClientV3MockCalls::newFinalizedState_0)
17004                    }
17005                    newFinalizedState_0
17006                },
17007                {
17008                    fn isEpochRoot(
17009                        data: &[u8],
17010                        config: alloy_sol_types::abi::AbiDecoderConfig,
17011                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17012                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17013                                data,
17014                                config,
17015                            )
17016                            .map(LightClientV3MockCalls::isEpochRoot)
17017                    }
17018                    isEpochRoot
17019                },
17020                {
17021                    fn setHotShotDownSince(
17022                        data: &[u8],
17023                        config: alloy_sol_types::abi::AbiDecoderConfig,
17024                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17025                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17026                                data,
17027                                config,
17028                            )
17029                            .map(LightClientV3MockCalls::setHotShotDownSince)
17030                    }
17031                    setHotShotDownSince
17032                },
17033                {
17034                    fn stateHistoryFirstIndex(
17035                        data: &[u8],
17036                        config: alloy_sol_types::abi::AbiDecoderConfig,
17037                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17038                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17039                                data,
17040                                config,
17041                            )
17042                            .map(LightClientV3MockCalls::stateHistoryFirstIndex)
17043                    }
17044                    stateHistoryFirstIndex
17045                },
17046                {
17047                    fn isGtEpochRoot(
17048                        data: &[u8],
17049                        config: alloy_sol_types::abi::AbiDecoderConfig,
17050                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17051                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17052                                data,
17053                                config,
17054                            )
17055                            .map(LightClientV3MockCalls::isGtEpochRoot)
17056                    }
17057                    isGtEpochRoot
17058                },
17059                {
17060                    fn permissionedProver(
17061                        data: &[u8],
17062                        config: alloy_sol_types::abi::AbiDecoderConfig,
17063                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17064                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17065                                data,
17066                                config,
17067                            )
17068                            .map(LightClientV3MockCalls::permissionedProver)
17069                    }
17070                    permissionedProver
17071                },
17072                {
17073                    fn currentBlockNumber(
17074                        data: &[u8],
17075                        config: alloy_sol_types::abi::AbiDecoderConfig,
17076                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17077                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17078                                data,
17079                                config,
17080                            )
17081                            .map(LightClientV3MockCalls::currentBlockNumber)
17082                    }
17083                    currentBlockNumber
17084                },
17085                {
17086                    fn initializeV3(
17087                        data: &[u8],
17088                        config: alloy_sol_types::abi::AbiDecoderConfig,
17089                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17090                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17091                                data,
17092                                config,
17093                            )
17094                            .map(LightClientV3MockCalls::initializeV3)
17095                    }
17096                    initializeV3
17097                },
17098                {
17099                    fn setBlocksPerEpoch(
17100                        data: &[u8],
17101                        config: alloy_sol_types::abi::AbiDecoderConfig,
17102                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17103                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17104                                data,
17105                                config,
17106                            )
17107                            .map(LightClientV3MockCalls::setBlocksPerEpoch)
17108                    }
17109                    setBlocksPerEpoch
17110                },
17111                {
17112                    fn epochStartBlock(
17113                        data: &[u8],
17114                        config: alloy_sol_types::abi::AbiDecoderConfig,
17115                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17116                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17117                                data,
17118                                config,
17119                            )
17120                            .map(LightClientV3MockCalls::epochStartBlock)
17121                    }
17122                    epochStartBlock
17123                },
17124                {
17125                    fn firstEpoch(
17126                        data: &[u8],
17127                        config: alloy_sol_types::abi::AbiDecoderConfig,
17128                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17129                        <firstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17130                                data,
17131                                config,
17132                            )
17133                            .map(LightClientV3MockCalls::firstEpoch)
17134                    }
17135                    firstEpoch
17136                },
17137                {
17138                    fn genesisStakeTableState(
17139                        data: &[u8],
17140                        config: alloy_sol_types::abi::AbiDecoderConfig,
17141                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17142                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17143                                data,
17144                                config,
17145                            )
17146                            .map(LightClientV3MockCalls::genesisStakeTableState)
17147                    }
17148                    genesisStakeTableState
17149                },
17150                {
17151                    fn setStateHistoryRetentionPeriod(
17152                        data: &[u8],
17153                        config: alloy_sol_types::abi::AbiDecoderConfig,
17154                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17155                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17156                                data,
17157                                config,
17158                            )
17159                            .map(LightClientV3MockCalls::setStateHistoryRetentionPeriod)
17160                    }
17161                    setStateHistoryRetentionPeriod
17162                },
17163                {
17164                    fn upgradeToAndCall(
17165                        data: &[u8],
17166                        config: alloy_sol_types::abi::AbiDecoderConfig,
17167                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17168                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17169                                data,
17170                                config,
17171                            )
17172                            .map(LightClientV3MockCalls::upgradeToAndCall)
17173                    }
17174                    upgradeToAndCall
17175                },
17176                {
17177                    fn proxiableUUID(
17178                        data: &[u8],
17179                        config: alloy_sol_types::abi::AbiDecoderConfig,
17180                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17181                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17182                                data,
17183                                config,
17184                            )
17185                            .map(LightClientV3MockCalls::proxiableUUID)
17186                    }
17187                    proxiableUUID
17188                },
17189                {
17190                    fn setVotingStakeTableState(
17191                        data: &[u8],
17192                        config: alloy_sol_types::abi::AbiDecoderConfig,
17193                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17194                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17195                                data,
17196                                config,
17197                            )
17198                            .map(LightClientV3MockCalls::setVotingStakeTableState)
17199                    }
17200                    setVotingStakeTableState
17201                },
17202                {
17203                    fn disablePermissionedProverMode(
17204                        data: &[u8],
17205                        config: alloy_sol_types::abi::AbiDecoderConfig,
17206                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17207                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17208                                data,
17209                                config,
17210                            )
17211                            .map(LightClientV3MockCalls::disablePermissionedProverMode)
17212                    }
17213                    disablePermissionedProverMode
17214                },
17215                {
17216                    fn renounceOwnership(
17217                        data: &[u8],
17218                        config: alloy_sol_types::abi::AbiDecoderConfig,
17219                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17220                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17221                                data,
17222                                config,
17223                            )
17224                            .map(LightClientV3MockCalls::renounceOwnership)
17225                    }
17226                    renounceOwnership
17227                },
17228                {
17229                    fn newFinalizedState_1(
17230                        data: &[u8],
17231                        config: alloy_sol_types::abi::AbiDecoderConfig,
17232                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17233                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17234                                data,
17235                                config,
17236                            )
17237                            .map(LightClientV3MockCalls::newFinalizedState_1)
17238                    }
17239                    newFinalizedState_1
17240                },
17241                {
17242                    fn currentEpoch(
17243                        data: &[u8],
17244                        config: alloy_sol_types::abi::AbiDecoderConfig,
17245                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17246                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17247                                data,
17248                                config,
17249                            )
17250                            .map(LightClientV3MockCalls::currentEpoch)
17251                    }
17252                    currentEpoch
17253                },
17254                {
17255                    fn isPermissionedProverEnabled(
17256                        data: &[u8],
17257                        config: alloy_sol_types::abi::AbiDecoderConfig,
17258                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17259                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17260                                data,
17261                                config,
17262                            )
17263                            .map(LightClientV3MockCalls::isPermissionedProverEnabled)
17264                    }
17265                    isPermissionedProverEnabled
17266                },
17267                {
17268                    fn getHotShotCommitment(
17269                        data: &[u8],
17270                        config: alloy_sol_types::abi::AbiDecoderConfig,
17271                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17272                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17273                                data,
17274                                config,
17275                            )
17276                            .map(LightClientV3MockCalls::getHotShotCommitment)
17277                    }
17278                    getHotShotCommitment
17279                },
17280                {
17281                    fn owner(
17282                        data: &[u8],
17283                        config: alloy_sol_types::abi::AbiDecoderConfig,
17284                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17285                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17286                                data,
17287                                config,
17288                            )
17289                            .map(LightClientV3MockCalls::owner)
17290                    }
17291                    owner
17292                },
17293                {
17294                    fn epochFromBlockNumber(
17295                        data: &[u8],
17296                        config: alloy_sol_types::abi::AbiDecoderConfig,
17297                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17298                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17299                                data,
17300                                config,
17301                            )
17302                            .map(LightClientV3MockCalls::epochFromBlockNumber)
17303                    }
17304                    epochFromBlockNumber
17305                },
17306                {
17307                    fn setstateHistoryRetentionPeriod(
17308                        data: &[u8],
17309                        config: alloy_sol_types::abi::AbiDecoderConfig,
17310                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17311                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17312                                data,
17313                                config,
17314                            )
17315                            .map(LightClientV3MockCalls::setstateHistoryRetentionPeriod)
17316                    }
17317                    setstateHistoryRetentionPeriod
17318                },
17319                {
17320                    fn authRoot(
17321                        data: &[u8],
17322                        config: alloy_sol_types::abi::AbiDecoderConfig,
17323                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17324                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17325                                data,
17326                                config,
17327                            )
17328                            .map(LightClientV3MockCalls::authRoot)
17329                    }
17330                    authRoot
17331                },
17332                {
17333                    fn initialize(
17334                        data: &[u8],
17335                        config: alloy_sol_types::abi::AbiDecoderConfig,
17336                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17337                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17338                                data,
17339                                config,
17340                            )
17341                            .map(LightClientV3MockCalls::initialize)
17342                    }
17343                    initialize
17344                },
17345                {
17346                    fn finalizedState(
17347                        data: &[u8],
17348                        config: alloy_sol_types::abi::AbiDecoderConfig,
17349                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17350                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17351                                data,
17352                                config,
17353                            )
17354                            .map(LightClientV3MockCalls::finalizedState)
17355                    }
17356                    finalizedState
17357                },
17358                {
17359                    fn newFinalizedState_2(
17360                        data: &[u8],
17361                        config: alloy_sol_types::abi::AbiDecoderConfig,
17362                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17363                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17364                                data,
17365                                config,
17366                            )
17367                            .map(LightClientV3MockCalls::newFinalizedState_2)
17368                    }
17369                    newFinalizedState_2
17370                },
17371                {
17372                    fn UPGRADE_INTERFACE_VERSION(
17373                        data: &[u8],
17374                        config: alloy_sol_types::abi::AbiDecoderConfig,
17375                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17376                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17377                                data,
17378                                config,
17379                            )
17380                            .map(LightClientV3MockCalls::UPGRADE_INTERFACE_VERSION)
17381                    }
17382                    UPGRADE_INTERFACE_VERSION
17383                },
17384                {
17385                    fn initializeV2(
17386                        data: &[u8],
17387                        config: alloy_sol_types::abi::AbiDecoderConfig,
17388                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17389                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17390                                data,
17391                                config,
17392                            )
17393                            .map(LightClientV3MockCalls::initializeV2)
17394                    }
17395                    initializeV2
17396                },
17397                {
17398                    fn setFinalizedState(
17399                        data: &[u8],
17400                        config: alloy_sol_types::abi::AbiDecoderConfig,
17401                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17402                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17403                                data,
17404                                config,
17405                            )
17406                            .map(LightClientV3MockCalls::setFinalizedState)
17407                    }
17408                    setFinalizedState
17409                },
17410                {
17411                    fn stateHistoryRetentionPeriod(
17412                        data: &[u8],
17413                        config: alloy_sol_types::abi::AbiDecoderConfig,
17414                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17415                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17416                                data,
17417                                config,
17418                            )
17419                            .map(LightClientV3MockCalls::stateHistoryRetentionPeriod)
17420                    }
17421                    stateHistoryRetentionPeriod
17422                },
17423                {
17424                    fn setHotShotUp(
17425                        data: &[u8],
17426                        config: alloy_sol_types::abi::AbiDecoderConfig,
17427                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17428                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17429                                data,
17430                                config,
17431                            )
17432                            .map(LightClientV3MockCalls::setHotShotUp)
17433                    }
17434                    setHotShotUp
17435                },
17436                {
17437                    fn genesisState(
17438                        data: &[u8],
17439                        config: alloy_sol_types::abi::AbiDecoderConfig,
17440                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17441                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17442                                data,
17443                                config,
17444                            )
17445                            .map(LightClientV3MockCalls::genesisState)
17446                    }
17447                    genesisState
17448                },
17449                {
17450                    fn lagOverEscapeHatchThreshold(
17451                        data: &[u8],
17452                        config: alloy_sol_types::abi::AbiDecoderConfig,
17453                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17454                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17455                                data,
17456                                config,
17457                            )
17458                            .map(LightClientV3MockCalls::lagOverEscapeHatchThreshold)
17459                    }
17460                    lagOverEscapeHatchThreshold
17461                },
17462                {
17463                    fn blocksPerEpoch(
17464                        data: &[u8],
17465                        config: alloy_sol_types::abi::AbiDecoderConfig,
17466                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17467                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17468                                data,
17469                                config,
17470                            )
17471                            .map(LightClientV3MockCalls::blocksPerEpoch)
17472                    }
17473                    blocksPerEpoch
17474                },
17475                {
17476                    fn transferOwnership(
17477                        data: &[u8],
17478                        config: alloy_sol_types::abi::AbiDecoderConfig,
17479                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17480                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17481                                data,
17482                                config,
17483                            )
17484                            .map(LightClientV3MockCalls::transferOwnership)
17485                    }
17486                    transferOwnership
17487                },
17488                {
17489                    fn setStateHistory(
17490                        data: &[u8],
17491                        config: alloy_sol_types::abi::AbiDecoderConfig,
17492                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17493                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17494                                data,
17495                                config,
17496                            )
17497                            .map(LightClientV3MockCalls::setStateHistory)
17498                    }
17499                    setStateHistory
17500                },
17501                {
17502                    fn getStateHistoryCount(
17503                        data: &[u8],
17504                        config: alloy_sol_types::abi::AbiDecoderConfig,
17505                    ) -> alloy_sol_types::Result<LightClientV3MockCalls> {
17506                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
17507                                data,
17508                                config,
17509                            )
17510                            .map(LightClientV3MockCalls::getStateHistoryCount)
17511                    }
17512                    getStateHistoryCount
17513                },
17514            ];
17515            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17516                return Err(
17517                    alloy_sol_types::Error::unknown_selector(
17518                        <Self as alloy_sol_types::SolInterface>::NAME,
17519                        selector,
17520                    ),
17521                );
17522            };
17523            DECODE_SHIMS[idx](data, config)
17524        }
17525        #[inline]
17526        #[allow(non_snake_case)]
17527        fn abi_decode_raw_validate(
17528            selector: [u8; 4],
17529            data: &[u8],
17530        ) -> alloy_sol_types::Result<Self> {
17531            Self::abi_decode_raw_with_config(
17532                selector,
17533                data,
17534                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
17535            )
17536        }
17537        #[inline]
17538        fn abi_encoded_size(&self) -> usize {
17539            match self {
17540                Self::UPGRADE_INTERFACE_VERSION(inner) => {
17541                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
17542                        inner,
17543                    )
17544                }
17545                Self::_getVk(inner) => {
17546                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17547                }
17548                Self::authRoot(inner) => {
17549                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17550                }
17551                Self::blocksPerEpoch(inner) => {
17552                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
17553                        inner,
17554                    )
17555                }
17556                Self::currentBlockNumber(inner) => {
17557                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
17558                        inner,
17559                    )
17560                }
17561                Self::currentEpoch(inner) => {
17562                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
17563                        inner,
17564                    )
17565                }
17566                Self::disablePermissionedProverMode(inner) => {
17567                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
17568                        inner,
17569                    )
17570                }
17571                Self::epochFromBlockNumber(inner) => {
17572                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
17573                        inner,
17574                    )
17575                }
17576                Self::epochStartBlock(inner) => {
17577                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
17578                        inner,
17579                    )
17580                }
17581                Self::finalizedState(inner) => {
17582                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17583                        inner,
17584                    )
17585                }
17586                Self::firstEpoch(inner) => {
17587                    <firstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17588                }
17589                Self::genesisStakeTableState(inner) => {
17590                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17591                        inner,
17592                    )
17593                }
17594                Self::genesisState(inner) => {
17595                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17596                        inner,
17597                    )
17598                }
17599                Self::getHotShotCommitment(inner) => {
17600                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
17601                        inner,
17602                    )
17603                }
17604                Self::getStateHistoryCount(inner) => {
17605                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
17606                        inner,
17607                    )
17608                }
17609                Self::getVersion(inner) => {
17610                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17611                }
17612                Self::initialize(inner) => {
17613                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17614                }
17615                Self::initializeV2(inner) => {
17616                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
17617                        inner,
17618                    )
17619                }
17620                Self::initializeV3(inner) => {
17621                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
17622                        inner,
17623                    )
17624                }
17625                Self::isEpochRoot(inner) => {
17626                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17627                        inner,
17628                    )
17629                }
17630                Self::isGtEpochRoot(inner) => {
17631                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17632                        inner,
17633                    )
17634                }
17635                Self::isPermissionedProverEnabled(inner) => {
17636                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
17637                        inner,
17638                    )
17639                }
17640                Self::lagOverEscapeHatchThreshold(inner) => {
17641                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
17642                        inner,
17643                    )
17644                }
17645                Self::newFinalizedState_0(inner) => {
17646                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
17647                        inner,
17648                    )
17649                }
17650                Self::newFinalizedState_1(inner) => {
17651                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
17652                        inner,
17653                    )
17654                }
17655                Self::newFinalizedState_2(inner) => {
17656                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
17657                        inner,
17658                    )
17659                }
17660                Self::owner(inner) => {
17661                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
17662                }
17663                Self::permissionedProver(inner) => {
17664                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
17665                        inner,
17666                    )
17667                }
17668                Self::proxiableUUID(inner) => {
17669                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
17670                        inner,
17671                    )
17672                }
17673                Self::renounceOwnership(inner) => {
17674                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
17675                        inner,
17676                    )
17677                }
17678                Self::setAuthRoot(inner) => {
17679                    <setAuthRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
17680                        inner,
17681                    )
17682                }
17683                Self::setBlocksPerEpoch(inner) => {
17684                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
17685                        inner,
17686                    )
17687                }
17688                Self::setFinalizedState(inner) => {
17689                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17690                        inner,
17691                    )
17692                }
17693                Self::setHotShotDownSince(inner) => {
17694                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
17695                        inner,
17696                    )
17697                }
17698                Self::setHotShotUp(inner) => {
17699                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
17700                        inner,
17701                    )
17702                }
17703                Self::setPermissionedProver(inner) => {
17704                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
17705                        inner,
17706                    )
17707                }
17708                Self::setStateHistory(inner) => {
17709                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
17710                        inner,
17711                    )
17712                }
17713                Self::setStateHistoryRetentionPeriod(inner) => {
17714                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17715                        inner,
17716                    )
17717                }
17718                Self::setVotingStakeTableState(inner) => {
17719                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17720                        inner,
17721                    )
17722                }
17723                Self::setstateHistoryRetentionPeriod(inner) => {
17724                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17725                        inner,
17726                    )
17727                }
17728                Self::stateHistoryCommitments(inner) => {
17729                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
17730                        inner,
17731                    )
17732                }
17733                Self::stateHistoryFirstIndex(inner) => {
17734                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
17735                        inner,
17736                    )
17737                }
17738                Self::stateHistoryRetentionPeriod(inner) => {
17739                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
17740                        inner,
17741                    )
17742                }
17743                Self::transferOwnership(inner) => {
17744                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
17745                        inner,
17746                    )
17747                }
17748                Self::updateEpochStartBlock(inner) => {
17749                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
17750                        inner,
17751                    )
17752                }
17753                Self::upgradeToAndCall(inner) => {
17754                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
17755                        inner,
17756                    )
17757                }
17758                Self::votingStakeTableState(inner) => {
17759                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
17760                        inner,
17761                    )
17762                }
17763            }
17764        }
17765        #[inline]
17766        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
17767            match self {
17768                Self::UPGRADE_INTERFACE_VERSION(inner) => {
17769                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
17770                        inner,
17771                        out,
17772                    )
17773                }
17774                Self::_getVk(inner) => {
17775                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17776                }
17777                Self::authRoot(inner) => {
17778                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17779                        inner,
17780                        out,
17781                    )
17782                }
17783                Self::blocksPerEpoch(inner) => {
17784                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17785                        inner,
17786                        out,
17787                    )
17788                }
17789                Self::currentBlockNumber(inner) => {
17790                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
17791                        inner,
17792                        out,
17793                    )
17794                }
17795                Self::currentEpoch(inner) => {
17796                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17797                        inner,
17798                        out,
17799                    )
17800                }
17801                Self::disablePermissionedProverMode(inner) => {
17802                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
17803                        inner,
17804                        out,
17805                    )
17806                }
17807                Self::epochFromBlockNumber(inner) => {
17808                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
17809                        inner,
17810                        out,
17811                    )
17812                }
17813                Self::epochStartBlock(inner) => {
17814                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
17815                        inner,
17816                        out,
17817                    )
17818                }
17819                Self::finalizedState(inner) => {
17820                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17821                        inner,
17822                        out,
17823                    )
17824                }
17825                Self::firstEpoch(inner) => {
17826                    <firstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17827                        inner,
17828                        out,
17829                    )
17830                }
17831                Self::genesisStakeTableState(inner) => {
17832                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17833                        inner,
17834                        out,
17835                    )
17836                }
17837                Self::genesisState(inner) => {
17838                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17839                        inner,
17840                        out,
17841                    )
17842                }
17843                Self::getHotShotCommitment(inner) => {
17844                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
17845                        inner,
17846                        out,
17847                    )
17848                }
17849                Self::getStateHistoryCount(inner) => {
17850                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
17851                        inner,
17852                        out,
17853                    )
17854                }
17855                Self::getVersion(inner) => {
17856                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
17857                        inner,
17858                        out,
17859                    )
17860                }
17861                Self::initialize(inner) => {
17862                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
17863                        inner,
17864                        out,
17865                    )
17866                }
17867                Self::initializeV2(inner) => {
17868                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
17869                        inner,
17870                        out,
17871                    )
17872                }
17873                Self::initializeV3(inner) => {
17874                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
17875                        inner,
17876                        out,
17877                    )
17878                }
17879                Self::isEpochRoot(inner) => {
17880                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17881                        inner,
17882                        out,
17883                    )
17884                }
17885                Self::isGtEpochRoot(inner) => {
17886                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17887                        inner,
17888                        out,
17889                    )
17890                }
17891                Self::isPermissionedProverEnabled(inner) => {
17892                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
17893                        inner,
17894                        out,
17895                    )
17896                }
17897                Self::lagOverEscapeHatchThreshold(inner) => {
17898                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
17899                        inner,
17900                        out,
17901                    )
17902                }
17903                Self::newFinalizedState_0(inner) => {
17904                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
17905                        inner,
17906                        out,
17907                    )
17908                }
17909                Self::newFinalizedState_1(inner) => {
17910                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
17911                        inner,
17912                        out,
17913                    )
17914                }
17915                Self::newFinalizedState_2(inner) => {
17916                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
17917                        inner,
17918                        out,
17919                    )
17920                }
17921                Self::owner(inner) => {
17922                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
17923                }
17924                Self::permissionedProver(inner) => {
17925                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
17926                        inner,
17927                        out,
17928                    )
17929                }
17930                Self::proxiableUUID(inner) => {
17931                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
17932                        inner,
17933                        out,
17934                    )
17935                }
17936                Self::renounceOwnership(inner) => {
17937                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
17938                        inner,
17939                        out,
17940                    )
17941                }
17942                Self::setAuthRoot(inner) => {
17943                    <setAuthRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
17944                        inner,
17945                        out,
17946                    )
17947                }
17948                Self::setBlocksPerEpoch(inner) => {
17949                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
17950                        inner,
17951                        out,
17952                    )
17953                }
17954                Self::setFinalizedState(inner) => {
17955                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17956                        inner,
17957                        out,
17958                    )
17959                }
17960                Self::setHotShotDownSince(inner) => {
17961                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
17962                        inner,
17963                        out,
17964                    )
17965                }
17966                Self::setHotShotUp(inner) => {
17967                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
17968                        inner,
17969                        out,
17970                    )
17971                }
17972                Self::setPermissionedProver(inner) => {
17973                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
17974                        inner,
17975                        out,
17976                    )
17977                }
17978                Self::setStateHistory(inner) => {
17979                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
17980                        inner,
17981                        out,
17982                    )
17983                }
17984                Self::setStateHistoryRetentionPeriod(inner) => {
17985                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17986                        inner,
17987                        out,
17988                    )
17989                }
17990                Self::setVotingStakeTableState(inner) => {
17991                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
17992                        inner,
17993                        out,
17994                    )
17995                }
17996                Self::setstateHistoryRetentionPeriod(inner) => {
17997                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
17998                        inner,
17999                        out,
18000                    )
18001                }
18002                Self::stateHistoryCommitments(inner) => {
18003                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
18004                        inner,
18005                        out,
18006                    )
18007                }
18008                Self::stateHistoryFirstIndex(inner) => {
18009                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
18010                        inner,
18011                        out,
18012                    )
18013                }
18014                Self::stateHistoryRetentionPeriod(inner) => {
18015                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
18016                        inner,
18017                        out,
18018                    )
18019                }
18020                Self::transferOwnership(inner) => {
18021                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
18022                        inner,
18023                        out,
18024                    )
18025                }
18026                Self::updateEpochStartBlock(inner) => {
18027                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
18028                        inner,
18029                        out,
18030                    )
18031                }
18032                Self::upgradeToAndCall(inner) => {
18033                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
18034                        inner,
18035                        out,
18036                    )
18037                }
18038                Self::votingStakeTableState(inner) => {
18039                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
18040                        inner,
18041                        out,
18042                    )
18043                }
18044            }
18045        }
18046    }
18047    ///Container for all the [`LightClientV3Mock`](self) custom errors.
18048    #[derive(Clone)]
18049    #[derive(serde::Serialize, serde::Deserialize)]
18050    #[derive(Debug, PartialEq, Eq, Hash)]
18051    pub enum LightClientV3MockErrors {
18052        #[allow(missing_docs)]
18053        AddressEmptyCode(AddressEmptyCode),
18054        #[allow(missing_docs)]
18055        DeprecatedApi(DeprecatedApi),
18056        #[allow(missing_docs)]
18057        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
18058        #[allow(missing_docs)]
18059        ERC1967NonPayable(ERC1967NonPayable),
18060        #[allow(missing_docs)]
18061        FailedInnerCall(FailedInnerCall),
18062        #[allow(missing_docs)]
18063        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
18064        #[allow(missing_docs)]
18065        InvalidAddress(InvalidAddress),
18066        #[allow(missing_docs)]
18067        InvalidArgs(InvalidArgs),
18068        #[allow(missing_docs)]
18069        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
18070        #[allow(missing_docs)]
18071        InvalidInitialization(InvalidInitialization),
18072        #[allow(missing_docs)]
18073        InvalidMaxStateHistory(InvalidMaxStateHistory),
18074        #[allow(missing_docs)]
18075        InvalidProof(InvalidProof),
18076        #[allow(missing_docs)]
18077        InvalidScalar(InvalidScalar),
18078        #[allow(missing_docs)]
18079        MissingEpochRootUpdate(MissingEpochRootUpdate),
18080        #[allow(missing_docs)]
18081        NoChangeRequired(NoChangeRequired),
18082        #[allow(missing_docs)]
18083        NotInitializing(NotInitializing),
18084        #[allow(missing_docs)]
18085        OutdatedState(OutdatedState),
18086        #[allow(missing_docs)]
18087        OwnableInvalidOwner(OwnableInvalidOwner),
18088        #[allow(missing_docs)]
18089        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
18090        #[allow(missing_docs)]
18091        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
18092        #[allow(missing_docs)]
18093        ProverNotPermissioned(ProverNotPermissioned),
18094        #[allow(missing_docs)]
18095        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
18096        #[allow(missing_docs)]
18097        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
18098        #[allow(missing_docs)]
18099        WrongStakeTableUsed(WrongStakeTableUsed),
18100    }
18101    impl LightClientV3MockErrors {
18102        /// All the selectors of this enum.
18103        ///
18104        /// Note that the selectors might not be in the same order as the variants.
18105        /// No guarantees are made about the order of the selectors.
18106        ///
18107        /// Prefer using `SolInterface` methods instead.
18108        pub const SELECTORS: &'static [[u8; 4usize]] = &[
18109            [5u8, 28u8, 70u8, 239u8],
18110            [5u8, 176u8, 92u8, 204u8],
18111            [8u8, 10u8, 232u8, 217u8],
18112            [9u8, 189u8, 227u8, 57u8],
18113            [17u8, 140u8, 218u8, 167u8],
18114            [20u8, 37u8, 234u8, 66u8],
18115            [30u8, 79u8, 189u8, 247u8],
18116            [47u8, 171u8, 146u8, 202u8],
18117            [76u8, 156u8, 140u8, 227u8],
18118            [78u8, 64u8, 92u8, 141u8],
18119            [81u8, 97u8, 128u8, 137u8],
18120            [97u8, 90u8, 146u8, 100u8],
18121            [153u8, 150u8, 179u8, 21u8],
18122            [161u8, 186u8, 7u8, 238u8],
18123            [163u8, 166u8, 71u8, 128u8],
18124            [168u8, 99u8, 174u8, 201u8],
18125            [170u8, 29u8, 73u8, 164u8],
18126            [176u8, 180u8, 56u8, 119u8],
18127            [179u8, 152u8, 151u8, 159u8],
18128            [215u8, 230u8, 188u8, 248u8],
18129            [224u8, 124u8, 141u8, 186u8],
18130            [230u8, 196u8, 36u8, 123u8],
18131            [244u8, 160u8, 238u8, 224u8],
18132            [249u8, 46u8, 232u8, 169u8],
18133        ];
18134        /// The names of the variants in the same order as `SELECTORS`.
18135        pub const VARIANT_NAMES: &'static [&'static str] = &[
18136            ::core::stringify!(OutdatedState),
18137            ::core::stringify!(InvalidScalar),
18138            ::core::stringify!(MissingEpochRootUpdate),
18139            ::core::stringify!(InvalidProof),
18140            ::core::stringify!(OwnableUnauthorizedAccount),
18141            ::core::stringify!(FailedInnerCall),
18142            ::core::stringify!(OwnableInvalidOwner),
18143            ::core::stringify!(OwnershipCannotBeRenounced),
18144            ::core::stringify!(ERC1967InvalidImplementation),
18145            ::core::stringify!(DeprecatedApi),
18146            ::core::stringify!(WrongStakeTableUsed),
18147            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
18148            ::core::stringify!(AddressEmptyCode),
18149            ::core::stringify!(InvalidArgs),
18150            ::core::stringify!(ProverNotPermissioned),
18151            ::core::stringify!(NoChangeRequired),
18152            ::core::stringify!(UUPSUnsupportedProxiableUUID),
18153            ::core::stringify!(InsufficientSnapshotHistory),
18154            ::core::stringify!(ERC1967NonPayable),
18155            ::core::stringify!(NotInitializing),
18156            ::core::stringify!(UUPSUnauthorizedCallContext),
18157            ::core::stringify!(InvalidAddress),
18158            ::core::stringify!(InvalidMaxStateHistory),
18159            ::core::stringify!(InvalidInitialization),
18160        ];
18161        /// The signatures in the same order as `SELECTORS`.
18162        pub const SIGNATURES: &'static [&'static str] = &[
18163            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
18164            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
18165            <MissingEpochRootUpdate as alloy_sol_types::SolError>::SIGNATURE,
18166            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
18167            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
18168            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
18169            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
18170            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
18171            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
18172            <DeprecatedApi as alloy_sol_types::SolError>::SIGNATURE,
18173            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
18174            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
18175            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
18176            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
18177            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
18178            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
18179            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
18180            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
18181            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
18182            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
18183            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
18184            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
18185            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
18186            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
18187        ];
18188        /// Returns the signature for the given selector, if known.
18189        #[inline]
18190        pub fn signature_by_selector(
18191            selector: [u8; 4usize],
18192        ) -> ::core::option::Option<&'static str> {
18193            match Self::SELECTORS.binary_search(&selector) {
18194                ::core::result::Result::Ok(idx) => {
18195                    ::core::option::Option::Some(Self::SIGNATURES[idx])
18196                }
18197                ::core::result::Result::Err(_) => ::core::option::Option::None,
18198            }
18199        }
18200        /// Returns the enum variant name for the given selector, if known.
18201        #[inline]
18202        pub fn name_by_selector(
18203            selector: [u8; 4usize],
18204        ) -> ::core::option::Option<&'static str> {
18205            let sig = Self::signature_by_selector(selector)?;
18206            sig.split_once('(').map(|(name, _)| name)
18207        }
18208    }
18209    #[automatically_derived]
18210    impl alloy_sol_types::SolInterface for LightClientV3MockErrors {
18211        const NAME: &'static str = "LightClientV3MockErrors";
18212        const MIN_DATA_LENGTH: usize = 0usize;
18213        const COUNT: usize = 24usize;
18214        #[inline]
18215        fn selector(&self) -> [u8; 4] {
18216            match self {
18217                Self::AddressEmptyCode(_) => {
18218                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
18219                }
18220                Self::DeprecatedApi(_) => {
18221                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
18222                }
18223                Self::ERC1967InvalidImplementation(_) => {
18224                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
18225                }
18226                Self::ERC1967NonPayable(_) => {
18227                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
18228                }
18229                Self::FailedInnerCall(_) => {
18230                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
18231                }
18232                Self::InsufficientSnapshotHistory(_) => {
18233                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
18234                }
18235                Self::InvalidAddress(_) => {
18236                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
18237                }
18238                Self::InvalidArgs(_) => {
18239                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
18240                }
18241                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
18242                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
18243                }
18244                Self::InvalidInitialization(_) => {
18245                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
18246                }
18247                Self::InvalidMaxStateHistory(_) => {
18248                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
18249                }
18250                Self::InvalidProof(_) => {
18251                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
18252                }
18253                Self::InvalidScalar(_) => {
18254                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
18255                }
18256                Self::MissingEpochRootUpdate(_) => {
18257                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
18258                }
18259                Self::NoChangeRequired(_) => {
18260                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
18261                }
18262                Self::NotInitializing(_) => {
18263                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
18264                }
18265                Self::OutdatedState(_) => {
18266                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
18267                }
18268                Self::OwnableInvalidOwner(_) => {
18269                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
18270                }
18271                Self::OwnableUnauthorizedAccount(_) => {
18272                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
18273                }
18274                Self::OwnershipCannotBeRenounced(_) => {
18275                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
18276                }
18277                Self::ProverNotPermissioned(_) => {
18278                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
18279                }
18280                Self::UUPSUnauthorizedCallContext(_) => {
18281                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
18282                }
18283                Self::UUPSUnsupportedProxiableUUID(_) => {
18284                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
18285                }
18286                Self::WrongStakeTableUsed(_) => {
18287                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
18288                }
18289            }
18290        }
18291        #[inline]
18292        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
18293            Self::SELECTORS.get(i).copied()
18294        }
18295        #[inline]
18296        fn valid_selector(selector: [u8; 4]) -> bool {
18297            Self::SELECTORS.binary_search(&selector).is_ok()
18298        }
18299        #[inline]
18300        #[allow(non_snake_case)]
18301        fn abi_decode_raw(
18302            selector: [u8; 4],
18303            data: &[u8],
18304        ) -> alloy_sol_types::Result<Self> {
18305            Self::abi_decode_raw_with_config(
18306                selector,
18307                data,
18308                alloy_sol_types::abi::AbiDecoderConfig::default(),
18309            )
18310        }
18311        #[inline]
18312        #[allow(non_snake_case)]
18313        fn abi_decode_raw_with_config(
18314            selector: [u8; 4],
18315            data: &[u8],
18316            config: alloy_sol_types::abi::AbiDecoderConfig,
18317        ) -> alloy_sol_types::Result<Self> {
18318            static DECODE_SHIMS: &[fn(
18319                &[u8],
18320                alloy_sol_types::abi::AbiDecoderConfig,
18321            ) -> alloy_sol_types::Result<LightClientV3MockErrors>] = &[
18322                {
18323                    fn OutdatedState(
18324                        data: &[u8],
18325                        config: alloy_sol_types::abi::AbiDecoderConfig,
18326                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18327                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18328                                data,
18329                                config,
18330                            )
18331                            .map(LightClientV3MockErrors::OutdatedState)
18332                    }
18333                    OutdatedState
18334                },
18335                {
18336                    fn InvalidScalar(
18337                        data: &[u8],
18338                        config: alloy_sol_types::abi::AbiDecoderConfig,
18339                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18340                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18341                                data,
18342                                config,
18343                            )
18344                            .map(LightClientV3MockErrors::InvalidScalar)
18345                    }
18346                    InvalidScalar
18347                },
18348                {
18349                    fn MissingEpochRootUpdate(
18350                        data: &[u8],
18351                        config: alloy_sol_types::abi::AbiDecoderConfig,
18352                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18353                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18354                                data,
18355                                config,
18356                            )
18357                            .map(LightClientV3MockErrors::MissingEpochRootUpdate)
18358                    }
18359                    MissingEpochRootUpdate
18360                },
18361                {
18362                    fn InvalidProof(
18363                        data: &[u8],
18364                        config: alloy_sol_types::abi::AbiDecoderConfig,
18365                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18366                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18367                                data,
18368                                config,
18369                            )
18370                            .map(LightClientV3MockErrors::InvalidProof)
18371                    }
18372                    InvalidProof
18373                },
18374                {
18375                    fn OwnableUnauthorizedAccount(
18376                        data: &[u8],
18377                        config: alloy_sol_types::abi::AbiDecoderConfig,
18378                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18379                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18380                                data,
18381                                config,
18382                            )
18383                            .map(LightClientV3MockErrors::OwnableUnauthorizedAccount)
18384                    }
18385                    OwnableUnauthorizedAccount
18386                },
18387                {
18388                    fn FailedInnerCall(
18389                        data: &[u8],
18390                        config: alloy_sol_types::abi::AbiDecoderConfig,
18391                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18392                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18393                                data,
18394                                config,
18395                            )
18396                            .map(LightClientV3MockErrors::FailedInnerCall)
18397                    }
18398                    FailedInnerCall
18399                },
18400                {
18401                    fn OwnableInvalidOwner(
18402                        data: &[u8],
18403                        config: alloy_sol_types::abi::AbiDecoderConfig,
18404                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18405                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18406                                data,
18407                                config,
18408                            )
18409                            .map(LightClientV3MockErrors::OwnableInvalidOwner)
18410                    }
18411                    OwnableInvalidOwner
18412                },
18413                {
18414                    fn OwnershipCannotBeRenounced(
18415                        data: &[u8],
18416                        config: alloy_sol_types::abi::AbiDecoderConfig,
18417                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18418                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18419                                data,
18420                                config,
18421                            )
18422                            .map(LightClientV3MockErrors::OwnershipCannotBeRenounced)
18423                    }
18424                    OwnershipCannotBeRenounced
18425                },
18426                {
18427                    fn ERC1967InvalidImplementation(
18428                        data: &[u8],
18429                        config: alloy_sol_types::abi::AbiDecoderConfig,
18430                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18431                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18432                                data,
18433                                config,
18434                            )
18435                            .map(LightClientV3MockErrors::ERC1967InvalidImplementation)
18436                    }
18437                    ERC1967InvalidImplementation
18438                },
18439                {
18440                    fn DeprecatedApi(
18441                        data: &[u8],
18442                        config: alloy_sol_types::abi::AbiDecoderConfig,
18443                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18444                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18445                                data,
18446                                config,
18447                            )
18448                            .map(LightClientV3MockErrors::DeprecatedApi)
18449                    }
18450                    DeprecatedApi
18451                },
18452                {
18453                    fn WrongStakeTableUsed(
18454                        data: &[u8],
18455                        config: alloy_sol_types::abi::AbiDecoderConfig,
18456                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18457                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18458                                data,
18459                                config,
18460                            )
18461                            .map(LightClientV3MockErrors::WrongStakeTableUsed)
18462                    }
18463                    WrongStakeTableUsed
18464                },
18465                {
18466                    fn InvalidHotShotBlockForCommitmentCheck(
18467                        data: &[u8],
18468                        config: alloy_sol_types::abi::AbiDecoderConfig,
18469                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18470                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18471                                data,
18472                                config,
18473                            )
18474                            .map(
18475                                LightClientV3MockErrors::InvalidHotShotBlockForCommitmentCheck,
18476                            )
18477                    }
18478                    InvalidHotShotBlockForCommitmentCheck
18479                },
18480                {
18481                    fn AddressEmptyCode(
18482                        data: &[u8],
18483                        config: alloy_sol_types::abi::AbiDecoderConfig,
18484                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18485                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18486                                data,
18487                                config,
18488                            )
18489                            .map(LightClientV3MockErrors::AddressEmptyCode)
18490                    }
18491                    AddressEmptyCode
18492                },
18493                {
18494                    fn InvalidArgs(
18495                        data: &[u8],
18496                        config: alloy_sol_types::abi::AbiDecoderConfig,
18497                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18498                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18499                                data,
18500                                config,
18501                            )
18502                            .map(LightClientV3MockErrors::InvalidArgs)
18503                    }
18504                    InvalidArgs
18505                },
18506                {
18507                    fn ProverNotPermissioned(
18508                        data: &[u8],
18509                        config: alloy_sol_types::abi::AbiDecoderConfig,
18510                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18511                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18512                                data,
18513                                config,
18514                            )
18515                            .map(LightClientV3MockErrors::ProverNotPermissioned)
18516                    }
18517                    ProverNotPermissioned
18518                },
18519                {
18520                    fn NoChangeRequired(
18521                        data: &[u8],
18522                        config: alloy_sol_types::abi::AbiDecoderConfig,
18523                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18524                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18525                                data,
18526                                config,
18527                            )
18528                            .map(LightClientV3MockErrors::NoChangeRequired)
18529                    }
18530                    NoChangeRequired
18531                },
18532                {
18533                    fn UUPSUnsupportedProxiableUUID(
18534                        data: &[u8],
18535                        config: alloy_sol_types::abi::AbiDecoderConfig,
18536                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18537                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18538                                data,
18539                                config,
18540                            )
18541                            .map(LightClientV3MockErrors::UUPSUnsupportedProxiableUUID)
18542                    }
18543                    UUPSUnsupportedProxiableUUID
18544                },
18545                {
18546                    fn InsufficientSnapshotHistory(
18547                        data: &[u8],
18548                        config: alloy_sol_types::abi::AbiDecoderConfig,
18549                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18550                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18551                                data,
18552                                config,
18553                            )
18554                            .map(LightClientV3MockErrors::InsufficientSnapshotHistory)
18555                    }
18556                    InsufficientSnapshotHistory
18557                },
18558                {
18559                    fn ERC1967NonPayable(
18560                        data: &[u8],
18561                        config: alloy_sol_types::abi::AbiDecoderConfig,
18562                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18563                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18564                                data,
18565                                config,
18566                            )
18567                            .map(LightClientV3MockErrors::ERC1967NonPayable)
18568                    }
18569                    ERC1967NonPayable
18570                },
18571                {
18572                    fn NotInitializing(
18573                        data: &[u8],
18574                        config: alloy_sol_types::abi::AbiDecoderConfig,
18575                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18576                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18577                                data,
18578                                config,
18579                            )
18580                            .map(LightClientV3MockErrors::NotInitializing)
18581                    }
18582                    NotInitializing
18583                },
18584                {
18585                    fn UUPSUnauthorizedCallContext(
18586                        data: &[u8],
18587                        config: alloy_sol_types::abi::AbiDecoderConfig,
18588                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18589                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18590                                data,
18591                                config,
18592                            )
18593                            .map(LightClientV3MockErrors::UUPSUnauthorizedCallContext)
18594                    }
18595                    UUPSUnauthorizedCallContext
18596                },
18597                {
18598                    fn InvalidAddress(
18599                        data: &[u8],
18600                        config: alloy_sol_types::abi::AbiDecoderConfig,
18601                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18602                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18603                                data,
18604                                config,
18605                            )
18606                            .map(LightClientV3MockErrors::InvalidAddress)
18607                    }
18608                    InvalidAddress
18609                },
18610                {
18611                    fn InvalidMaxStateHistory(
18612                        data: &[u8],
18613                        config: alloy_sol_types::abi::AbiDecoderConfig,
18614                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18615                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18616                                data,
18617                                config,
18618                            )
18619                            .map(LightClientV3MockErrors::InvalidMaxStateHistory)
18620                    }
18621                    InvalidMaxStateHistory
18622                },
18623                {
18624                    fn InvalidInitialization(
18625                        data: &[u8],
18626                        config: alloy_sol_types::abi::AbiDecoderConfig,
18627                    ) -> alloy_sol_types::Result<LightClientV3MockErrors> {
18628                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_with_config(
18629                                data,
18630                                config,
18631                            )
18632                            .map(LightClientV3MockErrors::InvalidInitialization)
18633                    }
18634                    InvalidInitialization
18635                },
18636            ];
18637            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
18638                return Err(
18639                    alloy_sol_types::Error::unknown_selector(
18640                        <Self as alloy_sol_types::SolInterface>::NAME,
18641                        selector,
18642                    ),
18643                );
18644            };
18645            DECODE_SHIMS[idx](data, config)
18646        }
18647        #[inline]
18648        #[allow(non_snake_case)]
18649        fn abi_decode_raw_validate(
18650            selector: [u8; 4],
18651            data: &[u8],
18652        ) -> alloy_sol_types::Result<Self> {
18653            Self::abi_decode_raw_with_config(
18654                selector,
18655                data,
18656                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
18657            )
18658        }
18659        #[inline]
18660        fn abi_encoded_size(&self) -> usize {
18661            match self {
18662                Self::AddressEmptyCode(inner) => {
18663                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
18664                        inner,
18665                    )
18666                }
18667                Self::DeprecatedApi(inner) => {
18668                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
18669                }
18670                Self::ERC1967InvalidImplementation(inner) => {
18671                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
18672                        inner,
18673                    )
18674                }
18675                Self::ERC1967NonPayable(inner) => {
18676                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
18677                        inner,
18678                    )
18679                }
18680                Self::FailedInnerCall(inner) => {
18681                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
18682                        inner,
18683                    )
18684                }
18685                Self::InsufficientSnapshotHistory(inner) => {
18686                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
18687                        inner,
18688                    )
18689                }
18690                Self::InvalidAddress(inner) => {
18691                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
18692                        inner,
18693                    )
18694                }
18695                Self::InvalidArgs(inner) => {
18696                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
18697                }
18698                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
18699                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
18700                        inner,
18701                    )
18702                }
18703                Self::InvalidInitialization(inner) => {
18704                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
18705                        inner,
18706                    )
18707                }
18708                Self::InvalidMaxStateHistory(inner) => {
18709                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
18710                        inner,
18711                    )
18712                }
18713                Self::InvalidProof(inner) => {
18714                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
18715                }
18716                Self::InvalidScalar(inner) => {
18717                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
18718                }
18719                Self::MissingEpochRootUpdate(inner) => {
18720                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
18721                        inner,
18722                    )
18723                }
18724                Self::NoChangeRequired(inner) => {
18725                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
18726                        inner,
18727                    )
18728                }
18729                Self::NotInitializing(inner) => {
18730                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
18731                        inner,
18732                    )
18733                }
18734                Self::OutdatedState(inner) => {
18735                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
18736                }
18737                Self::OwnableInvalidOwner(inner) => {
18738                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
18739                        inner,
18740                    )
18741                }
18742                Self::OwnableUnauthorizedAccount(inner) => {
18743                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
18744                        inner,
18745                    )
18746                }
18747                Self::OwnershipCannotBeRenounced(inner) => {
18748                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
18749                        inner,
18750                    )
18751                }
18752                Self::ProverNotPermissioned(inner) => {
18753                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
18754                        inner,
18755                    )
18756                }
18757                Self::UUPSUnauthorizedCallContext(inner) => {
18758                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
18759                        inner,
18760                    )
18761                }
18762                Self::UUPSUnsupportedProxiableUUID(inner) => {
18763                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
18764                        inner,
18765                    )
18766                }
18767                Self::WrongStakeTableUsed(inner) => {
18768                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
18769                        inner,
18770                    )
18771                }
18772            }
18773        }
18774        #[inline]
18775        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
18776            match self {
18777                Self::AddressEmptyCode(inner) => {
18778                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
18779                        inner,
18780                        out,
18781                    )
18782                }
18783                Self::DeprecatedApi(inner) => {
18784                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
18785                        inner,
18786                        out,
18787                    )
18788                }
18789                Self::ERC1967InvalidImplementation(inner) => {
18790                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
18791                        inner,
18792                        out,
18793                    )
18794                }
18795                Self::ERC1967NonPayable(inner) => {
18796                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
18797                        inner,
18798                        out,
18799                    )
18800                }
18801                Self::FailedInnerCall(inner) => {
18802                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
18803                        inner,
18804                        out,
18805                    )
18806                }
18807                Self::InsufficientSnapshotHistory(inner) => {
18808                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
18809                        inner,
18810                        out,
18811                    )
18812                }
18813                Self::InvalidAddress(inner) => {
18814                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
18815                        inner,
18816                        out,
18817                    )
18818                }
18819                Self::InvalidArgs(inner) => {
18820                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
18821                        inner,
18822                        out,
18823                    )
18824                }
18825                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
18826                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
18827                        inner,
18828                        out,
18829                    )
18830                }
18831                Self::InvalidInitialization(inner) => {
18832                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
18833                        inner,
18834                        out,
18835                    )
18836                }
18837                Self::InvalidMaxStateHistory(inner) => {
18838                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
18839                        inner,
18840                        out,
18841                    )
18842                }
18843                Self::InvalidProof(inner) => {
18844                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
18845                        inner,
18846                        out,
18847                    )
18848                }
18849                Self::InvalidScalar(inner) => {
18850                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
18851                        inner,
18852                        out,
18853                    )
18854                }
18855                Self::MissingEpochRootUpdate(inner) => {
18856                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
18857                        inner,
18858                        out,
18859                    )
18860                }
18861                Self::NoChangeRequired(inner) => {
18862                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
18863                        inner,
18864                        out,
18865                    )
18866                }
18867                Self::NotInitializing(inner) => {
18868                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
18869                        inner,
18870                        out,
18871                    )
18872                }
18873                Self::OutdatedState(inner) => {
18874                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
18875                        inner,
18876                        out,
18877                    )
18878                }
18879                Self::OwnableInvalidOwner(inner) => {
18880                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
18881                        inner,
18882                        out,
18883                    )
18884                }
18885                Self::OwnableUnauthorizedAccount(inner) => {
18886                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
18887                        inner,
18888                        out,
18889                    )
18890                }
18891                Self::OwnershipCannotBeRenounced(inner) => {
18892                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
18893                        inner,
18894                        out,
18895                    )
18896                }
18897                Self::ProverNotPermissioned(inner) => {
18898                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
18899                        inner,
18900                        out,
18901                    )
18902                }
18903                Self::UUPSUnauthorizedCallContext(inner) => {
18904                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
18905                        inner,
18906                        out,
18907                    )
18908                }
18909                Self::UUPSUnsupportedProxiableUUID(inner) => {
18910                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
18911                        inner,
18912                        out,
18913                    )
18914                }
18915                Self::WrongStakeTableUsed(inner) => {
18916                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
18917                        inner,
18918                        out,
18919                    )
18920                }
18921            }
18922        }
18923    }
18924    #[automatically_derived]
18925    impl LightClientV3MockErrors {
18926        /**Creates a [`AddressEmptyCode`] error.
18927
18928```solidity
18929error AddressEmptyCode(address)
18930```*/
18931        #[inline]
18932        pub fn address_empty_code(target: alloy::sol_types::private::Address) -> Self {
18933            Self::AddressEmptyCode(AddressEmptyCode { target: target })
18934        }
18935        /**Creates a [`DeprecatedApi`] error.
18936
18937```solidity
18938error DeprecatedApi()
18939```*/
18940        #[inline]
18941        pub fn deprecated_api() -> Self {
18942            Self::DeprecatedApi(DeprecatedApi)
18943        }
18944        /**Creates a [`ERC1967InvalidImplementation`] error.
18945
18946```solidity
18947error ERC1967InvalidImplementation(address)
18948```*/
18949        #[inline]
18950        pub fn erc_1967_invalid_implementation(
18951            implementation: alloy::sol_types::private::Address,
18952        ) -> Self {
18953            Self::ERC1967InvalidImplementation(ERC1967InvalidImplementation {
18954                implementation: implementation,
18955            })
18956        }
18957        /**Creates a [`ERC1967NonPayable`] error.
18958
18959```solidity
18960error ERC1967NonPayable()
18961```*/
18962        #[inline]
18963        pub fn erc_1967_non_payable() -> Self {
18964            Self::ERC1967NonPayable(ERC1967NonPayable)
18965        }
18966        /**Creates a [`FailedInnerCall`] error.
18967
18968```solidity
18969error FailedInnerCall()
18970```*/
18971        #[inline]
18972        pub fn failed_inner_call() -> Self {
18973            Self::FailedInnerCall(FailedInnerCall)
18974        }
18975        /**Creates a [`InsufficientSnapshotHistory`] error.
18976
18977```solidity
18978error InsufficientSnapshotHistory()
18979```*/
18980        #[inline]
18981        pub fn insufficient_snapshot_history() -> Self {
18982            Self::InsufficientSnapshotHistory(InsufficientSnapshotHistory)
18983        }
18984        /**Creates a [`InvalidAddress`] error.
18985
18986```solidity
18987error InvalidAddress()
18988```*/
18989        #[inline]
18990        pub fn invalid_address() -> Self {
18991            Self::InvalidAddress(InvalidAddress)
18992        }
18993        /**Creates a [`InvalidArgs`] error.
18994
18995```solidity
18996error InvalidArgs()
18997```*/
18998        #[inline]
18999        pub fn invalid_args() -> Self {
19000            Self::InvalidArgs(InvalidArgs)
19001        }
19002        /**Creates a [`InvalidHotShotBlockForCommitmentCheck`] error.
19003
19004```solidity
19005error InvalidHotShotBlockForCommitmentCheck()
19006```*/
19007        #[inline]
19008        pub fn invalid_hot_shot_block_for_commitment_check() -> Self {
19009            Self::InvalidHotShotBlockForCommitmentCheck(
19010                InvalidHotShotBlockForCommitmentCheck,
19011            )
19012        }
19013        /**Creates a [`InvalidInitialization`] error.
19014
19015```solidity
19016error InvalidInitialization()
19017```*/
19018        #[inline]
19019        pub fn invalid_initialization() -> Self {
19020            Self::InvalidInitialization(InvalidInitialization)
19021        }
19022        /**Creates a [`InvalidMaxStateHistory`] error.
19023
19024```solidity
19025error InvalidMaxStateHistory()
19026```*/
19027        #[inline]
19028        pub fn invalid_max_state_history() -> Self {
19029            Self::InvalidMaxStateHistory(InvalidMaxStateHistory)
19030        }
19031        /**Creates a [`InvalidProof`] error.
19032
19033```solidity
19034error InvalidProof()
19035```*/
19036        #[inline]
19037        pub fn invalid_proof() -> Self {
19038            Self::InvalidProof(InvalidProof)
19039        }
19040        /**Creates a [`InvalidScalar`] error.
19041
19042```solidity
19043error InvalidScalar()
19044```*/
19045        #[inline]
19046        pub fn invalid_scalar() -> Self {
19047            Self::InvalidScalar(InvalidScalar)
19048        }
19049        /**Creates a [`MissingEpochRootUpdate`] error.
19050
19051```solidity
19052error MissingEpochRootUpdate()
19053```*/
19054        #[inline]
19055        pub fn missing_epoch_root_update() -> Self {
19056            Self::MissingEpochRootUpdate(MissingEpochRootUpdate)
19057        }
19058        /**Creates a [`NoChangeRequired`] error.
19059
19060```solidity
19061error NoChangeRequired()
19062```*/
19063        #[inline]
19064        pub fn no_change_required() -> Self {
19065            Self::NoChangeRequired(NoChangeRequired)
19066        }
19067        /**Creates a [`NotInitializing`] error.
19068
19069```solidity
19070error NotInitializing()
19071```*/
19072        #[inline]
19073        pub fn not_initializing() -> Self {
19074            Self::NotInitializing(NotInitializing)
19075        }
19076        /**Creates a [`OutdatedState`] error.
19077
19078```solidity
19079error OutdatedState()
19080```*/
19081        #[inline]
19082        pub fn outdated_state() -> Self {
19083            Self::OutdatedState(OutdatedState)
19084        }
19085        /**Creates a [`OwnableInvalidOwner`] error.
19086
19087```solidity
19088error OwnableInvalidOwner(address)
19089```*/
19090        #[inline]
19091        pub fn ownable_invalid_owner(owner: alloy::sol_types::private::Address) -> Self {
19092            Self::OwnableInvalidOwner(OwnableInvalidOwner {
19093                owner: owner,
19094            })
19095        }
19096        /**Creates a [`OwnableUnauthorizedAccount`] error.
19097
19098```solidity
19099error OwnableUnauthorizedAccount(address)
19100```*/
19101        #[inline]
19102        pub fn ownable_unauthorized_account(
19103            account: alloy::sol_types::private::Address,
19104        ) -> Self {
19105            Self::OwnableUnauthorizedAccount(OwnableUnauthorizedAccount {
19106                account: account,
19107            })
19108        }
19109        /**Creates a [`OwnershipCannotBeRenounced`] error.
19110
19111```solidity
19112error OwnershipCannotBeRenounced()
19113```*/
19114        #[inline]
19115        pub fn ownership_cannot_be_renounced() -> Self {
19116            Self::OwnershipCannotBeRenounced(OwnershipCannotBeRenounced)
19117        }
19118        /**Creates a [`ProverNotPermissioned`] error.
19119
19120```solidity
19121error ProverNotPermissioned()
19122```*/
19123        #[inline]
19124        pub fn prover_not_permissioned() -> Self {
19125            Self::ProverNotPermissioned(ProverNotPermissioned)
19126        }
19127        /**Creates a [`UUPSUnauthorizedCallContext`] error.
19128
19129```solidity
19130error UUPSUnauthorizedCallContext()
19131```*/
19132        #[inline]
19133        pub fn uups_unauthorized_call_context() -> Self {
19134            Self::UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext)
19135        }
19136        /**Creates a [`UUPSUnsupportedProxiableUUID`] error.
19137
19138```solidity
19139error UUPSUnsupportedProxiableUUID(bytes32)
19140```*/
19141        #[inline]
19142        pub fn uups_unsupported_proxiable_uuid(
19143            slot: alloy::sol_types::private::FixedBytes<32>,
19144        ) -> Self {
19145            Self::UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID {
19146                slot: slot,
19147            })
19148        }
19149        /**Creates a [`WrongStakeTableUsed`] error.
19150
19151```solidity
19152error WrongStakeTableUsed()
19153```*/
19154        #[inline]
19155        pub fn wrong_stake_table_used() -> Self {
19156            Self::WrongStakeTableUsed(WrongStakeTableUsed)
19157        }
19158    }
19159    ///Container for all the [`LightClientV3Mock`](self) events.
19160    #[derive(Clone)]
19161    #[derive(serde::Serialize, serde::Deserialize)]
19162    #[derive(Debug, PartialEq, Eq, Hash)]
19163    pub enum LightClientV3MockEvents {
19164        #[allow(missing_docs)]
19165        Initialized(Initialized),
19166        #[allow(missing_docs)]
19167        NewEpoch(NewEpoch),
19168        #[allow(missing_docs)]
19169        NewState(NewState),
19170        #[allow(missing_docs)]
19171        OwnershipTransferred(OwnershipTransferred),
19172        #[allow(missing_docs)]
19173        PermissionedProverNotRequired(PermissionedProverNotRequired),
19174        #[allow(missing_docs)]
19175        PermissionedProverRequired(PermissionedProverRequired),
19176        #[allow(missing_docs)]
19177        Upgrade(Upgrade),
19178        #[allow(missing_docs)]
19179        Upgraded(Upgraded),
19180    }
19181    impl LightClientV3MockEvents {
19182        /// All the selectors of this enum.
19183        ///
19184        /// Note that the selectors might not be in the same order as the variants.
19185        /// No guarantees are made about the order of the selectors.
19186        ///
19187        /// Prefer using `SolInterface` methods instead.
19188        pub const SELECTORS: &'static [[u8; 32usize]] = &[
19189            [
19190                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
19191                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
19192                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
19193            ],
19194            [
19195                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
19196                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
19197                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
19198            ],
19199            [
19200                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
19201                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
19202                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
19203            ],
19204            [
19205                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
19206                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
19207                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
19208            ],
19209            [
19210                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
19211                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
19212                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
19213            ],
19214            [
19215                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
19216                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
19217                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
19218            ],
19219            [
19220                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
19221                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
19222                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
19223            ],
19224            [
19225                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
19226                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
19227                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
19228            ],
19229        ];
19230        /// The names of the variants in the same order as `SELECTORS`.
19231        pub const VARIANT_NAMES: &'static [&'static str] = &[
19232            ::core::stringify!(NewEpoch),
19233            ::core::stringify!(PermissionedProverRequired),
19234            ::core::stringify!(OwnershipTransferred),
19235            ::core::stringify!(PermissionedProverNotRequired),
19236            ::core::stringify!(NewState),
19237            ::core::stringify!(Upgraded),
19238            ::core::stringify!(Initialized),
19239            ::core::stringify!(Upgrade),
19240        ];
19241        /// The signatures in the same order as `SELECTORS`.
19242        pub const SIGNATURES: &'static [&'static str] = &[
19243            <NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE,
19244            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
19245            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
19246            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
19247            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
19248            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
19249            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
19250            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
19251        ];
19252        /// Returns the signature for the given selector, if known.
19253        #[inline]
19254        pub fn signature_by_selector(
19255            selector: [u8; 32usize],
19256        ) -> ::core::option::Option<&'static str> {
19257            match Self::SELECTORS.binary_search(&selector) {
19258                ::core::result::Result::Ok(idx) => {
19259                    ::core::option::Option::Some(Self::SIGNATURES[idx])
19260                }
19261                ::core::result::Result::Err(_) => ::core::option::Option::None,
19262            }
19263        }
19264        /// Returns the enum variant name for the given selector, if known.
19265        #[inline]
19266        pub fn name_by_selector(
19267            selector: [u8; 32usize],
19268        ) -> ::core::option::Option<&'static str> {
19269            let sig = Self::signature_by_selector(selector)?;
19270            sig.split_once('(').map(|(name, _)| name)
19271        }
19272    }
19273    #[automatically_derived]
19274    impl alloy_sol_types::SolEventInterface for LightClientV3MockEvents {
19275        const NAME: &'static str = "LightClientV3MockEvents";
19276        const COUNT: usize = 8usize;
19277        fn decode_raw_log(
19278            topics: &[alloy_sol_types::Word],
19279            data: &[u8],
19280        ) -> alloy_sol_types::Result<Self> {
19281            <Self as alloy_sol_types::SolEventInterface>::decode_raw_log_with_config(
19282                topics,
19283                data,
19284                alloy_sol_types::abi::AbiDecoderConfig::default(),
19285            )
19286        }
19287        fn decode_raw_log_with_config(
19288            topics: &[alloy_sol_types::Word],
19289            data: &[u8],
19290            config: alloy_sol_types::abi::AbiDecoderConfig,
19291        ) -> alloy_sol_types::Result<Self> {
19292            match topics.first().copied() {
19293                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
19294                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
19295                            topics,
19296                            data,
19297                            config,
19298                        )
19299                        .map(Self::Initialized)
19300                }
19301                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
19302                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
19303                            topics,
19304                            data,
19305                            config,
19306                        )
19307                        .map(Self::NewEpoch)
19308                }
19309                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
19310                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
19311                            topics,
19312                            data,
19313                            config,
19314                        )
19315                        .map(Self::NewState)
19316                }
19317                Some(
19318                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
19319                ) => {
19320                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
19321                            topics,
19322                            data,
19323                            config,
19324                        )
19325                        .map(Self::OwnershipTransferred)
19326                }
19327                Some(
19328                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
19329                ) => {
19330                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
19331                            topics,
19332                            data,
19333                            config,
19334                        )
19335                        .map(Self::PermissionedProverNotRequired)
19336                }
19337                Some(
19338                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
19339                ) => {
19340                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
19341                            topics,
19342                            data,
19343                            config,
19344                        )
19345                        .map(Self::PermissionedProverRequired)
19346                }
19347                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
19348                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
19349                            topics,
19350                            data,
19351                            config,
19352                        )
19353                        .map(Self::Upgrade)
19354                }
19355                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
19356                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
19357                            topics,
19358                            data,
19359                            config,
19360                        )
19361                        .map(Self::Upgraded)
19362                }
19363                _ => {
19364                    if topics
19365                        .len()
19366                        .checked_mul(alloy_sol_types::Word::len_bytes())
19367                        .and_then(|len| len.checked_add(data.len()))
19368                        .is_none_or(|len| len > config.get_memory_limit())
19369                    {
19370                        return alloy_sol_types::private::Err(
19371                            alloy_sol_types::Error::MemoryLimitExceeded(
19372                                config.get_memory_limit(),
19373                            ),
19374                        );
19375                    }
19376                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
19377                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
19378                        log: alloy_sol_types::private::Box::new(
19379                            alloy_sol_types::private::LogData::new_unchecked(
19380                                topics.to_vec(),
19381                                data.to_vec().into(),
19382                            ),
19383                        ),
19384                    })
19385                }
19386            }
19387        }
19388    }
19389    #[automatically_derived]
19390    impl alloy_sol_types::private::IntoLogData for LightClientV3MockEvents {
19391        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
19392            match self {
19393                Self::Initialized(inner) => {
19394                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19395                }
19396                Self::NewEpoch(inner) => {
19397                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19398                }
19399                Self::NewState(inner) => {
19400                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19401                }
19402                Self::OwnershipTransferred(inner) => {
19403                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19404                }
19405                Self::PermissionedProverNotRequired(inner) => {
19406                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19407                }
19408                Self::PermissionedProverRequired(inner) => {
19409                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19410                }
19411                Self::Upgrade(inner) => {
19412                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19413                }
19414                Self::Upgraded(inner) => {
19415                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
19416                }
19417            }
19418        }
19419        fn into_log_data(self) -> alloy_sol_types::private::LogData {
19420            match self {
19421                Self::Initialized(inner) => {
19422                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19423                }
19424                Self::NewEpoch(inner) => {
19425                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19426                }
19427                Self::NewState(inner) => {
19428                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19429                }
19430                Self::OwnershipTransferred(inner) => {
19431                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19432                }
19433                Self::PermissionedProverNotRequired(inner) => {
19434                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19435                }
19436                Self::PermissionedProverRequired(inner) => {
19437                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19438                }
19439                Self::Upgrade(inner) => {
19440                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19441                }
19442                Self::Upgraded(inner) => {
19443                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
19444                }
19445            }
19446        }
19447    }
19448    #[automatically_derived]
19449    impl LightClientV3MockEvents {
19450        /**Creates a [`Initialized`] event.
19451
19452```solidity
19453event Initialized(uint64)
19454```*/
19455        #[inline]
19456        pub fn initialized(version: u64) -> Self {
19457            Self::Initialized(Initialized { version: version })
19458        }
19459        /**Creates a [`NewEpoch`] event.
19460
19461```solidity
19462event NewEpoch(uint64)
19463```*/
19464        #[inline]
19465        pub fn new_epoch(epoch: u64) -> Self {
19466            Self::NewEpoch(NewEpoch { epoch: epoch })
19467        }
19468        /**Creates a [`NewState`] event.
19469
19470```solidity
19471event NewState(uint64,uint64,uint256)
19472```*/
19473        #[inline]
19474        pub fn new_state(
19475            view_num: u64,
19476            block_height: u64,
19477            block_comm_root: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
19478        ) -> Self {
19479            Self::NewState(NewState {
19480                viewNum: view_num,
19481                blockHeight: block_height,
19482                blockCommRoot: block_comm_root,
19483            })
19484        }
19485        /**Creates a [`OwnershipTransferred`] event.
19486
19487```solidity
19488event OwnershipTransferred(address,address)
19489```*/
19490        #[inline]
19491        pub fn ownership_transferred(
19492            previous_owner: alloy::sol_types::private::Address,
19493            new_owner: alloy::sol_types::private::Address,
19494        ) -> Self {
19495            Self::OwnershipTransferred(OwnershipTransferred {
19496                previousOwner: previous_owner,
19497                newOwner: new_owner,
19498            })
19499        }
19500        /**Creates a [`PermissionedProverNotRequired`] event.
19501
19502```solidity
19503event PermissionedProverNotRequired()
19504```*/
19505        #[inline]
19506        pub fn permissioned_prover_not_required() -> Self {
19507            Self::PermissionedProverNotRequired(PermissionedProverNotRequired)
19508        }
19509        /**Creates a [`PermissionedProverRequired`] event.
19510
19511```solidity
19512event PermissionedProverRequired(address)
19513```*/
19514        #[inline]
19515        pub fn permissioned_prover_required(
19516            permissioned_prover: alloy::sol_types::private::Address,
19517        ) -> Self {
19518            Self::PermissionedProverRequired(PermissionedProverRequired {
19519                permissionedProver: permissioned_prover,
19520            })
19521        }
19522        /**Creates a [`Upgrade`] event.
19523
19524```solidity
19525event Upgrade(address)
19526```*/
19527        #[inline]
19528        pub fn upgrade(implementation: alloy::sol_types::private::Address) -> Self {
19529            Self::Upgrade(Upgrade {
19530                implementation: implementation,
19531            })
19532        }
19533        /**Creates a [`Upgraded`] event.
19534
19535```solidity
19536event Upgraded(address)
19537```*/
19538        #[inline]
19539        pub fn upgraded(implementation: alloy::sol_types::private::Address) -> Self {
19540            Self::Upgraded(Upgraded {
19541                implementation: implementation,
19542            })
19543        }
19544    }
19545    use alloy::contract as alloy_contract;
19546    /**Creates a new wrapper around an on-chain [`LightClientV3Mock`](self) contract instance.
19547
19548See the [wrapper's documentation](`LightClientV3MockInstance`) for more details.*/
19549    #[inline]
19550    pub const fn new<
19551        P: alloy_contract::private::Provider<N>,
19552        N: alloy_contract::private::Network,
19553    >(
19554        address: alloy_sol_types::private::Address,
19555        __provider: P,
19556    ) -> LightClientV3MockInstance<P, N> {
19557        LightClientV3MockInstance::<P, N>::new(address, __provider)
19558    }
19559    /**Deploys this contract using the given `provider` and constructor arguments, if any.
19560
19561Returns a new instance of the contract, if the deployment was successful.
19562
19563For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
19564    #[inline]
19565    pub fn deploy<
19566        P: alloy_contract::private::Provider<N>,
19567        N: alloy_contract::private::Network,
19568    >(
19569        __provider: P,
19570    ) -> impl ::core::future::Future<
19571        Output = alloy_contract::Result<LightClientV3MockInstance<P, N>>,
19572    > {
19573        LightClientV3MockInstance::<P, N>::deploy(__provider)
19574    }
19575    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
19576and constructor arguments, if any.
19577
19578This is a simple wrapper around creating a `RawCallBuilder` with the data set to
19579the bytecode concatenated with the constructor's ABI-encoded arguments.*/
19580    #[inline]
19581    pub fn deploy_builder<
19582        P: alloy_contract::private::Provider<N>,
19583        N: alloy_contract::private::Network,
19584    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
19585        LightClientV3MockInstance::<P, N>::deploy_builder(__provider)
19586    }
19587    /**A [`LightClientV3Mock`](self) instance.
19588
19589Contains type-safe methods for interacting with an on-chain instance of the
19590[`LightClientV3Mock`](self) contract located at a given `address`, using a given
19591provider `P`.
19592
19593If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
19594documentation on how to provide it), the `deploy` and `deploy_builder` methods can
19595be used to deploy a new instance of the contract.
19596
19597See the [module-level documentation](self) for all the available methods.*/
19598    #[derive(Clone)]
19599    pub struct LightClientV3MockInstance<P, N = alloy_contract::private::Ethereum> {
19600        address: alloy_sol_types::private::Address,
19601        provider: P,
19602        _network: ::core::marker::PhantomData<N>,
19603    }
19604    #[automatically_derived]
19605    impl<P, N> ::core::fmt::Debug for LightClientV3MockInstance<P, N> {
19606        #[inline]
19607        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
19608            f.debug_tuple("LightClientV3MockInstance").field(&self.address).finish()
19609        }
19610    }
19611    /// Instantiation and getters/setters.
19612    impl<
19613        P: alloy_contract::private::Provider<N>,
19614        N: alloy_contract::private::Network,
19615    > LightClientV3MockInstance<P, N> {
19616        /**Creates a new wrapper around an on-chain [`LightClientV3Mock`](self) contract instance.
19617
19618See the [wrapper's documentation](`LightClientV3MockInstance`) for more details.*/
19619        #[inline]
19620        pub const fn new(
19621            address: alloy_sol_types::private::Address,
19622            __provider: P,
19623        ) -> Self {
19624            Self {
19625                address,
19626                provider: __provider,
19627                _network: ::core::marker::PhantomData,
19628            }
19629        }
19630        /**Deploys this contract using the given `provider` and constructor arguments, if any.
19631
19632Returns a new instance of the contract, if the deployment was successful.
19633
19634For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
19635        #[inline]
19636        pub async fn deploy(
19637            __provider: P,
19638        ) -> alloy_contract::Result<LightClientV3MockInstance<P, N>> {
19639            let call_builder = Self::deploy_builder(__provider);
19640            let contract_address = call_builder.deploy().await?;
19641            Ok(Self::new(contract_address, call_builder.provider))
19642        }
19643        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
19644and constructor arguments, if any.
19645
19646This is a simple wrapper around creating a `RawCallBuilder` with the data set to
19647the bytecode concatenated with the constructor's ABI-encoded arguments.*/
19648        #[inline]
19649        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
19650            alloy_contract::RawCallBuilder::new_raw_deploy(
19651                __provider,
19652                ::core::clone::Clone::clone(&BYTECODE),
19653            )
19654        }
19655        /// Returns a reference to the address.
19656        #[inline]
19657        pub const fn address(&self) -> &alloy_sol_types::private::Address {
19658            &self.address
19659        }
19660        /// Sets the address.
19661        #[inline]
19662        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
19663            self.address = address;
19664        }
19665        /// Sets the address and returns `self`.
19666        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
19667            self.set_address(address);
19668            self
19669        }
19670        /// Returns a reference to the provider.
19671        #[inline]
19672        pub const fn provider(&self) -> &P {
19673            &self.provider
19674        }
19675    }
19676    impl<P: ::core::clone::Clone, N> LightClientV3MockInstance<&P, N> {
19677        /// Clones the provider and returns a new instance with the cloned provider.
19678        #[inline]
19679        pub fn with_cloned_provider(self) -> LightClientV3MockInstance<P, N> {
19680            LightClientV3MockInstance {
19681                address: self.address,
19682                provider: ::core::clone::Clone::clone(&self.provider),
19683                _network: ::core::marker::PhantomData,
19684            }
19685        }
19686    }
19687    /// Function calls.
19688    impl<
19689        P: alloy_contract::private::Provider<N>,
19690        N: alloy_contract::private::Network,
19691    > LightClientV3MockInstance<P, N> {
19692        /// Creates a new call builder using this contract instance's provider and address.
19693        ///
19694        /// Note that the call can be any function call, not just those defined in this
19695        /// contract. Prefer using the other methods for building type-safe contract calls.
19696        pub fn call_builder<C: alloy_sol_types::SolCall>(
19697            &self,
19698            call: &C,
19699        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
19700            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
19701        }
19702        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
19703        pub fn UPGRADE_INTERFACE_VERSION(
19704            &self,
19705        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
19706            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
19707        }
19708        ///Creates a new call builder for the [`_getVk`] function.
19709        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
19710            self.call_builder(&_getVkCall)
19711        }
19712        ///Creates a new call builder for the [`authRoot`] function.
19713        pub fn authRoot(&self) -> alloy_contract::SolCallBuilder<&P, authRootCall, N> {
19714            self.call_builder(&authRootCall)
19715        }
19716        ///Creates a new call builder for the [`blocksPerEpoch`] function.
19717        pub fn blocksPerEpoch(
19718            &self,
19719        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
19720            self.call_builder(&blocksPerEpochCall)
19721        }
19722        ///Creates a new call builder for the [`currentBlockNumber`] function.
19723        pub fn currentBlockNumber(
19724            &self,
19725        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
19726            self.call_builder(&currentBlockNumberCall)
19727        }
19728        ///Creates a new call builder for the [`currentEpoch`] function.
19729        pub fn currentEpoch(
19730            &self,
19731        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
19732            self.call_builder(&currentEpochCall)
19733        }
19734        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
19735        pub fn disablePermissionedProverMode(
19736            &self,
19737        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
19738            self.call_builder(&disablePermissionedProverModeCall)
19739        }
19740        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
19741        pub fn epochFromBlockNumber(
19742            &self,
19743            _blockNum: u64,
19744            _blocksPerEpoch: u64,
19745        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
19746            self.call_builder(
19747                &epochFromBlockNumberCall {
19748                    _blockNum,
19749                    _blocksPerEpoch,
19750                },
19751            )
19752        }
19753        ///Creates a new call builder for the [`epochStartBlock`] function.
19754        pub fn epochStartBlock(
19755            &self,
19756        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
19757            self.call_builder(&epochStartBlockCall)
19758        }
19759        ///Creates a new call builder for the [`finalizedState`] function.
19760        pub fn finalizedState(
19761            &self,
19762        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
19763            self.call_builder(&finalizedStateCall)
19764        }
19765        ///Creates a new call builder for the [`firstEpoch`] function.
19766        pub fn firstEpoch(
19767            &self,
19768        ) -> alloy_contract::SolCallBuilder<&P, firstEpochCall, N> {
19769            self.call_builder(&firstEpochCall)
19770        }
19771        ///Creates a new call builder for the [`genesisStakeTableState`] function.
19772        pub fn genesisStakeTableState(
19773            &self,
19774        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
19775            self.call_builder(&genesisStakeTableStateCall)
19776        }
19777        ///Creates a new call builder for the [`genesisState`] function.
19778        pub fn genesisState(
19779            &self,
19780        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
19781            self.call_builder(&genesisStateCall)
19782        }
19783        ///Creates a new call builder for the [`getHotShotCommitment`] function.
19784        pub fn getHotShotCommitment(
19785            &self,
19786            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
19787        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
19788            self.call_builder(
19789                &getHotShotCommitmentCall {
19790                    hotShotBlockHeight,
19791                },
19792            )
19793        }
19794        ///Creates a new call builder for the [`getStateHistoryCount`] function.
19795        pub fn getStateHistoryCount(
19796            &self,
19797        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
19798            self.call_builder(&getStateHistoryCountCall)
19799        }
19800        ///Creates a new call builder for the [`getVersion`] function.
19801        pub fn getVersion(
19802            &self,
19803        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
19804            self.call_builder(&getVersionCall)
19805        }
19806        ///Creates a new call builder for the [`initialize`] function.
19807        pub fn initialize(
19808            &self,
19809            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19810            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19811            _stateHistoryRetentionPeriod: u32,
19812            owner: alloy::sol_types::private::Address,
19813        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
19814            self.call_builder(
19815                &initializeCall {
19816                    _genesis,
19817                    _genesisStakeTableState,
19818                    _stateHistoryRetentionPeriod,
19819                    owner,
19820                },
19821            )
19822        }
19823        ///Creates a new call builder for the [`initializeV2`] function.
19824        pub fn initializeV2(
19825            &self,
19826            _blocksPerEpoch: u64,
19827            _epochStartBlock: u64,
19828        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
19829            self.call_builder(
19830                &initializeV2Call {
19831                    _blocksPerEpoch,
19832                    _epochStartBlock,
19833                },
19834            )
19835        }
19836        ///Creates a new call builder for the [`initializeV3`] function.
19837        pub fn initializeV3(
19838            &self,
19839        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
19840            self.call_builder(&initializeV3Call)
19841        }
19842        ///Creates a new call builder for the [`isEpochRoot`] function.
19843        pub fn isEpochRoot(
19844            &self,
19845            blockHeight: u64,
19846        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
19847            self.call_builder(&isEpochRootCall { blockHeight })
19848        }
19849        ///Creates a new call builder for the [`isGtEpochRoot`] function.
19850        pub fn isGtEpochRoot(
19851            &self,
19852            blockHeight: u64,
19853        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
19854            self.call_builder(&isGtEpochRootCall { blockHeight })
19855        }
19856        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
19857        pub fn isPermissionedProverEnabled(
19858            &self,
19859        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
19860            self.call_builder(&isPermissionedProverEnabledCall)
19861        }
19862        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
19863        pub fn lagOverEscapeHatchThreshold(
19864            &self,
19865            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
19866            threshold: alloy::sol_types::private::primitives::aliases::U256,
19867        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
19868            self.call_builder(
19869                &lagOverEscapeHatchThresholdCall {
19870                    blockNumber,
19871                    threshold,
19872                },
19873            )
19874        }
19875        ///Creates a new call builder for the [`newFinalizedState_0`] function.
19876        pub fn newFinalizedState_0(
19877            &self,
19878            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19879            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
19880        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
19881            self.call_builder(&newFinalizedState_0Call { _0, _1 })
19882        }
19883        ///Creates a new call builder for the [`newFinalizedState_1`] function.
19884        pub fn newFinalizedState_1(
19885            &self,
19886            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19887            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19888            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
19889        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
19890            self.call_builder(
19891                &newFinalizedState_1Call {
19892                    _0,
19893                    _1,
19894                    _2,
19895                },
19896            )
19897        }
19898        ///Creates a new call builder for the [`newFinalizedState_2`] function.
19899        pub fn newFinalizedState_2(
19900            &self,
19901            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19902            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
19903            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
19904            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
19905        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_2Call, N> {
19906            self.call_builder(
19907                &newFinalizedState_2Call {
19908                    newState,
19909                    nextStakeTable,
19910                    newAuthRoot,
19911                    proof,
19912                },
19913            )
19914        }
19915        ///Creates a new call builder for the [`owner`] function.
19916        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
19917            self.call_builder(&ownerCall)
19918        }
19919        ///Creates a new call builder for the [`permissionedProver`] function.
19920        pub fn permissionedProver(
19921            &self,
19922        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
19923            self.call_builder(&permissionedProverCall)
19924        }
19925        ///Creates a new call builder for the [`proxiableUUID`] function.
19926        pub fn proxiableUUID(
19927            &self,
19928        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
19929            self.call_builder(&proxiableUUIDCall)
19930        }
19931        ///Creates a new call builder for the [`renounceOwnership`] function.
19932        pub fn renounceOwnership(
19933            &self,
19934        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
19935            self.call_builder(&renounceOwnershipCall)
19936        }
19937        ///Creates a new call builder for the [`setAuthRoot`] function.
19938        pub fn setAuthRoot(
19939            &self,
19940            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
19941        ) -> alloy_contract::SolCallBuilder<&P, setAuthRootCall, N> {
19942            self.call_builder(&setAuthRootCall { newAuthRoot })
19943        }
19944        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
19945        pub fn setBlocksPerEpoch(
19946            &self,
19947            newBlocksPerEpoch: u64,
19948        ) -> alloy_contract::SolCallBuilder<&P, setBlocksPerEpochCall, N> {
19949            self.call_builder(
19950                &setBlocksPerEpochCall {
19951                    newBlocksPerEpoch,
19952                },
19953            )
19954        }
19955        ///Creates a new call builder for the [`setFinalizedState`] function.
19956        pub fn setFinalizedState(
19957            &self,
19958            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
19959        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
19960            self.call_builder(&setFinalizedStateCall { state })
19961        }
19962        ///Creates a new call builder for the [`setHotShotDownSince`] function.
19963        pub fn setHotShotDownSince(
19964            &self,
19965            l1Height: alloy::sol_types::private::primitives::aliases::U256,
19966        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
19967            self.call_builder(
19968                &setHotShotDownSinceCall {
19969                    l1Height,
19970                },
19971            )
19972        }
19973        ///Creates a new call builder for the [`setHotShotUp`] function.
19974        pub fn setHotShotUp(
19975            &self,
19976        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
19977            self.call_builder(&setHotShotUpCall)
19978        }
19979        ///Creates a new call builder for the [`setPermissionedProver`] function.
19980        pub fn setPermissionedProver(
19981            &self,
19982            prover: alloy::sol_types::private::Address,
19983        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
19984            self.call_builder(
19985                &setPermissionedProverCall {
19986                    prover,
19987                },
19988            )
19989        }
19990        ///Creates a new call builder for the [`setStateHistory`] function.
19991        pub fn setStateHistory(
19992            &self,
19993            _stateHistoryCommitments: alloy::sol_types::private::Vec<
19994                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
19995            >,
19996        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
19997            self.call_builder(
19998                &setStateHistoryCall {
19999                    _stateHistoryCommitments,
20000                },
20001            )
20002        }
20003        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
20004        pub fn setStateHistoryRetentionPeriod(
20005            &self,
20006            historySeconds: u32,
20007        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
20008            self.call_builder(
20009                &setStateHistoryRetentionPeriodCall {
20010                    historySeconds,
20011                },
20012            )
20013        }
20014        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
20015        pub fn setVotingStakeTableState(
20016            &self,
20017            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
20018        ) -> alloy_contract::SolCallBuilder<&P, setVotingStakeTableStateCall, N> {
20019            self.call_builder(
20020                &setVotingStakeTableStateCall {
20021                    stake,
20022                },
20023            )
20024        }
20025        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
20026        pub fn setstateHistoryRetentionPeriod(
20027            &self,
20028            historySeconds: u32,
20029        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
20030            self.call_builder(
20031                &setstateHistoryRetentionPeriodCall {
20032                    historySeconds,
20033                },
20034            )
20035        }
20036        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
20037        pub fn stateHistoryCommitments(
20038            &self,
20039            _0: alloy::sol_types::private::primitives::aliases::U256,
20040        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
20041            self.call_builder(&stateHistoryCommitmentsCall(_0))
20042        }
20043        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
20044        pub fn stateHistoryFirstIndex(
20045            &self,
20046        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
20047            self.call_builder(&stateHistoryFirstIndexCall)
20048        }
20049        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
20050        pub fn stateHistoryRetentionPeriod(
20051            &self,
20052        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
20053            self.call_builder(&stateHistoryRetentionPeriodCall)
20054        }
20055        ///Creates a new call builder for the [`transferOwnership`] function.
20056        pub fn transferOwnership(
20057            &self,
20058            newOwner: alloy::sol_types::private::Address,
20059        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
20060            self.call_builder(&transferOwnershipCall { newOwner })
20061        }
20062        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
20063        pub fn updateEpochStartBlock(
20064            &self,
20065            newEpochStartBlock: u64,
20066        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
20067            self.call_builder(
20068                &updateEpochStartBlockCall {
20069                    newEpochStartBlock,
20070                },
20071            )
20072        }
20073        ///Creates a new call builder for the [`upgradeToAndCall`] function.
20074        pub fn upgradeToAndCall(
20075            &self,
20076            newImplementation: alloy::sol_types::private::Address,
20077            data: alloy::sol_types::private::Bytes,
20078        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
20079            self.call_builder(
20080                &upgradeToAndCallCall {
20081                    newImplementation,
20082                    data,
20083                },
20084            )
20085        }
20086        ///Creates a new call builder for the [`votingStakeTableState`] function.
20087        pub fn votingStakeTableState(
20088            &self,
20089        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
20090            self.call_builder(&votingStakeTableStateCall)
20091        }
20092    }
20093    /// Event filters.
20094    impl<
20095        P: alloy_contract::private::Provider<N>,
20096        N: alloy_contract::private::Network,
20097    > LightClientV3MockInstance<P, N> {
20098        /// Creates a new event filter using this contract instance's provider and address.
20099        ///
20100        /// Note that the type can be any event, not just those defined in this contract.
20101        /// Prefer using the other methods for building type-safe event filters.
20102        pub fn event_filter<E: alloy_sol_types::SolEvent>(
20103            &self,
20104        ) -> alloy_contract::Event<&P, E, N> {
20105            alloy_contract::Event::new_sol(&self.provider, &self.address)
20106        }
20107        ///Creates a new event filter for the [`Initialized`] event.
20108        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
20109            self.event_filter::<Initialized>()
20110        }
20111        ///Creates a new event filter for the [`NewEpoch`] event.
20112        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
20113            self.event_filter::<NewEpoch>()
20114        }
20115        ///Creates a new event filter for the [`NewState`] event.
20116        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
20117            self.event_filter::<NewState>()
20118        }
20119        ///Creates a new event filter for the [`OwnershipTransferred`] event.
20120        pub fn OwnershipTransferred_filter(
20121            &self,
20122        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
20123            self.event_filter::<OwnershipTransferred>()
20124        }
20125        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
20126        pub fn PermissionedProverNotRequired_filter(
20127            &self,
20128        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
20129            self.event_filter::<PermissionedProverNotRequired>()
20130        }
20131        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
20132        pub fn PermissionedProverRequired_filter(
20133            &self,
20134        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
20135            self.event_filter::<PermissionedProverRequired>()
20136        }
20137        ///Creates a new event filter for the [`Upgrade`] event.
20138        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
20139            self.event_filter::<Upgrade>()
20140        }
20141        ///Creates a new event filter for the [`Upgraded`] event.
20142        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
20143            self.event_filter::<Upgraded>()
20144        }
20145    }
20146}