Skip to main content

hotshot_contract_adapter/bindings/
light_client_v3.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}
2242```*/
2243#[allow(
2244    non_camel_case_types,
2245    non_snake_case,
2246    clippy::pub_underscore_fields,
2247    clippy::style,
2248    clippy::empty_structs_with_brackets
2249)]
2250pub mod LightClient {
2251    use super::*;
2252    use alloy::sol_types as alloy_sol_types;
2253    #[derive(serde::Serialize, serde::Deserialize)]
2254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2255    /**```solidity
2256struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2257```*/
2258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2259    #[derive(Clone)]
2260    pub struct LightClientState {
2261        #[allow(missing_docs)]
2262        pub viewNum: u64,
2263        #[allow(missing_docs)]
2264        pub blockHeight: u64,
2265        #[allow(missing_docs)]
2266        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2267    }
2268    #[allow(
2269        non_camel_case_types,
2270        non_snake_case,
2271        clippy::pub_underscore_fields,
2272        clippy::style
2273    )]
2274    const _: () = {
2275        use alloy::sol_types as alloy_sol_types;
2276        #[doc(hidden)]
2277        #[allow(dead_code)]
2278        type UnderlyingSolTuple<'a> = (
2279            alloy::sol_types::sol_data::Uint<64>,
2280            alloy::sol_types::sol_data::Uint<64>,
2281            BN254::ScalarField,
2282        );
2283        #[doc(hidden)]
2284        type UnderlyingRustTuple<'a> = (
2285            u64,
2286            u64,
2287            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2288        );
2289        #[cfg(test)]
2290        #[allow(dead_code, unreachable_patterns)]
2291        fn _type_assertion(
2292            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2293        ) {
2294            match _t {
2295                alloy_sol_types::private::AssertTypeEq::<
2296                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2297                >(_) => {}
2298            }
2299        }
2300        #[automatically_derived]
2301        #[doc(hidden)]
2302        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2303            fn from(value: LightClientState) -> Self {
2304                (value.viewNum, value.blockHeight, value.blockCommRoot)
2305            }
2306        }
2307        #[automatically_derived]
2308        #[doc(hidden)]
2309        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2310            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2311                Self {
2312                    viewNum: tuple.0,
2313                    blockHeight: tuple.1,
2314                    blockCommRoot: tuple.2,
2315                }
2316            }
2317        }
2318        #[automatically_derived]
2319        impl alloy_sol_types::SolValue for LightClientState {
2320            type SolType = Self;
2321        }
2322        #[automatically_derived]
2323        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2324            #[inline]
2325            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2326                (
2327                    <alloy::sol_types::sol_data::Uint<
2328                        64,
2329                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2330                    <alloy::sol_types::sol_data::Uint<
2331                        64,
2332                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2333                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2334                        &self.blockCommRoot,
2335                    ),
2336                )
2337            }
2338            #[inline]
2339            fn stv_abi_encoded_size(&self) -> usize {
2340                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2341                    return size;
2342                }
2343                let tuple = <UnderlyingRustTuple<
2344                    '_,
2345                > as ::core::convert::From<Self>>::from(self.clone());
2346                <UnderlyingSolTuple<
2347                    '_,
2348                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2349            }
2350            #[inline]
2351            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2352                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2353            }
2354            #[inline]
2355            fn stv_abi_encode_packed_to(
2356                &self,
2357                out: &mut alloy_sol_types::private::Vec<u8>,
2358            ) {
2359                let tuple = <UnderlyingRustTuple<
2360                    '_,
2361                > as ::core::convert::From<Self>>::from(self.clone());
2362                <UnderlyingSolTuple<
2363                    '_,
2364                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2365            }
2366            #[inline]
2367            fn stv_abi_packed_encoded_size(&self) -> usize {
2368                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2369                    return size;
2370                }
2371                let tuple = <UnderlyingRustTuple<
2372                    '_,
2373                > as ::core::convert::From<Self>>::from(self.clone());
2374                <UnderlyingSolTuple<
2375                    '_,
2376                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2377            }
2378        }
2379        #[automatically_derived]
2380        impl alloy_sol_types::SolType for LightClientState {
2381            type RustType = Self;
2382            type Token<'a> = <UnderlyingSolTuple<
2383                'a,
2384            > as alloy_sol_types::SolType>::Token<'a>;
2385            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2386            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2387                '_,
2388            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2389            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2390                '_,
2391            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2392            #[inline]
2393            fn valid_token(token: &Self::Token<'_>) -> bool {
2394                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2395            }
2396            #[inline]
2397            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2398                let tuple = <UnderlyingSolTuple<
2399                    '_,
2400                > as alloy_sol_types::SolType>::detokenize(token);
2401                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2402            }
2403        }
2404        #[automatically_derived]
2405        impl alloy_sol_types::SolStruct for LightClientState {
2406            const NAME: &'static str = "LightClientState";
2407            #[inline]
2408            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2409                alloy_sol_types::private::Cow::Borrowed(
2410                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2411                )
2412            }
2413            #[inline]
2414            fn eip712_components() -> alloy_sol_types::private::Vec<
2415                alloy_sol_types::private::Cow<'static, str>,
2416            > {
2417                alloy_sol_types::private::Vec::new()
2418            }
2419            #[inline]
2420            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2421                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2422            }
2423            #[inline]
2424            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2425                [
2426                    <alloy::sol_types::sol_data::Uint<
2427                        64,
2428                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2429                        .0,
2430                    <alloy::sol_types::sol_data::Uint<
2431                        64,
2432                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2433                        .0,
2434                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2435                            &self.blockCommRoot,
2436                        )
2437                        .0,
2438                ]
2439                    .concat()
2440            }
2441        }
2442        #[automatically_derived]
2443        impl alloy_sol_types::EventTopic for LightClientState {
2444            #[inline]
2445            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2446                0usize
2447                    + <alloy::sol_types::sol_data::Uint<
2448                        64,
2449                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2450                        &rust.viewNum,
2451                    )
2452                    + <alloy::sol_types::sol_data::Uint<
2453                        64,
2454                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2455                        &rust.blockHeight,
2456                    )
2457                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2458                        &rust.blockCommRoot,
2459                    )
2460            }
2461            #[inline]
2462            fn encode_topic_preimage(
2463                rust: &Self::RustType,
2464                out: &mut alloy_sol_types::private::Vec<u8>,
2465            ) {
2466                out.reserve(
2467                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2468                );
2469                <alloy::sol_types::sol_data::Uint<
2470                    64,
2471                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2472                    &rust.viewNum,
2473                    out,
2474                );
2475                <alloy::sol_types::sol_data::Uint<
2476                    64,
2477                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2478                    &rust.blockHeight,
2479                    out,
2480                );
2481                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2482                    &rust.blockCommRoot,
2483                    out,
2484                );
2485            }
2486            #[inline]
2487            fn encode_topic(
2488                rust: &Self::RustType,
2489            ) -> alloy_sol_types::abi::token::WordToken {
2490                let mut out = alloy_sol_types::private::Vec::new();
2491                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2492                    rust,
2493                    &mut out,
2494                );
2495                alloy_sol_types::abi::token::WordToken(
2496                    alloy_sol_types::private::keccak256(out),
2497                )
2498            }
2499        }
2500    };
2501    #[derive(serde::Serialize, serde::Deserialize)]
2502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2503    /**```solidity
2504struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2505```*/
2506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2507    #[derive(Clone)]
2508    pub struct StakeTableState {
2509        #[allow(missing_docs)]
2510        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2511        #[allow(missing_docs)]
2512        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2513        #[allow(missing_docs)]
2514        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2515        #[allow(missing_docs)]
2516        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517    }
2518    #[allow(
2519        non_camel_case_types,
2520        non_snake_case,
2521        clippy::pub_underscore_fields,
2522        clippy::style
2523    )]
2524    const _: () = {
2525        use alloy::sol_types as alloy_sol_types;
2526        #[doc(hidden)]
2527        #[allow(dead_code)]
2528        type UnderlyingSolTuple<'a> = (
2529            alloy::sol_types::sol_data::Uint<256>,
2530            BN254::ScalarField,
2531            BN254::ScalarField,
2532            BN254::ScalarField,
2533        );
2534        #[doc(hidden)]
2535        type UnderlyingRustTuple<'a> = (
2536            alloy::sol_types::private::primitives::aliases::U256,
2537            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2538            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2539            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2540        );
2541        #[cfg(test)]
2542        #[allow(dead_code, unreachable_patterns)]
2543        fn _type_assertion(
2544            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2545        ) {
2546            match _t {
2547                alloy_sol_types::private::AssertTypeEq::<
2548                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2549                >(_) => {}
2550            }
2551        }
2552        #[automatically_derived]
2553        #[doc(hidden)]
2554        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2555            fn from(value: StakeTableState) -> Self {
2556                (
2557                    value.threshold,
2558                    value.blsKeyComm,
2559                    value.schnorrKeyComm,
2560                    value.amountComm,
2561                )
2562            }
2563        }
2564        #[automatically_derived]
2565        #[doc(hidden)]
2566        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2567            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2568                Self {
2569                    threshold: tuple.0,
2570                    blsKeyComm: tuple.1,
2571                    schnorrKeyComm: tuple.2,
2572                    amountComm: tuple.3,
2573                }
2574            }
2575        }
2576        #[automatically_derived]
2577        impl alloy_sol_types::SolValue for StakeTableState {
2578            type SolType = Self;
2579        }
2580        #[automatically_derived]
2581        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2582            #[inline]
2583            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2584                (
2585                    <alloy::sol_types::sol_data::Uint<
2586                        256,
2587                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2588                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2589                        &self.blsKeyComm,
2590                    ),
2591                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2592                        &self.schnorrKeyComm,
2593                    ),
2594                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2595                        &self.amountComm,
2596                    ),
2597                )
2598            }
2599            #[inline]
2600            fn stv_abi_encoded_size(&self) -> usize {
2601                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2602                    return size;
2603                }
2604                let tuple = <UnderlyingRustTuple<
2605                    '_,
2606                > as ::core::convert::From<Self>>::from(self.clone());
2607                <UnderlyingSolTuple<
2608                    '_,
2609                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2610            }
2611            #[inline]
2612            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2613                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2614            }
2615            #[inline]
2616            fn stv_abi_encode_packed_to(
2617                &self,
2618                out: &mut alloy_sol_types::private::Vec<u8>,
2619            ) {
2620                let tuple = <UnderlyingRustTuple<
2621                    '_,
2622                > as ::core::convert::From<Self>>::from(self.clone());
2623                <UnderlyingSolTuple<
2624                    '_,
2625                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2626            }
2627            #[inline]
2628            fn stv_abi_packed_encoded_size(&self) -> usize {
2629                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2630                    return size;
2631                }
2632                let tuple = <UnderlyingRustTuple<
2633                    '_,
2634                > as ::core::convert::From<Self>>::from(self.clone());
2635                <UnderlyingSolTuple<
2636                    '_,
2637                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2638            }
2639        }
2640        #[automatically_derived]
2641        impl alloy_sol_types::SolType for StakeTableState {
2642            type RustType = Self;
2643            type Token<'a> = <UnderlyingSolTuple<
2644                'a,
2645            > as alloy_sol_types::SolType>::Token<'a>;
2646            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2647            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2648                '_,
2649            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2650            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2651                '_,
2652            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2653            #[inline]
2654            fn valid_token(token: &Self::Token<'_>) -> bool {
2655                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2656            }
2657            #[inline]
2658            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2659                let tuple = <UnderlyingSolTuple<
2660                    '_,
2661                > as alloy_sol_types::SolType>::detokenize(token);
2662                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2663            }
2664        }
2665        #[automatically_derived]
2666        impl alloy_sol_types::SolStruct for StakeTableState {
2667            const NAME: &'static str = "StakeTableState";
2668            #[inline]
2669            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2670                alloy_sol_types::private::Cow::Borrowed(
2671                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2672                )
2673            }
2674            #[inline]
2675            fn eip712_components() -> alloy_sol_types::private::Vec<
2676                alloy_sol_types::private::Cow<'static, str>,
2677            > {
2678                alloy_sol_types::private::Vec::new()
2679            }
2680            #[inline]
2681            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2682                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2683            }
2684            #[inline]
2685            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2686                [
2687                    <alloy::sol_types::sol_data::Uint<
2688                        256,
2689                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2690                        .0,
2691                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2692                            &self.blsKeyComm,
2693                        )
2694                        .0,
2695                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2696                            &self.schnorrKeyComm,
2697                        )
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.amountComm,
2701                        )
2702                        .0,
2703                ]
2704                    .concat()
2705            }
2706        }
2707        #[automatically_derived]
2708        impl alloy_sol_types::EventTopic for StakeTableState {
2709            #[inline]
2710            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2711                0usize
2712                    + <alloy::sol_types::sol_data::Uint<
2713                        256,
2714                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2715                        &rust.threshold,
2716                    )
2717                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2718                        &rust.blsKeyComm,
2719                    )
2720                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2721                        &rust.schnorrKeyComm,
2722                    )
2723                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.amountComm,
2725                    )
2726            }
2727            #[inline]
2728            fn encode_topic_preimage(
2729                rust: &Self::RustType,
2730                out: &mut alloy_sol_types::private::Vec<u8>,
2731            ) {
2732                out.reserve(
2733                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2734                );
2735                <alloy::sol_types::sol_data::Uint<
2736                    256,
2737                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2738                    &rust.threshold,
2739                    out,
2740                );
2741                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2742                    &rust.blsKeyComm,
2743                    out,
2744                );
2745                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.schnorrKeyComm,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.amountComm,
2751                    out,
2752                );
2753            }
2754            #[inline]
2755            fn encode_topic(
2756                rust: &Self::RustType,
2757            ) -> alloy_sol_types::abi::token::WordToken {
2758                let mut out = alloy_sol_types::private::Vec::new();
2759                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2760                    rust,
2761                    &mut out,
2762                );
2763                alloy_sol_types::abi::token::WordToken(
2764                    alloy_sol_types::private::keccak256(out),
2765                )
2766            }
2767        }
2768    };
2769    use alloy::contract as alloy_contract;
2770    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2771
2772See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2773    #[inline]
2774    pub const fn new<
2775        P: alloy_contract::private::Provider<N>,
2776        N: alloy_contract::private::Network,
2777    >(
2778        address: alloy_sol_types::private::Address,
2779        __provider: P,
2780    ) -> LightClientInstance<P, N> {
2781        LightClientInstance::<P, N>::new(address, __provider)
2782    }
2783    /**A [`LightClient`](self) instance.
2784
2785Contains type-safe methods for interacting with an on-chain instance of the
2786[`LightClient`](self) contract located at a given `address`, using a given
2787provider `P`.
2788
2789If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2790documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2791be used to deploy a new instance of the contract.
2792
2793See the [module-level documentation](self) for all the available methods.*/
2794    #[derive(Clone)]
2795    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2796        address: alloy_sol_types::private::Address,
2797        provider: P,
2798        _network: ::core::marker::PhantomData<N>,
2799    }
2800    #[automatically_derived]
2801    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2802        #[inline]
2803        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2804            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2805        }
2806    }
2807    /// Instantiation and getters/setters.
2808    impl<
2809        P: alloy_contract::private::Provider<N>,
2810        N: alloy_contract::private::Network,
2811    > LightClientInstance<P, N> {
2812        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2813
2814See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2815        #[inline]
2816        pub const fn new(
2817            address: alloy_sol_types::private::Address,
2818            __provider: P,
2819        ) -> Self {
2820            Self {
2821                address,
2822                provider: __provider,
2823                _network: ::core::marker::PhantomData,
2824            }
2825        }
2826        /// Returns a reference to the address.
2827        #[inline]
2828        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2829            &self.address
2830        }
2831        /// Sets the address.
2832        #[inline]
2833        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2834            self.address = address;
2835        }
2836        /// Sets the address and returns `self`.
2837        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2838            self.set_address(address);
2839            self
2840        }
2841        /// Returns a reference to the provider.
2842        #[inline]
2843        pub const fn provider(&self) -> &P {
2844            &self.provider
2845        }
2846    }
2847    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2848        /// Clones the provider and returns a new instance with the cloned provider.
2849        #[inline]
2850        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2851            LightClientInstance {
2852                address: self.address,
2853                provider: ::core::clone::Clone::clone(&self.provider),
2854                _network: ::core::marker::PhantomData,
2855            }
2856        }
2857    }
2858    /// Function calls.
2859    impl<
2860        P: alloy_contract::private::Provider<N>,
2861        N: alloy_contract::private::Network,
2862    > LightClientInstance<P, N> {
2863        /// Creates a new call builder using this contract instance's provider and address.
2864        ///
2865        /// Note that the call can be any function call, not just those defined in this
2866        /// contract. Prefer using the other methods for building type-safe contract calls.
2867        pub fn call_builder<C: alloy_sol_types::SolCall>(
2868            &self,
2869            call: &C,
2870        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2871            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2872        }
2873    }
2874    /// Event filters.
2875    impl<
2876        P: alloy_contract::private::Provider<N>,
2877        N: alloy_contract::private::Network,
2878    > LightClientInstance<P, N> {
2879        /// Creates a new event filter using this contract instance's provider and address.
2880        ///
2881        /// Note that the type can be any event, not just those defined in this contract.
2882        /// Prefer using the other methods for building type-safe event filters.
2883        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2884            &self,
2885        ) -> alloy_contract::Event<&P, E, N> {
2886            alloy_contract::Event::new_sol(&self.provider, &self.address)
2887        }
2888    }
2889}
2890/**
2891
2892Generated by the following Solidity interface...
2893```solidity
2894library BN254 {
2895    type BaseField is uint256;
2896    type ScalarField is uint256;
2897    struct G1Point {
2898        BaseField x;
2899        BaseField y;
2900    }
2901}
2902
2903library IPlonkVerifier {
2904    struct PlonkProof {
2905        BN254.G1Point wire0;
2906        BN254.G1Point wire1;
2907        BN254.G1Point wire2;
2908        BN254.G1Point wire3;
2909        BN254.G1Point wire4;
2910        BN254.G1Point prodPerm;
2911        BN254.G1Point split0;
2912        BN254.G1Point split1;
2913        BN254.G1Point split2;
2914        BN254.G1Point split3;
2915        BN254.G1Point split4;
2916        BN254.G1Point zeta;
2917        BN254.G1Point zetaOmega;
2918        BN254.ScalarField wireEval0;
2919        BN254.ScalarField wireEval1;
2920        BN254.ScalarField wireEval2;
2921        BN254.ScalarField wireEval3;
2922        BN254.ScalarField wireEval4;
2923        BN254.ScalarField sigmaEval0;
2924        BN254.ScalarField sigmaEval1;
2925        BN254.ScalarField sigmaEval2;
2926        BN254.ScalarField sigmaEval3;
2927        BN254.ScalarField prodPermZetaOmegaEval;
2928    }
2929    struct VerifyingKey {
2930        uint256 domainSize;
2931        uint256 numInputs;
2932        BN254.G1Point sigma0;
2933        BN254.G1Point sigma1;
2934        BN254.G1Point sigma2;
2935        BN254.G1Point sigma3;
2936        BN254.G1Point sigma4;
2937        BN254.G1Point q1;
2938        BN254.G1Point q2;
2939        BN254.G1Point q3;
2940        BN254.G1Point q4;
2941        BN254.G1Point qM12;
2942        BN254.G1Point qM34;
2943        BN254.G1Point qO;
2944        BN254.G1Point qC;
2945        BN254.G1Point qH1;
2946        BN254.G1Point qH2;
2947        BN254.G1Point qH3;
2948        BN254.G1Point qH4;
2949        BN254.G1Point qEcc;
2950        bytes32 g2LSB;
2951        bytes32 g2MSB;
2952    }
2953}
2954
2955library LightClient {
2956    struct LightClientState {
2957        uint64 viewNum;
2958        uint64 blockHeight;
2959        BN254.ScalarField blockCommRoot;
2960    }
2961    struct StakeTableState {
2962        uint256 threshold;
2963        BN254.ScalarField blsKeyComm;
2964        BN254.ScalarField schnorrKeyComm;
2965        BN254.ScalarField amountComm;
2966    }
2967}
2968
2969interface LightClientV3 {
2970    error AddressEmptyCode(address target);
2971    error DeprecatedApi();
2972    error ERC1967InvalidImplementation(address implementation);
2973    error ERC1967NonPayable();
2974    error FailedInnerCall();
2975    error InsufficientSnapshotHistory();
2976    error InvalidAddress();
2977    error InvalidArgs();
2978    error InvalidHotShotBlockForCommitmentCheck();
2979    error InvalidInitialization();
2980    error InvalidMaxStateHistory();
2981    error InvalidProof();
2982    error InvalidScalar();
2983    error MissingEpochRootUpdate();
2984    error NoChangeRequired();
2985    error NotInitializing();
2986    error OutdatedState();
2987    error OwnableInvalidOwner(address owner);
2988    error OwnableUnauthorizedAccount(address account);
2989    error OwnershipCannotBeRenounced();
2990    error ProverNotPermissioned();
2991    error UUPSUnauthorizedCallContext();
2992    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2993    error WrongStakeTableUsed();
2994
2995    event Initialized(uint64 version);
2996    event NewEpoch(uint64 epoch);
2997    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2998    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2999    event PermissionedProverNotRequired();
3000    event PermissionedProverRequired(address permissionedProver);
3001    event Upgrade(address implementation);
3002    event Upgraded(address indexed implementation);
3003
3004    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3005    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3006    function authRoot() external view returns (uint256);
3007    function blocksPerEpoch() external view returns (uint64);
3008    function currentBlockNumber() external view returns (uint256);
3009    function currentEpoch() external view returns (uint64);
3010    function disablePermissionedProverMode() external;
3011    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3012    function epochStartBlock() external view returns (uint64);
3013    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3014    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3015    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3016    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3017    function getStateHistoryCount() external view returns (uint256);
3018    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3019    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3020    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3021    function initializeV3() external;
3022    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3023    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3024    function isPermissionedProverEnabled() external view returns (bool);
3025    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3026    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3027    function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
3028    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
3029    function owner() external view returns (address);
3030    function permissionedProver() external view returns (address);
3031    function proxiableUUID() external view returns (bytes32);
3032    function renounceOwnership() external;
3033    function setPermissionedProver(address prover) external;
3034    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3035    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3036    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3037    function stateHistoryFirstIndex() external view returns (uint64);
3038    function stateHistoryRetentionPeriod() external view returns (uint32);
3039    function transferOwnership(address newOwner) external;
3040    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3041    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3042    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3043}
3044```
3045
3046...which was generated by the following JSON ABI:
3047```json
3048[
3049  {
3050    "type": "function",
3051    "name": "UPGRADE_INTERFACE_VERSION",
3052    "inputs": [],
3053    "outputs": [
3054      {
3055        "name": "",
3056        "type": "string",
3057        "internalType": "string"
3058      }
3059    ],
3060    "stateMutability": "view"
3061  },
3062  {
3063    "type": "function",
3064    "name": "_getVk",
3065    "inputs": [],
3066    "outputs": [
3067      {
3068        "name": "vk",
3069        "type": "tuple",
3070        "internalType": "struct IPlonkVerifier.VerifyingKey",
3071        "components": [
3072          {
3073            "name": "domainSize",
3074            "type": "uint256",
3075            "internalType": "uint256"
3076          },
3077          {
3078            "name": "numInputs",
3079            "type": "uint256",
3080            "internalType": "uint256"
3081          },
3082          {
3083            "name": "sigma0",
3084            "type": "tuple",
3085            "internalType": "struct BN254.G1Point",
3086            "components": [
3087              {
3088                "name": "x",
3089                "type": "uint256",
3090                "internalType": "BN254.BaseField"
3091              },
3092              {
3093                "name": "y",
3094                "type": "uint256",
3095                "internalType": "BN254.BaseField"
3096              }
3097            ]
3098          },
3099          {
3100            "name": "sigma1",
3101            "type": "tuple",
3102            "internalType": "struct BN254.G1Point",
3103            "components": [
3104              {
3105                "name": "x",
3106                "type": "uint256",
3107                "internalType": "BN254.BaseField"
3108              },
3109              {
3110                "name": "y",
3111                "type": "uint256",
3112                "internalType": "BN254.BaseField"
3113              }
3114            ]
3115          },
3116          {
3117            "name": "sigma2",
3118            "type": "tuple",
3119            "internalType": "struct BN254.G1Point",
3120            "components": [
3121              {
3122                "name": "x",
3123                "type": "uint256",
3124                "internalType": "BN254.BaseField"
3125              },
3126              {
3127                "name": "y",
3128                "type": "uint256",
3129                "internalType": "BN254.BaseField"
3130              }
3131            ]
3132          },
3133          {
3134            "name": "sigma3",
3135            "type": "tuple",
3136            "internalType": "struct BN254.G1Point",
3137            "components": [
3138              {
3139                "name": "x",
3140                "type": "uint256",
3141                "internalType": "BN254.BaseField"
3142              },
3143              {
3144                "name": "y",
3145                "type": "uint256",
3146                "internalType": "BN254.BaseField"
3147              }
3148            ]
3149          },
3150          {
3151            "name": "sigma4",
3152            "type": "tuple",
3153            "internalType": "struct BN254.G1Point",
3154            "components": [
3155              {
3156                "name": "x",
3157                "type": "uint256",
3158                "internalType": "BN254.BaseField"
3159              },
3160              {
3161                "name": "y",
3162                "type": "uint256",
3163                "internalType": "BN254.BaseField"
3164              }
3165            ]
3166          },
3167          {
3168            "name": "q1",
3169            "type": "tuple",
3170            "internalType": "struct BN254.G1Point",
3171            "components": [
3172              {
3173                "name": "x",
3174                "type": "uint256",
3175                "internalType": "BN254.BaseField"
3176              },
3177              {
3178                "name": "y",
3179                "type": "uint256",
3180                "internalType": "BN254.BaseField"
3181              }
3182            ]
3183          },
3184          {
3185            "name": "q2",
3186            "type": "tuple",
3187            "internalType": "struct BN254.G1Point",
3188            "components": [
3189              {
3190                "name": "x",
3191                "type": "uint256",
3192                "internalType": "BN254.BaseField"
3193              },
3194              {
3195                "name": "y",
3196                "type": "uint256",
3197                "internalType": "BN254.BaseField"
3198              }
3199            ]
3200          },
3201          {
3202            "name": "q3",
3203            "type": "tuple",
3204            "internalType": "struct BN254.G1Point",
3205            "components": [
3206              {
3207                "name": "x",
3208                "type": "uint256",
3209                "internalType": "BN254.BaseField"
3210              },
3211              {
3212                "name": "y",
3213                "type": "uint256",
3214                "internalType": "BN254.BaseField"
3215              }
3216            ]
3217          },
3218          {
3219            "name": "q4",
3220            "type": "tuple",
3221            "internalType": "struct BN254.G1Point",
3222            "components": [
3223              {
3224                "name": "x",
3225                "type": "uint256",
3226                "internalType": "BN254.BaseField"
3227              },
3228              {
3229                "name": "y",
3230                "type": "uint256",
3231                "internalType": "BN254.BaseField"
3232              }
3233            ]
3234          },
3235          {
3236            "name": "qM12",
3237            "type": "tuple",
3238            "internalType": "struct BN254.G1Point",
3239            "components": [
3240              {
3241                "name": "x",
3242                "type": "uint256",
3243                "internalType": "BN254.BaseField"
3244              },
3245              {
3246                "name": "y",
3247                "type": "uint256",
3248                "internalType": "BN254.BaseField"
3249              }
3250            ]
3251          },
3252          {
3253            "name": "qM34",
3254            "type": "tuple",
3255            "internalType": "struct BN254.G1Point",
3256            "components": [
3257              {
3258                "name": "x",
3259                "type": "uint256",
3260                "internalType": "BN254.BaseField"
3261              },
3262              {
3263                "name": "y",
3264                "type": "uint256",
3265                "internalType": "BN254.BaseField"
3266              }
3267            ]
3268          },
3269          {
3270            "name": "qO",
3271            "type": "tuple",
3272            "internalType": "struct BN254.G1Point",
3273            "components": [
3274              {
3275                "name": "x",
3276                "type": "uint256",
3277                "internalType": "BN254.BaseField"
3278              },
3279              {
3280                "name": "y",
3281                "type": "uint256",
3282                "internalType": "BN254.BaseField"
3283              }
3284            ]
3285          },
3286          {
3287            "name": "qC",
3288            "type": "tuple",
3289            "internalType": "struct BN254.G1Point",
3290            "components": [
3291              {
3292                "name": "x",
3293                "type": "uint256",
3294                "internalType": "BN254.BaseField"
3295              },
3296              {
3297                "name": "y",
3298                "type": "uint256",
3299                "internalType": "BN254.BaseField"
3300              }
3301            ]
3302          },
3303          {
3304            "name": "qH1",
3305            "type": "tuple",
3306            "internalType": "struct BN254.G1Point",
3307            "components": [
3308              {
3309                "name": "x",
3310                "type": "uint256",
3311                "internalType": "BN254.BaseField"
3312              },
3313              {
3314                "name": "y",
3315                "type": "uint256",
3316                "internalType": "BN254.BaseField"
3317              }
3318            ]
3319          },
3320          {
3321            "name": "qH2",
3322            "type": "tuple",
3323            "internalType": "struct BN254.G1Point",
3324            "components": [
3325              {
3326                "name": "x",
3327                "type": "uint256",
3328                "internalType": "BN254.BaseField"
3329              },
3330              {
3331                "name": "y",
3332                "type": "uint256",
3333                "internalType": "BN254.BaseField"
3334              }
3335            ]
3336          },
3337          {
3338            "name": "qH3",
3339            "type": "tuple",
3340            "internalType": "struct BN254.G1Point",
3341            "components": [
3342              {
3343                "name": "x",
3344                "type": "uint256",
3345                "internalType": "BN254.BaseField"
3346              },
3347              {
3348                "name": "y",
3349                "type": "uint256",
3350                "internalType": "BN254.BaseField"
3351              }
3352            ]
3353          },
3354          {
3355            "name": "qH4",
3356            "type": "tuple",
3357            "internalType": "struct BN254.G1Point",
3358            "components": [
3359              {
3360                "name": "x",
3361                "type": "uint256",
3362                "internalType": "BN254.BaseField"
3363              },
3364              {
3365                "name": "y",
3366                "type": "uint256",
3367                "internalType": "BN254.BaseField"
3368              }
3369            ]
3370          },
3371          {
3372            "name": "qEcc",
3373            "type": "tuple",
3374            "internalType": "struct BN254.G1Point",
3375            "components": [
3376              {
3377                "name": "x",
3378                "type": "uint256",
3379                "internalType": "BN254.BaseField"
3380              },
3381              {
3382                "name": "y",
3383                "type": "uint256",
3384                "internalType": "BN254.BaseField"
3385              }
3386            ]
3387          },
3388          {
3389            "name": "g2LSB",
3390            "type": "bytes32",
3391            "internalType": "bytes32"
3392          },
3393          {
3394            "name": "g2MSB",
3395            "type": "bytes32",
3396            "internalType": "bytes32"
3397          }
3398        ]
3399      }
3400    ],
3401    "stateMutability": "pure"
3402  },
3403  {
3404    "type": "function",
3405    "name": "authRoot",
3406    "inputs": [],
3407    "outputs": [
3408      {
3409        "name": "",
3410        "type": "uint256",
3411        "internalType": "uint256"
3412      }
3413    ],
3414    "stateMutability": "view"
3415  },
3416  {
3417    "type": "function",
3418    "name": "blocksPerEpoch",
3419    "inputs": [],
3420    "outputs": [
3421      {
3422        "name": "",
3423        "type": "uint64",
3424        "internalType": "uint64"
3425      }
3426    ],
3427    "stateMutability": "view"
3428  },
3429  {
3430    "type": "function",
3431    "name": "currentBlockNumber",
3432    "inputs": [],
3433    "outputs": [
3434      {
3435        "name": "",
3436        "type": "uint256",
3437        "internalType": "uint256"
3438      }
3439    ],
3440    "stateMutability": "view"
3441  },
3442  {
3443    "type": "function",
3444    "name": "currentEpoch",
3445    "inputs": [],
3446    "outputs": [
3447      {
3448        "name": "",
3449        "type": "uint64",
3450        "internalType": "uint64"
3451      }
3452    ],
3453    "stateMutability": "view"
3454  },
3455  {
3456    "type": "function",
3457    "name": "disablePermissionedProverMode",
3458    "inputs": [],
3459    "outputs": [],
3460    "stateMutability": "nonpayable"
3461  },
3462  {
3463    "type": "function",
3464    "name": "epochFromBlockNumber",
3465    "inputs": [
3466      {
3467        "name": "_blockNum",
3468        "type": "uint64",
3469        "internalType": "uint64"
3470      },
3471      {
3472        "name": "_blocksPerEpoch",
3473        "type": "uint64",
3474        "internalType": "uint64"
3475      }
3476    ],
3477    "outputs": [
3478      {
3479        "name": "",
3480        "type": "uint64",
3481        "internalType": "uint64"
3482      }
3483    ],
3484    "stateMutability": "pure"
3485  },
3486  {
3487    "type": "function",
3488    "name": "epochStartBlock",
3489    "inputs": [],
3490    "outputs": [
3491      {
3492        "name": "",
3493        "type": "uint64",
3494        "internalType": "uint64"
3495      }
3496    ],
3497    "stateMutability": "view"
3498  },
3499  {
3500    "type": "function",
3501    "name": "finalizedState",
3502    "inputs": [],
3503    "outputs": [
3504      {
3505        "name": "viewNum",
3506        "type": "uint64",
3507        "internalType": "uint64"
3508      },
3509      {
3510        "name": "blockHeight",
3511        "type": "uint64",
3512        "internalType": "uint64"
3513      },
3514      {
3515        "name": "blockCommRoot",
3516        "type": "uint256",
3517        "internalType": "BN254.ScalarField"
3518      }
3519    ],
3520    "stateMutability": "view"
3521  },
3522  {
3523    "type": "function",
3524    "name": "genesisStakeTableState",
3525    "inputs": [],
3526    "outputs": [
3527      {
3528        "name": "threshold",
3529        "type": "uint256",
3530        "internalType": "uint256"
3531      },
3532      {
3533        "name": "blsKeyComm",
3534        "type": "uint256",
3535        "internalType": "BN254.ScalarField"
3536      },
3537      {
3538        "name": "schnorrKeyComm",
3539        "type": "uint256",
3540        "internalType": "BN254.ScalarField"
3541      },
3542      {
3543        "name": "amountComm",
3544        "type": "uint256",
3545        "internalType": "BN254.ScalarField"
3546      }
3547    ],
3548    "stateMutability": "view"
3549  },
3550  {
3551    "type": "function",
3552    "name": "genesisState",
3553    "inputs": [],
3554    "outputs": [
3555      {
3556        "name": "viewNum",
3557        "type": "uint64",
3558        "internalType": "uint64"
3559      },
3560      {
3561        "name": "blockHeight",
3562        "type": "uint64",
3563        "internalType": "uint64"
3564      },
3565      {
3566        "name": "blockCommRoot",
3567        "type": "uint256",
3568        "internalType": "BN254.ScalarField"
3569      }
3570    ],
3571    "stateMutability": "view"
3572  },
3573  {
3574    "type": "function",
3575    "name": "getHotShotCommitment",
3576    "inputs": [
3577      {
3578        "name": "hotShotBlockHeight",
3579        "type": "uint256",
3580        "internalType": "uint256"
3581      }
3582    ],
3583    "outputs": [
3584      {
3585        "name": "hotShotBlockCommRoot",
3586        "type": "uint256",
3587        "internalType": "BN254.ScalarField"
3588      },
3589      {
3590        "name": "hotshotBlockHeight",
3591        "type": "uint64",
3592        "internalType": "uint64"
3593      }
3594    ],
3595    "stateMutability": "view"
3596  },
3597  {
3598    "type": "function",
3599    "name": "getStateHistoryCount",
3600    "inputs": [],
3601    "outputs": [
3602      {
3603        "name": "",
3604        "type": "uint256",
3605        "internalType": "uint256"
3606      }
3607    ],
3608    "stateMutability": "view"
3609  },
3610  {
3611    "type": "function",
3612    "name": "getVersion",
3613    "inputs": [],
3614    "outputs": [
3615      {
3616        "name": "majorVersion",
3617        "type": "uint8",
3618        "internalType": "uint8"
3619      },
3620      {
3621        "name": "minorVersion",
3622        "type": "uint8",
3623        "internalType": "uint8"
3624      },
3625      {
3626        "name": "patchVersion",
3627        "type": "uint8",
3628        "internalType": "uint8"
3629      }
3630    ],
3631    "stateMutability": "pure"
3632  },
3633  {
3634    "type": "function",
3635    "name": "initialize",
3636    "inputs": [
3637      {
3638        "name": "_genesis",
3639        "type": "tuple",
3640        "internalType": "struct LightClient.LightClientState",
3641        "components": [
3642          {
3643            "name": "viewNum",
3644            "type": "uint64",
3645            "internalType": "uint64"
3646          },
3647          {
3648            "name": "blockHeight",
3649            "type": "uint64",
3650            "internalType": "uint64"
3651          },
3652          {
3653            "name": "blockCommRoot",
3654            "type": "uint256",
3655            "internalType": "BN254.ScalarField"
3656          }
3657        ]
3658      },
3659      {
3660        "name": "_genesisStakeTableState",
3661        "type": "tuple",
3662        "internalType": "struct LightClient.StakeTableState",
3663        "components": [
3664          {
3665            "name": "threshold",
3666            "type": "uint256",
3667            "internalType": "uint256"
3668          },
3669          {
3670            "name": "blsKeyComm",
3671            "type": "uint256",
3672            "internalType": "BN254.ScalarField"
3673          },
3674          {
3675            "name": "schnorrKeyComm",
3676            "type": "uint256",
3677            "internalType": "BN254.ScalarField"
3678          },
3679          {
3680            "name": "amountComm",
3681            "type": "uint256",
3682            "internalType": "BN254.ScalarField"
3683          }
3684        ]
3685      },
3686      {
3687        "name": "_stateHistoryRetentionPeriod",
3688        "type": "uint32",
3689        "internalType": "uint32"
3690      },
3691      {
3692        "name": "owner",
3693        "type": "address",
3694        "internalType": "address"
3695      }
3696    ],
3697    "outputs": [],
3698    "stateMutability": "nonpayable"
3699  },
3700  {
3701    "type": "function",
3702    "name": "initializeV2",
3703    "inputs": [
3704      {
3705        "name": "_blocksPerEpoch",
3706        "type": "uint64",
3707        "internalType": "uint64"
3708      },
3709      {
3710        "name": "_epochStartBlock",
3711        "type": "uint64",
3712        "internalType": "uint64"
3713      }
3714    ],
3715    "outputs": [],
3716    "stateMutability": "nonpayable"
3717  },
3718  {
3719    "type": "function",
3720    "name": "initializeV3",
3721    "inputs": [],
3722    "outputs": [],
3723    "stateMutability": "nonpayable"
3724  },
3725  {
3726    "type": "function",
3727    "name": "isEpochRoot",
3728    "inputs": [
3729      {
3730        "name": "blockHeight",
3731        "type": "uint64",
3732        "internalType": "uint64"
3733      }
3734    ],
3735    "outputs": [
3736      {
3737        "name": "",
3738        "type": "bool",
3739        "internalType": "bool"
3740      }
3741    ],
3742    "stateMutability": "view"
3743  },
3744  {
3745    "type": "function",
3746    "name": "isGtEpochRoot",
3747    "inputs": [
3748      {
3749        "name": "blockHeight",
3750        "type": "uint64",
3751        "internalType": "uint64"
3752      }
3753    ],
3754    "outputs": [
3755      {
3756        "name": "",
3757        "type": "bool",
3758        "internalType": "bool"
3759      }
3760    ],
3761    "stateMutability": "view"
3762  },
3763  {
3764    "type": "function",
3765    "name": "isPermissionedProverEnabled",
3766    "inputs": [],
3767    "outputs": [
3768      {
3769        "name": "",
3770        "type": "bool",
3771        "internalType": "bool"
3772      }
3773    ],
3774    "stateMutability": "view"
3775  },
3776  {
3777    "type": "function",
3778    "name": "lagOverEscapeHatchThreshold",
3779    "inputs": [
3780      {
3781        "name": "blockNumber",
3782        "type": "uint256",
3783        "internalType": "uint256"
3784      },
3785      {
3786        "name": "blockThreshold",
3787        "type": "uint256",
3788        "internalType": "uint256"
3789      }
3790    ],
3791    "outputs": [
3792      {
3793        "name": "",
3794        "type": "bool",
3795        "internalType": "bool"
3796      }
3797    ],
3798    "stateMutability": "view"
3799  },
3800  {
3801    "type": "function",
3802    "name": "newFinalizedState",
3803    "inputs": [
3804      {
3805        "name": "",
3806        "type": "tuple",
3807        "internalType": "struct LightClient.LightClientState",
3808        "components": [
3809          {
3810            "name": "viewNum",
3811            "type": "uint64",
3812            "internalType": "uint64"
3813          },
3814          {
3815            "name": "blockHeight",
3816            "type": "uint64",
3817            "internalType": "uint64"
3818          },
3819          {
3820            "name": "blockCommRoot",
3821            "type": "uint256",
3822            "internalType": "BN254.ScalarField"
3823          }
3824        ]
3825      },
3826      {
3827        "name": "",
3828        "type": "tuple",
3829        "internalType": "struct IPlonkVerifier.PlonkProof",
3830        "components": [
3831          {
3832            "name": "wire0",
3833            "type": "tuple",
3834            "internalType": "struct BN254.G1Point",
3835            "components": [
3836              {
3837                "name": "x",
3838                "type": "uint256",
3839                "internalType": "BN254.BaseField"
3840              },
3841              {
3842                "name": "y",
3843                "type": "uint256",
3844                "internalType": "BN254.BaseField"
3845              }
3846            ]
3847          },
3848          {
3849            "name": "wire1",
3850            "type": "tuple",
3851            "internalType": "struct BN254.G1Point",
3852            "components": [
3853              {
3854                "name": "x",
3855                "type": "uint256",
3856                "internalType": "BN254.BaseField"
3857              },
3858              {
3859                "name": "y",
3860                "type": "uint256",
3861                "internalType": "BN254.BaseField"
3862              }
3863            ]
3864          },
3865          {
3866            "name": "wire2",
3867            "type": "tuple",
3868            "internalType": "struct BN254.G1Point",
3869            "components": [
3870              {
3871                "name": "x",
3872                "type": "uint256",
3873                "internalType": "BN254.BaseField"
3874              },
3875              {
3876                "name": "y",
3877                "type": "uint256",
3878                "internalType": "BN254.BaseField"
3879              }
3880            ]
3881          },
3882          {
3883            "name": "wire3",
3884            "type": "tuple",
3885            "internalType": "struct BN254.G1Point",
3886            "components": [
3887              {
3888                "name": "x",
3889                "type": "uint256",
3890                "internalType": "BN254.BaseField"
3891              },
3892              {
3893                "name": "y",
3894                "type": "uint256",
3895                "internalType": "BN254.BaseField"
3896              }
3897            ]
3898          },
3899          {
3900            "name": "wire4",
3901            "type": "tuple",
3902            "internalType": "struct BN254.G1Point",
3903            "components": [
3904              {
3905                "name": "x",
3906                "type": "uint256",
3907                "internalType": "BN254.BaseField"
3908              },
3909              {
3910                "name": "y",
3911                "type": "uint256",
3912                "internalType": "BN254.BaseField"
3913              }
3914            ]
3915          },
3916          {
3917            "name": "prodPerm",
3918            "type": "tuple",
3919            "internalType": "struct BN254.G1Point",
3920            "components": [
3921              {
3922                "name": "x",
3923                "type": "uint256",
3924                "internalType": "BN254.BaseField"
3925              },
3926              {
3927                "name": "y",
3928                "type": "uint256",
3929                "internalType": "BN254.BaseField"
3930              }
3931            ]
3932          },
3933          {
3934            "name": "split0",
3935            "type": "tuple",
3936            "internalType": "struct BN254.G1Point",
3937            "components": [
3938              {
3939                "name": "x",
3940                "type": "uint256",
3941                "internalType": "BN254.BaseField"
3942              },
3943              {
3944                "name": "y",
3945                "type": "uint256",
3946                "internalType": "BN254.BaseField"
3947              }
3948            ]
3949          },
3950          {
3951            "name": "split1",
3952            "type": "tuple",
3953            "internalType": "struct BN254.G1Point",
3954            "components": [
3955              {
3956                "name": "x",
3957                "type": "uint256",
3958                "internalType": "BN254.BaseField"
3959              },
3960              {
3961                "name": "y",
3962                "type": "uint256",
3963                "internalType": "BN254.BaseField"
3964              }
3965            ]
3966          },
3967          {
3968            "name": "split2",
3969            "type": "tuple",
3970            "internalType": "struct BN254.G1Point",
3971            "components": [
3972              {
3973                "name": "x",
3974                "type": "uint256",
3975                "internalType": "BN254.BaseField"
3976              },
3977              {
3978                "name": "y",
3979                "type": "uint256",
3980                "internalType": "BN254.BaseField"
3981              }
3982            ]
3983          },
3984          {
3985            "name": "split3",
3986            "type": "tuple",
3987            "internalType": "struct BN254.G1Point",
3988            "components": [
3989              {
3990                "name": "x",
3991                "type": "uint256",
3992                "internalType": "BN254.BaseField"
3993              },
3994              {
3995                "name": "y",
3996                "type": "uint256",
3997                "internalType": "BN254.BaseField"
3998              }
3999            ]
4000          },
4001          {
4002            "name": "split4",
4003            "type": "tuple",
4004            "internalType": "struct BN254.G1Point",
4005            "components": [
4006              {
4007                "name": "x",
4008                "type": "uint256",
4009                "internalType": "BN254.BaseField"
4010              },
4011              {
4012                "name": "y",
4013                "type": "uint256",
4014                "internalType": "BN254.BaseField"
4015              }
4016            ]
4017          },
4018          {
4019            "name": "zeta",
4020            "type": "tuple",
4021            "internalType": "struct BN254.G1Point",
4022            "components": [
4023              {
4024                "name": "x",
4025                "type": "uint256",
4026                "internalType": "BN254.BaseField"
4027              },
4028              {
4029                "name": "y",
4030                "type": "uint256",
4031                "internalType": "BN254.BaseField"
4032              }
4033            ]
4034          },
4035          {
4036            "name": "zetaOmega",
4037            "type": "tuple",
4038            "internalType": "struct BN254.G1Point",
4039            "components": [
4040              {
4041                "name": "x",
4042                "type": "uint256",
4043                "internalType": "BN254.BaseField"
4044              },
4045              {
4046                "name": "y",
4047                "type": "uint256",
4048                "internalType": "BN254.BaseField"
4049              }
4050            ]
4051          },
4052          {
4053            "name": "wireEval0",
4054            "type": "uint256",
4055            "internalType": "BN254.ScalarField"
4056          },
4057          {
4058            "name": "wireEval1",
4059            "type": "uint256",
4060            "internalType": "BN254.ScalarField"
4061          },
4062          {
4063            "name": "wireEval2",
4064            "type": "uint256",
4065            "internalType": "BN254.ScalarField"
4066          },
4067          {
4068            "name": "wireEval3",
4069            "type": "uint256",
4070            "internalType": "BN254.ScalarField"
4071          },
4072          {
4073            "name": "wireEval4",
4074            "type": "uint256",
4075            "internalType": "BN254.ScalarField"
4076          },
4077          {
4078            "name": "sigmaEval0",
4079            "type": "uint256",
4080            "internalType": "BN254.ScalarField"
4081          },
4082          {
4083            "name": "sigmaEval1",
4084            "type": "uint256",
4085            "internalType": "BN254.ScalarField"
4086          },
4087          {
4088            "name": "sigmaEval2",
4089            "type": "uint256",
4090            "internalType": "BN254.ScalarField"
4091          },
4092          {
4093            "name": "sigmaEval3",
4094            "type": "uint256",
4095            "internalType": "BN254.ScalarField"
4096          },
4097          {
4098            "name": "prodPermZetaOmegaEval",
4099            "type": "uint256",
4100            "internalType": "BN254.ScalarField"
4101          }
4102        ]
4103      }
4104    ],
4105    "outputs": [],
4106    "stateMutability": "pure"
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 LightClient.StakeTableState",
4138        "components": [
4139          {
4140            "name": "threshold",
4141            "type": "uint256",
4142            "internalType": "uint256"
4143          },
4144          {
4145            "name": "blsKeyComm",
4146            "type": "uint256",
4147            "internalType": "BN254.ScalarField"
4148          },
4149          {
4150            "name": "schnorrKeyComm",
4151            "type": "uint256",
4152            "internalType": "BN254.ScalarField"
4153          },
4154          {
4155            "name": "amountComm",
4156            "type": "uint256",
4157            "internalType": "BN254.ScalarField"
4158          }
4159        ]
4160      },
4161      {
4162        "name": "",
4163        "type": "tuple",
4164        "internalType": "struct IPlonkVerifier.PlonkProof",
4165        "components": [
4166          {
4167            "name": "wire0",
4168            "type": "tuple",
4169            "internalType": "struct BN254.G1Point",
4170            "components": [
4171              {
4172                "name": "x",
4173                "type": "uint256",
4174                "internalType": "BN254.BaseField"
4175              },
4176              {
4177                "name": "y",
4178                "type": "uint256",
4179                "internalType": "BN254.BaseField"
4180              }
4181            ]
4182          },
4183          {
4184            "name": "wire1",
4185            "type": "tuple",
4186            "internalType": "struct BN254.G1Point",
4187            "components": [
4188              {
4189                "name": "x",
4190                "type": "uint256",
4191                "internalType": "BN254.BaseField"
4192              },
4193              {
4194                "name": "y",
4195                "type": "uint256",
4196                "internalType": "BN254.BaseField"
4197              }
4198            ]
4199          },
4200          {
4201            "name": "wire2",
4202            "type": "tuple",
4203            "internalType": "struct BN254.G1Point",
4204            "components": [
4205              {
4206                "name": "x",
4207                "type": "uint256",
4208                "internalType": "BN254.BaseField"
4209              },
4210              {
4211                "name": "y",
4212                "type": "uint256",
4213                "internalType": "BN254.BaseField"
4214              }
4215            ]
4216          },
4217          {
4218            "name": "wire3",
4219            "type": "tuple",
4220            "internalType": "struct BN254.G1Point",
4221            "components": [
4222              {
4223                "name": "x",
4224                "type": "uint256",
4225                "internalType": "BN254.BaseField"
4226              },
4227              {
4228                "name": "y",
4229                "type": "uint256",
4230                "internalType": "BN254.BaseField"
4231              }
4232            ]
4233          },
4234          {
4235            "name": "wire4",
4236            "type": "tuple",
4237            "internalType": "struct BN254.G1Point",
4238            "components": [
4239              {
4240                "name": "x",
4241                "type": "uint256",
4242                "internalType": "BN254.BaseField"
4243              },
4244              {
4245                "name": "y",
4246                "type": "uint256",
4247                "internalType": "BN254.BaseField"
4248              }
4249            ]
4250          },
4251          {
4252            "name": "prodPerm",
4253            "type": "tuple",
4254            "internalType": "struct BN254.G1Point",
4255            "components": [
4256              {
4257                "name": "x",
4258                "type": "uint256",
4259                "internalType": "BN254.BaseField"
4260              },
4261              {
4262                "name": "y",
4263                "type": "uint256",
4264                "internalType": "BN254.BaseField"
4265              }
4266            ]
4267          },
4268          {
4269            "name": "split0",
4270            "type": "tuple",
4271            "internalType": "struct BN254.G1Point",
4272            "components": [
4273              {
4274                "name": "x",
4275                "type": "uint256",
4276                "internalType": "BN254.BaseField"
4277              },
4278              {
4279                "name": "y",
4280                "type": "uint256",
4281                "internalType": "BN254.BaseField"
4282              }
4283            ]
4284          },
4285          {
4286            "name": "split1",
4287            "type": "tuple",
4288            "internalType": "struct BN254.G1Point",
4289            "components": [
4290              {
4291                "name": "x",
4292                "type": "uint256",
4293                "internalType": "BN254.BaseField"
4294              },
4295              {
4296                "name": "y",
4297                "type": "uint256",
4298                "internalType": "BN254.BaseField"
4299              }
4300            ]
4301          },
4302          {
4303            "name": "split2",
4304            "type": "tuple",
4305            "internalType": "struct BN254.G1Point",
4306            "components": [
4307              {
4308                "name": "x",
4309                "type": "uint256",
4310                "internalType": "BN254.BaseField"
4311              },
4312              {
4313                "name": "y",
4314                "type": "uint256",
4315                "internalType": "BN254.BaseField"
4316              }
4317            ]
4318          },
4319          {
4320            "name": "split3",
4321            "type": "tuple",
4322            "internalType": "struct BN254.G1Point",
4323            "components": [
4324              {
4325                "name": "x",
4326                "type": "uint256",
4327                "internalType": "BN254.BaseField"
4328              },
4329              {
4330                "name": "y",
4331                "type": "uint256",
4332                "internalType": "BN254.BaseField"
4333              }
4334            ]
4335          },
4336          {
4337            "name": "split4",
4338            "type": "tuple",
4339            "internalType": "struct BN254.G1Point",
4340            "components": [
4341              {
4342                "name": "x",
4343                "type": "uint256",
4344                "internalType": "BN254.BaseField"
4345              },
4346              {
4347                "name": "y",
4348                "type": "uint256",
4349                "internalType": "BN254.BaseField"
4350              }
4351            ]
4352          },
4353          {
4354            "name": "zeta",
4355            "type": "tuple",
4356            "internalType": "struct BN254.G1Point",
4357            "components": [
4358              {
4359                "name": "x",
4360                "type": "uint256",
4361                "internalType": "BN254.BaseField"
4362              },
4363              {
4364                "name": "y",
4365                "type": "uint256",
4366                "internalType": "BN254.BaseField"
4367              }
4368            ]
4369          },
4370          {
4371            "name": "zetaOmega",
4372            "type": "tuple",
4373            "internalType": "struct BN254.G1Point",
4374            "components": [
4375              {
4376                "name": "x",
4377                "type": "uint256",
4378                "internalType": "BN254.BaseField"
4379              },
4380              {
4381                "name": "y",
4382                "type": "uint256",
4383                "internalType": "BN254.BaseField"
4384              }
4385            ]
4386          },
4387          {
4388            "name": "wireEval0",
4389            "type": "uint256",
4390            "internalType": "BN254.ScalarField"
4391          },
4392          {
4393            "name": "wireEval1",
4394            "type": "uint256",
4395            "internalType": "BN254.ScalarField"
4396          },
4397          {
4398            "name": "wireEval2",
4399            "type": "uint256",
4400            "internalType": "BN254.ScalarField"
4401          },
4402          {
4403            "name": "wireEval3",
4404            "type": "uint256",
4405            "internalType": "BN254.ScalarField"
4406          },
4407          {
4408            "name": "wireEval4",
4409            "type": "uint256",
4410            "internalType": "BN254.ScalarField"
4411          },
4412          {
4413            "name": "sigmaEval0",
4414            "type": "uint256",
4415            "internalType": "BN254.ScalarField"
4416          },
4417          {
4418            "name": "sigmaEval1",
4419            "type": "uint256",
4420            "internalType": "BN254.ScalarField"
4421          },
4422          {
4423            "name": "sigmaEval2",
4424            "type": "uint256",
4425            "internalType": "BN254.ScalarField"
4426          },
4427          {
4428            "name": "sigmaEval3",
4429            "type": "uint256",
4430            "internalType": "BN254.ScalarField"
4431          },
4432          {
4433            "name": "prodPermZetaOmegaEval",
4434            "type": "uint256",
4435            "internalType": "BN254.ScalarField"
4436          }
4437        ]
4438      }
4439    ],
4440    "outputs": [],
4441    "stateMutability": "pure"
4442  },
4443  {
4444    "type": "function",
4445    "name": "newFinalizedState",
4446    "inputs": [
4447      {
4448        "name": "newState",
4449        "type": "tuple",
4450        "internalType": "struct LightClient.LightClientState",
4451        "components": [
4452          {
4453            "name": "viewNum",
4454            "type": "uint64",
4455            "internalType": "uint64"
4456          },
4457          {
4458            "name": "blockHeight",
4459            "type": "uint64",
4460            "internalType": "uint64"
4461          },
4462          {
4463            "name": "blockCommRoot",
4464            "type": "uint256",
4465            "internalType": "BN254.ScalarField"
4466          }
4467        ]
4468      },
4469      {
4470        "name": "nextStakeTable",
4471        "type": "tuple",
4472        "internalType": "struct LightClient.StakeTableState",
4473        "components": [
4474          {
4475            "name": "threshold",
4476            "type": "uint256",
4477            "internalType": "uint256"
4478          },
4479          {
4480            "name": "blsKeyComm",
4481            "type": "uint256",
4482            "internalType": "BN254.ScalarField"
4483          },
4484          {
4485            "name": "schnorrKeyComm",
4486            "type": "uint256",
4487            "internalType": "BN254.ScalarField"
4488          },
4489          {
4490            "name": "amountComm",
4491            "type": "uint256",
4492            "internalType": "BN254.ScalarField"
4493          }
4494        ]
4495      },
4496      {
4497        "name": "newAuthRoot",
4498        "type": "uint256",
4499        "internalType": "uint256"
4500      },
4501      {
4502        "name": "proof",
4503        "type": "tuple",
4504        "internalType": "struct IPlonkVerifier.PlonkProof",
4505        "components": [
4506          {
4507            "name": "wire0",
4508            "type": "tuple",
4509            "internalType": "struct BN254.G1Point",
4510            "components": [
4511              {
4512                "name": "x",
4513                "type": "uint256",
4514                "internalType": "BN254.BaseField"
4515              },
4516              {
4517                "name": "y",
4518                "type": "uint256",
4519                "internalType": "BN254.BaseField"
4520              }
4521            ]
4522          },
4523          {
4524            "name": "wire1",
4525            "type": "tuple",
4526            "internalType": "struct BN254.G1Point",
4527            "components": [
4528              {
4529                "name": "x",
4530                "type": "uint256",
4531                "internalType": "BN254.BaseField"
4532              },
4533              {
4534                "name": "y",
4535                "type": "uint256",
4536                "internalType": "BN254.BaseField"
4537              }
4538            ]
4539          },
4540          {
4541            "name": "wire2",
4542            "type": "tuple",
4543            "internalType": "struct BN254.G1Point",
4544            "components": [
4545              {
4546                "name": "x",
4547                "type": "uint256",
4548                "internalType": "BN254.BaseField"
4549              },
4550              {
4551                "name": "y",
4552                "type": "uint256",
4553                "internalType": "BN254.BaseField"
4554              }
4555            ]
4556          },
4557          {
4558            "name": "wire3",
4559            "type": "tuple",
4560            "internalType": "struct BN254.G1Point",
4561            "components": [
4562              {
4563                "name": "x",
4564                "type": "uint256",
4565                "internalType": "BN254.BaseField"
4566              },
4567              {
4568                "name": "y",
4569                "type": "uint256",
4570                "internalType": "BN254.BaseField"
4571              }
4572            ]
4573          },
4574          {
4575            "name": "wire4",
4576            "type": "tuple",
4577            "internalType": "struct BN254.G1Point",
4578            "components": [
4579              {
4580                "name": "x",
4581                "type": "uint256",
4582                "internalType": "BN254.BaseField"
4583              },
4584              {
4585                "name": "y",
4586                "type": "uint256",
4587                "internalType": "BN254.BaseField"
4588              }
4589            ]
4590          },
4591          {
4592            "name": "prodPerm",
4593            "type": "tuple",
4594            "internalType": "struct BN254.G1Point",
4595            "components": [
4596              {
4597                "name": "x",
4598                "type": "uint256",
4599                "internalType": "BN254.BaseField"
4600              },
4601              {
4602                "name": "y",
4603                "type": "uint256",
4604                "internalType": "BN254.BaseField"
4605              }
4606            ]
4607          },
4608          {
4609            "name": "split0",
4610            "type": "tuple",
4611            "internalType": "struct BN254.G1Point",
4612            "components": [
4613              {
4614                "name": "x",
4615                "type": "uint256",
4616                "internalType": "BN254.BaseField"
4617              },
4618              {
4619                "name": "y",
4620                "type": "uint256",
4621                "internalType": "BN254.BaseField"
4622              }
4623            ]
4624          },
4625          {
4626            "name": "split1",
4627            "type": "tuple",
4628            "internalType": "struct BN254.G1Point",
4629            "components": [
4630              {
4631                "name": "x",
4632                "type": "uint256",
4633                "internalType": "BN254.BaseField"
4634              },
4635              {
4636                "name": "y",
4637                "type": "uint256",
4638                "internalType": "BN254.BaseField"
4639              }
4640            ]
4641          },
4642          {
4643            "name": "split2",
4644            "type": "tuple",
4645            "internalType": "struct BN254.G1Point",
4646            "components": [
4647              {
4648                "name": "x",
4649                "type": "uint256",
4650                "internalType": "BN254.BaseField"
4651              },
4652              {
4653                "name": "y",
4654                "type": "uint256",
4655                "internalType": "BN254.BaseField"
4656              }
4657            ]
4658          },
4659          {
4660            "name": "split3",
4661            "type": "tuple",
4662            "internalType": "struct BN254.G1Point",
4663            "components": [
4664              {
4665                "name": "x",
4666                "type": "uint256",
4667                "internalType": "BN254.BaseField"
4668              },
4669              {
4670                "name": "y",
4671                "type": "uint256",
4672                "internalType": "BN254.BaseField"
4673              }
4674            ]
4675          },
4676          {
4677            "name": "split4",
4678            "type": "tuple",
4679            "internalType": "struct BN254.G1Point",
4680            "components": [
4681              {
4682                "name": "x",
4683                "type": "uint256",
4684                "internalType": "BN254.BaseField"
4685              },
4686              {
4687                "name": "y",
4688                "type": "uint256",
4689                "internalType": "BN254.BaseField"
4690              }
4691            ]
4692          },
4693          {
4694            "name": "zeta",
4695            "type": "tuple",
4696            "internalType": "struct BN254.G1Point",
4697            "components": [
4698              {
4699                "name": "x",
4700                "type": "uint256",
4701                "internalType": "BN254.BaseField"
4702              },
4703              {
4704                "name": "y",
4705                "type": "uint256",
4706                "internalType": "BN254.BaseField"
4707              }
4708            ]
4709          },
4710          {
4711            "name": "zetaOmega",
4712            "type": "tuple",
4713            "internalType": "struct BN254.G1Point",
4714            "components": [
4715              {
4716                "name": "x",
4717                "type": "uint256",
4718                "internalType": "BN254.BaseField"
4719              },
4720              {
4721                "name": "y",
4722                "type": "uint256",
4723                "internalType": "BN254.BaseField"
4724              }
4725            ]
4726          },
4727          {
4728            "name": "wireEval0",
4729            "type": "uint256",
4730            "internalType": "BN254.ScalarField"
4731          },
4732          {
4733            "name": "wireEval1",
4734            "type": "uint256",
4735            "internalType": "BN254.ScalarField"
4736          },
4737          {
4738            "name": "wireEval2",
4739            "type": "uint256",
4740            "internalType": "BN254.ScalarField"
4741          },
4742          {
4743            "name": "wireEval3",
4744            "type": "uint256",
4745            "internalType": "BN254.ScalarField"
4746          },
4747          {
4748            "name": "wireEval4",
4749            "type": "uint256",
4750            "internalType": "BN254.ScalarField"
4751          },
4752          {
4753            "name": "sigmaEval0",
4754            "type": "uint256",
4755            "internalType": "BN254.ScalarField"
4756          },
4757          {
4758            "name": "sigmaEval1",
4759            "type": "uint256",
4760            "internalType": "BN254.ScalarField"
4761          },
4762          {
4763            "name": "sigmaEval2",
4764            "type": "uint256",
4765            "internalType": "BN254.ScalarField"
4766          },
4767          {
4768            "name": "sigmaEval3",
4769            "type": "uint256",
4770            "internalType": "BN254.ScalarField"
4771          },
4772          {
4773            "name": "prodPermZetaOmegaEval",
4774            "type": "uint256",
4775            "internalType": "BN254.ScalarField"
4776          }
4777        ]
4778      }
4779    ],
4780    "outputs": [],
4781    "stateMutability": "nonpayable"
4782  },
4783  {
4784    "type": "function",
4785    "name": "owner",
4786    "inputs": [],
4787    "outputs": [
4788      {
4789        "name": "",
4790        "type": "address",
4791        "internalType": "address"
4792      }
4793    ],
4794    "stateMutability": "view"
4795  },
4796  {
4797    "type": "function",
4798    "name": "permissionedProver",
4799    "inputs": [],
4800    "outputs": [
4801      {
4802        "name": "",
4803        "type": "address",
4804        "internalType": "address"
4805      }
4806    ],
4807    "stateMutability": "view"
4808  },
4809  {
4810    "type": "function",
4811    "name": "proxiableUUID",
4812    "inputs": [],
4813    "outputs": [
4814      {
4815        "name": "",
4816        "type": "bytes32",
4817        "internalType": "bytes32"
4818      }
4819    ],
4820    "stateMutability": "view"
4821  },
4822  {
4823    "type": "function",
4824    "name": "renounceOwnership",
4825    "inputs": [],
4826    "outputs": [],
4827    "stateMutability": "nonpayable"
4828  },
4829  {
4830    "type": "function",
4831    "name": "setPermissionedProver",
4832    "inputs": [
4833      {
4834        "name": "prover",
4835        "type": "address",
4836        "internalType": "address"
4837      }
4838    ],
4839    "outputs": [],
4840    "stateMutability": "nonpayable"
4841  },
4842  {
4843    "type": "function",
4844    "name": "setStateHistoryRetentionPeriod",
4845    "inputs": [
4846      {
4847        "name": "historySeconds",
4848        "type": "uint32",
4849        "internalType": "uint32"
4850      }
4851    ],
4852    "outputs": [],
4853    "stateMutability": "nonpayable"
4854  },
4855  {
4856    "type": "function",
4857    "name": "setstateHistoryRetentionPeriod",
4858    "inputs": [
4859      {
4860        "name": "historySeconds",
4861        "type": "uint32",
4862        "internalType": "uint32"
4863      }
4864    ],
4865    "outputs": [],
4866    "stateMutability": "nonpayable"
4867  },
4868  {
4869    "type": "function",
4870    "name": "stateHistoryCommitments",
4871    "inputs": [
4872      {
4873        "name": "",
4874        "type": "uint256",
4875        "internalType": "uint256"
4876      }
4877    ],
4878    "outputs": [
4879      {
4880        "name": "l1BlockHeight",
4881        "type": "uint64",
4882        "internalType": "uint64"
4883      },
4884      {
4885        "name": "l1BlockTimestamp",
4886        "type": "uint64",
4887        "internalType": "uint64"
4888      },
4889      {
4890        "name": "hotShotBlockHeight",
4891        "type": "uint64",
4892        "internalType": "uint64"
4893      },
4894      {
4895        "name": "hotShotBlockCommRoot",
4896        "type": "uint256",
4897        "internalType": "BN254.ScalarField"
4898      }
4899    ],
4900    "stateMutability": "view"
4901  },
4902  {
4903    "type": "function",
4904    "name": "stateHistoryFirstIndex",
4905    "inputs": [],
4906    "outputs": [
4907      {
4908        "name": "",
4909        "type": "uint64",
4910        "internalType": "uint64"
4911      }
4912    ],
4913    "stateMutability": "view"
4914  },
4915  {
4916    "type": "function",
4917    "name": "stateHistoryRetentionPeriod",
4918    "inputs": [],
4919    "outputs": [
4920      {
4921        "name": "",
4922        "type": "uint32",
4923        "internalType": "uint32"
4924      }
4925    ],
4926    "stateMutability": "view"
4927  },
4928  {
4929    "type": "function",
4930    "name": "transferOwnership",
4931    "inputs": [
4932      {
4933        "name": "newOwner",
4934        "type": "address",
4935        "internalType": "address"
4936      }
4937    ],
4938    "outputs": [],
4939    "stateMutability": "nonpayable"
4940  },
4941  {
4942    "type": "function",
4943    "name": "updateEpochStartBlock",
4944    "inputs": [
4945      {
4946        "name": "newEpochStartBlock",
4947        "type": "uint64",
4948        "internalType": "uint64"
4949      }
4950    ],
4951    "outputs": [],
4952    "stateMutability": "nonpayable"
4953  },
4954  {
4955    "type": "function",
4956    "name": "upgradeToAndCall",
4957    "inputs": [
4958      {
4959        "name": "newImplementation",
4960        "type": "address",
4961        "internalType": "address"
4962      },
4963      {
4964        "name": "data",
4965        "type": "bytes",
4966        "internalType": "bytes"
4967      }
4968    ],
4969    "outputs": [],
4970    "stateMutability": "payable"
4971  },
4972  {
4973    "type": "function",
4974    "name": "votingStakeTableState",
4975    "inputs": [],
4976    "outputs": [
4977      {
4978        "name": "threshold",
4979        "type": "uint256",
4980        "internalType": "uint256"
4981      },
4982      {
4983        "name": "blsKeyComm",
4984        "type": "uint256",
4985        "internalType": "BN254.ScalarField"
4986      },
4987      {
4988        "name": "schnorrKeyComm",
4989        "type": "uint256",
4990        "internalType": "BN254.ScalarField"
4991      },
4992      {
4993        "name": "amountComm",
4994        "type": "uint256",
4995        "internalType": "BN254.ScalarField"
4996      }
4997    ],
4998    "stateMutability": "view"
4999  },
5000  {
5001    "type": "event",
5002    "name": "Initialized",
5003    "inputs": [
5004      {
5005        "name": "version",
5006        "type": "uint64",
5007        "indexed": false,
5008        "internalType": "uint64"
5009      }
5010    ],
5011    "anonymous": false
5012  },
5013  {
5014    "type": "event",
5015    "name": "NewEpoch",
5016    "inputs": [
5017      {
5018        "name": "epoch",
5019        "type": "uint64",
5020        "indexed": false,
5021        "internalType": "uint64"
5022      }
5023    ],
5024    "anonymous": false
5025  },
5026  {
5027    "type": "event",
5028    "name": "NewState",
5029    "inputs": [
5030      {
5031        "name": "viewNum",
5032        "type": "uint64",
5033        "indexed": true,
5034        "internalType": "uint64"
5035      },
5036      {
5037        "name": "blockHeight",
5038        "type": "uint64",
5039        "indexed": true,
5040        "internalType": "uint64"
5041      },
5042      {
5043        "name": "blockCommRoot",
5044        "type": "uint256",
5045        "indexed": false,
5046        "internalType": "BN254.ScalarField"
5047      }
5048    ],
5049    "anonymous": false
5050  },
5051  {
5052    "type": "event",
5053    "name": "OwnershipTransferred",
5054    "inputs": [
5055      {
5056        "name": "previousOwner",
5057        "type": "address",
5058        "indexed": true,
5059        "internalType": "address"
5060      },
5061      {
5062        "name": "newOwner",
5063        "type": "address",
5064        "indexed": true,
5065        "internalType": "address"
5066      }
5067    ],
5068    "anonymous": false
5069  },
5070  {
5071    "type": "event",
5072    "name": "PermissionedProverNotRequired",
5073    "inputs": [],
5074    "anonymous": false
5075  },
5076  {
5077    "type": "event",
5078    "name": "PermissionedProverRequired",
5079    "inputs": [
5080      {
5081        "name": "permissionedProver",
5082        "type": "address",
5083        "indexed": false,
5084        "internalType": "address"
5085      }
5086    ],
5087    "anonymous": false
5088  },
5089  {
5090    "type": "event",
5091    "name": "Upgrade",
5092    "inputs": [
5093      {
5094        "name": "implementation",
5095        "type": "address",
5096        "indexed": false,
5097        "internalType": "address"
5098      }
5099    ],
5100    "anonymous": false
5101  },
5102  {
5103    "type": "event",
5104    "name": "Upgraded",
5105    "inputs": [
5106      {
5107        "name": "implementation",
5108        "type": "address",
5109        "indexed": true,
5110        "internalType": "address"
5111      }
5112    ],
5113    "anonymous": false
5114  },
5115  {
5116    "type": "error",
5117    "name": "AddressEmptyCode",
5118    "inputs": [
5119      {
5120        "name": "target",
5121        "type": "address",
5122        "internalType": "address"
5123      }
5124    ]
5125  },
5126  {
5127    "type": "error",
5128    "name": "DeprecatedApi",
5129    "inputs": []
5130  },
5131  {
5132    "type": "error",
5133    "name": "ERC1967InvalidImplementation",
5134    "inputs": [
5135      {
5136        "name": "implementation",
5137        "type": "address",
5138        "internalType": "address"
5139      }
5140    ]
5141  },
5142  {
5143    "type": "error",
5144    "name": "ERC1967NonPayable",
5145    "inputs": []
5146  },
5147  {
5148    "type": "error",
5149    "name": "FailedInnerCall",
5150    "inputs": []
5151  },
5152  {
5153    "type": "error",
5154    "name": "InsufficientSnapshotHistory",
5155    "inputs": []
5156  },
5157  {
5158    "type": "error",
5159    "name": "InvalidAddress",
5160    "inputs": []
5161  },
5162  {
5163    "type": "error",
5164    "name": "InvalidArgs",
5165    "inputs": []
5166  },
5167  {
5168    "type": "error",
5169    "name": "InvalidHotShotBlockForCommitmentCheck",
5170    "inputs": []
5171  },
5172  {
5173    "type": "error",
5174    "name": "InvalidInitialization",
5175    "inputs": []
5176  },
5177  {
5178    "type": "error",
5179    "name": "InvalidMaxStateHistory",
5180    "inputs": []
5181  },
5182  {
5183    "type": "error",
5184    "name": "InvalidProof",
5185    "inputs": []
5186  },
5187  {
5188    "type": "error",
5189    "name": "InvalidScalar",
5190    "inputs": []
5191  },
5192  {
5193    "type": "error",
5194    "name": "MissingEpochRootUpdate",
5195    "inputs": []
5196  },
5197  {
5198    "type": "error",
5199    "name": "NoChangeRequired",
5200    "inputs": []
5201  },
5202  {
5203    "type": "error",
5204    "name": "NotInitializing",
5205    "inputs": []
5206  },
5207  {
5208    "type": "error",
5209    "name": "OutdatedState",
5210    "inputs": []
5211  },
5212  {
5213    "type": "error",
5214    "name": "OwnableInvalidOwner",
5215    "inputs": [
5216      {
5217        "name": "owner",
5218        "type": "address",
5219        "internalType": "address"
5220      }
5221    ]
5222  },
5223  {
5224    "type": "error",
5225    "name": "OwnableUnauthorizedAccount",
5226    "inputs": [
5227      {
5228        "name": "account",
5229        "type": "address",
5230        "internalType": "address"
5231      }
5232    ]
5233  },
5234  {
5235    "type": "error",
5236    "name": "OwnershipCannotBeRenounced",
5237    "inputs": []
5238  },
5239  {
5240    "type": "error",
5241    "name": "ProverNotPermissioned",
5242    "inputs": []
5243  },
5244  {
5245    "type": "error",
5246    "name": "UUPSUnauthorizedCallContext",
5247    "inputs": []
5248  },
5249  {
5250    "type": "error",
5251    "name": "UUPSUnsupportedProxiableUUID",
5252    "inputs": [
5253      {
5254        "name": "slot",
5255        "type": "bytes32",
5256        "internalType": "bytes32"
5257      }
5258    ]
5259  },
5260  {
5261    "type": "error",
5262    "name": "WrongStakeTableUsed",
5263    "inputs": []
5264  }
5265]
5266```*/
5267#[allow(
5268    non_camel_case_types,
5269    non_snake_case,
5270    clippy::pub_underscore_fields,
5271    clippy::style,
5272    clippy::empty_structs_with_brackets
5273)]
5274pub mod LightClientV3 {
5275    use super::*;
5276    use alloy::sol_types as alloy_sol_types;
5277    /// The creation / init bytecode of the contract.
5278    ///
5279    /// ```text
5280    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516136c86100f95f395f8181611c6b01528181611c940152611e1101526136c85ff3fe608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d1461075d578063e03033011461078c578063f0682054146107ab578063f2fde38b146107ca578063f9e50d19146107e9575f5ffd5b80639fdb54a714610655578063aabd5db3146106aa578063ad3cb1cc146106c9578063b33bc49114610706578063c23b9e9e14610725575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105a757806390c14390146105e357806396c1ca6114610602578063998328e8146106215780639baa3cc914610636575f5ffd5b8063715018a61461050a578063757c37ad1461051e5780637667180814610538578063826e41fc1461054c5780638584d23f1461056b575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d31941461048f578063433dba9f146104b05780634f1ef286146104cf57806352d1902d146104e257806369cc6a04146104f6575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b1146104555780633ed55b7b14610469575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b610246366004612900565b6107fd565b005b348015610258575f5ffd5b5061026c610267366004612919565b6108b0565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108f9565b6040516102a19190612930565b348015610343575f5ffd5b5061024b610352366004612b47565b61090e565b348015610362575f5ffd5b5061024b610371366004612e09565b610985565b348015610381575f5ffd5b50610395610390366004612b47565b61099e565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612b47565b610a00565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b50435b6040519081526020016102a1565b348015610460575f5ffd5b5061024b610a95565b348015610474575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b34801561049a575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104bb575f5ffd5b5061024b6104ca366004612e50565b610b8c565b61024b6104dd366004612e69565b610ba0565b3480156104ed575f5ffd5b50610447610bbf565b348015610501575f5ffd5b5061024b610bda565b348015610515575f5ffd5b5061024b610c48565b348015610529575f5ffd5b5061024b610371366004612f6c565b348015610543575f5ffd5b506103cb610c69565b348015610557575f5ffd5b506008546001600160a01b03161515610395565b348015610576575f5ffd5b5061058a610585366004612919565b610c8e565b604080519283526001600160401b039091166020830152016102a1565b3480156105b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105ee575f5ffd5b506103cb6105fd366004612fb0565b610db9565b34801561060d575f5ffd5b5061024b61061c366004612e50565b610e28565b34801561062c575f5ffd5b50610447600f5481565b348015610641575f5ffd5b5061024b610650366004612fd8565b610eb1565b348015610660575f5ffd5b50600654600754610684916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106b5575f5ffd5b5061024b6106c436600461302d565b610fc0565b3480156106d4575f5ffd5b506106f9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a19190613071565b348015610711575f5ffd5b5061024b610720366004612fb0565b6112e5565b348015610730575f5ffd5b5060085461074890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b348015610768575f5ffd5b50600454600554610684916001600160401b0380821692600160401b909204169083565b348015610797575f5ffd5b506103956107a63660046130a6565b61143e565b3480156107b6575f5ffd5b50600a546103cb906001600160401b031681565b3480156107d5575f5ffd5b5061024b6107e4366004612900565b611596565b3480156107f4575f5ffd5b50600954610447565b6108056115d5565b6001600160a01b03811661082c5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361085b5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108bf575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610901612667565b610909611630565b905090565b6109166115d5565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561095c94919091048116928116911617610db9565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109be5750600a546001600160401b0316155b156109ca57505f919050565b600a546001600160401b03166109e18360056130da565b6109eb919061310d565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a205750600a546001600160401b0316155b15610a2c57505f919050565b600a54610a42906001600160401b03168361310d565b6001600160401b03161580610a8f5750600a54610a6a906005906001600160401b031661313a565b600a546001600160401b0391821691610a8491168461310d565b6001600160401b0316115b92915050565b610a9d6115d5565b5f51602061369c5f395f51905f52805460039190600160401b900460ff1680610ad3575080546001600160401b03808416911610155b15610af15760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b2b9291810482169116610db9565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610b946115d5565b610b9d81610e28565b50565b610ba8611c60565b610bb182611d04565b610bbb8282611d45565b5050565b5f610bc8611e06565b505f51602061367c5f395f51905f5290565b610be26115d5565b6008546001600160a01b031615610c2d57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610c506115d5565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91610909916001600160401b03600160401b90920482169116610db9565b600980545f91829190610ca2600183613159565b81548110610cb257610cb261316c565b5f918252602090912060029091020154600160801b90046001600160401b03168410610cf157604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610db2578460098281548110610d2157610d2161316c565b5f918252602090912060029091020154600160801b90046001600160401b03161115610daa5760098181548110610d5a57610d5a61316c565b905f5260205f2090600202016001015460098281548110610d7d57610d7d61316c565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610d05565b5050915091565b5f816001600160401b03165f03610dd157505f610a8f565b826001600160401b03165f03610de957506001610a8f565b610df3828461310d565b6001600160401b03165f03610e1357610e0c8284613180565b9050610a8f565b610e1d8284613180565b610e0c9060016130da565b610e306115d5565b610e108163ffffffff161080610e4f57506301e133808163ffffffff16115b80610e6d575060085463ffffffff600160a01b909104811690821611155b15610e8b576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f51602061369c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610ee25750825b90505f826001600160401b03166001148015610efd5750303b155b905081158015610f0b575080155b15610f295760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f5357845460ff60401b1916600160401b1785555b610f5c86611e4f565b610f64611e60565b610f6f898989611e68565b8315610fb557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b031615158015610fe557506008546001600160a01b03163314155b15611003576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b03918216911611158061103c575060065460208501516001600160401b03600160401b9092048216911611155b1561105a5760405163051c46ef60e01b815260040160405180910390fd5b6110678460400151611f94565b6110748360200151611f94565b6110818360400151611f94565b61108e8360600151611f94565b5f611097610c69565b6020860151600a549192505f916110b791906001600160401b0316610db9565b6010549091506001600160401b03908116908216106110fb576110dd8660200151610a00565b156110fb5760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b0390811690821611156111a757600261111e838361313a565b6001600160401b0316106111455760405163080ae8d960e01b815260040160405180910390fd5b6111508260016130da565b6001600160401b0316816001600160401b0316148015611189575060065461118790600160401b90046001600160401b031661099e565b155b156111a75760405163080ae8d960e01b815260040160405180910390fd5b6111b386868686611fd5565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906112105750611210866020015161099e565b1561127a578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b61125e8260016130da565b6040516001600160401b03909116815260200160405180910390a15b6112854342886121ff565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae688604001516040516112d591815260200190565b60405180910390a3505050505050565b6112ed6115d5565b5f51602061369c5f395f51905f52805460029190600160401b900460ff1680611323575080546001600160401b03808416911610155b156113415760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611389576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113d28385610db9565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f904384118061144f575080155b806114995750600854600980549091600160c01b90046001600160401b031690811061147d5761147d61316c565b5f9182526020909120600290910201546001600160401b031684105b156114b75760405163b0b4387760e01b815260040160405180910390fd5b5f80806114c5600185613159565b90505b8161156157600854600160c01b90046001600160401b031681106115615786600982815481106114fa576114fa61316c565b5f9182526020909120600290910201546001600160401b03161161154f57600191506009818154811061152f5761152f61316c565b5f9182526020909120600290910201546001600160401b03169250611561565b80611559816131ad565b9150506114c8565b8161157f5760405163b0b4387760e01b815260040160405180910390fd5b8561158a8489613159565b11979650505050505050565b61159e6115d5565b6001600160a01b0381166115cc57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610b9d816123e8565b336116077f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c465760405163118cdaa760e01b81523360048201526024016115c3565b611638612667565b621000008152600560208201527f2949260dc9e9621bb41dcb96ba7054b4bd5e7e230fdba5f3411260401c55f59d6040820151527f05d036973845e2e9d2ad9a795b351535a2576d51d27f21ff8372be92bd6f39466020604083015101527f0ba2c5ae9360efec9e3968e33f57fd33059e57385c1ea7db6430426b82e0871a6060820151527f1e333b5398c953194076772a861b7bf6a4c80c4a4c2e54eb9ca67aec5ff19fc96020606083015101527f0d9e9b9f38dd9fbbd5cd8b5a1d1c8aa4e777e526e06efe39345bf3ce4c5bb4aa6080820151527f10417eaf9ba330bbf56caf331a362114153a9c95ae914fbd1f99cb84d59fbf566020608083015101527f155dfc3a039f16ab99fa9663569ff06e5bfda91748a79821d80dafc7f1d92e5e60a0820151527f15daee81e8ffcac886bf9cc7453d659a987da1feb893c1fe9a94583f337f6dfa602060a083015101527f1c6f995727083f56734a4863c3bf4433b5353ad8d20f15d554a8cd2be28ef92d60c0820151527f0736ebbf0d73d42c428d5dd66ba4d9d9513a642d94147db629964d6d032776a8602060c083015101527f2c4aa1a42d17f226532742b7da21ed908ee6a1c13d824b269d21abcd59c8672360e0820151527f05c4163ca9cab2e65abbb41b6175591cf92460000c96fb9daa1f01d50af4936c602060e083015101527f215ecf683c65ee3dca3c2fc04b4864b1f2a538ef923af6380d420fa6b5a9f496610100820151527f1d03c378f3d7063d12c459ac659ce7a27c439cd6ad184c172352815f3a380d37602061010083015101527f20bc29548f10bd07fde418d49a5692f8919694571ab64c90f583dc434a5fec0c610120820151527f244e5fcb51c747a56fe6fdb32f0b01ef3bc55627f6f9afcd98dddbede50308a3602061012083015101527f0e3646b352d00a3482e89811f4966fb646889dadb561ebb7bb7c223e8196d5b3610140820151527f1b10219a6293abaf30388f39e4c7b925f89b6f57cb81654e1ad755294e790f09602061014083015101527f2b29b36cd6d33062a9a86e24bd178d69b1cebdc1a39c7977d547e7617b5747f9610160820151527f17062161c0a63cd17cee5b14821d7820e7fa432323b122ba59c44dd01f6a9238602061016083015101527f1198db3cec1a66ccdb90886bb96fcf175316c6ea78f73f23f4a11bcf4320e11a610180820151527f063b1f963e732bd20d86e1fef855788c1aacf26babb526d84e30633a2b5a9469602061018083015101527f23809a6a5bb0bf088f97efe15168a39471a3a4e41b8d6db0100e15fa68b09f636101a0820151527f0aba7b69ab7fdda68dac9065a5ee9fb50abfe57bdb5ab359cc5b56dff65cbea160206101a083015101527f1f038064d3ca1f37c56ecfe41701f15a412c63d3c9ad52fcfd3fd4c64da8b5f26101c0820151527f2689fe5cc59e4be112c2479969c25a7f603a5d71a2e7924480c9f4eafc2c298f60206101c083015101527f113021e93328a91531e40871481c4714e0b99a6afb10c779eeb2b07a7ae6f4e76101e0820151527f1a36bb2620cdb40c4dad25257716a9d8eb1e45f715ada98e424697aaf4d95c8660206101e083015101527f08f3f88ffb9e43261294b7faf582c513f9c7d0749db6dcc434d7493b8c975b2f610200820151527f2e3e0458741119ad1422072b6815fda80a3896640f018d282c88f1506b54e0e6602061020083015101527f100a5c0a4e1ac2791d1f68bc9c25b39ccfbb5d628c53d5547f89aa0cab8324d2610220820151527f05bf9e97428c387fbbc5f9cbf6effb33b57655494c2ab9f7cc5d445a0ea56bea602061022083015101527f067f3e0ce69cbbe32337f0538bf6119c72f7fd4d92857b785caf04a225b94d46610240820151527f211a076271069fb1fae1522ab8a4779480b50ed8c4648d201341e444e8ee2d15602061024083015101527f0b931b96997d9db8bc198c750098cad2960df407880f7b2cb51c85376d5fc849610260820151527f0e9121af76d7d9616432ded6a4de93cf146f5b7353a74f8a7265d6377fd4edc7602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611ce657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cda5f51602061367c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c465760405163703e46dd60e11b815260040160405180910390fd5b611d0c6115d5565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d9f575060408051601f3d908101601f19168201909252611d9c918101906131c2565b60015b611dc757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115c3565b5f51602061367c5f395f51905f528114611df757604051632a87526960e21b8152600481018290526024016115c3565b611e018383612458565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c465760405163703e46dd60e11b815260040160405180910390fd5b611e576124ad565b610b9d816124e3565b610c466124ad565b82516001600160401b0316151580611e8c575060208301516001600160401b031615155b80611e9957506020820151155b80611ea657506040820151155b80611eb357506060820151155b80611ebd57508151155b80611ecf5750610e108163ffffffff16105b80611ee357506301e133808163ffffffff16115b15611f01576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610bbb5760405163016c173360e21b815260040160405180910390fd5b5f611fde6108f9565b9050611fe86128cc565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120405750612040876020015161099e565b15612089576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a00160405160208183030381529060405290506120c4565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261211591849089906020016131f0565b60408051601f19818403018152919052805160209091012090506121597f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613212565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061219990879087908a90600401613407565b602060405180830381865af41580156121b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d89190613627565b6121f5576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b60095415801590612274575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061223f5761223f61316c565b5f91825260209091206002909102015461226990600160401b90046001600160401b03168461313a565b6001600160401b0316115b1561230757600854600980549091600160c01b90046001600160401b03169081106122a1576122a161316c565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186122e183613646565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612461826124eb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156124a557611e01828261254e565b610bbb6125c0565b5f51602061369c5f395f51905f5254600160401b900460ff16610c4657604051631afcd79f60e31b815260040160405180910390fd5b61159e6124ad565b806001600160a01b03163b5f0361252057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115c3565b5f51602061367c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161256a9190613670565b5f60405180830381855af49150503d805f81146125a2576040519150601f19603f3d011682016040523d82523d5f602084013e6125a7565b606091505b50915091506125b78583836125df565b95945050505050565b3415610c465760405163b398979f60e01b815260040160405180910390fd5b6060826125f4576125ef8261263e565b612637565b815115801561260b57506001600160a01b0384163b155b1561263457604051639996b31560e01b81526001600160a01b03851660048201526024016115c3565b50805b9392505050565b80511561264e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161269a60405180604001604052805f81526020015f81525090565b81526020016126ba60405180604001604052805f81526020015f81525090565b81526020016126da60405180604001604052805f81526020015f81525090565b81526020016126fa60405180604001604052805f81526020015f81525090565b815260200161271a60405180604001604052805f81526020015f81525090565b815260200161273a60405180604001604052805f81526020015f81525090565b815260200161275a60405180604001604052805f81526020015f81525090565b815260200161277a60405180604001604052805f81526020015f81525090565b815260200161279a60405180604001604052805f81526020015f81525090565b81526020016127ba60405180604001604052805f81526020015f81525090565b81526020016127da60405180604001604052805f81526020015f81525090565b81526020016127fa60405180604001604052805f81526020015f81525090565b815260200161281a60405180604001604052805f81526020015f81525090565b815260200161283a60405180604001604052805f81526020015f81525090565b815260200161285a60405180604001604052805f81526020015f81525090565b815260200161287a60405180604001604052805f81526020015f81525090565b815260200161289a60405180604001604052805f81526020015f81525090565b81526020016128ba60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b03811681146109fb575f5ffd5b5f60208284031215612910575f5ffd5b612637826128ea565b5f60208284031215612929575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612962604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146109fb575f5ffd5b5f60208284031215612b57575f5ffd5b61263782612b31565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612b9757612b97612b60565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612bc557612bc5612b60565b604052919050565b5f60608284031215612bdd575f5ffd5b604051606081016001600160401b0381118282101715612bff57612bff612b60565b604052905080612c0e83612b31565b8152612c1c60208401612b31565b6020820152604092830135920191909152919050565b5f60408284031215612c42575f5ffd5b604080519081016001600160401b0381118282101715612c6457612c64612b60565b604052823581526020928301359281019290925250919050565b5f6104808284031215612c8f575f5ffd5b612c97612b74565b9050612ca38383612c32565b8152612cb28360408401612c32565b6020820152612cc48360808401612c32565b6040820152612cd68360c08401612c32565b6060820152612ce9836101008401612c32565b6080820152612cfc836101408401612c32565b60a0820152612d0f836101808401612c32565b60c0820152612d22836101c08401612c32565b60e0820152612d35836102008401612c32565b610100820152612d49836102408401612c32565b610120820152612d5d836102808401612c32565b610140820152612d71836102c08401612c32565b610160820152612d85836103008401612c32565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612e1b575f5ffd5b612e258484612bcd565b9150612e348460608501612c7e565b90509250929050565b803563ffffffff811681146109fb575f5ffd5b5f60208284031215612e60575f5ffd5b61263782612e3d565b5f5f60408385031215612e7a575f5ffd5b612e83836128ea565b915060208301356001600160401b03811115612e9d575f5ffd5b8301601f81018513612ead575f5ffd5b80356001600160401b03811115612ec657612ec6612b60565b612ed9601f8201601f1916602001612b9d565b818152866020838501011115612eed575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612f1c575f5ffd5b604051608081016001600160401b0381118282101715612f3e57612f3e612b60565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612f7f575f5ffd5b612f898585612bcd565b9250612f988560608601612f0c565b9150612fa78560e08601612c7e565b90509250925092565b5f5f60408385031215612fc1575f5ffd5b612fca83612b31565b9150612e3460208401612b31565b5f5f5f5f6101208587031215612fec575f5ffd5b612ff68686612bcd565b93506130058660608701612f0c565b925061301360e08601612e3d565b915061302261010086016128ea565b905092959194509250565b5f5f5f5f6105808587031215613041575f5ffd5b61304b8686612bcd565b935061305a8660608701612f0c565b925060e08501359150613022866101008701612c7e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156130b7575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a8f57610a8f6130c6565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613125576131256130f9565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a8f57610a8f6130c6565b81810381811115610a8f57610a8f6130c6565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613198576131986130f9565b806001600160401b0384160491505092915050565b5f816131bb576131bb6130c6565b505f190190565b5f602082840312156131d2575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6132046131fe83876131d9565b856131d9565b928352505060200192915050565b5f82613220576132206130f9565b500690565b805f5b6005811015613247578151845260209384019390910190600101613228565b50505050565b61326282825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613439604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613611610500830185613225565b61361f6105a083018461324d565b949350505050565b5f60208284031215613637575f5ffd5b81518015158114612637575f5ffd5b5f6001600160401b0382166001600160401b038103613667576136676130c6565b60010192915050565b5f61263782846131d956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
5281    /// ```
5282    #[rustfmt::skip]
5283    #[allow(clippy::all)]
5284    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5285        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[`\x80Qa6\xC8a\0\xF9_9_\x81\x81a\x1Ck\x01R\x81\x81a\x1C\x94\x01Ra\x1E\x11\x01Ra6\xC8_\xF3\xFE`\x80`@R`\x046\x10a\x02(W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01)W\x80c\x9F\xDBT\xA7\x11a\0\xA8W\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x07]W\x80c\xE003\x01\x14a\x07\x8CW\x80c\xF0h T\x14a\x07\xABW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xCAW\x80c\xF9\xE5\r\x19\x14a\x07\xE9W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06UW\x80c\xAA\xBD]\xB3\x14a\x06\xAAW\x80c\xAD<\xB1\xCC\x14a\x06\xC9W\x80c\xB3;\xC4\x91\x14a\x07\x06W\x80c\xC2;\x9E\x9E\x14a\x07%W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xA7W\x80c\x90\xC1C\x90\x14a\x05\xE3W\x80c\x96\xC1\xCAa\x14a\x06\x02W\x80c\x99\x83(\xE8\x14a\x06!W\x80c\x9B\xAA<\xC9\x14a\x066W__\xFD[\x80cqP\x18\xA6\x14a\x05\nW\x80cu|7\xAD\x14a\x05\x1EW\x80cvg\x18\x08\x14a\x058W\x80c\x82nA\xFC\x14a\x05LW\x80c\x85\x84\xD2?\x14a\x05kW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x8FW\x80cC=\xBA\x9F\x14a\x04\xB0W\x80cO\x1E\xF2\x86\x14a\x04\xCFW\x80cR\xD1\x90-\x14a\x04\xE2W\x80ci\xCCj\x04\x14a\x04\xF6W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04UW\x80c>\xD5[{\x14a\x04iW__\xFD[\x80c\x12\x17<,\x11a\x01\xFBW\x80c\x12\x17<,\x14a\x03\x17W\x80c\x16z\xC6\x18\x14a\x038W\x80c c\xD4\xF7\x14a\x03WW\x80c%)t'\x14a\x03vW\x80c/y\x88\x9D\x14a\x03\xA5W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02,W\x80c\x02\xB5\x92\xF3\x14a\x02MW\x80c\x06%\xE1\x9B\x14a\x02\xAAW\x80c\r\x8En,\x14a\x02\xECW[__\xFD[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a)\0V[a\x07\xFDV[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a)\x19V[a\x08\xB0V[`@Qa\x02\xA1\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xB5W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xCC\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xA1V[4\x80\x15a\x02\xF7W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xA1V[4\x80\x15a\x03\"W__\xFD[Pa\x03+a\x08\xF9V[`@Qa\x02\xA1\x91\x90a)0V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+GV[a\t\x0EV[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a.\tV[a\t\x85V[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+GV[a\t\x9EV[`@Q\x90\x15\x15\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xB0W__\xFD[P`\x08Ta\x03\xCB\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xEEW__\xFD[Pa\x03\x95a\x03\xFD6`\x04a+GV[a\n\0V[4\x80\x15a\x04\rW__\xFD[P`\x08Ta\x04!\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x04DW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04`W__\xFD[Pa\x02Ka\n\x95V[4\x80\x15a\x04tW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x9AW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xBBW__\xFD[Pa\x02Ka\x04\xCA6`\x04a.PV[a\x0B\x8CV[a\x02Ka\x04\xDD6`\x04a.iV[a\x0B\xA0V[4\x80\x15a\x04\xEDW__\xFD[Pa\x04Ga\x0B\xBFV[4\x80\x15a\x05\x01W__\xFD[Pa\x02Ka\x0B\xDAV[4\x80\x15a\x05\x15W__\xFD[Pa\x02Ka\x0CHV[4\x80\x15a\x05)W__\xFD[Pa\x02Ka\x03q6`\x04a/lV[4\x80\x15a\x05CW__\xFD[Pa\x03\xCBa\x0CiV[4\x80\x15a\x05WW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05vW__\xFD[Pa\x05\x8Aa\x05\x856`\x04a)\x19V[a\x0C\x8EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB2W__\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!V[4\x80\x15a\x05\xEEW__\xFD[Pa\x03\xCBa\x05\xFD6`\x04a/\xB0V[a\r\xB9V[4\x80\x15a\x06\rW__\xFD[Pa\x02Ka\x06\x1C6`\x04a.PV[a\x0E(V[4\x80\x15a\x06,W__\xFD[Pa\x04G`\x0FT\x81V[4\x80\x15a\x06AW__\xFD[Pa\x02Ka\x06P6`\x04a/\xD8V[a\x0E\xB1V[4\x80\x15a\x06`W__\xFD[P`\x06T`\x07Ta\x06\x84\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\xA1V[4\x80\x15a\x06\xB5W__\xFD[Pa\x02Ka\x06\xC46`\x04a0-V[a\x0F\xC0V[4\x80\x15a\x06\xD4W__\xFD[Pa\x06\xF9`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0qV[4\x80\x15a\x07\x11W__\xFD[Pa\x02Ka\x07 6`\x04a/\xB0V[a\x12\xE5V[4\x80\x15a\x070W__\xFD[P`\x08Ta\x07H\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x07hW__\xFD[P`\x04T`\x05Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x97W__\xFD[Pa\x03\x95a\x07\xA66`\x04a0\xA6V[a\x14>V[4\x80\x15a\x07\xB6W__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xD5W__\xFD[Pa\x02Ka\x07\xE46`\x04a)\0V[a\x15\x96V[4\x80\x15a\x07\xF4W__\xFD[P`\tTa\x04GV[a\x08\x05a\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08,W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x08[W`@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\x08\xBFW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\x01a&gV[a\t\ta\x160V[\x90P\x90V[a\t\x16a\x15\xD5V[`\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\t\\\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\r\xB9V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBEWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCAWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE1\x83`\x05a0\xDAV[a\t\xEB\x91\x90a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\n WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\n,WP_\x91\x90PV[`\nTa\nB\x90`\x01`\x01`@\x1B\x03\x16\x83a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x8FWP`\nTa\nj\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1:V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x84\x91\x16\x84a1\rV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n\x9Da\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\n\xD3WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\n\xF1W`@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\x0B+\x92\x91\x81\x04\x82\x16\x91\x16a\r\xB9V[`\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\x0B\x94a\x15\xD5V[a\x0B\x9D\x81a\x0E(V[PV[a\x0B\xA8a\x1C`V[a\x0B\xB1\x82a\x1D\x04V[a\x0B\xBB\x82\x82a\x1DEV[PPV[_a\x0B\xC8a\x1E\x06V[P_Q` a6|_9_Q\x90_R\x90V[a\x0B\xE2a\x15\xD5V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C-W`\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\x0CPa\x15\xD5V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\t\t\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\r\xB9V[`\t\x80T_\x91\x82\x91\x90a\x0C\xA2`\x01\x83a1YV[\x81T\x81\x10a\x0C\xB2Wa\x0C\xB2a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0C\xF1W`@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\r\xB2W\x84`\t\x82\x81T\x81\x10a\r!Wa\r!a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\r\xAAW`\t\x81\x81T\x81\x10a\rZWa\rZa1lV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\r}Wa\r}a1lV[\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\r\x05V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\r\xD1WP_a\n\x8FV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\r\xE9WP`\x01a\n\x8FV[a\r\xF3\x82\x84a1\rV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0E\x13Wa\x0E\x0C\x82\x84a1\x80V[\x90Pa\n\x8FV[a\x0E\x1D\x82\x84a1\x80V[a\x0E\x0C\x90`\x01a0\xDAV[a\x0E0a\x15\xD5V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0EOWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0EmWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0E\x8BW`@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` a6\x9C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\xE2WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xFDWP0;\x15[\x90P\x81\x15\x80\x15a\x0F\x0BWP\x80\x15[\x15a\x0F)W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0FSW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\\\x86a\x1EOV[a\x0Fda\x1E`V[a\x0Fo\x89\x89\x89a\x1EhV[\x83\x15a\x0F\xB5W\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\x0F\xE5WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x10\x03W`@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\x10<WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10ZW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10g\x84`@\x01Qa\x1F\x94V[a\x10t\x83` \x01Qa\x1F\x94V[a\x10\x81\x83`@\x01Qa\x1F\x94V[a\x10\x8E\x83``\x01Qa\x1F\x94V[_a\x10\x97a\x0CiV[` \x86\x01Q`\nT\x91\x92P_\x91a\x10\xB7\x91\x90`\x01`\x01`@\x1B\x03\x16a\r\xB9V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x10\xFBWa\x10\xDD\x86` \x01Qa\n\0V[\x15a\x10\xFBW`@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\x11\xA7W`\x02a\x11\x1E\x83\x83a1:V[`\x01`\x01`@\x1B\x03\x16\x10a\x11EW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11P\x82`\x01a0\xDAV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11\x89WP`\x06Ta\x11\x87\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\x9EV[\x15[\x15a\x11\xA7W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB3\x86\x86\x86\x86a\x1F\xD5V[\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\x12\x10WPa\x12\x10\x86` \x01Qa\t\x9EV[\x15a\x12zW\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\x12^\x82`\x01a0\xDAV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12\x85CB\x88a!\xFFV[\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\x12\xD5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x12\xEDa\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13#WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13AW`@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\x13\x89W`@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\x13\xD2\x83\x85a\r\xB9V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x14OWP\x80\x15[\x80a\x14\x99WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14}Wa\x14}a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\xB7W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\xC5`\x01\x85a1YV[\x90P[\x81a\x15aW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15aW\x86`\t\x82\x81T\x81\x10a\x14\xFAWa\x14\xFAa1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15OW`\x01\x91P`\t\x81\x81T\x81\x10a\x15/Wa\x15/a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15aV[\x80a\x15Y\x81a1\xADV[\x91PPa\x14\xC8V[\x81a\x15\x7FW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x15\x8A\x84\x89a1YV[\x11\x97\x96PPPPPPPV[a\x15\x9Ea\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0B\x9D\x81a#\xE8V[3a\x16\x07\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\x0CFW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xC3V[a\x168a&gV[b\x10\0\0\x81R`\x05` \x82\x01R\x7F)I&\r\xC9\xE9b\x1B\xB4\x1D\xCB\x96\xBApT\xB4\xBD^~#\x0F\xDB\xA5\xF3A\x12`@\x1CU\xF5\x9D`@\x82\x01QR\x7F\x05\xD06\x978E\xE2\xE9\xD2\xAD\x9Ay[5\x155\xA2WmQ\xD2\x7F!\xFF\x83r\xBE\x92\xBDo9F` `@\x83\x01Q\x01R\x7F\x0B\xA2\xC5\xAE\x93`\xEF\xEC\x9E9h\xE3?W\xFD3\x05\x9EW8\\\x1E\xA7\xDBd0Bk\x82\xE0\x87\x1A``\x82\x01QR\x7F\x1E3;S\x98\xC9S\x19@vw*\x86\x1B{\xF6\xA4\xC8\x0CJL.T\xEB\x9C\xA6z\xEC_\xF1\x9F\xC9` ``\x83\x01Q\x01R\x7F\r\x9E\x9B\x9F8\xDD\x9F\xBB\xD5\xCD\x8BZ\x1D\x1C\x8A\xA4\xE7w\xE5&\xE0n\xFE94[\xF3\xCEL[\xB4\xAA`\x80\x82\x01QR\x7F\x10A~\xAF\x9B\xA30\xBB\xF5l\xAF3\x1A6!\x14\x15:\x9C\x95\xAE\x91O\xBD\x1F\x99\xCB\x84\xD5\x9F\xBFV` `\x80\x83\x01Q\x01R\x7F\x15]\xFC:\x03\x9F\x16\xAB\x99\xFA\x96cV\x9F\xF0n[\xFD\xA9\x17H\xA7\x98!\xD8\r\xAF\xC7\xF1\xD9.^`\xA0\x82\x01QR\x7F\x15\xDA\xEE\x81\xE8\xFF\xCA\xC8\x86\xBF\x9C\xC7E=e\x9A\x98}\xA1\xFE\xB8\x93\xC1\xFE\x9A\x94X?3\x7Fm\xFA` `\xA0\x83\x01Q\x01R\x7F\x1Co\x99W'\x08?VsJHc\xC3\xBFD3\xB55:\xD8\xD2\x0F\x15\xD5T\xA8\xCD+\xE2\x8E\xF9-`\xC0\x82\x01QR\x7F\x076\xEB\xBF\rs\xD4,B\x8D]\xD6k\xA4\xD9\xD9Q:d-\x94\x14}\xB6)\x96Mm\x03'v\xA8` `\xC0\x83\x01Q\x01R\x7F,J\xA1\xA4-\x17\xF2&S'B\xB7\xDA!\xED\x90\x8E\xE6\xA1\xC1=\x82K&\x9D!\xAB\xCDY\xC8g#`\xE0\x82\x01QR\x7F\x05\xC4\x16<\xA9\xCA\xB2\xE6Z\xBB\xB4\x1BauY\x1C\xF9$`\0\x0C\x96\xFB\x9D\xAA\x1F\x01\xD5\n\xF4\x93l` `\xE0\x83\x01Q\x01R\x7F!^\xCFh<e\xEE=\xCA</\xC0KHd\xB1\xF2\xA58\xEF\x92:\xF68\rB\x0F\xA6\xB5\xA9\xF4\x96a\x01\0\x82\x01QR\x7F\x1D\x03\xC3x\xF3\xD7\x06=\x12\xC4Y\xACe\x9C\xE7\xA2|C\x9C\xD6\xAD\x18L\x17#R\x81_:8\r7` a\x01\0\x83\x01Q\x01R\x7F \xBC)T\x8F\x10\xBD\x07\xFD\xE4\x18\xD4\x9AV\x92\xF8\x91\x96\x94W\x1A\xB6L\x90\xF5\x83\xDCCJ_\xEC\x0Ca\x01 \x82\x01QR\x7F$N_\xCBQ\xC7G\xA5o\xE6\xFD\xB3/\x0B\x01\xEF;\xC5V'\xF6\xF9\xAF\xCD\x98\xDD\xDB\xED\xE5\x03\x08\xA3` a\x01 \x83\x01Q\x01R\x7F\x0E6F\xB3R\xD0\n4\x82\xE8\x98\x11\xF4\x96o\xB6F\x88\x9D\xAD\xB5a\xEB\xB7\xBB|\">\x81\x96\xD5\xB3a\x01@\x82\x01QR\x7F\x1B\x10!\x9Ab\x93\xAB\xAF08\x8F9\xE4\xC7\xB9%\xF8\x9BoW\xCB\x81eN\x1A\xD7U)Ny\x0F\t` a\x01@\x83\x01Q\x01R\x7F+)\xB3l\xD6\xD30b\xA9\xA8n$\xBD\x17\x8Di\xB1\xCE\xBD\xC1\xA3\x9Cyw\xD5G\xE7a{WG\xF9a\x01`\x82\x01QR\x7F\x17\x06!a\xC0\xA6<\xD1|\xEE[\x14\x82\x1Dx \xE7\xFAC##\xB1\"\xBAY\xC4M\xD0\x1Fj\x928` a\x01`\x83\x01Q\x01R\x7F\x11\x98\xDB<\xEC\x1Af\xCC\xDB\x90\x88k\xB9o\xCF\x17S\x16\xC6\xEAx\xF7?#\xF4\xA1\x1B\xCFC \xE1\x1Aa\x01\x80\x82\x01QR\x7F\x06;\x1F\x96>s+\xD2\r\x86\xE1\xFE\xF8Ux\x8C\x1A\xAC\xF2k\xAB\xB5&\xD8N0c:+Z\x94i` a\x01\x80\x83\x01Q\x01R\x7F#\x80\x9Aj[\xB0\xBF\x08\x8F\x97\xEF\xE1Qh\xA3\x94q\xA3\xA4\xE4\x1B\x8Dm\xB0\x10\x0E\x15\xFAh\xB0\x9Fca\x01\xA0\x82\x01QR\x7F\n\xBA{i\xAB\x7F\xDD\xA6\x8D\xAC\x90e\xA5\xEE\x9F\xB5\n\xBF\xE5{\xDBZ\xB3Y\xCC[V\xDF\xF6\\\xBE\xA1` a\x01\xA0\x83\x01Q\x01R\x7F\x1F\x03\x80d\xD3\xCA\x1F7\xC5n\xCF\xE4\x17\x01\xF1ZA,c\xD3\xC9\xADR\xFC\xFD?\xD4\xC6M\xA8\xB5\xF2a\x01\xC0\x82\x01QR\x7F&\x89\xFE\\\xC5\x9EK\xE1\x12\xC2G\x99i\xC2Z\x7F`:]q\xA2\xE7\x92D\x80\xC9\xF4\xEA\xFC,)\x8F` a\x01\xC0\x83\x01Q\x01R\x7F\x110!\xE93(\xA9\x151\xE4\x08qH\x1CG\x14\xE0\xB9\x9Aj\xFB\x10\xC7y\xEE\xB2\xB0zz\xE6\xF4\xE7a\x01\xE0\x82\x01QR\x7F\x1A6\xBB& \xCD\xB4\x0CM\xAD%%w\x16\xA9\xD8\xEB\x1EE\xF7\x15\xAD\xA9\x8EBF\x97\xAA\xF4\xD9\\\x86` a\x01\xE0\x83\x01Q\x01R\x7F\x08\xF3\xF8\x8F\xFB\x9EC&\x12\x94\xB7\xFA\xF5\x82\xC5\x13\xF9\xC7\xD0t\x9D\xB6\xDC\xC44\xD7I;\x8C\x97[/a\x02\0\x82\x01QR\x7F.>\x04Xt\x11\x19\xAD\x14\"\x07+h\x15\xFD\xA8\n8\x96d\x0F\x01\x8D(,\x88\xF1PkT\xE0\xE6` a\x02\0\x83\x01Q\x01R\x7F\x10\n\\\nN\x1A\xC2y\x1D\x1Fh\xBC\x9C%\xB3\x9C\xCF\xBB]b\x8CS\xD5T\x7F\x89\xAA\x0C\xAB\x83$\xD2a\x02 \x82\x01QR\x7F\x05\xBF\x9E\x97B\x8C8\x7F\xBB\xC5\xF9\xCB\xF6\xEF\xFB3\xB5vUIL*\xB9\xF7\xCC]DZ\x0E\xA5k\xEA` a\x02 \x83\x01Q\x01R\x7F\x06\x7F>\x0C\xE6\x9C\xBB\xE3#7\xF0S\x8B\xF6\x11\x9Cr\xF7\xFDM\x92\x85{x\\\xAF\x04\xA2%\xB9MFa\x02@\x82\x01QR\x7F!\x1A\x07bq\x06\x9F\xB1\xFA\xE1R*\xB8\xA4w\x94\x80\xB5\x0E\xD8\xC4d\x8D \x13A\xE4D\xE8\xEE-\x15` a\x02@\x83\x01Q\x01R\x7F\x0B\x93\x1B\x96\x99}\x9D\xB8\xBC\x19\x8Cu\0\x98\xCA\xD2\x96\r\xF4\x07\x88\x0F{,\xB5\x1C\x857m_\xC8Ia\x02`\x82\x01QR\x7F\x0E\x91!\xAFv\xD7\xD9ad2\xDE\xD6\xA4\xDE\x93\xCF\x14o[sS\xA7O\x8Are\xD67\x7F\xD4\xED\xC7` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\xE6WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xDA_Q` a6|_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x0Ca\x15\xD5V[`@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\x08\xA5V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1D\x9FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\x9C\x91\x81\x01\x90a1\xC2V[`\x01[a\x1D\xC7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_9_Q\x90_R\x81\x14a\x1D\xF7W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xC3V[a\x1E\x01\x83\x83a$XV[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\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1EWa$\xADV[a\x0B\x9D\x81a$\xE3V[a\x0CFa$\xADV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1E\x8CWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1E\x99WP` \x82\x01Q\x15[\x80a\x1E\xA6WP`@\x82\x01Q\x15[\x80a\x1E\xB3WP``\x82\x01Q\x15[\x80a\x1E\xBDWP\x81Q\x15[\x80a\x1E\xCFWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1E\xE3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1F\x01W`@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\x0B\xBBW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xDEa\x08\xF9V[\x90Pa\x1F\xE8a(\xCCV[`\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 @WPa @\x87` \x01Qa\t\x9EV[\x15a \x89W`@\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 \xC4V[`@\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!\x15\x91\x84\x90\x89\x90` \x01a1\xF0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!Y\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a2\x12V[`\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!\x99\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a4\x07V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a!\xB4W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xD8\x91\x90a6'V[a!\xF5W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"tWP`\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\"?Wa\"?a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"i\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1:V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#\x07W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"\xA1Wa\"\xA1a1lV[_\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\"\xE1\x83a6FV[\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[\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$a\x82a$\xEBV[`@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$\xA5Wa\x1E\x01\x82\x82a%NV[a\x0B\xBBa%\xC0V[_Q` a6\x9C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0CFW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x9Ea$\xADV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a% W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_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%j\x91\x90a6pV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a%\xA2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\xA7V[``\x91P[P\x91P\x91Pa%\xB7\x85\x83\x83a%\xDFV[\x95\x94PPPPPV[4\x15a\x0CFW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a%\xF4Wa%\xEF\x82a&>V[a&7V[\x81Q\x15\x80\x15a&\x0BWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&4W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xC3V[P\x80[\x93\x92PPPV[\x80Q\x15a&NW\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&\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a':`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a)\x10W__\xFD[a&7\x82a(\xEAV[_` \x82\x84\x03\x12\x15a))W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)b`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a+WW__\xFD[a&7\x82a+1V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x97Wa+\x97a+`V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xC5Wa+\xC5a+`V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a+\xDDW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xFFWa+\xFFa+`V[`@R\x90P\x80a,\x0E\x83a+1V[\x81Ra,\x1C` \x84\x01a+1V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,BW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,dWa,da+`V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a,\x8FW__\xFD[a,\x97a+tV[\x90Pa,\xA3\x83\x83a,2V[\x81Ra,\xB2\x83`@\x84\x01a,2V[` \x82\x01Ra,\xC4\x83`\x80\x84\x01a,2V[`@\x82\x01Ra,\xD6\x83`\xC0\x84\x01a,2V[``\x82\x01Ra,\xE9\x83a\x01\0\x84\x01a,2V[`\x80\x82\x01Ra,\xFC\x83a\x01@\x84\x01a,2V[`\xA0\x82\x01Ra-\x0F\x83a\x01\x80\x84\x01a,2V[`\xC0\x82\x01Ra-\"\x83a\x01\xC0\x84\x01a,2V[`\xE0\x82\x01Ra-5\x83a\x02\0\x84\x01a,2V[a\x01\0\x82\x01Ra-I\x83a\x02@\x84\x01a,2V[a\x01 \x82\x01Ra-]\x83a\x02\x80\x84\x01a,2V[a\x01@\x82\x01Ra-q\x83a\x02\xC0\x84\x01a,2V[a\x01`\x82\x01Ra-\x85\x83a\x03\0\x84\x01a,2V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a.\x1BW__\xFD[a.%\x84\x84a+\xCDV[\x91Pa.4\x84``\x85\x01a,~V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a.`W__\xFD[a&7\x82a.=V[__`@\x83\x85\x03\x12\x15a.zW__\xFD[a.\x83\x83a(\xEAV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9DW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a.\xADW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC6Wa.\xC6a+`V[a.\xD9`\x1F\x82\x01`\x1F\x19\x16` \x01a+\x9DV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a.\xEDW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a/\x1CW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/>Wa/>a+`V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a/\x7FW__\xFD[a/\x89\x85\x85a+\xCDV[\x92Pa/\x98\x85``\x86\x01a/\x0CV[\x91Pa/\xA7\x85`\xE0\x86\x01a,~V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a/\xC1W__\xFD[a/\xCA\x83a+1V[\x91Pa.4` \x84\x01a+1V[____a\x01 \x85\x87\x03\x12\x15a/\xECW__\xFD[a/\xF6\x86\x86a+\xCDV[\x93Pa0\x05\x86``\x87\x01a/\x0CV[\x92Pa0\x13`\xE0\x86\x01a.=V[\x91Pa0\"a\x01\0\x86\x01a(\xEAV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0AW__\xFD[a0K\x86\x86a+\xCDV[\x93Pa0Z\x86``\x87\x01a/\x0CV[\x92P`\xE0\x85\x015\x91Pa0\"\x86a\x01\0\x87\x01a,~V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a0\xB7W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1%Wa1%a0\xF9V[\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\n\x8FWa\n\x8Fa0\xC6V[\x81\x81\x03\x81\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\x98Wa1\x98a0\xF9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a1\xBBWa1\xBBa0\xC6V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a1\xD2W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\x04a1\xFE\x83\x87a1\xD9V[\x85a1\xD9V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2 Wa2 a0\xF9V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2GW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a2(V[PPPPV[a2b\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\x01Qa49`@\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\x01Ra6\x11a\x05\0\x83\x01\x85a2%V[a6\x1Fa\x05\xA0\x83\x01\x84a2MV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a67W__\xFD[\x81Q\x80\x15\x15\x81\x14a&7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6gWa6ga0\xC6V[`\x01\x01\x92\x91PPV[_a&7\x82\x84a1\xD9V\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",
5286    );
5287    /// The runtime bytecode of the contract, as deployed on the network.
5288    ///
5289    /// ```text
5290    ///0x608060405260043610610228575f3560e01c8063715018a6116101295780639fdb54a7116100a8578063d24d933d1161006d578063d24d933d1461075d578063e03033011461078c578063f0682054146107ab578063f2fde38b146107ca578063f9e50d19146107e9575f5ffd5b80639fdb54a714610655578063aabd5db3146106aa578063ad3cb1cc146106c9578063b33bc49114610706578063c23b9e9e14610725575f5ffd5b80638da5cb5b116100ee5780638da5cb5b146105a757806390c14390146105e357806396c1ca6114610602578063998328e8146106215780639baa3cc914610636575f5ffd5b8063715018a61461050a578063757c37ad1461051e5780637667180814610538578063826e41fc1461054c5780638584d23f1461056b575f5ffd5b8063300c89dd116101b5578063426d31941161017a578063426d31941461048f578063433dba9f146104b05780634f1ef286146104cf57806352d1902d146104e257806369cc6a04146104f6575f5ffd5b8063300c89dd146103e3578063313df7b114610402578063378ec23b1461043957806338e454b1146104555780633ed55b7b14610469575f5ffd5b806312173c2c116101fb57806312173c2c14610317578063167ac618146103385780632063d4f71461035757806325297427146103765780632f79889d146103a5575f5ffd5b8063013fa5fc1461022c57806302b592f31461024d5780630625e19b146102aa5780630d8e6e2c146102ec575b5f5ffd5b348015610237575f5ffd5b5061024b610246366004612900565b6107fd565b005b348015610258575f5ffd5b5061026c610267366004612919565b6108b0565b6040516102a194939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102b5575f5ffd5b50600b54600c54600d54600e546102cc9392919084565b6040805194855260208501939093529183015260608201526080016102a1565b3480156102f7575f5ffd5b5060408051600381525f60208201819052918101919091526060016102a1565b348015610322575f5ffd5b5061032b6108f9565b6040516102a19190612930565b348015610343575f5ffd5b5061024b610352366004612b47565b61090e565b348015610362575f5ffd5b5061024b610371366004612e09565b610985565b348015610381575f5ffd5b50610395610390366004612b47565b61099e565b60405190151581526020016102a1565b3480156103b0575f5ffd5b506008546103cb90600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102a1565b3480156103ee575f5ffd5b506103956103fd366004612b47565b610a00565b34801561040d575f5ffd5b50600854610421906001600160a01b031681565b6040516001600160a01b0390911681526020016102a1565b348015610444575f5ffd5b50435b6040519081526020016102a1565b348015610460575f5ffd5b5061024b610a95565b348015610474575f5ffd5b50600a546103cb90600160401b90046001600160401b031681565b34801561049a575f5ffd5b505f546001546002546003546102cc9392919084565b3480156104bb575f5ffd5b5061024b6104ca366004612e50565b610b8c565b61024b6104dd366004612e69565b610ba0565b3480156104ed575f5ffd5b50610447610bbf565b348015610501575f5ffd5b5061024b610bda565b348015610515575f5ffd5b5061024b610c48565b348015610529575f5ffd5b5061024b610371366004612f6c565b348015610543575f5ffd5b506103cb610c69565b348015610557575f5ffd5b506008546001600160a01b03161515610395565b348015610576575f5ffd5b5061058a610585366004612919565b610c8e565b604080519283526001600160401b039091166020830152016102a1565b3480156105b2575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610421565b3480156105ee575f5ffd5b506103cb6105fd366004612fb0565b610db9565b34801561060d575f5ffd5b5061024b61061c366004612e50565b610e28565b34801561062c575f5ffd5b50610447600f5481565b348015610641575f5ffd5b5061024b610650366004612fd8565b610eb1565b348015610660575f5ffd5b50600654600754610684916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102a1565b3480156106b5575f5ffd5b5061024b6106c436600461302d565b610fc0565b3480156106d4575f5ffd5b506106f9604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102a19190613071565b348015610711575f5ffd5b5061024b610720366004612fb0565b6112e5565b348015610730575f5ffd5b5060085461074890600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102a1565b348015610768575f5ffd5b50600454600554610684916001600160401b0380821692600160401b909204169083565b348015610797575f5ffd5b506103956107a63660046130a6565b61143e565b3480156107b6575f5ffd5b50600a546103cb906001600160401b031681565b3480156107d5575f5ffd5b5061024b6107e4366004612900565b611596565b3480156107f4575f5ffd5b50600954610447565b6108056115d5565b6001600160a01b03811661082c5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361085b5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106108bf575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b610901612667565b610909611630565b905090565b6109166115d5565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561095c94919091048116928116911617610db9565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109be5750600a546001600160401b0316155b156109ca57505f919050565b600a546001600160401b03166109e18360056130da565b6109eb919061310d565b6001600160401b03161592915050565b919050565b5f6001600160401b0382161580610a205750600a546001600160401b0316155b15610a2c57505f919050565b600a54610a42906001600160401b03168361310d565b6001600160401b03161580610a8f5750600a54610a6a906005906001600160401b031661313a565b600a546001600160401b0391821691610a8491168461310d565b6001600160401b0316115b92915050565b610a9d6115d5565b5f51602061369c5f395f51905f52805460039190600160401b900460ff1680610ad3575080546001600160401b03808416911610155b15610af15760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b9081178355600a54610b2b9291810482169116610db9565b6010805467ffffffffffffffff19166001600160401b03928316179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050565b610b946115d5565b610b9d81610e28565b50565b610ba8611c60565b610bb182611d04565b610bbb8282611d45565b5050565b5f610bc8611e06565b505f51602061367c5f395f51905f5290565b610be26115d5565b6008546001600160a01b031615610c2d57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610c506115d5565b6040516317d5c96560e11b815260040160405180910390fd5b600654600a545f91610909916001600160401b03600160401b90920482169116610db9565b600980545f91829190610ca2600183613159565b81548110610cb257610cb261316c565b5f918252602090912060029091020154600160801b90046001600160401b03168410610cf157604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610db2578460098281548110610d2157610d2161316c565b5f918252602090912060029091020154600160801b90046001600160401b03161115610daa5760098181548110610d5a57610d5a61316c565b905f5260205f2090600202016001015460098281548110610d7d57610d7d61316c565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610d05565b5050915091565b5f816001600160401b03165f03610dd157505f610a8f565b826001600160401b03165f03610de957506001610a8f565b610df3828461310d565b6001600160401b03165f03610e1357610e0c8284613180565b9050610a8f565b610e1d8284613180565b610e0c9060016130da565b610e306115d5565b610e108163ffffffff161080610e4f57506301e133808163ffffffff16115b80610e6d575060085463ffffffff600160a01b909104811690821611155b15610e8b576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b5f51602061369c5f395f51905f528054600160401b810460ff1615906001600160401b03165f81158015610ee25750825b90505f826001600160401b03166001148015610efd5750303b155b905081158015610f0b575080155b15610f295760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f5357845460ff60401b1916600160401b1785555b610f5c86611e4f565b610f64611e60565b610f6f898989611e68565b8315610fb557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6008546001600160a01b031615158015610fe557506008546001600160a01b03163314155b15611003576040516301474c8f60e71b815260040160405180910390fd5b60065484516001600160401b03918216911611158061103c575060065460208501516001600160401b03600160401b9092048216911611155b1561105a5760405163051c46ef60e01b815260040160405180910390fd5b6110678460400151611f94565b6110748360200151611f94565b6110818360400151611f94565b61108e8360600151611f94565b5f611097610c69565b6020860151600a549192505f916110b791906001600160401b0316610db9565b6010549091506001600160401b03908116908216106110fb576110dd8660200151610a00565b156110fb5760405163080ae8d960e01b815260040160405180910390fd5b6010546001600160401b0390811690821611156111a757600261111e838361313a565b6001600160401b0316106111455760405163080ae8d960e01b815260040160405180910390fd5b6111508260016130da565b6001600160401b0316816001600160401b0316148015611189575060065461118790600160401b90046001600160401b031661099e565b155b156111a75760405163080ae8d960e01b815260040160405180910390fd5b6111b386868686611fd5565b85516006805460208901516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040870151600755600f8590556010548116908216108015906112105750611210866020015161099e565b1561127a578451600b556020850151600c556040850151600d556060850151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b61125e8260016130da565b6040516001600160401b03909116815260200160405180910390a15b6112854342886121ff565b85602001516001600160401b0316865f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae688604001516040516112d591815260200190565b60405180910390a3505050505050565b6112ed6115d5565b5f51602061369c5f395f51905f52805460029190600160401b900460ff1680611323575080546001600160401b03808416911610155b156113415760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611389576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556113d28385610db9565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f904384118061144f575080155b806114995750600854600980549091600160c01b90046001600160401b031690811061147d5761147d61316c565b5f9182526020909120600290910201546001600160401b031684105b156114b75760405163b0b4387760e01b815260040160405180910390fd5b5f80806114c5600185613159565b90505b8161156157600854600160c01b90046001600160401b031681106115615786600982815481106114fa576114fa61316c565b5f9182526020909120600290910201546001600160401b03161161154f57600191506009818154811061152f5761152f61316c565b5f9182526020909120600290910201546001600160401b03169250611561565b80611559816131ad565b9150506114c8565b8161157f5760405163b0b4387760e01b815260040160405180910390fd5b8561158a8489613159565b11979650505050505050565b61159e6115d5565b6001600160a01b0381166115cc57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610b9d816123e8565b336116077f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c465760405163118cdaa760e01b81523360048201526024016115c3565b611638612667565b621000008152600560208201527f2949260dc9e9621bb41dcb96ba7054b4bd5e7e230fdba5f3411260401c55f59d6040820151527f05d036973845e2e9d2ad9a795b351535a2576d51d27f21ff8372be92bd6f39466020604083015101527f0ba2c5ae9360efec9e3968e33f57fd33059e57385c1ea7db6430426b82e0871a6060820151527f1e333b5398c953194076772a861b7bf6a4c80c4a4c2e54eb9ca67aec5ff19fc96020606083015101527f0d9e9b9f38dd9fbbd5cd8b5a1d1c8aa4e777e526e06efe39345bf3ce4c5bb4aa6080820151527f10417eaf9ba330bbf56caf331a362114153a9c95ae914fbd1f99cb84d59fbf566020608083015101527f155dfc3a039f16ab99fa9663569ff06e5bfda91748a79821d80dafc7f1d92e5e60a0820151527f15daee81e8ffcac886bf9cc7453d659a987da1feb893c1fe9a94583f337f6dfa602060a083015101527f1c6f995727083f56734a4863c3bf4433b5353ad8d20f15d554a8cd2be28ef92d60c0820151527f0736ebbf0d73d42c428d5dd66ba4d9d9513a642d94147db629964d6d032776a8602060c083015101527f2c4aa1a42d17f226532742b7da21ed908ee6a1c13d824b269d21abcd59c8672360e0820151527f05c4163ca9cab2e65abbb41b6175591cf92460000c96fb9daa1f01d50af4936c602060e083015101527f215ecf683c65ee3dca3c2fc04b4864b1f2a538ef923af6380d420fa6b5a9f496610100820151527f1d03c378f3d7063d12c459ac659ce7a27c439cd6ad184c172352815f3a380d37602061010083015101527f20bc29548f10bd07fde418d49a5692f8919694571ab64c90f583dc434a5fec0c610120820151527f244e5fcb51c747a56fe6fdb32f0b01ef3bc55627f6f9afcd98dddbede50308a3602061012083015101527f0e3646b352d00a3482e89811f4966fb646889dadb561ebb7bb7c223e8196d5b3610140820151527f1b10219a6293abaf30388f39e4c7b925f89b6f57cb81654e1ad755294e790f09602061014083015101527f2b29b36cd6d33062a9a86e24bd178d69b1cebdc1a39c7977d547e7617b5747f9610160820151527f17062161c0a63cd17cee5b14821d7820e7fa432323b122ba59c44dd01f6a9238602061016083015101527f1198db3cec1a66ccdb90886bb96fcf175316c6ea78f73f23f4a11bcf4320e11a610180820151527f063b1f963e732bd20d86e1fef855788c1aacf26babb526d84e30633a2b5a9469602061018083015101527f23809a6a5bb0bf088f97efe15168a39471a3a4e41b8d6db0100e15fa68b09f636101a0820151527f0aba7b69ab7fdda68dac9065a5ee9fb50abfe57bdb5ab359cc5b56dff65cbea160206101a083015101527f1f038064d3ca1f37c56ecfe41701f15a412c63d3c9ad52fcfd3fd4c64da8b5f26101c0820151527f2689fe5cc59e4be112c2479969c25a7f603a5d71a2e7924480c9f4eafc2c298f60206101c083015101527f113021e93328a91531e40871481c4714e0b99a6afb10c779eeb2b07a7ae6f4e76101e0820151527f1a36bb2620cdb40c4dad25257716a9d8eb1e45f715ada98e424697aaf4d95c8660206101e083015101527f08f3f88ffb9e43261294b7faf582c513f9c7d0749db6dcc434d7493b8c975b2f610200820151527f2e3e0458741119ad1422072b6815fda80a3896640f018d282c88f1506b54e0e6602061020083015101527f100a5c0a4e1ac2791d1f68bc9c25b39ccfbb5d628c53d5547f89aa0cab8324d2610220820151527f05bf9e97428c387fbbc5f9cbf6effb33b57655494c2ab9f7cc5d445a0ea56bea602061022083015101527f067f3e0ce69cbbe32337f0538bf6119c72f7fd4d92857b785caf04a225b94d46610240820151527f211a076271069fb1fae1522ab8a4779480b50ed8c4648d201341e444e8ee2d15602061024083015101527f0b931b96997d9db8bc198c750098cad2960df407880f7b2cb51c85376d5fc849610260820151527f0e9121af76d7d9616432ded6a4de93cf146f5b7353a74f8a7265d6377fd4edc7602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611ce657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cda5f51602061367c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610c465760405163703e46dd60e11b815260040160405180910390fd5b611d0c6115d5565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d906020016108a5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d9f575060408051601f3d908101601f19168201909252611d9c918101906131c2565b60015b611dc757604051634c9c8ce360e01b81526001600160a01b03831660048201526024016115c3565b5f51602061367c5f395f51905f528114611df757604051632a87526960e21b8152600481018290526024016115c3565b611e018383612458565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c465760405163703e46dd60e11b815260040160405180910390fd5b611e576124ad565b610b9d816124e3565b610c466124ad565b82516001600160401b0316151580611e8c575060208301516001600160401b031615155b80611e9957506020820151155b80611ea657506040820151155b80611eb357506060820151155b80611ebd57508151155b80611ecf5750610e108163ffffffff16105b80611ee357506301e133808163ffffffff16115b15611f01576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610bbb5760405163016c173360e21b815260040160405180910390fd5b5f611fde6108f9565b9050611fe86128cc565b600c548152600d54602080830191909152600e546040830152600b54606080840191909152600a549188015190916001600160401b03600160401b90910481169116108015906120405750612040876020015161099e565b15612089576040805187516020808301919091528801518183015290870151606080830191909152870151608082015260a00160405160208183030381529060405290506120c4565b60408051600b546020820152600c5491810191909152600d546060820152600e54608082015260a00160405160208183030381529060405290505b6040805188516001600160401b039081166020808401919091528a015116818301529088015160608201525f9060800160408051601f198184030181529082905261211591849089906020016131f0565b60408051601f19818403018152919052805160209091012090506121597f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182613212565b60808401526040516354e8bd6760e01b815273ffffffffffffffffffffffffffffffffffffffff906354e8bd679061219990879087908a90600401613407565b602060405180830381865af41580156121b4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d89190613627565b6121f5576040516309bde33960e01b815260040160405180910390fd5b5050505050505050565b60095415801590612274575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061223f5761223f61316c565b5f91825260209091206002909102015461226990600160401b90046001600160401b03168461313a565b6001600160401b0316115b1561230757600854600980549091600160c01b90046001600160401b03169081106122a1576122a161316c565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186122e183613646565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612461826124eb565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156124a557611e01828261254e565b610bbb6125c0565b5f51602061369c5f395f51905f5254600160401b900460ff16610c4657604051631afcd79f60e31b815260040160405180910390fd5b61159e6124ad565b806001600160a01b03163b5f0361252057604051634c9c8ce360e01b81526001600160a01b03821660048201526024016115c3565b5f51602061367c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161256a9190613670565b5f60405180830381855af49150503d805f81146125a2576040519150601f19603f3d011682016040523d82523d5f602084013e6125a7565b606091505b50915091506125b78583836125df565b95945050505050565b3415610c465760405163b398979f60e01b815260040160405180910390fd5b6060826125f4576125ef8261263e565b612637565b815115801561260b57506001600160a01b0384163b155b1561263457604051639996b31560e01b81526001600160a01b03851660048201526024016115c3565b50805b9392505050565b80511561264e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161269a60405180604001604052805f81526020015f81525090565b81526020016126ba60405180604001604052805f81526020015f81525090565b81526020016126da60405180604001604052805f81526020015f81525090565b81526020016126fa60405180604001604052805f81526020015f81525090565b815260200161271a60405180604001604052805f81526020015f81525090565b815260200161273a60405180604001604052805f81526020015f81525090565b815260200161275a60405180604001604052805f81526020015f81525090565b815260200161277a60405180604001604052805f81526020015f81525090565b815260200161279a60405180604001604052805f81526020015f81525090565b81526020016127ba60405180604001604052805f81526020015f81525090565b81526020016127da60405180604001604052805f81526020015f81525090565b81526020016127fa60405180604001604052805f81526020015f81525090565b815260200161281a60405180604001604052805f81526020015f81525090565b815260200161283a60405180604001604052805f81526020015f81525090565b815260200161285a60405180604001604052805f81526020015f81525090565b815260200161287a60405180604001604052805f81526020015f81525090565b815260200161289a60405180604001604052805f81526020015f81525090565b81526020016128ba60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060a001604052806005906020820280368337509192915050565b80356001600160a01b03811681146109fb575f5ffd5b5f60208284031215612910575f5ffd5b612637826128ea565b5f60208284031215612929575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612962604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b03811681146109fb575f5ffd5b5f60208284031215612b57575f5ffd5b61263782612b31565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612b9757612b97612b60565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612bc557612bc5612b60565b604052919050565b5f60608284031215612bdd575f5ffd5b604051606081016001600160401b0381118282101715612bff57612bff612b60565b604052905080612c0e83612b31565b8152612c1c60208401612b31565b6020820152604092830135920191909152919050565b5f60408284031215612c42575f5ffd5b604080519081016001600160401b0381118282101715612c6457612c64612b60565b604052823581526020928301359281019290925250919050565b5f6104808284031215612c8f575f5ffd5b612c97612b74565b9050612ca38383612c32565b8152612cb28360408401612c32565b6020820152612cc48360808401612c32565b6040820152612cd68360c08401612c32565b6060820152612ce9836101008401612c32565b6080820152612cfc836101408401612c32565b60a0820152612d0f836101808401612c32565b60c0820152612d22836101c08401612c32565b60e0820152612d35836102008401612c32565b610100820152612d49836102408401612c32565b610120820152612d5d836102808401612c32565b610140820152612d71836102c08401612c32565b610160820152612d85836103008401612c32565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612e1b575f5ffd5b612e258484612bcd565b9150612e348460608501612c7e565b90509250929050565b803563ffffffff811681146109fb575f5ffd5b5f60208284031215612e60575f5ffd5b61263782612e3d565b5f5f60408385031215612e7a575f5ffd5b612e83836128ea565b915060208301356001600160401b03811115612e9d575f5ffd5b8301601f81018513612ead575f5ffd5b80356001600160401b03811115612ec657612ec6612b60565b612ed9601f8201601f1916602001612b9d565b818152866020838501011115612eed575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612f1c575f5ffd5b604051608081016001600160401b0381118282101715612f3e57612f3e612b60565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612f7f575f5ffd5b612f898585612bcd565b9250612f988560608601612f0c565b9150612fa78560e08601612c7e565b90509250925092565b5f5f60408385031215612fc1575f5ffd5b612fca83612b31565b9150612e3460208401612b31565b5f5f5f5f6101208587031215612fec575f5ffd5b612ff68686612bcd565b93506130058660608701612f0c565b925061301360e08601612e3d565b915061302261010086016128ea565b905092959194509250565b5f5f5f5f6105808587031215613041575f5ffd5b61304b8686612bcd565b935061305a8660608701612f0c565b925060e08501359150613022866101008701612c7e565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f604083850312156130b7575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a8f57610a8f6130c6565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680613125576131256130f9565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a8f57610a8f6130c6565b81810381811115610a8f57610a8f6130c6565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680613198576131986130f9565b806001600160401b0384160491505092915050565b5f816131bb576131bb6130c6565b505f190190565b5f602082840312156131d2575f5ffd5b5051919050565b5f81518060208401855e5f93019283525090919050565b5f6132046131fe83876131d9565b856131d9565b928352505060200192915050565b5f82613220576132206130f9565b500690565b805f5b6005811015613247578151845260209384019390910190600101613228565b50505050565b61326282825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a208201905084518252602085015160208301526040850151613439604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152613611610500830185613225565b61361f6105a083018461324d565b949350505050565b5f60208284031215613637575f5ffd5b81518015158114612637575f5ffd5b5f6001600160401b0382166001600160401b038103613667576136676130c6565b60010192915050565b5f61263782846131d956fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000823000a
5291    /// ```
5292    #[rustfmt::skip]
5293    #[allow(clippy::all)]
5294    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5295        b"`\x80`@R`\x046\x10a\x02(W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01)W\x80c\x9F\xDBT\xA7\x11a\0\xA8W\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x07]W\x80c\xE003\x01\x14a\x07\x8CW\x80c\xF0h T\x14a\x07\xABW\x80c\xF2\xFD\xE3\x8B\x14a\x07\xCAW\x80c\xF9\xE5\r\x19\x14a\x07\xE9W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06UW\x80c\xAA\xBD]\xB3\x14a\x06\xAAW\x80c\xAD<\xB1\xCC\x14a\x06\xC9W\x80c\xB3;\xC4\x91\x14a\x07\x06W\x80c\xC2;\x9E\x9E\x14a\x07%W__\xFD[\x80c\x8D\xA5\xCB[\x11a\0\xEEW\x80c\x8D\xA5\xCB[\x14a\x05\xA7W\x80c\x90\xC1C\x90\x14a\x05\xE3W\x80c\x96\xC1\xCAa\x14a\x06\x02W\x80c\x99\x83(\xE8\x14a\x06!W\x80c\x9B\xAA<\xC9\x14a\x066W__\xFD[\x80cqP\x18\xA6\x14a\x05\nW\x80cu|7\xAD\x14a\x05\x1EW\x80cvg\x18\x08\x14a\x058W\x80c\x82nA\xFC\x14a\x05LW\x80c\x85\x84\xD2?\x14a\x05kW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xB5W\x80cBm1\x94\x11a\x01zW\x80cBm1\x94\x14a\x04\x8FW\x80cC=\xBA\x9F\x14a\x04\xB0W\x80cO\x1E\xF2\x86\x14a\x04\xCFW\x80cR\xD1\x90-\x14a\x04\xE2W\x80ci\xCCj\x04\x14a\x04\xF6W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xE3W\x80c1=\xF7\xB1\x14a\x04\x02W\x80c7\x8E\xC2;\x14a\x049W\x80c8\xE4T\xB1\x14a\x04UW\x80c>\xD5[{\x14a\x04iW__\xFD[\x80c\x12\x17<,\x11a\x01\xFBW\x80c\x12\x17<,\x14a\x03\x17W\x80c\x16z\xC6\x18\x14a\x038W\x80c c\xD4\xF7\x14a\x03WW\x80c%)t'\x14a\x03vW\x80c/y\x88\x9D\x14a\x03\xA5W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02,W\x80c\x02\xB5\x92\xF3\x14a\x02MW\x80c\x06%\xE1\x9B\x14a\x02\xAAW\x80c\r\x8En,\x14a\x02\xECW[__\xFD[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a)\0V[a\x07\xFDV[\0[4\x80\x15a\x02XW__\xFD[Pa\x02la\x02g6`\x04a)\x19V[a\x08\xB0V[`@Qa\x02\xA1\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xB5W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xCC\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xA1V[4\x80\x15a\x02\xF7W__\xFD[P`@\x80Q`\x03\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xA1V[4\x80\x15a\x03\"W__\xFD[Pa\x03+a\x08\xF9V[`@Qa\x02\xA1\x91\x90a)0V[4\x80\x15a\x03CW__\xFD[Pa\x02Ka\x03R6`\x04a+GV[a\t\x0EV[4\x80\x15a\x03bW__\xFD[Pa\x02Ka\x03q6`\x04a.\tV[a\t\x85V[4\x80\x15a\x03\x81W__\xFD[Pa\x03\x95a\x03\x906`\x04a+GV[a\t\x9EV[`@Q\x90\x15\x15\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xB0W__\xFD[P`\x08Ta\x03\xCB\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x03\xEEW__\xFD[Pa\x03\x95a\x03\xFD6`\x04a+GV[a\n\0V[4\x80\x15a\x04\rW__\xFD[P`\x08Ta\x04!\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x04DW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xA1V[4\x80\x15a\x04`W__\xFD[Pa\x02Ka\n\x95V[4\x80\x15a\x04tW__\xFD[P`\nTa\x03\xCB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04\x9AW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xCC\x93\x92\x91\x90\x84V[4\x80\x15a\x04\xBBW__\xFD[Pa\x02Ka\x04\xCA6`\x04a.PV[a\x0B\x8CV[a\x02Ka\x04\xDD6`\x04a.iV[a\x0B\xA0V[4\x80\x15a\x04\xEDW__\xFD[Pa\x04Ga\x0B\xBFV[4\x80\x15a\x05\x01W__\xFD[Pa\x02Ka\x0B\xDAV[4\x80\x15a\x05\x15W__\xFD[Pa\x02Ka\x0CHV[4\x80\x15a\x05)W__\xFD[Pa\x02Ka\x03q6`\x04a/lV[4\x80\x15a\x05CW__\xFD[Pa\x03\xCBa\x0CiV[4\x80\x15a\x05WW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\x95V[4\x80\x15a\x05vW__\xFD[Pa\x05\x8Aa\x05\x856`\x04a)\x19V[a\x0C\x8EV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xA1V[4\x80\x15a\x05\xB2W__\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!V[4\x80\x15a\x05\xEEW__\xFD[Pa\x03\xCBa\x05\xFD6`\x04a/\xB0V[a\r\xB9V[4\x80\x15a\x06\rW__\xFD[Pa\x02Ka\x06\x1C6`\x04a.PV[a\x0E(V[4\x80\x15a\x06,W__\xFD[Pa\x04G`\x0FT\x81V[4\x80\x15a\x06AW__\xFD[Pa\x02Ka\x06P6`\x04a/\xD8V[a\x0E\xB1V[4\x80\x15a\x06`W__\xFD[P`\x06T`\x07Ta\x06\x84\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\xA1V[4\x80\x15a\x06\xB5W__\xFD[Pa\x02Ka\x06\xC46`\x04a0-V[a\x0F\xC0V[4\x80\x15a\x06\xD4W__\xFD[Pa\x06\xF9`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xA1\x91\x90a0qV[4\x80\x15a\x07\x11W__\xFD[Pa\x02Ka\x07 6`\x04a/\xB0V[a\x12\xE5V[4\x80\x15a\x070W__\xFD[P`\x08Ta\x07H\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xA1V[4\x80\x15a\x07hW__\xFD[P`\x04T`\x05Ta\x06\x84\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x07\x97W__\xFD[Pa\x03\x95a\x07\xA66`\x04a0\xA6V[a\x14>V[4\x80\x15a\x07\xB6W__\xFD[P`\nTa\x03\xCB\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07\xD5W__\xFD[Pa\x02Ka\x07\xE46`\x04a)\0V[a\x15\x96V[4\x80\x15a\x07\xF4W__\xFD[P`\tTa\x04GV[a\x08\x05a\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08,W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x08[W`@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\x08\xBFW_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\x01a&gV[a\t\ta\x160V[\x90P\x90V[a\t\x16a\x15\xD5V[`\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\t\\\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\r\xB9V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBEWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCAWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\xE1\x83`\x05a0\xDAV[a\t\xEB\x91\x90a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\n WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\n,WP_\x91\x90PV[`\nTa\nB\x90`\x01`\x01`@\x1B\x03\x16\x83a1\rV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n\x8FWP`\nTa\nj\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a1:V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n\x84\x91\x16\x84a1\rV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n\x9Da\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x03\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\n\xD3WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\n\xF1W`@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\x0B+\x92\x91\x81\x04\x82\x16\x91\x16a\r\xB9V[`\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\x0B\x94a\x15\xD5V[a\x0B\x9D\x81a\x0E(V[PV[a\x0B\xA8a\x1C`V[a\x0B\xB1\x82a\x1D\x04V[a\x0B\xBB\x82\x82a\x1DEV[PPV[_a\x0B\xC8a\x1E\x06V[P_Q` a6|_9_Q\x90_R\x90V[a\x0B\xE2a\x15\xD5V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0C-W`\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\x0CPa\x15\xD5V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T`\nT_\x91a\t\t\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\r\xB9V[`\t\x80T_\x91\x82\x91\x90a\x0C\xA2`\x01\x83a1YV[\x81T\x81\x10a\x0C\xB2Wa\x0C\xB2a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0C\xF1W`@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\r\xB2W\x84`\t\x82\x81T\x81\x10a\r!Wa\r!a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\r\xAAW`\t\x81\x81T\x81\x10a\rZWa\rZa1lV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\r}Wa\r}a1lV[\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\r\x05V[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\r\xD1WP_a\n\x8FV[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\r\xE9WP`\x01a\n\x8FV[a\r\xF3\x82\x84a1\rV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0E\x13Wa\x0E\x0C\x82\x84a1\x80V[\x90Pa\n\x8FV[a\x0E\x1D\x82\x84a1\x80V[a\x0E\x0C\x90`\x01a0\xDAV[a\x0E0a\x15\xD5V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0EOWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0EmWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0E\x8BW`@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` a6\x9C_9_Q\x90_R\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0E\xE2WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0E\xFDWP0;\x15[\x90P\x81\x15\x80\x15a\x0F\x0BWP\x80\x15[\x15a\x0F)W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x0FSW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0F\\\x86a\x1EOV[a\x0Fda\x1E`V[a\x0Fo\x89\x89\x89a\x1EhV[\x83\x15a\x0F\xB5W\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\x0F\xE5WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x10\x03W`@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\x10<WP`\x06T` \x85\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x10ZW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x10g\x84`@\x01Qa\x1F\x94V[a\x10t\x83` \x01Qa\x1F\x94V[a\x10\x81\x83`@\x01Qa\x1F\x94V[a\x10\x8E\x83``\x01Qa\x1F\x94V[_a\x10\x97a\x0CiV[` \x86\x01Q`\nT\x91\x92P_\x91a\x10\xB7\x91\x90`\x01`\x01`@\x1B\x03\x16a\r\xB9V[`\x10T\x90\x91P`\x01`\x01`@\x1B\x03\x90\x81\x16\x90\x82\x16\x10a\x10\xFBWa\x10\xDD\x86` \x01Qa\n\0V[\x15a\x10\xFBW`@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\x11\xA7W`\x02a\x11\x1E\x83\x83a1:V[`\x01`\x01`@\x1B\x03\x16\x10a\x11EW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11P\x82`\x01a0\xDAV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x11\x89WP`\x06Ta\x11\x87\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t\x9EV[\x15[\x15a\x11\xA7W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xB3\x86\x86\x86\x86a\x1F\xD5V[\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\x12\x10WPa\x12\x10\x86` \x01Qa\t\x9EV[\x15a\x12zW\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\x12^\x82`\x01a0\xDAV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x12\x85CB\x88a!\xFFV[\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\x12\xD5\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[a\x12\xEDa\x15\xD5V[_Q` a6\x9C_9_Q\x90_R\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x13#WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x13AW`@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\x13\x89W`@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\x13\xD2\x83\x85a\r\xB9V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x14OWP\x80\x15[\x80a\x14\x99WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x14}Wa\x14}a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\xB7W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\xC5`\x01\x85a1YV[\x90P[\x81a\x15aW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x15aW\x86`\t\x82\x81T\x81\x10a\x14\xFAWa\x14\xFAa1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x15OW`\x01\x91P`\t\x81\x81T\x81\x10a\x15/Wa\x15/a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x15aV[\x80a\x15Y\x81a1\xADV[\x91PPa\x14\xC8V[\x81a\x15\x7FW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x15\x8A\x84\x89a1YV[\x11\x97\x96PPPPPPPV[a\x15\x9Ea\x15\xD5V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\xCCW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x0B\x9D\x81a#\xE8V[3a\x16\x07\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\x0CFW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\xC3V[a\x168a&gV[b\x10\0\0\x81R`\x05` \x82\x01R\x7F)I&\r\xC9\xE9b\x1B\xB4\x1D\xCB\x96\xBApT\xB4\xBD^~#\x0F\xDB\xA5\xF3A\x12`@\x1CU\xF5\x9D`@\x82\x01QR\x7F\x05\xD06\x978E\xE2\xE9\xD2\xAD\x9Ay[5\x155\xA2WmQ\xD2\x7F!\xFF\x83r\xBE\x92\xBDo9F` `@\x83\x01Q\x01R\x7F\x0B\xA2\xC5\xAE\x93`\xEF\xEC\x9E9h\xE3?W\xFD3\x05\x9EW8\\\x1E\xA7\xDBd0Bk\x82\xE0\x87\x1A``\x82\x01QR\x7F\x1E3;S\x98\xC9S\x19@vw*\x86\x1B{\xF6\xA4\xC8\x0CJL.T\xEB\x9C\xA6z\xEC_\xF1\x9F\xC9` ``\x83\x01Q\x01R\x7F\r\x9E\x9B\x9F8\xDD\x9F\xBB\xD5\xCD\x8BZ\x1D\x1C\x8A\xA4\xE7w\xE5&\xE0n\xFE94[\xF3\xCEL[\xB4\xAA`\x80\x82\x01QR\x7F\x10A~\xAF\x9B\xA30\xBB\xF5l\xAF3\x1A6!\x14\x15:\x9C\x95\xAE\x91O\xBD\x1F\x99\xCB\x84\xD5\x9F\xBFV` `\x80\x83\x01Q\x01R\x7F\x15]\xFC:\x03\x9F\x16\xAB\x99\xFA\x96cV\x9F\xF0n[\xFD\xA9\x17H\xA7\x98!\xD8\r\xAF\xC7\xF1\xD9.^`\xA0\x82\x01QR\x7F\x15\xDA\xEE\x81\xE8\xFF\xCA\xC8\x86\xBF\x9C\xC7E=e\x9A\x98}\xA1\xFE\xB8\x93\xC1\xFE\x9A\x94X?3\x7Fm\xFA` `\xA0\x83\x01Q\x01R\x7F\x1Co\x99W'\x08?VsJHc\xC3\xBFD3\xB55:\xD8\xD2\x0F\x15\xD5T\xA8\xCD+\xE2\x8E\xF9-`\xC0\x82\x01QR\x7F\x076\xEB\xBF\rs\xD4,B\x8D]\xD6k\xA4\xD9\xD9Q:d-\x94\x14}\xB6)\x96Mm\x03'v\xA8` `\xC0\x83\x01Q\x01R\x7F,J\xA1\xA4-\x17\xF2&S'B\xB7\xDA!\xED\x90\x8E\xE6\xA1\xC1=\x82K&\x9D!\xAB\xCDY\xC8g#`\xE0\x82\x01QR\x7F\x05\xC4\x16<\xA9\xCA\xB2\xE6Z\xBB\xB4\x1BauY\x1C\xF9$`\0\x0C\x96\xFB\x9D\xAA\x1F\x01\xD5\n\xF4\x93l` `\xE0\x83\x01Q\x01R\x7F!^\xCFh<e\xEE=\xCA</\xC0KHd\xB1\xF2\xA58\xEF\x92:\xF68\rB\x0F\xA6\xB5\xA9\xF4\x96a\x01\0\x82\x01QR\x7F\x1D\x03\xC3x\xF3\xD7\x06=\x12\xC4Y\xACe\x9C\xE7\xA2|C\x9C\xD6\xAD\x18L\x17#R\x81_:8\r7` a\x01\0\x83\x01Q\x01R\x7F \xBC)T\x8F\x10\xBD\x07\xFD\xE4\x18\xD4\x9AV\x92\xF8\x91\x96\x94W\x1A\xB6L\x90\xF5\x83\xDCCJ_\xEC\x0Ca\x01 \x82\x01QR\x7F$N_\xCBQ\xC7G\xA5o\xE6\xFD\xB3/\x0B\x01\xEF;\xC5V'\xF6\xF9\xAF\xCD\x98\xDD\xDB\xED\xE5\x03\x08\xA3` a\x01 \x83\x01Q\x01R\x7F\x0E6F\xB3R\xD0\n4\x82\xE8\x98\x11\xF4\x96o\xB6F\x88\x9D\xAD\xB5a\xEB\xB7\xBB|\">\x81\x96\xD5\xB3a\x01@\x82\x01QR\x7F\x1B\x10!\x9Ab\x93\xAB\xAF08\x8F9\xE4\xC7\xB9%\xF8\x9BoW\xCB\x81eN\x1A\xD7U)Ny\x0F\t` a\x01@\x83\x01Q\x01R\x7F+)\xB3l\xD6\xD30b\xA9\xA8n$\xBD\x17\x8Di\xB1\xCE\xBD\xC1\xA3\x9Cyw\xD5G\xE7a{WG\xF9a\x01`\x82\x01QR\x7F\x17\x06!a\xC0\xA6<\xD1|\xEE[\x14\x82\x1Dx \xE7\xFAC##\xB1\"\xBAY\xC4M\xD0\x1Fj\x928` a\x01`\x83\x01Q\x01R\x7F\x11\x98\xDB<\xEC\x1Af\xCC\xDB\x90\x88k\xB9o\xCF\x17S\x16\xC6\xEAx\xF7?#\xF4\xA1\x1B\xCFC \xE1\x1Aa\x01\x80\x82\x01QR\x7F\x06;\x1F\x96>s+\xD2\r\x86\xE1\xFE\xF8Ux\x8C\x1A\xAC\xF2k\xAB\xB5&\xD8N0c:+Z\x94i` a\x01\x80\x83\x01Q\x01R\x7F#\x80\x9Aj[\xB0\xBF\x08\x8F\x97\xEF\xE1Qh\xA3\x94q\xA3\xA4\xE4\x1B\x8Dm\xB0\x10\x0E\x15\xFAh\xB0\x9Fca\x01\xA0\x82\x01QR\x7F\n\xBA{i\xAB\x7F\xDD\xA6\x8D\xAC\x90e\xA5\xEE\x9F\xB5\n\xBF\xE5{\xDBZ\xB3Y\xCC[V\xDF\xF6\\\xBE\xA1` a\x01\xA0\x83\x01Q\x01R\x7F\x1F\x03\x80d\xD3\xCA\x1F7\xC5n\xCF\xE4\x17\x01\xF1ZA,c\xD3\xC9\xADR\xFC\xFD?\xD4\xC6M\xA8\xB5\xF2a\x01\xC0\x82\x01QR\x7F&\x89\xFE\\\xC5\x9EK\xE1\x12\xC2G\x99i\xC2Z\x7F`:]q\xA2\xE7\x92D\x80\xC9\xF4\xEA\xFC,)\x8F` a\x01\xC0\x83\x01Q\x01R\x7F\x110!\xE93(\xA9\x151\xE4\x08qH\x1CG\x14\xE0\xB9\x9Aj\xFB\x10\xC7y\xEE\xB2\xB0zz\xE6\xF4\xE7a\x01\xE0\x82\x01QR\x7F\x1A6\xBB& \xCD\xB4\x0CM\xAD%%w\x16\xA9\xD8\xEB\x1EE\xF7\x15\xAD\xA9\x8EBF\x97\xAA\xF4\xD9\\\x86` a\x01\xE0\x83\x01Q\x01R\x7F\x08\xF3\xF8\x8F\xFB\x9EC&\x12\x94\xB7\xFA\xF5\x82\xC5\x13\xF9\xC7\xD0t\x9D\xB6\xDC\xC44\xD7I;\x8C\x97[/a\x02\0\x82\x01QR\x7F.>\x04Xt\x11\x19\xAD\x14\"\x07+h\x15\xFD\xA8\n8\x96d\x0F\x01\x8D(,\x88\xF1PkT\xE0\xE6` a\x02\0\x83\x01Q\x01R\x7F\x10\n\\\nN\x1A\xC2y\x1D\x1Fh\xBC\x9C%\xB3\x9C\xCF\xBB]b\x8CS\xD5T\x7F\x89\xAA\x0C\xAB\x83$\xD2a\x02 \x82\x01QR\x7F\x05\xBF\x9E\x97B\x8C8\x7F\xBB\xC5\xF9\xCB\xF6\xEF\xFB3\xB5vUIL*\xB9\xF7\xCC]DZ\x0E\xA5k\xEA` a\x02 \x83\x01Q\x01R\x7F\x06\x7F>\x0C\xE6\x9C\xBB\xE3#7\xF0S\x8B\xF6\x11\x9Cr\xF7\xFDM\x92\x85{x\\\xAF\x04\xA2%\xB9MFa\x02@\x82\x01QR\x7F!\x1A\x07bq\x06\x9F\xB1\xFA\xE1R*\xB8\xA4w\x94\x80\xB5\x0E\xD8\xC4d\x8D \x13A\xE4D\xE8\xEE-\x15` a\x02@\x83\x01Q\x01R\x7F\x0B\x93\x1B\x96\x99}\x9D\xB8\xBC\x19\x8Cu\0\x98\xCA\xD2\x96\r\xF4\x07\x88\x0F{,\xB5\x1C\x857m_\xC8Ia\x02`\x82\x01QR\x7F\x0E\x91!\xAFv\xD7\xD9ad2\xDE\xD6\xA4\xDE\x93\xCF\x14o[sS\xA7O\x8Are\xD67\x7F\xD4\xED\xC7` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1C\xE6WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C\xDA_Q` a6|_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x0Ca\x15\xD5V[`@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\x08\xA5V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1D\x9FWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\x9C\x91\x81\x01\x90a1\xC2V[`\x01[a\x1D\xC7W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_9_Q\x90_R\x81\x14a\x1D\xF7W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\xC3V[a\x1E\x01\x83\x83a$XV[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\x0CFW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1EWa$\xADV[a\x0B\x9D\x81a$\xE3V[a\x0CFa$\xADV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x1E\x8CWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x1E\x99WP` \x82\x01Q\x15[\x80a\x1E\xA6WP`@\x82\x01Q\x15[\x80a\x1E\xB3WP``\x82\x01Q\x15[\x80a\x1E\xBDWP\x81Q\x15[\x80a\x1E\xCFWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1E\xE3WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1F\x01W`@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\x0B\xBBW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1F\xDEa\x08\xF9V[\x90Pa\x1F\xE8a(\xCCV[`\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 @WPa @\x87` \x01Qa\t\x9EV[\x15a \x89W`@\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 \xC4V[`@\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!\x15\x91\x84\x90\x89\x90` \x01a1\xF0V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x91\x90R\x80Q` \x90\x91\x01 \x90Pa!Y\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x82a2\x12V[`\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!\x99\x90\x87\x90\x87\x90\x8A\x90`\x04\x01a4\x07V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a!\xB4W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a!\xD8\x91\x90a6'V[a!\xF5W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPPPPV[`\tT\x15\x80\x15\x90a\"tWP`\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\"?Wa\"?a1lV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\"i\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a1:V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a#\x07W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\"\xA1Wa\"\xA1a1lV[_\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\"\xE1\x83a6FV[\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[\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$a\x82a$\xEBV[`@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$\xA5Wa\x1E\x01\x82\x82a%NV[a\x0B\xBBa%\xC0V[_Q` a6\x9C_9_Q\x90_RT`\x01`@\x1B\x90\x04`\xFF\x16a\x0CFW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x15\x9Ea$\xADV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a% W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\xC3V[_Q` a6|_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%j\x91\x90a6pV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a%\xA2W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a%\xA7V[``\x91P[P\x91P\x91Pa%\xB7\x85\x83\x83a%\xDFV[\x95\x94PPPPPV[4\x15a\x0CFW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a%\xF4Wa%\xEF\x82a&>V[a&7V[\x81Q\x15\x80\x15a&\x0BWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a&4W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\xC3V[P\x80[\x93\x92PPPV[\x80Q\x15a&NW\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&\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a':`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(:`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(Z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(z`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9A`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xBA`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xA0\x01`@R\x80`\x05\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a)\x10W__\xFD[a&7\x82a(\xEAV[_` \x82\x84\x03\x12\x15a))W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa)b`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a+WW__\xFD[a&7\x82a+1V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x97Wa+\x97a+`V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xC5Wa+\xC5a+`V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a+\xDDW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\xFFWa+\xFFa+`V[`@R\x90P\x80a,\x0E\x83a+1V[\x81Ra,\x1C` \x84\x01a+1V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a,BW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,dWa,da+`V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a,\x8FW__\xFD[a,\x97a+tV[\x90Pa,\xA3\x83\x83a,2V[\x81Ra,\xB2\x83`@\x84\x01a,2V[` \x82\x01Ra,\xC4\x83`\x80\x84\x01a,2V[`@\x82\x01Ra,\xD6\x83`\xC0\x84\x01a,2V[``\x82\x01Ra,\xE9\x83a\x01\0\x84\x01a,2V[`\x80\x82\x01Ra,\xFC\x83a\x01@\x84\x01a,2V[`\xA0\x82\x01Ra-\x0F\x83a\x01\x80\x84\x01a,2V[`\xC0\x82\x01Ra-\"\x83a\x01\xC0\x84\x01a,2V[`\xE0\x82\x01Ra-5\x83a\x02\0\x84\x01a,2V[a\x01\0\x82\x01Ra-I\x83a\x02@\x84\x01a,2V[a\x01 \x82\x01Ra-]\x83a\x02\x80\x84\x01a,2V[a\x01@\x82\x01Ra-q\x83a\x02\xC0\x84\x01a,2V[a\x01`\x82\x01Ra-\x85\x83a\x03\0\x84\x01a,2V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a.\x1BW__\xFD[a.%\x84\x84a+\xCDV[\x91Pa.4\x84``\x85\x01a,~V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\xFBW__\xFD[_` \x82\x84\x03\x12\x15a.`W__\xFD[a&7\x82a.=V[__`@\x83\x85\x03\x12\x15a.zW__\xFD[a.\x83\x83a(\xEAV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9DW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a.\xADW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC6Wa.\xC6a+`V[a.\xD9`\x1F\x82\x01`\x1F\x19\x16` \x01a+\x9DV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a.\xEDW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a/\x1CW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a/>Wa/>a+`V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a/\x7FW__\xFD[a/\x89\x85\x85a+\xCDV[\x92Pa/\x98\x85``\x86\x01a/\x0CV[\x91Pa/\xA7\x85`\xE0\x86\x01a,~V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a/\xC1W__\xFD[a/\xCA\x83a+1V[\x91Pa.4` \x84\x01a+1V[____a\x01 \x85\x87\x03\x12\x15a/\xECW__\xFD[a/\xF6\x86\x86a+\xCDV[\x93Pa0\x05\x86``\x87\x01a/\x0CV[\x92Pa0\x13`\xE0\x86\x01a.=V[\x91Pa0\"a\x01\0\x86\x01a(\xEAV[\x90P\x92\x95\x91\x94P\x92PV[____a\x05\x80\x85\x87\x03\x12\x15a0AW__\xFD[a0K\x86\x86a+\xCDV[\x93Pa0Z\x86``\x87\x01a/\x0CV[\x92P`\xE0\x85\x015\x91Pa0\"\x86a\x01\0\x87\x01a,~V[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a0\xB7W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1%Wa1%a0\xF9V[\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\n\x8FWa\n\x8Fa0\xC6V[\x81\x81\x03\x81\x81\x11\x15a\n\x8FWa\n\x8Fa0\xC6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a1\x98Wa1\x98a0\xF9V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a1\xBBWa1\xBBa0\xC6V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a1\xD2W__\xFD[PQ\x91\x90PV[_\x81Q\x80` \x84\x01\x85^_\x93\x01\x92\x83RP\x90\x91\x90PV[_a2\x04a1\xFE\x83\x87a1\xD9V[\x85a1\xD9V[\x92\x83RPP` \x01\x92\x91PPV[_\x82a2 Wa2 a0\xF9V[P\x06\x90V[\x80_[`\x05\x81\x10\x15a2GW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a2(V[PPPPV[a2b\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\x01Qa49`@\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\x01Ra6\x11a\x05\0\x83\x01\x85a2%V[a6\x1Fa\x05\xA0\x83\x01\x84a2MV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a67W__\xFD[\x81Q\x80\x15\x15\x81\x14a&7W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a6gWa6ga0\xC6V[`\x01\x01\x92\x91PPV[_a&7\x82\x84a1\xD9V\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",
5296    );
5297    #[derive(serde::Serialize, serde::Deserialize)]
5298    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5299    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5300```solidity
5301error AddressEmptyCode(address target);
5302```*/
5303    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5304    #[derive(Clone)]
5305    pub struct AddressEmptyCode {
5306        #[allow(missing_docs)]
5307        pub target: alloy::sol_types::private::Address,
5308    }
5309    #[allow(
5310        non_camel_case_types,
5311        non_snake_case,
5312        clippy::pub_underscore_fields,
5313        clippy::style
5314    )]
5315    const _: () = {
5316        use alloy::sol_types as alloy_sol_types;
5317        #[doc(hidden)]
5318        #[allow(dead_code)]
5319        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5320        #[doc(hidden)]
5321        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5322        #[cfg(test)]
5323        #[allow(dead_code, unreachable_patterns)]
5324        fn _type_assertion(
5325            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5326        ) {
5327            match _t {
5328                alloy_sol_types::private::AssertTypeEq::<
5329                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5330                >(_) => {}
5331            }
5332        }
5333        #[automatically_derived]
5334        #[doc(hidden)]
5335        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5336            fn from(value: AddressEmptyCode) -> Self {
5337                (value.target,)
5338            }
5339        }
5340        #[automatically_derived]
5341        #[doc(hidden)]
5342        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5343            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5344                Self { target: tuple.0 }
5345            }
5346        }
5347        #[automatically_derived]
5348        impl alloy_sol_types::SolError for AddressEmptyCode {
5349            type Parameters<'a> = UnderlyingSolTuple<'a>;
5350            type Token<'a> = <Self::Parameters<
5351                'a,
5352            > as alloy_sol_types::SolType>::Token<'a>;
5353            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5354            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5355            #[inline]
5356            fn new<'a>(
5357                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5358            ) -> Self {
5359                tuple.into()
5360            }
5361            #[inline]
5362            fn tokenize(&self) -> Self::Token<'_> {
5363                (
5364                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5365                        &self.target,
5366                    ),
5367                )
5368            }
5369            #[inline]
5370            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5371                Self::abi_decode_raw_with_config(
5372                    data,
5373                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5374                )
5375            }
5376        }
5377    };
5378    #[derive(serde::Serialize, serde::Deserialize)]
5379    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5380    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5381```solidity
5382error DeprecatedApi();
5383```*/
5384    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5385    #[derive(Clone)]
5386    pub struct DeprecatedApi;
5387    #[allow(
5388        non_camel_case_types,
5389        non_snake_case,
5390        clippy::pub_underscore_fields,
5391        clippy::style
5392    )]
5393    const _: () = {
5394        use alloy::sol_types as alloy_sol_types;
5395        #[doc(hidden)]
5396        #[allow(dead_code)]
5397        type UnderlyingSolTuple<'a> = ();
5398        #[doc(hidden)]
5399        type UnderlyingRustTuple<'a> = ();
5400        #[cfg(test)]
5401        #[allow(dead_code, unreachable_patterns)]
5402        fn _type_assertion(
5403            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5404        ) {
5405            match _t {
5406                alloy_sol_types::private::AssertTypeEq::<
5407                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5408                >(_) => {}
5409            }
5410        }
5411        #[automatically_derived]
5412        #[doc(hidden)]
5413        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5414            fn from(value: DeprecatedApi) -> Self {
5415                ()
5416            }
5417        }
5418        #[automatically_derived]
5419        #[doc(hidden)]
5420        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5421            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5422                Self
5423            }
5424        }
5425        #[automatically_derived]
5426        impl alloy_sol_types::SolError for DeprecatedApi {
5427            type Parameters<'a> = UnderlyingSolTuple<'a>;
5428            type Token<'a> = <Self::Parameters<
5429                'a,
5430            > as alloy_sol_types::SolType>::Token<'a>;
5431            const SIGNATURE: &'static str = "DeprecatedApi()";
5432            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5433            #[inline]
5434            fn new<'a>(
5435                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5436            ) -> Self {
5437                tuple.into()
5438            }
5439            #[inline]
5440            fn tokenize(&self) -> Self::Token<'_> {
5441                ()
5442            }
5443            #[inline]
5444            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5445                Self::abi_decode_raw_with_config(
5446                    data,
5447                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5448                )
5449            }
5450        }
5451    };
5452    #[derive(serde::Serialize, serde::Deserialize)]
5453    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5454    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5455```solidity
5456error ERC1967InvalidImplementation(address implementation);
5457```*/
5458    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5459    #[derive(Clone)]
5460    pub struct ERC1967InvalidImplementation {
5461        #[allow(missing_docs)]
5462        pub implementation: alloy::sol_types::private::Address,
5463    }
5464    #[allow(
5465        non_camel_case_types,
5466        non_snake_case,
5467        clippy::pub_underscore_fields,
5468        clippy::style
5469    )]
5470    const _: () = {
5471        use alloy::sol_types as alloy_sol_types;
5472        #[doc(hidden)]
5473        #[allow(dead_code)]
5474        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5475        #[doc(hidden)]
5476        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5477        #[cfg(test)]
5478        #[allow(dead_code, unreachable_patterns)]
5479        fn _type_assertion(
5480            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5481        ) {
5482            match _t {
5483                alloy_sol_types::private::AssertTypeEq::<
5484                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5485                >(_) => {}
5486            }
5487        }
5488        #[automatically_derived]
5489        #[doc(hidden)]
5490        impl ::core::convert::From<ERC1967InvalidImplementation>
5491        for UnderlyingRustTuple<'_> {
5492            fn from(value: ERC1967InvalidImplementation) -> Self {
5493                (value.implementation,)
5494            }
5495        }
5496        #[automatically_derived]
5497        #[doc(hidden)]
5498        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5499        for ERC1967InvalidImplementation {
5500            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5501                Self { implementation: tuple.0 }
5502            }
5503        }
5504        #[automatically_derived]
5505        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5506            type Parameters<'a> = UnderlyingSolTuple<'a>;
5507            type Token<'a> = <Self::Parameters<
5508                'a,
5509            > as alloy_sol_types::SolType>::Token<'a>;
5510            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5511            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5512            #[inline]
5513            fn new<'a>(
5514                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5515            ) -> Self {
5516                tuple.into()
5517            }
5518            #[inline]
5519            fn tokenize(&self) -> Self::Token<'_> {
5520                (
5521                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5522                        &self.implementation,
5523                    ),
5524                )
5525            }
5526            #[inline]
5527            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5528                Self::abi_decode_raw_with_config(
5529                    data,
5530                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5531                )
5532            }
5533        }
5534    };
5535    #[derive(serde::Serialize, serde::Deserialize)]
5536    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5537    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5538```solidity
5539error ERC1967NonPayable();
5540```*/
5541    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5542    #[derive(Clone)]
5543    pub struct ERC1967NonPayable;
5544    #[allow(
5545        non_camel_case_types,
5546        non_snake_case,
5547        clippy::pub_underscore_fields,
5548        clippy::style
5549    )]
5550    const _: () = {
5551        use alloy::sol_types as alloy_sol_types;
5552        #[doc(hidden)]
5553        #[allow(dead_code)]
5554        type UnderlyingSolTuple<'a> = ();
5555        #[doc(hidden)]
5556        type UnderlyingRustTuple<'a> = ();
5557        #[cfg(test)]
5558        #[allow(dead_code, unreachable_patterns)]
5559        fn _type_assertion(
5560            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5561        ) {
5562            match _t {
5563                alloy_sol_types::private::AssertTypeEq::<
5564                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5565                >(_) => {}
5566            }
5567        }
5568        #[automatically_derived]
5569        #[doc(hidden)]
5570        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5571            fn from(value: ERC1967NonPayable) -> Self {
5572                ()
5573            }
5574        }
5575        #[automatically_derived]
5576        #[doc(hidden)]
5577        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5578            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5579                Self
5580            }
5581        }
5582        #[automatically_derived]
5583        impl alloy_sol_types::SolError for ERC1967NonPayable {
5584            type Parameters<'a> = UnderlyingSolTuple<'a>;
5585            type Token<'a> = <Self::Parameters<
5586                'a,
5587            > as alloy_sol_types::SolType>::Token<'a>;
5588            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5589            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5590            #[inline]
5591            fn new<'a>(
5592                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5593            ) -> Self {
5594                tuple.into()
5595            }
5596            #[inline]
5597            fn tokenize(&self) -> Self::Token<'_> {
5598                ()
5599            }
5600            #[inline]
5601            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5602                Self::abi_decode_raw_with_config(
5603                    data,
5604                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5605                )
5606            }
5607        }
5608    };
5609    #[derive(serde::Serialize, serde::Deserialize)]
5610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5611    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5612```solidity
5613error FailedInnerCall();
5614```*/
5615    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5616    #[derive(Clone)]
5617    pub struct FailedInnerCall;
5618    #[allow(
5619        non_camel_case_types,
5620        non_snake_case,
5621        clippy::pub_underscore_fields,
5622        clippy::style
5623    )]
5624    const _: () = {
5625        use alloy::sol_types as alloy_sol_types;
5626        #[doc(hidden)]
5627        #[allow(dead_code)]
5628        type UnderlyingSolTuple<'a> = ();
5629        #[doc(hidden)]
5630        type UnderlyingRustTuple<'a> = ();
5631        #[cfg(test)]
5632        #[allow(dead_code, unreachable_patterns)]
5633        fn _type_assertion(
5634            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5635        ) {
5636            match _t {
5637                alloy_sol_types::private::AssertTypeEq::<
5638                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5639                >(_) => {}
5640            }
5641        }
5642        #[automatically_derived]
5643        #[doc(hidden)]
5644        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5645            fn from(value: FailedInnerCall) -> Self {
5646                ()
5647            }
5648        }
5649        #[automatically_derived]
5650        #[doc(hidden)]
5651        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5652            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5653                Self
5654            }
5655        }
5656        #[automatically_derived]
5657        impl alloy_sol_types::SolError for FailedInnerCall {
5658            type Parameters<'a> = UnderlyingSolTuple<'a>;
5659            type Token<'a> = <Self::Parameters<
5660                'a,
5661            > as alloy_sol_types::SolType>::Token<'a>;
5662            const SIGNATURE: &'static str = "FailedInnerCall()";
5663            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5664            #[inline]
5665            fn new<'a>(
5666                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5667            ) -> Self {
5668                tuple.into()
5669            }
5670            #[inline]
5671            fn tokenize(&self) -> Self::Token<'_> {
5672                ()
5673            }
5674            #[inline]
5675            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5676                Self::abi_decode_raw_with_config(
5677                    data,
5678                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5679                )
5680            }
5681        }
5682    };
5683    #[derive(serde::Serialize, serde::Deserialize)]
5684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5685    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5686```solidity
5687error InsufficientSnapshotHistory();
5688```*/
5689    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5690    #[derive(Clone)]
5691    pub struct InsufficientSnapshotHistory;
5692    #[allow(
5693        non_camel_case_types,
5694        non_snake_case,
5695        clippy::pub_underscore_fields,
5696        clippy::style
5697    )]
5698    const _: () = {
5699        use alloy::sol_types as alloy_sol_types;
5700        #[doc(hidden)]
5701        #[allow(dead_code)]
5702        type UnderlyingSolTuple<'a> = ();
5703        #[doc(hidden)]
5704        type UnderlyingRustTuple<'a> = ();
5705        #[cfg(test)]
5706        #[allow(dead_code, unreachable_patterns)]
5707        fn _type_assertion(
5708            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5709        ) {
5710            match _t {
5711                alloy_sol_types::private::AssertTypeEq::<
5712                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5713                >(_) => {}
5714            }
5715        }
5716        #[automatically_derived]
5717        #[doc(hidden)]
5718        impl ::core::convert::From<InsufficientSnapshotHistory>
5719        for UnderlyingRustTuple<'_> {
5720            fn from(value: InsufficientSnapshotHistory) -> Self {
5721                ()
5722            }
5723        }
5724        #[automatically_derived]
5725        #[doc(hidden)]
5726        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5727        for InsufficientSnapshotHistory {
5728            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5729                Self
5730            }
5731        }
5732        #[automatically_derived]
5733        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5734            type Parameters<'a> = UnderlyingSolTuple<'a>;
5735            type Token<'a> = <Self::Parameters<
5736                'a,
5737            > as alloy_sol_types::SolType>::Token<'a>;
5738            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5739            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5740            #[inline]
5741            fn new<'a>(
5742                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5743            ) -> Self {
5744                tuple.into()
5745            }
5746            #[inline]
5747            fn tokenize(&self) -> Self::Token<'_> {
5748                ()
5749            }
5750            #[inline]
5751            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5752                Self::abi_decode_raw_with_config(
5753                    data,
5754                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5755                )
5756            }
5757        }
5758    };
5759    #[derive(serde::Serialize, serde::Deserialize)]
5760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5761    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5762```solidity
5763error InvalidAddress();
5764```*/
5765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5766    #[derive(Clone)]
5767    pub struct InvalidAddress;
5768    #[allow(
5769        non_camel_case_types,
5770        non_snake_case,
5771        clippy::pub_underscore_fields,
5772        clippy::style
5773    )]
5774    const _: () = {
5775        use alloy::sol_types as alloy_sol_types;
5776        #[doc(hidden)]
5777        #[allow(dead_code)]
5778        type UnderlyingSolTuple<'a> = ();
5779        #[doc(hidden)]
5780        type UnderlyingRustTuple<'a> = ();
5781        #[cfg(test)]
5782        #[allow(dead_code, unreachable_patterns)]
5783        fn _type_assertion(
5784            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5785        ) {
5786            match _t {
5787                alloy_sol_types::private::AssertTypeEq::<
5788                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5789                >(_) => {}
5790            }
5791        }
5792        #[automatically_derived]
5793        #[doc(hidden)]
5794        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5795            fn from(value: InvalidAddress) -> Self {
5796                ()
5797            }
5798        }
5799        #[automatically_derived]
5800        #[doc(hidden)]
5801        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5802            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5803                Self
5804            }
5805        }
5806        #[automatically_derived]
5807        impl alloy_sol_types::SolError for InvalidAddress {
5808            type Parameters<'a> = UnderlyingSolTuple<'a>;
5809            type Token<'a> = <Self::Parameters<
5810                'a,
5811            > as alloy_sol_types::SolType>::Token<'a>;
5812            const SIGNATURE: &'static str = "InvalidAddress()";
5813            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5814            #[inline]
5815            fn new<'a>(
5816                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5817            ) -> Self {
5818                tuple.into()
5819            }
5820            #[inline]
5821            fn tokenize(&self) -> Self::Token<'_> {
5822                ()
5823            }
5824            #[inline]
5825            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5826                Self::abi_decode_raw_with_config(
5827                    data,
5828                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5829                )
5830            }
5831        }
5832    };
5833    #[derive(serde::Serialize, serde::Deserialize)]
5834    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5835    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5836```solidity
5837error InvalidArgs();
5838```*/
5839    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5840    #[derive(Clone)]
5841    pub struct InvalidArgs;
5842    #[allow(
5843        non_camel_case_types,
5844        non_snake_case,
5845        clippy::pub_underscore_fields,
5846        clippy::style
5847    )]
5848    const _: () = {
5849        use alloy::sol_types as alloy_sol_types;
5850        #[doc(hidden)]
5851        #[allow(dead_code)]
5852        type UnderlyingSolTuple<'a> = ();
5853        #[doc(hidden)]
5854        type UnderlyingRustTuple<'a> = ();
5855        #[cfg(test)]
5856        #[allow(dead_code, unreachable_patterns)]
5857        fn _type_assertion(
5858            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5859        ) {
5860            match _t {
5861                alloy_sol_types::private::AssertTypeEq::<
5862                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5863                >(_) => {}
5864            }
5865        }
5866        #[automatically_derived]
5867        #[doc(hidden)]
5868        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5869            fn from(value: InvalidArgs) -> Self {
5870                ()
5871            }
5872        }
5873        #[automatically_derived]
5874        #[doc(hidden)]
5875        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5876            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5877                Self
5878            }
5879        }
5880        #[automatically_derived]
5881        impl alloy_sol_types::SolError for InvalidArgs {
5882            type Parameters<'a> = UnderlyingSolTuple<'a>;
5883            type Token<'a> = <Self::Parameters<
5884                'a,
5885            > as alloy_sol_types::SolType>::Token<'a>;
5886            const SIGNATURE: &'static str = "InvalidArgs()";
5887            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5888            #[inline]
5889            fn new<'a>(
5890                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5891            ) -> Self {
5892                tuple.into()
5893            }
5894            #[inline]
5895            fn tokenize(&self) -> Self::Token<'_> {
5896                ()
5897            }
5898            #[inline]
5899            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5900                Self::abi_decode_raw_with_config(
5901                    data,
5902                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5903                )
5904            }
5905        }
5906    };
5907    #[derive(serde::Serialize, serde::Deserialize)]
5908    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5909    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5910```solidity
5911error InvalidHotShotBlockForCommitmentCheck();
5912```*/
5913    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5914    #[derive(Clone)]
5915    pub struct InvalidHotShotBlockForCommitmentCheck;
5916    #[allow(
5917        non_camel_case_types,
5918        non_snake_case,
5919        clippy::pub_underscore_fields,
5920        clippy::style
5921    )]
5922    const _: () = {
5923        use alloy::sol_types as alloy_sol_types;
5924        #[doc(hidden)]
5925        #[allow(dead_code)]
5926        type UnderlyingSolTuple<'a> = ();
5927        #[doc(hidden)]
5928        type UnderlyingRustTuple<'a> = ();
5929        #[cfg(test)]
5930        #[allow(dead_code, unreachable_patterns)]
5931        fn _type_assertion(
5932            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5933        ) {
5934            match _t {
5935                alloy_sol_types::private::AssertTypeEq::<
5936                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5937                >(_) => {}
5938            }
5939        }
5940        #[automatically_derived]
5941        #[doc(hidden)]
5942        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5943        for UnderlyingRustTuple<'_> {
5944            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5945                ()
5946            }
5947        }
5948        #[automatically_derived]
5949        #[doc(hidden)]
5950        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5951        for InvalidHotShotBlockForCommitmentCheck {
5952            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5953                Self
5954            }
5955        }
5956        #[automatically_derived]
5957        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5958            type Parameters<'a> = UnderlyingSolTuple<'a>;
5959            type Token<'a> = <Self::Parameters<
5960                'a,
5961            > as alloy_sol_types::SolType>::Token<'a>;
5962            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5963            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5964            #[inline]
5965            fn new<'a>(
5966                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5967            ) -> Self {
5968                tuple.into()
5969            }
5970            #[inline]
5971            fn tokenize(&self) -> Self::Token<'_> {
5972                ()
5973            }
5974            #[inline]
5975            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5976                Self::abi_decode_raw_with_config(
5977                    data,
5978                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5979                )
5980            }
5981        }
5982    };
5983    #[derive(serde::Serialize, serde::Deserialize)]
5984    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5985    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5986```solidity
5987error InvalidInitialization();
5988```*/
5989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5990    #[derive(Clone)]
5991    pub struct InvalidInitialization;
5992    #[allow(
5993        non_camel_case_types,
5994        non_snake_case,
5995        clippy::pub_underscore_fields,
5996        clippy::style
5997    )]
5998    const _: () = {
5999        use alloy::sol_types as alloy_sol_types;
6000        #[doc(hidden)]
6001        #[allow(dead_code)]
6002        type UnderlyingSolTuple<'a> = ();
6003        #[doc(hidden)]
6004        type UnderlyingRustTuple<'a> = ();
6005        #[cfg(test)]
6006        #[allow(dead_code, unreachable_patterns)]
6007        fn _type_assertion(
6008            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6009        ) {
6010            match _t {
6011                alloy_sol_types::private::AssertTypeEq::<
6012                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6013                >(_) => {}
6014            }
6015        }
6016        #[automatically_derived]
6017        #[doc(hidden)]
6018        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6019            fn from(value: InvalidInitialization) -> Self {
6020                ()
6021            }
6022        }
6023        #[automatically_derived]
6024        #[doc(hidden)]
6025        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6026            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6027                Self
6028            }
6029        }
6030        #[automatically_derived]
6031        impl alloy_sol_types::SolError for InvalidInitialization {
6032            type Parameters<'a> = UnderlyingSolTuple<'a>;
6033            type Token<'a> = <Self::Parameters<
6034                'a,
6035            > as alloy_sol_types::SolType>::Token<'a>;
6036            const SIGNATURE: &'static str = "InvalidInitialization()";
6037            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6038            #[inline]
6039            fn new<'a>(
6040                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6041            ) -> Self {
6042                tuple.into()
6043            }
6044            #[inline]
6045            fn tokenize(&self) -> Self::Token<'_> {
6046                ()
6047            }
6048            #[inline]
6049            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6050                Self::abi_decode_raw_with_config(
6051                    data,
6052                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6053                )
6054            }
6055        }
6056    };
6057    #[derive(serde::Serialize, serde::Deserialize)]
6058    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6059    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6060```solidity
6061error InvalidMaxStateHistory();
6062```*/
6063    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6064    #[derive(Clone)]
6065    pub struct InvalidMaxStateHistory;
6066    #[allow(
6067        non_camel_case_types,
6068        non_snake_case,
6069        clippy::pub_underscore_fields,
6070        clippy::style
6071    )]
6072    const _: () = {
6073        use alloy::sol_types as alloy_sol_types;
6074        #[doc(hidden)]
6075        #[allow(dead_code)]
6076        type UnderlyingSolTuple<'a> = ();
6077        #[doc(hidden)]
6078        type UnderlyingRustTuple<'a> = ();
6079        #[cfg(test)]
6080        #[allow(dead_code, unreachable_patterns)]
6081        fn _type_assertion(
6082            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6083        ) {
6084            match _t {
6085                alloy_sol_types::private::AssertTypeEq::<
6086                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6087                >(_) => {}
6088            }
6089        }
6090        #[automatically_derived]
6091        #[doc(hidden)]
6092        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6093            fn from(value: InvalidMaxStateHistory) -> Self {
6094                ()
6095            }
6096        }
6097        #[automatically_derived]
6098        #[doc(hidden)]
6099        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6100            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6101                Self
6102            }
6103        }
6104        #[automatically_derived]
6105        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6106            type Parameters<'a> = UnderlyingSolTuple<'a>;
6107            type Token<'a> = <Self::Parameters<
6108                'a,
6109            > as alloy_sol_types::SolType>::Token<'a>;
6110            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6111            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6112            #[inline]
6113            fn new<'a>(
6114                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6115            ) -> Self {
6116                tuple.into()
6117            }
6118            #[inline]
6119            fn tokenize(&self) -> Self::Token<'_> {
6120                ()
6121            }
6122            #[inline]
6123            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6124                Self::abi_decode_raw_with_config(
6125                    data,
6126                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6127                )
6128            }
6129        }
6130    };
6131    #[derive(serde::Serialize, serde::Deserialize)]
6132    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6133    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6134```solidity
6135error InvalidProof();
6136```*/
6137    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6138    #[derive(Clone)]
6139    pub struct InvalidProof;
6140    #[allow(
6141        non_camel_case_types,
6142        non_snake_case,
6143        clippy::pub_underscore_fields,
6144        clippy::style
6145    )]
6146    const _: () = {
6147        use alloy::sol_types as alloy_sol_types;
6148        #[doc(hidden)]
6149        #[allow(dead_code)]
6150        type UnderlyingSolTuple<'a> = ();
6151        #[doc(hidden)]
6152        type UnderlyingRustTuple<'a> = ();
6153        #[cfg(test)]
6154        #[allow(dead_code, unreachable_patterns)]
6155        fn _type_assertion(
6156            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6157        ) {
6158            match _t {
6159                alloy_sol_types::private::AssertTypeEq::<
6160                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6161                >(_) => {}
6162            }
6163        }
6164        #[automatically_derived]
6165        #[doc(hidden)]
6166        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6167            fn from(value: InvalidProof) -> Self {
6168                ()
6169            }
6170        }
6171        #[automatically_derived]
6172        #[doc(hidden)]
6173        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6174            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6175                Self
6176            }
6177        }
6178        #[automatically_derived]
6179        impl alloy_sol_types::SolError for InvalidProof {
6180            type Parameters<'a> = UnderlyingSolTuple<'a>;
6181            type Token<'a> = <Self::Parameters<
6182                'a,
6183            > as alloy_sol_types::SolType>::Token<'a>;
6184            const SIGNATURE: &'static str = "InvalidProof()";
6185            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6186            #[inline]
6187            fn new<'a>(
6188                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6189            ) -> Self {
6190                tuple.into()
6191            }
6192            #[inline]
6193            fn tokenize(&self) -> Self::Token<'_> {
6194                ()
6195            }
6196            #[inline]
6197            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6198                Self::abi_decode_raw_with_config(
6199                    data,
6200                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6201                )
6202            }
6203        }
6204    };
6205    #[derive(serde::Serialize, serde::Deserialize)]
6206    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6207    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
6208```solidity
6209error InvalidScalar();
6210```*/
6211    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6212    #[derive(Clone)]
6213    pub struct InvalidScalar;
6214    #[allow(
6215        non_camel_case_types,
6216        non_snake_case,
6217        clippy::pub_underscore_fields,
6218        clippy::style
6219    )]
6220    const _: () = {
6221        use alloy::sol_types as alloy_sol_types;
6222        #[doc(hidden)]
6223        #[allow(dead_code)]
6224        type UnderlyingSolTuple<'a> = ();
6225        #[doc(hidden)]
6226        type UnderlyingRustTuple<'a> = ();
6227        #[cfg(test)]
6228        #[allow(dead_code, unreachable_patterns)]
6229        fn _type_assertion(
6230            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6231        ) {
6232            match _t {
6233                alloy_sol_types::private::AssertTypeEq::<
6234                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6235                >(_) => {}
6236            }
6237        }
6238        #[automatically_derived]
6239        #[doc(hidden)]
6240        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
6241            fn from(value: InvalidScalar) -> Self {
6242                ()
6243            }
6244        }
6245        #[automatically_derived]
6246        #[doc(hidden)]
6247        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
6248            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6249                Self
6250            }
6251        }
6252        #[automatically_derived]
6253        impl alloy_sol_types::SolError for InvalidScalar {
6254            type Parameters<'a> = UnderlyingSolTuple<'a>;
6255            type Token<'a> = <Self::Parameters<
6256                'a,
6257            > as alloy_sol_types::SolType>::Token<'a>;
6258            const SIGNATURE: &'static str = "InvalidScalar()";
6259            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
6260            #[inline]
6261            fn new<'a>(
6262                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6263            ) -> Self {
6264                tuple.into()
6265            }
6266            #[inline]
6267            fn tokenize(&self) -> Self::Token<'_> {
6268                ()
6269            }
6270            #[inline]
6271            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6272                Self::abi_decode_raw_with_config(
6273                    data,
6274                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6275                )
6276            }
6277        }
6278    };
6279    #[derive(serde::Serialize, serde::Deserialize)]
6280    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6281    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6282```solidity
6283error MissingEpochRootUpdate();
6284```*/
6285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6286    #[derive(Clone)]
6287    pub struct MissingEpochRootUpdate;
6288    #[allow(
6289        non_camel_case_types,
6290        non_snake_case,
6291        clippy::pub_underscore_fields,
6292        clippy::style
6293    )]
6294    const _: () = {
6295        use alloy::sol_types as alloy_sol_types;
6296        #[doc(hidden)]
6297        #[allow(dead_code)]
6298        type UnderlyingSolTuple<'a> = ();
6299        #[doc(hidden)]
6300        type UnderlyingRustTuple<'a> = ();
6301        #[cfg(test)]
6302        #[allow(dead_code, unreachable_patterns)]
6303        fn _type_assertion(
6304            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6305        ) {
6306            match _t {
6307                alloy_sol_types::private::AssertTypeEq::<
6308                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6309                >(_) => {}
6310            }
6311        }
6312        #[automatically_derived]
6313        #[doc(hidden)]
6314        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6315            fn from(value: MissingEpochRootUpdate) -> Self {
6316                ()
6317            }
6318        }
6319        #[automatically_derived]
6320        #[doc(hidden)]
6321        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6322            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6323                Self
6324            }
6325        }
6326        #[automatically_derived]
6327        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6328            type Parameters<'a> = UnderlyingSolTuple<'a>;
6329            type Token<'a> = <Self::Parameters<
6330                'a,
6331            > as alloy_sol_types::SolType>::Token<'a>;
6332            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6333            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6334            #[inline]
6335            fn new<'a>(
6336                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6337            ) -> Self {
6338                tuple.into()
6339            }
6340            #[inline]
6341            fn tokenize(&self) -> Self::Token<'_> {
6342                ()
6343            }
6344            #[inline]
6345            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6346                Self::abi_decode_raw_with_config(
6347                    data,
6348                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6349                )
6350            }
6351        }
6352    };
6353    #[derive(serde::Serialize, serde::Deserialize)]
6354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6355    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6356```solidity
6357error NoChangeRequired();
6358```*/
6359    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6360    #[derive(Clone)]
6361    pub struct NoChangeRequired;
6362    #[allow(
6363        non_camel_case_types,
6364        non_snake_case,
6365        clippy::pub_underscore_fields,
6366        clippy::style
6367    )]
6368    const _: () = {
6369        use alloy::sol_types as alloy_sol_types;
6370        #[doc(hidden)]
6371        #[allow(dead_code)]
6372        type UnderlyingSolTuple<'a> = ();
6373        #[doc(hidden)]
6374        type UnderlyingRustTuple<'a> = ();
6375        #[cfg(test)]
6376        #[allow(dead_code, unreachable_patterns)]
6377        fn _type_assertion(
6378            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6379        ) {
6380            match _t {
6381                alloy_sol_types::private::AssertTypeEq::<
6382                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6383                >(_) => {}
6384            }
6385        }
6386        #[automatically_derived]
6387        #[doc(hidden)]
6388        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6389            fn from(value: NoChangeRequired) -> Self {
6390                ()
6391            }
6392        }
6393        #[automatically_derived]
6394        #[doc(hidden)]
6395        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6396            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6397                Self
6398            }
6399        }
6400        #[automatically_derived]
6401        impl alloy_sol_types::SolError for NoChangeRequired {
6402            type Parameters<'a> = UnderlyingSolTuple<'a>;
6403            type Token<'a> = <Self::Parameters<
6404                'a,
6405            > as alloy_sol_types::SolType>::Token<'a>;
6406            const SIGNATURE: &'static str = "NoChangeRequired()";
6407            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6408            #[inline]
6409            fn new<'a>(
6410                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6411            ) -> Self {
6412                tuple.into()
6413            }
6414            #[inline]
6415            fn tokenize(&self) -> Self::Token<'_> {
6416                ()
6417            }
6418            #[inline]
6419            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6420                Self::abi_decode_raw_with_config(
6421                    data,
6422                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6423                )
6424            }
6425        }
6426    };
6427    #[derive(serde::Serialize, serde::Deserialize)]
6428    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6429    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6430```solidity
6431error NotInitializing();
6432```*/
6433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6434    #[derive(Clone)]
6435    pub struct NotInitializing;
6436    #[allow(
6437        non_camel_case_types,
6438        non_snake_case,
6439        clippy::pub_underscore_fields,
6440        clippy::style
6441    )]
6442    const _: () = {
6443        use alloy::sol_types as alloy_sol_types;
6444        #[doc(hidden)]
6445        #[allow(dead_code)]
6446        type UnderlyingSolTuple<'a> = ();
6447        #[doc(hidden)]
6448        type UnderlyingRustTuple<'a> = ();
6449        #[cfg(test)]
6450        #[allow(dead_code, unreachable_patterns)]
6451        fn _type_assertion(
6452            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6453        ) {
6454            match _t {
6455                alloy_sol_types::private::AssertTypeEq::<
6456                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6457                >(_) => {}
6458            }
6459        }
6460        #[automatically_derived]
6461        #[doc(hidden)]
6462        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6463            fn from(value: NotInitializing) -> Self {
6464                ()
6465            }
6466        }
6467        #[automatically_derived]
6468        #[doc(hidden)]
6469        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6470            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6471                Self
6472            }
6473        }
6474        #[automatically_derived]
6475        impl alloy_sol_types::SolError for NotInitializing {
6476            type Parameters<'a> = UnderlyingSolTuple<'a>;
6477            type Token<'a> = <Self::Parameters<
6478                'a,
6479            > as alloy_sol_types::SolType>::Token<'a>;
6480            const SIGNATURE: &'static str = "NotInitializing()";
6481            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6482            #[inline]
6483            fn new<'a>(
6484                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6485            ) -> Self {
6486                tuple.into()
6487            }
6488            #[inline]
6489            fn tokenize(&self) -> Self::Token<'_> {
6490                ()
6491            }
6492            #[inline]
6493            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6494                Self::abi_decode_raw_with_config(
6495                    data,
6496                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6497                )
6498            }
6499        }
6500    };
6501    #[derive(serde::Serialize, serde::Deserialize)]
6502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6503    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6504```solidity
6505error OutdatedState();
6506```*/
6507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6508    #[derive(Clone)]
6509    pub struct OutdatedState;
6510    #[allow(
6511        non_camel_case_types,
6512        non_snake_case,
6513        clippy::pub_underscore_fields,
6514        clippy::style
6515    )]
6516    const _: () = {
6517        use alloy::sol_types as alloy_sol_types;
6518        #[doc(hidden)]
6519        #[allow(dead_code)]
6520        type UnderlyingSolTuple<'a> = ();
6521        #[doc(hidden)]
6522        type UnderlyingRustTuple<'a> = ();
6523        #[cfg(test)]
6524        #[allow(dead_code, unreachable_patterns)]
6525        fn _type_assertion(
6526            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6527        ) {
6528            match _t {
6529                alloy_sol_types::private::AssertTypeEq::<
6530                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6531                >(_) => {}
6532            }
6533        }
6534        #[automatically_derived]
6535        #[doc(hidden)]
6536        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6537            fn from(value: OutdatedState) -> Self {
6538                ()
6539            }
6540        }
6541        #[automatically_derived]
6542        #[doc(hidden)]
6543        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6544            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6545                Self
6546            }
6547        }
6548        #[automatically_derived]
6549        impl alloy_sol_types::SolError for OutdatedState {
6550            type Parameters<'a> = UnderlyingSolTuple<'a>;
6551            type Token<'a> = <Self::Parameters<
6552                'a,
6553            > as alloy_sol_types::SolType>::Token<'a>;
6554            const SIGNATURE: &'static str = "OutdatedState()";
6555            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6556            #[inline]
6557            fn new<'a>(
6558                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6559            ) -> Self {
6560                tuple.into()
6561            }
6562            #[inline]
6563            fn tokenize(&self) -> Self::Token<'_> {
6564                ()
6565            }
6566            #[inline]
6567            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6568                Self::abi_decode_raw_with_config(
6569                    data,
6570                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6571                )
6572            }
6573        }
6574    };
6575    #[derive(serde::Serialize, serde::Deserialize)]
6576    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6577    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6578```solidity
6579error OwnableInvalidOwner(address owner);
6580```*/
6581    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6582    #[derive(Clone)]
6583    pub struct OwnableInvalidOwner {
6584        #[allow(missing_docs)]
6585        pub owner: alloy::sol_types::private::Address,
6586    }
6587    #[allow(
6588        non_camel_case_types,
6589        non_snake_case,
6590        clippy::pub_underscore_fields,
6591        clippy::style
6592    )]
6593    const _: () = {
6594        use alloy::sol_types as alloy_sol_types;
6595        #[doc(hidden)]
6596        #[allow(dead_code)]
6597        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6598        #[doc(hidden)]
6599        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6600        #[cfg(test)]
6601        #[allow(dead_code, unreachable_patterns)]
6602        fn _type_assertion(
6603            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6604        ) {
6605            match _t {
6606                alloy_sol_types::private::AssertTypeEq::<
6607                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6608                >(_) => {}
6609            }
6610        }
6611        #[automatically_derived]
6612        #[doc(hidden)]
6613        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6614            fn from(value: OwnableInvalidOwner) -> Self {
6615                (value.owner,)
6616            }
6617        }
6618        #[automatically_derived]
6619        #[doc(hidden)]
6620        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6621            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6622                Self { owner: tuple.0 }
6623            }
6624        }
6625        #[automatically_derived]
6626        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6627            type Parameters<'a> = UnderlyingSolTuple<'a>;
6628            type Token<'a> = <Self::Parameters<
6629                'a,
6630            > as alloy_sol_types::SolType>::Token<'a>;
6631            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6632            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6633            #[inline]
6634            fn new<'a>(
6635                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6636            ) -> Self {
6637                tuple.into()
6638            }
6639            #[inline]
6640            fn tokenize(&self) -> Self::Token<'_> {
6641                (
6642                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6643                        &self.owner,
6644                    ),
6645                )
6646            }
6647            #[inline]
6648            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6649                Self::abi_decode_raw_with_config(
6650                    data,
6651                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6652                )
6653            }
6654        }
6655    };
6656    #[derive(serde::Serialize, serde::Deserialize)]
6657    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6658    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6659```solidity
6660error OwnableUnauthorizedAccount(address account);
6661```*/
6662    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6663    #[derive(Clone)]
6664    pub struct OwnableUnauthorizedAccount {
6665        #[allow(missing_docs)]
6666        pub account: alloy::sol_types::private::Address,
6667    }
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> = (alloy::sol_types::sol_data::Address,);
6679        #[doc(hidden)]
6680        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
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<OwnableUnauthorizedAccount>
6695        for UnderlyingRustTuple<'_> {
6696            fn from(value: OwnableUnauthorizedAccount) -> Self {
6697                (value.account,)
6698            }
6699        }
6700        #[automatically_derived]
6701        #[doc(hidden)]
6702        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6703        for OwnableUnauthorizedAccount {
6704            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6705                Self { account: tuple.0 }
6706            }
6707        }
6708        #[automatically_derived]
6709        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6710            type Parameters<'a> = UnderlyingSolTuple<'a>;
6711            type Token<'a> = <Self::Parameters<
6712                'a,
6713            > as alloy_sol_types::SolType>::Token<'a>;
6714            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6715            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6716            #[inline]
6717            fn new<'a>(
6718                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6719            ) -> Self {
6720                tuple.into()
6721            }
6722            #[inline]
6723            fn tokenize(&self) -> Self::Token<'_> {
6724                (
6725                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6726                        &self.account,
6727                    ),
6728                )
6729            }
6730            #[inline]
6731            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6732                Self::abi_decode_raw_with_config(
6733                    data,
6734                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6735                )
6736            }
6737        }
6738    };
6739    #[derive(serde::Serialize, serde::Deserialize)]
6740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6741    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6742```solidity
6743error OwnershipCannotBeRenounced();
6744```*/
6745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6746    #[derive(Clone)]
6747    pub struct OwnershipCannotBeRenounced;
6748    #[allow(
6749        non_camel_case_types,
6750        non_snake_case,
6751        clippy::pub_underscore_fields,
6752        clippy::style
6753    )]
6754    const _: () = {
6755        use alloy::sol_types as alloy_sol_types;
6756        #[doc(hidden)]
6757        #[allow(dead_code)]
6758        type UnderlyingSolTuple<'a> = ();
6759        #[doc(hidden)]
6760        type UnderlyingRustTuple<'a> = ();
6761        #[cfg(test)]
6762        #[allow(dead_code, unreachable_patterns)]
6763        fn _type_assertion(
6764            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6765        ) {
6766            match _t {
6767                alloy_sol_types::private::AssertTypeEq::<
6768                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6769                >(_) => {}
6770            }
6771        }
6772        #[automatically_derived]
6773        #[doc(hidden)]
6774        impl ::core::convert::From<OwnershipCannotBeRenounced>
6775        for UnderlyingRustTuple<'_> {
6776            fn from(value: OwnershipCannotBeRenounced) -> Self {
6777                ()
6778            }
6779        }
6780        #[automatically_derived]
6781        #[doc(hidden)]
6782        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6783        for OwnershipCannotBeRenounced {
6784            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6785                Self
6786            }
6787        }
6788        #[automatically_derived]
6789        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6790            type Parameters<'a> = UnderlyingSolTuple<'a>;
6791            type Token<'a> = <Self::Parameters<
6792                'a,
6793            > as alloy_sol_types::SolType>::Token<'a>;
6794            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6795            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6796            #[inline]
6797            fn new<'a>(
6798                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6799            ) -> Self {
6800                tuple.into()
6801            }
6802            #[inline]
6803            fn tokenize(&self) -> Self::Token<'_> {
6804                ()
6805            }
6806            #[inline]
6807            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6808                Self::abi_decode_raw_with_config(
6809                    data,
6810                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6811                )
6812            }
6813        }
6814    };
6815    #[derive(serde::Serialize, serde::Deserialize)]
6816    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6817    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6818```solidity
6819error ProverNotPermissioned();
6820```*/
6821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6822    #[derive(Clone)]
6823    pub struct ProverNotPermissioned;
6824    #[allow(
6825        non_camel_case_types,
6826        non_snake_case,
6827        clippy::pub_underscore_fields,
6828        clippy::style
6829    )]
6830    const _: () = {
6831        use alloy::sol_types as alloy_sol_types;
6832        #[doc(hidden)]
6833        #[allow(dead_code)]
6834        type UnderlyingSolTuple<'a> = ();
6835        #[doc(hidden)]
6836        type UnderlyingRustTuple<'a> = ();
6837        #[cfg(test)]
6838        #[allow(dead_code, unreachable_patterns)]
6839        fn _type_assertion(
6840            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6841        ) {
6842            match _t {
6843                alloy_sol_types::private::AssertTypeEq::<
6844                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6845                >(_) => {}
6846            }
6847        }
6848        #[automatically_derived]
6849        #[doc(hidden)]
6850        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6851            fn from(value: ProverNotPermissioned) -> Self {
6852                ()
6853            }
6854        }
6855        #[automatically_derived]
6856        #[doc(hidden)]
6857        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6858            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6859                Self
6860            }
6861        }
6862        #[automatically_derived]
6863        impl alloy_sol_types::SolError for ProverNotPermissioned {
6864            type Parameters<'a> = UnderlyingSolTuple<'a>;
6865            type Token<'a> = <Self::Parameters<
6866                'a,
6867            > as alloy_sol_types::SolType>::Token<'a>;
6868            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6869            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6870            #[inline]
6871            fn new<'a>(
6872                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6873            ) -> Self {
6874                tuple.into()
6875            }
6876            #[inline]
6877            fn tokenize(&self) -> Self::Token<'_> {
6878                ()
6879            }
6880            #[inline]
6881            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6882                Self::abi_decode_raw_with_config(
6883                    data,
6884                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6885                )
6886            }
6887        }
6888    };
6889    #[derive(serde::Serialize, serde::Deserialize)]
6890    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6891    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6892```solidity
6893error UUPSUnauthorizedCallContext();
6894```*/
6895    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6896    #[derive(Clone)]
6897    pub struct UUPSUnauthorizedCallContext;
6898    #[allow(
6899        non_camel_case_types,
6900        non_snake_case,
6901        clippy::pub_underscore_fields,
6902        clippy::style
6903    )]
6904    const _: () = {
6905        use alloy::sol_types as alloy_sol_types;
6906        #[doc(hidden)]
6907        #[allow(dead_code)]
6908        type UnderlyingSolTuple<'a> = ();
6909        #[doc(hidden)]
6910        type UnderlyingRustTuple<'a> = ();
6911        #[cfg(test)]
6912        #[allow(dead_code, unreachable_patterns)]
6913        fn _type_assertion(
6914            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6915        ) {
6916            match _t {
6917                alloy_sol_types::private::AssertTypeEq::<
6918                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6919                >(_) => {}
6920            }
6921        }
6922        #[automatically_derived]
6923        #[doc(hidden)]
6924        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6925        for UnderlyingRustTuple<'_> {
6926            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6927                ()
6928            }
6929        }
6930        #[automatically_derived]
6931        #[doc(hidden)]
6932        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6933        for UUPSUnauthorizedCallContext {
6934            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6935                Self
6936            }
6937        }
6938        #[automatically_derived]
6939        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6940            type Parameters<'a> = UnderlyingSolTuple<'a>;
6941            type Token<'a> = <Self::Parameters<
6942                'a,
6943            > as alloy_sol_types::SolType>::Token<'a>;
6944            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6945            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6946            #[inline]
6947            fn new<'a>(
6948                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6949            ) -> Self {
6950                tuple.into()
6951            }
6952            #[inline]
6953            fn tokenize(&self) -> Self::Token<'_> {
6954                ()
6955            }
6956            #[inline]
6957            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6958                Self::abi_decode_raw_with_config(
6959                    data,
6960                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6961                )
6962            }
6963        }
6964    };
6965    #[derive(serde::Serialize, serde::Deserialize)]
6966    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6967    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6968```solidity
6969error UUPSUnsupportedProxiableUUID(bytes32 slot);
6970```*/
6971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6972    #[derive(Clone)]
6973    pub struct UUPSUnsupportedProxiableUUID {
6974        #[allow(missing_docs)]
6975        pub slot: alloy::sol_types::private::FixedBytes<32>,
6976    }
6977    #[allow(
6978        non_camel_case_types,
6979        non_snake_case,
6980        clippy::pub_underscore_fields,
6981        clippy::style
6982    )]
6983    const _: () = {
6984        use alloy::sol_types as alloy_sol_types;
6985        #[doc(hidden)]
6986        #[allow(dead_code)]
6987        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6988        #[doc(hidden)]
6989        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6990        #[cfg(test)]
6991        #[allow(dead_code, unreachable_patterns)]
6992        fn _type_assertion(
6993            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6994        ) {
6995            match _t {
6996                alloy_sol_types::private::AssertTypeEq::<
6997                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6998                >(_) => {}
6999            }
7000        }
7001        #[automatically_derived]
7002        #[doc(hidden)]
7003        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7004        for UnderlyingRustTuple<'_> {
7005            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7006                (value.slot,)
7007            }
7008        }
7009        #[automatically_derived]
7010        #[doc(hidden)]
7011        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7012        for UUPSUnsupportedProxiableUUID {
7013            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7014                Self { slot: tuple.0 }
7015            }
7016        }
7017        #[automatically_derived]
7018        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7019            type Parameters<'a> = UnderlyingSolTuple<'a>;
7020            type Token<'a> = <Self::Parameters<
7021                'a,
7022            > as alloy_sol_types::SolType>::Token<'a>;
7023            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7024            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7025            #[inline]
7026            fn new<'a>(
7027                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7028            ) -> Self {
7029                tuple.into()
7030            }
7031            #[inline]
7032            fn tokenize(&self) -> Self::Token<'_> {
7033                (
7034                    <alloy::sol_types::sol_data::FixedBytes<
7035                        32,
7036                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7037                )
7038            }
7039            #[inline]
7040            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7041                Self::abi_decode_raw_with_config(
7042                    data,
7043                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7044                )
7045            }
7046        }
7047    };
7048    #[derive(serde::Serialize, serde::Deserialize)]
7049    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7050    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
7051```solidity
7052error WrongStakeTableUsed();
7053```*/
7054    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7055    #[derive(Clone)]
7056    pub struct WrongStakeTableUsed;
7057    #[allow(
7058        non_camel_case_types,
7059        non_snake_case,
7060        clippy::pub_underscore_fields,
7061        clippy::style
7062    )]
7063    const _: () = {
7064        use alloy::sol_types as alloy_sol_types;
7065        #[doc(hidden)]
7066        #[allow(dead_code)]
7067        type UnderlyingSolTuple<'a> = ();
7068        #[doc(hidden)]
7069        type UnderlyingRustTuple<'a> = ();
7070        #[cfg(test)]
7071        #[allow(dead_code, unreachable_patterns)]
7072        fn _type_assertion(
7073            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7074        ) {
7075            match _t {
7076                alloy_sol_types::private::AssertTypeEq::<
7077                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7078                >(_) => {}
7079            }
7080        }
7081        #[automatically_derived]
7082        #[doc(hidden)]
7083        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7084            fn from(value: WrongStakeTableUsed) -> Self {
7085                ()
7086            }
7087        }
7088        #[automatically_derived]
7089        #[doc(hidden)]
7090        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7091            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7092                Self
7093            }
7094        }
7095        #[automatically_derived]
7096        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7097            type Parameters<'a> = UnderlyingSolTuple<'a>;
7098            type Token<'a> = <Self::Parameters<
7099                'a,
7100            > as alloy_sol_types::SolType>::Token<'a>;
7101            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7102            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7103            #[inline]
7104            fn new<'a>(
7105                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7106            ) -> Self {
7107                tuple.into()
7108            }
7109            #[inline]
7110            fn tokenize(&self) -> Self::Token<'_> {
7111                ()
7112            }
7113            #[inline]
7114            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7115                Self::abi_decode_raw_with_config(
7116                    data,
7117                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7118                )
7119            }
7120        }
7121    };
7122    #[derive(serde::Serialize, serde::Deserialize)]
7123    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7124    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7125```solidity
7126event Initialized(uint64 version);
7127```*/
7128    #[allow(
7129        non_camel_case_types,
7130        non_snake_case,
7131        clippy::pub_underscore_fields,
7132        clippy::style
7133    )]
7134    #[derive(Clone)]
7135    pub struct Initialized {
7136        #[allow(missing_docs)]
7137        pub version: u64,
7138    }
7139    #[allow(
7140        non_camel_case_types,
7141        non_snake_case,
7142        clippy::pub_underscore_fields,
7143        clippy::style
7144    )]
7145    const _: () = {
7146        use alloy::sol_types as alloy_sol_types;
7147        #[automatically_derived]
7148        impl alloy_sol_types::SolEvent for Initialized {
7149            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7150            type DataToken<'a> = <Self::DataTuple<
7151                'a,
7152            > as alloy_sol_types::SolType>::Token<'a>;
7153            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7154            const SIGNATURE: &'static str = "Initialized(uint64)";
7155            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7156                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7157                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7158                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7159            ]);
7160            const ANONYMOUS: bool = false;
7161            #[allow(unused_variables)]
7162            #[inline]
7163            fn new(
7164                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7165                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7166            ) -> Self {
7167                Self { version: data.0 }
7168            }
7169            #[inline]
7170            fn check_signature(
7171                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7172            ) -> alloy_sol_types::Result<()> {
7173                if topics.0 != Self::SIGNATURE_HASH {
7174                    return Err(
7175                        alloy_sol_types::Error::invalid_event_signature_hash(
7176                            Self::SIGNATURE,
7177                            topics.0,
7178                            Self::SIGNATURE_HASH,
7179                        ),
7180                    );
7181                }
7182                Ok(())
7183            }
7184            #[inline]
7185            fn tokenize_body(&self) -> Self::DataToken<'_> {
7186                (
7187                    <alloy::sol_types::sol_data::Uint<
7188                        64,
7189                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7190                )
7191            }
7192            #[inline]
7193            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7194                (Self::SIGNATURE_HASH.into(),)
7195            }
7196            #[inline]
7197            fn encode_topics_raw(
7198                &self,
7199                out: &mut [alloy_sol_types::abi::token::WordToken],
7200            ) -> alloy_sol_types::Result<()> {
7201                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7202                    return Err(alloy_sol_types::Error::Overrun);
7203                }
7204                out[0usize] = alloy_sol_types::abi::token::WordToken(
7205                    Self::SIGNATURE_HASH,
7206                );
7207                Ok(())
7208            }
7209        }
7210        #[automatically_derived]
7211        impl alloy_sol_types::private::IntoLogData for Initialized {
7212            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7213                From::from(self)
7214            }
7215            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7216                From::from(&self)
7217            }
7218        }
7219        #[automatically_derived]
7220        impl From<&Initialized> for alloy_sol_types::private::LogData {
7221            #[inline]
7222            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7223                alloy_sol_types::SolEvent::encode_log_data(this)
7224            }
7225        }
7226    };
7227    #[derive(serde::Serialize, serde::Deserialize)]
7228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7229    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7230```solidity
7231event NewEpoch(uint64 epoch);
7232```*/
7233    #[allow(
7234        non_camel_case_types,
7235        non_snake_case,
7236        clippy::pub_underscore_fields,
7237        clippy::style
7238    )]
7239    #[derive(Clone)]
7240    pub struct NewEpoch {
7241        #[allow(missing_docs)]
7242        pub epoch: u64,
7243    }
7244    #[allow(
7245        non_camel_case_types,
7246        non_snake_case,
7247        clippy::pub_underscore_fields,
7248        clippy::style
7249    )]
7250    const _: () = {
7251        use alloy::sol_types as alloy_sol_types;
7252        #[automatically_derived]
7253        impl alloy_sol_types::SolEvent for NewEpoch {
7254            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7255            type DataToken<'a> = <Self::DataTuple<
7256                'a,
7257            > as alloy_sol_types::SolType>::Token<'a>;
7258            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7259            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7260            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7261                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7262                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7263                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7264            ]);
7265            const ANONYMOUS: bool = false;
7266            #[allow(unused_variables)]
7267            #[inline]
7268            fn new(
7269                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7270                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7271            ) -> Self {
7272                Self { epoch: data.0 }
7273            }
7274            #[inline]
7275            fn check_signature(
7276                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7277            ) -> alloy_sol_types::Result<()> {
7278                if topics.0 != Self::SIGNATURE_HASH {
7279                    return Err(
7280                        alloy_sol_types::Error::invalid_event_signature_hash(
7281                            Self::SIGNATURE,
7282                            topics.0,
7283                            Self::SIGNATURE_HASH,
7284                        ),
7285                    );
7286                }
7287                Ok(())
7288            }
7289            #[inline]
7290            fn tokenize_body(&self) -> Self::DataToken<'_> {
7291                (
7292                    <alloy::sol_types::sol_data::Uint<
7293                        64,
7294                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7295                )
7296            }
7297            #[inline]
7298            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7299                (Self::SIGNATURE_HASH.into(),)
7300            }
7301            #[inline]
7302            fn encode_topics_raw(
7303                &self,
7304                out: &mut [alloy_sol_types::abi::token::WordToken],
7305            ) -> alloy_sol_types::Result<()> {
7306                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7307                    return Err(alloy_sol_types::Error::Overrun);
7308                }
7309                out[0usize] = alloy_sol_types::abi::token::WordToken(
7310                    Self::SIGNATURE_HASH,
7311                );
7312                Ok(())
7313            }
7314        }
7315        #[automatically_derived]
7316        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7317            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7318                From::from(self)
7319            }
7320            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7321                From::from(&self)
7322            }
7323        }
7324        #[automatically_derived]
7325        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7326            #[inline]
7327            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7328                alloy_sol_types::SolEvent::encode_log_data(this)
7329            }
7330        }
7331    };
7332    #[derive(serde::Serialize, serde::Deserialize)]
7333    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7334    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7335```solidity
7336event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7337```*/
7338    #[allow(
7339        non_camel_case_types,
7340        non_snake_case,
7341        clippy::pub_underscore_fields,
7342        clippy::style
7343    )]
7344    #[derive(Clone)]
7345    pub struct NewState {
7346        #[allow(missing_docs)]
7347        pub viewNum: u64,
7348        #[allow(missing_docs)]
7349        pub blockHeight: u64,
7350        #[allow(missing_docs)]
7351        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7352    }
7353    #[allow(
7354        non_camel_case_types,
7355        non_snake_case,
7356        clippy::pub_underscore_fields,
7357        clippy::style
7358    )]
7359    const _: () = {
7360        use alloy::sol_types as alloy_sol_types;
7361        #[automatically_derived]
7362        impl alloy_sol_types::SolEvent for NewState {
7363            type DataTuple<'a> = (BN254::ScalarField,);
7364            type DataToken<'a> = <Self::DataTuple<
7365                'a,
7366            > as alloy_sol_types::SolType>::Token<'a>;
7367            type TopicList = (
7368                alloy_sol_types::sol_data::FixedBytes<32>,
7369                alloy::sol_types::sol_data::Uint<64>,
7370                alloy::sol_types::sol_data::Uint<64>,
7371            );
7372            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7373            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7374                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7375                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7376                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7377            ]);
7378            const ANONYMOUS: bool = false;
7379            #[allow(unused_variables)]
7380            #[inline]
7381            fn new(
7382                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7383                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7384            ) -> Self {
7385                Self {
7386                    viewNum: topics.1,
7387                    blockHeight: topics.2,
7388                    blockCommRoot: data.0,
7389                }
7390            }
7391            #[inline]
7392            fn check_signature(
7393                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7394            ) -> alloy_sol_types::Result<()> {
7395                if topics.0 != Self::SIGNATURE_HASH {
7396                    return Err(
7397                        alloy_sol_types::Error::invalid_event_signature_hash(
7398                            Self::SIGNATURE,
7399                            topics.0,
7400                            Self::SIGNATURE_HASH,
7401                        ),
7402                    );
7403                }
7404                Ok(())
7405            }
7406            #[inline]
7407            fn tokenize_body(&self) -> Self::DataToken<'_> {
7408                (
7409                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7410                        &self.blockCommRoot,
7411                    ),
7412                )
7413            }
7414            #[inline]
7415            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7416                (
7417                    Self::SIGNATURE_HASH.into(),
7418                    self.viewNum.clone(),
7419                    self.blockHeight.clone(),
7420                )
7421            }
7422            #[inline]
7423            fn encode_topics_raw(
7424                &self,
7425                out: &mut [alloy_sol_types::abi::token::WordToken],
7426            ) -> alloy_sol_types::Result<()> {
7427                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7428                    return Err(alloy_sol_types::Error::Overrun);
7429                }
7430                out[0usize] = alloy_sol_types::abi::token::WordToken(
7431                    Self::SIGNATURE_HASH,
7432                );
7433                out[1usize] = <alloy::sol_types::sol_data::Uint<
7434                    64,
7435                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7436                out[2usize] = <alloy::sol_types::sol_data::Uint<
7437                    64,
7438                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7439                Ok(())
7440            }
7441        }
7442        #[automatically_derived]
7443        impl alloy_sol_types::private::IntoLogData for NewState {
7444            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7445                From::from(self)
7446            }
7447            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7448                From::from(&self)
7449            }
7450        }
7451        #[automatically_derived]
7452        impl From<&NewState> for alloy_sol_types::private::LogData {
7453            #[inline]
7454            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7455                alloy_sol_types::SolEvent::encode_log_data(this)
7456            }
7457        }
7458    };
7459    #[derive(serde::Serialize, serde::Deserialize)]
7460    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7461    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7462```solidity
7463event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7464```*/
7465    #[allow(
7466        non_camel_case_types,
7467        non_snake_case,
7468        clippy::pub_underscore_fields,
7469        clippy::style
7470    )]
7471    #[derive(Clone)]
7472    pub struct OwnershipTransferred {
7473        #[allow(missing_docs)]
7474        pub previousOwner: alloy::sol_types::private::Address,
7475        #[allow(missing_docs)]
7476        pub newOwner: alloy::sol_types::private::Address,
7477    }
7478    #[allow(
7479        non_camel_case_types,
7480        non_snake_case,
7481        clippy::pub_underscore_fields,
7482        clippy::style
7483    )]
7484    const _: () = {
7485        use alloy::sol_types as alloy_sol_types;
7486        #[automatically_derived]
7487        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7488            type DataTuple<'a> = ();
7489            type DataToken<'a> = <Self::DataTuple<
7490                'a,
7491            > as alloy_sol_types::SolType>::Token<'a>;
7492            type TopicList = (
7493                alloy_sol_types::sol_data::FixedBytes<32>,
7494                alloy::sol_types::sol_data::Address,
7495                alloy::sol_types::sol_data::Address,
7496            );
7497            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7498            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7499                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7500                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7501                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7502            ]);
7503            const ANONYMOUS: bool = false;
7504            #[allow(unused_variables)]
7505            #[inline]
7506            fn new(
7507                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7508                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7509            ) -> Self {
7510                Self {
7511                    previousOwner: topics.1,
7512                    newOwner: topics.2,
7513                }
7514            }
7515            #[inline]
7516            fn check_signature(
7517                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7518            ) -> alloy_sol_types::Result<()> {
7519                if topics.0 != Self::SIGNATURE_HASH {
7520                    return Err(
7521                        alloy_sol_types::Error::invalid_event_signature_hash(
7522                            Self::SIGNATURE,
7523                            topics.0,
7524                            Self::SIGNATURE_HASH,
7525                        ),
7526                    );
7527                }
7528                Ok(())
7529            }
7530            #[inline]
7531            fn tokenize_body(&self) -> Self::DataToken<'_> {
7532                ()
7533            }
7534            #[inline]
7535            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7536                (
7537                    Self::SIGNATURE_HASH.into(),
7538                    self.previousOwner.clone(),
7539                    self.newOwner.clone(),
7540                )
7541            }
7542            #[inline]
7543            fn encode_topics_raw(
7544                &self,
7545                out: &mut [alloy_sol_types::abi::token::WordToken],
7546            ) -> alloy_sol_types::Result<()> {
7547                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7548                    return Err(alloy_sol_types::Error::Overrun);
7549                }
7550                out[0usize] = alloy_sol_types::abi::token::WordToken(
7551                    Self::SIGNATURE_HASH,
7552                );
7553                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7554                    &self.previousOwner,
7555                );
7556                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7557                    &self.newOwner,
7558                );
7559                Ok(())
7560            }
7561        }
7562        #[automatically_derived]
7563        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7564            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7565                From::from(self)
7566            }
7567            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7568                From::from(&self)
7569            }
7570        }
7571        #[automatically_derived]
7572        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7573            #[inline]
7574            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7575                alloy_sol_types::SolEvent::encode_log_data(this)
7576            }
7577        }
7578    };
7579    #[derive(serde::Serialize, serde::Deserialize)]
7580    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7581    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7582```solidity
7583event PermissionedProverNotRequired();
7584```*/
7585    #[allow(
7586        non_camel_case_types,
7587        non_snake_case,
7588        clippy::pub_underscore_fields,
7589        clippy::style
7590    )]
7591    #[derive(Clone)]
7592    pub struct PermissionedProverNotRequired;
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 PermissionedProverNotRequired {
7603            type DataTuple<'a> = ();
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 = "PermissionedProverNotRequired()";
7609            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7610                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7611                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7612                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
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 {}
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            }
7642            #[inline]
7643            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7644                (Self::SIGNATURE_HASH.into(),)
7645            }
7646            #[inline]
7647            fn encode_topics_raw(
7648                &self,
7649                out: &mut [alloy_sol_types::abi::token::WordToken],
7650            ) -> alloy_sol_types::Result<()> {
7651                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7652                    return Err(alloy_sol_types::Error::Overrun);
7653                }
7654                out[0usize] = alloy_sol_types::abi::token::WordToken(
7655                    Self::SIGNATURE_HASH,
7656                );
7657                Ok(())
7658            }
7659        }
7660        #[automatically_derived]
7661        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7662            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7663                From::from(self)
7664            }
7665            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7666                From::from(&self)
7667            }
7668        }
7669        #[automatically_derived]
7670        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7671            #[inline]
7672            fn from(
7673                this: &PermissionedProverNotRequired,
7674            ) -> alloy_sol_types::private::LogData {
7675                alloy_sol_types::SolEvent::encode_log_data(this)
7676            }
7677        }
7678    };
7679    #[derive(serde::Serialize, serde::Deserialize)]
7680    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7681    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7682```solidity
7683event PermissionedProverRequired(address permissionedProver);
7684```*/
7685    #[allow(
7686        non_camel_case_types,
7687        non_snake_case,
7688        clippy::pub_underscore_fields,
7689        clippy::style
7690    )]
7691    #[derive(Clone)]
7692    pub struct PermissionedProverRequired {
7693        #[allow(missing_docs)]
7694        pub permissionedProver: alloy::sol_types::private::Address,
7695    }
7696    #[allow(
7697        non_camel_case_types,
7698        non_snake_case,
7699        clippy::pub_underscore_fields,
7700        clippy::style
7701    )]
7702    const _: () = {
7703        use alloy::sol_types as alloy_sol_types;
7704        #[automatically_derived]
7705        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7706            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7707            type DataToken<'a> = <Self::DataTuple<
7708                'a,
7709            > as alloy_sol_types::SolType>::Token<'a>;
7710            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7711            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7712            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7713                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7714                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7715                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7716            ]);
7717            const ANONYMOUS: bool = false;
7718            #[allow(unused_variables)]
7719            #[inline]
7720            fn new(
7721                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7722                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7723            ) -> Self {
7724                Self { permissionedProver: data.0 }
7725            }
7726            #[inline]
7727            fn check_signature(
7728                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7729            ) -> alloy_sol_types::Result<()> {
7730                if topics.0 != Self::SIGNATURE_HASH {
7731                    return Err(
7732                        alloy_sol_types::Error::invalid_event_signature_hash(
7733                            Self::SIGNATURE,
7734                            topics.0,
7735                            Self::SIGNATURE_HASH,
7736                        ),
7737                    );
7738                }
7739                Ok(())
7740            }
7741            #[inline]
7742            fn tokenize_body(&self) -> Self::DataToken<'_> {
7743                (
7744                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7745                        &self.permissionedProver,
7746                    ),
7747                )
7748            }
7749            #[inline]
7750            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7751                (Self::SIGNATURE_HASH.into(),)
7752            }
7753            #[inline]
7754            fn encode_topics_raw(
7755                &self,
7756                out: &mut [alloy_sol_types::abi::token::WordToken],
7757            ) -> alloy_sol_types::Result<()> {
7758                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7759                    return Err(alloy_sol_types::Error::Overrun);
7760                }
7761                out[0usize] = alloy_sol_types::abi::token::WordToken(
7762                    Self::SIGNATURE_HASH,
7763                );
7764                Ok(())
7765            }
7766        }
7767        #[automatically_derived]
7768        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7769            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7770                From::from(self)
7771            }
7772            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7773                From::from(&self)
7774            }
7775        }
7776        #[automatically_derived]
7777        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7778            #[inline]
7779            fn from(
7780                this: &PermissionedProverRequired,
7781            ) -> 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 `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7789```solidity
7790event Upgrade(address implementation);
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 Upgrade {
7800        #[allow(missing_docs)]
7801        pub implementation: alloy::sol_types::private::Address,
7802    }
7803    #[allow(
7804        non_camel_case_types,
7805        non_snake_case,
7806        clippy::pub_underscore_fields,
7807        clippy::style
7808    )]
7809    const _: () = {
7810        use alloy::sol_types as alloy_sol_types;
7811        #[automatically_derived]
7812        impl alloy_sol_types::SolEvent for Upgrade {
7813            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7814            type DataToken<'a> = <Self::DataTuple<
7815                'a,
7816            > as alloy_sol_types::SolType>::Token<'a>;
7817            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7818            const SIGNATURE: &'static str = "Upgrade(address)";
7819            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7820                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7821                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7822                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7823            ]);
7824            const ANONYMOUS: bool = false;
7825            #[allow(unused_variables)]
7826            #[inline]
7827            fn new(
7828                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7829                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7830            ) -> Self {
7831                Self { implementation: data.0 }
7832            }
7833            #[inline]
7834            fn check_signature(
7835                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7836            ) -> alloy_sol_types::Result<()> {
7837                if topics.0 != Self::SIGNATURE_HASH {
7838                    return Err(
7839                        alloy_sol_types::Error::invalid_event_signature_hash(
7840                            Self::SIGNATURE,
7841                            topics.0,
7842                            Self::SIGNATURE_HASH,
7843                        ),
7844                    );
7845                }
7846                Ok(())
7847            }
7848            #[inline]
7849            fn tokenize_body(&self) -> Self::DataToken<'_> {
7850                (
7851                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7852                        &self.implementation,
7853                    ),
7854                )
7855            }
7856            #[inline]
7857            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7858                (Self::SIGNATURE_HASH.into(),)
7859            }
7860            #[inline]
7861            fn encode_topics_raw(
7862                &self,
7863                out: &mut [alloy_sol_types::abi::token::WordToken],
7864            ) -> alloy_sol_types::Result<()> {
7865                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7866                    return Err(alloy_sol_types::Error::Overrun);
7867                }
7868                out[0usize] = alloy_sol_types::abi::token::WordToken(
7869                    Self::SIGNATURE_HASH,
7870                );
7871                Ok(())
7872            }
7873        }
7874        #[automatically_derived]
7875        impl alloy_sol_types::private::IntoLogData for Upgrade {
7876            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7877                From::from(self)
7878            }
7879            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7880                From::from(&self)
7881            }
7882        }
7883        #[automatically_derived]
7884        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7885            #[inline]
7886            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7887                alloy_sol_types::SolEvent::encode_log_data(this)
7888            }
7889        }
7890    };
7891    #[derive(serde::Serialize, serde::Deserialize)]
7892    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7893    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7894```solidity
7895event Upgraded(address indexed implementation);
7896```*/
7897    #[allow(
7898        non_camel_case_types,
7899        non_snake_case,
7900        clippy::pub_underscore_fields,
7901        clippy::style
7902    )]
7903    #[derive(Clone)]
7904    pub struct Upgraded {
7905        #[allow(missing_docs)]
7906        pub implementation: alloy::sol_types::private::Address,
7907    }
7908    #[allow(
7909        non_camel_case_types,
7910        non_snake_case,
7911        clippy::pub_underscore_fields,
7912        clippy::style
7913    )]
7914    const _: () = {
7915        use alloy::sol_types as alloy_sol_types;
7916        #[automatically_derived]
7917        impl alloy_sol_types::SolEvent for Upgraded {
7918            type DataTuple<'a> = ();
7919            type DataToken<'a> = <Self::DataTuple<
7920                'a,
7921            > as alloy_sol_types::SolType>::Token<'a>;
7922            type TopicList = (
7923                alloy_sol_types::sol_data::FixedBytes<32>,
7924                alloy::sol_types::sol_data::Address,
7925            );
7926            const SIGNATURE: &'static str = "Upgraded(address)";
7927            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7928                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7929                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7930                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7931            ]);
7932            const ANONYMOUS: bool = false;
7933            #[allow(unused_variables)]
7934            #[inline]
7935            fn new(
7936                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7937                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7938            ) -> Self {
7939                Self { implementation: topics.1 }
7940            }
7941            #[inline]
7942            fn check_signature(
7943                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7944            ) -> alloy_sol_types::Result<()> {
7945                if topics.0 != Self::SIGNATURE_HASH {
7946                    return Err(
7947                        alloy_sol_types::Error::invalid_event_signature_hash(
7948                            Self::SIGNATURE,
7949                            topics.0,
7950                            Self::SIGNATURE_HASH,
7951                        ),
7952                    );
7953                }
7954                Ok(())
7955            }
7956            #[inline]
7957            fn tokenize_body(&self) -> Self::DataToken<'_> {
7958                ()
7959            }
7960            #[inline]
7961            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7962                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7963            }
7964            #[inline]
7965            fn encode_topics_raw(
7966                &self,
7967                out: &mut [alloy_sol_types::abi::token::WordToken],
7968            ) -> alloy_sol_types::Result<()> {
7969                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7970                    return Err(alloy_sol_types::Error::Overrun);
7971                }
7972                out[0usize] = alloy_sol_types::abi::token::WordToken(
7973                    Self::SIGNATURE_HASH,
7974                );
7975                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7976                    &self.implementation,
7977                );
7978                Ok(())
7979            }
7980        }
7981        #[automatically_derived]
7982        impl alloy_sol_types::private::IntoLogData for Upgraded {
7983            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7984                From::from(self)
7985            }
7986            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7987                From::from(&self)
7988            }
7989        }
7990        #[automatically_derived]
7991        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7992            #[inline]
7993            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7994                alloy_sol_types::SolEvent::encode_log_data(this)
7995            }
7996        }
7997    };
7998    #[derive(serde::Serialize, serde::Deserialize)]
7999    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8000    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
8001```solidity
8002function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
8003```*/
8004    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8005    #[derive(Clone)]
8006    pub struct UPGRADE_INTERFACE_VERSIONCall;
8007    #[derive(serde::Serialize, serde::Deserialize)]
8008    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8009    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
8010    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8011    #[derive(Clone)]
8012    pub struct UPGRADE_INTERFACE_VERSIONReturn {
8013        #[allow(missing_docs)]
8014        pub _0: alloy::sol_types::private::String,
8015    }
8016    #[allow(
8017        non_camel_case_types,
8018        non_snake_case,
8019        clippy::pub_underscore_fields,
8020        clippy::style
8021    )]
8022    const _: () = {
8023        use alloy::sol_types as alloy_sol_types;
8024        {
8025            #[doc(hidden)]
8026            #[allow(dead_code)]
8027            type UnderlyingSolTuple<'a> = ();
8028            #[doc(hidden)]
8029            type UnderlyingRustTuple<'a> = ();
8030            #[cfg(test)]
8031            #[allow(dead_code, unreachable_patterns)]
8032            fn _type_assertion(
8033                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8034            ) {
8035                match _t {
8036                    alloy_sol_types::private::AssertTypeEq::<
8037                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8038                    >(_) => {}
8039                }
8040            }
8041            #[automatically_derived]
8042            #[doc(hidden)]
8043            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
8044            for UnderlyingRustTuple<'_> {
8045                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
8046                    ()
8047                }
8048            }
8049            #[automatically_derived]
8050            #[doc(hidden)]
8051            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8052            for UPGRADE_INTERFACE_VERSIONCall {
8053                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8054                    Self
8055                }
8056            }
8057        }
8058        {
8059            #[doc(hidden)]
8060            #[allow(dead_code)]
8061            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8062            #[doc(hidden)]
8063            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8064            #[cfg(test)]
8065            #[allow(dead_code, unreachable_patterns)]
8066            fn _type_assertion(
8067                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8068            ) {
8069                match _t {
8070                    alloy_sol_types::private::AssertTypeEq::<
8071                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8072                    >(_) => {}
8073                }
8074            }
8075            #[automatically_derived]
8076            #[doc(hidden)]
8077            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8078            for UnderlyingRustTuple<'_> {
8079                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8080                    (value._0,)
8081                }
8082            }
8083            #[automatically_derived]
8084            #[doc(hidden)]
8085            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8086            for UPGRADE_INTERFACE_VERSIONReturn {
8087                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8088                    Self { _0: tuple.0 }
8089                }
8090            }
8091        }
8092        #[automatically_derived]
8093        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8094            type Parameters<'a> = ();
8095            type Token<'a> = <Self::Parameters<
8096                'a,
8097            > as alloy_sol_types::SolType>::Token<'a>;
8098            type Return = alloy::sol_types::private::String;
8099            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8100            type ReturnToken<'a> = <Self::ReturnTuple<
8101                'a,
8102            > as alloy_sol_types::SolType>::Token<'a>;
8103            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8104            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8105            #[inline]
8106            fn new<'a>(
8107                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8108            ) -> Self {
8109                tuple.into()
8110            }
8111            #[inline]
8112            fn tokenize(&self) -> Self::Token<'_> {
8113                ()
8114            }
8115            #[inline]
8116            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8117                (
8118                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8119                        ret,
8120                    ),
8121                )
8122            }
8123            #[inline]
8124            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8125                <Self::ReturnTuple<
8126                    '_,
8127                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8128                    .map(|r| {
8129                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8130                        r._0
8131                    })
8132            }
8133            #[inline]
8134            fn abi_decode_returns_with_config(
8135                data: &[u8],
8136                config: alloy_sol_types::abi::AbiDecoderConfig,
8137            ) -> alloy_sol_types::Result<Self::Return> {
8138                <Self::ReturnTuple<
8139                    '_,
8140                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8141                        data,
8142                        config,
8143                    )
8144                    .map(|r| {
8145                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8146                        r._0
8147                    })
8148            }
8149            #[inline]
8150            fn abi_decode_returns_validate(
8151                data: &[u8],
8152            ) -> alloy_sol_types::Result<Self::Return> {
8153                Self::abi_decode_returns_with_config(
8154                    data,
8155                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8156                )
8157            }
8158        }
8159    };
8160    #[derive(serde::Serialize, serde::Deserialize)]
8161    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8162    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8163```solidity
8164function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8165```*/
8166    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8167    #[derive(Clone)]
8168    pub struct _getVkCall;
8169    #[derive(serde::Serialize, serde::Deserialize)]
8170    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8171    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8172    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8173    #[derive(Clone)]
8174    pub struct _getVkReturn {
8175        #[allow(missing_docs)]
8176        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8177    }
8178    #[allow(
8179        non_camel_case_types,
8180        non_snake_case,
8181        clippy::pub_underscore_fields,
8182        clippy::style
8183    )]
8184    const _: () = {
8185        use alloy::sol_types as alloy_sol_types;
8186        {
8187            #[doc(hidden)]
8188            #[allow(dead_code)]
8189            type UnderlyingSolTuple<'a> = ();
8190            #[doc(hidden)]
8191            type UnderlyingRustTuple<'a> = ();
8192            #[cfg(test)]
8193            #[allow(dead_code, unreachable_patterns)]
8194            fn _type_assertion(
8195                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8196            ) {
8197                match _t {
8198                    alloy_sol_types::private::AssertTypeEq::<
8199                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8200                    >(_) => {}
8201                }
8202            }
8203            #[automatically_derived]
8204            #[doc(hidden)]
8205            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8206                fn from(value: _getVkCall) -> Self {
8207                    ()
8208                }
8209            }
8210            #[automatically_derived]
8211            #[doc(hidden)]
8212            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8213                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8214                    Self
8215                }
8216            }
8217        }
8218        {
8219            #[doc(hidden)]
8220            #[allow(dead_code)]
8221            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8222            #[doc(hidden)]
8223            type UnderlyingRustTuple<'a> = (
8224                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8225            );
8226            #[cfg(test)]
8227            #[allow(dead_code, unreachable_patterns)]
8228            fn _type_assertion(
8229                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8230            ) {
8231                match _t {
8232                    alloy_sol_types::private::AssertTypeEq::<
8233                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8234                    >(_) => {}
8235                }
8236            }
8237            #[automatically_derived]
8238            #[doc(hidden)]
8239            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8240                fn from(value: _getVkReturn) -> Self {
8241                    (value.vk,)
8242                }
8243            }
8244            #[automatically_derived]
8245            #[doc(hidden)]
8246            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8247                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8248                    Self { vk: tuple.0 }
8249                }
8250            }
8251        }
8252        #[automatically_derived]
8253        impl alloy_sol_types::SolCall for _getVkCall {
8254            type Parameters<'a> = ();
8255            type Token<'a> = <Self::Parameters<
8256                'a,
8257            > as alloy_sol_types::SolType>::Token<'a>;
8258            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8259            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8260            type ReturnToken<'a> = <Self::ReturnTuple<
8261                'a,
8262            > as alloy_sol_types::SolType>::Token<'a>;
8263            const SIGNATURE: &'static str = "_getVk()";
8264            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8265            #[inline]
8266            fn new<'a>(
8267                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8268            ) -> Self {
8269                tuple.into()
8270            }
8271            #[inline]
8272            fn tokenize(&self) -> Self::Token<'_> {
8273                ()
8274            }
8275            #[inline]
8276            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8277                (
8278                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8279                        ret,
8280                    ),
8281                )
8282            }
8283            #[inline]
8284            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8285                <Self::ReturnTuple<
8286                    '_,
8287                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8288                    .map(|r| {
8289                        let r: _getVkReturn = r.into();
8290                        r.vk
8291                    })
8292            }
8293            #[inline]
8294            fn abi_decode_returns_with_config(
8295                data: &[u8],
8296                config: alloy_sol_types::abi::AbiDecoderConfig,
8297            ) -> alloy_sol_types::Result<Self::Return> {
8298                <Self::ReturnTuple<
8299                    '_,
8300                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8301                        data,
8302                        config,
8303                    )
8304                    .map(|r| {
8305                        let r: _getVkReturn = r.into();
8306                        r.vk
8307                    })
8308            }
8309            #[inline]
8310            fn abi_decode_returns_validate(
8311                data: &[u8],
8312            ) -> alloy_sol_types::Result<Self::Return> {
8313                Self::abi_decode_returns_with_config(
8314                    data,
8315                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8316                )
8317            }
8318        }
8319    };
8320    #[derive(serde::Serialize, serde::Deserialize)]
8321    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8322    /**Function with signature `authRoot()` and selector `0x998328e8`.
8323```solidity
8324function authRoot() external view returns (uint256);
8325```*/
8326    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8327    #[derive(Clone)]
8328    pub struct authRootCall;
8329    #[derive(serde::Serialize, serde::Deserialize)]
8330    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8331    ///Container type for the return parameters of the [`authRoot()`](authRootCall) function.
8332    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8333    #[derive(Clone)]
8334    pub struct authRootReturn {
8335        #[allow(missing_docs)]
8336        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8337    }
8338    #[allow(
8339        non_camel_case_types,
8340        non_snake_case,
8341        clippy::pub_underscore_fields,
8342        clippy::style
8343    )]
8344    const _: () = {
8345        use alloy::sol_types as alloy_sol_types;
8346        {
8347            #[doc(hidden)]
8348            #[allow(dead_code)]
8349            type UnderlyingSolTuple<'a> = ();
8350            #[doc(hidden)]
8351            type UnderlyingRustTuple<'a> = ();
8352            #[cfg(test)]
8353            #[allow(dead_code, unreachable_patterns)]
8354            fn _type_assertion(
8355                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8356            ) {
8357                match _t {
8358                    alloy_sol_types::private::AssertTypeEq::<
8359                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8360                    >(_) => {}
8361                }
8362            }
8363            #[automatically_derived]
8364            #[doc(hidden)]
8365            impl ::core::convert::From<authRootCall> for UnderlyingRustTuple<'_> {
8366                fn from(value: authRootCall) -> Self {
8367                    ()
8368                }
8369            }
8370            #[automatically_derived]
8371            #[doc(hidden)]
8372            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootCall {
8373                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8374                    Self
8375                }
8376            }
8377        }
8378        {
8379            #[doc(hidden)]
8380            #[allow(dead_code)]
8381            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8382            #[doc(hidden)]
8383            type UnderlyingRustTuple<'a> = (
8384                alloy::sol_types::private::primitives::aliases::U256,
8385            );
8386            #[cfg(test)]
8387            #[allow(dead_code, unreachable_patterns)]
8388            fn _type_assertion(
8389                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8390            ) {
8391                match _t {
8392                    alloy_sol_types::private::AssertTypeEq::<
8393                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8394                    >(_) => {}
8395                }
8396            }
8397            #[automatically_derived]
8398            #[doc(hidden)]
8399            impl ::core::convert::From<authRootReturn> for UnderlyingRustTuple<'_> {
8400                fn from(value: authRootReturn) -> Self {
8401                    (value._0,)
8402                }
8403            }
8404            #[automatically_derived]
8405            #[doc(hidden)]
8406            impl ::core::convert::From<UnderlyingRustTuple<'_>> for authRootReturn {
8407                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8408                    Self { _0: tuple.0 }
8409                }
8410            }
8411        }
8412        #[automatically_derived]
8413        impl alloy_sol_types::SolCall for authRootCall {
8414            type Parameters<'a> = ();
8415            type Token<'a> = <Self::Parameters<
8416                'a,
8417            > as alloy_sol_types::SolType>::Token<'a>;
8418            type Return = alloy::sol_types::private::primitives::aliases::U256;
8419            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8420            type ReturnToken<'a> = <Self::ReturnTuple<
8421                'a,
8422            > as alloy_sol_types::SolType>::Token<'a>;
8423            const SIGNATURE: &'static str = "authRoot()";
8424            const SELECTOR: [u8; 4] = [153u8, 131u8, 40u8, 232u8];
8425            #[inline]
8426            fn new<'a>(
8427                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8428            ) -> Self {
8429                tuple.into()
8430            }
8431            #[inline]
8432            fn tokenize(&self) -> Self::Token<'_> {
8433                ()
8434            }
8435            #[inline]
8436            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8437                (
8438                    <alloy::sol_types::sol_data::Uint<
8439                        256,
8440                    > as alloy_sol_types::SolType>::tokenize(ret),
8441                )
8442            }
8443            #[inline]
8444            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8445                <Self::ReturnTuple<
8446                    '_,
8447                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8448                    .map(|r| {
8449                        let r: authRootReturn = r.into();
8450                        r._0
8451                    })
8452            }
8453            #[inline]
8454            fn abi_decode_returns_with_config(
8455                data: &[u8],
8456                config: alloy_sol_types::abi::AbiDecoderConfig,
8457            ) -> alloy_sol_types::Result<Self::Return> {
8458                <Self::ReturnTuple<
8459                    '_,
8460                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8461                        data,
8462                        config,
8463                    )
8464                    .map(|r| {
8465                        let r: authRootReturn = r.into();
8466                        r._0
8467                    })
8468            }
8469            #[inline]
8470            fn abi_decode_returns_validate(
8471                data: &[u8],
8472            ) -> alloy_sol_types::Result<Self::Return> {
8473                Self::abi_decode_returns_with_config(
8474                    data,
8475                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8476                )
8477            }
8478        }
8479    };
8480    #[derive(serde::Serialize, serde::Deserialize)]
8481    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8482    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8483```solidity
8484function blocksPerEpoch() external view returns (uint64);
8485```*/
8486    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8487    #[derive(Clone)]
8488    pub struct blocksPerEpochCall;
8489    #[derive(serde::Serialize, serde::Deserialize)]
8490    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8491    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8493    #[derive(Clone)]
8494    pub struct blocksPerEpochReturn {
8495        #[allow(missing_docs)]
8496        pub _0: u64,
8497    }
8498    #[allow(
8499        non_camel_case_types,
8500        non_snake_case,
8501        clippy::pub_underscore_fields,
8502        clippy::style
8503    )]
8504    const _: () = {
8505        use alloy::sol_types as alloy_sol_types;
8506        {
8507            #[doc(hidden)]
8508            #[allow(dead_code)]
8509            type UnderlyingSolTuple<'a> = ();
8510            #[doc(hidden)]
8511            type UnderlyingRustTuple<'a> = ();
8512            #[cfg(test)]
8513            #[allow(dead_code, unreachable_patterns)]
8514            fn _type_assertion(
8515                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8516            ) {
8517                match _t {
8518                    alloy_sol_types::private::AssertTypeEq::<
8519                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8520                    >(_) => {}
8521                }
8522            }
8523            #[automatically_derived]
8524            #[doc(hidden)]
8525            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8526                fn from(value: blocksPerEpochCall) -> Self {
8527                    ()
8528                }
8529            }
8530            #[automatically_derived]
8531            #[doc(hidden)]
8532            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8533                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8534                    Self
8535                }
8536            }
8537        }
8538        {
8539            #[doc(hidden)]
8540            #[allow(dead_code)]
8541            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8542            #[doc(hidden)]
8543            type UnderlyingRustTuple<'a> = (u64,);
8544            #[cfg(test)]
8545            #[allow(dead_code, unreachable_patterns)]
8546            fn _type_assertion(
8547                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8548            ) {
8549                match _t {
8550                    alloy_sol_types::private::AssertTypeEq::<
8551                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8552                    >(_) => {}
8553                }
8554            }
8555            #[automatically_derived]
8556            #[doc(hidden)]
8557            impl ::core::convert::From<blocksPerEpochReturn>
8558            for UnderlyingRustTuple<'_> {
8559                fn from(value: blocksPerEpochReturn) -> Self {
8560                    (value._0,)
8561                }
8562            }
8563            #[automatically_derived]
8564            #[doc(hidden)]
8565            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8566            for blocksPerEpochReturn {
8567                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8568                    Self { _0: tuple.0 }
8569                }
8570            }
8571        }
8572        #[automatically_derived]
8573        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8574            type Parameters<'a> = ();
8575            type Token<'a> = <Self::Parameters<
8576                'a,
8577            > as alloy_sol_types::SolType>::Token<'a>;
8578            type Return = u64;
8579            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8580            type ReturnToken<'a> = <Self::ReturnTuple<
8581                'a,
8582            > as alloy_sol_types::SolType>::Token<'a>;
8583            const SIGNATURE: &'static str = "blocksPerEpoch()";
8584            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8585            #[inline]
8586            fn new<'a>(
8587                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8588            ) -> Self {
8589                tuple.into()
8590            }
8591            #[inline]
8592            fn tokenize(&self) -> Self::Token<'_> {
8593                ()
8594            }
8595            #[inline]
8596            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8597                (
8598                    <alloy::sol_types::sol_data::Uint<
8599                        64,
8600                    > as alloy_sol_types::SolType>::tokenize(ret),
8601                )
8602            }
8603            #[inline]
8604            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8605                <Self::ReturnTuple<
8606                    '_,
8607                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8608                    .map(|r| {
8609                        let r: blocksPerEpochReturn = r.into();
8610                        r._0
8611                    })
8612            }
8613            #[inline]
8614            fn abi_decode_returns_with_config(
8615                data: &[u8],
8616                config: alloy_sol_types::abi::AbiDecoderConfig,
8617            ) -> alloy_sol_types::Result<Self::Return> {
8618                <Self::ReturnTuple<
8619                    '_,
8620                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8621                        data,
8622                        config,
8623                    )
8624                    .map(|r| {
8625                        let r: blocksPerEpochReturn = r.into();
8626                        r._0
8627                    })
8628            }
8629            #[inline]
8630            fn abi_decode_returns_validate(
8631                data: &[u8],
8632            ) -> alloy_sol_types::Result<Self::Return> {
8633                Self::abi_decode_returns_with_config(
8634                    data,
8635                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8636                )
8637            }
8638        }
8639    };
8640    #[derive(serde::Serialize, serde::Deserialize)]
8641    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8642    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8643```solidity
8644function currentBlockNumber() external view returns (uint256);
8645```*/
8646    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8647    #[derive(Clone)]
8648    pub struct currentBlockNumberCall;
8649    #[derive(serde::Serialize, serde::Deserialize)]
8650    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8651    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8652    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8653    #[derive(Clone)]
8654    pub struct currentBlockNumberReturn {
8655        #[allow(missing_docs)]
8656        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8657    }
8658    #[allow(
8659        non_camel_case_types,
8660        non_snake_case,
8661        clippy::pub_underscore_fields,
8662        clippy::style
8663    )]
8664    const _: () = {
8665        use alloy::sol_types as alloy_sol_types;
8666        {
8667            #[doc(hidden)]
8668            #[allow(dead_code)]
8669            type UnderlyingSolTuple<'a> = ();
8670            #[doc(hidden)]
8671            type UnderlyingRustTuple<'a> = ();
8672            #[cfg(test)]
8673            #[allow(dead_code, unreachable_patterns)]
8674            fn _type_assertion(
8675                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8676            ) {
8677                match _t {
8678                    alloy_sol_types::private::AssertTypeEq::<
8679                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8680                    >(_) => {}
8681                }
8682            }
8683            #[automatically_derived]
8684            #[doc(hidden)]
8685            impl ::core::convert::From<currentBlockNumberCall>
8686            for UnderlyingRustTuple<'_> {
8687                fn from(value: currentBlockNumberCall) -> Self {
8688                    ()
8689                }
8690            }
8691            #[automatically_derived]
8692            #[doc(hidden)]
8693            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8694            for currentBlockNumberCall {
8695                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8696                    Self
8697                }
8698            }
8699        }
8700        {
8701            #[doc(hidden)]
8702            #[allow(dead_code)]
8703            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8704            #[doc(hidden)]
8705            type UnderlyingRustTuple<'a> = (
8706                alloy::sol_types::private::primitives::aliases::U256,
8707            );
8708            #[cfg(test)]
8709            #[allow(dead_code, unreachable_patterns)]
8710            fn _type_assertion(
8711                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8712            ) {
8713                match _t {
8714                    alloy_sol_types::private::AssertTypeEq::<
8715                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8716                    >(_) => {}
8717                }
8718            }
8719            #[automatically_derived]
8720            #[doc(hidden)]
8721            impl ::core::convert::From<currentBlockNumberReturn>
8722            for UnderlyingRustTuple<'_> {
8723                fn from(value: currentBlockNumberReturn) -> Self {
8724                    (value._0,)
8725                }
8726            }
8727            #[automatically_derived]
8728            #[doc(hidden)]
8729            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8730            for currentBlockNumberReturn {
8731                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8732                    Self { _0: tuple.0 }
8733                }
8734            }
8735        }
8736        #[automatically_derived]
8737        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8738            type Parameters<'a> = ();
8739            type Token<'a> = <Self::Parameters<
8740                'a,
8741            > as alloy_sol_types::SolType>::Token<'a>;
8742            type Return = alloy::sol_types::private::primitives::aliases::U256;
8743            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8744            type ReturnToken<'a> = <Self::ReturnTuple<
8745                'a,
8746            > as alloy_sol_types::SolType>::Token<'a>;
8747            const SIGNATURE: &'static str = "currentBlockNumber()";
8748            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8749            #[inline]
8750            fn new<'a>(
8751                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8752            ) -> Self {
8753                tuple.into()
8754            }
8755            #[inline]
8756            fn tokenize(&self) -> Self::Token<'_> {
8757                ()
8758            }
8759            #[inline]
8760            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8761                (
8762                    <alloy::sol_types::sol_data::Uint<
8763                        256,
8764                    > as alloy_sol_types::SolType>::tokenize(ret),
8765                )
8766            }
8767            #[inline]
8768            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8769                <Self::ReturnTuple<
8770                    '_,
8771                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8772                    .map(|r| {
8773                        let r: currentBlockNumberReturn = r.into();
8774                        r._0
8775                    })
8776            }
8777            #[inline]
8778            fn abi_decode_returns_with_config(
8779                data: &[u8],
8780                config: alloy_sol_types::abi::AbiDecoderConfig,
8781            ) -> alloy_sol_types::Result<Self::Return> {
8782                <Self::ReturnTuple<
8783                    '_,
8784                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8785                        data,
8786                        config,
8787                    )
8788                    .map(|r| {
8789                        let r: currentBlockNumberReturn = r.into();
8790                        r._0
8791                    })
8792            }
8793            #[inline]
8794            fn abi_decode_returns_validate(
8795                data: &[u8],
8796            ) -> alloy_sol_types::Result<Self::Return> {
8797                Self::abi_decode_returns_with_config(
8798                    data,
8799                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8800                )
8801            }
8802        }
8803    };
8804    #[derive(serde::Serialize, serde::Deserialize)]
8805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8806    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8807```solidity
8808function currentEpoch() external view returns (uint64);
8809```*/
8810    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8811    #[derive(Clone)]
8812    pub struct currentEpochCall;
8813    #[derive(serde::Serialize, serde::Deserialize)]
8814    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8815    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8816    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8817    #[derive(Clone)]
8818    pub struct currentEpochReturn {
8819        #[allow(missing_docs)]
8820        pub _0: u64,
8821    }
8822    #[allow(
8823        non_camel_case_types,
8824        non_snake_case,
8825        clippy::pub_underscore_fields,
8826        clippy::style
8827    )]
8828    const _: () = {
8829        use alloy::sol_types as alloy_sol_types;
8830        {
8831            #[doc(hidden)]
8832            #[allow(dead_code)]
8833            type UnderlyingSolTuple<'a> = ();
8834            #[doc(hidden)]
8835            type UnderlyingRustTuple<'a> = ();
8836            #[cfg(test)]
8837            #[allow(dead_code, unreachable_patterns)]
8838            fn _type_assertion(
8839                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8840            ) {
8841                match _t {
8842                    alloy_sol_types::private::AssertTypeEq::<
8843                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8844                    >(_) => {}
8845                }
8846            }
8847            #[automatically_derived]
8848            #[doc(hidden)]
8849            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8850                fn from(value: currentEpochCall) -> Self {
8851                    ()
8852                }
8853            }
8854            #[automatically_derived]
8855            #[doc(hidden)]
8856            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8857                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8858                    Self
8859                }
8860            }
8861        }
8862        {
8863            #[doc(hidden)]
8864            #[allow(dead_code)]
8865            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8866            #[doc(hidden)]
8867            type UnderlyingRustTuple<'a> = (u64,);
8868            #[cfg(test)]
8869            #[allow(dead_code, unreachable_patterns)]
8870            fn _type_assertion(
8871                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8872            ) {
8873                match _t {
8874                    alloy_sol_types::private::AssertTypeEq::<
8875                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8876                    >(_) => {}
8877                }
8878            }
8879            #[automatically_derived]
8880            #[doc(hidden)]
8881            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8882                fn from(value: currentEpochReturn) -> Self {
8883                    (value._0,)
8884                }
8885            }
8886            #[automatically_derived]
8887            #[doc(hidden)]
8888            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8889                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8890                    Self { _0: tuple.0 }
8891                }
8892            }
8893        }
8894        #[automatically_derived]
8895        impl alloy_sol_types::SolCall for currentEpochCall {
8896            type Parameters<'a> = ();
8897            type Token<'a> = <Self::Parameters<
8898                'a,
8899            > as alloy_sol_types::SolType>::Token<'a>;
8900            type Return = u64;
8901            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8902            type ReturnToken<'a> = <Self::ReturnTuple<
8903                'a,
8904            > as alloy_sol_types::SolType>::Token<'a>;
8905            const SIGNATURE: &'static str = "currentEpoch()";
8906            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8907            #[inline]
8908            fn new<'a>(
8909                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8910            ) -> Self {
8911                tuple.into()
8912            }
8913            #[inline]
8914            fn tokenize(&self) -> Self::Token<'_> {
8915                ()
8916            }
8917            #[inline]
8918            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8919                (
8920                    <alloy::sol_types::sol_data::Uint<
8921                        64,
8922                    > as alloy_sol_types::SolType>::tokenize(ret),
8923                )
8924            }
8925            #[inline]
8926            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8927                <Self::ReturnTuple<
8928                    '_,
8929                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8930                    .map(|r| {
8931                        let r: currentEpochReturn = r.into();
8932                        r._0
8933                    })
8934            }
8935            #[inline]
8936            fn abi_decode_returns_with_config(
8937                data: &[u8],
8938                config: alloy_sol_types::abi::AbiDecoderConfig,
8939            ) -> alloy_sol_types::Result<Self::Return> {
8940                <Self::ReturnTuple<
8941                    '_,
8942                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8943                        data,
8944                        config,
8945                    )
8946                    .map(|r| {
8947                        let r: currentEpochReturn = r.into();
8948                        r._0
8949                    })
8950            }
8951            #[inline]
8952            fn abi_decode_returns_validate(
8953                data: &[u8],
8954            ) -> alloy_sol_types::Result<Self::Return> {
8955                Self::abi_decode_returns_with_config(
8956                    data,
8957                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8958                )
8959            }
8960        }
8961    };
8962    #[derive(serde::Serialize, serde::Deserialize)]
8963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8964    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8965```solidity
8966function disablePermissionedProverMode() external;
8967```*/
8968    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8969    #[derive(Clone)]
8970    pub struct disablePermissionedProverModeCall;
8971    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8972    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8973    #[derive(Clone)]
8974    pub struct disablePermissionedProverModeReturn {}
8975    #[allow(
8976        non_camel_case_types,
8977        non_snake_case,
8978        clippy::pub_underscore_fields,
8979        clippy::style
8980    )]
8981    const _: () = {
8982        use alloy::sol_types as alloy_sol_types;
8983        {
8984            #[doc(hidden)]
8985            #[allow(dead_code)]
8986            type UnderlyingSolTuple<'a> = ();
8987            #[doc(hidden)]
8988            type UnderlyingRustTuple<'a> = ();
8989            #[cfg(test)]
8990            #[allow(dead_code, unreachable_patterns)]
8991            fn _type_assertion(
8992                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8993            ) {
8994                match _t {
8995                    alloy_sol_types::private::AssertTypeEq::<
8996                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8997                    >(_) => {}
8998                }
8999            }
9000            #[automatically_derived]
9001            #[doc(hidden)]
9002            impl ::core::convert::From<disablePermissionedProverModeCall>
9003            for UnderlyingRustTuple<'_> {
9004                fn from(value: disablePermissionedProverModeCall) -> Self {
9005                    ()
9006                }
9007            }
9008            #[automatically_derived]
9009            #[doc(hidden)]
9010            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9011            for disablePermissionedProverModeCall {
9012                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9013                    Self
9014                }
9015            }
9016        }
9017        {
9018            #[doc(hidden)]
9019            #[allow(dead_code)]
9020            type UnderlyingSolTuple<'a> = ();
9021            #[doc(hidden)]
9022            type UnderlyingRustTuple<'a> = ();
9023            #[cfg(test)]
9024            #[allow(dead_code, unreachable_patterns)]
9025            fn _type_assertion(
9026                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9027            ) {
9028                match _t {
9029                    alloy_sol_types::private::AssertTypeEq::<
9030                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9031                    >(_) => {}
9032                }
9033            }
9034            #[automatically_derived]
9035            #[doc(hidden)]
9036            impl ::core::convert::From<disablePermissionedProverModeReturn>
9037            for UnderlyingRustTuple<'_> {
9038                fn from(value: disablePermissionedProverModeReturn) -> Self {
9039                    ()
9040                }
9041            }
9042            #[automatically_derived]
9043            #[doc(hidden)]
9044            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9045            for disablePermissionedProverModeReturn {
9046                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9047                    Self {}
9048                }
9049            }
9050        }
9051        impl disablePermissionedProverModeReturn {
9052            fn _tokenize(
9053                &self,
9054            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
9055                '_,
9056            > {
9057                ()
9058            }
9059        }
9060        #[automatically_derived]
9061        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
9062            type Parameters<'a> = ();
9063            type Token<'a> = <Self::Parameters<
9064                'a,
9065            > as alloy_sol_types::SolType>::Token<'a>;
9066            type Return = disablePermissionedProverModeReturn;
9067            type ReturnTuple<'a> = ();
9068            type ReturnToken<'a> = <Self::ReturnTuple<
9069                'a,
9070            > as alloy_sol_types::SolType>::Token<'a>;
9071            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
9072            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
9073            #[inline]
9074            fn new<'a>(
9075                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9076            ) -> Self {
9077                tuple.into()
9078            }
9079            #[inline]
9080            fn tokenize(&self) -> Self::Token<'_> {
9081                ()
9082            }
9083            #[inline]
9084            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9085                disablePermissionedProverModeReturn::_tokenize(ret)
9086            }
9087            #[inline]
9088            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9089                <Self::ReturnTuple<
9090                    '_,
9091                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9092                    .map(Into::into)
9093            }
9094            #[inline]
9095            fn abi_decode_returns_with_config(
9096                data: &[u8],
9097                config: alloy_sol_types::abi::AbiDecoderConfig,
9098            ) -> alloy_sol_types::Result<Self::Return> {
9099                <Self::ReturnTuple<
9100                    '_,
9101                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9102                        data,
9103                        config,
9104                    )
9105                    .map(Into::into)
9106            }
9107            #[inline]
9108            fn abi_decode_returns_validate(
9109                data: &[u8],
9110            ) -> alloy_sol_types::Result<Self::Return> {
9111                Self::abi_decode_returns_with_config(
9112                    data,
9113                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9114                )
9115            }
9116        }
9117    };
9118    #[derive(serde::Serialize, serde::Deserialize)]
9119    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9120    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
9121```solidity
9122function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
9123```*/
9124    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9125    #[derive(Clone)]
9126    pub struct epochFromBlockNumberCall {
9127        #[allow(missing_docs)]
9128        pub _blockNum: u64,
9129        #[allow(missing_docs)]
9130        pub _blocksPerEpoch: u64,
9131    }
9132    #[derive(serde::Serialize, serde::Deserialize)]
9133    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9134    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
9135    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9136    #[derive(Clone)]
9137    pub struct epochFromBlockNumberReturn {
9138        #[allow(missing_docs)]
9139        pub _0: u64,
9140    }
9141    #[allow(
9142        non_camel_case_types,
9143        non_snake_case,
9144        clippy::pub_underscore_fields,
9145        clippy::style
9146    )]
9147    const _: () = {
9148        use alloy::sol_types as alloy_sol_types;
9149        {
9150            #[doc(hidden)]
9151            #[allow(dead_code)]
9152            type UnderlyingSolTuple<'a> = (
9153                alloy::sol_types::sol_data::Uint<64>,
9154                alloy::sol_types::sol_data::Uint<64>,
9155            );
9156            #[doc(hidden)]
9157            type UnderlyingRustTuple<'a> = (u64, u64);
9158            #[cfg(test)]
9159            #[allow(dead_code, unreachable_patterns)]
9160            fn _type_assertion(
9161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9162            ) {
9163                match _t {
9164                    alloy_sol_types::private::AssertTypeEq::<
9165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9166                    >(_) => {}
9167                }
9168            }
9169            #[automatically_derived]
9170            #[doc(hidden)]
9171            impl ::core::convert::From<epochFromBlockNumberCall>
9172            for UnderlyingRustTuple<'_> {
9173                fn from(value: epochFromBlockNumberCall) -> Self {
9174                    (value._blockNum, value._blocksPerEpoch)
9175                }
9176            }
9177            #[automatically_derived]
9178            #[doc(hidden)]
9179            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9180            for epochFromBlockNumberCall {
9181                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9182                    Self {
9183                        _blockNum: tuple.0,
9184                        _blocksPerEpoch: tuple.1,
9185                    }
9186                }
9187            }
9188        }
9189        {
9190            #[doc(hidden)]
9191            #[allow(dead_code)]
9192            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9193            #[doc(hidden)]
9194            type UnderlyingRustTuple<'a> = (u64,);
9195            #[cfg(test)]
9196            #[allow(dead_code, unreachable_patterns)]
9197            fn _type_assertion(
9198                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9199            ) {
9200                match _t {
9201                    alloy_sol_types::private::AssertTypeEq::<
9202                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9203                    >(_) => {}
9204                }
9205            }
9206            #[automatically_derived]
9207            #[doc(hidden)]
9208            impl ::core::convert::From<epochFromBlockNumberReturn>
9209            for UnderlyingRustTuple<'_> {
9210                fn from(value: epochFromBlockNumberReturn) -> Self {
9211                    (value._0,)
9212                }
9213            }
9214            #[automatically_derived]
9215            #[doc(hidden)]
9216            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9217            for epochFromBlockNumberReturn {
9218                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9219                    Self { _0: tuple.0 }
9220                }
9221            }
9222        }
9223        #[automatically_derived]
9224        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9225            type Parameters<'a> = (
9226                alloy::sol_types::sol_data::Uint<64>,
9227                alloy::sol_types::sol_data::Uint<64>,
9228            );
9229            type Token<'a> = <Self::Parameters<
9230                'a,
9231            > as alloy_sol_types::SolType>::Token<'a>;
9232            type Return = u64;
9233            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9234            type ReturnToken<'a> = <Self::ReturnTuple<
9235                'a,
9236            > as alloy_sol_types::SolType>::Token<'a>;
9237            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9238            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9239            #[inline]
9240            fn new<'a>(
9241                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9242            ) -> Self {
9243                tuple.into()
9244            }
9245            #[inline]
9246            fn tokenize(&self) -> Self::Token<'_> {
9247                (
9248                    <alloy::sol_types::sol_data::Uint<
9249                        64,
9250                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9251                    <alloy::sol_types::sol_data::Uint<
9252                        64,
9253                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9254                )
9255            }
9256            #[inline]
9257            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9258                (
9259                    <alloy::sol_types::sol_data::Uint<
9260                        64,
9261                    > as alloy_sol_types::SolType>::tokenize(ret),
9262                )
9263            }
9264            #[inline]
9265            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9266                <Self::ReturnTuple<
9267                    '_,
9268                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9269                    .map(|r| {
9270                        let r: epochFromBlockNumberReturn = r.into();
9271                        r._0
9272                    })
9273            }
9274            #[inline]
9275            fn abi_decode_returns_with_config(
9276                data: &[u8],
9277                config: alloy_sol_types::abi::AbiDecoderConfig,
9278            ) -> alloy_sol_types::Result<Self::Return> {
9279                <Self::ReturnTuple<
9280                    '_,
9281                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9282                        data,
9283                        config,
9284                    )
9285                    .map(|r| {
9286                        let r: epochFromBlockNumberReturn = r.into();
9287                        r._0
9288                    })
9289            }
9290            #[inline]
9291            fn abi_decode_returns_validate(
9292                data: &[u8],
9293            ) -> alloy_sol_types::Result<Self::Return> {
9294                Self::abi_decode_returns_with_config(
9295                    data,
9296                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9297                )
9298            }
9299        }
9300    };
9301    #[derive(serde::Serialize, serde::Deserialize)]
9302    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9303    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9304```solidity
9305function epochStartBlock() external view returns (uint64);
9306```*/
9307    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9308    #[derive(Clone)]
9309    pub struct epochStartBlockCall;
9310    #[derive(serde::Serialize, serde::Deserialize)]
9311    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9312    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9313    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9314    #[derive(Clone)]
9315    pub struct epochStartBlockReturn {
9316        #[allow(missing_docs)]
9317        pub _0: u64,
9318    }
9319    #[allow(
9320        non_camel_case_types,
9321        non_snake_case,
9322        clippy::pub_underscore_fields,
9323        clippy::style
9324    )]
9325    const _: () = {
9326        use alloy::sol_types as alloy_sol_types;
9327        {
9328            #[doc(hidden)]
9329            #[allow(dead_code)]
9330            type UnderlyingSolTuple<'a> = ();
9331            #[doc(hidden)]
9332            type UnderlyingRustTuple<'a> = ();
9333            #[cfg(test)]
9334            #[allow(dead_code, unreachable_patterns)]
9335            fn _type_assertion(
9336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9337            ) {
9338                match _t {
9339                    alloy_sol_types::private::AssertTypeEq::<
9340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9341                    >(_) => {}
9342                }
9343            }
9344            #[automatically_derived]
9345            #[doc(hidden)]
9346            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9347                fn from(value: epochStartBlockCall) -> Self {
9348                    ()
9349                }
9350            }
9351            #[automatically_derived]
9352            #[doc(hidden)]
9353            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9355                    Self
9356                }
9357            }
9358        }
9359        {
9360            #[doc(hidden)]
9361            #[allow(dead_code)]
9362            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9363            #[doc(hidden)]
9364            type UnderlyingRustTuple<'a> = (u64,);
9365            #[cfg(test)]
9366            #[allow(dead_code, unreachable_patterns)]
9367            fn _type_assertion(
9368                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9369            ) {
9370                match _t {
9371                    alloy_sol_types::private::AssertTypeEq::<
9372                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9373                    >(_) => {}
9374                }
9375            }
9376            #[automatically_derived]
9377            #[doc(hidden)]
9378            impl ::core::convert::From<epochStartBlockReturn>
9379            for UnderlyingRustTuple<'_> {
9380                fn from(value: epochStartBlockReturn) -> Self {
9381                    (value._0,)
9382                }
9383            }
9384            #[automatically_derived]
9385            #[doc(hidden)]
9386            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9387            for epochStartBlockReturn {
9388                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9389                    Self { _0: tuple.0 }
9390                }
9391            }
9392        }
9393        #[automatically_derived]
9394        impl alloy_sol_types::SolCall for epochStartBlockCall {
9395            type Parameters<'a> = ();
9396            type Token<'a> = <Self::Parameters<
9397                'a,
9398            > as alloy_sol_types::SolType>::Token<'a>;
9399            type Return = u64;
9400            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9401            type ReturnToken<'a> = <Self::ReturnTuple<
9402                'a,
9403            > as alloy_sol_types::SolType>::Token<'a>;
9404            const SIGNATURE: &'static str = "epochStartBlock()";
9405            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9406            #[inline]
9407            fn new<'a>(
9408                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9409            ) -> Self {
9410                tuple.into()
9411            }
9412            #[inline]
9413            fn tokenize(&self) -> Self::Token<'_> {
9414                ()
9415            }
9416            #[inline]
9417            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9418                (
9419                    <alloy::sol_types::sol_data::Uint<
9420                        64,
9421                    > as alloy_sol_types::SolType>::tokenize(ret),
9422                )
9423            }
9424            #[inline]
9425            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9426                <Self::ReturnTuple<
9427                    '_,
9428                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9429                    .map(|r| {
9430                        let r: epochStartBlockReturn = r.into();
9431                        r._0
9432                    })
9433            }
9434            #[inline]
9435            fn abi_decode_returns_with_config(
9436                data: &[u8],
9437                config: alloy_sol_types::abi::AbiDecoderConfig,
9438            ) -> alloy_sol_types::Result<Self::Return> {
9439                <Self::ReturnTuple<
9440                    '_,
9441                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9442                        data,
9443                        config,
9444                    )
9445                    .map(|r| {
9446                        let r: epochStartBlockReturn = r.into();
9447                        r._0
9448                    })
9449            }
9450            #[inline]
9451            fn abi_decode_returns_validate(
9452                data: &[u8],
9453            ) -> alloy_sol_types::Result<Self::Return> {
9454                Self::abi_decode_returns_with_config(
9455                    data,
9456                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9457                )
9458            }
9459        }
9460    };
9461    #[derive(serde::Serialize, serde::Deserialize)]
9462    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9463    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9464```solidity
9465function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9466```*/
9467    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9468    #[derive(Clone)]
9469    pub struct finalizedStateCall;
9470    #[derive(serde::Serialize, serde::Deserialize)]
9471    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9472    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9473    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9474    #[derive(Clone)]
9475    pub struct finalizedStateReturn {
9476        #[allow(missing_docs)]
9477        pub viewNum: u64,
9478        #[allow(missing_docs)]
9479        pub blockHeight: u64,
9480        #[allow(missing_docs)]
9481        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9482    }
9483    #[allow(
9484        non_camel_case_types,
9485        non_snake_case,
9486        clippy::pub_underscore_fields,
9487        clippy::style
9488    )]
9489    const _: () = {
9490        use alloy::sol_types as alloy_sol_types;
9491        {
9492            #[doc(hidden)]
9493            #[allow(dead_code)]
9494            type UnderlyingSolTuple<'a> = ();
9495            #[doc(hidden)]
9496            type UnderlyingRustTuple<'a> = ();
9497            #[cfg(test)]
9498            #[allow(dead_code, unreachable_patterns)]
9499            fn _type_assertion(
9500                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9501            ) {
9502                match _t {
9503                    alloy_sol_types::private::AssertTypeEq::<
9504                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9505                    >(_) => {}
9506                }
9507            }
9508            #[automatically_derived]
9509            #[doc(hidden)]
9510            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9511                fn from(value: finalizedStateCall) -> Self {
9512                    ()
9513                }
9514            }
9515            #[automatically_derived]
9516            #[doc(hidden)]
9517            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9518                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9519                    Self
9520                }
9521            }
9522        }
9523        {
9524            #[doc(hidden)]
9525            #[allow(dead_code)]
9526            type UnderlyingSolTuple<'a> = (
9527                alloy::sol_types::sol_data::Uint<64>,
9528                alloy::sol_types::sol_data::Uint<64>,
9529                BN254::ScalarField,
9530            );
9531            #[doc(hidden)]
9532            type UnderlyingRustTuple<'a> = (
9533                u64,
9534                u64,
9535                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9536            );
9537            #[cfg(test)]
9538            #[allow(dead_code, unreachable_patterns)]
9539            fn _type_assertion(
9540                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9541            ) {
9542                match _t {
9543                    alloy_sol_types::private::AssertTypeEq::<
9544                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9545                    >(_) => {}
9546                }
9547            }
9548            #[automatically_derived]
9549            #[doc(hidden)]
9550            impl ::core::convert::From<finalizedStateReturn>
9551            for UnderlyingRustTuple<'_> {
9552                fn from(value: finalizedStateReturn) -> Self {
9553                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9554                }
9555            }
9556            #[automatically_derived]
9557            #[doc(hidden)]
9558            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9559            for finalizedStateReturn {
9560                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9561                    Self {
9562                        viewNum: tuple.0,
9563                        blockHeight: tuple.1,
9564                        blockCommRoot: tuple.2,
9565                    }
9566                }
9567            }
9568        }
9569        impl finalizedStateReturn {
9570            fn _tokenize(
9571                &self,
9572            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9573                (
9574                    <alloy::sol_types::sol_data::Uint<
9575                        64,
9576                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9577                    <alloy::sol_types::sol_data::Uint<
9578                        64,
9579                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9580                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9581                        &self.blockCommRoot,
9582                    ),
9583                )
9584            }
9585        }
9586        #[automatically_derived]
9587        impl alloy_sol_types::SolCall for finalizedStateCall {
9588            type Parameters<'a> = ();
9589            type Token<'a> = <Self::Parameters<
9590                'a,
9591            > as alloy_sol_types::SolType>::Token<'a>;
9592            type Return = finalizedStateReturn;
9593            type ReturnTuple<'a> = (
9594                alloy::sol_types::sol_data::Uint<64>,
9595                alloy::sol_types::sol_data::Uint<64>,
9596                BN254::ScalarField,
9597            );
9598            type ReturnToken<'a> = <Self::ReturnTuple<
9599                'a,
9600            > as alloy_sol_types::SolType>::Token<'a>;
9601            const SIGNATURE: &'static str = "finalizedState()";
9602            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9603            #[inline]
9604            fn new<'a>(
9605                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9606            ) -> Self {
9607                tuple.into()
9608            }
9609            #[inline]
9610            fn tokenize(&self) -> Self::Token<'_> {
9611                ()
9612            }
9613            #[inline]
9614            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9615                finalizedStateReturn::_tokenize(ret)
9616            }
9617            #[inline]
9618            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9619                <Self::ReturnTuple<
9620                    '_,
9621                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9622                    .map(Into::into)
9623            }
9624            #[inline]
9625            fn abi_decode_returns_with_config(
9626                data: &[u8],
9627                config: alloy_sol_types::abi::AbiDecoderConfig,
9628            ) -> alloy_sol_types::Result<Self::Return> {
9629                <Self::ReturnTuple<
9630                    '_,
9631                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9632                        data,
9633                        config,
9634                    )
9635                    .map(Into::into)
9636            }
9637            #[inline]
9638            fn abi_decode_returns_validate(
9639                data: &[u8],
9640            ) -> alloy_sol_types::Result<Self::Return> {
9641                Self::abi_decode_returns_with_config(
9642                    data,
9643                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9644                )
9645            }
9646        }
9647    };
9648    #[derive(serde::Serialize, serde::Deserialize)]
9649    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9650    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9651```solidity
9652function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9653```*/
9654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9655    #[derive(Clone)]
9656    pub struct genesisStakeTableStateCall;
9657    #[derive(serde::Serialize, serde::Deserialize)]
9658    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9659    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9660    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9661    #[derive(Clone)]
9662    pub struct genesisStakeTableStateReturn {
9663        #[allow(missing_docs)]
9664        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9665        #[allow(missing_docs)]
9666        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9667        #[allow(missing_docs)]
9668        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9669        #[allow(missing_docs)]
9670        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9671    }
9672    #[allow(
9673        non_camel_case_types,
9674        non_snake_case,
9675        clippy::pub_underscore_fields,
9676        clippy::style
9677    )]
9678    const _: () = {
9679        use alloy::sol_types as alloy_sol_types;
9680        {
9681            #[doc(hidden)]
9682            #[allow(dead_code)]
9683            type UnderlyingSolTuple<'a> = ();
9684            #[doc(hidden)]
9685            type UnderlyingRustTuple<'a> = ();
9686            #[cfg(test)]
9687            #[allow(dead_code, unreachable_patterns)]
9688            fn _type_assertion(
9689                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9690            ) {
9691                match _t {
9692                    alloy_sol_types::private::AssertTypeEq::<
9693                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9694                    >(_) => {}
9695                }
9696            }
9697            #[automatically_derived]
9698            #[doc(hidden)]
9699            impl ::core::convert::From<genesisStakeTableStateCall>
9700            for UnderlyingRustTuple<'_> {
9701                fn from(value: genesisStakeTableStateCall) -> Self {
9702                    ()
9703                }
9704            }
9705            #[automatically_derived]
9706            #[doc(hidden)]
9707            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9708            for genesisStakeTableStateCall {
9709                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9710                    Self
9711                }
9712            }
9713        }
9714        {
9715            #[doc(hidden)]
9716            #[allow(dead_code)]
9717            type UnderlyingSolTuple<'a> = (
9718                alloy::sol_types::sol_data::Uint<256>,
9719                BN254::ScalarField,
9720                BN254::ScalarField,
9721                BN254::ScalarField,
9722            );
9723            #[doc(hidden)]
9724            type UnderlyingRustTuple<'a> = (
9725                alloy::sol_types::private::primitives::aliases::U256,
9726                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9727                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9728                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9729            );
9730            #[cfg(test)]
9731            #[allow(dead_code, unreachable_patterns)]
9732            fn _type_assertion(
9733                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9734            ) {
9735                match _t {
9736                    alloy_sol_types::private::AssertTypeEq::<
9737                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9738                    >(_) => {}
9739                }
9740            }
9741            #[automatically_derived]
9742            #[doc(hidden)]
9743            impl ::core::convert::From<genesisStakeTableStateReturn>
9744            for UnderlyingRustTuple<'_> {
9745                fn from(value: genesisStakeTableStateReturn) -> Self {
9746                    (
9747                        value.threshold,
9748                        value.blsKeyComm,
9749                        value.schnorrKeyComm,
9750                        value.amountComm,
9751                    )
9752                }
9753            }
9754            #[automatically_derived]
9755            #[doc(hidden)]
9756            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9757            for genesisStakeTableStateReturn {
9758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9759                    Self {
9760                        threshold: tuple.0,
9761                        blsKeyComm: tuple.1,
9762                        schnorrKeyComm: tuple.2,
9763                        amountComm: tuple.3,
9764                    }
9765                }
9766            }
9767        }
9768        impl genesisStakeTableStateReturn {
9769            fn _tokenize(
9770                &self,
9771            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9772                '_,
9773            > {
9774                (
9775                    <alloy::sol_types::sol_data::Uint<
9776                        256,
9777                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9778                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9779                        &self.blsKeyComm,
9780                    ),
9781                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9782                        &self.schnorrKeyComm,
9783                    ),
9784                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9785                        &self.amountComm,
9786                    ),
9787                )
9788            }
9789        }
9790        #[automatically_derived]
9791        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9792            type Parameters<'a> = ();
9793            type Token<'a> = <Self::Parameters<
9794                'a,
9795            > as alloy_sol_types::SolType>::Token<'a>;
9796            type Return = genesisStakeTableStateReturn;
9797            type ReturnTuple<'a> = (
9798                alloy::sol_types::sol_data::Uint<256>,
9799                BN254::ScalarField,
9800                BN254::ScalarField,
9801                BN254::ScalarField,
9802            );
9803            type ReturnToken<'a> = <Self::ReturnTuple<
9804                'a,
9805            > as alloy_sol_types::SolType>::Token<'a>;
9806            const SIGNATURE: &'static str = "genesisStakeTableState()";
9807            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9808            #[inline]
9809            fn new<'a>(
9810                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9811            ) -> Self {
9812                tuple.into()
9813            }
9814            #[inline]
9815            fn tokenize(&self) -> Self::Token<'_> {
9816                ()
9817            }
9818            #[inline]
9819            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9820                genesisStakeTableStateReturn::_tokenize(ret)
9821            }
9822            #[inline]
9823            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9824                <Self::ReturnTuple<
9825                    '_,
9826                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9827                    .map(Into::into)
9828            }
9829            #[inline]
9830            fn abi_decode_returns_with_config(
9831                data: &[u8],
9832                config: alloy_sol_types::abi::AbiDecoderConfig,
9833            ) -> alloy_sol_types::Result<Self::Return> {
9834                <Self::ReturnTuple<
9835                    '_,
9836                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
9837                        data,
9838                        config,
9839                    )
9840                    .map(Into::into)
9841            }
9842            #[inline]
9843            fn abi_decode_returns_validate(
9844                data: &[u8],
9845            ) -> alloy_sol_types::Result<Self::Return> {
9846                Self::abi_decode_returns_with_config(
9847                    data,
9848                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9849                )
9850            }
9851        }
9852    };
9853    #[derive(serde::Serialize, serde::Deserialize)]
9854    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9855    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9856```solidity
9857function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9858```*/
9859    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9860    #[derive(Clone)]
9861    pub struct genesisStateCall;
9862    #[derive(serde::Serialize, serde::Deserialize)]
9863    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9864    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9865    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9866    #[derive(Clone)]
9867    pub struct genesisStateReturn {
9868        #[allow(missing_docs)]
9869        pub viewNum: u64,
9870        #[allow(missing_docs)]
9871        pub blockHeight: u64,
9872        #[allow(missing_docs)]
9873        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9874    }
9875    #[allow(
9876        non_camel_case_types,
9877        non_snake_case,
9878        clippy::pub_underscore_fields,
9879        clippy::style
9880    )]
9881    const _: () = {
9882        use alloy::sol_types as alloy_sol_types;
9883        {
9884            #[doc(hidden)]
9885            #[allow(dead_code)]
9886            type UnderlyingSolTuple<'a> = ();
9887            #[doc(hidden)]
9888            type UnderlyingRustTuple<'a> = ();
9889            #[cfg(test)]
9890            #[allow(dead_code, unreachable_patterns)]
9891            fn _type_assertion(
9892                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9893            ) {
9894                match _t {
9895                    alloy_sol_types::private::AssertTypeEq::<
9896                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9897                    >(_) => {}
9898                }
9899            }
9900            #[automatically_derived]
9901            #[doc(hidden)]
9902            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9903                fn from(value: genesisStateCall) -> Self {
9904                    ()
9905                }
9906            }
9907            #[automatically_derived]
9908            #[doc(hidden)]
9909            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9910                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9911                    Self
9912                }
9913            }
9914        }
9915        {
9916            #[doc(hidden)]
9917            #[allow(dead_code)]
9918            type UnderlyingSolTuple<'a> = (
9919                alloy::sol_types::sol_data::Uint<64>,
9920                alloy::sol_types::sol_data::Uint<64>,
9921                BN254::ScalarField,
9922            );
9923            #[doc(hidden)]
9924            type UnderlyingRustTuple<'a> = (
9925                u64,
9926                u64,
9927                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9928            );
9929            #[cfg(test)]
9930            #[allow(dead_code, unreachable_patterns)]
9931            fn _type_assertion(
9932                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9933            ) {
9934                match _t {
9935                    alloy_sol_types::private::AssertTypeEq::<
9936                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9937                    >(_) => {}
9938                }
9939            }
9940            #[automatically_derived]
9941            #[doc(hidden)]
9942            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9943                fn from(value: genesisStateReturn) -> Self {
9944                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9945                }
9946            }
9947            #[automatically_derived]
9948            #[doc(hidden)]
9949            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9950                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9951                    Self {
9952                        viewNum: tuple.0,
9953                        blockHeight: tuple.1,
9954                        blockCommRoot: tuple.2,
9955                    }
9956                }
9957            }
9958        }
9959        impl genesisStateReturn {
9960            fn _tokenize(
9961                &self,
9962            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9963                (
9964                    <alloy::sol_types::sol_data::Uint<
9965                        64,
9966                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9967                    <alloy::sol_types::sol_data::Uint<
9968                        64,
9969                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9970                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9971                        &self.blockCommRoot,
9972                    ),
9973                )
9974            }
9975        }
9976        #[automatically_derived]
9977        impl alloy_sol_types::SolCall for genesisStateCall {
9978            type Parameters<'a> = ();
9979            type Token<'a> = <Self::Parameters<
9980                'a,
9981            > as alloy_sol_types::SolType>::Token<'a>;
9982            type Return = genesisStateReturn;
9983            type ReturnTuple<'a> = (
9984                alloy::sol_types::sol_data::Uint<64>,
9985                alloy::sol_types::sol_data::Uint<64>,
9986                BN254::ScalarField,
9987            );
9988            type ReturnToken<'a> = <Self::ReturnTuple<
9989                'a,
9990            > as alloy_sol_types::SolType>::Token<'a>;
9991            const SIGNATURE: &'static str = "genesisState()";
9992            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9993            #[inline]
9994            fn new<'a>(
9995                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9996            ) -> Self {
9997                tuple.into()
9998            }
9999            #[inline]
10000            fn tokenize(&self) -> Self::Token<'_> {
10001                ()
10002            }
10003            #[inline]
10004            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10005                genesisStateReturn::_tokenize(ret)
10006            }
10007            #[inline]
10008            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10009                <Self::ReturnTuple<
10010                    '_,
10011                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10012                    .map(Into::into)
10013            }
10014            #[inline]
10015            fn abi_decode_returns_with_config(
10016                data: &[u8],
10017                config: alloy_sol_types::abi::AbiDecoderConfig,
10018            ) -> alloy_sol_types::Result<Self::Return> {
10019                <Self::ReturnTuple<
10020                    '_,
10021                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10022                        data,
10023                        config,
10024                    )
10025                    .map(Into::into)
10026            }
10027            #[inline]
10028            fn abi_decode_returns_validate(
10029                data: &[u8],
10030            ) -> alloy_sol_types::Result<Self::Return> {
10031                Self::abi_decode_returns_with_config(
10032                    data,
10033                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10034                )
10035            }
10036        }
10037    };
10038    #[derive(serde::Serialize, serde::Deserialize)]
10039    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10040    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
10041```solidity
10042function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
10043```*/
10044    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10045    #[derive(Clone)]
10046    pub struct getHotShotCommitmentCall {
10047        #[allow(missing_docs)]
10048        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
10049    }
10050    #[derive(serde::Serialize, serde::Deserialize)]
10051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10052    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
10053    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10054    #[derive(Clone)]
10055    pub struct getHotShotCommitmentReturn {
10056        #[allow(missing_docs)]
10057        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10058        #[allow(missing_docs)]
10059        pub hotshotBlockHeight: u64,
10060    }
10061    #[allow(
10062        non_camel_case_types,
10063        non_snake_case,
10064        clippy::pub_underscore_fields,
10065        clippy::style
10066    )]
10067    const _: () = {
10068        use alloy::sol_types as alloy_sol_types;
10069        {
10070            #[doc(hidden)]
10071            #[allow(dead_code)]
10072            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10073            #[doc(hidden)]
10074            type UnderlyingRustTuple<'a> = (
10075                alloy::sol_types::private::primitives::aliases::U256,
10076            );
10077            #[cfg(test)]
10078            #[allow(dead_code, unreachable_patterns)]
10079            fn _type_assertion(
10080                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10081            ) {
10082                match _t {
10083                    alloy_sol_types::private::AssertTypeEq::<
10084                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10085                    >(_) => {}
10086                }
10087            }
10088            #[automatically_derived]
10089            #[doc(hidden)]
10090            impl ::core::convert::From<getHotShotCommitmentCall>
10091            for UnderlyingRustTuple<'_> {
10092                fn from(value: getHotShotCommitmentCall) -> Self {
10093                    (value.hotShotBlockHeight,)
10094                }
10095            }
10096            #[automatically_derived]
10097            #[doc(hidden)]
10098            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10099            for getHotShotCommitmentCall {
10100                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10101                    Self {
10102                        hotShotBlockHeight: tuple.0,
10103                    }
10104                }
10105            }
10106        }
10107        {
10108            #[doc(hidden)]
10109            #[allow(dead_code)]
10110            type UnderlyingSolTuple<'a> = (
10111                BN254::ScalarField,
10112                alloy::sol_types::sol_data::Uint<64>,
10113            );
10114            #[doc(hidden)]
10115            type UnderlyingRustTuple<'a> = (
10116                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10117                u64,
10118            );
10119            #[cfg(test)]
10120            #[allow(dead_code, unreachable_patterns)]
10121            fn _type_assertion(
10122                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10123            ) {
10124                match _t {
10125                    alloy_sol_types::private::AssertTypeEq::<
10126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10127                    >(_) => {}
10128                }
10129            }
10130            #[automatically_derived]
10131            #[doc(hidden)]
10132            impl ::core::convert::From<getHotShotCommitmentReturn>
10133            for UnderlyingRustTuple<'_> {
10134                fn from(value: getHotShotCommitmentReturn) -> Self {
10135                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
10136                }
10137            }
10138            #[automatically_derived]
10139            #[doc(hidden)]
10140            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10141            for getHotShotCommitmentReturn {
10142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10143                    Self {
10144                        hotShotBlockCommRoot: tuple.0,
10145                        hotshotBlockHeight: tuple.1,
10146                    }
10147                }
10148            }
10149        }
10150        impl getHotShotCommitmentReturn {
10151            fn _tokenize(
10152                &self,
10153            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
10154                '_,
10155            > {
10156                (
10157                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10158                        &self.hotShotBlockCommRoot,
10159                    ),
10160                    <alloy::sol_types::sol_data::Uint<
10161                        64,
10162                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
10163                )
10164            }
10165        }
10166        #[automatically_derived]
10167        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
10168            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10169            type Token<'a> = <Self::Parameters<
10170                'a,
10171            > as alloy_sol_types::SolType>::Token<'a>;
10172            type Return = getHotShotCommitmentReturn;
10173            type ReturnTuple<'a> = (
10174                BN254::ScalarField,
10175                alloy::sol_types::sol_data::Uint<64>,
10176            );
10177            type ReturnToken<'a> = <Self::ReturnTuple<
10178                'a,
10179            > as alloy_sol_types::SolType>::Token<'a>;
10180            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
10181            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
10182            #[inline]
10183            fn new<'a>(
10184                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10185            ) -> Self {
10186                tuple.into()
10187            }
10188            #[inline]
10189            fn tokenize(&self) -> Self::Token<'_> {
10190                (
10191                    <alloy::sol_types::sol_data::Uint<
10192                        256,
10193                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10194                )
10195            }
10196            #[inline]
10197            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10198                getHotShotCommitmentReturn::_tokenize(ret)
10199            }
10200            #[inline]
10201            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10202                <Self::ReturnTuple<
10203                    '_,
10204                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10205                    .map(Into::into)
10206            }
10207            #[inline]
10208            fn abi_decode_returns_with_config(
10209                data: &[u8],
10210                config: alloy_sol_types::abi::AbiDecoderConfig,
10211            ) -> alloy_sol_types::Result<Self::Return> {
10212                <Self::ReturnTuple<
10213                    '_,
10214                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10215                        data,
10216                        config,
10217                    )
10218                    .map(Into::into)
10219            }
10220            #[inline]
10221            fn abi_decode_returns_validate(
10222                data: &[u8],
10223            ) -> alloy_sol_types::Result<Self::Return> {
10224                Self::abi_decode_returns_with_config(
10225                    data,
10226                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10227                )
10228            }
10229        }
10230    };
10231    #[derive(serde::Serialize, serde::Deserialize)]
10232    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10233    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10234```solidity
10235function getStateHistoryCount() external view returns (uint256);
10236```*/
10237    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10238    #[derive(Clone)]
10239    pub struct getStateHistoryCountCall;
10240    #[derive(serde::Serialize, serde::Deserialize)]
10241    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10242    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10243    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10244    #[derive(Clone)]
10245    pub struct getStateHistoryCountReturn {
10246        #[allow(missing_docs)]
10247        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10248    }
10249    #[allow(
10250        non_camel_case_types,
10251        non_snake_case,
10252        clippy::pub_underscore_fields,
10253        clippy::style
10254    )]
10255    const _: () = {
10256        use alloy::sol_types as alloy_sol_types;
10257        {
10258            #[doc(hidden)]
10259            #[allow(dead_code)]
10260            type UnderlyingSolTuple<'a> = ();
10261            #[doc(hidden)]
10262            type UnderlyingRustTuple<'a> = ();
10263            #[cfg(test)]
10264            #[allow(dead_code, unreachable_patterns)]
10265            fn _type_assertion(
10266                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10267            ) {
10268                match _t {
10269                    alloy_sol_types::private::AssertTypeEq::<
10270                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10271                    >(_) => {}
10272                }
10273            }
10274            #[automatically_derived]
10275            #[doc(hidden)]
10276            impl ::core::convert::From<getStateHistoryCountCall>
10277            for UnderlyingRustTuple<'_> {
10278                fn from(value: getStateHistoryCountCall) -> Self {
10279                    ()
10280                }
10281            }
10282            #[automatically_derived]
10283            #[doc(hidden)]
10284            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10285            for getStateHistoryCountCall {
10286                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10287                    Self
10288                }
10289            }
10290        }
10291        {
10292            #[doc(hidden)]
10293            #[allow(dead_code)]
10294            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10295            #[doc(hidden)]
10296            type UnderlyingRustTuple<'a> = (
10297                alloy::sol_types::private::primitives::aliases::U256,
10298            );
10299            #[cfg(test)]
10300            #[allow(dead_code, unreachable_patterns)]
10301            fn _type_assertion(
10302                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10303            ) {
10304                match _t {
10305                    alloy_sol_types::private::AssertTypeEq::<
10306                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10307                    >(_) => {}
10308                }
10309            }
10310            #[automatically_derived]
10311            #[doc(hidden)]
10312            impl ::core::convert::From<getStateHistoryCountReturn>
10313            for UnderlyingRustTuple<'_> {
10314                fn from(value: getStateHistoryCountReturn) -> Self {
10315                    (value._0,)
10316                }
10317            }
10318            #[automatically_derived]
10319            #[doc(hidden)]
10320            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10321            for getStateHistoryCountReturn {
10322                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10323                    Self { _0: tuple.0 }
10324                }
10325            }
10326        }
10327        #[automatically_derived]
10328        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10329            type Parameters<'a> = ();
10330            type Token<'a> = <Self::Parameters<
10331                'a,
10332            > as alloy_sol_types::SolType>::Token<'a>;
10333            type Return = alloy::sol_types::private::primitives::aliases::U256;
10334            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10335            type ReturnToken<'a> = <Self::ReturnTuple<
10336                'a,
10337            > as alloy_sol_types::SolType>::Token<'a>;
10338            const SIGNATURE: &'static str = "getStateHistoryCount()";
10339            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10340            #[inline]
10341            fn new<'a>(
10342                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10343            ) -> Self {
10344                tuple.into()
10345            }
10346            #[inline]
10347            fn tokenize(&self) -> Self::Token<'_> {
10348                ()
10349            }
10350            #[inline]
10351            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10352                (
10353                    <alloy::sol_types::sol_data::Uint<
10354                        256,
10355                    > as alloy_sol_types::SolType>::tokenize(ret),
10356                )
10357            }
10358            #[inline]
10359            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10360                <Self::ReturnTuple<
10361                    '_,
10362                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10363                    .map(|r| {
10364                        let r: getStateHistoryCountReturn = r.into();
10365                        r._0
10366                    })
10367            }
10368            #[inline]
10369            fn abi_decode_returns_with_config(
10370                data: &[u8],
10371                config: alloy_sol_types::abi::AbiDecoderConfig,
10372            ) -> alloy_sol_types::Result<Self::Return> {
10373                <Self::ReturnTuple<
10374                    '_,
10375                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10376                        data,
10377                        config,
10378                    )
10379                    .map(|r| {
10380                        let r: getStateHistoryCountReturn = r.into();
10381                        r._0
10382                    })
10383            }
10384            #[inline]
10385            fn abi_decode_returns_validate(
10386                data: &[u8],
10387            ) -> alloy_sol_types::Result<Self::Return> {
10388                Self::abi_decode_returns_with_config(
10389                    data,
10390                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10391                )
10392            }
10393        }
10394    };
10395    #[derive(serde::Serialize, serde::Deserialize)]
10396    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10397    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10398```solidity
10399function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10400```*/
10401    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10402    #[derive(Clone)]
10403    pub struct getVersionCall;
10404    #[derive(serde::Serialize, serde::Deserialize)]
10405    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10406    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10407    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10408    #[derive(Clone)]
10409    pub struct getVersionReturn {
10410        #[allow(missing_docs)]
10411        pub majorVersion: u8,
10412        #[allow(missing_docs)]
10413        pub minorVersion: u8,
10414        #[allow(missing_docs)]
10415        pub patchVersion: u8,
10416    }
10417    #[allow(
10418        non_camel_case_types,
10419        non_snake_case,
10420        clippy::pub_underscore_fields,
10421        clippy::style
10422    )]
10423    const _: () = {
10424        use alloy::sol_types as alloy_sol_types;
10425        {
10426            #[doc(hidden)]
10427            #[allow(dead_code)]
10428            type UnderlyingSolTuple<'a> = ();
10429            #[doc(hidden)]
10430            type UnderlyingRustTuple<'a> = ();
10431            #[cfg(test)]
10432            #[allow(dead_code, unreachable_patterns)]
10433            fn _type_assertion(
10434                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10435            ) {
10436                match _t {
10437                    alloy_sol_types::private::AssertTypeEq::<
10438                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10439                    >(_) => {}
10440                }
10441            }
10442            #[automatically_derived]
10443            #[doc(hidden)]
10444            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10445                fn from(value: getVersionCall) -> Self {
10446                    ()
10447                }
10448            }
10449            #[automatically_derived]
10450            #[doc(hidden)]
10451            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10452                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10453                    Self
10454                }
10455            }
10456        }
10457        {
10458            #[doc(hidden)]
10459            #[allow(dead_code)]
10460            type UnderlyingSolTuple<'a> = (
10461                alloy::sol_types::sol_data::Uint<8>,
10462                alloy::sol_types::sol_data::Uint<8>,
10463                alloy::sol_types::sol_data::Uint<8>,
10464            );
10465            #[doc(hidden)]
10466            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10467            #[cfg(test)]
10468            #[allow(dead_code, unreachable_patterns)]
10469            fn _type_assertion(
10470                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10471            ) {
10472                match _t {
10473                    alloy_sol_types::private::AssertTypeEq::<
10474                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10475                    >(_) => {}
10476                }
10477            }
10478            #[automatically_derived]
10479            #[doc(hidden)]
10480            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10481                fn from(value: getVersionReturn) -> Self {
10482                    (value.majorVersion, value.minorVersion, value.patchVersion)
10483                }
10484            }
10485            #[automatically_derived]
10486            #[doc(hidden)]
10487            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10488                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10489                    Self {
10490                        majorVersion: tuple.0,
10491                        minorVersion: tuple.1,
10492                        patchVersion: tuple.2,
10493                    }
10494                }
10495            }
10496        }
10497        impl getVersionReturn {
10498            fn _tokenize(
10499                &self,
10500            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10501                (
10502                    <alloy::sol_types::sol_data::Uint<
10503                        8,
10504                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10505                    <alloy::sol_types::sol_data::Uint<
10506                        8,
10507                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10508                    <alloy::sol_types::sol_data::Uint<
10509                        8,
10510                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10511                )
10512            }
10513        }
10514        #[automatically_derived]
10515        impl alloy_sol_types::SolCall for getVersionCall {
10516            type Parameters<'a> = ();
10517            type Token<'a> = <Self::Parameters<
10518                'a,
10519            > as alloy_sol_types::SolType>::Token<'a>;
10520            type Return = getVersionReturn;
10521            type ReturnTuple<'a> = (
10522                alloy::sol_types::sol_data::Uint<8>,
10523                alloy::sol_types::sol_data::Uint<8>,
10524                alloy::sol_types::sol_data::Uint<8>,
10525            );
10526            type ReturnToken<'a> = <Self::ReturnTuple<
10527                'a,
10528            > as alloy_sol_types::SolType>::Token<'a>;
10529            const SIGNATURE: &'static str = "getVersion()";
10530            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10531            #[inline]
10532            fn new<'a>(
10533                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10534            ) -> Self {
10535                tuple.into()
10536            }
10537            #[inline]
10538            fn tokenize(&self) -> Self::Token<'_> {
10539                ()
10540            }
10541            #[inline]
10542            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10543                getVersionReturn::_tokenize(ret)
10544            }
10545            #[inline]
10546            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10547                <Self::ReturnTuple<
10548                    '_,
10549                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10550                    .map(Into::into)
10551            }
10552            #[inline]
10553            fn abi_decode_returns_with_config(
10554                data: &[u8],
10555                config: alloy_sol_types::abi::AbiDecoderConfig,
10556            ) -> alloy_sol_types::Result<Self::Return> {
10557                <Self::ReturnTuple<
10558                    '_,
10559                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10560                        data,
10561                        config,
10562                    )
10563                    .map(Into::into)
10564            }
10565            #[inline]
10566            fn abi_decode_returns_validate(
10567                data: &[u8],
10568            ) -> alloy_sol_types::Result<Self::Return> {
10569                Self::abi_decode_returns_with_config(
10570                    data,
10571                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10572                )
10573            }
10574        }
10575    };
10576    #[derive(serde::Serialize, serde::Deserialize)]
10577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10578    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10579```solidity
10580function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10581```*/
10582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10583    #[derive(Clone)]
10584    pub struct initializeCall {
10585        #[allow(missing_docs)]
10586        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10587        #[allow(missing_docs)]
10588        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10589        #[allow(missing_docs)]
10590        pub _stateHistoryRetentionPeriod: u32,
10591        #[allow(missing_docs)]
10592        pub owner: alloy::sol_types::private::Address,
10593    }
10594    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10595    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10596    #[derive(Clone)]
10597    pub struct initializeReturn {}
10598    #[allow(
10599        non_camel_case_types,
10600        non_snake_case,
10601        clippy::pub_underscore_fields,
10602        clippy::style
10603    )]
10604    const _: () = {
10605        use alloy::sol_types as alloy_sol_types;
10606        {
10607            #[doc(hidden)]
10608            #[allow(dead_code)]
10609            type UnderlyingSolTuple<'a> = (
10610                LightClient::LightClientState,
10611                LightClient::StakeTableState,
10612                alloy::sol_types::sol_data::Uint<32>,
10613                alloy::sol_types::sol_data::Address,
10614            );
10615            #[doc(hidden)]
10616            type UnderlyingRustTuple<'a> = (
10617                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10618                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10619                u32,
10620                alloy::sol_types::private::Address,
10621            );
10622            #[cfg(test)]
10623            #[allow(dead_code, unreachable_patterns)]
10624            fn _type_assertion(
10625                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10626            ) {
10627                match _t {
10628                    alloy_sol_types::private::AssertTypeEq::<
10629                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10630                    >(_) => {}
10631                }
10632            }
10633            #[automatically_derived]
10634            #[doc(hidden)]
10635            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10636                fn from(value: initializeCall) -> Self {
10637                    (
10638                        value._genesis,
10639                        value._genesisStakeTableState,
10640                        value._stateHistoryRetentionPeriod,
10641                        value.owner,
10642                    )
10643                }
10644            }
10645            #[automatically_derived]
10646            #[doc(hidden)]
10647            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10648                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10649                    Self {
10650                        _genesis: tuple.0,
10651                        _genesisStakeTableState: tuple.1,
10652                        _stateHistoryRetentionPeriod: tuple.2,
10653                        owner: tuple.3,
10654                    }
10655                }
10656            }
10657        }
10658        {
10659            #[doc(hidden)]
10660            #[allow(dead_code)]
10661            type UnderlyingSolTuple<'a> = ();
10662            #[doc(hidden)]
10663            type UnderlyingRustTuple<'a> = ();
10664            #[cfg(test)]
10665            #[allow(dead_code, unreachable_patterns)]
10666            fn _type_assertion(
10667                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10668            ) {
10669                match _t {
10670                    alloy_sol_types::private::AssertTypeEq::<
10671                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10672                    >(_) => {}
10673                }
10674            }
10675            #[automatically_derived]
10676            #[doc(hidden)]
10677            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10678                fn from(value: initializeReturn) -> Self {
10679                    ()
10680                }
10681            }
10682            #[automatically_derived]
10683            #[doc(hidden)]
10684            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10685                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10686                    Self {}
10687                }
10688            }
10689        }
10690        impl initializeReturn {
10691            fn _tokenize(
10692                &self,
10693            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10694                ()
10695            }
10696        }
10697        #[automatically_derived]
10698        impl alloy_sol_types::SolCall for initializeCall {
10699            type Parameters<'a> = (
10700                LightClient::LightClientState,
10701                LightClient::StakeTableState,
10702                alloy::sol_types::sol_data::Uint<32>,
10703                alloy::sol_types::sol_data::Address,
10704            );
10705            type Token<'a> = <Self::Parameters<
10706                'a,
10707            > as alloy_sol_types::SolType>::Token<'a>;
10708            type Return = initializeReturn;
10709            type ReturnTuple<'a> = ();
10710            type ReturnToken<'a> = <Self::ReturnTuple<
10711                'a,
10712            > as alloy_sol_types::SolType>::Token<'a>;
10713            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10714            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10715            #[inline]
10716            fn new<'a>(
10717                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10718            ) -> Self {
10719                tuple.into()
10720            }
10721            #[inline]
10722            fn tokenize(&self) -> Self::Token<'_> {
10723                (
10724                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10725                        &self._genesis,
10726                    ),
10727                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10728                        &self._genesisStakeTableState,
10729                    ),
10730                    <alloy::sol_types::sol_data::Uint<
10731                        32,
10732                    > as alloy_sol_types::SolType>::tokenize(
10733                        &self._stateHistoryRetentionPeriod,
10734                    ),
10735                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10736                        &self.owner,
10737                    ),
10738                )
10739            }
10740            #[inline]
10741            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10742                initializeReturn::_tokenize(ret)
10743            }
10744            #[inline]
10745            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10746                <Self::ReturnTuple<
10747                    '_,
10748                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10749                    .map(Into::into)
10750            }
10751            #[inline]
10752            fn abi_decode_returns_with_config(
10753                data: &[u8],
10754                config: alloy_sol_types::abi::AbiDecoderConfig,
10755            ) -> alloy_sol_types::Result<Self::Return> {
10756                <Self::ReturnTuple<
10757                    '_,
10758                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10759                        data,
10760                        config,
10761                    )
10762                    .map(Into::into)
10763            }
10764            #[inline]
10765            fn abi_decode_returns_validate(
10766                data: &[u8],
10767            ) -> alloy_sol_types::Result<Self::Return> {
10768                Self::abi_decode_returns_with_config(
10769                    data,
10770                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10771                )
10772            }
10773        }
10774    };
10775    #[derive(serde::Serialize, serde::Deserialize)]
10776    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10777    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10778```solidity
10779function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10780```*/
10781    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10782    #[derive(Clone)]
10783    pub struct initializeV2Call {
10784        #[allow(missing_docs)]
10785        pub _blocksPerEpoch: u64,
10786        #[allow(missing_docs)]
10787        pub _epochStartBlock: u64,
10788    }
10789    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10790    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10791    #[derive(Clone)]
10792    pub struct initializeV2Return {}
10793    #[allow(
10794        non_camel_case_types,
10795        non_snake_case,
10796        clippy::pub_underscore_fields,
10797        clippy::style
10798    )]
10799    const _: () = {
10800        use alloy::sol_types as alloy_sol_types;
10801        {
10802            #[doc(hidden)]
10803            #[allow(dead_code)]
10804            type UnderlyingSolTuple<'a> = (
10805                alloy::sol_types::sol_data::Uint<64>,
10806                alloy::sol_types::sol_data::Uint<64>,
10807            );
10808            #[doc(hidden)]
10809            type UnderlyingRustTuple<'a> = (u64, u64);
10810            #[cfg(test)]
10811            #[allow(dead_code, unreachable_patterns)]
10812            fn _type_assertion(
10813                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10814            ) {
10815                match _t {
10816                    alloy_sol_types::private::AssertTypeEq::<
10817                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10818                    >(_) => {}
10819                }
10820            }
10821            #[automatically_derived]
10822            #[doc(hidden)]
10823            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10824                fn from(value: initializeV2Call) -> Self {
10825                    (value._blocksPerEpoch, value._epochStartBlock)
10826                }
10827            }
10828            #[automatically_derived]
10829            #[doc(hidden)]
10830            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10832                    Self {
10833                        _blocksPerEpoch: tuple.0,
10834                        _epochStartBlock: tuple.1,
10835                    }
10836                }
10837            }
10838        }
10839        {
10840            #[doc(hidden)]
10841            #[allow(dead_code)]
10842            type UnderlyingSolTuple<'a> = ();
10843            #[doc(hidden)]
10844            type UnderlyingRustTuple<'a> = ();
10845            #[cfg(test)]
10846            #[allow(dead_code, unreachable_patterns)]
10847            fn _type_assertion(
10848                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10849            ) {
10850                match _t {
10851                    alloy_sol_types::private::AssertTypeEq::<
10852                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10853                    >(_) => {}
10854                }
10855            }
10856            #[automatically_derived]
10857            #[doc(hidden)]
10858            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10859                fn from(value: initializeV2Return) -> Self {
10860                    ()
10861                }
10862            }
10863            #[automatically_derived]
10864            #[doc(hidden)]
10865            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10866                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10867                    Self {}
10868                }
10869            }
10870        }
10871        impl initializeV2Return {
10872            fn _tokenize(
10873                &self,
10874            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10875                ()
10876            }
10877        }
10878        #[automatically_derived]
10879        impl alloy_sol_types::SolCall for initializeV2Call {
10880            type Parameters<'a> = (
10881                alloy::sol_types::sol_data::Uint<64>,
10882                alloy::sol_types::sol_data::Uint<64>,
10883            );
10884            type Token<'a> = <Self::Parameters<
10885                'a,
10886            > as alloy_sol_types::SolType>::Token<'a>;
10887            type Return = initializeV2Return;
10888            type ReturnTuple<'a> = ();
10889            type ReturnToken<'a> = <Self::ReturnTuple<
10890                'a,
10891            > as alloy_sol_types::SolType>::Token<'a>;
10892            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10893            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10894            #[inline]
10895            fn new<'a>(
10896                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10897            ) -> Self {
10898                tuple.into()
10899            }
10900            #[inline]
10901            fn tokenize(&self) -> Self::Token<'_> {
10902                (
10903                    <alloy::sol_types::sol_data::Uint<
10904                        64,
10905                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10906                    <alloy::sol_types::sol_data::Uint<
10907                        64,
10908                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10909                )
10910            }
10911            #[inline]
10912            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10913                initializeV2Return::_tokenize(ret)
10914            }
10915            #[inline]
10916            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10917                <Self::ReturnTuple<
10918                    '_,
10919                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10920                    .map(Into::into)
10921            }
10922            #[inline]
10923            fn abi_decode_returns_with_config(
10924                data: &[u8],
10925                config: alloy_sol_types::abi::AbiDecoderConfig,
10926            ) -> alloy_sol_types::Result<Self::Return> {
10927                <Self::ReturnTuple<
10928                    '_,
10929                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
10930                        data,
10931                        config,
10932                    )
10933                    .map(Into::into)
10934            }
10935            #[inline]
10936            fn abi_decode_returns_validate(
10937                data: &[u8],
10938            ) -> alloy_sol_types::Result<Self::Return> {
10939                Self::abi_decode_returns_with_config(
10940                    data,
10941                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
10942                )
10943            }
10944        }
10945    };
10946    #[derive(serde::Serialize, serde::Deserialize)]
10947    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10948    /**Function with signature `initializeV3()` and selector `0x38e454b1`.
10949```solidity
10950function initializeV3() external;
10951```*/
10952    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10953    #[derive(Clone)]
10954    pub struct initializeV3Call;
10955    ///Container type for the return parameters of the [`initializeV3()`](initializeV3Call) function.
10956    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10957    #[derive(Clone)]
10958    pub struct initializeV3Return {}
10959    #[allow(
10960        non_camel_case_types,
10961        non_snake_case,
10962        clippy::pub_underscore_fields,
10963        clippy::style
10964    )]
10965    const _: () = {
10966        use alloy::sol_types as alloy_sol_types;
10967        {
10968            #[doc(hidden)]
10969            #[allow(dead_code)]
10970            type UnderlyingSolTuple<'a> = ();
10971            #[doc(hidden)]
10972            type UnderlyingRustTuple<'a> = ();
10973            #[cfg(test)]
10974            #[allow(dead_code, unreachable_patterns)]
10975            fn _type_assertion(
10976                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10977            ) {
10978                match _t {
10979                    alloy_sol_types::private::AssertTypeEq::<
10980                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10981                    >(_) => {}
10982                }
10983            }
10984            #[automatically_derived]
10985            #[doc(hidden)]
10986            impl ::core::convert::From<initializeV3Call> for UnderlyingRustTuple<'_> {
10987                fn from(value: initializeV3Call) -> Self {
10988                    ()
10989                }
10990            }
10991            #[automatically_derived]
10992            #[doc(hidden)]
10993            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Call {
10994                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10995                    Self
10996                }
10997            }
10998        }
10999        {
11000            #[doc(hidden)]
11001            #[allow(dead_code)]
11002            type UnderlyingSolTuple<'a> = ();
11003            #[doc(hidden)]
11004            type UnderlyingRustTuple<'a> = ();
11005            #[cfg(test)]
11006            #[allow(dead_code, unreachable_patterns)]
11007            fn _type_assertion(
11008                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11009            ) {
11010                match _t {
11011                    alloy_sol_types::private::AssertTypeEq::<
11012                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11013                    >(_) => {}
11014                }
11015            }
11016            #[automatically_derived]
11017            #[doc(hidden)]
11018            impl ::core::convert::From<initializeV3Return> for UnderlyingRustTuple<'_> {
11019                fn from(value: initializeV3Return) -> Self {
11020                    ()
11021                }
11022            }
11023            #[automatically_derived]
11024            #[doc(hidden)]
11025            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV3Return {
11026                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11027                    Self {}
11028                }
11029            }
11030        }
11031        impl initializeV3Return {
11032            fn _tokenize(
11033                &self,
11034            ) -> <initializeV3Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11035                ()
11036            }
11037        }
11038        #[automatically_derived]
11039        impl alloy_sol_types::SolCall for initializeV3Call {
11040            type Parameters<'a> = ();
11041            type Token<'a> = <Self::Parameters<
11042                'a,
11043            > as alloy_sol_types::SolType>::Token<'a>;
11044            type Return = initializeV3Return;
11045            type ReturnTuple<'a> = ();
11046            type ReturnToken<'a> = <Self::ReturnTuple<
11047                'a,
11048            > as alloy_sol_types::SolType>::Token<'a>;
11049            const SIGNATURE: &'static str = "initializeV3()";
11050            const SELECTOR: [u8; 4] = [56u8, 228u8, 84u8, 177u8];
11051            #[inline]
11052            fn new<'a>(
11053                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11054            ) -> Self {
11055                tuple.into()
11056            }
11057            #[inline]
11058            fn tokenize(&self) -> Self::Token<'_> {
11059                ()
11060            }
11061            #[inline]
11062            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11063                initializeV3Return::_tokenize(ret)
11064            }
11065            #[inline]
11066            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11067                <Self::ReturnTuple<
11068                    '_,
11069                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11070                    .map(Into::into)
11071            }
11072            #[inline]
11073            fn abi_decode_returns_with_config(
11074                data: &[u8],
11075                config: alloy_sol_types::abi::AbiDecoderConfig,
11076            ) -> alloy_sol_types::Result<Self::Return> {
11077                <Self::ReturnTuple<
11078                    '_,
11079                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11080                        data,
11081                        config,
11082                    )
11083                    .map(Into::into)
11084            }
11085            #[inline]
11086            fn abi_decode_returns_validate(
11087                data: &[u8],
11088            ) -> alloy_sol_types::Result<Self::Return> {
11089                Self::abi_decode_returns_with_config(
11090                    data,
11091                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11092                )
11093            }
11094        }
11095    };
11096    #[derive(serde::Serialize, serde::Deserialize)]
11097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11098    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
11099```solidity
11100function isEpochRoot(uint64 blockHeight) external view returns (bool);
11101```*/
11102    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11103    #[derive(Clone)]
11104    pub struct isEpochRootCall {
11105        #[allow(missing_docs)]
11106        pub blockHeight: u64,
11107    }
11108    #[derive(serde::Serialize, serde::Deserialize)]
11109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11110    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
11111    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11112    #[derive(Clone)]
11113    pub struct isEpochRootReturn {
11114        #[allow(missing_docs)]
11115        pub _0: bool,
11116    }
11117    #[allow(
11118        non_camel_case_types,
11119        non_snake_case,
11120        clippy::pub_underscore_fields,
11121        clippy::style
11122    )]
11123    const _: () = {
11124        use alloy::sol_types as alloy_sol_types;
11125        {
11126            #[doc(hidden)]
11127            #[allow(dead_code)]
11128            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11129            #[doc(hidden)]
11130            type UnderlyingRustTuple<'a> = (u64,);
11131            #[cfg(test)]
11132            #[allow(dead_code, unreachable_patterns)]
11133            fn _type_assertion(
11134                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11135            ) {
11136                match _t {
11137                    alloy_sol_types::private::AssertTypeEq::<
11138                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11139                    >(_) => {}
11140                }
11141            }
11142            #[automatically_derived]
11143            #[doc(hidden)]
11144            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
11145                fn from(value: isEpochRootCall) -> Self {
11146                    (value.blockHeight,)
11147                }
11148            }
11149            #[automatically_derived]
11150            #[doc(hidden)]
11151            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
11152                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11153                    Self { blockHeight: tuple.0 }
11154                }
11155            }
11156        }
11157        {
11158            #[doc(hidden)]
11159            #[allow(dead_code)]
11160            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11161            #[doc(hidden)]
11162            type UnderlyingRustTuple<'a> = (bool,);
11163            #[cfg(test)]
11164            #[allow(dead_code, unreachable_patterns)]
11165            fn _type_assertion(
11166                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11167            ) {
11168                match _t {
11169                    alloy_sol_types::private::AssertTypeEq::<
11170                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11171                    >(_) => {}
11172                }
11173            }
11174            #[automatically_derived]
11175            #[doc(hidden)]
11176            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
11177                fn from(value: isEpochRootReturn) -> Self {
11178                    (value._0,)
11179                }
11180            }
11181            #[automatically_derived]
11182            #[doc(hidden)]
11183            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
11184                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11185                    Self { _0: tuple.0 }
11186                }
11187            }
11188        }
11189        #[automatically_derived]
11190        impl alloy_sol_types::SolCall for isEpochRootCall {
11191            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11192            type Token<'a> = <Self::Parameters<
11193                'a,
11194            > as alloy_sol_types::SolType>::Token<'a>;
11195            type Return = bool;
11196            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11197            type ReturnToken<'a> = <Self::ReturnTuple<
11198                'a,
11199            > as alloy_sol_types::SolType>::Token<'a>;
11200            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
11201            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
11202            #[inline]
11203            fn new<'a>(
11204                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11205            ) -> Self {
11206                tuple.into()
11207            }
11208            #[inline]
11209            fn tokenize(&self) -> Self::Token<'_> {
11210                (
11211                    <alloy::sol_types::sol_data::Uint<
11212                        64,
11213                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11214                )
11215            }
11216            #[inline]
11217            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11218                (
11219                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11220                        ret,
11221                    ),
11222                )
11223            }
11224            #[inline]
11225            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11226                <Self::ReturnTuple<
11227                    '_,
11228                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11229                    .map(|r| {
11230                        let r: isEpochRootReturn = r.into();
11231                        r._0
11232                    })
11233            }
11234            #[inline]
11235            fn abi_decode_returns_with_config(
11236                data: &[u8],
11237                config: alloy_sol_types::abi::AbiDecoderConfig,
11238            ) -> alloy_sol_types::Result<Self::Return> {
11239                <Self::ReturnTuple<
11240                    '_,
11241                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11242                        data,
11243                        config,
11244                    )
11245                    .map(|r| {
11246                        let r: isEpochRootReturn = r.into();
11247                        r._0
11248                    })
11249            }
11250            #[inline]
11251            fn abi_decode_returns_validate(
11252                data: &[u8],
11253            ) -> alloy_sol_types::Result<Self::Return> {
11254                Self::abi_decode_returns_with_config(
11255                    data,
11256                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11257                )
11258            }
11259        }
11260    };
11261    #[derive(serde::Serialize, serde::Deserialize)]
11262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11263    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
11264```solidity
11265function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
11266```*/
11267    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11268    #[derive(Clone)]
11269    pub struct isGtEpochRootCall {
11270        #[allow(missing_docs)]
11271        pub blockHeight: u64,
11272    }
11273    #[derive(serde::Serialize, serde::Deserialize)]
11274    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11275    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
11276    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11277    #[derive(Clone)]
11278    pub struct isGtEpochRootReturn {
11279        #[allow(missing_docs)]
11280        pub _0: bool,
11281    }
11282    #[allow(
11283        non_camel_case_types,
11284        non_snake_case,
11285        clippy::pub_underscore_fields,
11286        clippy::style
11287    )]
11288    const _: () = {
11289        use alloy::sol_types as alloy_sol_types;
11290        {
11291            #[doc(hidden)]
11292            #[allow(dead_code)]
11293            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11294            #[doc(hidden)]
11295            type UnderlyingRustTuple<'a> = (u64,);
11296            #[cfg(test)]
11297            #[allow(dead_code, unreachable_patterns)]
11298            fn _type_assertion(
11299                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11300            ) {
11301                match _t {
11302                    alloy_sol_types::private::AssertTypeEq::<
11303                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11304                    >(_) => {}
11305                }
11306            }
11307            #[automatically_derived]
11308            #[doc(hidden)]
11309            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
11310                fn from(value: isGtEpochRootCall) -> Self {
11311                    (value.blockHeight,)
11312                }
11313            }
11314            #[automatically_derived]
11315            #[doc(hidden)]
11316            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
11317                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11318                    Self { blockHeight: tuple.0 }
11319                }
11320            }
11321        }
11322        {
11323            #[doc(hidden)]
11324            #[allow(dead_code)]
11325            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11326            #[doc(hidden)]
11327            type UnderlyingRustTuple<'a> = (bool,);
11328            #[cfg(test)]
11329            #[allow(dead_code, unreachable_patterns)]
11330            fn _type_assertion(
11331                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11332            ) {
11333                match _t {
11334                    alloy_sol_types::private::AssertTypeEq::<
11335                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11336                    >(_) => {}
11337                }
11338            }
11339            #[automatically_derived]
11340            #[doc(hidden)]
11341            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
11342                fn from(value: isGtEpochRootReturn) -> Self {
11343                    (value._0,)
11344                }
11345            }
11346            #[automatically_derived]
11347            #[doc(hidden)]
11348            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
11349                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11350                    Self { _0: tuple.0 }
11351                }
11352            }
11353        }
11354        #[automatically_derived]
11355        impl alloy_sol_types::SolCall for isGtEpochRootCall {
11356            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11357            type Token<'a> = <Self::Parameters<
11358                'a,
11359            > as alloy_sol_types::SolType>::Token<'a>;
11360            type Return = bool;
11361            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11362            type ReturnToken<'a> = <Self::ReturnTuple<
11363                'a,
11364            > as alloy_sol_types::SolType>::Token<'a>;
11365            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11366            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11367            #[inline]
11368            fn new<'a>(
11369                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11370            ) -> Self {
11371                tuple.into()
11372            }
11373            #[inline]
11374            fn tokenize(&self) -> Self::Token<'_> {
11375                (
11376                    <alloy::sol_types::sol_data::Uint<
11377                        64,
11378                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11379                )
11380            }
11381            #[inline]
11382            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11383                (
11384                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11385                        ret,
11386                    ),
11387                )
11388            }
11389            #[inline]
11390            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11391                <Self::ReturnTuple<
11392                    '_,
11393                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11394                    .map(|r| {
11395                        let r: isGtEpochRootReturn = r.into();
11396                        r._0
11397                    })
11398            }
11399            #[inline]
11400            fn abi_decode_returns_with_config(
11401                data: &[u8],
11402                config: alloy_sol_types::abi::AbiDecoderConfig,
11403            ) -> alloy_sol_types::Result<Self::Return> {
11404                <Self::ReturnTuple<
11405                    '_,
11406                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11407                        data,
11408                        config,
11409                    )
11410                    .map(|r| {
11411                        let r: isGtEpochRootReturn = r.into();
11412                        r._0
11413                    })
11414            }
11415            #[inline]
11416            fn abi_decode_returns_validate(
11417                data: &[u8],
11418            ) -> alloy_sol_types::Result<Self::Return> {
11419                Self::abi_decode_returns_with_config(
11420                    data,
11421                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11422                )
11423            }
11424        }
11425    };
11426    #[derive(serde::Serialize, serde::Deserialize)]
11427    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11428    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11429```solidity
11430function isPermissionedProverEnabled() external view returns (bool);
11431```*/
11432    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11433    #[derive(Clone)]
11434    pub struct isPermissionedProverEnabledCall;
11435    #[derive(serde::Serialize, serde::Deserialize)]
11436    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11437    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11438    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11439    #[derive(Clone)]
11440    pub struct isPermissionedProverEnabledReturn {
11441        #[allow(missing_docs)]
11442        pub _0: bool,
11443    }
11444    #[allow(
11445        non_camel_case_types,
11446        non_snake_case,
11447        clippy::pub_underscore_fields,
11448        clippy::style
11449    )]
11450    const _: () = {
11451        use alloy::sol_types as alloy_sol_types;
11452        {
11453            #[doc(hidden)]
11454            #[allow(dead_code)]
11455            type UnderlyingSolTuple<'a> = ();
11456            #[doc(hidden)]
11457            type UnderlyingRustTuple<'a> = ();
11458            #[cfg(test)]
11459            #[allow(dead_code, unreachable_patterns)]
11460            fn _type_assertion(
11461                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11462            ) {
11463                match _t {
11464                    alloy_sol_types::private::AssertTypeEq::<
11465                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11466                    >(_) => {}
11467                }
11468            }
11469            #[automatically_derived]
11470            #[doc(hidden)]
11471            impl ::core::convert::From<isPermissionedProverEnabledCall>
11472            for UnderlyingRustTuple<'_> {
11473                fn from(value: isPermissionedProverEnabledCall) -> Self {
11474                    ()
11475                }
11476            }
11477            #[automatically_derived]
11478            #[doc(hidden)]
11479            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11480            for isPermissionedProverEnabledCall {
11481                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11482                    Self
11483                }
11484            }
11485        }
11486        {
11487            #[doc(hidden)]
11488            #[allow(dead_code)]
11489            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11490            #[doc(hidden)]
11491            type UnderlyingRustTuple<'a> = (bool,);
11492            #[cfg(test)]
11493            #[allow(dead_code, unreachable_patterns)]
11494            fn _type_assertion(
11495                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11496            ) {
11497                match _t {
11498                    alloy_sol_types::private::AssertTypeEq::<
11499                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11500                    >(_) => {}
11501                }
11502            }
11503            #[automatically_derived]
11504            #[doc(hidden)]
11505            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11506            for UnderlyingRustTuple<'_> {
11507                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11508                    (value._0,)
11509                }
11510            }
11511            #[automatically_derived]
11512            #[doc(hidden)]
11513            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11514            for isPermissionedProverEnabledReturn {
11515                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11516                    Self { _0: tuple.0 }
11517                }
11518            }
11519        }
11520        #[automatically_derived]
11521        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11522            type Parameters<'a> = ();
11523            type Token<'a> = <Self::Parameters<
11524                'a,
11525            > as alloy_sol_types::SolType>::Token<'a>;
11526            type Return = bool;
11527            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11528            type ReturnToken<'a> = <Self::ReturnTuple<
11529                'a,
11530            > as alloy_sol_types::SolType>::Token<'a>;
11531            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11532            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11533            #[inline]
11534            fn new<'a>(
11535                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11536            ) -> Self {
11537                tuple.into()
11538            }
11539            #[inline]
11540            fn tokenize(&self) -> Self::Token<'_> {
11541                ()
11542            }
11543            #[inline]
11544            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11545                (
11546                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11547                        ret,
11548                    ),
11549                )
11550            }
11551            #[inline]
11552            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11553                <Self::ReturnTuple<
11554                    '_,
11555                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11556                    .map(|r| {
11557                        let r: isPermissionedProverEnabledReturn = r.into();
11558                        r._0
11559                    })
11560            }
11561            #[inline]
11562            fn abi_decode_returns_with_config(
11563                data: &[u8],
11564                config: alloy_sol_types::abi::AbiDecoderConfig,
11565            ) -> alloy_sol_types::Result<Self::Return> {
11566                <Self::ReturnTuple<
11567                    '_,
11568                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11569                        data,
11570                        config,
11571                    )
11572                    .map(|r| {
11573                        let r: isPermissionedProverEnabledReturn = r.into();
11574                        r._0
11575                    })
11576            }
11577            #[inline]
11578            fn abi_decode_returns_validate(
11579                data: &[u8],
11580            ) -> alloy_sol_types::Result<Self::Return> {
11581                Self::abi_decode_returns_with_config(
11582                    data,
11583                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11584                )
11585            }
11586        }
11587    };
11588    #[derive(serde::Serialize, serde::Deserialize)]
11589    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11590    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11591```solidity
11592function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
11593```*/
11594    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11595    #[derive(Clone)]
11596    pub struct lagOverEscapeHatchThresholdCall {
11597        #[allow(missing_docs)]
11598        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11599        #[allow(missing_docs)]
11600        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
11601    }
11602    #[derive(serde::Serialize, serde::Deserialize)]
11603    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11604    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11606    #[derive(Clone)]
11607    pub struct lagOverEscapeHatchThresholdReturn {
11608        #[allow(missing_docs)]
11609        pub _0: bool,
11610    }
11611    #[allow(
11612        non_camel_case_types,
11613        non_snake_case,
11614        clippy::pub_underscore_fields,
11615        clippy::style
11616    )]
11617    const _: () = {
11618        use alloy::sol_types as alloy_sol_types;
11619        {
11620            #[doc(hidden)]
11621            #[allow(dead_code)]
11622            type UnderlyingSolTuple<'a> = (
11623                alloy::sol_types::sol_data::Uint<256>,
11624                alloy::sol_types::sol_data::Uint<256>,
11625            );
11626            #[doc(hidden)]
11627            type UnderlyingRustTuple<'a> = (
11628                alloy::sol_types::private::primitives::aliases::U256,
11629                alloy::sol_types::private::primitives::aliases::U256,
11630            );
11631            #[cfg(test)]
11632            #[allow(dead_code, unreachable_patterns)]
11633            fn _type_assertion(
11634                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11635            ) {
11636                match _t {
11637                    alloy_sol_types::private::AssertTypeEq::<
11638                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11639                    >(_) => {}
11640                }
11641            }
11642            #[automatically_derived]
11643            #[doc(hidden)]
11644            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11645            for UnderlyingRustTuple<'_> {
11646                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11647                    (value.blockNumber, value.blockThreshold)
11648                }
11649            }
11650            #[automatically_derived]
11651            #[doc(hidden)]
11652            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11653            for lagOverEscapeHatchThresholdCall {
11654                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11655                    Self {
11656                        blockNumber: tuple.0,
11657                        blockThreshold: tuple.1,
11658                    }
11659                }
11660            }
11661        }
11662        {
11663            #[doc(hidden)]
11664            #[allow(dead_code)]
11665            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11666            #[doc(hidden)]
11667            type UnderlyingRustTuple<'a> = (bool,);
11668            #[cfg(test)]
11669            #[allow(dead_code, unreachable_patterns)]
11670            fn _type_assertion(
11671                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11672            ) {
11673                match _t {
11674                    alloy_sol_types::private::AssertTypeEq::<
11675                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11676                    >(_) => {}
11677                }
11678            }
11679            #[automatically_derived]
11680            #[doc(hidden)]
11681            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11682            for UnderlyingRustTuple<'_> {
11683                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11684                    (value._0,)
11685                }
11686            }
11687            #[automatically_derived]
11688            #[doc(hidden)]
11689            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11690            for lagOverEscapeHatchThresholdReturn {
11691                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11692                    Self { _0: tuple.0 }
11693                }
11694            }
11695        }
11696        #[automatically_derived]
11697        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11698            type Parameters<'a> = (
11699                alloy::sol_types::sol_data::Uint<256>,
11700                alloy::sol_types::sol_data::Uint<256>,
11701            );
11702            type Token<'a> = <Self::Parameters<
11703                'a,
11704            > as alloy_sol_types::SolType>::Token<'a>;
11705            type Return = bool;
11706            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11707            type ReturnToken<'a> = <Self::ReturnTuple<
11708                'a,
11709            > as alloy_sol_types::SolType>::Token<'a>;
11710            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11711            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11712            #[inline]
11713            fn new<'a>(
11714                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11715            ) -> Self {
11716                tuple.into()
11717            }
11718            #[inline]
11719            fn tokenize(&self) -> Self::Token<'_> {
11720                (
11721                    <alloy::sol_types::sol_data::Uint<
11722                        256,
11723                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11724                    <alloy::sol_types::sol_data::Uint<
11725                        256,
11726                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
11727                )
11728            }
11729            #[inline]
11730            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11731                (
11732                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11733                        ret,
11734                    ),
11735                )
11736            }
11737            #[inline]
11738            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11739                <Self::ReturnTuple<
11740                    '_,
11741                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11742                    .map(|r| {
11743                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11744                        r._0
11745                    })
11746            }
11747            #[inline]
11748            fn abi_decode_returns_with_config(
11749                data: &[u8],
11750                config: alloy_sol_types::abi::AbiDecoderConfig,
11751            ) -> alloy_sol_types::Result<Self::Return> {
11752                <Self::ReturnTuple<
11753                    '_,
11754                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11755                        data,
11756                        config,
11757                    )
11758                    .map(|r| {
11759                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11760                        r._0
11761                    })
11762            }
11763            #[inline]
11764            fn abi_decode_returns_validate(
11765                data: &[u8],
11766            ) -> alloy_sol_types::Result<Self::Return> {
11767                Self::abi_decode_returns_with_config(
11768                    data,
11769                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11770                )
11771            }
11772        }
11773    };
11774    #[derive(serde::Serialize, serde::Deserialize)]
11775    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11776    /**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`.
11777```solidity
11778function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
11779```*/
11780    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11781    #[derive(Clone)]
11782    pub struct newFinalizedState_0Call {
11783        #[allow(missing_docs)]
11784        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11785        #[allow(missing_docs)]
11786        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11787    }
11788    ///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.
11789    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11790    #[derive(Clone)]
11791    pub struct newFinalizedState_0Return {}
11792    #[allow(
11793        non_camel_case_types,
11794        non_snake_case,
11795        clippy::pub_underscore_fields,
11796        clippy::style
11797    )]
11798    const _: () = {
11799        use alloy::sol_types as alloy_sol_types;
11800        {
11801            #[doc(hidden)]
11802            #[allow(dead_code)]
11803            type UnderlyingSolTuple<'a> = (
11804                LightClient::LightClientState,
11805                IPlonkVerifier::PlonkProof,
11806            );
11807            #[doc(hidden)]
11808            type UnderlyingRustTuple<'a> = (
11809                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11810                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11811            );
11812            #[cfg(test)]
11813            #[allow(dead_code, unreachable_patterns)]
11814            fn _type_assertion(
11815                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11816            ) {
11817                match _t {
11818                    alloy_sol_types::private::AssertTypeEq::<
11819                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11820                    >(_) => {}
11821                }
11822            }
11823            #[automatically_derived]
11824            #[doc(hidden)]
11825            impl ::core::convert::From<newFinalizedState_0Call>
11826            for UnderlyingRustTuple<'_> {
11827                fn from(value: newFinalizedState_0Call) -> Self {
11828                    (value._0, value._1)
11829                }
11830            }
11831            #[automatically_derived]
11832            #[doc(hidden)]
11833            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11834            for newFinalizedState_0Call {
11835                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11836                    Self { _0: tuple.0, _1: tuple.1 }
11837                }
11838            }
11839        }
11840        {
11841            #[doc(hidden)]
11842            #[allow(dead_code)]
11843            type UnderlyingSolTuple<'a> = ();
11844            #[doc(hidden)]
11845            type UnderlyingRustTuple<'a> = ();
11846            #[cfg(test)]
11847            #[allow(dead_code, unreachable_patterns)]
11848            fn _type_assertion(
11849                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11850            ) {
11851                match _t {
11852                    alloy_sol_types::private::AssertTypeEq::<
11853                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11854                    >(_) => {}
11855                }
11856            }
11857            #[automatically_derived]
11858            #[doc(hidden)]
11859            impl ::core::convert::From<newFinalizedState_0Return>
11860            for UnderlyingRustTuple<'_> {
11861                fn from(value: newFinalizedState_0Return) -> Self {
11862                    ()
11863                }
11864            }
11865            #[automatically_derived]
11866            #[doc(hidden)]
11867            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11868            for newFinalizedState_0Return {
11869                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11870                    Self {}
11871                }
11872            }
11873        }
11874        impl newFinalizedState_0Return {
11875            fn _tokenize(
11876                &self,
11877            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11878                ()
11879            }
11880        }
11881        #[automatically_derived]
11882        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
11883            type Parameters<'a> = (
11884                LightClient::LightClientState,
11885                IPlonkVerifier::PlonkProof,
11886            );
11887            type Token<'a> = <Self::Parameters<
11888                'a,
11889            > as alloy_sol_types::SolType>::Token<'a>;
11890            type Return = newFinalizedState_0Return;
11891            type ReturnTuple<'a> = ();
11892            type ReturnToken<'a> = <Self::ReturnTuple<
11893                'a,
11894            > as alloy_sol_types::SolType>::Token<'a>;
11895            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))";
11896            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
11897            #[inline]
11898            fn new<'a>(
11899                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11900            ) -> Self {
11901                tuple.into()
11902            }
11903            #[inline]
11904            fn tokenize(&self) -> Self::Token<'_> {
11905                (
11906                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11907                        &self._0,
11908                    ),
11909                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11910                        &self._1,
11911                    ),
11912                )
11913            }
11914            #[inline]
11915            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11916                newFinalizedState_0Return::_tokenize(ret)
11917            }
11918            #[inline]
11919            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11920                <Self::ReturnTuple<
11921                    '_,
11922                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11923                    .map(Into::into)
11924            }
11925            #[inline]
11926            fn abi_decode_returns_with_config(
11927                data: &[u8],
11928                config: alloy_sol_types::abi::AbiDecoderConfig,
11929            ) -> alloy_sol_types::Result<Self::Return> {
11930                <Self::ReturnTuple<
11931                    '_,
11932                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
11933                        data,
11934                        config,
11935                    )
11936                    .map(Into::into)
11937            }
11938            #[inline]
11939            fn abi_decode_returns_validate(
11940                data: &[u8],
11941            ) -> alloy_sol_types::Result<Self::Return> {
11942                Self::abi_decode_returns_with_config(
11943                    data,
11944                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
11945                )
11946            }
11947        }
11948    };
11949    #[derive(serde::Serialize, serde::Deserialize)]
11950    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11951    /**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`.
11952```solidity
11953function newFinalizedState(LightClient.LightClientState memory, LightClient.StakeTableState memory, IPlonkVerifier.PlonkProof memory) external pure;
11954```*/
11955    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11956    #[derive(Clone)]
11957    pub struct newFinalizedState_1Call {
11958        #[allow(missing_docs)]
11959        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11960        #[allow(missing_docs)]
11961        pub _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11962        #[allow(missing_docs)]
11963        pub _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11964    }
11965    ///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.
11966    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11967    #[derive(Clone)]
11968    pub struct newFinalizedState_1Return {}
11969    #[allow(
11970        non_camel_case_types,
11971        non_snake_case,
11972        clippy::pub_underscore_fields,
11973        clippy::style
11974    )]
11975    const _: () = {
11976        use alloy::sol_types as alloy_sol_types;
11977        {
11978            #[doc(hidden)]
11979            #[allow(dead_code)]
11980            type UnderlyingSolTuple<'a> = (
11981                LightClient::LightClientState,
11982                LightClient::StakeTableState,
11983                IPlonkVerifier::PlonkProof,
11984            );
11985            #[doc(hidden)]
11986            type UnderlyingRustTuple<'a> = (
11987                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11988                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11989                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11990            );
11991            #[cfg(test)]
11992            #[allow(dead_code, unreachable_patterns)]
11993            fn _type_assertion(
11994                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11995            ) {
11996                match _t {
11997                    alloy_sol_types::private::AssertTypeEq::<
11998                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11999                    >(_) => {}
12000                }
12001            }
12002            #[automatically_derived]
12003            #[doc(hidden)]
12004            impl ::core::convert::From<newFinalizedState_1Call>
12005            for UnderlyingRustTuple<'_> {
12006                fn from(value: newFinalizedState_1Call) -> Self {
12007                    (value._0, value._1, value._2)
12008                }
12009            }
12010            #[automatically_derived]
12011            #[doc(hidden)]
12012            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12013            for newFinalizedState_1Call {
12014                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12015                    Self {
12016                        _0: tuple.0,
12017                        _1: tuple.1,
12018                        _2: tuple.2,
12019                    }
12020                }
12021            }
12022        }
12023        {
12024            #[doc(hidden)]
12025            #[allow(dead_code)]
12026            type UnderlyingSolTuple<'a> = ();
12027            #[doc(hidden)]
12028            type UnderlyingRustTuple<'a> = ();
12029            #[cfg(test)]
12030            #[allow(dead_code, unreachable_patterns)]
12031            fn _type_assertion(
12032                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12033            ) {
12034                match _t {
12035                    alloy_sol_types::private::AssertTypeEq::<
12036                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12037                    >(_) => {}
12038                }
12039            }
12040            #[automatically_derived]
12041            #[doc(hidden)]
12042            impl ::core::convert::From<newFinalizedState_1Return>
12043            for UnderlyingRustTuple<'_> {
12044                fn from(value: newFinalizedState_1Return) -> Self {
12045                    ()
12046                }
12047            }
12048            #[automatically_derived]
12049            #[doc(hidden)]
12050            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12051            for newFinalizedState_1Return {
12052                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12053                    Self {}
12054                }
12055            }
12056        }
12057        impl newFinalizedState_1Return {
12058            fn _tokenize(
12059                &self,
12060            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12061                ()
12062            }
12063        }
12064        #[automatically_derived]
12065        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
12066            type Parameters<'a> = (
12067                LightClient::LightClientState,
12068                LightClient::StakeTableState,
12069                IPlonkVerifier::PlonkProof,
12070            );
12071            type Token<'a> = <Self::Parameters<
12072                'a,
12073            > as alloy_sol_types::SolType>::Token<'a>;
12074            type Return = newFinalizedState_1Return;
12075            type ReturnTuple<'a> = ();
12076            type ReturnToken<'a> = <Self::ReturnTuple<
12077                'a,
12078            > as alloy_sol_types::SolType>::Token<'a>;
12079            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))";
12080            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
12081            #[inline]
12082            fn new<'a>(
12083                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12084            ) -> Self {
12085                tuple.into()
12086            }
12087            #[inline]
12088            fn tokenize(&self) -> Self::Token<'_> {
12089                (
12090                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12091                        &self._0,
12092                    ),
12093                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12094                        &self._1,
12095                    ),
12096                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12097                        &self._2,
12098                    ),
12099                )
12100            }
12101            #[inline]
12102            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12103                newFinalizedState_1Return::_tokenize(ret)
12104            }
12105            #[inline]
12106            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12107                <Self::ReturnTuple<
12108                    '_,
12109                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12110                    .map(Into::into)
12111            }
12112            #[inline]
12113            fn abi_decode_returns_with_config(
12114                data: &[u8],
12115                config: alloy_sol_types::abi::AbiDecoderConfig,
12116            ) -> alloy_sol_types::Result<Self::Return> {
12117                <Self::ReturnTuple<
12118                    '_,
12119                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12120                        data,
12121                        config,
12122                    )
12123                    .map(Into::into)
12124            }
12125            #[inline]
12126            fn abi_decode_returns_validate(
12127                data: &[u8],
12128            ) -> alloy_sol_types::Result<Self::Return> {
12129                Self::abi_decode_returns_with_config(
12130                    data,
12131                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12132                )
12133            }
12134        }
12135    };
12136    #[derive(serde::Serialize, serde::Deserialize)]
12137    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12138    /**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`.
12139```solidity
12140function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, uint256 newAuthRoot, IPlonkVerifier.PlonkProof memory proof) external;
12141```*/
12142    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12143    #[derive(Clone)]
12144    pub struct newFinalizedState_2Call {
12145        #[allow(missing_docs)]
12146        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12147        #[allow(missing_docs)]
12148        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12149        #[allow(missing_docs)]
12150        pub newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
12151        #[allow(missing_docs)]
12152        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12153    }
12154    ///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.
12155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12156    #[derive(Clone)]
12157    pub struct newFinalizedState_2Return {}
12158    #[allow(
12159        non_camel_case_types,
12160        non_snake_case,
12161        clippy::pub_underscore_fields,
12162        clippy::style
12163    )]
12164    const _: () = {
12165        use alloy::sol_types as alloy_sol_types;
12166        {
12167            #[doc(hidden)]
12168            #[allow(dead_code)]
12169            type UnderlyingSolTuple<'a> = (
12170                LightClient::LightClientState,
12171                LightClient::StakeTableState,
12172                alloy::sol_types::sol_data::Uint<256>,
12173                IPlonkVerifier::PlonkProof,
12174            );
12175            #[doc(hidden)]
12176            type UnderlyingRustTuple<'a> = (
12177                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12178                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
12179                alloy::sol_types::private::primitives::aliases::U256,
12180                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
12181            );
12182            #[cfg(test)]
12183            #[allow(dead_code, unreachable_patterns)]
12184            fn _type_assertion(
12185                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12186            ) {
12187                match _t {
12188                    alloy_sol_types::private::AssertTypeEq::<
12189                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12190                    >(_) => {}
12191                }
12192            }
12193            #[automatically_derived]
12194            #[doc(hidden)]
12195            impl ::core::convert::From<newFinalizedState_2Call>
12196            for UnderlyingRustTuple<'_> {
12197                fn from(value: newFinalizedState_2Call) -> Self {
12198                    (
12199                        value.newState,
12200                        value.nextStakeTable,
12201                        value.newAuthRoot,
12202                        value.proof,
12203                    )
12204                }
12205            }
12206            #[automatically_derived]
12207            #[doc(hidden)]
12208            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12209            for newFinalizedState_2Call {
12210                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12211                    Self {
12212                        newState: tuple.0,
12213                        nextStakeTable: tuple.1,
12214                        newAuthRoot: tuple.2,
12215                        proof: tuple.3,
12216                    }
12217                }
12218            }
12219        }
12220        {
12221            #[doc(hidden)]
12222            #[allow(dead_code)]
12223            type UnderlyingSolTuple<'a> = ();
12224            #[doc(hidden)]
12225            type UnderlyingRustTuple<'a> = ();
12226            #[cfg(test)]
12227            #[allow(dead_code, unreachable_patterns)]
12228            fn _type_assertion(
12229                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12230            ) {
12231                match _t {
12232                    alloy_sol_types::private::AssertTypeEq::<
12233                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12234                    >(_) => {}
12235                }
12236            }
12237            #[automatically_derived]
12238            #[doc(hidden)]
12239            impl ::core::convert::From<newFinalizedState_2Return>
12240            for UnderlyingRustTuple<'_> {
12241                fn from(value: newFinalizedState_2Return) -> Self {
12242                    ()
12243                }
12244            }
12245            #[automatically_derived]
12246            #[doc(hidden)]
12247            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12248            for newFinalizedState_2Return {
12249                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12250                    Self {}
12251                }
12252            }
12253        }
12254        impl newFinalizedState_2Return {
12255            fn _tokenize(
12256                &self,
12257            ) -> <newFinalizedState_2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
12258                ()
12259            }
12260        }
12261        #[automatically_derived]
12262        impl alloy_sol_types::SolCall for newFinalizedState_2Call {
12263            type Parameters<'a> = (
12264                LightClient::LightClientState,
12265                LightClient::StakeTableState,
12266                alloy::sol_types::sol_data::Uint<256>,
12267                IPlonkVerifier::PlonkProof,
12268            );
12269            type Token<'a> = <Self::Parameters<
12270                'a,
12271            > as alloy_sol_types::SolType>::Token<'a>;
12272            type Return = newFinalizedState_2Return;
12273            type ReturnTuple<'a> = ();
12274            type ReturnToken<'a> = <Self::ReturnTuple<
12275                'a,
12276            > as alloy_sol_types::SolType>::Token<'a>;
12277            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))";
12278            const SELECTOR: [u8; 4] = [170u8, 189u8, 93u8, 179u8];
12279            #[inline]
12280            fn new<'a>(
12281                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12282            ) -> Self {
12283                tuple.into()
12284            }
12285            #[inline]
12286            fn tokenize(&self) -> Self::Token<'_> {
12287                (
12288                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12289                        &self.newState,
12290                    ),
12291                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
12292                        &self.nextStakeTable,
12293                    ),
12294                    <alloy::sol_types::sol_data::Uint<
12295                        256,
12296                    > as alloy_sol_types::SolType>::tokenize(&self.newAuthRoot),
12297                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
12298                        &self.proof,
12299                    ),
12300                )
12301            }
12302            #[inline]
12303            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12304                newFinalizedState_2Return::_tokenize(ret)
12305            }
12306            #[inline]
12307            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12308                <Self::ReturnTuple<
12309                    '_,
12310                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12311                    .map(Into::into)
12312            }
12313            #[inline]
12314            fn abi_decode_returns_with_config(
12315                data: &[u8],
12316                config: alloy_sol_types::abi::AbiDecoderConfig,
12317            ) -> alloy_sol_types::Result<Self::Return> {
12318                <Self::ReturnTuple<
12319                    '_,
12320                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12321                        data,
12322                        config,
12323                    )
12324                    .map(Into::into)
12325            }
12326            #[inline]
12327            fn abi_decode_returns_validate(
12328                data: &[u8],
12329            ) -> alloy_sol_types::Result<Self::Return> {
12330                Self::abi_decode_returns_with_config(
12331                    data,
12332                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12333                )
12334            }
12335        }
12336    };
12337    #[derive(serde::Serialize, serde::Deserialize)]
12338    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12339    /**Function with signature `owner()` and selector `0x8da5cb5b`.
12340```solidity
12341function owner() external view returns (address);
12342```*/
12343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12344    #[derive(Clone)]
12345    pub struct ownerCall;
12346    #[derive(serde::Serialize, serde::Deserialize)]
12347    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12348    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
12349    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12350    #[derive(Clone)]
12351    pub struct ownerReturn {
12352        #[allow(missing_docs)]
12353        pub _0: alloy::sol_types::private::Address,
12354    }
12355    #[allow(
12356        non_camel_case_types,
12357        non_snake_case,
12358        clippy::pub_underscore_fields,
12359        clippy::style
12360    )]
12361    const _: () = {
12362        use alloy::sol_types as alloy_sol_types;
12363        {
12364            #[doc(hidden)]
12365            #[allow(dead_code)]
12366            type UnderlyingSolTuple<'a> = ();
12367            #[doc(hidden)]
12368            type UnderlyingRustTuple<'a> = ();
12369            #[cfg(test)]
12370            #[allow(dead_code, unreachable_patterns)]
12371            fn _type_assertion(
12372                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12373            ) {
12374                match _t {
12375                    alloy_sol_types::private::AssertTypeEq::<
12376                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12377                    >(_) => {}
12378                }
12379            }
12380            #[automatically_derived]
12381            #[doc(hidden)]
12382            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
12383                fn from(value: ownerCall) -> Self {
12384                    ()
12385                }
12386            }
12387            #[automatically_derived]
12388            #[doc(hidden)]
12389            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
12390                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12391                    Self
12392                }
12393            }
12394        }
12395        {
12396            #[doc(hidden)]
12397            #[allow(dead_code)]
12398            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12399            #[doc(hidden)]
12400            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12401            #[cfg(test)]
12402            #[allow(dead_code, unreachable_patterns)]
12403            fn _type_assertion(
12404                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12405            ) {
12406                match _t {
12407                    alloy_sol_types::private::AssertTypeEq::<
12408                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12409                    >(_) => {}
12410                }
12411            }
12412            #[automatically_derived]
12413            #[doc(hidden)]
12414            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
12415                fn from(value: ownerReturn) -> Self {
12416                    (value._0,)
12417                }
12418            }
12419            #[automatically_derived]
12420            #[doc(hidden)]
12421            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
12422                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12423                    Self { _0: tuple.0 }
12424                }
12425            }
12426        }
12427        #[automatically_derived]
12428        impl alloy_sol_types::SolCall for ownerCall {
12429            type Parameters<'a> = ();
12430            type Token<'a> = <Self::Parameters<
12431                'a,
12432            > as alloy_sol_types::SolType>::Token<'a>;
12433            type Return = alloy::sol_types::private::Address;
12434            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12435            type ReturnToken<'a> = <Self::ReturnTuple<
12436                'a,
12437            > as alloy_sol_types::SolType>::Token<'a>;
12438            const SIGNATURE: &'static str = "owner()";
12439            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
12440            #[inline]
12441            fn new<'a>(
12442                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12443            ) -> Self {
12444                tuple.into()
12445            }
12446            #[inline]
12447            fn tokenize(&self) -> Self::Token<'_> {
12448                ()
12449            }
12450            #[inline]
12451            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12452                (
12453                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12454                        ret,
12455                    ),
12456                )
12457            }
12458            #[inline]
12459            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12460                <Self::ReturnTuple<
12461                    '_,
12462                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12463                    .map(|r| {
12464                        let r: ownerReturn = r.into();
12465                        r._0
12466                    })
12467            }
12468            #[inline]
12469            fn abi_decode_returns_with_config(
12470                data: &[u8],
12471                config: alloy_sol_types::abi::AbiDecoderConfig,
12472            ) -> alloy_sol_types::Result<Self::Return> {
12473                <Self::ReturnTuple<
12474                    '_,
12475                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12476                        data,
12477                        config,
12478                    )
12479                    .map(|r| {
12480                        let r: ownerReturn = r.into();
12481                        r._0
12482                    })
12483            }
12484            #[inline]
12485            fn abi_decode_returns_validate(
12486                data: &[u8],
12487            ) -> alloy_sol_types::Result<Self::Return> {
12488                Self::abi_decode_returns_with_config(
12489                    data,
12490                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12491                )
12492            }
12493        }
12494    };
12495    #[derive(serde::Serialize, serde::Deserialize)]
12496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12497    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
12498```solidity
12499function permissionedProver() external view returns (address);
12500```*/
12501    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12502    #[derive(Clone)]
12503    pub struct permissionedProverCall;
12504    #[derive(serde::Serialize, serde::Deserialize)]
12505    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12506    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
12507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12508    #[derive(Clone)]
12509    pub struct permissionedProverReturn {
12510        #[allow(missing_docs)]
12511        pub _0: alloy::sol_types::private::Address,
12512    }
12513    #[allow(
12514        non_camel_case_types,
12515        non_snake_case,
12516        clippy::pub_underscore_fields,
12517        clippy::style
12518    )]
12519    const _: () = {
12520        use alloy::sol_types as alloy_sol_types;
12521        {
12522            #[doc(hidden)]
12523            #[allow(dead_code)]
12524            type UnderlyingSolTuple<'a> = ();
12525            #[doc(hidden)]
12526            type UnderlyingRustTuple<'a> = ();
12527            #[cfg(test)]
12528            #[allow(dead_code, unreachable_patterns)]
12529            fn _type_assertion(
12530                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12531            ) {
12532                match _t {
12533                    alloy_sol_types::private::AssertTypeEq::<
12534                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12535                    >(_) => {}
12536                }
12537            }
12538            #[automatically_derived]
12539            #[doc(hidden)]
12540            impl ::core::convert::From<permissionedProverCall>
12541            for UnderlyingRustTuple<'_> {
12542                fn from(value: permissionedProverCall) -> Self {
12543                    ()
12544                }
12545            }
12546            #[automatically_derived]
12547            #[doc(hidden)]
12548            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12549            for permissionedProverCall {
12550                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12551                    Self
12552                }
12553            }
12554        }
12555        {
12556            #[doc(hidden)]
12557            #[allow(dead_code)]
12558            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12559            #[doc(hidden)]
12560            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12561            #[cfg(test)]
12562            #[allow(dead_code, unreachable_patterns)]
12563            fn _type_assertion(
12564                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12565            ) {
12566                match _t {
12567                    alloy_sol_types::private::AssertTypeEq::<
12568                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12569                    >(_) => {}
12570                }
12571            }
12572            #[automatically_derived]
12573            #[doc(hidden)]
12574            impl ::core::convert::From<permissionedProverReturn>
12575            for UnderlyingRustTuple<'_> {
12576                fn from(value: permissionedProverReturn) -> Self {
12577                    (value._0,)
12578                }
12579            }
12580            #[automatically_derived]
12581            #[doc(hidden)]
12582            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12583            for permissionedProverReturn {
12584                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12585                    Self { _0: tuple.0 }
12586                }
12587            }
12588        }
12589        #[automatically_derived]
12590        impl alloy_sol_types::SolCall for permissionedProverCall {
12591            type Parameters<'a> = ();
12592            type Token<'a> = <Self::Parameters<
12593                'a,
12594            > as alloy_sol_types::SolType>::Token<'a>;
12595            type Return = alloy::sol_types::private::Address;
12596            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
12597            type ReturnToken<'a> = <Self::ReturnTuple<
12598                'a,
12599            > as alloy_sol_types::SolType>::Token<'a>;
12600            const SIGNATURE: &'static str = "permissionedProver()";
12601            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
12602            #[inline]
12603            fn new<'a>(
12604                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12605            ) -> Self {
12606                tuple.into()
12607            }
12608            #[inline]
12609            fn tokenize(&self) -> Self::Token<'_> {
12610                ()
12611            }
12612            #[inline]
12613            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12614                (
12615                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12616                        ret,
12617                    ),
12618                )
12619            }
12620            #[inline]
12621            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12622                <Self::ReturnTuple<
12623                    '_,
12624                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12625                    .map(|r| {
12626                        let r: permissionedProverReturn = r.into();
12627                        r._0
12628                    })
12629            }
12630            #[inline]
12631            fn abi_decode_returns_with_config(
12632                data: &[u8],
12633                config: alloy_sol_types::abi::AbiDecoderConfig,
12634            ) -> alloy_sol_types::Result<Self::Return> {
12635                <Self::ReturnTuple<
12636                    '_,
12637                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12638                        data,
12639                        config,
12640                    )
12641                    .map(|r| {
12642                        let r: permissionedProverReturn = r.into();
12643                        r._0
12644                    })
12645            }
12646            #[inline]
12647            fn abi_decode_returns_validate(
12648                data: &[u8],
12649            ) -> alloy_sol_types::Result<Self::Return> {
12650                Self::abi_decode_returns_with_config(
12651                    data,
12652                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12653                )
12654            }
12655        }
12656    };
12657    #[derive(serde::Serialize, serde::Deserialize)]
12658    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12659    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
12660```solidity
12661function proxiableUUID() external view returns (bytes32);
12662```*/
12663    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12664    #[derive(Clone)]
12665    pub struct proxiableUUIDCall;
12666    #[derive(serde::Serialize, serde::Deserialize)]
12667    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12668    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
12669    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12670    #[derive(Clone)]
12671    pub struct proxiableUUIDReturn {
12672        #[allow(missing_docs)]
12673        pub _0: alloy::sol_types::private::FixedBytes<32>,
12674    }
12675    #[allow(
12676        non_camel_case_types,
12677        non_snake_case,
12678        clippy::pub_underscore_fields,
12679        clippy::style
12680    )]
12681    const _: () = {
12682        use alloy::sol_types as alloy_sol_types;
12683        {
12684            #[doc(hidden)]
12685            #[allow(dead_code)]
12686            type UnderlyingSolTuple<'a> = ();
12687            #[doc(hidden)]
12688            type UnderlyingRustTuple<'a> = ();
12689            #[cfg(test)]
12690            #[allow(dead_code, unreachable_patterns)]
12691            fn _type_assertion(
12692                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12693            ) {
12694                match _t {
12695                    alloy_sol_types::private::AssertTypeEq::<
12696                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12697                    >(_) => {}
12698                }
12699            }
12700            #[automatically_derived]
12701            #[doc(hidden)]
12702            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12703                fn from(value: proxiableUUIDCall) -> Self {
12704                    ()
12705                }
12706            }
12707            #[automatically_derived]
12708            #[doc(hidden)]
12709            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12710                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12711                    Self
12712                }
12713            }
12714        }
12715        {
12716            #[doc(hidden)]
12717            #[allow(dead_code)]
12718            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12719            #[doc(hidden)]
12720            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12721            #[cfg(test)]
12722            #[allow(dead_code, unreachable_patterns)]
12723            fn _type_assertion(
12724                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12725            ) {
12726                match _t {
12727                    alloy_sol_types::private::AssertTypeEq::<
12728                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12729                    >(_) => {}
12730                }
12731            }
12732            #[automatically_derived]
12733            #[doc(hidden)]
12734            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12735                fn from(value: proxiableUUIDReturn) -> Self {
12736                    (value._0,)
12737                }
12738            }
12739            #[automatically_derived]
12740            #[doc(hidden)]
12741            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12742                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12743                    Self { _0: tuple.0 }
12744                }
12745            }
12746        }
12747        #[automatically_derived]
12748        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12749            type Parameters<'a> = ();
12750            type Token<'a> = <Self::Parameters<
12751                'a,
12752            > as alloy_sol_types::SolType>::Token<'a>;
12753            type Return = alloy::sol_types::private::FixedBytes<32>;
12754            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12755            type ReturnToken<'a> = <Self::ReturnTuple<
12756                'a,
12757            > as alloy_sol_types::SolType>::Token<'a>;
12758            const SIGNATURE: &'static str = "proxiableUUID()";
12759            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
12760            #[inline]
12761            fn new<'a>(
12762                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12763            ) -> Self {
12764                tuple.into()
12765            }
12766            #[inline]
12767            fn tokenize(&self) -> Self::Token<'_> {
12768                ()
12769            }
12770            #[inline]
12771            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12772                (
12773                    <alloy::sol_types::sol_data::FixedBytes<
12774                        32,
12775                    > as alloy_sol_types::SolType>::tokenize(ret),
12776                )
12777            }
12778            #[inline]
12779            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12780                <Self::ReturnTuple<
12781                    '_,
12782                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12783                    .map(|r| {
12784                        let r: proxiableUUIDReturn = r.into();
12785                        r._0
12786                    })
12787            }
12788            #[inline]
12789            fn abi_decode_returns_with_config(
12790                data: &[u8],
12791                config: alloy_sol_types::abi::AbiDecoderConfig,
12792            ) -> alloy_sol_types::Result<Self::Return> {
12793                <Self::ReturnTuple<
12794                    '_,
12795                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12796                        data,
12797                        config,
12798                    )
12799                    .map(|r| {
12800                        let r: proxiableUUIDReturn = r.into();
12801                        r._0
12802                    })
12803            }
12804            #[inline]
12805            fn abi_decode_returns_validate(
12806                data: &[u8],
12807            ) -> alloy_sol_types::Result<Self::Return> {
12808                Self::abi_decode_returns_with_config(
12809                    data,
12810                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12811                )
12812            }
12813        }
12814    };
12815    #[derive(serde::Serialize, serde::Deserialize)]
12816    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12817    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
12818```solidity
12819function renounceOwnership() external;
12820```*/
12821    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12822    #[derive(Clone)]
12823    pub struct renounceOwnershipCall;
12824    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
12825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12826    #[derive(Clone)]
12827    pub struct renounceOwnershipReturn {}
12828    #[allow(
12829        non_camel_case_types,
12830        non_snake_case,
12831        clippy::pub_underscore_fields,
12832        clippy::style
12833    )]
12834    const _: () = {
12835        use alloy::sol_types as alloy_sol_types;
12836        {
12837            #[doc(hidden)]
12838            #[allow(dead_code)]
12839            type UnderlyingSolTuple<'a> = ();
12840            #[doc(hidden)]
12841            type UnderlyingRustTuple<'a> = ();
12842            #[cfg(test)]
12843            #[allow(dead_code, unreachable_patterns)]
12844            fn _type_assertion(
12845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12846            ) {
12847                match _t {
12848                    alloy_sol_types::private::AssertTypeEq::<
12849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12850                    >(_) => {}
12851                }
12852            }
12853            #[automatically_derived]
12854            #[doc(hidden)]
12855            impl ::core::convert::From<renounceOwnershipCall>
12856            for UnderlyingRustTuple<'_> {
12857                fn from(value: renounceOwnershipCall) -> Self {
12858                    ()
12859                }
12860            }
12861            #[automatically_derived]
12862            #[doc(hidden)]
12863            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12864            for renounceOwnershipCall {
12865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12866                    Self
12867                }
12868            }
12869        }
12870        {
12871            #[doc(hidden)]
12872            #[allow(dead_code)]
12873            type UnderlyingSolTuple<'a> = ();
12874            #[doc(hidden)]
12875            type UnderlyingRustTuple<'a> = ();
12876            #[cfg(test)]
12877            #[allow(dead_code, unreachable_patterns)]
12878            fn _type_assertion(
12879                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12880            ) {
12881                match _t {
12882                    alloy_sol_types::private::AssertTypeEq::<
12883                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12884                    >(_) => {}
12885                }
12886            }
12887            #[automatically_derived]
12888            #[doc(hidden)]
12889            impl ::core::convert::From<renounceOwnershipReturn>
12890            for UnderlyingRustTuple<'_> {
12891                fn from(value: renounceOwnershipReturn) -> Self {
12892                    ()
12893                }
12894            }
12895            #[automatically_derived]
12896            #[doc(hidden)]
12897            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12898            for renounceOwnershipReturn {
12899                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12900                    Self {}
12901                }
12902            }
12903        }
12904        impl renounceOwnershipReturn {
12905            fn _tokenize(
12906                &self,
12907            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12908                ()
12909            }
12910        }
12911        #[automatically_derived]
12912        impl alloy_sol_types::SolCall for renounceOwnershipCall {
12913            type Parameters<'a> = ();
12914            type Token<'a> = <Self::Parameters<
12915                'a,
12916            > as alloy_sol_types::SolType>::Token<'a>;
12917            type Return = renounceOwnershipReturn;
12918            type ReturnTuple<'a> = ();
12919            type ReturnToken<'a> = <Self::ReturnTuple<
12920                'a,
12921            > as alloy_sol_types::SolType>::Token<'a>;
12922            const SIGNATURE: &'static str = "renounceOwnership()";
12923            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
12924            #[inline]
12925            fn new<'a>(
12926                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12927            ) -> Self {
12928                tuple.into()
12929            }
12930            #[inline]
12931            fn tokenize(&self) -> Self::Token<'_> {
12932                ()
12933            }
12934            #[inline]
12935            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12936                renounceOwnershipReturn::_tokenize(ret)
12937            }
12938            #[inline]
12939            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12940                <Self::ReturnTuple<
12941                    '_,
12942                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12943                    .map(Into::into)
12944            }
12945            #[inline]
12946            fn abi_decode_returns_with_config(
12947                data: &[u8],
12948                config: alloy_sol_types::abi::AbiDecoderConfig,
12949            ) -> alloy_sol_types::Result<Self::Return> {
12950                <Self::ReturnTuple<
12951                    '_,
12952                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
12953                        data,
12954                        config,
12955                    )
12956                    .map(Into::into)
12957            }
12958            #[inline]
12959            fn abi_decode_returns_validate(
12960                data: &[u8],
12961            ) -> alloy_sol_types::Result<Self::Return> {
12962                Self::abi_decode_returns_with_config(
12963                    data,
12964                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
12965                )
12966            }
12967        }
12968    };
12969    #[derive(serde::Serialize, serde::Deserialize)]
12970    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12971    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
12972```solidity
12973function setPermissionedProver(address prover) external;
12974```*/
12975    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12976    #[derive(Clone)]
12977    pub struct setPermissionedProverCall {
12978        #[allow(missing_docs)]
12979        pub prover: alloy::sol_types::private::Address,
12980    }
12981    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
12982    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12983    #[derive(Clone)]
12984    pub struct setPermissionedProverReturn {}
12985    #[allow(
12986        non_camel_case_types,
12987        non_snake_case,
12988        clippy::pub_underscore_fields,
12989        clippy::style
12990    )]
12991    const _: () = {
12992        use alloy::sol_types as alloy_sol_types;
12993        {
12994            #[doc(hidden)]
12995            #[allow(dead_code)]
12996            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12997            #[doc(hidden)]
12998            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12999            #[cfg(test)]
13000            #[allow(dead_code, unreachable_patterns)]
13001            fn _type_assertion(
13002                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13003            ) {
13004                match _t {
13005                    alloy_sol_types::private::AssertTypeEq::<
13006                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13007                    >(_) => {}
13008                }
13009            }
13010            #[automatically_derived]
13011            #[doc(hidden)]
13012            impl ::core::convert::From<setPermissionedProverCall>
13013            for UnderlyingRustTuple<'_> {
13014                fn from(value: setPermissionedProverCall) -> Self {
13015                    (value.prover,)
13016                }
13017            }
13018            #[automatically_derived]
13019            #[doc(hidden)]
13020            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13021            for setPermissionedProverCall {
13022                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13023                    Self { prover: tuple.0 }
13024                }
13025            }
13026        }
13027        {
13028            #[doc(hidden)]
13029            #[allow(dead_code)]
13030            type UnderlyingSolTuple<'a> = ();
13031            #[doc(hidden)]
13032            type UnderlyingRustTuple<'a> = ();
13033            #[cfg(test)]
13034            #[allow(dead_code, unreachable_patterns)]
13035            fn _type_assertion(
13036                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13037            ) {
13038                match _t {
13039                    alloy_sol_types::private::AssertTypeEq::<
13040                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13041                    >(_) => {}
13042                }
13043            }
13044            #[automatically_derived]
13045            #[doc(hidden)]
13046            impl ::core::convert::From<setPermissionedProverReturn>
13047            for UnderlyingRustTuple<'_> {
13048                fn from(value: setPermissionedProverReturn) -> Self {
13049                    ()
13050                }
13051            }
13052            #[automatically_derived]
13053            #[doc(hidden)]
13054            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13055            for setPermissionedProverReturn {
13056                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13057                    Self {}
13058                }
13059            }
13060        }
13061        impl setPermissionedProverReturn {
13062            fn _tokenize(
13063                &self,
13064            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
13065                '_,
13066            > {
13067                ()
13068            }
13069        }
13070        #[automatically_derived]
13071        impl alloy_sol_types::SolCall for setPermissionedProverCall {
13072            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
13073            type Token<'a> = <Self::Parameters<
13074                'a,
13075            > as alloy_sol_types::SolType>::Token<'a>;
13076            type Return = setPermissionedProverReturn;
13077            type ReturnTuple<'a> = ();
13078            type ReturnToken<'a> = <Self::ReturnTuple<
13079                'a,
13080            > as alloy_sol_types::SolType>::Token<'a>;
13081            const SIGNATURE: &'static str = "setPermissionedProver(address)";
13082            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
13083            #[inline]
13084            fn new<'a>(
13085                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13086            ) -> Self {
13087                tuple.into()
13088            }
13089            #[inline]
13090            fn tokenize(&self) -> Self::Token<'_> {
13091                (
13092                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13093                        &self.prover,
13094                    ),
13095                )
13096            }
13097            #[inline]
13098            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13099                setPermissionedProverReturn::_tokenize(ret)
13100            }
13101            #[inline]
13102            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13103                <Self::ReturnTuple<
13104                    '_,
13105                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13106                    .map(Into::into)
13107            }
13108            #[inline]
13109            fn abi_decode_returns_with_config(
13110                data: &[u8],
13111                config: alloy_sol_types::abi::AbiDecoderConfig,
13112            ) -> alloy_sol_types::Result<Self::Return> {
13113                <Self::ReturnTuple<
13114                    '_,
13115                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13116                        data,
13117                        config,
13118                    )
13119                    .map(Into::into)
13120            }
13121            #[inline]
13122            fn abi_decode_returns_validate(
13123                data: &[u8],
13124            ) -> alloy_sol_types::Result<Self::Return> {
13125                Self::abi_decode_returns_with_config(
13126                    data,
13127                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13128                )
13129            }
13130        }
13131    };
13132    #[derive(serde::Serialize, serde::Deserialize)]
13133    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13134    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
13135```solidity
13136function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
13137```*/
13138    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13139    #[derive(Clone)]
13140    pub struct setStateHistoryRetentionPeriodCall {
13141        #[allow(missing_docs)]
13142        pub historySeconds: u32,
13143    }
13144    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
13145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13146    #[derive(Clone)]
13147    pub struct setStateHistoryRetentionPeriodReturn {}
13148    #[allow(
13149        non_camel_case_types,
13150        non_snake_case,
13151        clippy::pub_underscore_fields,
13152        clippy::style
13153    )]
13154    const _: () = {
13155        use alloy::sol_types as alloy_sol_types;
13156        {
13157            #[doc(hidden)]
13158            #[allow(dead_code)]
13159            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13160            #[doc(hidden)]
13161            type UnderlyingRustTuple<'a> = (u32,);
13162            #[cfg(test)]
13163            #[allow(dead_code, unreachable_patterns)]
13164            fn _type_assertion(
13165                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13166            ) {
13167                match _t {
13168                    alloy_sol_types::private::AssertTypeEq::<
13169                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13170                    >(_) => {}
13171                }
13172            }
13173            #[automatically_derived]
13174            #[doc(hidden)]
13175            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
13176            for UnderlyingRustTuple<'_> {
13177                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
13178                    (value.historySeconds,)
13179                }
13180            }
13181            #[automatically_derived]
13182            #[doc(hidden)]
13183            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13184            for setStateHistoryRetentionPeriodCall {
13185                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13186                    Self { historySeconds: tuple.0 }
13187                }
13188            }
13189        }
13190        {
13191            #[doc(hidden)]
13192            #[allow(dead_code)]
13193            type UnderlyingSolTuple<'a> = ();
13194            #[doc(hidden)]
13195            type UnderlyingRustTuple<'a> = ();
13196            #[cfg(test)]
13197            #[allow(dead_code, unreachable_patterns)]
13198            fn _type_assertion(
13199                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13200            ) {
13201                match _t {
13202                    alloy_sol_types::private::AssertTypeEq::<
13203                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13204                    >(_) => {}
13205                }
13206            }
13207            #[automatically_derived]
13208            #[doc(hidden)]
13209            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
13210            for UnderlyingRustTuple<'_> {
13211                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
13212                    ()
13213                }
13214            }
13215            #[automatically_derived]
13216            #[doc(hidden)]
13217            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13218            for setStateHistoryRetentionPeriodReturn {
13219                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13220                    Self {}
13221                }
13222            }
13223        }
13224        impl setStateHistoryRetentionPeriodReturn {
13225            fn _tokenize(
13226                &self,
13227            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
13228                '_,
13229            > {
13230                ()
13231            }
13232        }
13233        #[automatically_derived]
13234        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
13235            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13236            type Token<'a> = <Self::Parameters<
13237                'a,
13238            > as alloy_sol_types::SolType>::Token<'a>;
13239            type Return = setStateHistoryRetentionPeriodReturn;
13240            type ReturnTuple<'a> = ();
13241            type ReturnToken<'a> = <Self::ReturnTuple<
13242                'a,
13243            > as alloy_sol_types::SolType>::Token<'a>;
13244            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
13245            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
13246            #[inline]
13247            fn new<'a>(
13248                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13249            ) -> Self {
13250                tuple.into()
13251            }
13252            #[inline]
13253            fn tokenize(&self) -> Self::Token<'_> {
13254                (
13255                    <alloy::sol_types::sol_data::Uint<
13256                        32,
13257                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13258                )
13259            }
13260            #[inline]
13261            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13262                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
13263            }
13264            #[inline]
13265            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13266                <Self::ReturnTuple<
13267                    '_,
13268                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13269                    .map(Into::into)
13270            }
13271            #[inline]
13272            fn abi_decode_returns_with_config(
13273                data: &[u8],
13274                config: alloy_sol_types::abi::AbiDecoderConfig,
13275            ) -> alloy_sol_types::Result<Self::Return> {
13276                <Self::ReturnTuple<
13277                    '_,
13278                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13279                        data,
13280                        config,
13281                    )
13282                    .map(Into::into)
13283            }
13284            #[inline]
13285            fn abi_decode_returns_validate(
13286                data: &[u8],
13287            ) -> alloy_sol_types::Result<Self::Return> {
13288                Self::abi_decode_returns_with_config(
13289                    data,
13290                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13291                )
13292            }
13293        }
13294    };
13295    #[derive(serde::Serialize, serde::Deserialize)]
13296    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13297    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
13298```solidity
13299function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
13300```*/
13301    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13302    #[derive(Clone)]
13303    pub struct setstateHistoryRetentionPeriodCall {
13304        #[allow(missing_docs)]
13305        pub historySeconds: u32,
13306    }
13307    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
13308    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13309    #[derive(Clone)]
13310    pub struct setstateHistoryRetentionPeriodReturn {}
13311    #[allow(
13312        non_camel_case_types,
13313        non_snake_case,
13314        clippy::pub_underscore_fields,
13315        clippy::style
13316    )]
13317    const _: () = {
13318        use alloy::sol_types as alloy_sol_types;
13319        {
13320            #[doc(hidden)]
13321            #[allow(dead_code)]
13322            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13323            #[doc(hidden)]
13324            type UnderlyingRustTuple<'a> = (u32,);
13325            #[cfg(test)]
13326            #[allow(dead_code, unreachable_patterns)]
13327            fn _type_assertion(
13328                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13329            ) {
13330                match _t {
13331                    alloy_sol_types::private::AssertTypeEq::<
13332                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13333                    >(_) => {}
13334                }
13335            }
13336            #[automatically_derived]
13337            #[doc(hidden)]
13338            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
13339            for UnderlyingRustTuple<'_> {
13340                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
13341                    (value.historySeconds,)
13342                }
13343            }
13344            #[automatically_derived]
13345            #[doc(hidden)]
13346            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13347            for setstateHistoryRetentionPeriodCall {
13348                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13349                    Self { historySeconds: tuple.0 }
13350                }
13351            }
13352        }
13353        {
13354            #[doc(hidden)]
13355            #[allow(dead_code)]
13356            type UnderlyingSolTuple<'a> = ();
13357            #[doc(hidden)]
13358            type UnderlyingRustTuple<'a> = ();
13359            #[cfg(test)]
13360            #[allow(dead_code, unreachable_patterns)]
13361            fn _type_assertion(
13362                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13363            ) {
13364                match _t {
13365                    alloy_sol_types::private::AssertTypeEq::<
13366                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13367                    >(_) => {}
13368                }
13369            }
13370            #[automatically_derived]
13371            #[doc(hidden)]
13372            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
13373            for UnderlyingRustTuple<'_> {
13374                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
13375                    ()
13376                }
13377            }
13378            #[automatically_derived]
13379            #[doc(hidden)]
13380            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13381            for setstateHistoryRetentionPeriodReturn {
13382                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13383                    Self {}
13384                }
13385            }
13386        }
13387        impl setstateHistoryRetentionPeriodReturn {
13388            fn _tokenize(
13389                &self,
13390            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
13391                '_,
13392            > {
13393                ()
13394            }
13395        }
13396        #[automatically_derived]
13397        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
13398            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13399            type Token<'a> = <Self::Parameters<
13400                'a,
13401            > as alloy_sol_types::SolType>::Token<'a>;
13402            type Return = setstateHistoryRetentionPeriodReturn;
13403            type ReturnTuple<'a> = ();
13404            type ReturnToken<'a> = <Self::ReturnTuple<
13405                'a,
13406            > as alloy_sol_types::SolType>::Token<'a>;
13407            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
13408            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
13409            #[inline]
13410            fn new<'a>(
13411                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13412            ) -> Self {
13413                tuple.into()
13414            }
13415            #[inline]
13416            fn tokenize(&self) -> Self::Token<'_> {
13417                (
13418                    <alloy::sol_types::sol_data::Uint<
13419                        32,
13420                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13421                )
13422            }
13423            #[inline]
13424            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13425                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
13426            }
13427            #[inline]
13428            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13429                <Self::ReturnTuple<
13430                    '_,
13431                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13432                    .map(Into::into)
13433            }
13434            #[inline]
13435            fn abi_decode_returns_with_config(
13436                data: &[u8],
13437                config: alloy_sol_types::abi::AbiDecoderConfig,
13438            ) -> alloy_sol_types::Result<Self::Return> {
13439                <Self::ReturnTuple<
13440                    '_,
13441                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13442                        data,
13443                        config,
13444                    )
13445                    .map(Into::into)
13446            }
13447            #[inline]
13448            fn abi_decode_returns_validate(
13449                data: &[u8],
13450            ) -> alloy_sol_types::Result<Self::Return> {
13451                Self::abi_decode_returns_with_config(
13452                    data,
13453                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13454                )
13455            }
13456        }
13457    };
13458    #[derive(serde::Serialize, serde::Deserialize)]
13459    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13460    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
13461```solidity
13462function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
13463```*/
13464    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13465    #[derive(Clone)]
13466    pub struct stateHistoryCommitmentsCall(
13467        pub alloy::sol_types::private::primitives::aliases::U256,
13468    );
13469    #[derive(serde::Serialize, serde::Deserialize)]
13470    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13471    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
13472    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13473    #[derive(Clone)]
13474    pub struct stateHistoryCommitmentsReturn {
13475        #[allow(missing_docs)]
13476        pub l1BlockHeight: u64,
13477        #[allow(missing_docs)]
13478        pub l1BlockTimestamp: u64,
13479        #[allow(missing_docs)]
13480        pub hotShotBlockHeight: u64,
13481        #[allow(missing_docs)]
13482        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13483    }
13484    #[allow(
13485        non_camel_case_types,
13486        non_snake_case,
13487        clippy::pub_underscore_fields,
13488        clippy::style
13489    )]
13490    const _: () = {
13491        use alloy::sol_types as alloy_sol_types;
13492        {
13493            #[doc(hidden)]
13494            #[allow(dead_code)]
13495            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13496            #[doc(hidden)]
13497            type UnderlyingRustTuple<'a> = (
13498                alloy::sol_types::private::primitives::aliases::U256,
13499            );
13500            #[cfg(test)]
13501            #[allow(dead_code, unreachable_patterns)]
13502            fn _type_assertion(
13503                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13504            ) {
13505                match _t {
13506                    alloy_sol_types::private::AssertTypeEq::<
13507                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13508                    >(_) => {}
13509                }
13510            }
13511            #[automatically_derived]
13512            #[doc(hidden)]
13513            impl ::core::convert::From<stateHistoryCommitmentsCall>
13514            for UnderlyingRustTuple<'_> {
13515                fn from(value: stateHistoryCommitmentsCall) -> Self {
13516                    (value.0,)
13517                }
13518            }
13519            #[automatically_derived]
13520            #[doc(hidden)]
13521            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13522            for stateHistoryCommitmentsCall {
13523                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13524                    Self(tuple.0)
13525                }
13526            }
13527        }
13528        {
13529            #[doc(hidden)]
13530            #[allow(dead_code)]
13531            type UnderlyingSolTuple<'a> = (
13532                alloy::sol_types::sol_data::Uint<64>,
13533                alloy::sol_types::sol_data::Uint<64>,
13534                alloy::sol_types::sol_data::Uint<64>,
13535                BN254::ScalarField,
13536            );
13537            #[doc(hidden)]
13538            type UnderlyingRustTuple<'a> = (
13539                u64,
13540                u64,
13541                u64,
13542                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13543            );
13544            #[cfg(test)]
13545            #[allow(dead_code, unreachable_patterns)]
13546            fn _type_assertion(
13547                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13548            ) {
13549                match _t {
13550                    alloy_sol_types::private::AssertTypeEq::<
13551                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13552                    >(_) => {}
13553                }
13554            }
13555            #[automatically_derived]
13556            #[doc(hidden)]
13557            impl ::core::convert::From<stateHistoryCommitmentsReturn>
13558            for UnderlyingRustTuple<'_> {
13559                fn from(value: stateHistoryCommitmentsReturn) -> Self {
13560                    (
13561                        value.l1BlockHeight,
13562                        value.l1BlockTimestamp,
13563                        value.hotShotBlockHeight,
13564                        value.hotShotBlockCommRoot,
13565                    )
13566                }
13567            }
13568            #[automatically_derived]
13569            #[doc(hidden)]
13570            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13571            for stateHistoryCommitmentsReturn {
13572                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13573                    Self {
13574                        l1BlockHeight: tuple.0,
13575                        l1BlockTimestamp: tuple.1,
13576                        hotShotBlockHeight: tuple.2,
13577                        hotShotBlockCommRoot: tuple.3,
13578                    }
13579                }
13580            }
13581        }
13582        impl stateHistoryCommitmentsReturn {
13583            fn _tokenize(
13584                &self,
13585            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
13586                '_,
13587            > {
13588                (
13589                    <alloy::sol_types::sol_data::Uint<
13590                        64,
13591                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
13592                    <alloy::sol_types::sol_data::Uint<
13593                        64,
13594                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
13595                    <alloy::sol_types::sol_data::Uint<
13596                        64,
13597                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
13598                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13599                        &self.hotShotBlockCommRoot,
13600                    ),
13601                )
13602            }
13603        }
13604        #[automatically_derived]
13605        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
13606            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13607            type Token<'a> = <Self::Parameters<
13608                'a,
13609            > as alloy_sol_types::SolType>::Token<'a>;
13610            type Return = stateHistoryCommitmentsReturn;
13611            type ReturnTuple<'a> = (
13612                alloy::sol_types::sol_data::Uint<64>,
13613                alloy::sol_types::sol_data::Uint<64>,
13614                alloy::sol_types::sol_data::Uint<64>,
13615                BN254::ScalarField,
13616            );
13617            type ReturnToken<'a> = <Self::ReturnTuple<
13618                'a,
13619            > as alloy_sol_types::SolType>::Token<'a>;
13620            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
13621            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
13622            #[inline]
13623            fn new<'a>(
13624                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13625            ) -> Self {
13626                tuple.into()
13627            }
13628            #[inline]
13629            fn tokenize(&self) -> Self::Token<'_> {
13630                (
13631                    <alloy::sol_types::sol_data::Uint<
13632                        256,
13633                    > as alloy_sol_types::SolType>::tokenize(&self.0),
13634                )
13635            }
13636            #[inline]
13637            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13638                stateHistoryCommitmentsReturn::_tokenize(ret)
13639            }
13640            #[inline]
13641            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13642                <Self::ReturnTuple<
13643                    '_,
13644                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13645                    .map(Into::into)
13646            }
13647            #[inline]
13648            fn abi_decode_returns_with_config(
13649                data: &[u8],
13650                config: alloy_sol_types::abi::AbiDecoderConfig,
13651            ) -> alloy_sol_types::Result<Self::Return> {
13652                <Self::ReturnTuple<
13653                    '_,
13654                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13655                        data,
13656                        config,
13657                    )
13658                    .map(Into::into)
13659            }
13660            #[inline]
13661            fn abi_decode_returns_validate(
13662                data: &[u8],
13663            ) -> alloy_sol_types::Result<Self::Return> {
13664                Self::abi_decode_returns_with_config(
13665                    data,
13666                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13667                )
13668            }
13669        }
13670    };
13671    #[derive(serde::Serialize, serde::Deserialize)]
13672    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13673    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
13674```solidity
13675function stateHistoryFirstIndex() external view returns (uint64);
13676```*/
13677    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13678    #[derive(Clone)]
13679    pub struct stateHistoryFirstIndexCall;
13680    #[derive(serde::Serialize, serde::Deserialize)]
13681    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13682    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
13683    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13684    #[derive(Clone)]
13685    pub struct stateHistoryFirstIndexReturn {
13686        #[allow(missing_docs)]
13687        pub _0: u64,
13688    }
13689    #[allow(
13690        non_camel_case_types,
13691        non_snake_case,
13692        clippy::pub_underscore_fields,
13693        clippy::style
13694    )]
13695    const _: () = {
13696        use alloy::sol_types as alloy_sol_types;
13697        {
13698            #[doc(hidden)]
13699            #[allow(dead_code)]
13700            type UnderlyingSolTuple<'a> = ();
13701            #[doc(hidden)]
13702            type UnderlyingRustTuple<'a> = ();
13703            #[cfg(test)]
13704            #[allow(dead_code, unreachable_patterns)]
13705            fn _type_assertion(
13706                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13707            ) {
13708                match _t {
13709                    alloy_sol_types::private::AssertTypeEq::<
13710                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13711                    >(_) => {}
13712                }
13713            }
13714            #[automatically_derived]
13715            #[doc(hidden)]
13716            impl ::core::convert::From<stateHistoryFirstIndexCall>
13717            for UnderlyingRustTuple<'_> {
13718                fn from(value: stateHistoryFirstIndexCall) -> Self {
13719                    ()
13720                }
13721            }
13722            #[automatically_derived]
13723            #[doc(hidden)]
13724            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13725            for stateHistoryFirstIndexCall {
13726                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13727                    Self
13728                }
13729            }
13730        }
13731        {
13732            #[doc(hidden)]
13733            #[allow(dead_code)]
13734            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13735            #[doc(hidden)]
13736            type UnderlyingRustTuple<'a> = (u64,);
13737            #[cfg(test)]
13738            #[allow(dead_code, unreachable_patterns)]
13739            fn _type_assertion(
13740                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13741            ) {
13742                match _t {
13743                    alloy_sol_types::private::AssertTypeEq::<
13744                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13745                    >(_) => {}
13746                }
13747            }
13748            #[automatically_derived]
13749            #[doc(hidden)]
13750            impl ::core::convert::From<stateHistoryFirstIndexReturn>
13751            for UnderlyingRustTuple<'_> {
13752                fn from(value: stateHistoryFirstIndexReturn) -> Self {
13753                    (value._0,)
13754                }
13755            }
13756            #[automatically_derived]
13757            #[doc(hidden)]
13758            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13759            for stateHistoryFirstIndexReturn {
13760                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13761                    Self { _0: tuple.0 }
13762                }
13763            }
13764        }
13765        #[automatically_derived]
13766        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
13767            type Parameters<'a> = ();
13768            type Token<'a> = <Self::Parameters<
13769                'a,
13770            > as alloy_sol_types::SolType>::Token<'a>;
13771            type Return = u64;
13772            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13773            type ReturnToken<'a> = <Self::ReturnTuple<
13774                'a,
13775            > as alloy_sol_types::SolType>::Token<'a>;
13776            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
13777            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
13778            #[inline]
13779            fn new<'a>(
13780                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13781            ) -> Self {
13782                tuple.into()
13783            }
13784            #[inline]
13785            fn tokenize(&self) -> Self::Token<'_> {
13786                ()
13787            }
13788            #[inline]
13789            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13790                (
13791                    <alloy::sol_types::sol_data::Uint<
13792                        64,
13793                    > as alloy_sol_types::SolType>::tokenize(ret),
13794                )
13795            }
13796            #[inline]
13797            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13798                <Self::ReturnTuple<
13799                    '_,
13800                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13801                    .map(|r| {
13802                        let r: stateHistoryFirstIndexReturn = r.into();
13803                        r._0
13804                    })
13805            }
13806            #[inline]
13807            fn abi_decode_returns_with_config(
13808                data: &[u8],
13809                config: alloy_sol_types::abi::AbiDecoderConfig,
13810            ) -> alloy_sol_types::Result<Self::Return> {
13811                <Self::ReturnTuple<
13812                    '_,
13813                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13814                        data,
13815                        config,
13816                    )
13817                    .map(|r| {
13818                        let r: stateHistoryFirstIndexReturn = r.into();
13819                        r._0
13820                    })
13821            }
13822            #[inline]
13823            fn abi_decode_returns_validate(
13824                data: &[u8],
13825            ) -> alloy_sol_types::Result<Self::Return> {
13826                Self::abi_decode_returns_with_config(
13827                    data,
13828                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13829                )
13830            }
13831        }
13832    };
13833    #[derive(serde::Serialize, serde::Deserialize)]
13834    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13835    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
13836```solidity
13837function stateHistoryRetentionPeriod() external view returns (uint32);
13838```*/
13839    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13840    #[derive(Clone)]
13841    pub struct stateHistoryRetentionPeriodCall;
13842    #[derive(serde::Serialize, serde::Deserialize)]
13843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13844    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
13845    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13846    #[derive(Clone)]
13847    pub struct stateHistoryRetentionPeriodReturn {
13848        #[allow(missing_docs)]
13849        pub _0: u32,
13850    }
13851    #[allow(
13852        non_camel_case_types,
13853        non_snake_case,
13854        clippy::pub_underscore_fields,
13855        clippy::style
13856    )]
13857    const _: () = {
13858        use alloy::sol_types as alloy_sol_types;
13859        {
13860            #[doc(hidden)]
13861            #[allow(dead_code)]
13862            type UnderlyingSolTuple<'a> = ();
13863            #[doc(hidden)]
13864            type UnderlyingRustTuple<'a> = ();
13865            #[cfg(test)]
13866            #[allow(dead_code, unreachable_patterns)]
13867            fn _type_assertion(
13868                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13869            ) {
13870                match _t {
13871                    alloy_sol_types::private::AssertTypeEq::<
13872                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13873                    >(_) => {}
13874                }
13875            }
13876            #[automatically_derived]
13877            #[doc(hidden)]
13878            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
13879            for UnderlyingRustTuple<'_> {
13880                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
13881                    ()
13882                }
13883            }
13884            #[automatically_derived]
13885            #[doc(hidden)]
13886            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13887            for stateHistoryRetentionPeriodCall {
13888                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13889                    Self
13890                }
13891            }
13892        }
13893        {
13894            #[doc(hidden)]
13895            #[allow(dead_code)]
13896            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13897            #[doc(hidden)]
13898            type UnderlyingRustTuple<'a> = (u32,);
13899            #[cfg(test)]
13900            #[allow(dead_code, unreachable_patterns)]
13901            fn _type_assertion(
13902                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13903            ) {
13904                match _t {
13905                    alloy_sol_types::private::AssertTypeEq::<
13906                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13907                    >(_) => {}
13908                }
13909            }
13910            #[automatically_derived]
13911            #[doc(hidden)]
13912            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
13913            for UnderlyingRustTuple<'_> {
13914                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
13915                    (value._0,)
13916                }
13917            }
13918            #[automatically_derived]
13919            #[doc(hidden)]
13920            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13921            for stateHistoryRetentionPeriodReturn {
13922                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13923                    Self { _0: tuple.0 }
13924                }
13925            }
13926        }
13927        #[automatically_derived]
13928        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
13929            type Parameters<'a> = ();
13930            type Token<'a> = <Self::Parameters<
13931                'a,
13932            > as alloy_sol_types::SolType>::Token<'a>;
13933            type Return = u32;
13934            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13935            type ReturnToken<'a> = <Self::ReturnTuple<
13936                'a,
13937            > as alloy_sol_types::SolType>::Token<'a>;
13938            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
13939            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
13940            #[inline]
13941            fn new<'a>(
13942                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13943            ) -> Self {
13944                tuple.into()
13945            }
13946            #[inline]
13947            fn tokenize(&self) -> Self::Token<'_> {
13948                ()
13949            }
13950            #[inline]
13951            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13952                (
13953                    <alloy::sol_types::sol_data::Uint<
13954                        32,
13955                    > as alloy_sol_types::SolType>::tokenize(ret),
13956                )
13957            }
13958            #[inline]
13959            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13960                <Self::ReturnTuple<
13961                    '_,
13962                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13963                    .map(|r| {
13964                        let r: stateHistoryRetentionPeriodReturn = r.into();
13965                        r._0
13966                    })
13967            }
13968            #[inline]
13969            fn abi_decode_returns_with_config(
13970                data: &[u8],
13971                config: alloy_sol_types::abi::AbiDecoderConfig,
13972            ) -> alloy_sol_types::Result<Self::Return> {
13973                <Self::ReturnTuple<
13974                    '_,
13975                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
13976                        data,
13977                        config,
13978                    )
13979                    .map(|r| {
13980                        let r: stateHistoryRetentionPeriodReturn = r.into();
13981                        r._0
13982                    })
13983            }
13984            #[inline]
13985            fn abi_decode_returns_validate(
13986                data: &[u8],
13987            ) -> alloy_sol_types::Result<Self::Return> {
13988                Self::abi_decode_returns_with_config(
13989                    data,
13990                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
13991                )
13992            }
13993        }
13994    };
13995    #[derive(serde::Serialize, serde::Deserialize)]
13996    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13997    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
13998```solidity
13999function transferOwnership(address newOwner) external;
14000```*/
14001    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14002    #[derive(Clone)]
14003    pub struct transferOwnershipCall {
14004        #[allow(missing_docs)]
14005        pub newOwner: alloy::sol_types::private::Address,
14006    }
14007    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
14008    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14009    #[derive(Clone)]
14010    pub struct transferOwnershipReturn {}
14011    #[allow(
14012        non_camel_case_types,
14013        non_snake_case,
14014        clippy::pub_underscore_fields,
14015        clippy::style
14016    )]
14017    const _: () = {
14018        use alloy::sol_types as alloy_sol_types;
14019        {
14020            #[doc(hidden)]
14021            #[allow(dead_code)]
14022            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14023            #[doc(hidden)]
14024            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14025            #[cfg(test)]
14026            #[allow(dead_code, unreachable_patterns)]
14027            fn _type_assertion(
14028                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14029            ) {
14030                match _t {
14031                    alloy_sol_types::private::AssertTypeEq::<
14032                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14033                    >(_) => {}
14034                }
14035            }
14036            #[automatically_derived]
14037            #[doc(hidden)]
14038            impl ::core::convert::From<transferOwnershipCall>
14039            for UnderlyingRustTuple<'_> {
14040                fn from(value: transferOwnershipCall) -> Self {
14041                    (value.newOwner,)
14042                }
14043            }
14044            #[automatically_derived]
14045            #[doc(hidden)]
14046            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14047            for transferOwnershipCall {
14048                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14049                    Self { newOwner: tuple.0 }
14050                }
14051            }
14052        }
14053        {
14054            #[doc(hidden)]
14055            #[allow(dead_code)]
14056            type UnderlyingSolTuple<'a> = ();
14057            #[doc(hidden)]
14058            type UnderlyingRustTuple<'a> = ();
14059            #[cfg(test)]
14060            #[allow(dead_code, unreachable_patterns)]
14061            fn _type_assertion(
14062                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14063            ) {
14064                match _t {
14065                    alloy_sol_types::private::AssertTypeEq::<
14066                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14067                    >(_) => {}
14068                }
14069            }
14070            #[automatically_derived]
14071            #[doc(hidden)]
14072            impl ::core::convert::From<transferOwnershipReturn>
14073            for UnderlyingRustTuple<'_> {
14074                fn from(value: transferOwnershipReturn) -> Self {
14075                    ()
14076                }
14077            }
14078            #[automatically_derived]
14079            #[doc(hidden)]
14080            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14081            for transferOwnershipReturn {
14082                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14083                    Self {}
14084                }
14085            }
14086        }
14087        impl transferOwnershipReturn {
14088            fn _tokenize(
14089                &self,
14090            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14091                ()
14092            }
14093        }
14094        #[automatically_derived]
14095        impl alloy_sol_types::SolCall for transferOwnershipCall {
14096            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14097            type Token<'a> = <Self::Parameters<
14098                'a,
14099            > as alloy_sol_types::SolType>::Token<'a>;
14100            type Return = transferOwnershipReturn;
14101            type ReturnTuple<'a> = ();
14102            type ReturnToken<'a> = <Self::ReturnTuple<
14103                'a,
14104            > as alloy_sol_types::SolType>::Token<'a>;
14105            const SIGNATURE: &'static str = "transferOwnership(address)";
14106            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
14107            #[inline]
14108            fn new<'a>(
14109                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14110            ) -> Self {
14111                tuple.into()
14112            }
14113            #[inline]
14114            fn tokenize(&self) -> Self::Token<'_> {
14115                (
14116                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14117                        &self.newOwner,
14118                    ),
14119                )
14120            }
14121            #[inline]
14122            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14123                transferOwnershipReturn::_tokenize(ret)
14124            }
14125            #[inline]
14126            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14127                <Self::ReturnTuple<
14128                    '_,
14129                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14130                    .map(Into::into)
14131            }
14132            #[inline]
14133            fn abi_decode_returns_with_config(
14134                data: &[u8],
14135                config: alloy_sol_types::abi::AbiDecoderConfig,
14136            ) -> alloy_sol_types::Result<Self::Return> {
14137                <Self::ReturnTuple<
14138                    '_,
14139                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14140                        data,
14141                        config,
14142                    )
14143                    .map(Into::into)
14144            }
14145            #[inline]
14146            fn abi_decode_returns_validate(
14147                data: &[u8],
14148            ) -> alloy_sol_types::Result<Self::Return> {
14149                Self::abi_decode_returns_with_config(
14150                    data,
14151                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14152                )
14153            }
14154        }
14155    };
14156    #[derive(serde::Serialize, serde::Deserialize)]
14157    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14158    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
14159```solidity
14160function updateEpochStartBlock(uint64 newEpochStartBlock) external;
14161```*/
14162    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14163    #[derive(Clone)]
14164    pub struct updateEpochStartBlockCall {
14165        #[allow(missing_docs)]
14166        pub newEpochStartBlock: u64,
14167    }
14168    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
14169    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14170    #[derive(Clone)]
14171    pub struct updateEpochStartBlockReturn {}
14172    #[allow(
14173        non_camel_case_types,
14174        non_snake_case,
14175        clippy::pub_underscore_fields,
14176        clippy::style
14177    )]
14178    const _: () = {
14179        use alloy::sol_types as alloy_sol_types;
14180        {
14181            #[doc(hidden)]
14182            #[allow(dead_code)]
14183            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14184            #[doc(hidden)]
14185            type UnderlyingRustTuple<'a> = (u64,);
14186            #[cfg(test)]
14187            #[allow(dead_code, unreachable_patterns)]
14188            fn _type_assertion(
14189                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14190            ) {
14191                match _t {
14192                    alloy_sol_types::private::AssertTypeEq::<
14193                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14194                    >(_) => {}
14195                }
14196            }
14197            #[automatically_derived]
14198            #[doc(hidden)]
14199            impl ::core::convert::From<updateEpochStartBlockCall>
14200            for UnderlyingRustTuple<'_> {
14201                fn from(value: updateEpochStartBlockCall) -> Self {
14202                    (value.newEpochStartBlock,)
14203                }
14204            }
14205            #[automatically_derived]
14206            #[doc(hidden)]
14207            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14208            for updateEpochStartBlockCall {
14209                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14210                    Self {
14211                        newEpochStartBlock: tuple.0,
14212                    }
14213                }
14214            }
14215        }
14216        {
14217            #[doc(hidden)]
14218            #[allow(dead_code)]
14219            type UnderlyingSolTuple<'a> = ();
14220            #[doc(hidden)]
14221            type UnderlyingRustTuple<'a> = ();
14222            #[cfg(test)]
14223            #[allow(dead_code, unreachable_patterns)]
14224            fn _type_assertion(
14225                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14226            ) {
14227                match _t {
14228                    alloy_sol_types::private::AssertTypeEq::<
14229                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14230                    >(_) => {}
14231                }
14232            }
14233            #[automatically_derived]
14234            #[doc(hidden)]
14235            impl ::core::convert::From<updateEpochStartBlockReturn>
14236            for UnderlyingRustTuple<'_> {
14237                fn from(value: updateEpochStartBlockReturn) -> Self {
14238                    ()
14239                }
14240            }
14241            #[automatically_derived]
14242            #[doc(hidden)]
14243            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14244            for updateEpochStartBlockReturn {
14245                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14246                    Self {}
14247                }
14248            }
14249        }
14250        impl updateEpochStartBlockReturn {
14251            fn _tokenize(
14252                &self,
14253            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
14254                '_,
14255            > {
14256                ()
14257            }
14258        }
14259        #[automatically_derived]
14260        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
14261            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14262            type Token<'a> = <Self::Parameters<
14263                'a,
14264            > as alloy_sol_types::SolType>::Token<'a>;
14265            type Return = updateEpochStartBlockReturn;
14266            type ReturnTuple<'a> = ();
14267            type ReturnToken<'a> = <Self::ReturnTuple<
14268                'a,
14269            > as alloy_sol_types::SolType>::Token<'a>;
14270            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
14271            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
14272            #[inline]
14273            fn new<'a>(
14274                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14275            ) -> Self {
14276                tuple.into()
14277            }
14278            #[inline]
14279            fn tokenize(&self) -> Self::Token<'_> {
14280                (
14281                    <alloy::sol_types::sol_data::Uint<
14282                        64,
14283                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
14284                )
14285            }
14286            #[inline]
14287            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14288                updateEpochStartBlockReturn::_tokenize(ret)
14289            }
14290            #[inline]
14291            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14292                <Self::ReturnTuple<
14293                    '_,
14294                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14295                    .map(Into::into)
14296            }
14297            #[inline]
14298            fn abi_decode_returns_with_config(
14299                data: &[u8],
14300                config: alloy_sol_types::abi::AbiDecoderConfig,
14301            ) -> alloy_sol_types::Result<Self::Return> {
14302                <Self::ReturnTuple<
14303                    '_,
14304                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14305                        data,
14306                        config,
14307                    )
14308                    .map(Into::into)
14309            }
14310            #[inline]
14311            fn abi_decode_returns_validate(
14312                data: &[u8],
14313            ) -> alloy_sol_types::Result<Self::Return> {
14314                Self::abi_decode_returns_with_config(
14315                    data,
14316                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14317                )
14318            }
14319        }
14320    };
14321    #[derive(serde::Serialize, serde::Deserialize)]
14322    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14323    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
14324```solidity
14325function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
14326```*/
14327    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14328    #[derive(Clone)]
14329    pub struct upgradeToAndCallCall {
14330        #[allow(missing_docs)]
14331        pub newImplementation: alloy::sol_types::private::Address,
14332        #[allow(missing_docs)]
14333        pub data: alloy::sol_types::private::Bytes,
14334    }
14335    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
14336    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14337    #[derive(Clone)]
14338    pub struct upgradeToAndCallReturn {}
14339    #[allow(
14340        non_camel_case_types,
14341        non_snake_case,
14342        clippy::pub_underscore_fields,
14343        clippy::style
14344    )]
14345    const _: () = {
14346        use alloy::sol_types as alloy_sol_types;
14347        {
14348            #[doc(hidden)]
14349            #[allow(dead_code)]
14350            type UnderlyingSolTuple<'a> = (
14351                alloy::sol_types::sol_data::Address,
14352                alloy::sol_types::sol_data::Bytes,
14353            );
14354            #[doc(hidden)]
14355            type UnderlyingRustTuple<'a> = (
14356                alloy::sol_types::private::Address,
14357                alloy::sol_types::private::Bytes,
14358            );
14359            #[cfg(test)]
14360            #[allow(dead_code, unreachable_patterns)]
14361            fn _type_assertion(
14362                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14363            ) {
14364                match _t {
14365                    alloy_sol_types::private::AssertTypeEq::<
14366                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14367                    >(_) => {}
14368                }
14369            }
14370            #[automatically_derived]
14371            #[doc(hidden)]
14372            impl ::core::convert::From<upgradeToAndCallCall>
14373            for UnderlyingRustTuple<'_> {
14374                fn from(value: upgradeToAndCallCall) -> Self {
14375                    (value.newImplementation, value.data)
14376                }
14377            }
14378            #[automatically_derived]
14379            #[doc(hidden)]
14380            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14381            for upgradeToAndCallCall {
14382                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14383                    Self {
14384                        newImplementation: tuple.0,
14385                        data: tuple.1,
14386                    }
14387                }
14388            }
14389        }
14390        {
14391            #[doc(hidden)]
14392            #[allow(dead_code)]
14393            type UnderlyingSolTuple<'a> = ();
14394            #[doc(hidden)]
14395            type UnderlyingRustTuple<'a> = ();
14396            #[cfg(test)]
14397            #[allow(dead_code, unreachable_patterns)]
14398            fn _type_assertion(
14399                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14400            ) {
14401                match _t {
14402                    alloy_sol_types::private::AssertTypeEq::<
14403                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14404                    >(_) => {}
14405                }
14406            }
14407            #[automatically_derived]
14408            #[doc(hidden)]
14409            impl ::core::convert::From<upgradeToAndCallReturn>
14410            for UnderlyingRustTuple<'_> {
14411                fn from(value: upgradeToAndCallReturn) -> Self {
14412                    ()
14413                }
14414            }
14415            #[automatically_derived]
14416            #[doc(hidden)]
14417            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14418            for upgradeToAndCallReturn {
14419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14420                    Self {}
14421                }
14422            }
14423        }
14424        impl upgradeToAndCallReturn {
14425            fn _tokenize(
14426                &self,
14427            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14428                ()
14429            }
14430        }
14431        #[automatically_derived]
14432        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
14433            type Parameters<'a> = (
14434                alloy::sol_types::sol_data::Address,
14435                alloy::sol_types::sol_data::Bytes,
14436            );
14437            type Token<'a> = <Self::Parameters<
14438                'a,
14439            > as alloy_sol_types::SolType>::Token<'a>;
14440            type Return = upgradeToAndCallReturn;
14441            type ReturnTuple<'a> = ();
14442            type ReturnToken<'a> = <Self::ReturnTuple<
14443                'a,
14444            > as alloy_sol_types::SolType>::Token<'a>;
14445            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
14446            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
14447            #[inline]
14448            fn new<'a>(
14449                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14450            ) -> Self {
14451                tuple.into()
14452            }
14453            #[inline]
14454            fn tokenize(&self) -> Self::Token<'_> {
14455                (
14456                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14457                        &self.newImplementation,
14458                    ),
14459                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
14460                        &self.data,
14461                    ),
14462                )
14463            }
14464            #[inline]
14465            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14466                upgradeToAndCallReturn::_tokenize(ret)
14467            }
14468            #[inline]
14469            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14470                <Self::ReturnTuple<
14471                    '_,
14472                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14473                    .map(Into::into)
14474            }
14475            #[inline]
14476            fn abi_decode_returns_with_config(
14477                data: &[u8],
14478                config: alloy_sol_types::abi::AbiDecoderConfig,
14479            ) -> alloy_sol_types::Result<Self::Return> {
14480                <Self::ReturnTuple<
14481                    '_,
14482                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14483                        data,
14484                        config,
14485                    )
14486                    .map(Into::into)
14487            }
14488            #[inline]
14489            fn abi_decode_returns_validate(
14490                data: &[u8],
14491            ) -> alloy_sol_types::Result<Self::Return> {
14492                Self::abi_decode_returns_with_config(
14493                    data,
14494                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14495                )
14496            }
14497        }
14498    };
14499    #[derive(serde::Serialize, serde::Deserialize)]
14500    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14501    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
14502```solidity
14503function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
14504```*/
14505    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14506    #[derive(Clone)]
14507    pub struct votingStakeTableStateCall;
14508    #[derive(serde::Serialize, serde::Deserialize)]
14509    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14510    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
14511    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14512    #[derive(Clone)]
14513    pub struct votingStakeTableStateReturn {
14514        #[allow(missing_docs)]
14515        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
14516        #[allow(missing_docs)]
14517        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14518        #[allow(missing_docs)]
14519        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14520        #[allow(missing_docs)]
14521        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14522    }
14523    #[allow(
14524        non_camel_case_types,
14525        non_snake_case,
14526        clippy::pub_underscore_fields,
14527        clippy::style
14528    )]
14529    const _: () = {
14530        use alloy::sol_types as alloy_sol_types;
14531        {
14532            #[doc(hidden)]
14533            #[allow(dead_code)]
14534            type UnderlyingSolTuple<'a> = ();
14535            #[doc(hidden)]
14536            type UnderlyingRustTuple<'a> = ();
14537            #[cfg(test)]
14538            #[allow(dead_code, unreachable_patterns)]
14539            fn _type_assertion(
14540                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14541            ) {
14542                match _t {
14543                    alloy_sol_types::private::AssertTypeEq::<
14544                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14545                    >(_) => {}
14546                }
14547            }
14548            #[automatically_derived]
14549            #[doc(hidden)]
14550            impl ::core::convert::From<votingStakeTableStateCall>
14551            for UnderlyingRustTuple<'_> {
14552                fn from(value: votingStakeTableStateCall) -> Self {
14553                    ()
14554                }
14555            }
14556            #[automatically_derived]
14557            #[doc(hidden)]
14558            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14559            for votingStakeTableStateCall {
14560                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14561                    Self
14562                }
14563            }
14564        }
14565        {
14566            #[doc(hidden)]
14567            #[allow(dead_code)]
14568            type UnderlyingSolTuple<'a> = (
14569                alloy::sol_types::sol_data::Uint<256>,
14570                BN254::ScalarField,
14571                BN254::ScalarField,
14572                BN254::ScalarField,
14573            );
14574            #[doc(hidden)]
14575            type UnderlyingRustTuple<'a> = (
14576                alloy::sol_types::private::primitives::aliases::U256,
14577                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14578                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14579                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14580            );
14581            #[cfg(test)]
14582            #[allow(dead_code, unreachable_patterns)]
14583            fn _type_assertion(
14584                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14585            ) {
14586                match _t {
14587                    alloy_sol_types::private::AssertTypeEq::<
14588                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14589                    >(_) => {}
14590                }
14591            }
14592            #[automatically_derived]
14593            #[doc(hidden)]
14594            impl ::core::convert::From<votingStakeTableStateReturn>
14595            for UnderlyingRustTuple<'_> {
14596                fn from(value: votingStakeTableStateReturn) -> Self {
14597                    (
14598                        value.threshold,
14599                        value.blsKeyComm,
14600                        value.schnorrKeyComm,
14601                        value.amountComm,
14602                    )
14603                }
14604            }
14605            #[automatically_derived]
14606            #[doc(hidden)]
14607            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14608            for votingStakeTableStateReturn {
14609                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14610                    Self {
14611                        threshold: tuple.0,
14612                        blsKeyComm: tuple.1,
14613                        schnorrKeyComm: tuple.2,
14614                        amountComm: tuple.3,
14615                    }
14616                }
14617            }
14618        }
14619        impl votingStakeTableStateReturn {
14620            fn _tokenize(
14621                &self,
14622            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14623                '_,
14624            > {
14625                (
14626                    <alloy::sol_types::sol_data::Uint<
14627                        256,
14628                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
14629                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14630                        &self.blsKeyComm,
14631                    ),
14632                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14633                        &self.schnorrKeyComm,
14634                    ),
14635                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14636                        &self.amountComm,
14637                    ),
14638                )
14639            }
14640        }
14641        #[automatically_derived]
14642        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
14643            type Parameters<'a> = ();
14644            type Token<'a> = <Self::Parameters<
14645                'a,
14646            > as alloy_sol_types::SolType>::Token<'a>;
14647            type Return = votingStakeTableStateReturn;
14648            type ReturnTuple<'a> = (
14649                alloy::sol_types::sol_data::Uint<256>,
14650                BN254::ScalarField,
14651                BN254::ScalarField,
14652                BN254::ScalarField,
14653            );
14654            type ReturnToken<'a> = <Self::ReturnTuple<
14655                'a,
14656            > as alloy_sol_types::SolType>::Token<'a>;
14657            const SIGNATURE: &'static str = "votingStakeTableState()";
14658            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
14659            #[inline]
14660            fn new<'a>(
14661                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14662            ) -> Self {
14663                tuple.into()
14664            }
14665            #[inline]
14666            fn tokenize(&self) -> Self::Token<'_> {
14667                ()
14668            }
14669            #[inline]
14670            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14671                votingStakeTableStateReturn::_tokenize(ret)
14672            }
14673            #[inline]
14674            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14675                <Self::ReturnTuple<
14676                    '_,
14677                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14678                    .map(Into::into)
14679            }
14680            #[inline]
14681            fn abi_decode_returns_with_config(
14682                data: &[u8],
14683                config: alloy_sol_types::abi::AbiDecoderConfig,
14684            ) -> alloy_sol_types::Result<Self::Return> {
14685                <Self::ReturnTuple<
14686                    '_,
14687                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
14688                        data,
14689                        config,
14690                    )
14691                    .map(Into::into)
14692            }
14693            #[inline]
14694            fn abi_decode_returns_validate(
14695                data: &[u8],
14696            ) -> alloy_sol_types::Result<Self::Return> {
14697                Self::abi_decode_returns_with_config(
14698                    data,
14699                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
14700                )
14701            }
14702        }
14703    };
14704    ///Container for all the [`LightClientV3`](self) function calls.
14705    #[derive(Clone)]
14706    #[derive(serde::Serialize, serde::Deserialize)]
14707    #[derive(Debug, PartialEq, Eq, Hash)]
14708    pub enum LightClientV3Calls {
14709        #[allow(missing_docs)]
14710        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
14711        #[allow(missing_docs)]
14712        _getVk(_getVkCall),
14713        #[allow(missing_docs)]
14714        authRoot(authRootCall),
14715        #[allow(missing_docs)]
14716        blocksPerEpoch(blocksPerEpochCall),
14717        #[allow(missing_docs)]
14718        currentBlockNumber(currentBlockNumberCall),
14719        #[allow(missing_docs)]
14720        currentEpoch(currentEpochCall),
14721        #[allow(missing_docs)]
14722        disablePermissionedProverMode(disablePermissionedProverModeCall),
14723        #[allow(missing_docs)]
14724        epochFromBlockNumber(epochFromBlockNumberCall),
14725        #[allow(missing_docs)]
14726        epochStartBlock(epochStartBlockCall),
14727        #[allow(missing_docs)]
14728        finalizedState(finalizedStateCall),
14729        #[allow(missing_docs)]
14730        genesisStakeTableState(genesisStakeTableStateCall),
14731        #[allow(missing_docs)]
14732        genesisState(genesisStateCall),
14733        #[allow(missing_docs)]
14734        getHotShotCommitment(getHotShotCommitmentCall),
14735        #[allow(missing_docs)]
14736        getStateHistoryCount(getStateHistoryCountCall),
14737        #[allow(missing_docs)]
14738        getVersion(getVersionCall),
14739        #[allow(missing_docs)]
14740        initialize(initializeCall),
14741        #[allow(missing_docs)]
14742        initializeV2(initializeV2Call),
14743        #[allow(missing_docs)]
14744        initializeV3(initializeV3Call),
14745        #[allow(missing_docs)]
14746        isEpochRoot(isEpochRootCall),
14747        #[allow(missing_docs)]
14748        isGtEpochRoot(isGtEpochRootCall),
14749        #[allow(missing_docs)]
14750        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
14751        #[allow(missing_docs)]
14752        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
14753        #[allow(missing_docs)]
14754        newFinalizedState_0(newFinalizedState_0Call),
14755        #[allow(missing_docs)]
14756        newFinalizedState_1(newFinalizedState_1Call),
14757        #[allow(missing_docs)]
14758        newFinalizedState_2(newFinalizedState_2Call),
14759        #[allow(missing_docs)]
14760        owner(ownerCall),
14761        #[allow(missing_docs)]
14762        permissionedProver(permissionedProverCall),
14763        #[allow(missing_docs)]
14764        proxiableUUID(proxiableUUIDCall),
14765        #[allow(missing_docs)]
14766        renounceOwnership(renounceOwnershipCall),
14767        #[allow(missing_docs)]
14768        setPermissionedProver(setPermissionedProverCall),
14769        #[allow(missing_docs)]
14770        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
14771        #[allow(missing_docs)]
14772        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
14773        #[allow(missing_docs)]
14774        stateHistoryCommitments(stateHistoryCommitmentsCall),
14775        #[allow(missing_docs)]
14776        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
14777        #[allow(missing_docs)]
14778        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
14779        #[allow(missing_docs)]
14780        transferOwnership(transferOwnershipCall),
14781        #[allow(missing_docs)]
14782        updateEpochStartBlock(updateEpochStartBlockCall),
14783        #[allow(missing_docs)]
14784        upgradeToAndCall(upgradeToAndCallCall),
14785        #[allow(missing_docs)]
14786        votingStakeTableState(votingStakeTableStateCall),
14787    }
14788    impl LightClientV3Calls {
14789        /// All the selectors of this enum.
14790        ///
14791        /// Note that the selectors might not be in the same order as the variants.
14792        /// No guarantees are made about the order of the selectors.
14793        ///
14794        /// Prefer using `SolInterface` methods instead.
14795        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14796            [1u8, 63u8, 165u8, 252u8],
14797            [2u8, 181u8, 146u8, 243u8],
14798            [6u8, 37u8, 225u8, 155u8],
14799            [13u8, 142u8, 110u8, 44u8],
14800            [18u8, 23u8, 60u8, 44u8],
14801            [22u8, 122u8, 198u8, 24u8],
14802            [32u8, 99u8, 212u8, 247u8],
14803            [37u8, 41u8, 116u8, 39u8],
14804            [47u8, 121u8, 136u8, 157u8],
14805            [48u8, 12u8, 137u8, 221u8],
14806            [49u8, 61u8, 247u8, 177u8],
14807            [55u8, 142u8, 194u8, 59u8],
14808            [56u8, 228u8, 84u8, 177u8],
14809            [62u8, 213u8, 91u8, 123u8],
14810            [66u8, 109u8, 49u8, 148u8],
14811            [67u8, 61u8, 186u8, 159u8],
14812            [79u8, 30u8, 242u8, 134u8],
14813            [82u8, 209u8, 144u8, 45u8],
14814            [105u8, 204u8, 106u8, 4u8],
14815            [113u8, 80u8, 24u8, 166u8],
14816            [117u8, 124u8, 55u8, 173u8],
14817            [118u8, 103u8, 24u8, 8u8],
14818            [130u8, 110u8, 65u8, 252u8],
14819            [133u8, 132u8, 210u8, 63u8],
14820            [141u8, 165u8, 203u8, 91u8],
14821            [144u8, 193u8, 67u8, 144u8],
14822            [150u8, 193u8, 202u8, 97u8],
14823            [153u8, 131u8, 40u8, 232u8],
14824            [155u8, 170u8, 60u8, 201u8],
14825            [159u8, 219u8, 84u8, 167u8],
14826            [170u8, 189u8, 93u8, 179u8],
14827            [173u8, 60u8, 177u8, 204u8],
14828            [179u8, 59u8, 196u8, 145u8],
14829            [194u8, 59u8, 158u8, 158u8],
14830            [210u8, 77u8, 147u8, 61u8],
14831            [224u8, 48u8, 51u8, 1u8],
14832            [240u8, 104u8, 32u8, 84u8],
14833            [242u8, 253u8, 227u8, 139u8],
14834            [249u8, 229u8, 13u8, 25u8],
14835        ];
14836        /// The names of the variants in the same order as `SELECTORS`.
14837        pub const VARIANT_NAMES: &'static [&'static str] = &[
14838            ::core::stringify!(setPermissionedProver),
14839            ::core::stringify!(stateHistoryCommitments),
14840            ::core::stringify!(votingStakeTableState),
14841            ::core::stringify!(getVersion),
14842            ::core::stringify!(_getVk),
14843            ::core::stringify!(updateEpochStartBlock),
14844            ::core::stringify!(newFinalizedState_0),
14845            ::core::stringify!(isEpochRoot),
14846            ::core::stringify!(stateHistoryFirstIndex),
14847            ::core::stringify!(isGtEpochRoot),
14848            ::core::stringify!(permissionedProver),
14849            ::core::stringify!(currentBlockNumber),
14850            ::core::stringify!(initializeV3),
14851            ::core::stringify!(epochStartBlock),
14852            ::core::stringify!(genesisStakeTableState),
14853            ::core::stringify!(setStateHistoryRetentionPeriod),
14854            ::core::stringify!(upgradeToAndCall),
14855            ::core::stringify!(proxiableUUID),
14856            ::core::stringify!(disablePermissionedProverMode),
14857            ::core::stringify!(renounceOwnership),
14858            ::core::stringify!(newFinalizedState_1),
14859            ::core::stringify!(currentEpoch),
14860            ::core::stringify!(isPermissionedProverEnabled),
14861            ::core::stringify!(getHotShotCommitment),
14862            ::core::stringify!(owner),
14863            ::core::stringify!(epochFromBlockNumber),
14864            ::core::stringify!(setstateHistoryRetentionPeriod),
14865            ::core::stringify!(authRoot),
14866            ::core::stringify!(initialize),
14867            ::core::stringify!(finalizedState),
14868            ::core::stringify!(newFinalizedState_2),
14869            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
14870            ::core::stringify!(initializeV2),
14871            ::core::stringify!(stateHistoryRetentionPeriod),
14872            ::core::stringify!(genesisState),
14873            ::core::stringify!(lagOverEscapeHatchThreshold),
14874            ::core::stringify!(blocksPerEpoch),
14875            ::core::stringify!(transferOwnership),
14876            ::core::stringify!(getStateHistoryCount),
14877        ];
14878        /// The signatures in the same order as `SELECTORS`.
14879        pub const SIGNATURES: &'static [&'static str] = &[
14880            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
14881            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
14882            <votingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14883            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
14884            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
14885            <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
14886            <newFinalizedState_0Call as alloy_sol_types::SolCall>::SIGNATURE,
14887            <isEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
14888            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
14889            <isGtEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
14890            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
14891            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
14892            <initializeV3Call as alloy_sol_types::SolCall>::SIGNATURE,
14893            <epochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
14894            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14895            <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
14896            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
14897            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
14898            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
14899            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
14900            <newFinalizedState_1Call as alloy_sol_types::SolCall>::SIGNATURE,
14901            <currentEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
14902            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
14903            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
14904            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
14905            <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
14906            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
14907            <authRootCall as alloy_sol_types::SolCall>::SIGNATURE,
14908            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
14909            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14910            <newFinalizedState_2Call as alloy_sol_types::SolCall>::SIGNATURE,
14911            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
14912            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
14913            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
14914            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
14915            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
14916            <blocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
14917            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
14918            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
14919        ];
14920        /// Returns the signature for the given selector, if known.
14921        #[inline]
14922        pub fn signature_by_selector(
14923            selector: [u8; 4usize],
14924        ) -> ::core::option::Option<&'static str> {
14925            match Self::SELECTORS.binary_search(&selector) {
14926                ::core::result::Result::Ok(idx) => {
14927                    ::core::option::Option::Some(Self::SIGNATURES[idx])
14928                }
14929                ::core::result::Result::Err(_) => ::core::option::Option::None,
14930            }
14931        }
14932        /// Returns the enum variant name for the given selector, if known.
14933        #[inline]
14934        pub fn name_by_selector(
14935            selector: [u8; 4usize],
14936        ) -> ::core::option::Option<&'static str> {
14937            let sig = Self::signature_by_selector(selector)?;
14938            sig.split_once('(').map(|(name, _)| name)
14939        }
14940    }
14941    #[automatically_derived]
14942    impl alloy_sol_types::SolInterface for LightClientV3Calls {
14943        const NAME: &'static str = "LightClientV3Calls";
14944        const MIN_DATA_LENGTH: usize = 0usize;
14945        const COUNT: usize = 39usize;
14946        #[inline]
14947        fn selector(&self) -> [u8; 4] {
14948            match self {
14949                Self::UPGRADE_INTERFACE_VERSION(_) => {
14950                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
14951                }
14952                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
14953                Self::authRoot(_) => <authRootCall as alloy_sol_types::SolCall>::SELECTOR,
14954                Self::blocksPerEpoch(_) => {
14955                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
14956                }
14957                Self::currentBlockNumber(_) => {
14958                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14959                }
14960                Self::currentEpoch(_) => {
14961                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
14962                }
14963                Self::disablePermissionedProverMode(_) => {
14964                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
14965                }
14966                Self::epochFromBlockNumber(_) => {
14967                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14968                }
14969                Self::epochStartBlock(_) => {
14970                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14971                }
14972                Self::finalizedState(_) => {
14973                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
14974                }
14975                Self::genesisStakeTableState(_) => {
14976                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14977                }
14978                Self::genesisState(_) => {
14979                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
14980                }
14981                Self::getHotShotCommitment(_) => {
14982                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
14983                }
14984                Self::getStateHistoryCount(_) => {
14985                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
14986                }
14987                Self::getVersion(_) => {
14988                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
14989                }
14990                Self::initialize(_) => {
14991                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
14992                }
14993                Self::initializeV2(_) => {
14994                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
14995                }
14996                Self::initializeV3(_) => {
14997                    <initializeV3Call as alloy_sol_types::SolCall>::SELECTOR
14998                }
14999                Self::isEpochRoot(_) => {
15000                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
15001                }
15002                Self::isGtEpochRoot(_) => {
15003                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
15004                }
15005                Self::isPermissionedProverEnabled(_) => {
15006                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
15007                }
15008                Self::lagOverEscapeHatchThreshold(_) => {
15009                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
15010                }
15011                Self::newFinalizedState_0(_) => {
15012                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
15013                }
15014                Self::newFinalizedState_1(_) => {
15015                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
15016                }
15017                Self::newFinalizedState_2(_) => {
15018                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::SELECTOR
15019                }
15020                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
15021                Self::permissionedProver(_) => {
15022                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15023                }
15024                Self::proxiableUUID(_) => {
15025                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
15026                }
15027                Self::renounceOwnership(_) => {
15028                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15029                }
15030                Self::setPermissionedProver(_) => {
15031                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
15032                }
15033                Self::setStateHistoryRetentionPeriod(_) => {
15034                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15035                }
15036                Self::setstateHistoryRetentionPeriod(_) => {
15037                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15038                }
15039                Self::stateHistoryCommitments(_) => {
15040                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
15041                }
15042                Self::stateHistoryFirstIndex(_) => {
15043                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
15044                }
15045                Self::stateHistoryRetentionPeriod(_) => {
15046                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15047                }
15048                Self::transferOwnership(_) => {
15049                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15050                }
15051                Self::updateEpochStartBlock(_) => {
15052                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
15053                }
15054                Self::upgradeToAndCall(_) => {
15055                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
15056                }
15057                Self::votingStakeTableState(_) => {
15058                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15059                }
15060            }
15061        }
15062        #[inline]
15063        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15064            Self::SELECTORS.get(i).copied()
15065        }
15066        #[inline]
15067        fn valid_selector(selector: [u8; 4]) -> bool {
15068            Self::SELECTORS.binary_search(&selector).is_ok()
15069        }
15070        #[inline]
15071        #[allow(non_snake_case)]
15072        fn abi_decode_raw(
15073            selector: [u8; 4],
15074            data: &[u8],
15075        ) -> alloy_sol_types::Result<Self> {
15076            Self::abi_decode_raw_with_config(
15077                selector,
15078                data,
15079                alloy_sol_types::abi::AbiDecoderConfig::default(),
15080            )
15081        }
15082        #[inline]
15083        #[allow(non_snake_case)]
15084        fn abi_decode_raw_with_config(
15085            selector: [u8; 4],
15086            data: &[u8],
15087            config: alloy_sol_types::abi::AbiDecoderConfig,
15088        ) -> alloy_sol_types::Result<Self> {
15089            static DECODE_SHIMS: &[fn(
15090                &[u8],
15091                alloy_sol_types::abi::AbiDecoderConfig,
15092            ) -> alloy_sol_types::Result<LightClientV3Calls>] = &[
15093                {
15094                    fn setPermissionedProver(
15095                        data: &[u8],
15096                        config: alloy_sol_types::abi::AbiDecoderConfig,
15097                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15098                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15099                                data,
15100                                config,
15101                            )
15102                            .map(LightClientV3Calls::setPermissionedProver)
15103                    }
15104                    setPermissionedProver
15105                },
15106                {
15107                    fn stateHistoryCommitments(
15108                        data: &[u8],
15109                        config: alloy_sol_types::abi::AbiDecoderConfig,
15110                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15111                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15112                                data,
15113                                config,
15114                            )
15115                            .map(LightClientV3Calls::stateHistoryCommitments)
15116                    }
15117                    stateHistoryCommitments
15118                },
15119                {
15120                    fn votingStakeTableState(
15121                        data: &[u8],
15122                        config: alloy_sol_types::abi::AbiDecoderConfig,
15123                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15124                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15125                                data,
15126                                config,
15127                            )
15128                            .map(LightClientV3Calls::votingStakeTableState)
15129                    }
15130                    votingStakeTableState
15131                },
15132                {
15133                    fn getVersion(
15134                        data: &[u8],
15135                        config: alloy_sol_types::abi::AbiDecoderConfig,
15136                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15137                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15138                                data,
15139                                config,
15140                            )
15141                            .map(LightClientV3Calls::getVersion)
15142                    }
15143                    getVersion
15144                },
15145                {
15146                    fn _getVk(
15147                        data: &[u8],
15148                        config: alloy_sol_types::abi::AbiDecoderConfig,
15149                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15150                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15151                                data,
15152                                config,
15153                            )
15154                            .map(LightClientV3Calls::_getVk)
15155                    }
15156                    _getVk
15157                },
15158                {
15159                    fn updateEpochStartBlock(
15160                        data: &[u8],
15161                        config: alloy_sol_types::abi::AbiDecoderConfig,
15162                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15163                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15164                                data,
15165                                config,
15166                            )
15167                            .map(LightClientV3Calls::updateEpochStartBlock)
15168                    }
15169                    updateEpochStartBlock
15170                },
15171                {
15172                    fn newFinalizedState_0(
15173                        data: &[u8],
15174                        config: alloy_sol_types::abi::AbiDecoderConfig,
15175                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15176                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15177                                data,
15178                                config,
15179                            )
15180                            .map(LightClientV3Calls::newFinalizedState_0)
15181                    }
15182                    newFinalizedState_0
15183                },
15184                {
15185                    fn isEpochRoot(
15186                        data: &[u8],
15187                        config: alloy_sol_types::abi::AbiDecoderConfig,
15188                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15189                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15190                                data,
15191                                config,
15192                            )
15193                            .map(LightClientV3Calls::isEpochRoot)
15194                    }
15195                    isEpochRoot
15196                },
15197                {
15198                    fn stateHistoryFirstIndex(
15199                        data: &[u8],
15200                        config: alloy_sol_types::abi::AbiDecoderConfig,
15201                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15202                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15203                                data,
15204                                config,
15205                            )
15206                            .map(LightClientV3Calls::stateHistoryFirstIndex)
15207                    }
15208                    stateHistoryFirstIndex
15209                },
15210                {
15211                    fn isGtEpochRoot(
15212                        data: &[u8],
15213                        config: alloy_sol_types::abi::AbiDecoderConfig,
15214                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15215                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15216                                data,
15217                                config,
15218                            )
15219                            .map(LightClientV3Calls::isGtEpochRoot)
15220                    }
15221                    isGtEpochRoot
15222                },
15223                {
15224                    fn permissionedProver(
15225                        data: &[u8],
15226                        config: alloy_sol_types::abi::AbiDecoderConfig,
15227                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15228                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15229                                data,
15230                                config,
15231                            )
15232                            .map(LightClientV3Calls::permissionedProver)
15233                    }
15234                    permissionedProver
15235                },
15236                {
15237                    fn currentBlockNumber(
15238                        data: &[u8],
15239                        config: alloy_sol_types::abi::AbiDecoderConfig,
15240                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15241                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15242                                data,
15243                                config,
15244                            )
15245                            .map(LightClientV3Calls::currentBlockNumber)
15246                    }
15247                    currentBlockNumber
15248                },
15249                {
15250                    fn initializeV3(
15251                        data: &[u8],
15252                        config: alloy_sol_types::abi::AbiDecoderConfig,
15253                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15254                        <initializeV3Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15255                                data,
15256                                config,
15257                            )
15258                            .map(LightClientV3Calls::initializeV3)
15259                    }
15260                    initializeV3
15261                },
15262                {
15263                    fn epochStartBlock(
15264                        data: &[u8],
15265                        config: alloy_sol_types::abi::AbiDecoderConfig,
15266                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15267                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15268                                data,
15269                                config,
15270                            )
15271                            .map(LightClientV3Calls::epochStartBlock)
15272                    }
15273                    epochStartBlock
15274                },
15275                {
15276                    fn genesisStakeTableState(
15277                        data: &[u8],
15278                        config: alloy_sol_types::abi::AbiDecoderConfig,
15279                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15280                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15281                                data,
15282                                config,
15283                            )
15284                            .map(LightClientV3Calls::genesisStakeTableState)
15285                    }
15286                    genesisStakeTableState
15287                },
15288                {
15289                    fn setStateHistoryRetentionPeriod(
15290                        data: &[u8],
15291                        config: alloy_sol_types::abi::AbiDecoderConfig,
15292                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15293                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15294                                data,
15295                                config,
15296                            )
15297                            .map(LightClientV3Calls::setStateHistoryRetentionPeriod)
15298                    }
15299                    setStateHistoryRetentionPeriod
15300                },
15301                {
15302                    fn upgradeToAndCall(
15303                        data: &[u8],
15304                        config: alloy_sol_types::abi::AbiDecoderConfig,
15305                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15306                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15307                                data,
15308                                config,
15309                            )
15310                            .map(LightClientV3Calls::upgradeToAndCall)
15311                    }
15312                    upgradeToAndCall
15313                },
15314                {
15315                    fn proxiableUUID(
15316                        data: &[u8],
15317                        config: alloy_sol_types::abi::AbiDecoderConfig,
15318                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15319                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15320                                data,
15321                                config,
15322                            )
15323                            .map(LightClientV3Calls::proxiableUUID)
15324                    }
15325                    proxiableUUID
15326                },
15327                {
15328                    fn disablePermissionedProverMode(
15329                        data: &[u8],
15330                        config: alloy_sol_types::abi::AbiDecoderConfig,
15331                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15332                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15333                                data,
15334                                config,
15335                            )
15336                            .map(LightClientV3Calls::disablePermissionedProverMode)
15337                    }
15338                    disablePermissionedProverMode
15339                },
15340                {
15341                    fn renounceOwnership(
15342                        data: &[u8],
15343                        config: alloy_sol_types::abi::AbiDecoderConfig,
15344                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15345                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15346                                data,
15347                                config,
15348                            )
15349                            .map(LightClientV3Calls::renounceOwnership)
15350                    }
15351                    renounceOwnership
15352                },
15353                {
15354                    fn newFinalizedState_1(
15355                        data: &[u8],
15356                        config: alloy_sol_types::abi::AbiDecoderConfig,
15357                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15358                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15359                                data,
15360                                config,
15361                            )
15362                            .map(LightClientV3Calls::newFinalizedState_1)
15363                    }
15364                    newFinalizedState_1
15365                },
15366                {
15367                    fn currentEpoch(
15368                        data: &[u8],
15369                        config: alloy_sol_types::abi::AbiDecoderConfig,
15370                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15371                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15372                                data,
15373                                config,
15374                            )
15375                            .map(LightClientV3Calls::currentEpoch)
15376                    }
15377                    currentEpoch
15378                },
15379                {
15380                    fn isPermissionedProverEnabled(
15381                        data: &[u8],
15382                        config: alloy_sol_types::abi::AbiDecoderConfig,
15383                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15384                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15385                                data,
15386                                config,
15387                            )
15388                            .map(LightClientV3Calls::isPermissionedProverEnabled)
15389                    }
15390                    isPermissionedProverEnabled
15391                },
15392                {
15393                    fn getHotShotCommitment(
15394                        data: &[u8],
15395                        config: alloy_sol_types::abi::AbiDecoderConfig,
15396                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15397                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15398                                data,
15399                                config,
15400                            )
15401                            .map(LightClientV3Calls::getHotShotCommitment)
15402                    }
15403                    getHotShotCommitment
15404                },
15405                {
15406                    fn owner(
15407                        data: &[u8],
15408                        config: alloy_sol_types::abi::AbiDecoderConfig,
15409                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15410                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15411                                data,
15412                                config,
15413                            )
15414                            .map(LightClientV3Calls::owner)
15415                    }
15416                    owner
15417                },
15418                {
15419                    fn epochFromBlockNumber(
15420                        data: &[u8],
15421                        config: alloy_sol_types::abi::AbiDecoderConfig,
15422                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15423                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15424                                data,
15425                                config,
15426                            )
15427                            .map(LightClientV3Calls::epochFromBlockNumber)
15428                    }
15429                    epochFromBlockNumber
15430                },
15431                {
15432                    fn setstateHistoryRetentionPeriod(
15433                        data: &[u8],
15434                        config: alloy_sol_types::abi::AbiDecoderConfig,
15435                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15436                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15437                                data,
15438                                config,
15439                            )
15440                            .map(LightClientV3Calls::setstateHistoryRetentionPeriod)
15441                    }
15442                    setstateHistoryRetentionPeriod
15443                },
15444                {
15445                    fn authRoot(
15446                        data: &[u8],
15447                        config: alloy_sol_types::abi::AbiDecoderConfig,
15448                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15449                        <authRootCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15450                                data,
15451                                config,
15452                            )
15453                            .map(LightClientV3Calls::authRoot)
15454                    }
15455                    authRoot
15456                },
15457                {
15458                    fn initialize(
15459                        data: &[u8],
15460                        config: alloy_sol_types::abi::AbiDecoderConfig,
15461                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15462                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15463                                data,
15464                                config,
15465                            )
15466                            .map(LightClientV3Calls::initialize)
15467                    }
15468                    initialize
15469                },
15470                {
15471                    fn finalizedState(
15472                        data: &[u8],
15473                        config: alloy_sol_types::abi::AbiDecoderConfig,
15474                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15475                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15476                                data,
15477                                config,
15478                            )
15479                            .map(LightClientV3Calls::finalizedState)
15480                    }
15481                    finalizedState
15482                },
15483                {
15484                    fn newFinalizedState_2(
15485                        data: &[u8],
15486                        config: alloy_sol_types::abi::AbiDecoderConfig,
15487                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15488                        <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15489                                data,
15490                                config,
15491                            )
15492                            .map(LightClientV3Calls::newFinalizedState_2)
15493                    }
15494                    newFinalizedState_2
15495                },
15496                {
15497                    fn UPGRADE_INTERFACE_VERSION(
15498                        data: &[u8],
15499                        config: alloy_sol_types::abi::AbiDecoderConfig,
15500                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15501                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15502                                data,
15503                                config,
15504                            )
15505                            .map(LightClientV3Calls::UPGRADE_INTERFACE_VERSION)
15506                    }
15507                    UPGRADE_INTERFACE_VERSION
15508                },
15509                {
15510                    fn initializeV2(
15511                        data: &[u8],
15512                        config: alloy_sol_types::abi::AbiDecoderConfig,
15513                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15514                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15515                                data,
15516                                config,
15517                            )
15518                            .map(LightClientV3Calls::initializeV2)
15519                    }
15520                    initializeV2
15521                },
15522                {
15523                    fn stateHistoryRetentionPeriod(
15524                        data: &[u8],
15525                        config: alloy_sol_types::abi::AbiDecoderConfig,
15526                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15527                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15528                                data,
15529                                config,
15530                            )
15531                            .map(LightClientV3Calls::stateHistoryRetentionPeriod)
15532                    }
15533                    stateHistoryRetentionPeriod
15534                },
15535                {
15536                    fn genesisState(
15537                        data: &[u8],
15538                        config: alloy_sol_types::abi::AbiDecoderConfig,
15539                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15540                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15541                                data,
15542                                config,
15543                            )
15544                            .map(LightClientV3Calls::genesisState)
15545                    }
15546                    genesisState
15547                },
15548                {
15549                    fn lagOverEscapeHatchThreshold(
15550                        data: &[u8],
15551                        config: alloy_sol_types::abi::AbiDecoderConfig,
15552                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15553                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15554                                data,
15555                                config,
15556                            )
15557                            .map(LightClientV3Calls::lagOverEscapeHatchThreshold)
15558                    }
15559                    lagOverEscapeHatchThreshold
15560                },
15561                {
15562                    fn blocksPerEpoch(
15563                        data: &[u8],
15564                        config: alloy_sol_types::abi::AbiDecoderConfig,
15565                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15566                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15567                                data,
15568                                config,
15569                            )
15570                            .map(LightClientV3Calls::blocksPerEpoch)
15571                    }
15572                    blocksPerEpoch
15573                },
15574                {
15575                    fn transferOwnership(
15576                        data: &[u8],
15577                        config: alloy_sol_types::abi::AbiDecoderConfig,
15578                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15579                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15580                                data,
15581                                config,
15582                            )
15583                            .map(LightClientV3Calls::transferOwnership)
15584                    }
15585                    transferOwnership
15586                },
15587                {
15588                    fn getStateHistoryCount(
15589                        data: &[u8],
15590                        config: alloy_sol_types::abi::AbiDecoderConfig,
15591                    ) -> alloy_sol_types::Result<LightClientV3Calls> {
15592                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
15593                                data,
15594                                config,
15595                            )
15596                            .map(LightClientV3Calls::getStateHistoryCount)
15597                    }
15598                    getStateHistoryCount
15599                },
15600            ];
15601            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15602                return Err(
15603                    alloy_sol_types::Error::unknown_selector(
15604                        <Self as alloy_sol_types::SolInterface>::NAME,
15605                        selector,
15606                    ),
15607                );
15608            };
15609            DECODE_SHIMS[idx](data, config)
15610        }
15611        #[inline]
15612        #[allow(non_snake_case)]
15613        fn abi_decode_raw_validate(
15614            selector: [u8; 4],
15615            data: &[u8],
15616        ) -> alloy_sol_types::Result<Self> {
15617            Self::abi_decode_raw_with_config(
15618                selector,
15619                data,
15620                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
15621            )
15622        }
15623        #[inline]
15624        fn abi_encoded_size(&self) -> usize {
15625            match self {
15626                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15627                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
15628                        inner,
15629                    )
15630                }
15631                Self::_getVk(inner) => {
15632                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15633                }
15634                Self::authRoot(inner) => {
15635                    <authRootCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15636                }
15637                Self::blocksPerEpoch(inner) => {
15638                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15639                        inner,
15640                    )
15641                }
15642                Self::currentBlockNumber(inner) => {
15643                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15644                        inner,
15645                    )
15646                }
15647                Self::currentEpoch(inner) => {
15648                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
15649                        inner,
15650                    )
15651                }
15652                Self::disablePermissionedProverMode(inner) => {
15653                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
15654                        inner,
15655                    )
15656                }
15657                Self::epochFromBlockNumber(inner) => {
15658                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
15659                        inner,
15660                    )
15661                }
15662                Self::epochStartBlock(inner) => {
15663                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15664                        inner,
15665                    )
15666                }
15667                Self::finalizedState(inner) => {
15668                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15669                        inner,
15670                    )
15671                }
15672                Self::genesisStakeTableState(inner) => {
15673                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15674                        inner,
15675                    )
15676                }
15677                Self::genesisState(inner) => {
15678                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15679                        inner,
15680                    )
15681                }
15682                Self::getHotShotCommitment(inner) => {
15683                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
15684                        inner,
15685                    )
15686                }
15687                Self::getStateHistoryCount(inner) => {
15688                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
15689                        inner,
15690                    )
15691                }
15692                Self::getVersion(inner) => {
15693                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15694                }
15695                Self::initialize(inner) => {
15696                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15697                }
15698                Self::initializeV2(inner) => {
15699                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15700                        inner,
15701                    )
15702                }
15703                Self::initializeV3(inner) => {
15704                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encoded_size(
15705                        inner,
15706                    )
15707                }
15708                Self::isEpochRoot(inner) => {
15709                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15710                        inner,
15711                    )
15712                }
15713                Self::isGtEpochRoot(inner) => {
15714                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
15715                        inner,
15716                    )
15717                }
15718                Self::isPermissionedProverEnabled(inner) => {
15719                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
15720                        inner,
15721                    )
15722                }
15723                Self::lagOverEscapeHatchThreshold(inner) => {
15724                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
15725                        inner,
15726                    )
15727                }
15728                Self::newFinalizedState_0(inner) => {
15729                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
15730                        inner,
15731                    )
15732                }
15733                Self::newFinalizedState_1(inner) => {
15734                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
15735                        inner,
15736                    )
15737                }
15738                Self::newFinalizedState_2(inner) => {
15739                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encoded_size(
15740                        inner,
15741                    )
15742                }
15743                Self::owner(inner) => {
15744                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
15745                }
15746                Self::permissionedProver(inner) => {
15747                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15748                        inner,
15749                    )
15750                }
15751                Self::proxiableUUID(inner) => {
15752                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
15753                        inner,
15754                    )
15755                }
15756                Self::renounceOwnership(inner) => {
15757                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15758                        inner,
15759                    )
15760                }
15761                Self::setPermissionedProver(inner) => {
15762                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
15763                        inner,
15764                    )
15765                }
15766                Self::setStateHistoryRetentionPeriod(inner) => {
15767                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15768                        inner,
15769                    )
15770                }
15771                Self::setstateHistoryRetentionPeriod(inner) => {
15772                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15773                        inner,
15774                    )
15775                }
15776                Self::stateHistoryCommitments(inner) => {
15777                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
15778                        inner,
15779                    )
15780                }
15781                Self::stateHistoryFirstIndex(inner) => {
15782                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
15783                        inner,
15784                    )
15785                }
15786                Self::stateHistoryRetentionPeriod(inner) => {
15787                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
15788                        inner,
15789                    )
15790                }
15791                Self::transferOwnership(inner) => {
15792                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
15793                        inner,
15794                    )
15795                }
15796                Self::updateEpochStartBlock(inner) => {
15797                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
15798                        inner,
15799                    )
15800                }
15801                Self::upgradeToAndCall(inner) => {
15802                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
15803                        inner,
15804                    )
15805                }
15806                Self::votingStakeTableState(inner) => {
15807                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
15808                        inner,
15809                    )
15810                }
15811            }
15812        }
15813        #[inline]
15814        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15815            match self {
15816                Self::UPGRADE_INTERFACE_VERSION(inner) => {
15817                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
15818                        inner,
15819                        out,
15820                    )
15821                }
15822                Self::_getVk(inner) => {
15823                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15824                }
15825                Self::authRoot(inner) => {
15826                    <authRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15827                        inner,
15828                        out,
15829                    )
15830                }
15831                Self::blocksPerEpoch(inner) => {
15832                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15833                        inner,
15834                        out,
15835                    )
15836                }
15837                Self::currentBlockNumber(inner) => {
15838                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15839                        inner,
15840                        out,
15841                    )
15842                }
15843                Self::currentEpoch(inner) => {
15844                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
15845                        inner,
15846                        out,
15847                    )
15848                }
15849                Self::disablePermissionedProverMode(inner) => {
15850                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15851                        inner,
15852                        out,
15853                    )
15854                }
15855                Self::epochFromBlockNumber(inner) => {
15856                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
15857                        inner,
15858                        out,
15859                    )
15860                }
15861                Self::epochStartBlock(inner) => {
15862                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
15863                        inner,
15864                        out,
15865                    )
15866                }
15867                Self::finalizedState(inner) => {
15868                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15869                        inner,
15870                        out,
15871                    )
15872                }
15873                Self::genesisStakeTableState(inner) => {
15874                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15875                        inner,
15876                        out,
15877                    )
15878                }
15879                Self::genesisState(inner) => {
15880                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
15881                        inner,
15882                        out,
15883                    )
15884                }
15885                Self::getHotShotCommitment(inner) => {
15886                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
15887                        inner,
15888                        out,
15889                    )
15890                }
15891                Self::getStateHistoryCount(inner) => {
15892                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
15893                        inner,
15894                        out,
15895                    )
15896                }
15897                Self::getVersion(inner) => {
15898                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
15899                        inner,
15900                        out,
15901                    )
15902                }
15903                Self::initialize(inner) => {
15904                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
15905                        inner,
15906                        out,
15907                    )
15908                }
15909                Self::initializeV2(inner) => {
15910                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15911                        inner,
15912                        out,
15913                    )
15914                }
15915                Self::initializeV3(inner) => {
15916                    <initializeV3Call as alloy_sol_types::SolCall>::abi_encode_raw(
15917                        inner,
15918                        out,
15919                    )
15920                }
15921                Self::isEpochRoot(inner) => {
15922                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15923                        inner,
15924                        out,
15925                    )
15926                }
15927                Self::isGtEpochRoot(inner) => {
15928                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
15929                        inner,
15930                        out,
15931                    )
15932                }
15933                Self::isPermissionedProverEnabled(inner) => {
15934                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
15935                        inner,
15936                        out,
15937                    )
15938                }
15939                Self::lagOverEscapeHatchThreshold(inner) => {
15940                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
15941                        inner,
15942                        out,
15943                    )
15944                }
15945                Self::newFinalizedState_0(inner) => {
15946                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
15947                        inner,
15948                        out,
15949                    )
15950                }
15951                Self::newFinalizedState_1(inner) => {
15952                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
15953                        inner,
15954                        out,
15955                    )
15956                }
15957                Self::newFinalizedState_2(inner) => {
15958                    <newFinalizedState_2Call as alloy_sol_types::SolCall>::abi_encode_raw(
15959                        inner,
15960                        out,
15961                    )
15962                }
15963                Self::owner(inner) => {
15964                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
15965                }
15966                Self::permissionedProver(inner) => {
15967                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15968                        inner,
15969                        out,
15970                    )
15971                }
15972                Self::proxiableUUID(inner) => {
15973                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
15974                        inner,
15975                        out,
15976                    )
15977                }
15978                Self::renounceOwnership(inner) => {
15979                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
15980                        inner,
15981                        out,
15982                    )
15983                }
15984                Self::setPermissionedProver(inner) => {
15985                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
15986                        inner,
15987                        out,
15988                    )
15989                }
15990                Self::setStateHistoryRetentionPeriod(inner) => {
15991                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15992                        inner,
15993                        out,
15994                    )
15995                }
15996                Self::setstateHistoryRetentionPeriod(inner) => {
15997                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
15998                        inner,
15999                        out,
16000                    )
16001                }
16002                Self::stateHistoryCommitments(inner) => {
16003                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
16004                        inner,
16005                        out,
16006                    )
16007                }
16008                Self::stateHistoryFirstIndex(inner) => {
16009                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
16010                        inner,
16011                        out,
16012                    )
16013                }
16014                Self::stateHistoryRetentionPeriod(inner) => {
16015                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16016                        inner,
16017                        out,
16018                    )
16019                }
16020                Self::transferOwnership(inner) => {
16021                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
16022                        inner,
16023                        out,
16024                    )
16025                }
16026                Self::updateEpochStartBlock(inner) => {
16027                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
16028                        inner,
16029                        out,
16030                    )
16031                }
16032                Self::upgradeToAndCall(inner) => {
16033                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
16034                        inner,
16035                        out,
16036                    )
16037                }
16038                Self::votingStakeTableState(inner) => {
16039                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16040                        inner,
16041                        out,
16042                    )
16043                }
16044            }
16045        }
16046    }
16047    ///Container for all the [`LightClientV3`](self) custom errors.
16048    #[derive(Clone)]
16049    #[derive(serde::Serialize, serde::Deserialize)]
16050    #[derive(Debug, PartialEq, Eq, Hash)]
16051    pub enum LightClientV3Errors {
16052        #[allow(missing_docs)]
16053        AddressEmptyCode(AddressEmptyCode),
16054        #[allow(missing_docs)]
16055        DeprecatedApi(DeprecatedApi),
16056        #[allow(missing_docs)]
16057        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
16058        #[allow(missing_docs)]
16059        ERC1967NonPayable(ERC1967NonPayable),
16060        #[allow(missing_docs)]
16061        FailedInnerCall(FailedInnerCall),
16062        #[allow(missing_docs)]
16063        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
16064        #[allow(missing_docs)]
16065        InvalidAddress(InvalidAddress),
16066        #[allow(missing_docs)]
16067        InvalidArgs(InvalidArgs),
16068        #[allow(missing_docs)]
16069        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
16070        #[allow(missing_docs)]
16071        InvalidInitialization(InvalidInitialization),
16072        #[allow(missing_docs)]
16073        InvalidMaxStateHistory(InvalidMaxStateHistory),
16074        #[allow(missing_docs)]
16075        InvalidProof(InvalidProof),
16076        #[allow(missing_docs)]
16077        InvalidScalar(InvalidScalar),
16078        #[allow(missing_docs)]
16079        MissingEpochRootUpdate(MissingEpochRootUpdate),
16080        #[allow(missing_docs)]
16081        NoChangeRequired(NoChangeRequired),
16082        #[allow(missing_docs)]
16083        NotInitializing(NotInitializing),
16084        #[allow(missing_docs)]
16085        OutdatedState(OutdatedState),
16086        #[allow(missing_docs)]
16087        OwnableInvalidOwner(OwnableInvalidOwner),
16088        #[allow(missing_docs)]
16089        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
16090        #[allow(missing_docs)]
16091        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
16092        #[allow(missing_docs)]
16093        ProverNotPermissioned(ProverNotPermissioned),
16094        #[allow(missing_docs)]
16095        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
16096        #[allow(missing_docs)]
16097        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
16098        #[allow(missing_docs)]
16099        WrongStakeTableUsed(WrongStakeTableUsed),
16100    }
16101    impl LightClientV3Errors {
16102        /// All the selectors of this enum.
16103        ///
16104        /// Note that the selectors might not be in the same order as the variants.
16105        /// No guarantees are made about the order of the selectors.
16106        ///
16107        /// Prefer using `SolInterface` methods instead.
16108        pub const SELECTORS: &'static [[u8; 4usize]] = &[
16109            [5u8, 28u8, 70u8, 239u8],
16110            [5u8, 176u8, 92u8, 204u8],
16111            [8u8, 10u8, 232u8, 217u8],
16112            [9u8, 189u8, 227u8, 57u8],
16113            [17u8, 140u8, 218u8, 167u8],
16114            [20u8, 37u8, 234u8, 66u8],
16115            [30u8, 79u8, 189u8, 247u8],
16116            [47u8, 171u8, 146u8, 202u8],
16117            [76u8, 156u8, 140u8, 227u8],
16118            [78u8, 64u8, 92u8, 141u8],
16119            [81u8, 97u8, 128u8, 137u8],
16120            [97u8, 90u8, 146u8, 100u8],
16121            [153u8, 150u8, 179u8, 21u8],
16122            [161u8, 186u8, 7u8, 238u8],
16123            [163u8, 166u8, 71u8, 128u8],
16124            [168u8, 99u8, 174u8, 201u8],
16125            [170u8, 29u8, 73u8, 164u8],
16126            [176u8, 180u8, 56u8, 119u8],
16127            [179u8, 152u8, 151u8, 159u8],
16128            [215u8, 230u8, 188u8, 248u8],
16129            [224u8, 124u8, 141u8, 186u8],
16130            [230u8, 196u8, 36u8, 123u8],
16131            [244u8, 160u8, 238u8, 224u8],
16132            [249u8, 46u8, 232u8, 169u8],
16133        ];
16134        /// The names of the variants in the same order as `SELECTORS`.
16135        pub const VARIANT_NAMES: &'static [&'static str] = &[
16136            ::core::stringify!(OutdatedState),
16137            ::core::stringify!(InvalidScalar),
16138            ::core::stringify!(MissingEpochRootUpdate),
16139            ::core::stringify!(InvalidProof),
16140            ::core::stringify!(OwnableUnauthorizedAccount),
16141            ::core::stringify!(FailedInnerCall),
16142            ::core::stringify!(OwnableInvalidOwner),
16143            ::core::stringify!(OwnershipCannotBeRenounced),
16144            ::core::stringify!(ERC1967InvalidImplementation),
16145            ::core::stringify!(DeprecatedApi),
16146            ::core::stringify!(WrongStakeTableUsed),
16147            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
16148            ::core::stringify!(AddressEmptyCode),
16149            ::core::stringify!(InvalidArgs),
16150            ::core::stringify!(ProverNotPermissioned),
16151            ::core::stringify!(NoChangeRequired),
16152            ::core::stringify!(UUPSUnsupportedProxiableUUID),
16153            ::core::stringify!(InsufficientSnapshotHistory),
16154            ::core::stringify!(ERC1967NonPayable),
16155            ::core::stringify!(NotInitializing),
16156            ::core::stringify!(UUPSUnauthorizedCallContext),
16157            ::core::stringify!(InvalidAddress),
16158            ::core::stringify!(InvalidMaxStateHistory),
16159            ::core::stringify!(InvalidInitialization),
16160        ];
16161        /// The signatures in the same order as `SELECTORS`.
16162        pub const SIGNATURES: &'static [&'static str] = &[
16163            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
16164            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
16165            <MissingEpochRootUpdate as alloy_sol_types::SolError>::SIGNATURE,
16166            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
16167            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
16168            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
16169            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
16170            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
16171            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
16172            <DeprecatedApi as alloy_sol_types::SolError>::SIGNATURE,
16173            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
16174            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
16175            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
16176            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
16177            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
16178            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
16179            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
16180            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
16181            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
16182            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
16183            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
16184            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
16185            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
16186            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
16187        ];
16188        /// Returns the signature for the given selector, if known.
16189        #[inline]
16190        pub fn signature_by_selector(
16191            selector: [u8; 4usize],
16192        ) -> ::core::option::Option<&'static str> {
16193            match Self::SELECTORS.binary_search(&selector) {
16194                ::core::result::Result::Ok(idx) => {
16195                    ::core::option::Option::Some(Self::SIGNATURES[idx])
16196                }
16197                ::core::result::Result::Err(_) => ::core::option::Option::None,
16198            }
16199        }
16200        /// Returns the enum variant name for the given selector, if known.
16201        #[inline]
16202        pub fn name_by_selector(
16203            selector: [u8; 4usize],
16204        ) -> ::core::option::Option<&'static str> {
16205            let sig = Self::signature_by_selector(selector)?;
16206            sig.split_once('(').map(|(name, _)| name)
16207        }
16208    }
16209    #[automatically_derived]
16210    impl alloy_sol_types::SolInterface for LightClientV3Errors {
16211        const NAME: &'static str = "LightClientV3Errors";
16212        const MIN_DATA_LENGTH: usize = 0usize;
16213        const COUNT: usize = 24usize;
16214        #[inline]
16215        fn selector(&self) -> [u8; 4] {
16216            match self {
16217                Self::AddressEmptyCode(_) => {
16218                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
16219                }
16220                Self::DeprecatedApi(_) => {
16221                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
16222                }
16223                Self::ERC1967InvalidImplementation(_) => {
16224                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
16225                }
16226                Self::ERC1967NonPayable(_) => {
16227                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
16228                }
16229                Self::FailedInnerCall(_) => {
16230                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
16231                }
16232                Self::InsufficientSnapshotHistory(_) => {
16233                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
16234                }
16235                Self::InvalidAddress(_) => {
16236                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
16237                }
16238                Self::InvalidArgs(_) => {
16239                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
16240                }
16241                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
16242                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
16243                }
16244                Self::InvalidInitialization(_) => {
16245                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
16246                }
16247                Self::InvalidMaxStateHistory(_) => {
16248                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
16249                }
16250                Self::InvalidProof(_) => {
16251                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
16252                }
16253                Self::InvalidScalar(_) => {
16254                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
16255                }
16256                Self::MissingEpochRootUpdate(_) => {
16257                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
16258                }
16259                Self::NoChangeRequired(_) => {
16260                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
16261                }
16262                Self::NotInitializing(_) => {
16263                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
16264                }
16265                Self::OutdatedState(_) => {
16266                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
16267                }
16268                Self::OwnableInvalidOwner(_) => {
16269                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
16270                }
16271                Self::OwnableUnauthorizedAccount(_) => {
16272                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
16273                }
16274                Self::OwnershipCannotBeRenounced(_) => {
16275                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
16276                }
16277                Self::ProverNotPermissioned(_) => {
16278                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
16279                }
16280                Self::UUPSUnauthorizedCallContext(_) => {
16281                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
16282                }
16283                Self::UUPSUnsupportedProxiableUUID(_) => {
16284                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
16285                }
16286                Self::WrongStakeTableUsed(_) => {
16287                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
16288                }
16289            }
16290        }
16291        #[inline]
16292        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
16293            Self::SELECTORS.get(i).copied()
16294        }
16295        #[inline]
16296        fn valid_selector(selector: [u8; 4]) -> bool {
16297            Self::SELECTORS.binary_search(&selector).is_ok()
16298        }
16299        #[inline]
16300        #[allow(non_snake_case)]
16301        fn abi_decode_raw(
16302            selector: [u8; 4],
16303            data: &[u8],
16304        ) -> alloy_sol_types::Result<Self> {
16305            Self::abi_decode_raw_with_config(
16306                selector,
16307                data,
16308                alloy_sol_types::abi::AbiDecoderConfig::default(),
16309            )
16310        }
16311        #[inline]
16312        #[allow(non_snake_case)]
16313        fn abi_decode_raw_with_config(
16314            selector: [u8; 4],
16315            data: &[u8],
16316            config: alloy_sol_types::abi::AbiDecoderConfig,
16317        ) -> alloy_sol_types::Result<Self> {
16318            static DECODE_SHIMS: &[fn(
16319                &[u8],
16320                alloy_sol_types::abi::AbiDecoderConfig,
16321            ) -> alloy_sol_types::Result<LightClientV3Errors>] = &[
16322                {
16323                    fn OutdatedState(
16324                        data: &[u8],
16325                        config: alloy_sol_types::abi::AbiDecoderConfig,
16326                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16327                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16328                                data,
16329                                config,
16330                            )
16331                            .map(LightClientV3Errors::OutdatedState)
16332                    }
16333                    OutdatedState
16334                },
16335                {
16336                    fn InvalidScalar(
16337                        data: &[u8],
16338                        config: alloy_sol_types::abi::AbiDecoderConfig,
16339                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16340                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16341                                data,
16342                                config,
16343                            )
16344                            .map(LightClientV3Errors::InvalidScalar)
16345                    }
16346                    InvalidScalar
16347                },
16348                {
16349                    fn MissingEpochRootUpdate(
16350                        data: &[u8],
16351                        config: alloy_sol_types::abi::AbiDecoderConfig,
16352                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16353                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16354                                data,
16355                                config,
16356                            )
16357                            .map(LightClientV3Errors::MissingEpochRootUpdate)
16358                    }
16359                    MissingEpochRootUpdate
16360                },
16361                {
16362                    fn InvalidProof(
16363                        data: &[u8],
16364                        config: alloy_sol_types::abi::AbiDecoderConfig,
16365                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16366                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16367                                data,
16368                                config,
16369                            )
16370                            .map(LightClientV3Errors::InvalidProof)
16371                    }
16372                    InvalidProof
16373                },
16374                {
16375                    fn OwnableUnauthorizedAccount(
16376                        data: &[u8],
16377                        config: alloy_sol_types::abi::AbiDecoderConfig,
16378                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16379                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16380                                data,
16381                                config,
16382                            )
16383                            .map(LightClientV3Errors::OwnableUnauthorizedAccount)
16384                    }
16385                    OwnableUnauthorizedAccount
16386                },
16387                {
16388                    fn FailedInnerCall(
16389                        data: &[u8],
16390                        config: alloy_sol_types::abi::AbiDecoderConfig,
16391                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16392                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16393                                data,
16394                                config,
16395                            )
16396                            .map(LightClientV3Errors::FailedInnerCall)
16397                    }
16398                    FailedInnerCall
16399                },
16400                {
16401                    fn OwnableInvalidOwner(
16402                        data: &[u8],
16403                        config: alloy_sol_types::abi::AbiDecoderConfig,
16404                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16405                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16406                                data,
16407                                config,
16408                            )
16409                            .map(LightClientV3Errors::OwnableInvalidOwner)
16410                    }
16411                    OwnableInvalidOwner
16412                },
16413                {
16414                    fn OwnershipCannotBeRenounced(
16415                        data: &[u8],
16416                        config: alloy_sol_types::abi::AbiDecoderConfig,
16417                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16418                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16419                                data,
16420                                config,
16421                            )
16422                            .map(LightClientV3Errors::OwnershipCannotBeRenounced)
16423                    }
16424                    OwnershipCannotBeRenounced
16425                },
16426                {
16427                    fn ERC1967InvalidImplementation(
16428                        data: &[u8],
16429                        config: alloy_sol_types::abi::AbiDecoderConfig,
16430                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16431                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16432                                data,
16433                                config,
16434                            )
16435                            .map(LightClientV3Errors::ERC1967InvalidImplementation)
16436                    }
16437                    ERC1967InvalidImplementation
16438                },
16439                {
16440                    fn DeprecatedApi(
16441                        data: &[u8],
16442                        config: alloy_sol_types::abi::AbiDecoderConfig,
16443                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16444                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16445                                data,
16446                                config,
16447                            )
16448                            .map(LightClientV3Errors::DeprecatedApi)
16449                    }
16450                    DeprecatedApi
16451                },
16452                {
16453                    fn WrongStakeTableUsed(
16454                        data: &[u8],
16455                        config: alloy_sol_types::abi::AbiDecoderConfig,
16456                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16457                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16458                                data,
16459                                config,
16460                            )
16461                            .map(LightClientV3Errors::WrongStakeTableUsed)
16462                    }
16463                    WrongStakeTableUsed
16464                },
16465                {
16466                    fn InvalidHotShotBlockForCommitmentCheck(
16467                        data: &[u8],
16468                        config: alloy_sol_types::abi::AbiDecoderConfig,
16469                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16470                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16471                                data,
16472                                config,
16473                            )
16474                            .map(
16475                                LightClientV3Errors::InvalidHotShotBlockForCommitmentCheck,
16476                            )
16477                    }
16478                    InvalidHotShotBlockForCommitmentCheck
16479                },
16480                {
16481                    fn AddressEmptyCode(
16482                        data: &[u8],
16483                        config: alloy_sol_types::abi::AbiDecoderConfig,
16484                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16485                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16486                                data,
16487                                config,
16488                            )
16489                            .map(LightClientV3Errors::AddressEmptyCode)
16490                    }
16491                    AddressEmptyCode
16492                },
16493                {
16494                    fn InvalidArgs(
16495                        data: &[u8],
16496                        config: alloy_sol_types::abi::AbiDecoderConfig,
16497                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16498                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16499                                data,
16500                                config,
16501                            )
16502                            .map(LightClientV3Errors::InvalidArgs)
16503                    }
16504                    InvalidArgs
16505                },
16506                {
16507                    fn ProverNotPermissioned(
16508                        data: &[u8],
16509                        config: alloy_sol_types::abi::AbiDecoderConfig,
16510                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16511                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16512                                data,
16513                                config,
16514                            )
16515                            .map(LightClientV3Errors::ProverNotPermissioned)
16516                    }
16517                    ProverNotPermissioned
16518                },
16519                {
16520                    fn NoChangeRequired(
16521                        data: &[u8],
16522                        config: alloy_sol_types::abi::AbiDecoderConfig,
16523                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16524                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16525                                data,
16526                                config,
16527                            )
16528                            .map(LightClientV3Errors::NoChangeRequired)
16529                    }
16530                    NoChangeRequired
16531                },
16532                {
16533                    fn UUPSUnsupportedProxiableUUID(
16534                        data: &[u8],
16535                        config: alloy_sol_types::abi::AbiDecoderConfig,
16536                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16537                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16538                                data,
16539                                config,
16540                            )
16541                            .map(LightClientV3Errors::UUPSUnsupportedProxiableUUID)
16542                    }
16543                    UUPSUnsupportedProxiableUUID
16544                },
16545                {
16546                    fn InsufficientSnapshotHistory(
16547                        data: &[u8],
16548                        config: alloy_sol_types::abi::AbiDecoderConfig,
16549                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16550                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16551                                data,
16552                                config,
16553                            )
16554                            .map(LightClientV3Errors::InsufficientSnapshotHistory)
16555                    }
16556                    InsufficientSnapshotHistory
16557                },
16558                {
16559                    fn ERC1967NonPayable(
16560                        data: &[u8],
16561                        config: alloy_sol_types::abi::AbiDecoderConfig,
16562                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16563                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16564                                data,
16565                                config,
16566                            )
16567                            .map(LightClientV3Errors::ERC1967NonPayable)
16568                    }
16569                    ERC1967NonPayable
16570                },
16571                {
16572                    fn NotInitializing(
16573                        data: &[u8],
16574                        config: alloy_sol_types::abi::AbiDecoderConfig,
16575                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16576                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16577                                data,
16578                                config,
16579                            )
16580                            .map(LightClientV3Errors::NotInitializing)
16581                    }
16582                    NotInitializing
16583                },
16584                {
16585                    fn UUPSUnauthorizedCallContext(
16586                        data: &[u8],
16587                        config: alloy_sol_types::abi::AbiDecoderConfig,
16588                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16589                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16590                                data,
16591                                config,
16592                            )
16593                            .map(LightClientV3Errors::UUPSUnauthorizedCallContext)
16594                    }
16595                    UUPSUnauthorizedCallContext
16596                },
16597                {
16598                    fn InvalidAddress(
16599                        data: &[u8],
16600                        config: alloy_sol_types::abi::AbiDecoderConfig,
16601                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16602                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16603                                data,
16604                                config,
16605                            )
16606                            .map(LightClientV3Errors::InvalidAddress)
16607                    }
16608                    InvalidAddress
16609                },
16610                {
16611                    fn InvalidMaxStateHistory(
16612                        data: &[u8],
16613                        config: alloy_sol_types::abi::AbiDecoderConfig,
16614                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16615                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16616                                data,
16617                                config,
16618                            )
16619                            .map(LightClientV3Errors::InvalidMaxStateHistory)
16620                    }
16621                    InvalidMaxStateHistory
16622                },
16623                {
16624                    fn InvalidInitialization(
16625                        data: &[u8],
16626                        config: alloy_sol_types::abi::AbiDecoderConfig,
16627                    ) -> alloy_sol_types::Result<LightClientV3Errors> {
16628                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_with_config(
16629                                data,
16630                                config,
16631                            )
16632                            .map(LightClientV3Errors::InvalidInitialization)
16633                    }
16634                    InvalidInitialization
16635                },
16636            ];
16637            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16638                return Err(
16639                    alloy_sol_types::Error::unknown_selector(
16640                        <Self as alloy_sol_types::SolInterface>::NAME,
16641                        selector,
16642                    ),
16643                );
16644            };
16645            DECODE_SHIMS[idx](data, config)
16646        }
16647        #[inline]
16648        #[allow(non_snake_case)]
16649        fn abi_decode_raw_validate(
16650            selector: [u8; 4],
16651            data: &[u8],
16652        ) -> alloy_sol_types::Result<Self> {
16653            Self::abi_decode_raw_with_config(
16654                selector,
16655                data,
16656                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
16657            )
16658        }
16659        #[inline]
16660        fn abi_encoded_size(&self) -> usize {
16661            match self {
16662                Self::AddressEmptyCode(inner) => {
16663                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
16664                        inner,
16665                    )
16666                }
16667                Self::DeprecatedApi(inner) => {
16668                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
16669                }
16670                Self::ERC1967InvalidImplementation(inner) => {
16671                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
16672                        inner,
16673                    )
16674                }
16675                Self::ERC1967NonPayable(inner) => {
16676                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
16677                        inner,
16678                    )
16679                }
16680                Self::FailedInnerCall(inner) => {
16681                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
16682                        inner,
16683                    )
16684                }
16685                Self::InsufficientSnapshotHistory(inner) => {
16686                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
16687                        inner,
16688                    )
16689                }
16690                Self::InvalidAddress(inner) => {
16691                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
16692                        inner,
16693                    )
16694                }
16695                Self::InvalidArgs(inner) => {
16696                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
16697                }
16698                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16699                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
16700                        inner,
16701                    )
16702                }
16703                Self::InvalidInitialization(inner) => {
16704                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
16705                        inner,
16706                    )
16707                }
16708                Self::InvalidMaxStateHistory(inner) => {
16709                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
16710                        inner,
16711                    )
16712                }
16713                Self::InvalidProof(inner) => {
16714                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
16715                }
16716                Self::InvalidScalar(inner) => {
16717                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
16718                }
16719                Self::MissingEpochRootUpdate(inner) => {
16720                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
16721                        inner,
16722                    )
16723                }
16724                Self::NoChangeRequired(inner) => {
16725                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
16726                        inner,
16727                    )
16728                }
16729                Self::NotInitializing(inner) => {
16730                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
16731                        inner,
16732                    )
16733                }
16734                Self::OutdatedState(inner) => {
16735                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
16736                }
16737                Self::OwnableInvalidOwner(inner) => {
16738                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
16739                        inner,
16740                    )
16741                }
16742                Self::OwnableUnauthorizedAccount(inner) => {
16743                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
16744                        inner,
16745                    )
16746                }
16747                Self::OwnershipCannotBeRenounced(inner) => {
16748                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
16749                        inner,
16750                    )
16751                }
16752                Self::ProverNotPermissioned(inner) => {
16753                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
16754                        inner,
16755                    )
16756                }
16757                Self::UUPSUnauthorizedCallContext(inner) => {
16758                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
16759                        inner,
16760                    )
16761                }
16762                Self::UUPSUnsupportedProxiableUUID(inner) => {
16763                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
16764                        inner,
16765                    )
16766                }
16767                Self::WrongStakeTableUsed(inner) => {
16768                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
16769                        inner,
16770                    )
16771                }
16772            }
16773        }
16774        #[inline]
16775        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16776            match self {
16777                Self::AddressEmptyCode(inner) => {
16778                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
16779                        inner,
16780                        out,
16781                    )
16782                }
16783                Self::DeprecatedApi(inner) => {
16784                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
16785                        inner,
16786                        out,
16787                    )
16788                }
16789                Self::ERC1967InvalidImplementation(inner) => {
16790                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
16791                        inner,
16792                        out,
16793                    )
16794                }
16795                Self::ERC1967NonPayable(inner) => {
16796                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
16797                        inner,
16798                        out,
16799                    )
16800                }
16801                Self::FailedInnerCall(inner) => {
16802                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
16803                        inner,
16804                        out,
16805                    )
16806                }
16807                Self::InsufficientSnapshotHistory(inner) => {
16808                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
16809                        inner,
16810                        out,
16811                    )
16812                }
16813                Self::InvalidAddress(inner) => {
16814                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
16815                        inner,
16816                        out,
16817                    )
16818                }
16819                Self::InvalidArgs(inner) => {
16820                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
16821                        inner,
16822                        out,
16823                    )
16824                }
16825                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
16826                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
16827                        inner,
16828                        out,
16829                    )
16830                }
16831                Self::InvalidInitialization(inner) => {
16832                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
16833                        inner,
16834                        out,
16835                    )
16836                }
16837                Self::InvalidMaxStateHistory(inner) => {
16838                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
16839                        inner,
16840                        out,
16841                    )
16842                }
16843                Self::InvalidProof(inner) => {
16844                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
16845                        inner,
16846                        out,
16847                    )
16848                }
16849                Self::InvalidScalar(inner) => {
16850                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
16851                        inner,
16852                        out,
16853                    )
16854                }
16855                Self::MissingEpochRootUpdate(inner) => {
16856                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
16857                        inner,
16858                        out,
16859                    )
16860                }
16861                Self::NoChangeRequired(inner) => {
16862                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
16863                        inner,
16864                        out,
16865                    )
16866                }
16867                Self::NotInitializing(inner) => {
16868                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
16869                        inner,
16870                        out,
16871                    )
16872                }
16873                Self::OutdatedState(inner) => {
16874                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
16875                        inner,
16876                        out,
16877                    )
16878                }
16879                Self::OwnableInvalidOwner(inner) => {
16880                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
16881                        inner,
16882                        out,
16883                    )
16884                }
16885                Self::OwnableUnauthorizedAccount(inner) => {
16886                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
16887                        inner,
16888                        out,
16889                    )
16890                }
16891                Self::OwnershipCannotBeRenounced(inner) => {
16892                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
16893                        inner,
16894                        out,
16895                    )
16896                }
16897                Self::ProverNotPermissioned(inner) => {
16898                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
16899                        inner,
16900                        out,
16901                    )
16902                }
16903                Self::UUPSUnauthorizedCallContext(inner) => {
16904                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
16905                        inner,
16906                        out,
16907                    )
16908                }
16909                Self::UUPSUnsupportedProxiableUUID(inner) => {
16910                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
16911                        inner,
16912                        out,
16913                    )
16914                }
16915                Self::WrongStakeTableUsed(inner) => {
16916                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
16917                        inner,
16918                        out,
16919                    )
16920                }
16921            }
16922        }
16923    }
16924    #[automatically_derived]
16925    impl LightClientV3Errors {
16926        /**Creates a [`AddressEmptyCode`] error.
16927
16928```solidity
16929error AddressEmptyCode(address)
16930```*/
16931        #[inline]
16932        pub fn address_empty_code(target: alloy::sol_types::private::Address) -> Self {
16933            Self::AddressEmptyCode(AddressEmptyCode { target: target })
16934        }
16935        /**Creates a [`DeprecatedApi`] error.
16936
16937```solidity
16938error DeprecatedApi()
16939```*/
16940        #[inline]
16941        pub fn deprecated_api() -> Self {
16942            Self::DeprecatedApi(DeprecatedApi)
16943        }
16944        /**Creates a [`ERC1967InvalidImplementation`] error.
16945
16946```solidity
16947error ERC1967InvalidImplementation(address)
16948```*/
16949        #[inline]
16950        pub fn erc_1967_invalid_implementation(
16951            implementation: alloy::sol_types::private::Address,
16952        ) -> Self {
16953            Self::ERC1967InvalidImplementation(ERC1967InvalidImplementation {
16954                implementation: implementation,
16955            })
16956        }
16957        /**Creates a [`ERC1967NonPayable`] error.
16958
16959```solidity
16960error ERC1967NonPayable()
16961```*/
16962        #[inline]
16963        pub fn erc_1967_non_payable() -> Self {
16964            Self::ERC1967NonPayable(ERC1967NonPayable)
16965        }
16966        /**Creates a [`FailedInnerCall`] error.
16967
16968```solidity
16969error FailedInnerCall()
16970```*/
16971        #[inline]
16972        pub fn failed_inner_call() -> Self {
16973            Self::FailedInnerCall(FailedInnerCall)
16974        }
16975        /**Creates a [`InsufficientSnapshotHistory`] error.
16976
16977```solidity
16978error InsufficientSnapshotHistory()
16979```*/
16980        #[inline]
16981        pub fn insufficient_snapshot_history() -> Self {
16982            Self::InsufficientSnapshotHistory(InsufficientSnapshotHistory)
16983        }
16984        /**Creates a [`InvalidAddress`] error.
16985
16986```solidity
16987error InvalidAddress()
16988```*/
16989        #[inline]
16990        pub fn invalid_address() -> Self {
16991            Self::InvalidAddress(InvalidAddress)
16992        }
16993        /**Creates a [`InvalidArgs`] error.
16994
16995```solidity
16996error InvalidArgs()
16997```*/
16998        #[inline]
16999        pub fn invalid_args() -> Self {
17000            Self::InvalidArgs(InvalidArgs)
17001        }
17002        /**Creates a [`InvalidHotShotBlockForCommitmentCheck`] error.
17003
17004```solidity
17005error InvalidHotShotBlockForCommitmentCheck()
17006```*/
17007        #[inline]
17008        pub fn invalid_hot_shot_block_for_commitment_check() -> Self {
17009            Self::InvalidHotShotBlockForCommitmentCheck(
17010                InvalidHotShotBlockForCommitmentCheck,
17011            )
17012        }
17013        /**Creates a [`InvalidInitialization`] error.
17014
17015```solidity
17016error InvalidInitialization()
17017```*/
17018        #[inline]
17019        pub fn invalid_initialization() -> Self {
17020            Self::InvalidInitialization(InvalidInitialization)
17021        }
17022        /**Creates a [`InvalidMaxStateHistory`] error.
17023
17024```solidity
17025error InvalidMaxStateHistory()
17026```*/
17027        #[inline]
17028        pub fn invalid_max_state_history() -> Self {
17029            Self::InvalidMaxStateHistory(InvalidMaxStateHistory)
17030        }
17031        /**Creates a [`InvalidProof`] error.
17032
17033```solidity
17034error InvalidProof()
17035```*/
17036        #[inline]
17037        pub fn invalid_proof() -> Self {
17038            Self::InvalidProof(InvalidProof)
17039        }
17040        /**Creates a [`InvalidScalar`] error.
17041
17042```solidity
17043error InvalidScalar()
17044```*/
17045        #[inline]
17046        pub fn invalid_scalar() -> Self {
17047            Self::InvalidScalar(InvalidScalar)
17048        }
17049        /**Creates a [`MissingEpochRootUpdate`] error.
17050
17051```solidity
17052error MissingEpochRootUpdate()
17053```*/
17054        #[inline]
17055        pub fn missing_epoch_root_update() -> Self {
17056            Self::MissingEpochRootUpdate(MissingEpochRootUpdate)
17057        }
17058        /**Creates a [`NoChangeRequired`] error.
17059
17060```solidity
17061error NoChangeRequired()
17062```*/
17063        #[inline]
17064        pub fn no_change_required() -> Self {
17065            Self::NoChangeRequired(NoChangeRequired)
17066        }
17067        /**Creates a [`NotInitializing`] error.
17068
17069```solidity
17070error NotInitializing()
17071```*/
17072        #[inline]
17073        pub fn not_initializing() -> Self {
17074            Self::NotInitializing(NotInitializing)
17075        }
17076        /**Creates a [`OutdatedState`] error.
17077
17078```solidity
17079error OutdatedState()
17080```*/
17081        #[inline]
17082        pub fn outdated_state() -> Self {
17083            Self::OutdatedState(OutdatedState)
17084        }
17085        /**Creates a [`OwnableInvalidOwner`] error.
17086
17087```solidity
17088error OwnableInvalidOwner(address)
17089```*/
17090        #[inline]
17091        pub fn ownable_invalid_owner(owner: alloy::sol_types::private::Address) -> Self {
17092            Self::OwnableInvalidOwner(OwnableInvalidOwner {
17093                owner: owner,
17094            })
17095        }
17096        /**Creates a [`OwnableUnauthorizedAccount`] error.
17097
17098```solidity
17099error OwnableUnauthorizedAccount(address)
17100```*/
17101        #[inline]
17102        pub fn ownable_unauthorized_account(
17103            account: alloy::sol_types::private::Address,
17104        ) -> Self {
17105            Self::OwnableUnauthorizedAccount(OwnableUnauthorizedAccount {
17106                account: account,
17107            })
17108        }
17109        /**Creates a [`OwnershipCannotBeRenounced`] error.
17110
17111```solidity
17112error OwnershipCannotBeRenounced()
17113```*/
17114        #[inline]
17115        pub fn ownership_cannot_be_renounced() -> Self {
17116            Self::OwnershipCannotBeRenounced(OwnershipCannotBeRenounced)
17117        }
17118        /**Creates a [`ProverNotPermissioned`] error.
17119
17120```solidity
17121error ProverNotPermissioned()
17122```*/
17123        #[inline]
17124        pub fn prover_not_permissioned() -> Self {
17125            Self::ProverNotPermissioned(ProverNotPermissioned)
17126        }
17127        /**Creates a [`UUPSUnauthorizedCallContext`] error.
17128
17129```solidity
17130error UUPSUnauthorizedCallContext()
17131```*/
17132        #[inline]
17133        pub fn uups_unauthorized_call_context() -> Self {
17134            Self::UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext)
17135        }
17136        /**Creates a [`UUPSUnsupportedProxiableUUID`] error.
17137
17138```solidity
17139error UUPSUnsupportedProxiableUUID(bytes32)
17140```*/
17141        #[inline]
17142        pub fn uups_unsupported_proxiable_uuid(
17143            slot: alloy::sol_types::private::FixedBytes<32>,
17144        ) -> Self {
17145            Self::UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID {
17146                slot: slot,
17147            })
17148        }
17149        /**Creates a [`WrongStakeTableUsed`] error.
17150
17151```solidity
17152error WrongStakeTableUsed()
17153```*/
17154        #[inline]
17155        pub fn wrong_stake_table_used() -> Self {
17156            Self::WrongStakeTableUsed(WrongStakeTableUsed)
17157        }
17158    }
17159    ///Container for all the [`LightClientV3`](self) events.
17160    #[derive(Clone)]
17161    #[derive(serde::Serialize, serde::Deserialize)]
17162    #[derive(Debug, PartialEq, Eq, Hash)]
17163    pub enum LightClientV3Events {
17164        #[allow(missing_docs)]
17165        Initialized(Initialized),
17166        #[allow(missing_docs)]
17167        NewEpoch(NewEpoch),
17168        #[allow(missing_docs)]
17169        NewState(NewState),
17170        #[allow(missing_docs)]
17171        OwnershipTransferred(OwnershipTransferred),
17172        #[allow(missing_docs)]
17173        PermissionedProverNotRequired(PermissionedProverNotRequired),
17174        #[allow(missing_docs)]
17175        PermissionedProverRequired(PermissionedProverRequired),
17176        #[allow(missing_docs)]
17177        Upgrade(Upgrade),
17178        #[allow(missing_docs)]
17179        Upgraded(Upgraded),
17180    }
17181    impl LightClientV3Events {
17182        /// All the selectors of this enum.
17183        ///
17184        /// Note that the selectors might not be in the same order as the variants.
17185        /// No guarantees are made about the order of the selectors.
17186        ///
17187        /// Prefer using `SolInterface` methods instead.
17188        pub const SELECTORS: &'static [[u8; 32usize]] = &[
17189            [
17190                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
17191                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
17192                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
17193            ],
17194            [
17195                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
17196                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
17197                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
17198            ],
17199            [
17200                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
17201                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
17202                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
17203            ],
17204            [
17205                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
17206                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
17207                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
17208            ],
17209            [
17210                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
17211                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
17212                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
17213            ],
17214            [
17215                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
17216                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
17217                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
17218            ],
17219            [
17220                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
17221                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
17222                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
17223            ],
17224            [
17225                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
17226                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
17227                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
17228            ],
17229        ];
17230        /// The names of the variants in the same order as `SELECTORS`.
17231        pub const VARIANT_NAMES: &'static [&'static str] = &[
17232            ::core::stringify!(NewEpoch),
17233            ::core::stringify!(PermissionedProverRequired),
17234            ::core::stringify!(OwnershipTransferred),
17235            ::core::stringify!(PermissionedProverNotRequired),
17236            ::core::stringify!(NewState),
17237            ::core::stringify!(Upgraded),
17238            ::core::stringify!(Initialized),
17239            ::core::stringify!(Upgrade),
17240        ];
17241        /// The signatures in the same order as `SELECTORS`.
17242        pub const SIGNATURES: &'static [&'static str] = &[
17243            <NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE,
17244            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
17245            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
17246            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
17247            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
17248            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
17249            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
17250            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
17251        ];
17252        /// Returns the signature for the given selector, if known.
17253        #[inline]
17254        pub fn signature_by_selector(
17255            selector: [u8; 32usize],
17256        ) -> ::core::option::Option<&'static str> {
17257            match Self::SELECTORS.binary_search(&selector) {
17258                ::core::result::Result::Ok(idx) => {
17259                    ::core::option::Option::Some(Self::SIGNATURES[idx])
17260                }
17261                ::core::result::Result::Err(_) => ::core::option::Option::None,
17262            }
17263        }
17264        /// Returns the enum variant name for the given selector, if known.
17265        #[inline]
17266        pub fn name_by_selector(
17267            selector: [u8; 32usize],
17268        ) -> ::core::option::Option<&'static str> {
17269            let sig = Self::signature_by_selector(selector)?;
17270            sig.split_once('(').map(|(name, _)| name)
17271        }
17272    }
17273    #[automatically_derived]
17274    impl alloy_sol_types::SolEventInterface for LightClientV3Events {
17275        const NAME: &'static str = "LightClientV3Events";
17276        const COUNT: usize = 8usize;
17277        fn decode_raw_log(
17278            topics: &[alloy_sol_types::Word],
17279            data: &[u8],
17280        ) -> alloy_sol_types::Result<Self> {
17281            <Self as alloy_sol_types::SolEventInterface>::decode_raw_log_with_config(
17282                topics,
17283                data,
17284                alloy_sol_types::abi::AbiDecoderConfig::default(),
17285            )
17286        }
17287        fn decode_raw_log_with_config(
17288            topics: &[alloy_sol_types::Word],
17289            data: &[u8],
17290            config: alloy_sol_types::abi::AbiDecoderConfig,
17291        ) -> alloy_sol_types::Result<Self> {
17292            match topics.first().copied() {
17293                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17294                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
17295                            topics,
17296                            data,
17297                            config,
17298                        )
17299                        .map(Self::Initialized)
17300                }
17301                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17302                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
17303                            topics,
17304                            data,
17305                            config,
17306                        )
17307                        .map(Self::NewEpoch)
17308                }
17309                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17310                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
17311                            topics,
17312                            data,
17313                            config,
17314                        )
17315                        .map(Self::NewState)
17316                }
17317                Some(
17318                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17319                ) => {
17320                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
17321                            topics,
17322                            data,
17323                            config,
17324                        )
17325                        .map(Self::OwnershipTransferred)
17326                }
17327                Some(
17328                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17329                ) => {
17330                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
17331                            topics,
17332                            data,
17333                            config,
17334                        )
17335                        .map(Self::PermissionedProverNotRequired)
17336                }
17337                Some(
17338                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17339                ) => {
17340                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
17341                            topics,
17342                            data,
17343                            config,
17344                        )
17345                        .map(Self::PermissionedProverRequired)
17346                }
17347                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17348                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
17349                            topics,
17350                            data,
17351                            config,
17352                        )
17353                        .map(Self::Upgrade)
17354                }
17355                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17356                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
17357                            topics,
17358                            data,
17359                            config,
17360                        )
17361                        .map(Self::Upgraded)
17362                }
17363                _ => {
17364                    if topics
17365                        .len()
17366                        .checked_mul(alloy_sol_types::Word::len_bytes())
17367                        .and_then(|len| len.checked_add(data.len()))
17368                        .is_none_or(|len| len > config.get_memory_limit())
17369                    {
17370                        return alloy_sol_types::private::Err(
17371                            alloy_sol_types::Error::MemoryLimitExceeded(
17372                                config.get_memory_limit(),
17373                            ),
17374                        );
17375                    }
17376                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
17377                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
17378                        log: alloy_sol_types::private::Box::new(
17379                            alloy_sol_types::private::LogData::new_unchecked(
17380                                topics.to_vec(),
17381                                data.to_vec().into(),
17382                            ),
17383                        ),
17384                    })
17385                }
17386            }
17387        }
17388    }
17389    #[automatically_derived]
17390    impl alloy_sol_types::private::IntoLogData for LightClientV3Events {
17391        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
17392            match self {
17393                Self::Initialized(inner) => {
17394                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17395                }
17396                Self::NewEpoch(inner) => {
17397                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17398                }
17399                Self::NewState(inner) => {
17400                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17401                }
17402                Self::OwnershipTransferred(inner) => {
17403                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17404                }
17405                Self::PermissionedProverNotRequired(inner) => {
17406                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17407                }
17408                Self::PermissionedProverRequired(inner) => {
17409                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17410                }
17411                Self::Upgrade(inner) => {
17412                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17413                }
17414                Self::Upgraded(inner) => {
17415                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17416                }
17417            }
17418        }
17419        fn into_log_data(self) -> alloy_sol_types::private::LogData {
17420            match self {
17421                Self::Initialized(inner) => {
17422                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17423                }
17424                Self::NewEpoch(inner) => {
17425                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17426                }
17427                Self::NewState(inner) => {
17428                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17429                }
17430                Self::OwnershipTransferred(inner) => {
17431                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17432                }
17433                Self::PermissionedProverNotRequired(inner) => {
17434                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17435                }
17436                Self::PermissionedProverRequired(inner) => {
17437                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17438                }
17439                Self::Upgrade(inner) => {
17440                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17441                }
17442                Self::Upgraded(inner) => {
17443                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17444                }
17445            }
17446        }
17447    }
17448    #[automatically_derived]
17449    impl LightClientV3Events {
17450        /**Creates a [`Initialized`] event.
17451
17452```solidity
17453event Initialized(uint64)
17454```*/
17455        #[inline]
17456        pub fn initialized(version: u64) -> Self {
17457            Self::Initialized(Initialized { version: version })
17458        }
17459        /**Creates a [`NewEpoch`] event.
17460
17461```solidity
17462event NewEpoch(uint64)
17463```*/
17464        #[inline]
17465        pub fn new_epoch(epoch: u64) -> Self {
17466            Self::NewEpoch(NewEpoch { epoch: epoch })
17467        }
17468        /**Creates a [`NewState`] event.
17469
17470```solidity
17471event NewState(uint64,uint64,uint256)
17472```*/
17473        #[inline]
17474        pub fn new_state(
17475            view_num: u64,
17476            block_height: u64,
17477            block_comm_root: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
17478        ) -> Self {
17479            Self::NewState(NewState {
17480                viewNum: view_num,
17481                blockHeight: block_height,
17482                blockCommRoot: block_comm_root,
17483            })
17484        }
17485        /**Creates a [`OwnershipTransferred`] event.
17486
17487```solidity
17488event OwnershipTransferred(address,address)
17489```*/
17490        #[inline]
17491        pub fn ownership_transferred(
17492            previous_owner: alloy::sol_types::private::Address,
17493            new_owner: alloy::sol_types::private::Address,
17494        ) -> Self {
17495            Self::OwnershipTransferred(OwnershipTransferred {
17496                previousOwner: previous_owner,
17497                newOwner: new_owner,
17498            })
17499        }
17500        /**Creates a [`PermissionedProverNotRequired`] event.
17501
17502```solidity
17503event PermissionedProverNotRequired()
17504```*/
17505        #[inline]
17506        pub fn permissioned_prover_not_required() -> Self {
17507            Self::PermissionedProverNotRequired(PermissionedProverNotRequired)
17508        }
17509        /**Creates a [`PermissionedProverRequired`] event.
17510
17511```solidity
17512event PermissionedProverRequired(address)
17513```*/
17514        #[inline]
17515        pub fn permissioned_prover_required(
17516            permissioned_prover: alloy::sol_types::private::Address,
17517        ) -> Self {
17518            Self::PermissionedProverRequired(PermissionedProverRequired {
17519                permissionedProver: permissioned_prover,
17520            })
17521        }
17522        /**Creates a [`Upgrade`] event.
17523
17524```solidity
17525event Upgrade(address)
17526```*/
17527        #[inline]
17528        pub fn upgrade(implementation: alloy::sol_types::private::Address) -> Self {
17529            Self::Upgrade(Upgrade {
17530                implementation: implementation,
17531            })
17532        }
17533        /**Creates a [`Upgraded`] event.
17534
17535```solidity
17536event Upgraded(address)
17537```*/
17538        #[inline]
17539        pub fn upgraded(implementation: alloy::sol_types::private::Address) -> Self {
17540            Self::Upgraded(Upgraded {
17541                implementation: implementation,
17542            })
17543        }
17544    }
17545    use alloy::contract as alloy_contract;
17546    /**Creates a new wrapper around an on-chain [`LightClientV3`](self) contract instance.
17547
17548See the [wrapper's documentation](`LightClientV3Instance`) for more details.*/
17549    #[inline]
17550    pub const fn new<
17551        P: alloy_contract::private::Provider<N>,
17552        N: alloy_contract::private::Network,
17553    >(
17554        address: alloy_sol_types::private::Address,
17555        __provider: P,
17556    ) -> LightClientV3Instance<P, N> {
17557        LightClientV3Instance::<P, N>::new(address, __provider)
17558    }
17559    /**Deploys this contract using the given `provider` and constructor arguments, if any.
17560
17561Returns a new instance of the contract, if the deployment was successful.
17562
17563For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17564    #[inline]
17565    pub fn deploy<
17566        P: alloy_contract::private::Provider<N>,
17567        N: alloy_contract::private::Network,
17568    >(
17569        __provider: P,
17570    ) -> impl ::core::future::Future<
17571        Output = alloy_contract::Result<LightClientV3Instance<P, N>>,
17572    > {
17573        LightClientV3Instance::<P, N>::deploy(__provider)
17574    }
17575    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17576and constructor arguments, if any.
17577
17578This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17579the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17580    #[inline]
17581    pub fn deploy_builder<
17582        P: alloy_contract::private::Provider<N>,
17583        N: alloy_contract::private::Network,
17584    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17585        LightClientV3Instance::<P, N>::deploy_builder(__provider)
17586    }
17587    /**A [`LightClientV3`](self) instance.
17588
17589Contains type-safe methods for interacting with an on-chain instance of the
17590[`LightClientV3`](self) contract located at a given `address`, using a given
17591provider `P`.
17592
17593If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
17594documentation on how to provide it), the `deploy` and `deploy_builder` methods can
17595be used to deploy a new instance of the contract.
17596
17597See the [module-level documentation](self) for all the available methods.*/
17598    #[derive(Clone)]
17599    pub struct LightClientV3Instance<P, N = alloy_contract::private::Ethereum> {
17600        address: alloy_sol_types::private::Address,
17601        provider: P,
17602        _network: ::core::marker::PhantomData<N>,
17603    }
17604    #[automatically_derived]
17605    impl<P, N> ::core::fmt::Debug for LightClientV3Instance<P, N> {
17606        #[inline]
17607        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
17608            f.debug_tuple("LightClientV3Instance").field(&self.address).finish()
17609        }
17610    }
17611    /// Instantiation and getters/setters.
17612    impl<
17613        P: alloy_contract::private::Provider<N>,
17614        N: alloy_contract::private::Network,
17615    > LightClientV3Instance<P, N> {
17616        /**Creates a new wrapper around an on-chain [`LightClientV3`](self) contract instance.
17617
17618See the [wrapper's documentation](`LightClientV3Instance`) for more details.*/
17619        #[inline]
17620        pub const fn new(
17621            address: alloy_sol_types::private::Address,
17622            __provider: P,
17623        ) -> Self {
17624            Self {
17625                address,
17626                provider: __provider,
17627                _network: ::core::marker::PhantomData,
17628            }
17629        }
17630        /**Deploys this contract using the given `provider` and constructor arguments, if any.
17631
17632Returns a new instance of the contract, if the deployment was successful.
17633
17634For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17635        #[inline]
17636        pub async fn deploy(
17637            __provider: P,
17638        ) -> alloy_contract::Result<LightClientV3Instance<P, N>> {
17639            let call_builder = Self::deploy_builder(__provider);
17640            let contract_address = call_builder.deploy().await?;
17641            Ok(Self::new(contract_address, call_builder.provider))
17642        }
17643        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17644and constructor arguments, if any.
17645
17646This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17647the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17648        #[inline]
17649        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17650            alloy_contract::RawCallBuilder::new_raw_deploy(
17651                __provider,
17652                ::core::clone::Clone::clone(&BYTECODE),
17653            )
17654        }
17655        /// Returns a reference to the address.
17656        #[inline]
17657        pub const fn address(&self) -> &alloy_sol_types::private::Address {
17658            &self.address
17659        }
17660        /// Sets the address.
17661        #[inline]
17662        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
17663            self.address = address;
17664        }
17665        /// Sets the address and returns `self`.
17666        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
17667            self.set_address(address);
17668            self
17669        }
17670        /// Returns a reference to the provider.
17671        #[inline]
17672        pub const fn provider(&self) -> &P {
17673            &self.provider
17674        }
17675    }
17676    impl<P: ::core::clone::Clone, N> LightClientV3Instance<&P, N> {
17677        /// Clones the provider and returns a new instance with the cloned provider.
17678        #[inline]
17679        pub fn with_cloned_provider(self) -> LightClientV3Instance<P, N> {
17680            LightClientV3Instance {
17681                address: self.address,
17682                provider: ::core::clone::Clone::clone(&self.provider),
17683                _network: ::core::marker::PhantomData,
17684            }
17685        }
17686    }
17687    /// Function calls.
17688    impl<
17689        P: alloy_contract::private::Provider<N>,
17690        N: alloy_contract::private::Network,
17691    > LightClientV3Instance<P, N> {
17692        /// Creates a new call builder using this contract instance's provider and address.
17693        ///
17694        /// Note that the call can be any function call, not just those defined in this
17695        /// contract. Prefer using the other methods for building type-safe contract calls.
17696        pub fn call_builder<C: alloy_sol_types::SolCall>(
17697            &self,
17698            call: &C,
17699        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
17700            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
17701        }
17702        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
17703        pub fn UPGRADE_INTERFACE_VERSION(
17704            &self,
17705        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
17706            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
17707        }
17708        ///Creates a new call builder for the [`_getVk`] function.
17709        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
17710            self.call_builder(&_getVkCall)
17711        }
17712        ///Creates a new call builder for the [`authRoot`] function.
17713        pub fn authRoot(&self) -> alloy_contract::SolCallBuilder<&P, authRootCall, N> {
17714            self.call_builder(&authRootCall)
17715        }
17716        ///Creates a new call builder for the [`blocksPerEpoch`] function.
17717        pub fn blocksPerEpoch(
17718            &self,
17719        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
17720            self.call_builder(&blocksPerEpochCall)
17721        }
17722        ///Creates a new call builder for the [`currentBlockNumber`] function.
17723        pub fn currentBlockNumber(
17724            &self,
17725        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
17726            self.call_builder(&currentBlockNumberCall)
17727        }
17728        ///Creates a new call builder for the [`currentEpoch`] function.
17729        pub fn currentEpoch(
17730            &self,
17731        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
17732            self.call_builder(&currentEpochCall)
17733        }
17734        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
17735        pub fn disablePermissionedProverMode(
17736            &self,
17737        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
17738            self.call_builder(&disablePermissionedProverModeCall)
17739        }
17740        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
17741        pub fn epochFromBlockNumber(
17742            &self,
17743            _blockNum: u64,
17744            _blocksPerEpoch: u64,
17745        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
17746            self.call_builder(
17747                &epochFromBlockNumberCall {
17748                    _blockNum,
17749                    _blocksPerEpoch,
17750                },
17751            )
17752        }
17753        ///Creates a new call builder for the [`epochStartBlock`] function.
17754        pub fn epochStartBlock(
17755            &self,
17756        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
17757            self.call_builder(&epochStartBlockCall)
17758        }
17759        ///Creates a new call builder for the [`finalizedState`] function.
17760        pub fn finalizedState(
17761            &self,
17762        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
17763            self.call_builder(&finalizedStateCall)
17764        }
17765        ///Creates a new call builder for the [`genesisStakeTableState`] function.
17766        pub fn genesisStakeTableState(
17767            &self,
17768        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
17769            self.call_builder(&genesisStakeTableStateCall)
17770        }
17771        ///Creates a new call builder for the [`genesisState`] function.
17772        pub fn genesisState(
17773            &self,
17774        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
17775            self.call_builder(&genesisStateCall)
17776        }
17777        ///Creates a new call builder for the [`getHotShotCommitment`] function.
17778        pub fn getHotShotCommitment(
17779            &self,
17780            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
17781        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
17782            self.call_builder(
17783                &getHotShotCommitmentCall {
17784                    hotShotBlockHeight,
17785                },
17786            )
17787        }
17788        ///Creates a new call builder for the [`getStateHistoryCount`] function.
17789        pub fn getStateHistoryCount(
17790            &self,
17791        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
17792            self.call_builder(&getStateHistoryCountCall)
17793        }
17794        ///Creates a new call builder for the [`getVersion`] function.
17795        pub fn getVersion(
17796            &self,
17797        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
17798            self.call_builder(&getVersionCall)
17799        }
17800        ///Creates a new call builder for the [`initialize`] function.
17801        pub fn initialize(
17802            &self,
17803            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17804            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17805            _stateHistoryRetentionPeriod: u32,
17806            owner: alloy::sol_types::private::Address,
17807        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
17808            self.call_builder(
17809                &initializeCall {
17810                    _genesis,
17811                    _genesisStakeTableState,
17812                    _stateHistoryRetentionPeriod,
17813                    owner,
17814                },
17815            )
17816        }
17817        ///Creates a new call builder for the [`initializeV2`] function.
17818        pub fn initializeV2(
17819            &self,
17820            _blocksPerEpoch: u64,
17821            _epochStartBlock: u64,
17822        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
17823            self.call_builder(
17824                &initializeV2Call {
17825                    _blocksPerEpoch,
17826                    _epochStartBlock,
17827                },
17828            )
17829        }
17830        ///Creates a new call builder for the [`initializeV3`] function.
17831        pub fn initializeV3(
17832            &self,
17833        ) -> alloy_contract::SolCallBuilder<&P, initializeV3Call, N> {
17834            self.call_builder(&initializeV3Call)
17835        }
17836        ///Creates a new call builder for the [`isEpochRoot`] function.
17837        pub fn isEpochRoot(
17838            &self,
17839            blockHeight: u64,
17840        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
17841            self.call_builder(&isEpochRootCall { blockHeight })
17842        }
17843        ///Creates a new call builder for the [`isGtEpochRoot`] function.
17844        pub fn isGtEpochRoot(
17845            &self,
17846            blockHeight: u64,
17847        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
17848            self.call_builder(&isGtEpochRootCall { blockHeight })
17849        }
17850        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
17851        pub fn isPermissionedProverEnabled(
17852            &self,
17853        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
17854            self.call_builder(&isPermissionedProverEnabledCall)
17855        }
17856        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
17857        pub fn lagOverEscapeHatchThreshold(
17858            &self,
17859            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
17860            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
17861        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
17862            self.call_builder(
17863                &lagOverEscapeHatchThresholdCall {
17864                    blockNumber,
17865                    blockThreshold,
17866                },
17867            )
17868        }
17869        ///Creates a new call builder for the [`newFinalizedState_0`] function.
17870        pub fn newFinalizedState_0(
17871            &self,
17872            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17873            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17874        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
17875            self.call_builder(&newFinalizedState_0Call { _0, _1 })
17876        }
17877        ///Creates a new call builder for the [`newFinalizedState_1`] function.
17878        pub fn newFinalizedState_1(
17879            &self,
17880            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17881            _1: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17882            _2: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17883        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
17884            self.call_builder(
17885                &newFinalizedState_1Call {
17886                    _0,
17887                    _1,
17888                    _2,
17889                },
17890            )
17891        }
17892        ///Creates a new call builder for the [`newFinalizedState_2`] function.
17893        pub fn newFinalizedState_2(
17894            &self,
17895            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17896            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17897            newAuthRoot: alloy::sol_types::private::primitives::aliases::U256,
17898            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
17899        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_2Call, N> {
17900            self.call_builder(
17901                &newFinalizedState_2Call {
17902                    newState,
17903                    nextStakeTable,
17904                    newAuthRoot,
17905                    proof,
17906                },
17907            )
17908        }
17909        ///Creates a new call builder for the [`owner`] function.
17910        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
17911            self.call_builder(&ownerCall)
17912        }
17913        ///Creates a new call builder for the [`permissionedProver`] function.
17914        pub fn permissionedProver(
17915            &self,
17916        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
17917            self.call_builder(&permissionedProverCall)
17918        }
17919        ///Creates a new call builder for the [`proxiableUUID`] function.
17920        pub fn proxiableUUID(
17921            &self,
17922        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
17923            self.call_builder(&proxiableUUIDCall)
17924        }
17925        ///Creates a new call builder for the [`renounceOwnership`] function.
17926        pub fn renounceOwnership(
17927            &self,
17928        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
17929            self.call_builder(&renounceOwnershipCall)
17930        }
17931        ///Creates a new call builder for the [`setPermissionedProver`] function.
17932        pub fn setPermissionedProver(
17933            &self,
17934            prover: alloy::sol_types::private::Address,
17935        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
17936            self.call_builder(
17937                &setPermissionedProverCall {
17938                    prover,
17939                },
17940            )
17941        }
17942        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
17943        pub fn setStateHistoryRetentionPeriod(
17944            &self,
17945            historySeconds: u32,
17946        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
17947            self.call_builder(
17948                &setStateHistoryRetentionPeriodCall {
17949                    historySeconds,
17950                },
17951            )
17952        }
17953        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
17954        pub fn setstateHistoryRetentionPeriod(
17955            &self,
17956            historySeconds: u32,
17957        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
17958            self.call_builder(
17959                &setstateHistoryRetentionPeriodCall {
17960                    historySeconds,
17961                },
17962            )
17963        }
17964        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
17965        pub fn stateHistoryCommitments(
17966            &self,
17967            _0: alloy::sol_types::private::primitives::aliases::U256,
17968        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
17969            self.call_builder(&stateHistoryCommitmentsCall(_0))
17970        }
17971        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
17972        pub fn stateHistoryFirstIndex(
17973            &self,
17974        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
17975            self.call_builder(&stateHistoryFirstIndexCall)
17976        }
17977        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
17978        pub fn stateHistoryRetentionPeriod(
17979            &self,
17980        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
17981            self.call_builder(&stateHistoryRetentionPeriodCall)
17982        }
17983        ///Creates a new call builder for the [`transferOwnership`] function.
17984        pub fn transferOwnership(
17985            &self,
17986            newOwner: alloy::sol_types::private::Address,
17987        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
17988            self.call_builder(&transferOwnershipCall { newOwner })
17989        }
17990        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
17991        pub fn updateEpochStartBlock(
17992            &self,
17993            newEpochStartBlock: u64,
17994        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
17995            self.call_builder(
17996                &updateEpochStartBlockCall {
17997                    newEpochStartBlock,
17998                },
17999            )
18000        }
18001        ///Creates a new call builder for the [`upgradeToAndCall`] function.
18002        pub fn upgradeToAndCall(
18003            &self,
18004            newImplementation: alloy::sol_types::private::Address,
18005            data: alloy::sol_types::private::Bytes,
18006        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
18007            self.call_builder(
18008                &upgradeToAndCallCall {
18009                    newImplementation,
18010                    data,
18011                },
18012            )
18013        }
18014        ///Creates a new call builder for the [`votingStakeTableState`] function.
18015        pub fn votingStakeTableState(
18016            &self,
18017        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
18018            self.call_builder(&votingStakeTableStateCall)
18019        }
18020    }
18021    /// Event filters.
18022    impl<
18023        P: alloy_contract::private::Provider<N>,
18024        N: alloy_contract::private::Network,
18025    > LightClientV3Instance<P, N> {
18026        /// Creates a new event filter using this contract instance's provider and address.
18027        ///
18028        /// Note that the type can be any event, not just those defined in this contract.
18029        /// Prefer using the other methods for building type-safe event filters.
18030        pub fn event_filter<E: alloy_sol_types::SolEvent>(
18031            &self,
18032        ) -> alloy_contract::Event<&P, E, N> {
18033            alloy_contract::Event::new_sol(&self.provider, &self.address)
18034        }
18035        ///Creates a new event filter for the [`Initialized`] event.
18036        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
18037            self.event_filter::<Initialized>()
18038        }
18039        ///Creates a new event filter for the [`NewEpoch`] event.
18040        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
18041            self.event_filter::<NewEpoch>()
18042        }
18043        ///Creates a new event filter for the [`NewState`] event.
18044        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
18045            self.event_filter::<NewState>()
18046        }
18047        ///Creates a new event filter for the [`OwnershipTransferred`] event.
18048        pub fn OwnershipTransferred_filter(
18049            &self,
18050        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
18051            self.event_filter::<OwnershipTransferred>()
18052        }
18053        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
18054        pub fn PermissionedProverNotRequired_filter(
18055            &self,
18056        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
18057            self.event_filter::<PermissionedProverNotRequired>()
18058        }
18059        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
18060        pub fn PermissionedProverRequired_filter(
18061            &self,
18062        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
18063            self.event_filter::<PermissionedProverRequired>()
18064        }
18065        ///Creates a new event filter for the [`Upgrade`] event.
18066        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
18067            self.event_filter::<Upgrade>()
18068        }
18069        ///Creates a new event filter for the [`Upgraded`] event.
18070        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
18071            self.event_filter::<Upgraded>()
18072        }
18073    }
18074}