hotshot_contract_adapter/bindings/
light_client_arbitrum.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
170    const _: () = {
171        use alloy::sol_types as alloy_sol_types;
172        #[automatically_derived]
173        impl alloy_sol_types::private::SolTypeValue<ScalarField>
174        for alloy::sol_types::private::primitives::aliases::U256 {
175            #[inline]
176            fn stv_to_tokens(
177                &self,
178            ) -> <alloy::sol_types::sol_data::Uint<
179                256,
180            > as alloy_sol_types::SolType>::Token<'_> {
181                alloy_sol_types::private::SolTypeValue::<
182                    alloy::sol_types::sol_data::Uint<256>,
183                >::stv_to_tokens(self)
184            }
185            #[inline]
186            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
187                <alloy::sol_types::sol_data::Uint<
188                    256,
189                > as alloy_sol_types::SolType>::tokenize(self)
190                    .0
191            }
192            #[inline]
193            fn stv_abi_encode_packed_to(
194                &self,
195                out: &mut alloy_sol_types::private::Vec<u8>,
196            ) {
197                <alloy::sol_types::sol_data::Uint<
198                    256,
199                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
200            }
201            #[inline]
202            fn stv_abi_packed_encoded_size(&self) -> usize {
203                <alloy::sol_types::sol_data::Uint<
204                    256,
205                > as alloy_sol_types::SolType>::abi_encoded_size(self)
206            }
207        }
208        impl ScalarField {
209            /// The Solidity type name.
210            pub const NAME: &'static str = stringify!(@ name);
211            /// Convert from the underlying value type.
212            #[inline]
213            pub const fn from_underlying(
214                value: alloy::sol_types::private::primitives::aliases::U256,
215            ) -> Self {
216                Self(value)
217            }
218            /// Return the underlying value.
219            #[inline]
220            pub const fn into_underlying(
221                self,
222            ) -> alloy::sol_types::private::primitives::aliases::U256 {
223                self.0
224            }
225            /// Return the single encoding of this value, delegating to the
226            /// underlying type.
227            #[inline]
228            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
229                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
230            }
231            /// Return the packed encoding of this value, delegating to the
232            /// underlying type.
233            #[inline]
234            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
235                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
236            }
237        }
238        #[automatically_derived]
239        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
240            fn from(
241                value: alloy::sol_types::private::primitives::aliases::U256,
242            ) -> Self {
243                Self::from_underlying(value)
244            }
245        }
246        #[automatically_derived]
247        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
248            fn from(value: ScalarField) -> Self {
249                value.into_underlying()
250            }
251        }
252        #[automatically_derived]
253        impl alloy_sol_types::SolType for ScalarField {
254            type RustType = alloy::sol_types::private::primitives::aliases::U256;
255            type Token<'a> = <alloy::sol_types::sol_data::Uint<
256                256,
257            > as alloy_sol_types::SolType>::Token<'a>;
258            const SOL_NAME: &'static str = Self::NAME;
259            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
260                256,
261            > as alloy_sol_types::SolType>::ENCODED_SIZE;
262            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
263                256,
264            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
265            #[inline]
266            fn valid_token(token: &Self::Token<'_>) -> bool {
267                Self::type_check(token).is_ok()
268            }
269            #[inline]
270            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
271                <alloy::sol_types::sol_data::Uint<
272                    256,
273                > as alloy_sol_types::SolType>::type_check(token)
274            }
275            #[inline]
276            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
277                <alloy::sol_types::sol_data::Uint<
278                    256,
279                > as alloy_sol_types::SolType>::detokenize(token)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::EventTopic for ScalarField {
284            #[inline]
285            fn topic_preimage_length(rust: &Self::RustType) -> usize {
286                <alloy::sol_types::sol_data::Uint<
287                    256,
288                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
289            }
290            #[inline]
291            fn encode_topic_preimage(
292                rust: &Self::RustType,
293                out: &mut alloy_sol_types::private::Vec<u8>,
294            ) {
295                <alloy::sol_types::sol_data::Uint<
296                    256,
297                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
298            }
299            #[inline]
300            fn encode_topic(
301                rust: &Self::RustType,
302            ) -> alloy_sol_types::abi::token::WordToken {
303                <alloy::sol_types::sol_data::Uint<
304                    256,
305                > as alloy_sol_types::EventTopic>::encode_topic(rust)
306            }
307        }
308    };
309    #[derive(serde::Serialize, serde::Deserialize)]
310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
311    /**```solidity
312struct G1Point { BaseField x; BaseField y; }
313```*/
314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
315    #[derive(Clone)]
316    pub struct G1Point {
317        #[allow(missing_docs)]
318        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
321    }
322    #[allow(
323        non_camel_case_types,
324        non_snake_case,
325        clippy::pub_underscore_fields,
326        clippy::style
327    )]
328    const _: () = {
329        use alloy::sol_types as alloy_sol_types;
330        #[doc(hidden)]
331        #[allow(dead_code)]
332        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            <BaseField as alloy::sol_types::SolType>::RustType,
336            <BaseField as alloy::sol_types::SolType>::RustType,
337        );
338        #[cfg(test)]
339        #[allow(dead_code, unreachable_patterns)]
340        fn _type_assertion(
341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
342        ) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
352            fn from(value: G1Point) -> Self {
353                (value.x, value.y)
354            }
355        }
356        #[automatically_derived]
357        #[doc(hidden)]
358        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
359            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
360                Self { x: tuple.0, y: tuple.1 }
361            }
362        }
363        #[automatically_derived]
364        impl alloy_sol_types::SolValue for G1Point {
365            type SolType = Self;
366        }
367        #[automatically_derived]
368        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
369            #[inline]
370            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
371                (
372                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
374                )
375            }
376            #[inline]
377            fn stv_abi_encoded_size(&self) -> usize {
378                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
379                    return size;
380                }
381                let tuple = <UnderlyingRustTuple<
382                    '_,
383                > as ::core::convert::From<Self>>::from(self.clone());
384                <UnderlyingSolTuple<
385                    '_,
386                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
387            }
388            #[inline]
389            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
390                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
391            }
392            #[inline]
393            fn stv_abi_encode_packed_to(
394                &self,
395                out: &mut alloy_sol_types::private::Vec<u8>,
396            ) {
397                let tuple = <UnderlyingRustTuple<
398                    '_,
399                > as ::core::convert::From<Self>>::from(self.clone());
400                <UnderlyingSolTuple<
401                    '_,
402                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
403            }
404            #[inline]
405            fn stv_abi_packed_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G1Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<
421                'a,
422            > as alloy_sol_types::SolType>::Token<'a>;
423            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
424            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
425                '_,
426            > as alloy_sol_types::SolType>::ENCODED_SIZE;
427            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
428                '_,
429            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
430            #[inline]
431            fn valid_token(token: &Self::Token<'_>) -> bool {
432                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
433            }
434            #[inline]
435            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
436                let tuple = <UnderlyingSolTuple<
437                    '_,
438                > as alloy_sol_types::SolType>::detokenize(token);
439                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
440            }
441        }
442        #[automatically_derived]
443        impl alloy_sol_types::SolStruct for G1Point {
444            const NAME: &'static str = "G1Point";
445            #[inline]
446            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
447                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
448            }
449            #[inline]
450            fn eip712_components() -> alloy_sol_types::private::Vec<
451                alloy_sol_types::private::Cow<'static, str>,
452            > {
453                alloy_sol_types::private::Vec::new()
454            }
455            #[inline]
456            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
457                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
458            }
459            #[inline]
460            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
461                [
462                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
464                ]
465                    .concat()
466            }
467        }
468        #[automatically_derived]
469        impl alloy_sol_types::EventTopic for G1Point {
470            #[inline]
471            fn topic_preimage_length(rust: &Self::RustType) -> usize {
472                0usize
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
474                        &rust.x,
475                    )
476                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
477                        &rust.y,
478                    )
479            }
480            #[inline]
481            fn encode_topic_preimage(
482                rust: &Self::RustType,
483                out: &mut alloy_sol_types::private::Vec<u8>,
484            ) {
485                out.reserve(
486                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
487                );
488                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    &rust.x,
490                    out,
491                );
492                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
493                    &rust.y,
494                    out,
495                );
496            }
497            #[inline]
498            fn encode_topic(
499                rust: &Self::RustType,
500            ) -> alloy_sol_types::abi::token::WordToken {
501                let mut out = alloy_sol_types::private::Vec::new();
502                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
503                    rust,
504                    &mut out,
505                );
506                alloy_sol_types::abi::token::WordToken(
507                    alloy_sol_types::private::keccak256(out),
508                )
509            }
510        }
511    };
512    use alloy::contract as alloy_contract;
513    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
514
515See the [wrapper's documentation](`BN254Instance`) for more details.*/
516    #[inline]
517    pub const fn new<
518        P: alloy_contract::private::Provider<N>,
519        N: alloy_contract::private::Network,
520    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
521        BN254Instance::<P, N>::new(address, __provider)
522    }
523    /**A [`BN254`](self) instance.
524
525Contains type-safe methods for interacting with an on-chain instance of the
526[`BN254`](self) contract located at a given `address`, using a given
527provider `P`.
528
529If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
530documentation on how to provide it), the `deploy` and `deploy_builder` methods can
531be used to deploy a new instance of the contract.
532
533See the [module-level documentation](self) for all the available methods.*/
534    #[derive(Clone)]
535    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
536        address: alloy_sol_types::private::Address,
537        provider: P,
538        _network: ::core::marker::PhantomData<N>,
539    }
540    #[automatically_derived]
541    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
542        #[inline]
543        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
544            f.debug_tuple("BN254Instance").field(&self.address).finish()
545        }
546    }
547    /// Instantiation and getters/setters.
548    impl<
549        P: alloy_contract::private::Provider<N>,
550        N: alloy_contract::private::Network,
551    > BN254Instance<P, N> {
552        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
553
554See the [wrapper's documentation](`BN254Instance`) for more details.*/
555        #[inline]
556        pub const fn new(
557            address: alloy_sol_types::private::Address,
558            __provider: P,
559        ) -> Self {
560            Self {
561                address,
562                provider: __provider,
563                _network: ::core::marker::PhantomData,
564            }
565        }
566        /// Returns a reference to the address.
567        #[inline]
568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
569            &self.address
570        }
571        /// Sets the address.
572        #[inline]
573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
574            self.address = address;
575        }
576        /// Sets the address and returns `self`.
577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
578            self.set_address(address);
579            self
580        }
581        /// Returns a reference to the provider.
582        #[inline]
583        pub const fn provider(&self) -> &P {
584            &self.provider
585        }
586    }
587    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
588        /// Clones the provider and returns a new instance with the cloned provider.
589        #[inline]
590        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
591            BN254Instance {
592                address: self.address,
593                provider: ::core::clone::Clone::clone(&self.provider),
594                _network: ::core::marker::PhantomData,
595            }
596        }
597    }
598    /// Function calls.
599    impl<
600        P: alloy_contract::private::Provider<N>,
601        N: alloy_contract::private::Network,
602    > BN254Instance<P, N> {
603        /// Creates a new call builder using this contract instance's provider and address.
604        ///
605        /// Note that the call can be any function call, not just those defined in this
606        /// contract. Prefer using the other methods for building type-safe contract calls.
607        pub fn call_builder<C: alloy_sol_types::SolCall>(
608            &self,
609            call: &C,
610        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
611            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
612        }
613    }
614    /// Event filters.
615    impl<
616        P: alloy_contract::private::Provider<N>,
617        N: alloy_contract::private::Network,
618    > BN254Instance<P, N> {
619        /// Creates a new event filter using this contract instance's provider and address.
620        ///
621        /// Note that the type can be any event, not just those defined in this contract.
622        /// Prefer using the other methods for building type-safe event filters.
623        pub fn event_filter<E: alloy_sol_types::SolEvent>(
624            &self,
625        ) -> alloy_contract::Event<&P, E, N> {
626            alloy_contract::Event::new_sol(&self.provider, &self.address)
627        }
628    }
629}
630///Module containing a contract's types and functions.
631/**
632
633```solidity
634library IPlonkVerifier {
635    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
636    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
637}
638```*/
639#[allow(
640    non_camel_case_types,
641    non_snake_case,
642    clippy::pub_underscore_fields,
643    clippy::style,
644    clippy::empty_structs_with_brackets
645)]
646pub mod IPlonkVerifier {
647    use super::*;
648    use alloy::sol_types as alloy_sol_types;
649    #[derive(serde::Serialize, serde::Deserialize)]
650    #[derive()]
651    /**```solidity
652struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
653```*/
654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
655    #[derive(Clone)]
656    pub struct PlonkProof {
657        #[allow(missing_docs)]
658        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
659        #[allow(missing_docs)]
660        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
661        #[allow(missing_docs)]
662        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703    }
704    #[allow(
705        non_camel_case_types,
706        non_snake_case,
707        clippy::pub_underscore_fields,
708        clippy::style
709    )]
710    const _: () = {
711        use alloy::sol_types as alloy_sol_types;
712        #[doc(hidden)]
713        #[allow(dead_code)]
714        type UnderlyingSolTuple<'a> = (
715            BN254::G1Point,
716            BN254::G1Point,
717            BN254::G1Point,
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::ScalarField,
729            BN254::ScalarField,
730            BN254::ScalarField,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738        );
739        #[doc(hidden)]
740        type UnderlyingRustTuple<'a> = (
741            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
742            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
743            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
755            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
756            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764        );
765        #[cfg(test)]
766        #[allow(dead_code, unreachable_patterns)]
767        fn _type_assertion(
768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
769        ) {
770            match _t {
771                alloy_sol_types::private::AssertTypeEq::<
772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
773                >(_) => {}
774            }
775        }
776        #[automatically_derived]
777        #[doc(hidden)]
778        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
779            fn from(value: PlonkProof) -> Self {
780                (
781                    value.wire0,
782                    value.wire1,
783                    value.wire2,
784                    value.wire3,
785                    value.wire4,
786                    value.prodPerm,
787                    value.split0,
788                    value.split1,
789                    value.split2,
790                    value.split3,
791                    value.split4,
792                    value.zeta,
793                    value.zetaOmega,
794                    value.wireEval0,
795                    value.wireEval1,
796                    value.wireEval2,
797                    value.wireEval3,
798                    value.wireEval4,
799                    value.sigmaEval0,
800                    value.sigmaEval1,
801                    value.sigmaEval2,
802                    value.sigmaEval3,
803                    value.prodPermZetaOmegaEval,
804                )
805            }
806        }
807        #[automatically_derived]
808        #[doc(hidden)]
809        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
811                Self {
812                    wire0: tuple.0,
813                    wire1: tuple.1,
814                    wire2: tuple.2,
815                    wire3: tuple.3,
816                    wire4: tuple.4,
817                    prodPerm: tuple.5,
818                    split0: tuple.6,
819                    split1: tuple.7,
820                    split2: tuple.8,
821                    split3: tuple.9,
822                    split4: tuple.10,
823                    zeta: tuple.11,
824                    zetaOmega: tuple.12,
825                    wireEval0: tuple.13,
826                    wireEval1: tuple.14,
827                    wireEval2: tuple.15,
828                    wireEval3: tuple.16,
829                    wireEval4: tuple.17,
830                    sigmaEval0: tuple.18,
831                    sigmaEval1: tuple.19,
832                    sigmaEval2: tuple.20,
833                    sigmaEval3: tuple.21,
834                    prodPermZetaOmegaEval: tuple.22,
835                }
836            }
837        }
838        #[automatically_derived]
839        impl alloy_sol_types::SolValue for PlonkProof {
840            type SolType = Self;
841        }
842        #[automatically_derived]
843        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
844            #[inline]
845            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
846                (
847                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
848                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
849                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
853                        &self.prodPerm,
854                    ),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
862                        &self.zetaOmega,
863                    ),
864                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
865                        &self.wireEval0,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval1,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval2,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval3,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval4,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.sigmaEval0,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval1,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval2,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval3,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.prodPermZetaOmegaEval,
893                    ),
894                )
895            }
896            #[inline]
897            fn stv_abi_encoded_size(&self) -> usize {
898                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
899                    return size;
900                }
901                let tuple = <UnderlyingRustTuple<
902                    '_,
903                > as ::core::convert::From<Self>>::from(self.clone());
904                <UnderlyingSolTuple<
905                    '_,
906                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
907            }
908            #[inline]
909            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
910                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
911            }
912            #[inline]
913            fn stv_abi_encode_packed_to(
914                &self,
915                out: &mut alloy_sol_types::private::Vec<u8>,
916            ) {
917                let tuple = <UnderlyingRustTuple<
918                    '_,
919                > as ::core::convert::From<Self>>::from(self.clone());
920                <UnderlyingSolTuple<
921                    '_,
922                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
923            }
924            #[inline]
925            fn stv_abi_packed_encoded_size(&self) -> usize {
926                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
927                    return size;
928                }
929                let tuple = <UnderlyingRustTuple<
930                    '_,
931                > as ::core::convert::From<Self>>::from(self.clone());
932                <UnderlyingSolTuple<
933                    '_,
934                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
935            }
936        }
937        #[automatically_derived]
938        impl alloy_sol_types::SolType for PlonkProof {
939            type RustType = Self;
940            type Token<'a> = <UnderlyingSolTuple<
941                'a,
942            > as alloy_sol_types::SolType>::Token<'a>;
943            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
944            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
945                '_,
946            > as alloy_sol_types::SolType>::ENCODED_SIZE;
947            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
950            #[inline]
951            fn valid_token(token: &Self::Token<'_>) -> bool {
952                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
953            }
954            #[inline]
955            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
956                let tuple = <UnderlyingSolTuple<
957                    '_,
958                > as alloy_sol_types::SolType>::detokenize(token);
959                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
960            }
961        }
962        #[automatically_derived]
963        impl alloy_sol_types::SolStruct for PlonkProof {
964            const NAME: &'static str = "PlonkProof";
965            #[inline]
966            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
967                alloy_sol_types::private::Cow::Borrowed(
968                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
969                )
970            }
971            #[inline]
972            fn eip712_components() -> alloy_sol_types::private::Vec<
973                alloy_sol_types::private::Cow<'static, str>,
974            > {
975                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
976                components
977                    .push(
978                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
979                    );
980                components
981                    .extend(
982                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
983                    );
984                components
985                    .push(
986                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
987                    );
988                components
989                    .extend(
990                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
991                    );
992                components
993                    .push(
994                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
995                    );
996                components
997                    .extend(
998                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
999                    );
1000                components
1001                    .push(
1002                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1003                    );
1004                components
1005                    .extend(
1006                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1007                    );
1008                components
1009                    .push(
1010                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1011                    );
1012                components
1013                    .extend(
1014                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1015                    );
1016                components
1017                    .push(
1018                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1019                    );
1020                components
1021                    .extend(
1022                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1023                    );
1024                components
1025                    .push(
1026                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1027                    );
1028                components
1029                    .extend(
1030                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1031                    );
1032                components
1033                    .push(
1034                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1035                    );
1036                components
1037                    .extend(
1038                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1039                    );
1040                components
1041                    .push(
1042                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1043                    );
1044                components
1045                    .extend(
1046                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1047                    );
1048                components
1049                    .push(
1050                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1051                    );
1052                components
1053                    .extend(
1054                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1055                    );
1056                components
1057                    .push(
1058                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1059                    );
1060                components
1061                    .extend(
1062                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1063                    );
1064                components
1065                    .push(
1066                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1067                    );
1068                components
1069                    .extend(
1070                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1071                    );
1072                components
1073                    .push(
1074                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1075                    );
1076                components
1077                    .extend(
1078                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1079                    );
1080                components
1081            }
1082            #[inline]
1083            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1084                [
1085                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1086                            &self.wire0,
1087                        )
1088                        .0,
1089                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1090                            &self.wire1,
1091                        )
1092                        .0,
1093                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1094                            &self.wire2,
1095                        )
1096                        .0,
1097                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1098                            &self.wire3,
1099                        )
1100                        .0,
1101                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1102                            &self.wire4,
1103                        )
1104                        .0,
1105                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1106                            &self.prodPerm,
1107                        )
1108                        .0,
1109                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1110                            &self.split0,
1111                        )
1112                        .0,
1113                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1114                            &self.split1,
1115                        )
1116                        .0,
1117                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1118                            &self.split2,
1119                        )
1120                        .0,
1121                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1122                            &self.split3,
1123                        )
1124                        .0,
1125                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1126                            &self.split4,
1127                        )
1128                        .0,
1129                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1130                            &self.zeta,
1131                        )
1132                        .0,
1133                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1134                            &self.zetaOmega,
1135                        )
1136                        .0,
1137                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1138                            &self.wireEval0,
1139                        )
1140                        .0,
1141                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1142                            &self.wireEval1,
1143                        )
1144                        .0,
1145                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1146                            &self.wireEval2,
1147                        )
1148                        .0,
1149                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1150                            &self.wireEval3,
1151                        )
1152                        .0,
1153                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1154                            &self.wireEval4,
1155                        )
1156                        .0,
1157                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1158                            &self.sigmaEval0,
1159                        )
1160                        .0,
1161                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1162                            &self.sigmaEval1,
1163                        )
1164                        .0,
1165                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1166                            &self.sigmaEval2,
1167                        )
1168                        .0,
1169                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1170                            &self.sigmaEval3,
1171                        )
1172                        .0,
1173                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1174                            &self.prodPermZetaOmegaEval,
1175                        )
1176                        .0,
1177                ]
1178                    .concat()
1179            }
1180        }
1181        #[automatically_derived]
1182        impl alloy_sol_types::EventTopic for PlonkProof {
1183            #[inline]
1184            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1185                0usize
1186                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1187                        &rust.wire0,
1188                    )
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire1,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire2,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire3,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire4,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.prodPerm,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.split0,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split1,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split2,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split3,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split4,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.zeta,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zetaOmega,
1224                    )
1225                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.wireEval0,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval1,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval2,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval3,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval4,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.sigmaEval0,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval1,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval2,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval3,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.prodPermZetaOmegaEval,
1254                    )
1255            }
1256            #[inline]
1257            fn encode_topic_preimage(
1258                rust: &Self::RustType,
1259                out: &mut alloy_sol_types::private::Vec<u8>,
1260            ) {
1261                out.reserve(
1262                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1263                );
1264                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1265                    &rust.wire0,
1266                    out,
1267                );
1268                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1269                    &rust.wire1,
1270                    out,
1271                );
1272                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1273                    &rust.wire2,
1274                    out,
1275                );
1276                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1277                    &rust.wire3,
1278                    out,
1279                );
1280                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1281                    &rust.wire4,
1282                    out,
1283                );
1284                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1285                    &rust.prodPerm,
1286                    out,
1287                );
1288                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1289                    &rust.split0,
1290                    out,
1291                );
1292                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1293                    &rust.split1,
1294                    out,
1295                );
1296                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1297                    &rust.split2,
1298                    out,
1299                );
1300                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1301                    &rust.split3,
1302                    out,
1303                );
1304                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1305                    &rust.split4,
1306                    out,
1307                );
1308                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1309                    &rust.zeta,
1310                    out,
1311                );
1312                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1313                    &rust.zetaOmega,
1314                    out,
1315                );
1316                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1317                    &rust.wireEval0,
1318                    out,
1319                );
1320                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1321                    &rust.wireEval1,
1322                    out,
1323                );
1324                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1325                    &rust.wireEval2,
1326                    out,
1327                );
1328                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1329                    &rust.wireEval3,
1330                    out,
1331                );
1332                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1333                    &rust.wireEval4,
1334                    out,
1335                );
1336                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1337                    &rust.sigmaEval0,
1338                    out,
1339                );
1340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    &rust.sigmaEval1,
1342                    out,
1343                );
1344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1345                    &rust.sigmaEval2,
1346                    out,
1347                );
1348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1349                    &rust.sigmaEval3,
1350                    out,
1351                );
1352                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1353                    &rust.prodPermZetaOmegaEval,
1354                    out,
1355                );
1356            }
1357            #[inline]
1358            fn encode_topic(
1359                rust: &Self::RustType,
1360            ) -> alloy_sol_types::abi::token::WordToken {
1361                let mut out = alloy_sol_types::private::Vec::new();
1362                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1363                    rust,
1364                    &mut out,
1365                );
1366                alloy_sol_types::abi::token::WordToken(
1367                    alloy_sol_types::private::keccak256(out),
1368                )
1369            }
1370        }
1371    };
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive()]
1374    /**```solidity
1375struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct VerifyingKey {
1380        #[allow(missing_docs)]
1381        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1382        #[allow(missing_docs)]
1383        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1384        #[allow(missing_docs)]
1385        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1386        #[allow(missing_docs)]
1387        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1388        #[allow(missing_docs)]
1389        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1390        #[allow(missing_docs)]
1391        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1392        #[allow(missing_docs)]
1393        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1394        #[allow(missing_docs)]
1395        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1396        #[allow(missing_docs)]
1397        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1398        #[allow(missing_docs)]
1399        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1400        #[allow(missing_docs)]
1401        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1402        #[allow(missing_docs)]
1403        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1404        #[allow(missing_docs)]
1405        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1406        #[allow(missing_docs)]
1407        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1408        #[allow(missing_docs)]
1409        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1410        #[allow(missing_docs)]
1411        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1412        #[allow(missing_docs)]
1413        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1414        #[allow(missing_docs)]
1415        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1416        #[allow(missing_docs)]
1417        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1418        #[allow(missing_docs)]
1419        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1420        #[allow(missing_docs)]
1421        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1422        #[allow(missing_docs)]
1423        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1424    }
1425    #[allow(
1426        non_camel_case_types,
1427        non_snake_case,
1428        clippy::pub_underscore_fields,
1429        clippy::style
1430    )]
1431    const _: () = {
1432        use alloy::sol_types as alloy_sol_types;
1433        #[doc(hidden)]
1434        #[allow(dead_code)]
1435        type UnderlyingSolTuple<'a> = (
1436            alloy::sol_types::sol_data::Uint<256>,
1437            alloy::sol_types::sol_data::Uint<256>,
1438            BN254::G1Point,
1439            BN254::G1Point,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            alloy::sol_types::sol_data::FixedBytes<32>,
1457            alloy::sol_types::sol_data::FixedBytes<32>,
1458        );
1459        #[doc(hidden)]
1460        type UnderlyingRustTuple<'a> = (
1461            alloy::sol_types::private::primitives::aliases::U256,
1462            alloy::sol_types::private::primitives::aliases::U256,
1463            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1464            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            alloy::sol_types::private::FixedBytes<32>,
1482            alloy::sol_types::private::FixedBytes<32>,
1483        );
1484        #[cfg(test)]
1485        #[allow(dead_code, unreachable_patterns)]
1486        fn _type_assertion(
1487            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1488        ) {
1489            match _t {
1490                alloy_sol_types::private::AssertTypeEq::<
1491                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1492                >(_) => {}
1493            }
1494        }
1495        #[automatically_derived]
1496        #[doc(hidden)]
1497        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1498            fn from(value: VerifyingKey) -> Self {
1499                (
1500                    value.domainSize,
1501                    value.numInputs,
1502                    value.sigma0,
1503                    value.sigma1,
1504                    value.sigma2,
1505                    value.sigma3,
1506                    value.sigma4,
1507                    value.q1,
1508                    value.q2,
1509                    value.q3,
1510                    value.q4,
1511                    value.qM12,
1512                    value.qM34,
1513                    value.qO,
1514                    value.qC,
1515                    value.qH1,
1516                    value.qH2,
1517                    value.qH3,
1518                    value.qH4,
1519                    value.qEcc,
1520                    value.g2LSB,
1521                    value.g2MSB,
1522                )
1523            }
1524        }
1525        #[automatically_derived]
1526        #[doc(hidden)]
1527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1529                Self {
1530                    domainSize: tuple.0,
1531                    numInputs: tuple.1,
1532                    sigma0: tuple.2,
1533                    sigma1: tuple.3,
1534                    sigma2: tuple.4,
1535                    sigma3: tuple.5,
1536                    sigma4: tuple.6,
1537                    q1: tuple.7,
1538                    q2: tuple.8,
1539                    q3: tuple.9,
1540                    q4: tuple.10,
1541                    qM12: tuple.11,
1542                    qM34: tuple.12,
1543                    qO: tuple.13,
1544                    qC: tuple.14,
1545                    qH1: tuple.15,
1546                    qH2: tuple.16,
1547                    qH3: tuple.17,
1548                    qH4: tuple.18,
1549                    qEcc: tuple.19,
1550                    g2LSB: tuple.20,
1551                    g2MSB: tuple.21,
1552                }
1553            }
1554        }
1555        #[automatically_derived]
1556        impl alloy_sol_types::SolValue for VerifyingKey {
1557            type SolType = Self;
1558        }
1559        #[automatically_derived]
1560        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1561            #[inline]
1562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1563                (
1564                    <alloy::sol_types::sol_data::Uint<
1565                        256,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1567                    <alloy::sol_types::sol_data::Uint<
1568                        256,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1570                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1571                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1588                    <alloy::sol_types::sol_data::FixedBytes<
1589                        32,
1590                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1591                    <alloy::sol_types::sol_data::FixedBytes<
1592                        32,
1593                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1594                )
1595            }
1596            #[inline]
1597            fn stv_abi_encoded_size(&self) -> usize {
1598                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1599                    return size;
1600                }
1601                let tuple = <UnderlyingRustTuple<
1602                    '_,
1603                > as ::core::convert::From<Self>>::from(self.clone());
1604                <UnderlyingSolTuple<
1605                    '_,
1606                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1607            }
1608            #[inline]
1609            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1610                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1611            }
1612            #[inline]
1613            fn stv_abi_encode_packed_to(
1614                &self,
1615                out: &mut alloy_sol_types::private::Vec<u8>,
1616            ) {
1617                let tuple = <UnderlyingRustTuple<
1618                    '_,
1619                > as ::core::convert::From<Self>>::from(self.clone());
1620                <UnderlyingSolTuple<
1621                    '_,
1622                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1623            }
1624            #[inline]
1625            fn stv_abi_packed_encoded_size(&self) -> usize {
1626                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1627                    return size;
1628                }
1629                let tuple = <UnderlyingRustTuple<
1630                    '_,
1631                > as ::core::convert::From<Self>>::from(self.clone());
1632                <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1635            }
1636        }
1637        #[automatically_derived]
1638        impl alloy_sol_types::SolType for VerifyingKey {
1639            type RustType = Self;
1640            type Token<'a> = <UnderlyingSolTuple<
1641                'a,
1642            > as alloy_sol_types::SolType>::Token<'a>;
1643            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1644            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1645                '_,
1646            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1647            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1648                '_,
1649            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1650            #[inline]
1651            fn valid_token(token: &Self::Token<'_>) -> bool {
1652                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1653            }
1654            #[inline]
1655            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1656                let tuple = <UnderlyingSolTuple<
1657                    '_,
1658                > as alloy_sol_types::SolType>::detokenize(token);
1659                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1660            }
1661        }
1662        #[automatically_derived]
1663        impl alloy_sol_types::SolStruct for VerifyingKey {
1664            const NAME: &'static str = "VerifyingKey";
1665            #[inline]
1666            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1667                alloy_sol_types::private::Cow::Borrowed(
1668                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1669                )
1670            }
1671            #[inline]
1672            fn eip712_components() -> alloy_sol_types::private::Vec<
1673                alloy_sol_types::private::Cow<'static, str>,
1674            > {
1675                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797                    .push(
1798                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1799                    );
1800                components
1801                    .extend(
1802                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1803                    );
1804                components
1805                    .push(
1806                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1807                    );
1808                components
1809                    .extend(
1810                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1811                    );
1812                components
1813                    .push(
1814                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1815                    );
1816                components
1817                    .extend(
1818                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1819                    );
1820                components
1821            }
1822            #[inline]
1823            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1824                [
1825                    <alloy::sol_types::sol_data::Uint<
1826                        256,
1827                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1828                        .0,
1829                    <alloy::sol_types::sol_data::Uint<
1830                        256,
1831                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.sigma0,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.sigma1,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.sigma2,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.sigma3,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.sigma4,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.q1,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.q2,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.q3,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.q4,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qM12,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qM34,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qO,
1879                        )
1880                        .0,
1881                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1882                            &self.qC,
1883                        )
1884                        .0,
1885                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1886                            &self.qH1,
1887                        )
1888                        .0,
1889                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1890                            &self.qH2,
1891                        )
1892                        .0,
1893                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1894                            &self.qH3,
1895                        )
1896                        .0,
1897                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1898                            &self.qH4,
1899                        )
1900                        .0,
1901                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1902                            &self.qEcc,
1903                        )
1904                        .0,
1905                    <alloy::sol_types::sol_data::FixedBytes<
1906                        32,
1907                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1908                        .0,
1909                    <alloy::sol_types::sol_data::FixedBytes<
1910                        32,
1911                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1912                        .0,
1913                ]
1914                    .concat()
1915            }
1916        }
1917        #[automatically_derived]
1918        impl alloy_sol_types::EventTopic for VerifyingKey {
1919            #[inline]
1920            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1921                0usize
1922                    + <alloy::sol_types::sol_data::Uint<
1923                        256,
1924                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1925                        &rust.domainSize,
1926                    )
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.numInputs,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.sigma0,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.sigma1,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.sigma2,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.sigma3,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.sigma4,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.q1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.q2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.q3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.q4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qM12,
1961                    )
1962                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1963                        &rust.qM34,
1964                    )
1965                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1966                        &rust.qO,
1967                    )
1968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1969                        &rust.qC,
1970                    )
1971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1972                        &rust.qH1,
1973                    )
1974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1975                        &rust.qH2,
1976                    )
1977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1978                        &rust.qH3,
1979                    )
1980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1981                        &rust.qH4,
1982                    )
1983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1984                        &rust.qEcc,
1985                    )
1986                    + <alloy::sol_types::sol_data::FixedBytes<
1987                        32,
1988                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1989                    + <alloy::sol_types::sol_data::FixedBytes<
1990                        32,
1991                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1992            }
1993            #[inline]
1994            fn encode_topic_preimage(
1995                rust: &Self::RustType,
1996                out: &mut alloy_sol_types::private::Vec<u8>,
1997            ) {
1998                out.reserve(
1999                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2000                );
2001                <alloy::sol_types::sol_data::Uint<
2002                    256,
2003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2004                    &rust.domainSize,
2005                    out,
2006                );
2007                <alloy::sol_types::sol_data::Uint<
2008                    256,
2009                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.numInputs,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.sigma0,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.sigma1,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.sigma2,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.sigma3,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.sigma4,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.q1,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.q2,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.q3,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.q4,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qM12,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qM34,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qO,
2059                    out,
2060                );
2061                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2062                    &rust.qC,
2063                    out,
2064                );
2065                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2066                    &rust.qH1,
2067                    out,
2068                );
2069                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.qH2,
2071                    out,
2072                );
2073                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2074                    &rust.qH3,
2075                    out,
2076                );
2077                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2078                    &rust.qH4,
2079                    out,
2080                );
2081                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2082                    &rust.qEcc,
2083                    out,
2084                );
2085                <alloy::sol_types::sol_data::FixedBytes<
2086                    32,
2087                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2088                    &rust.g2LSB,
2089                    out,
2090                );
2091                <alloy::sol_types::sol_data::FixedBytes<
2092                    32,
2093                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2094                    &rust.g2MSB,
2095                    out,
2096                );
2097            }
2098            #[inline]
2099            fn encode_topic(
2100                rust: &Self::RustType,
2101            ) -> alloy_sol_types::abi::token::WordToken {
2102                let mut out = alloy_sol_types::private::Vec::new();
2103                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2104                    rust,
2105                    &mut out,
2106                );
2107                alloy_sol_types::abi::token::WordToken(
2108                    alloy_sol_types::private::keccak256(out),
2109                )
2110            }
2111        }
2112    };
2113    use alloy::contract as alloy_contract;
2114    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2115
2116See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2117    #[inline]
2118    pub const fn new<
2119        P: alloy_contract::private::Provider<N>,
2120        N: alloy_contract::private::Network,
2121    >(
2122        address: alloy_sol_types::private::Address,
2123        __provider: P,
2124    ) -> IPlonkVerifierInstance<P, N> {
2125        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2126    }
2127    /**A [`IPlonkVerifier`](self) instance.
2128
2129Contains type-safe methods for interacting with an on-chain instance of the
2130[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2131provider `P`.
2132
2133If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2134documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2135be used to deploy a new instance of the contract.
2136
2137See the [module-level documentation](self) for all the available methods.*/
2138    #[derive(Clone)]
2139    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2140        address: alloy_sol_types::private::Address,
2141        provider: P,
2142        _network: ::core::marker::PhantomData<N>,
2143    }
2144    #[automatically_derived]
2145    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2146        #[inline]
2147        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2148            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2149        }
2150    }
2151    /// Instantiation and getters/setters.
2152    impl<
2153        P: alloy_contract::private::Provider<N>,
2154        N: alloy_contract::private::Network,
2155    > IPlonkVerifierInstance<P, N> {
2156        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2157
2158See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2159        #[inline]
2160        pub const fn new(
2161            address: alloy_sol_types::private::Address,
2162            __provider: P,
2163        ) -> Self {
2164            Self {
2165                address,
2166                provider: __provider,
2167                _network: ::core::marker::PhantomData,
2168            }
2169        }
2170        /// Returns a reference to the address.
2171        #[inline]
2172        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2173            &self.address
2174        }
2175        /// Sets the address.
2176        #[inline]
2177        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2178            self.address = address;
2179        }
2180        /// Sets the address and returns `self`.
2181        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2182            self.set_address(address);
2183            self
2184        }
2185        /// Returns a reference to the provider.
2186        #[inline]
2187        pub const fn provider(&self) -> &P {
2188            &self.provider
2189        }
2190    }
2191    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2192        /// Clones the provider and returns a new instance with the cloned provider.
2193        #[inline]
2194        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2195            IPlonkVerifierInstance {
2196                address: self.address,
2197                provider: ::core::clone::Clone::clone(&self.provider),
2198                _network: ::core::marker::PhantomData,
2199            }
2200        }
2201    }
2202    /// Function calls.
2203    impl<
2204        P: alloy_contract::private::Provider<N>,
2205        N: alloy_contract::private::Network,
2206    > IPlonkVerifierInstance<P, N> {
2207        /// Creates a new call builder using this contract instance's provider and address.
2208        ///
2209        /// Note that the call can be any function call, not just those defined in this
2210        /// contract. Prefer using the other methods for building type-safe contract calls.
2211        pub fn call_builder<C: alloy_sol_types::SolCall>(
2212            &self,
2213            call: &C,
2214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2216        }
2217    }
2218    /// Event filters.
2219    impl<
2220        P: alloy_contract::private::Provider<N>,
2221        N: alloy_contract::private::Network,
2222    > IPlonkVerifierInstance<P, N> {
2223        /// Creates a new event filter using this contract instance's provider and address.
2224        ///
2225        /// Note that the type can be any event, not just those defined in this contract.
2226        /// Prefer using the other methods for building type-safe event filters.
2227        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2228            &self,
2229        ) -> alloy_contract::Event<&P, E, N> {
2230            alloy_contract::Event::new_sol(&self.provider, &self.address)
2231        }
2232    }
2233}
2234///Module containing a contract's types and functions.
2235/**
2236
2237```solidity
2238library LightClient {
2239    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2240    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2241}
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 LightClientArbitrum {
2970    error AddressEmptyCode(address target);
2971    error ERC1967InvalidImplementation(address implementation);
2972    error ERC1967NonPayable();
2973    error FailedInnerCall();
2974    error InsufficientSnapshotHistory();
2975    error InvalidAddress();
2976    error InvalidArgs();
2977    error InvalidHotShotBlockForCommitmentCheck();
2978    error InvalidInitialization();
2979    error InvalidMaxStateHistory();
2980    error InvalidProof();
2981    error InvalidScalar();
2982    error NoChangeRequired();
2983    error NotInitializing();
2984    error OutdatedState();
2985    error OwnableInvalidOwner(address owner);
2986    error OwnableUnauthorizedAccount(address account);
2987    error OwnershipCannotBeRenounced();
2988    error ProverNotPermissioned();
2989    error UUPSUnauthorizedCallContext();
2990    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2991    error WrongStakeTableUsed();
2992
2993    event Initialized(uint64 version);
2994    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2995    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2996    event PermissionedProverNotRequired();
2997    event PermissionedProverRequired(address permissionedProver);
2998    event Upgrade(address implementation);
2999    event Upgraded(address indexed implementation);
3000
3001    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3002    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3003    function currentBlockNumber() external view returns (uint256);
3004    function disablePermissionedProverMode() external;
3005    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3006    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3007    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3008    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3009    function getStateHistoryCount() external view returns (uint256);
3010    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3011    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3012    function isPermissionedProverEnabled() external view returns (bool);
3013    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3014    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
3015    function owner() external view returns (address);
3016    function permissionedProver() external view returns (address);
3017    function proxiableUUID() external view returns (bytes32);
3018    function renounceOwnership() external;
3019    function setPermissionedProver(address prover) external;
3020    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3021    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3022    function stateHistoryFirstIndex() external view returns (uint64);
3023    function stateHistoryRetentionPeriod() external view returns (uint32);
3024    function transferOwnership(address newOwner) external;
3025    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3026}
3027```
3028
3029...which was generated by the following JSON ABI:
3030```json
3031[
3032  {
3033    "type": "function",
3034    "name": "UPGRADE_INTERFACE_VERSION",
3035    "inputs": [],
3036    "outputs": [
3037      {
3038        "name": "",
3039        "type": "string",
3040        "internalType": "string"
3041      }
3042    ],
3043    "stateMutability": "view"
3044  },
3045  {
3046    "type": "function",
3047    "name": "_getVk",
3048    "inputs": [],
3049    "outputs": [
3050      {
3051        "name": "vk",
3052        "type": "tuple",
3053        "internalType": "struct IPlonkVerifier.VerifyingKey",
3054        "components": [
3055          {
3056            "name": "domainSize",
3057            "type": "uint256",
3058            "internalType": "uint256"
3059          },
3060          {
3061            "name": "numInputs",
3062            "type": "uint256",
3063            "internalType": "uint256"
3064          },
3065          {
3066            "name": "sigma0",
3067            "type": "tuple",
3068            "internalType": "struct BN254.G1Point",
3069            "components": [
3070              {
3071                "name": "x",
3072                "type": "uint256",
3073                "internalType": "BN254.BaseField"
3074              },
3075              {
3076                "name": "y",
3077                "type": "uint256",
3078                "internalType": "BN254.BaseField"
3079              }
3080            ]
3081          },
3082          {
3083            "name": "sigma1",
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": "sigma2",
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": "sigma3",
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": "sigma4",
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": "q1",
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": "q2",
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": "q3",
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": "q4",
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": "qM12",
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": "qM34",
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": "qO",
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": "qC",
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": "qH1",
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": "qH2",
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": "qH3",
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": "qH4",
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": "qEcc",
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": "g2LSB",
3373            "type": "bytes32",
3374            "internalType": "bytes32"
3375          },
3376          {
3377            "name": "g2MSB",
3378            "type": "bytes32",
3379            "internalType": "bytes32"
3380          }
3381        ]
3382      }
3383    ],
3384    "stateMutability": "pure"
3385  },
3386  {
3387    "type": "function",
3388    "name": "currentBlockNumber",
3389    "inputs": [],
3390    "outputs": [
3391      {
3392        "name": "",
3393        "type": "uint256",
3394        "internalType": "uint256"
3395      }
3396    ],
3397    "stateMutability": "view"
3398  },
3399  {
3400    "type": "function",
3401    "name": "disablePermissionedProverMode",
3402    "inputs": [],
3403    "outputs": [],
3404    "stateMutability": "nonpayable"
3405  },
3406  {
3407    "type": "function",
3408    "name": "finalizedState",
3409    "inputs": [],
3410    "outputs": [
3411      {
3412        "name": "viewNum",
3413        "type": "uint64",
3414        "internalType": "uint64"
3415      },
3416      {
3417        "name": "blockHeight",
3418        "type": "uint64",
3419        "internalType": "uint64"
3420      },
3421      {
3422        "name": "blockCommRoot",
3423        "type": "uint256",
3424        "internalType": "BN254.ScalarField"
3425      }
3426    ],
3427    "stateMutability": "view"
3428  },
3429  {
3430    "type": "function",
3431    "name": "genesisStakeTableState",
3432    "inputs": [],
3433    "outputs": [
3434      {
3435        "name": "threshold",
3436        "type": "uint256",
3437        "internalType": "uint256"
3438      },
3439      {
3440        "name": "blsKeyComm",
3441        "type": "uint256",
3442        "internalType": "BN254.ScalarField"
3443      },
3444      {
3445        "name": "schnorrKeyComm",
3446        "type": "uint256",
3447        "internalType": "BN254.ScalarField"
3448      },
3449      {
3450        "name": "amountComm",
3451        "type": "uint256",
3452        "internalType": "BN254.ScalarField"
3453      }
3454    ],
3455    "stateMutability": "view"
3456  },
3457  {
3458    "type": "function",
3459    "name": "genesisState",
3460    "inputs": [],
3461    "outputs": [
3462      {
3463        "name": "viewNum",
3464        "type": "uint64",
3465        "internalType": "uint64"
3466      },
3467      {
3468        "name": "blockHeight",
3469        "type": "uint64",
3470        "internalType": "uint64"
3471      },
3472      {
3473        "name": "blockCommRoot",
3474        "type": "uint256",
3475        "internalType": "BN254.ScalarField"
3476      }
3477    ],
3478    "stateMutability": "view"
3479  },
3480  {
3481    "type": "function",
3482    "name": "getHotShotCommitment",
3483    "inputs": [
3484      {
3485        "name": "hotShotBlockHeight",
3486        "type": "uint256",
3487        "internalType": "uint256"
3488      }
3489    ],
3490    "outputs": [
3491      {
3492        "name": "hotShotBlockCommRoot",
3493        "type": "uint256",
3494        "internalType": "BN254.ScalarField"
3495      },
3496      {
3497        "name": "hotshotBlockHeight",
3498        "type": "uint64",
3499        "internalType": "uint64"
3500      }
3501    ],
3502    "stateMutability": "view"
3503  },
3504  {
3505    "type": "function",
3506    "name": "getStateHistoryCount",
3507    "inputs": [],
3508    "outputs": [
3509      {
3510        "name": "",
3511        "type": "uint256",
3512        "internalType": "uint256"
3513      }
3514    ],
3515    "stateMutability": "view"
3516  },
3517  {
3518    "type": "function",
3519    "name": "getVersion",
3520    "inputs": [],
3521    "outputs": [
3522      {
3523        "name": "majorVersion",
3524        "type": "uint8",
3525        "internalType": "uint8"
3526      },
3527      {
3528        "name": "minorVersion",
3529        "type": "uint8",
3530        "internalType": "uint8"
3531      },
3532      {
3533        "name": "patchVersion",
3534        "type": "uint8",
3535        "internalType": "uint8"
3536      }
3537    ],
3538    "stateMutability": "pure"
3539  },
3540  {
3541    "type": "function",
3542    "name": "initialize",
3543    "inputs": [
3544      {
3545        "name": "_genesis",
3546        "type": "tuple",
3547        "internalType": "struct LightClient.LightClientState",
3548        "components": [
3549          {
3550            "name": "viewNum",
3551            "type": "uint64",
3552            "internalType": "uint64"
3553          },
3554          {
3555            "name": "blockHeight",
3556            "type": "uint64",
3557            "internalType": "uint64"
3558          },
3559          {
3560            "name": "blockCommRoot",
3561            "type": "uint256",
3562            "internalType": "BN254.ScalarField"
3563          }
3564        ]
3565      },
3566      {
3567        "name": "_genesisStakeTableState",
3568        "type": "tuple",
3569        "internalType": "struct LightClient.StakeTableState",
3570        "components": [
3571          {
3572            "name": "threshold",
3573            "type": "uint256",
3574            "internalType": "uint256"
3575          },
3576          {
3577            "name": "blsKeyComm",
3578            "type": "uint256",
3579            "internalType": "BN254.ScalarField"
3580          },
3581          {
3582            "name": "schnorrKeyComm",
3583            "type": "uint256",
3584            "internalType": "BN254.ScalarField"
3585          },
3586          {
3587            "name": "amountComm",
3588            "type": "uint256",
3589            "internalType": "BN254.ScalarField"
3590          }
3591        ]
3592      },
3593      {
3594        "name": "_stateHistoryRetentionPeriod",
3595        "type": "uint32",
3596        "internalType": "uint32"
3597      },
3598      {
3599        "name": "owner",
3600        "type": "address",
3601        "internalType": "address"
3602      }
3603    ],
3604    "outputs": [],
3605    "stateMutability": "nonpayable"
3606  },
3607  {
3608    "type": "function",
3609    "name": "isPermissionedProverEnabled",
3610    "inputs": [],
3611    "outputs": [
3612      {
3613        "name": "",
3614        "type": "bool",
3615        "internalType": "bool"
3616      }
3617    ],
3618    "stateMutability": "view"
3619  },
3620  {
3621    "type": "function",
3622    "name": "lagOverEscapeHatchThreshold",
3623    "inputs": [
3624      {
3625        "name": "blockNumber",
3626        "type": "uint256",
3627        "internalType": "uint256"
3628      },
3629      {
3630        "name": "blockThreshold",
3631        "type": "uint256",
3632        "internalType": "uint256"
3633      }
3634    ],
3635    "outputs": [
3636      {
3637        "name": "",
3638        "type": "bool",
3639        "internalType": "bool"
3640      }
3641    ],
3642    "stateMutability": "view"
3643  },
3644  {
3645    "type": "function",
3646    "name": "newFinalizedState",
3647    "inputs": [
3648      {
3649        "name": "newState",
3650        "type": "tuple",
3651        "internalType": "struct LightClient.LightClientState",
3652        "components": [
3653          {
3654            "name": "viewNum",
3655            "type": "uint64",
3656            "internalType": "uint64"
3657          },
3658          {
3659            "name": "blockHeight",
3660            "type": "uint64",
3661            "internalType": "uint64"
3662          },
3663          {
3664            "name": "blockCommRoot",
3665            "type": "uint256",
3666            "internalType": "BN254.ScalarField"
3667          }
3668        ]
3669      },
3670      {
3671        "name": "proof",
3672        "type": "tuple",
3673        "internalType": "struct IPlonkVerifier.PlonkProof",
3674        "components": [
3675          {
3676            "name": "wire0",
3677            "type": "tuple",
3678            "internalType": "struct BN254.G1Point",
3679            "components": [
3680              {
3681                "name": "x",
3682                "type": "uint256",
3683                "internalType": "BN254.BaseField"
3684              },
3685              {
3686                "name": "y",
3687                "type": "uint256",
3688                "internalType": "BN254.BaseField"
3689              }
3690            ]
3691          },
3692          {
3693            "name": "wire1",
3694            "type": "tuple",
3695            "internalType": "struct BN254.G1Point",
3696            "components": [
3697              {
3698                "name": "x",
3699                "type": "uint256",
3700                "internalType": "BN254.BaseField"
3701              },
3702              {
3703                "name": "y",
3704                "type": "uint256",
3705                "internalType": "BN254.BaseField"
3706              }
3707            ]
3708          },
3709          {
3710            "name": "wire2",
3711            "type": "tuple",
3712            "internalType": "struct BN254.G1Point",
3713            "components": [
3714              {
3715                "name": "x",
3716                "type": "uint256",
3717                "internalType": "BN254.BaseField"
3718              },
3719              {
3720                "name": "y",
3721                "type": "uint256",
3722                "internalType": "BN254.BaseField"
3723              }
3724            ]
3725          },
3726          {
3727            "name": "wire3",
3728            "type": "tuple",
3729            "internalType": "struct BN254.G1Point",
3730            "components": [
3731              {
3732                "name": "x",
3733                "type": "uint256",
3734                "internalType": "BN254.BaseField"
3735              },
3736              {
3737                "name": "y",
3738                "type": "uint256",
3739                "internalType": "BN254.BaseField"
3740              }
3741            ]
3742          },
3743          {
3744            "name": "wire4",
3745            "type": "tuple",
3746            "internalType": "struct BN254.G1Point",
3747            "components": [
3748              {
3749                "name": "x",
3750                "type": "uint256",
3751                "internalType": "BN254.BaseField"
3752              },
3753              {
3754                "name": "y",
3755                "type": "uint256",
3756                "internalType": "BN254.BaseField"
3757              }
3758            ]
3759          },
3760          {
3761            "name": "prodPerm",
3762            "type": "tuple",
3763            "internalType": "struct BN254.G1Point",
3764            "components": [
3765              {
3766                "name": "x",
3767                "type": "uint256",
3768                "internalType": "BN254.BaseField"
3769              },
3770              {
3771                "name": "y",
3772                "type": "uint256",
3773                "internalType": "BN254.BaseField"
3774              }
3775            ]
3776          },
3777          {
3778            "name": "split0",
3779            "type": "tuple",
3780            "internalType": "struct BN254.G1Point",
3781            "components": [
3782              {
3783                "name": "x",
3784                "type": "uint256",
3785                "internalType": "BN254.BaseField"
3786              },
3787              {
3788                "name": "y",
3789                "type": "uint256",
3790                "internalType": "BN254.BaseField"
3791              }
3792            ]
3793          },
3794          {
3795            "name": "split1",
3796            "type": "tuple",
3797            "internalType": "struct BN254.G1Point",
3798            "components": [
3799              {
3800                "name": "x",
3801                "type": "uint256",
3802                "internalType": "BN254.BaseField"
3803              },
3804              {
3805                "name": "y",
3806                "type": "uint256",
3807                "internalType": "BN254.BaseField"
3808              }
3809            ]
3810          },
3811          {
3812            "name": "split2",
3813            "type": "tuple",
3814            "internalType": "struct BN254.G1Point",
3815            "components": [
3816              {
3817                "name": "x",
3818                "type": "uint256",
3819                "internalType": "BN254.BaseField"
3820              },
3821              {
3822                "name": "y",
3823                "type": "uint256",
3824                "internalType": "BN254.BaseField"
3825              }
3826            ]
3827          },
3828          {
3829            "name": "split3",
3830            "type": "tuple",
3831            "internalType": "struct BN254.G1Point",
3832            "components": [
3833              {
3834                "name": "x",
3835                "type": "uint256",
3836                "internalType": "BN254.BaseField"
3837              },
3838              {
3839                "name": "y",
3840                "type": "uint256",
3841                "internalType": "BN254.BaseField"
3842              }
3843            ]
3844          },
3845          {
3846            "name": "split4",
3847            "type": "tuple",
3848            "internalType": "struct BN254.G1Point",
3849            "components": [
3850              {
3851                "name": "x",
3852                "type": "uint256",
3853                "internalType": "BN254.BaseField"
3854              },
3855              {
3856                "name": "y",
3857                "type": "uint256",
3858                "internalType": "BN254.BaseField"
3859              }
3860            ]
3861          },
3862          {
3863            "name": "zeta",
3864            "type": "tuple",
3865            "internalType": "struct BN254.G1Point",
3866            "components": [
3867              {
3868                "name": "x",
3869                "type": "uint256",
3870                "internalType": "BN254.BaseField"
3871              },
3872              {
3873                "name": "y",
3874                "type": "uint256",
3875                "internalType": "BN254.BaseField"
3876              }
3877            ]
3878          },
3879          {
3880            "name": "zetaOmega",
3881            "type": "tuple",
3882            "internalType": "struct BN254.G1Point",
3883            "components": [
3884              {
3885                "name": "x",
3886                "type": "uint256",
3887                "internalType": "BN254.BaseField"
3888              },
3889              {
3890                "name": "y",
3891                "type": "uint256",
3892                "internalType": "BN254.BaseField"
3893              }
3894            ]
3895          },
3896          {
3897            "name": "wireEval0",
3898            "type": "uint256",
3899            "internalType": "BN254.ScalarField"
3900          },
3901          {
3902            "name": "wireEval1",
3903            "type": "uint256",
3904            "internalType": "BN254.ScalarField"
3905          },
3906          {
3907            "name": "wireEval2",
3908            "type": "uint256",
3909            "internalType": "BN254.ScalarField"
3910          },
3911          {
3912            "name": "wireEval3",
3913            "type": "uint256",
3914            "internalType": "BN254.ScalarField"
3915          },
3916          {
3917            "name": "wireEval4",
3918            "type": "uint256",
3919            "internalType": "BN254.ScalarField"
3920          },
3921          {
3922            "name": "sigmaEval0",
3923            "type": "uint256",
3924            "internalType": "BN254.ScalarField"
3925          },
3926          {
3927            "name": "sigmaEval1",
3928            "type": "uint256",
3929            "internalType": "BN254.ScalarField"
3930          },
3931          {
3932            "name": "sigmaEval2",
3933            "type": "uint256",
3934            "internalType": "BN254.ScalarField"
3935          },
3936          {
3937            "name": "sigmaEval3",
3938            "type": "uint256",
3939            "internalType": "BN254.ScalarField"
3940          },
3941          {
3942            "name": "prodPermZetaOmegaEval",
3943            "type": "uint256",
3944            "internalType": "BN254.ScalarField"
3945          }
3946        ]
3947      }
3948    ],
3949    "outputs": [],
3950    "stateMutability": "nonpayable"
3951  },
3952  {
3953    "type": "function",
3954    "name": "owner",
3955    "inputs": [],
3956    "outputs": [
3957      {
3958        "name": "",
3959        "type": "address",
3960        "internalType": "address"
3961      }
3962    ],
3963    "stateMutability": "view"
3964  },
3965  {
3966    "type": "function",
3967    "name": "permissionedProver",
3968    "inputs": [],
3969    "outputs": [
3970      {
3971        "name": "",
3972        "type": "address",
3973        "internalType": "address"
3974      }
3975    ],
3976    "stateMutability": "view"
3977  },
3978  {
3979    "type": "function",
3980    "name": "proxiableUUID",
3981    "inputs": [],
3982    "outputs": [
3983      {
3984        "name": "",
3985        "type": "bytes32",
3986        "internalType": "bytes32"
3987      }
3988    ],
3989    "stateMutability": "view"
3990  },
3991  {
3992    "type": "function",
3993    "name": "renounceOwnership",
3994    "inputs": [],
3995    "outputs": [],
3996    "stateMutability": "nonpayable"
3997  },
3998  {
3999    "type": "function",
4000    "name": "setPermissionedProver",
4001    "inputs": [
4002      {
4003        "name": "prover",
4004        "type": "address",
4005        "internalType": "address"
4006      }
4007    ],
4008    "outputs": [],
4009    "stateMutability": "nonpayable"
4010  },
4011  {
4012    "type": "function",
4013    "name": "setstateHistoryRetentionPeriod",
4014    "inputs": [
4015      {
4016        "name": "historySeconds",
4017        "type": "uint32",
4018        "internalType": "uint32"
4019      }
4020    ],
4021    "outputs": [],
4022    "stateMutability": "nonpayable"
4023  },
4024  {
4025    "type": "function",
4026    "name": "stateHistoryCommitments",
4027    "inputs": [
4028      {
4029        "name": "",
4030        "type": "uint256",
4031        "internalType": "uint256"
4032      }
4033    ],
4034    "outputs": [
4035      {
4036        "name": "l1BlockHeight",
4037        "type": "uint64",
4038        "internalType": "uint64"
4039      },
4040      {
4041        "name": "l1BlockTimestamp",
4042        "type": "uint64",
4043        "internalType": "uint64"
4044      },
4045      {
4046        "name": "hotShotBlockHeight",
4047        "type": "uint64",
4048        "internalType": "uint64"
4049      },
4050      {
4051        "name": "hotShotBlockCommRoot",
4052        "type": "uint256",
4053        "internalType": "BN254.ScalarField"
4054      }
4055    ],
4056    "stateMutability": "view"
4057  },
4058  {
4059    "type": "function",
4060    "name": "stateHistoryFirstIndex",
4061    "inputs": [],
4062    "outputs": [
4063      {
4064        "name": "",
4065        "type": "uint64",
4066        "internalType": "uint64"
4067      }
4068    ],
4069    "stateMutability": "view"
4070  },
4071  {
4072    "type": "function",
4073    "name": "stateHistoryRetentionPeriod",
4074    "inputs": [],
4075    "outputs": [
4076      {
4077        "name": "",
4078        "type": "uint32",
4079        "internalType": "uint32"
4080      }
4081    ],
4082    "stateMutability": "view"
4083  },
4084  {
4085    "type": "function",
4086    "name": "transferOwnership",
4087    "inputs": [
4088      {
4089        "name": "newOwner",
4090        "type": "address",
4091        "internalType": "address"
4092      }
4093    ],
4094    "outputs": [],
4095    "stateMutability": "nonpayable"
4096  },
4097  {
4098    "type": "function",
4099    "name": "upgradeToAndCall",
4100    "inputs": [
4101      {
4102        "name": "newImplementation",
4103        "type": "address",
4104        "internalType": "address"
4105      },
4106      {
4107        "name": "data",
4108        "type": "bytes",
4109        "internalType": "bytes"
4110      }
4111    ],
4112    "outputs": [],
4113    "stateMutability": "payable"
4114  },
4115  {
4116    "type": "event",
4117    "name": "Initialized",
4118    "inputs": [
4119      {
4120        "name": "version",
4121        "type": "uint64",
4122        "indexed": false,
4123        "internalType": "uint64"
4124      }
4125    ],
4126    "anonymous": false
4127  },
4128  {
4129    "type": "event",
4130    "name": "NewState",
4131    "inputs": [
4132      {
4133        "name": "viewNum",
4134        "type": "uint64",
4135        "indexed": true,
4136        "internalType": "uint64"
4137      },
4138      {
4139        "name": "blockHeight",
4140        "type": "uint64",
4141        "indexed": true,
4142        "internalType": "uint64"
4143      },
4144      {
4145        "name": "blockCommRoot",
4146        "type": "uint256",
4147        "indexed": false,
4148        "internalType": "BN254.ScalarField"
4149      }
4150    ],
4151    "anonymous": false
4152  },
4153  {
4154    "type": "event",
4155    "name": "OwnershipTransferred",
4156    "inputs": [
4157      {
4158        "name": "previousOwner",
4159        "type": "address",
4160        "indexed": true,
4161        "internalType": "address"
4162      },
4163      {
4164        "name": "newOwner",
4165        "type": "address",
4166        "indexed": true,
4167        "internalType": "address"
4168      }
4169    ],
4170    "anonymous": false
4171  },
4172  {
4173    "type": "event",
4174    "name": "PermissionedProverNotRequired",
4175    "inputs": [],
4176    "anonymous": false
4177  },
4178  {
4179    "type": "event",
4180    "name": "PermissionedProverRequired",
4181    "inputs": [
4182      {
4183        "name": "permissionedProver",
4184        "type": "address",
4185        "indexed": false,
4186        "internalType": "address"
4187      }
4188    ],
4189    "anonymous": false
4190  },
4191  {
4192    "type": "event",
4193    "name": "Upgrade",
4194    "inputs": [
4195      {
4196        "name": "implementation",
4197        "type": "address",
4198        "indexed": false,
4199        "internalType": "address"
4200      }
4201    ],
4202    "anonymous": false
4203  },
4204  {
4205    "type": "event",
4206    "name": "Upgraded",
4207    "inputs": [
4208      {
4209        "name": "implementation",
4210        "type": "address",
4211        "indexed": true,
4212        "internalType": "address"
4213      }
4214    ],
4215    "anonymous": false
4216  },
4217  {
4218    "type": "error",
4219    "name": "AddressEmptyCode",
4220    "inputs": [
4221      {
4222        "name": "target",
4223        "type": "address",
4224        "internalType": "address"
4225      }
4226    ]
4227  },
4228  {
4229    "type": "error",
4230    "name": "ERC1967InvalidImplementation",
4231    "inputs": [
4232      {
4233        "name": "implementation",
4234        "type": "address",
4235        "internalType": "address"
4236      }
4237    ]
4238  },
4239  {
4240    "type": "error",
4241    "name": "ERC1967NonPayable",
4242    "inputs": []
4243  },
4244  {
4245    "type": "error",
4246    "name": "FailedInnerCall",
4247    "inputs": []
4248  },
4249  {
4250    "type": "error",
4251    "name": "InsufficientSnapshotHistory",
4252    "inputs": []
4253  },
4254  {
4255    "type": "error",
4256    "name": "InvalidAddress",
4257    "inputs": []
4258  },
4259  {
4260    "type": "error",
4261    "name": "InvalidArgs",
4262    "inputs": []
4263  },
4264  {
4265    "type": "error",
4266    "name": "InvalidHotShotBlockForCommitmentCheck",
4267    "inputs": []
4268  },
4269  {
4270    "type": "error",
4271    "name": "InvalidInitialization",
4272    "inputs": []
4273  },
4274  {
4275    "type": "error",
4276    "name": "InvalidMaxStateHistory",
4277    "inputs": []
4278  },
4279  {
4280    "type": "error",
4281    "name": "InvalidProof",
4282    "inputs": []
4283  },
4284  {
4285    "type": "error",
4286    "name": "InvalidScalar",
4287    "inputs": []
4288  },
4289  {
4290    "type": "error",
4291    "name": "NoChangeRequired",
4292    "inputs": []
4293  },
4294  {
4295    "type": "error",
4296    "name": "NotInitializing",
4297    "inputs": []
4298  },
4299  {
4300    "type": "error",
4301    "name": "OutdatedState",
4302    "inputs": []
4303  },
4304  {
4305    "type": "error",
4306    "name": "OwnableInvalidOwner",
4307    "inputs": [
4308      {
4309        "name": "owner",
4310        "type": "address",
4311        "internalType": "address"
4312      }
4313    ]
4314  },
4315  {
4316    "type": "error",
4317    "name": "OwnableUnauthorizedAccount",
4318    "inputs": [
4319      {
4320        "name": "account",
4321        "type": "address",
4322        "internalType": "address"
4323      }
4324    ]
4325  },
4326  {
4327    "type": "error",
4328    "name": "OwnershipCannotBeRenounced",
4329    "inputs": []
4330  },
4331  {
4332    "type": "error",
4333    "name": "ProverNotPermissioned",
4334    "inputs": []
4335  },
4336  {
4337    "type": "error",
4338    "name": "UUPSUnauthorizedCallContext",
4339    "inputs": []
4340  },
4341  {
4342    "type": "error",
4343    "name": "UUPSUnsupportedProxiableUUID",
4344    "inputs": [
4345      {
4346        "name": "slot",
4347        "type": "bytes32",
4348        "internalType": "bytes32"
4349      }
4350    ]
4351  },
4352  {
4353    "type": "error",
4354    "name": "WrongStakeTableUsed",
4355    "inputs": []
4356  }
4357]
4358```*/
4359#[allow(
4360    non_camel_case_types,
4361    non_snake_case,
4362    clippy::pub_underscore_fields,
4363    clippy::style,
4364    clippy::empty_structs_with_brackets
4365)]
4366pub mod LightClientArbitrum {
4367    use super::*;
4368    use alloy::sol_types as alloy_sol_types;
4369    /// The creation / init bytecode of the contract.
4370    ///
4371    /// ```text
4372    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612bad6100f95f395f81816117640152818161178d015261190a0152612bad5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d14610520578063e03033011461054f578063f2fde38b1461056e578063f9e50d191461058d575f5ffd5b80639fdb54a714610456578063ad3cb1cc146104ab578063c23b9e9e146104e8575f5ffd5b8063715018a614610361578063826e41fc146103755780638584d23f146103a05780638da5cb5b146103dc57806396c1ca61146104185780639baa3cc914610437575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102e55780634f1ef2861461032657806352d1902d1461033957806369cc6a041461034d575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611fbd565b6105a1565b005b348015610191575f5ffd5b506101a56101a0366004611fd6565b610654565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b5061022261069d565b6040516101da9190611fed565b34801561023a575f5ffd5b50610184610249366004612322565b6106b2565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b506102d761080d565b6040519081526020016101da565b3480156102f0575f5ffd5b505f546001546002546003546103069392919084565b6040805194855260208501939093529183015260608201526080016101da565b6101846103343660046124d2565b61086f565b348015610344575f5ffd5b506102d761088e565b348015610358575f5ffd5b506101846108a9565b34801561036c575f5ffd5b50610184610917565b348015610380575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103ab575f5ffd5b506103bf6103ba366004611fd6565b610938565b604080519283526001600160401b039091166020830152016101da565b3480156103e7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b348015610423575f5ffd5b50610184610432366004612588565b610a63565b348015610442575f5ffd5b506101846104513660046125a1565b610aec565b348015610461575f5ffd5b50600654600754610485916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b6575f5ffd5b506104db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da919061264a565b3480156104f3575f5ffd5b5060085461050b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b34801561052b575f5ffd5b50600454600554610485916001600160401b0380821692600160401b909204169083565b34801561055a575f5ffd5b5061039061056936600461267f565b610c0e565b348015610579575f5ffd5b50610184610588366004611fbd565b610d6f565b348015610598575f5ffd5b506009546102d7565b6105a9610db1565b6001600160a01b0381166105d05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105ff5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610663575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6106a5611d1f565b6106ad610e0c565b905090565b6008546001600160a01b0316151580156106d757506008546001600160a01b03163314155b156106f5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061072e575060065460208301516001600160401b03600160401b9092048216911611155b1561074c5760405163051c46ef60e01b815260040160405180910390fd5b610759826040015161143b565b610763828261147c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107b16107aa61080d565b4284611570565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161080191815260200190565b60405180910390a35050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad919061269f565b610877611759565b610880826117fd565b61088a828261183e565b5050565b5f6108976118ff565b505f516020612b815f395f51905f5290565b6108b1610db1565b6008546001600160a01b0316156108fc57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61091f610db1565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f9182919061094c6001836126ca565b8154811061095c5761095c6126dd565b5f918252602090912060029091020154600160801b90046001600160401b0316841061099b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a5c5784600982815481106109cb576109cb6126dd565b5f918252602090912060029091020154600160801b90046001600160401b03161115610a545760098181548110610a0457610a046126dd565b905f5260205f2090600202016001015460098281548110610a2757610a276126dd565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b6001016109af565b5050915091565b610a6b610db1565b610e108163ffffffff161080610a8a57506301e133808163ffffffff16115b80610aa8575060085463ffffffff600160a01b909104811690821611155b15610ac6576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b305750825b90505f826001600160401b03166001148015610b4b5750303b155b905081158015610b59575080155b15610b775760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ba157845460ff60401b1916600160401b1785555b610baa86611948565b610bb2611959565b610bbd898989611961565b8315610c0357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f90610c1b61080d565b841180610c26575080155b80610c705750600854600980549091600160c01b90046001600160401b0316908110610c5457610c546126dd565b5f9182526020909120600290910201546001600160401b031684105b15610c8e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c9c6001856126ca565b90505b81610d3857600854600160c01b90046001600160401b03168110610d38578660098281548110610cd157610cd16126dd565b5f9182526020909120600290910201546001600160401b031611610d26576001915060098181548110610d0657610d066126dd565b5f9182526020909120600290910201546001600160401b03169250610d38565b80610d30816126f1565b915050610c9f565b81610d565760405163b0b4387760e01b815260040160405180910390fd5b85610d6184896126ca565b119450505050505b92915050565b610d77610db1565b6001600160a01b038116610da557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610dae81611a8d565b50565b33610de37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109155760405163118cdaa760e01b8152336004820152602401610d9c565b610e14611d1f565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061088a5760405163016c173360e21b815260040160405180910390fd5b5f61148561069d565b905061148f611f84565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061150e908590859088906004016128e2565b602060405180830381865af4158015611529573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154d9190612b02565b61156a576040516309bde33960e01b815260040160405180910390fd5b50505050565b600954158015906115e5575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115b0576115b06126dd565b5f9182526020909120600290910201546115da90600160401b90046001600160401b031684612b21565b6001600160401b0316115b1561167857600854600980549091600160c01b90046001600160401b0316908110611612576116126126dd565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861165283612b40565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117df57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117d35f516020612b815f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109155760405163703e46dd60e11b815260040160405180910390fd5b611805610db1565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610649565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611898575060408051601f3d908101601f191682019092526118959181019061269f565b60015b6118c057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d9c565b5f516020612b815f395f51905f5281146118f057604051632a87526960e21b815260048101829052602401610d9c565b6118fa8383611afd565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109155760405163703e46dd60e11b815260040160405180910390fd5b611950611b52565b610dae81611b9b565b610915611b52565b82516001600160401b0316151580611985575060208301516001600160401b031615155b8061199257506020820151155b8061199f57506040820151155b806119ac57506060820151155b806119b657508151155b806119c85750610e108163ffffffff16105b806119dc57506301e133808163ffffffff16115b156119fa576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611b0682611ba3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b4a576118fa8282611c06565b61088a611c78565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661091557604051631afcd79f60e31b815260040160405180910390fd5b610d77611b52565b806001600160a01b03163b5f03611bd857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d9c565b5f516020612b815f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c229190612b6a565b5f60405180830381855af49150503d805f8114611c5a576040519150601f19603f3d011682016040523d82523d5f602084013e611c5f565b606091505b5091509150611c6f858383611c97565b95945050505050565b34156109155760405163b398979f60e01b815260040160405180910390fd5b606082611cac57611ca782611cf6565b611cef565b8151158015611cc357506001600160a01b0384163b155b15611cec57604051639996b31560e01b81526001600160a01b0385166004820152602401610d9c565b50805b9392505050565b805115611d065780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d5260405180604001604052805f81526020015f81525090565b8152602001611d7260405180604001604052805f81526020015f81525090565b8152602001611d9260405180604001604052805f81526020015f81525090565b8152602001611db260405180604001604052805f81526020015f81525090565b8152602001611dd260405180604001604052805f81526020015f81525090565b8152602001611df260405180604001604052805f81526020015f81525090565b8152602001611e1260405180604001604052805f81526020015f81525090565b8152602001611e3260405180604001604052805f81526020015f81525090565b8152602001611e5260405180604001604052805f81526020015f81525090565b8152602001611e7260405180604001604052805f81526020015f81525090565b8152602001611e9260405180604001604052805f81526020015f81525090565b8152602001611eb260405180604001604052805f81526020015f81525090565b8152602001611ed260405180604001604052805f81526020015f81525090565b8152602001611ef260405180604001604052805f81526020015f81525090565b8152602001611f1260405180604001604052805f81526020015f81525090565b8152602001611f3260405180604001604052805f81526020015f81525090565b8152602001611f5260405180604001604052805f81526020015f81525090565b8152602001611f7260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611fb8575f5ffd5b919050565b5f60208284031215611fcd575f5ffd5b611cef82611fa2565b5f60208284031215611fe6575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161201f604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612225576122256121ee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612253576122536121ee565b604052919050565b80356001600160401b0381168114611fb8575f5ffd5b5f60608284031215612281575f5ffd5b604051606081016001600160401b03811182821017156122a3576122a36121ee565b6040529050806122b28361225b565b81526122c06020840161225b565b6020820152604092830135920191909152919050565b5f604082840312156122e6575f5ffd5b604080519081016001600160401b0381118282101715612308576123086121ee565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612335575f5ffd5b61233f8585612271565b9250610480605f1982011215612353575f5ffd5b5061235c612202565b61236985606086016122d6565b81526123788560a086016122d6565b602082015261238a8560e086016122d6565b604082015261239d8561012086016122d6565b60608201526123b08561016086016122d6565b60808201526123c3856101a086016122d6565b60a08201526123d6856101e086016122d6565b60c08201526123e98561022086016122d6565b60e08201526123fc8561026086016122d6565b610100820152612410856102a086016122d6565b610120820152612424856102e086016122d6565b6101408201526124388561032086016122d6565b61016082015261244c8561036086016122d6565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156124e3575f5ffd5b6124ec83611fa2565b915060208301356001600160401b03811115612506575f5ffd5b8301601f81018513612516575f5ffd5b80356001600160401b0381111561252f5761252f6121ee565b612542601f8201601f191660200161222b565b818152866020838501011115612556575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611fb8575f5ffd5b5f60208284031215612598575f5ffd5b611cef82612575565b5f5f5f5f8486036101208112156125b6575f5ffd5b6125c08787612271565b94506080605f19820112156125d3575f5ffd5b50604051608081016001600160401b03811182821017156125f6576125f66121ee565b604090815260608781013583526080880135602084015260a08801359183019190915260c087013590820152925061263060e08601612575565b915061263f6101008601611fa2565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612690575f5ffd5b50508035926020909101359150565b5f602082840312156126af575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d6957610d696126b6565b634e487b7160e01b5f52603260045260245ffd5b5f816126ff576126ff6126b6565b505f190190565b805f5b600781101561156a578151845260209384019390910190600101612709565b61273d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612914604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612aec610500830185612706565b612afa6105e0830184612728565b949350505050565b5f60208284031215612b12575f5ffd5b81518015158114611cef575f5ffd5b6001600160401b038281168282160390811115610d6957610d696126b6565b5f6001600160401b0382166001600160401b038103612b6157612b616126b6565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4373    /// ```
4374    #[rustfmt::skip]
4375    #[allow(clippy::all)]
4376    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4377        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa+\xADa\0\xF9_9_\x81\x81a\x17d\x01R\x81\x81a\x17\x8D\x01Ra\x19\n\x01Ra+\xAD_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05 W\x80c\xE003\x01\x14a\x05OW\x80c\xF2\xFD\xE3\x8B\x14a\x05nW\x80c\xF9\xE5\r\x19\x14a\x05\x8DW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04VW\x80c\xAD<\xB1\xCC\x14a\x04\xABW\x80c\xC2;\x9E\x9E\x14a\x04\xE8W__\xFD[\x80cqP\x18\xA6\x14a\x03aW\x80c\x82nA\xFC\x14a\x03uW\x80c\x85\x84\xD2?\x14a\x03\xA0W\x80c\x8D\xA5\xCB[\x14a\x03\xDCW\x80c\x96\xC1\xCAa\x14a\x04\x18W\x80c\x9B\xAA<\xC9\x14a\x047W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xE5W\x80cO\x1E\xF2\x86\x14a\x03&W\x80cR\xD1\x90-\x14a\x039W\x80ci\xCCj\x04\x14a\x03MW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F\xBDV[a\x05\xA1V[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\xD6V[a\x06TV[`@Qa\x01\xDA\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\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x9DV[`@Qa\x01\xDA\x91\x90a\x1F\xEDV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a#\"V[a\x06\xB2V[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\xD7a\x08\rV[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xF0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x06\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x0346`\x04a$\xD2V[a\x08oV[4\x80\x15a\x03DW__\xFD[Pa\x02\xD7a\x08\x8EV[4\x80\x15a\x03XW__\xFD[Pa\x01\x84a\x08\xA9V[4\x80\x15a\x03lW__\xFD[Pa\x01\x84a\t\x17V[4\x80\x15a\x03\x80W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xABW__\xFD[Pa\x03\xBFa\x03\xBA6`\x04a\x1F\xD6V[a\t8V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE7W__\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\x02\xABV[4\x80\x15a\x04#W__\xFD[Pa\x01\x84a\x0426`\x04a%\x88V[a\ncV[4\x80\x15a\x04BW__\xFD[Pa\x01\x84a\x04Q6`\x04a%\xA1V[a\n\xECV[4\x80\x15a\x04aW__\xFD[P`\x06T`\x07Ta\x04\x85\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\x01\xDAV[4\x80\x15a\x04\xB6W__\xFD[Pa\x04\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a&JV[4\x80\x15a\x04\xF3W__\xFD[P`\x08Ta\x05\x0B\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05+W__\xFD[P`\x04T`\x05Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05ZW__\xFD[Pa\x03\x90a\x05i6`\x04a&\x7FV[a\x0C\x0EV[4\x80\x15a\x05yW__\xFD[Pa\x01\x84a\x05\x886`\x04a\x1F\xBDV[a\roV[4\x80\x15a\x05\x98W__\xFD[P`\tTa\x02\xD7V[a\x05\xA9a\r\xB1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xD0W`@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\x05\xFFW`@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\x06cW_\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\x06\xA5a\x1D\x1FV[a\x06\xADa\x0E\x0CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xF5W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07.WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07LW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07Y\x82`@\x01Qa\x14;V[a\x07c\x82\x82a\x14|V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xB1a\x07\xAAa\x08\rV[B\x84a\x15pV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x08\x01\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08KW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90a&\x9FV[a\x08wa\x17YV[a\x08\x80\x82a\x17\xFDV[a\x08\x8A\x82\x82a\x18>V[PPV[_a\x08\x97a\x18\xFFV[P_Q` a+\x81_9_Q\x90_R\x90V[a\x08\xB1a\r\xB1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\xFCW`\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\t\x1Fa\r\xB1V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\tL`\x01\x83a&\xCAV[\x81T\x81\x10a\t\\Wa\t\\a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\x9BW`@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\n\\W\x84`\t\x82\x81T\x81\x10a\t\xCBWa\t\xCBa&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\nTW`\t\x81\x81T\x81\x10a\n\x04Wa\n\x04a&\xDDV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n'Wa\n'a&\xDDV[\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\t\xAFV[PP\x91P\x91V[a\nka\r\xB1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n\x8AWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n\xA8WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n\xC6W`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0B0WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0BKWP0;\x15[\x90P\x81\x15\x80\x15a\x0BYWP\x80\x15[\x15a\x0BwW`@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\x0B\xA1W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B\xAA\x86a\x19HV[a\x0B\xB2a\x19YV[a\x0B\xBD\x89\x89\x89a\x19aV[\x83\x15a\x0C\x03W\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[`\tT_\x90a\x0C\x1Ba\x08\rV[\x84\x11\x80a\x0C&WP\x80\x15[\x80a\x0CpWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0CTWa\x0CTa&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x8EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x9C`\x01\x85a&\xCAV[\x90P[\x81a\r8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\r8W\x86`\t\x82\x81T\x81\x10a\x0C\xD1Wa\x0C\xD1a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\r&W`\x01\x91P`\t\x81\x81T\x81\x10a\r\x06Wa\r\x06a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\r8V[\x80a\r0\x81a&\xF1V[\x91PPa\x0C\x9FV[\x81a\rVW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\ra\x84\x89a&\xCAV[\x11\x94PPPPP[\x92\x91PPV[a\rwa\r\xB1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\xAE\x81a\x1A\x8DV[PV[3a\r\xE3\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\t\x15W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x9CV[a\x0E\x14a\x1D\x1FV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` 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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08\x8AW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x85a\x06\x9DV[\x90Pa\x14\x8Fa\x1F\x84V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15\x0E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(\xE2V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15)W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15M\x91\x90a+\x02V[a\x15jW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15\xE5WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xB0Wa\x15\xB0a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xDA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a+!V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16xW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16\x12Wa\x16\x12a&\xDDV[_\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\x16R\x83a+@V[\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[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\x17\xDFWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x17\xD3_Q` a+\x81_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\x05a\r\xB1V[`@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\x06IV[\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\x18\x98WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\x95\x91\x81\x01\x90a&\x9FV[`\x01[a\x18\xC0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x9CV[_Q` a+\x81_9_Q\x90_R\x81\x14a\x18\xF0W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x9CV[a\x18\xFA\x83\x83a\x1A\xFDV[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\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19Pa\x1BRV[a\r\xAE\x81a\x1B\x9BV[a\t\x15a\x1BRV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\x85WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\x92WP` \x82\x01Q\x15[\x80a\x19\x9FWP`@\x82\x01Q\x15[\x80a\x19\xACWP``\x82\x01Q\x15[\x80a\x19\xB6WP\x81Q\x15[\x80a\x19\xC8WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19\xDCWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\xFAW`@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[\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\x1B\x06\x82a\x1B\xA3V[`@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\x1BJWa\x18\xFA\x82\x82a\x1C\x06V[a\x08\x8Aa\x1CxV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\t\x15W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rwa\x1BRV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x9CV[_Q` a+\x81_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\x1C\"\x91\x90a+jV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1CZW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C_V[``\x91P[P\x91P\x91Pa\x1Co\x85\x83\x83a\x1C\x97V[\x95\x94PPPPPV[4\x15a\t\x15W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C\xACWa\x1C\xA7\x82a\x1C\xF6V[a\x1C\xEFV[\x81Q\x15\x80\x15a\x1C\xC3WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C\xECW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x9CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1D\x06W\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\x1DR`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Dr`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1ER`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Er`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FR`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fr`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F\xB8W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F\xCDW__\xFD[a\x1C\xEF\x82a\x1F\xA2V[_` \x82\x84\x03\x12\x15a\x1F\xE6W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa \x1F`@\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[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"%Wa\"%a!\xEEV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"SWa\"Sa!\xEEV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F\xB8W__\xFD[_``\x82\x84\x03\x12\x15a\"\x81W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xA3Wa\"\xA3a!\xEEV[`@R\x90P\x80a\"\xB2\x83a\"[V[\x81Ra\"\xC0` \x84\x01a\"[V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"\xE6W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\x08Wa#\x08a!\xEEV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a#5W__\xFD[a#?\x85\x85a\"qV[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#SW__\xFD[Pa#\\a\"\x02V[a#i\x85``\x86\x01a\"\xD6V[\x81Ra#x\x85`\xA0\x86\x01a\"\xD6V[` \x82\x01Ra#\x8A\x85`\xE0\x86\x01a\"\xD6V[`@\x82\x01Ra#\x9D\x85a\x01 \x86\x01a\"\xD6V[``\x82\x01Ra#\xB0\x85a\x01`\x86\x01a\"\xD6V[`\x80\x82\x01Ra#\xC3\x85a\x01\xA0\x86\x01a\"\xD6V[`\xA0\x82\x01Ra#\xD6\x85a\x01\xE0\x86\x01a\"\xD6V[`\xC0\x82\x01Ra#\xE9\x85a\x02 \x86\x01a\"\xD6V[`\xE0\x82\x01Ra#\xFC\x85a\x02`\x86\x01a\"\xD6V[a\x01\0\x82\x01Ra$\x10\x85a\x02\xA0\x86\x01a\"\xD6V[a\x01 \x82\x01Ra$$\x85a\x02\xE0\x86\x01a\"\xD6V[a\x01@\x82\x01Ra$8\x85a\x03 \x86\x01a\"\xD6V[a\x01`\x82\x01Ra$L\x85a\x03`\x86\x01a\"\xD6V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a$\xE3W__\xFD[a$\xEC\x83a\x1F\xA2V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%\x06W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\x16W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a%/Wa%/a!\xEEV[a%B`\x1F\x82\x01`\x1F\x19\x16` \x01a\"+V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%VW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F\xB8W__\xFD[_` \x82\x84\x03\x12\x15a%\x98W__\xFD[a\x1C\xEF\x82a%uV[____\x84\x86\x03a\x01 \x81\x12\x15a%\xB6W__\xFD[a%\xC0\x87\x87a\"qV[\x94P`\x80`_\x19\x82\x01\x12\x15a%\xD3W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\xF6Wa%\xF6a!\xEEV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa&0`\xE0\x86\x01a%uV[\x91Pa&?a\x01\0\x86\x01a\x1F\xA2V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a&\x90W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a&\xAFW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\riWa\ria&\xB6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&\xFFWa&\xFFa&\xB6V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15jW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a'\tV[a'=\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\x01Qa)\x14`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra*\xECa\x05\0\x83\x01\x85a'\x06V[a*\xFAa\x05\xE0\x83\x01\x84a'(V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a+\x12W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\xEFW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\riWa\ria&\xB6V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a+aWa+aa&\xB6V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4378    );
4379    /// The runtime bytecode of the contract, as deployed on the network.
4380    ///
4381    /// ```text
4382    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d14610520578063e03033011461054f578063f2fde38b1461056e578063f9e50d191461058d575f5ffd5b80639fdb54a714610456578063ad3cb1cc146104ab578063c23b9e9e146104e8575f5ffd5b8063715018a614610361578063826e41fc146103755780638584d23f146103a05780638da5cb5b146103dc57806396c1ca61146104185780639baa3cc914610437575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102e55780634f1ef2861461032657806352d1902d1461033957806369cc6a041461034d575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611fbd565b6105a1565b005b348015610191575f5ffd5b506101a56101a0366004611fd6565b610654565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b5061022261069d565b6040516101da9190611fed565b34801561023a575f5ffd5b50610184610249366004612322565b6106b2565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b506102d761080d565b6040519081526020016101da565b3480156102f0575f5ffd5b505f546001546002546003546103069392919084565b6040805194855260208501939093529183015260608201526080016101da565b6101846103343660046124d2565b61086f565b348015610344575f5ffd5b506102d761088e565b348015610358575f5ffd5b506101846108a9565b34801561036c575f5ffd5b50610184610917565b348015610380575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103ab575f5ffd5b506103bf6103ba366004611fd6565b610938565b604080519283526001600160401b039091166020830152016101da565b3480156103e7575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b348015610423575f5ffd5b50610184610432366004612588565b610a63565b348015610442575f5ffd5b506101846104513660046125a1565b610aec565b348015610461575f5ffd5b50600654600754610485916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b6575f5ffd5b506104db604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da919061264a565b3480156104f3575f5ffd5b5060085461050b90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b34801561052b575f5ffd5b50600454600554610485916001600160401b0380821692600160401b909204169083565b34801561055a575f5ffd5b5061039061056936600461267f565b610c0e565b348015610579575f5ffd5b50610184610588366004611fbd565b610d6f565b348015610598575f5ffd5b506009546102d7565b6105a9610db1565b6001600160a01b0381166105d05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105ff5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610663575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6106a5611d1f565b6106ad610e0c565b905090565b6008546001600160a01b0316151580156106d757506008546001600160a01b03163314155b156106f5576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061072e575060065460208301516001600160401b03600160401b9092048216911611155b1561074c5760405163051c46ef60e01b815260040160405180910390fd5b610759826040015161143b565b610763828261147c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107b16107aa61080d565b4284611570565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161080191815260200190565b60405180910390a35050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ad919061269f565b610877611759565b610880826117fd565b61088a828261183e565b5050565b5f6108976118ff565b505f516020612b815f395f51905f5290565b6108b1610db1565b6008546001600160a01b0316156108fc57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61091f610db1565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f9182919061094c6001836126ca565b8154811061095c5761095c6126dd565b5f918252602090912060029091020154600160801b90046001600160401b0316841061099b57604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610a5c5784600982815481106109cb576109cb6126dd565b5f918252602090912060029091020154600160801b90046001600160401b03161115610a545760098181548110610a0457610a046126dd565b905f5260205f2090600202016001015460098281548110610a2757610a276126dd565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b6001016109af565b5050915091565b610a6b610db1565b610e108163ffffffff161080610a8a57506301e133808163ffffffff16115b80610aa8575060085463ffffffff600160a01b909104811690821611155b15610ac6576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b305750825b90505f826001600160401b03166001148015610b4b5750303b155b905081158015610b59575080155b15610b775760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ba157845460ff60401b1916600160401b1785555b610baa86611948565b610bb2611959565b610bbd898989611961565b8315610c0357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f90610c1b61080d565b841180610c26575080155b80610c705750600854600980549091600160c01b90046001600160401b0316908110610c5457610c546126dd565b5f9182526020909120600290910201546001600160401b031684105b15610c8e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c9c6001856126ca565b90505b81610d3857600854600160c01b90046001600160401b03168110610d38578660098281548110610cd157610cd16126dd565b5f9182526020909120600290910201546001600160401b031611610d26576001915060098181548110610d0657610d066126dd565b5f9182526020909120600290910201546001600160401b03169250610d38565b80610d30816126f1565b915050610c9f565b81610d565760405163b0b4387760e01b815260040160405180910390fd5b85610d6184896126ca565b119450505050505b92915050565b610d77610db1565b6001600160a01b038116610da557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610dae81611a8d565b50565b33610de37f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109155760405163118cdaa760e01b8152336004820152602401610d9c565b610e14611d1f565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181108061088a5760405163016c173360e21b815260040160405180910390fd5b5f61148561069d565b905061148f611f84565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061150e908590859088906004016128e2565b602060405180830381865af4158015611529573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154d9190612b02565b61156a576040516309bde33960e01b815260040160405180910390fd5b50505050565b600954158015906115e5575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115b0576115b06126dd565b5f9182526020909120600290910201546115da90600160401b90046001600160401b031684612b21565b6001600160401b0316115b1561167857600854600980549091600160c01b90046001600160401b0316908110611612576116126126dd565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861165283612b40565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806117df57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117d35f516020612b815f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109155760405163703e46dd60e11b815260040160405180910390fd5b611805610db1565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610649565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611898575060408051601f3d908101601f191682019092526118959181019061269f565b60015b6118c057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d9c565b5f516020612b815f395f51905f5281146118f057604051632a87526960e21b815260048101829052602401610d9c565b6118fa8383611afd565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109155760405163703e46dd60e11b815260040160405180910390fd5b611950611b52565b610dae81611b9b565b610915611b52565b82516001600160401b0316151580611985575060208301516001600160401b031615155b8061199257506020820151155b8061199f57506040820151155b806119ac57506060820151155b806119b657508151155b806119c85750610e108163ffffffff16105b806119dc57506301e133808163ffffffff16115b156119fa576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611b0682611ba3565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611b4a576118fa8282611c06565b61088a611c78565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661091557604051631afcd79f60e31b815260040160405180910390fd5b610d77611b52565b806001600160a01b03163b5f03611bd857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d9c565b5f516020612b815f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c229190612b6a565b5f60405180830381855af49150503d805f8114611c5a576040519150601f19603f3d011682016040523d82523d5f602084013e611c5f565b606091505b5091509150611c6f858383611c97565b95945050505050565b34156109155760405163b398979f60e01b815260040160405180910390fd5b606082611cac57611ca782611cf6565b611cef565b8151158015611cc357506001600160a01b0384163b155b15611cec57604051639996b31560e01b81526001600160a01b0385166004820152602401610d9c565b50805b9392505050565b805115611d065780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611d5260405180604001604052805f81526020015f81525090565b8152602001611d7260405180604001604052805f81526020015f81525090565b8152602001611d9260405180604001604052805f81526020015f81525090565b8152602001611db260405180604001604052805f81526020015f81525090565b8152602001611dd260405180604001604052805f81526020015f81525090565b8152602001611df260405180604001604052805f81526020015f81525090565b8152602001611e1260405180604001604052805f81526020015f81525090565b8152602001611e3260405180604001604052805f81526020015f81525090565b8152602001611e5260405180604001604052805f81526020015f81525090565b8152602001611e7260405180604001604052805f81526020015f81525090565b8152602001611e9260405180604001604052805f81526020015f81525090565b8152602001611eb260405180604001604052805f81526020015f81525090565b8152602001611ed260405180604001604052805f81526020015f81525090565b8152602001611ef260405180604001604052805f81526020015f81525090565b8152602001611f1260405180604001604052805f81526020015f81525090565b8152602001611f3260405180604001604052805f81526020015f81525090565b8152602001611f5260405180604001604052805f81526020015f81525090565b8152602001611f7260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611fb8575f5ffd5b919050565b5f60208284031215611fcd575f5ffd5b611cef82611fa2565b5f60208284031215611fe6575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161201f604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612225576122256121ee565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612253576122536121ee565b604052919050565b80356001600160401b0381168114611fb8575f5ffd5b5f60608284031215612281575f5ffd5b604051606081016001600160401b03811182821017156122a3576122a36121ee565b6040529050806122b28361225b565b81526122c06020840161225b565b6020820152604092830135920191909152919050565b5f604082840312156122e6575f5ffd5b604080519081016001600160401b0381118282101715612308576123086121ee565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612335575f5ffd5b61233f8585612271565b9250610480605f1982011215612353575f5ffd5b5061235c612202565b61236985606086016122d6565b81526123788560a086016122d6565b602082015261238a8560e086016122d6565b604082015261239d8561012086016122d6565b60608201526123b08561016086016122d6565b60808201526123c3856101a086016122d6565b60a08201526123d6856101e086016122d6565b60c08201526123e98561022086016122d6565b60e08201526123fc8561026086016122d6565b610100820152612410856102a086016122d6565b610120820152612424856102e086016122d6565b6101408201526124388561032086016122d6565b61016082015261244c8561036086016122d6565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156124e3575f5ffd5b6124ec83611fa2565b915060208301356001600160401b03811115612506575f5ffd5b8301601f81018513612516575f5ffd5b80356001600160401b0381111561252f5761252f6121ee565b612542601f8201601f191660200161222b565b818152866020838501011115612556575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611fb8575f5ffd5b5f60208284031215612598575f5ffd5b611cef82612575565b5f5f5f5f8486036101208112156125b6575f5ffd5b6125c08787612271565b94506080605f19820112156125d3575f5ffd5b50604051608081016001600160401b03811182821017156125f6576125f66121ee565b604090815260608781013583526080880135602084015260a08801359183019190915260c087013590820152925061263060e08601612575565b915061263f6101008601611fa2565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612690575f5ffd5b50508035926020909101359150565b5f602082840312156126af575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610d6957610d696126b6565b634e487b7160e01b5f52603260045260245ffd5b5f816126ff576126ff6126b6565b505f190190565b805f5b600781101561156a578151845260209384019390910190600101612709565b61273d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612914604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612aec610500830185612706565b612afa6105e0830184612728565b949350505050565b5f60208284031215612b12575f5ffd5b81518015158114611cef575f5ffd5b6001600160401b038281168282160390811115610d6957610d696126b6565b5f6001600160401b0382166001600160401b038103612b6157612b616126b6565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4383    /// ```
4384    #[rustfmt::skip]
4385    #[allow(clippy::all)]
4386    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4387        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05 W\x80c\xE003\x01\x14a\x05OW\x80c\xF2\xFD\xE3\x8B\x14a\x05nW\x80c\xF9\xE5\r\x19\x14a\x05\x8DW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04VW\x80c\xAD<\xB1\xCC\x14a\x04\xABW\x80c\xC2;\x9E\x9E\x14a\x04\xE8W__\xFD[\x80cqP\x18\xA6\x14a\x03aW\x80c\x82nA\xFC\x14a\x03uW\x80c\x85\x84\xD2?\x14a\x03\xA0W\x80c\x8D\xA5\xCB[\x14a\x03\xDCW\x80c\x96\xC1\xCAa\x14a\x04\x18W\x80c\x9B\xAA<\xC9\x14a\x047W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xE5W\x80cO\x1E\xF2\x86\x14a\x03&W\x80cR\xD1\x90-\x14a\x039W\x80ci\xCCj\x04\x14a\x03MW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1F\xBDV[a\x05\xA1V[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1F\xD6V[a\x06TV[`@Qa\x01\xDA\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\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x9DV[`@Qa\x01\xDA\x91\x90a\x1F\xEDV[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a#\"V[a\x06\xB2V[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\xD7a\x08\rV[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xF0W__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x06\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x0346`\x04a$\xD2V[a\x08oV[4\x80\x15a\x03DW__\xFD[Pa\x02\xD7a\x08\x8EV[4\x80\x15a\x03XW__\xFD[Pa\x01\x84a\x08\xA9V[4\x80\x15a\x03lW__\xFD[Pa\x01\x84a\t\x17V[4\x80\x15a\x03\x80W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xABW__\xFD[Pa\x03\xBFa\x03\xBA6`\x04a\x1F\xD6V[a\t8V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE7W__\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\x02\xABV[4\x80\x15a\x04#W__\xFD[Pa\x01\x84a\x0426`\x04a%\x88V[a\ncV[4\x80\x15a\x04BW__\xFD[Pa\x01\x84a\x04Q6`\x04a%\xA1V[a\n\xECV[4\x80\x15a\x04aW__\xFD[P`\x06T`\x07Ta\x04\x85\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\x01\xDAV[4\x80\x15a\x04\xB6W__\xFD[Pa\x04\xDB`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a&JV[4\x80\x15a\x04\xF3W__\xFD[P`\x08Ta\x05\x0B\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05+W__\xFD[P`\x04T`\x05Ta\x04\x85\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05ZW__\xFD[Pa\x03\x90a\x05i6`\x04a&\x7FV[a\x0C\x0EV[4\x80\x15a\x05yW__\xFD[Pa\x01\x84a\x05\x886`\x04a\x1F\xBDV[a\roV[4\x80\x15a\x05\x98W__\xFD[P`\tTa\x02\xD7V[a\x05\xA9a\r\xB1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xD0W`@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\x05\xFFW`@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\x06cW_\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\x06\xA5a\x1D\x1FV[a\x06\xADa\x0E\x0CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xF5W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x07.WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07LW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07Y\x82`@\x01Qa\x14;V[a\x07c\x82\x82a\x14|V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x07\xB1a\x07\xAAa\x08\rV[B\x84a\x15pV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\x08\x01\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x08KW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xAD\x91\x90a&\x9FV[a\x08wa\x17YV[a\x08\x80\x82a\x17\xFDV[a\x08\x8A\x82\x82a\x18>V[PPV[_a\x08\x97a\x18\xFFV[P_Q` a+\x81_9_Q\x90_R\x90V[a\x08\xB1a\r\xB1V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\xFCW`\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\t\x1Fa\r\xB1V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\tL`\x01\x83a&\xCAV[\x81T\x81\x10a\t\\Wa\t\\a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t\x9BW`@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\n\\W\x84`\t\x82\x81T\x81\x10a\t\xCBWa\t\xCBa&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\nTW`\t\x81\x81T\x81\x10a\n\x04Wa\n\x04a&\xDDV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n'Wa\n'a&\xDDV[\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\t\xAFV[PP\x91P\x91V[a\nka\r\xB1V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n\x8AWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n\xA8WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n\xC6W`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x0B0WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0BKWP0;\x15[\x90P\x81\x15\x80\x15a\x0BYWP\x80\x15[\x15a\x0BwW`@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\x0B\xA1W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0B\xAA\x86a\x19HV[a\x0B\xB2a\x19YV[a\x0B\xBD\x89\x89\x89a\x19aV[\x83\x15a\x0C\x03W\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[`\tT_\x90a\x0C\x1Ba\x08\rV[\x84\x11\x80a\x0C&WP\x80\x15[\x80a\x0CpWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0CTWa\x0CTa&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x8EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C\x9C`\x01\x85a&\xCAV[\x90P[\x81a\r8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\r8W\x86`\t\x82\x81T\x81\x10a\x0C\xD1Wa\x0C\xD1a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\r&W`\x01\x91P`\t\x81\x81T\x81\x10a\r\x06Wa\r\x06a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\r8V[\x80a\r0\x81a&\xF1V[\x91PPa\x0C\x9FV[\x81a\rVW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\ra\x84\x89a&\xCAV[\x11\x94PPPPP[\x92\x91PPV[a\rwa\r\xB1V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r\xA5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r\xAE\x81a\x1A\x8DV[PV[3a\r\xE3\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\t\x15W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x9CV[a\x0E\x14a\x1D\x1FV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` 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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x08\x8AW`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x85a\x06\x9DV[\x90Pa\x14\x8Fa\x1F\x84V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15\x0E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a(\xE2V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15)W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15M\x91\x90a+\x02V[a\x15jW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15\xE5WP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xB0Wa\x15\xB0a&\xDDV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15\xDA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a+!V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16xW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16\x12Wa\x16\x12a&\xDDV[_\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\x16R\x83a+@V[\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[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\x17\xDFWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x17\xD3_Q` a+\x81_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\x05a\r\xB1V[`@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\x06IV[\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\x18\x98WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\x95\x91\x81\x01\x90a&\x9FV[`\x01[a\x18\xC0W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x9CV[_Q` a+\x81_9_Q\x90_R\x81\x14a\x18\xF0W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x9CV[a\x18\xFA\x83\x83a\x1A\xFDV[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\t\x15W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19Pa\x1BRV[a\r\xAE\x81a\x1B\x9BV[a\t\x15a\x1BRV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\x85WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\x92WP` \x82\x01Q\x15[\x80a\x19\x9FWP`@\x82\x01Q\x15[\x80a\x19\xACWP``\x82\x01Q\x15[\x80a\x19\xB6WP\x81Q\x15[\x80a\x19\xC8WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19\xDCWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\xFAW`@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[\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\x1B\x06\x82a\x1B\xA3V[`@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\x1BJWa\x18\xFA\x82\x82a\x1C\x06V[a\x08\x8Aa\x1CxV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\t\x15W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rwa\x1BRV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1B\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x9CV[_Q` a+\x81_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\x1C\"\x91\x90a+jV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1CZW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1C_V[``\x91P[P\x91P\x91Pa\x1Co\x85\x83\x83a\x1C\x97V[\x95\x94PPPPPV[4\x15a\t\x15W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C\xACWa\x1C\xA7\x82a\x1C\xF6V[a\x1C\xEFV[\x81Q\x15\x80\x15a\x1C\xC3WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C\xECW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x9CV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1D\x06W\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\x1DR`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Dr`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1ER`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Er`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x92`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xB2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xD2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x12`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FR`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fr`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1F\xB8W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F\xCDW__\xFD[a\x1C\xEF\x82a\x1F\xA2V[_` \x82\x84\x03\x12\x15a\x1F\xE6W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa \x1F`@\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[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"%Wa\"%a!\xEEV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"SWa\"Sa!\xEEV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1F\xB8W__\xFD[_``\x82\x84\x03\x12\x15a\"\x81W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\xA3Wa\"\xA3a!\xEEV[`@R\x90P\x80a\"\xB2\x83a\"[V[\x81Ra\"\xC0` \x84\x01a\"[V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"\xE6W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\x08Wa#\x08a!\xEEV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a#5W__\xFD[a#?\x85\x85a\"qV[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a#SW__\xFD[Pa#\\a\"\x02V[a#i\x85``\x86\x01a\"\xD6V[\x81Ra#x\x85`\xA0\x86\x01a\"\xD6V[` \x82\x01Ra#\x8A\x85`\xE0\x86\x01a\"\xD6V[`@\x82\x01Ra#\x9D\x85a\x01 \x86\x01a\"\xD6V[``\x82\x01Ra#\xB0\x85a\x01`\x86\x01a\"\xD6V[`\x80\x82\x01Ra#\xC3\x85a\x01\xA0\x86\x01a\"\xD6V[`\xA0\x82\x01Ra#\xD6\x85a\x01\xE0\x86\x01a\"\xD6V[`\xC0\x82\x01Ra#\xE9\x85a\x02 \x86\x01a\"\xD6V[`\xE0\x82\x01Ra#\xFC\x85a\x02`\x86\x01a\"\xD6V[a\x01\0\x82\x01Ra$\x10\x85a\x02\xA0\x86\x01a\"\xD6V[a\x01 \x82\x01Ra$$\x85a\x02\xE0\x86\x01a\"\xD6V[a\x01@\x82\x01Ra$8\x85a\x03 \x86\x01a\"\xD6V[a\x01`\x82\x01Ra$L\x85a\x03`\x86\x01a\"\xD6V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a$\xE3W__\xFD[a$\xEC\x83a\x1F\xA2V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a%\x06W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a%\x16W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a%/Wa%/a!\xEEV[a%B`\x1F\x82\x01`\x1F\x19\x16` \x01a\"+V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a%VW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1F\xB8W__\xFD[_` \x82\x84\x03\x12\x15a%\x98W__\xFD[a\x1C\xEF\x82a%uV[____\x84\x86\x03a\x01 \x81\x12\x15a%\xB6W__\xFD[a%\xC0\x87\x87a\"qV[\x94P`\x80`_\x19\x82\x01\x12\x15a%\xD3W__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\xF6Wa%\xF6a!\xEEV[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa&0`\xE0\x86\x01a%uV[\x91Pa&?a\x01\0\x86\x01a\x1F\xA2V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a&\x90W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a&\xAFW__\xFD[PQ\x91\x90PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\riWa\ria&\xB6V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&\xFFWa&\xFFa&\xB6V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x15jW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a'\tV[a'=\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\x01Qa)\x14`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra*\xECa\x05\0\x83\x01\x85a'\x06V[a*\xFAa\x05\xE0\x83\x01\x84a'(V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a+\x12W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\xEFW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\riWa\ria&\xB6V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a+aWa+aa&\xB6V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4388    );
4389    #[derive(serde::Serialize, serde::Deserialize)]
4390    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4391    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4392```solidity
4393error AddressEmptyCode(address target);
4394```*/
4395    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4396    #[derive(Clone)]
4397    pub struct AddressEmptyCode {
4398        #[allow(missing_docs)]
4399        pub target: alloy::sol_types::private::Address,
4400    }
4401    #[allow(
4402        non_camel_case_types,
4403        non_snake_case,
4404        clippy::pub_underscore_fields,
4405        clippy::style
4406    )]
4407    const _: () = {
4408        use alloy::sol_types as alloy_sol_types;
4409        #[doc(hidden)]
4410        #[allow(dead_code)]
4411        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4412        #[doc(hidden)]
4413        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4414        #[cfg(test)]
4415        #[allow(dead_code, unreachable_patterns)]
4416        fn _type_assertion(
4417            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4418        ) {
4419            match _t {
4420                alloy_sol_types::private::AssertTypeEq::<
4421                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4422                >(_) => {}
4423            }
4424        }
4425        #[automatically_derived]
4426        #[doc(hidden)]
4427        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4428            fn from(value: AddressEmptyCode) -> Self {
4429                (value.target,)
4430            }
4431        }
4432        #[automatically_derived]
4433        #[doc(hidden)]
4434        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4435            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4436                Self { target: tuple.0 }
4437            }
4438        }
4439        #[automatically_derived]
4440        impl alloy_sol_types::SolError for AddressEmptyCode {
4441            type Parameters<'a> = UnderlyingSolTuple<'a>;
4442            type Token<'a> = <Self::Parameters<
4443                'a,
4444            > as alloy_sol_types::SolType>::Token<'a>;
4445            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4446            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4447            #[inline]
4448            fn new<'a>(
4449                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4450            ) -> Self {
4451                tuple.into()
4452            }
4453            #[inline]
4454            fn tokenize(&self) -> Self::Token<'_> {
4455                (
4456                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4457                        &self.target,
4458                    ),
4459                )
4460            }
4461            #[inline]
4462            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4463                <Self::Parameters<
4464                    '_,
4465                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4466                    .map(Self::new)
4467            }
4468        }
4469    };
4470    #[derive(serde::Serialize, serde::Deserialize)]
4471    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4472    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4473```solidity
4474error ERC1967InvalidImplementation(address implementation);
4475```*/
4476    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4477    #[derive(Clone)]
4478    pub struct ERC1967InvalidImplementation {
4479        #[allow(missing_docs)]
4480        pub implementation: alloy::sol_types::private::Address,
4481    }
4482    #[allow(
4483        non_camel_case_types,
4484        non_snake_case,
4485        clippy::pub_underscore_fields,
4486        clippy::style
4487    )]
4488    const _: () = {
4489        use alloy::sol_types as alloy_sol_types;
4490        #[doc(hidden)]
4491        #[allow(dead_code)]
4492        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4493        #[doc(hidden)]
4494        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4495        #[cfg(test)]
4496        #[allow(dead_code, unreachable_patterns)]
4497        fn _type_assertion(
4498            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4499        ) {
4500            match _t {
4501                alloy_sol_types::private::AssertTypeEq::<
4502                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4503                >(_) => {}
4504            }
4505        }
4506        #[automatically_derived]
4507        #[doc(hidden)]
4508        impl ::core::convert::From<ERC1967InvalidImplementation>
4509        for UnderlyingRustTuple<'_> {
4510            fn from(value: ERC1967InvalidImplementation) -> Self {
4511                (value.implementation,)
4512            }
4513        }
4514        #[automatically_derived]
4515        #[doc(hidden)]
4516        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4517        for ERC1967InvalidImplementation {
4518            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4519                Self { implementation: tuple.0 }
4520            }
4521        }
4522        #[automatically_derived]
4523        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4524            type Parameters<'a> = UnderlyingSolTuple<'a>;
4525            type Token<'a> = <Self::Parameters<
4526                'a,
4527            > as alloy_sol_types::SolType>::Token<'a>;
4528            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4529            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4530            #[inline]
4531            fn new<'a>(
4532                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4533            ) -> Self {
4534                tuple.into()
4535            }
4536            #[inline]
4537            fn tokenize(&self) -> Self::Token<'_> {
4538                (
4539                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4540                        &self.implementation,
4541                    ),
4542                )
4543            }
4544            #[inline]
4545            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4546                <Self::Parameters<
4547                    '_,
4548                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4549                    .map(Self::new)
4550            }
4551        }
4552    };
4553    #[derive(serde::Serialize, serde::Deserialize)]
4554    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4555    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4556```solidity
4557error ERC1967NonPayable();
4558```*/
4559    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4560    #[derive(Clone)]
4561    pub struct ERC1967NonPayable;
4562    #[allow(
4563        non_camel_case_types,
4564        non_snake_case,
4565        clippy::pub_underscore_fields,
4566        clippy::style
4567    )]
4568    const _: () = {
4569        use alloy::sol_types as alloy_sol_types;
4570        #[doc(hidden)]
4571        #[allow(dead_code)]
4572        type UnderlyingSolTuple<'a> = ();
4573        #[doc(hidden)]
4574        type UnderlyingRustTuple<'a> = ();
4575        #[cfg(test)]
4576        #[allow(dead_code, unreachable_patterns)]
4577        fn _type_assertion(
4578            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4579        ) {
4580            match _t {
4581                alloy_sol_types::private::AssertTypeEq::<
4582                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4583                >(_) => {}
4584            }
4585        }
4586        #[automatically_derived]
4587        #[doc(hidden)]
4588        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4589            fn from(value: ERC1967NonPayable) -> Self {
4590                ()
4591            }
4592        }
4593        #[automatically_derived]
4594        #[doc(hidden)]
4595        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4596            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4597                Self
4598            }
4599        }
4600        #[automatically_derived]
4601        impl alloy_sol_types::SolError for ERC1967NonPayable {
4602            type Parameters<'a> = UnderlyingSolTuple<'a>;
4603            type Token<'a> = <Self::Parameters<
4604                'a,
4605            > as alloy_sol_types::SolType>::Token<'a>;
4606            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4607            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4608            #[inline]
4609            fn new<'a>(
4610                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4611            ) -> Self {
4612                tuple.into()
4613            }
4614            #[inline]
4615            fn tokenize(&self) -> Self::Token<'_> {
4616                ()
4617            }
4618            #[inline]
4619            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4620                <Self::Parameters<
4621                    '_,
4622                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4623                    .map(Self::new)
4624            }
4625        }
4626    };
4627    #[derive(serde::Serialize, serde::Deserialize)]
4628    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4629    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4630```solidity
4631error FailedInnerCall();
4632```*/
4633    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4634    #[derive(Clone)]
4635    pub struct FailedInnerCall;
4636    #[allow(
4637        non_camel_case_types,
4638        non_snake_case,
4639        clippy::pub_underscore_fields,
4640        clippy::style
4641    )]
4642    const _: () = {
4643        use alloy::sol_types as alloy_sol_types;
4644        #[doc(hidden)]
4645        #[allow(dead_code)]
4646        type UnderlyingSolTuple<'a> = ();
4647        #[doc(hidden)]
4648        type UnderlyingRustTuple<'a> = ();
4649        #[cfg(test)]
4650        #[allow(dead_code, unreachable_patterns)]
4651        fn _type_assertion(
4652            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4653        ) {
4654            match _t {
4655                alloy_sol_types::private::AssertTypeEq::<
4656                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4657                >(_) => {}
4658            }
4659        }
4660        #[automatically_derived]
4661        #[doc(hidden)]
4662        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4663            fn from(value: FailedInnerCall) -> Self {
4664                ()
4665            }
4666        }
4667        #[automatically_derived]
4668        #[doc(hidden)]
4669        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4670            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4671                Self
4672            }
4673        }
4674        #[automatically_derived]
4675        impl alloy_sol_types::SolError for FailedInnerCall {
4676            type Parameters<'a> = UnderlyingSolTuple<'a>;
4677            type Token<'a> = <Self::Parameters<
4678                'a,
4679            > as alloy_sol_types::SolType>::Token<'a>;
4680            const SIGNATURE: &'static str = "FailedInnerCall()";
4681            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4682            #[inline]
4683            fn new<'a>(
4684                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4685            ) -> Self {
4686                tuple.into()
4687            }
4688            #[inline]
4689            fn tokenize(&self) -> Self::Token<'_> {
4690                ()
4691            }
4692            #[inline]
4693            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4694                <Self::Parameters<
4695                    '_,
4696                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4697                    .map(Self::new)
4698            }
4699        }
4700    };
4701    #[derive(serde::Serialize, serde::Deserialize)]
4702    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4703    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4704```solidity
4705error InsufficientSnapshotHistory();
4706```*/
4707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4708    #[derive(Clone)]
4709    pub struct InsufficientSnapshotHistory;
4710    #[allow(
4711        non_camel_case_types,
4712        non_snake_case,
4713        clippy::pub_underscore_fields,
4714        clippy::style
4715    )]
4716    const _: () = {
4717        use alloy::sol_types as alloy_sol_types;
4718        #[doc(hidden)]
4719        #[allow(dead_code)]
4720        type UnderlyingSolTuple<'a> = ();
4721        #[doc(hidden)]
4722        type UnderlyingRustTuple<'a> = ();
4723        #[cfg(test)]
4724        #[allow(dead_code, unreachable_patterns)]
4725        fn _type_assertion(
4726            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4727        ) {
4728            match _t {
4729                alloy_sol_types::private::AssertTypeEq::<
4730                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4731                >(_) => {}
4732            }
4733        }
4734        #[automatically_derived]
4735        #[doc(hidden)]
4736        impl ::core::convert::From<InsufficientSnapshotHistory>
4737        for UnderlyingRustTuple<'_> {
4738            fn from(value: InsufficientSnapshotHistory) -> Self {
4739                ()
4740            }
4741        }
4742        #[automatically_derived]
4743        #[doc(hidden)]
4744        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4745        for InsufficientSnapshotHistory {
4746            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4747                Self
4748            }
4749        }
4750        #[automatically_derived]
4751        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4752            type Parameters<'a> = UnderlyingSolTuple<'a>;
4753            type Token<'a> = <Self::Parameters<
4754                'a,
4755            > as alloy_sol_types::SolType>::Token<'a>;
4756            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4757            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4758            #[inline]
4759            fn new<'a>(
4760                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4761            ) -> Self {
4762                tuple.into()
4763            }
4764            #[inline]
4765            fn tokenize(&self) -> Self::Token<'_> {
4766                ()
4767            }
4768            #[inline]
4769            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4770                <Self::Parameters<
4771                    '_,
4772                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4773                    .map(Self::new)
4774            }
4775        }
4776    };
4777    #[derive(serde::Serialize, serde::Deserialize)]
4778    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4779    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4780```solidity
4781error InvalidAddress();
4782```*/
4783    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4784    #[derive(Clone)]
4785    pub struct InvalidAddress;
4786    #[allow(
4787        non_camel_case_types,
4788        non_snake_case,
4789        clippy::pub_underscore_fields,
4790        clippy::style
4791    )]
4792    const _: () = {
4793        use alloy::sol_types as alloy_sol_types;
4794        #[doc(hidden)]
4795        #[allow(dead_code)]
4796        type UnderlyingSolTuple<'a> = ();
4797        #[doc(hidden)]
4798        type UnderlyingRustTuple<'a> = ();
4799        #[cfg(test)]
4800        #[allow(dead_code, unreachable_patterns)]
4801        fn _type_assertion(
4802            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4803        ) {
4804            match _t {
4805                alloy_sol_types::private::AssertTypeEq::<
4806                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4807                >(_) => {}
4808            }
4809        }
4810        #[automatically_derived]
4811        #[doc(hidden)]
4812        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4813            fn from(value: InvalidAddress) -> Self {
4814                ()
4815            }
4816        }
4817        #[automatically_derived]
4818        #[doc(hidden)]
4819        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4820            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4821                Self
4822            }
4823        }
4824        #[automatically_derived]
4825        impl alloy_sol_types::SolError for InvalidAddress {
4826            type Parameters<'a> = UnderlyingSolTuple<'a>;
4827            type Token<'a> = <Self::Parameters<
4828                'a,
4829            > as alloy_sol_types::SolType>::Token<'a>;
4830            const SIGNATURE: &'static str = "InvalidAddress()";
4831            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4832            #[inline]
4833            fn new<'a>(
4834                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4835            ) -> Self {
4836                tuple.into()
4837            }
4838            #[inline]
4839            fn tokenize(&self) -> Self::Token<'_> {
4840                ()
4841            }
4842            #[inline]
4843            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4844                <Self::Parameters<
4845                    '_,
4846                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4847                    .map(Self::new)
4848            }
4849        }
4850    };
4851    #[derive(serde::Serialize, serde::Deserialize)]
4852    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4853    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4854```solidity
4855error InvalidArgs();
4856```*/
4857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4858    #[derive(Clone)]
4859    pub struct InvalidArgs;
4860    #[allow(
4861        non_camel_case_types,
4862        non_snake_case,
4863        clippy::pub_underscore_fields,
4864        clippy::style
4865    )]
4866    const _: () = {
4867        use alloy::sol_types as alloy_sol_types;
4868        #[doc(hidden)]
4869        #[allow(dead_code)]
4870        type UnderlyingSolTuple<'a> = ();
4871        #[doc(hidden)]
4872        type UnderlyingRustTuple<'a> = ();
4873        #[cfg(test)]
4874        #[allow(dead_code, unreachable_patterns)]
4875        fn _type_assertion(
4876            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4877        ) {
4878            match _t {
4879                alloy_sol_types::private::AssertTypeEq::<
4880                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4881                >(_) => {}
4882            }
4883        }
4884        #[automatically_derived]
4885        #[doc(hidden)]
4886        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4887            fn from(value: InvalidArgs) -> Self {
4888                ()
4889            }
4890        }
4891        #[automatically_derived]
4892        #[doc(hidden)]
4893        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4894            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4895                Self
4896            }
4897        }
4898        #[automatically_derived]
4899        impl alloy_sol_types::SolError for InvalidArgs {
4900            type Parameters<'a> = UnderlyingSolTuple<'a>;
4901            type Token<'a> = <Self::Parameters<
4902                'a,
4903            > as alloy_sol_types::SolType>::Token<'a>;
4904            const SIGNATURE: &'static str = "InvalidArgs()";
4905            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4906            #[inline]
4907            fn new<'a>(
4908                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4909            ) -> Self {
4910                tuple.into()
4911            }
4912            #[inline]
4913            fn tokenize(&self) -> Self::Token<'_> {
4914                ()
4915            }
4916            #[inline]
4917            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4918                <Self::Parameters<
4919                    '_,
4920                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4921                    .map(Self::new)
4922            }
4923        }
4924    };
4925    #[derive(serde::Serialize, serde::Deserialize)]
4926    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4927    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4928```solidity
4929error InvalidHotShotBlockForCommitmentCheck();
4930```*/
4931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4932    #[derive(Clone)]
4933    pub struct InvalidHotShotBlockForCommitmentCheck;
4934    #[allow(
4935        non_camel_case_types,
4936        non_snake_case,
4937        clippy::pub_underscore_fields,
4938        clippy::style
4939    )]
4940    const _: () = {
4941        use alloy::sol_types as alloy_sol_types;
4942        #[doc(hidden)]
4943        #[allow(dead_code)]
4944        type UnderlyingSolTuple<'a> = ();
4945        #[doc(hidden)]
4946        type UnderlyingRustTuple<'a> = ();
4947        #[cfg(test)]
4948        #[allow(dead_code, unreachable_patterns)]
4949        fn _type_assertion(
4950            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4951        ) {
4952            match _t {
4953                alloy_sol_types::private::AssertTypeEq::<
4954                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4955                >(_) => {}
4956            }
4957        }
4958        #[automatically_derived]
4959        #[doc(hidden)]
4960        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
4961        for UnderlyingRustTuple<'_> {
4962            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4963                ()
4964            }
4965        }
4966        #[automatically_derived]
4967        #[doc(hidden)]
4968        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4969        for InvalidHotShotBlockForCommitmentCheck {
4970            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4971                Self
4972            }
4973        }
4974        #[automatically_derived]
4975        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4976            type Parameters<'a> = UnderlyingSolTuple<'a>;
4977            type Token<'a> = <Self::Parameters<
4978                'a,
4979            > as alloy_sol_types::SolType>::Token<'a>;
4980            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4981            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4982            #[inline]
4983            fn new<'a>(
4984                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4985            ) -> Self {
4986                tuple.into()
4987            }
4988            #[inline]
4989            fn tokenize(&self) -> Self::Token<'_> {
4990                ()
4991            }
4992            #[inline]
4993            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4994                <Self::Parameters<
4995                    '_,
4996                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4997                    .map(Self::new)
4998            }
4999        }
5000    };
5001    #[derive(serde::Serialize, serde::Deserialize)]
5002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5003    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5004```solidity
5005error InvalidInitialization();
5006```*/
5007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5008    #[derive(Clone)]
5009    pub struct InvalidInitialization;
5010    #[allow(
5011        non_camel_case_types,
5012        non_snake_case,
5013        clippy::pub_underscore_fields,
5014        clippy::style
5015    )]
5016    const _: () = {
5017        use alloy::sol_types as alloy_sol_types;
5018        #[doc(hidden)]
5019        #[allow(dead_code)]
5020        type UnderlyingSolTuple<'a> = ();
5021        #[doc(hidden)]
5022        type UnderlyingRustTuple<'a> = ();
5023        #[cfg(test)]
5024        #[allow(dead_code, unreachable_patterns)]
5025        fn _type_assertion(
5026            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5027        ) {
5028            match _t {
5029                alloy_sol_types::private::AssertTypeEq::<
5030                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5031                >(_) => {}
5032            }
5033        }
5034        #[automatically_derived]
5035        #[doc(hidden)]
5036        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5037            fn from(value: InvalidInitialization) -> Self {
5038                ()
5039            }
5040        }
5041        #[automatically_derived]
5042        #[doc(hidden)]
5043        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5044            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5045                Self
5046            }
5047        }
5048        #[automatically_derived]
5049        impl alloy_sol_types::SolError for InvalidInitialization {
5050            type Parameters<'a> = UnderlyingSolTuple<'a>;
5051            type Token<'a> = <Self::Parameters<
5052                'a,
5053            > as alloy_sol_types::SolType>::Token<'a>;
5054            const SIGNATURE: &'static str = "InvalidInitialization()";
5055            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5056            #[inline]
5057            fn new<'a>(
5058                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5059            ) -> Self {
5060                tuple.into()
5061            }
5062            #[inline]
5063            fn tokenize(&self) -> Self::Token<'_> {
5064                ()
5065            }
5066            #[inline]
5067            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5068                <Self::Parameters<
5069                    '_,
5070                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5071                    .map(Self::new)
5072            }
5073        }
5074    };
5075    #[derive(serde::Serialize, serde::Deserialize)]
5076    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5077    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5078```solidity
5079error InvalidMaxStateHistory();
5080```*/
5081    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5082    #[derive(Clone)]
5083    pub struct InvalidMaxStateHistory;
5084    #[allow(
5085        non_camel_case_types,
5086        non_snake_case,
5087        clippy::pub_underscore_fields,
5088        clippy::style
5089    )]
5090    const _: () = {
5091        use alloy::sol_types as alloy_sol_types;
5092        #[doc(hidden)]
5093        #[allow(dead_code)]
5094        type UnderlyingSolTuple<'a> = ();
5095        #[doc(hidden)]
5096        type UnderlyingRustTuple<'a> = ();
5097        #[cfg(test)]
5098        #[allow(dead_code, unreachable_patterns)]
5099        fn _type_assertion(
5100            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5101        ) {
5102            match _t {
5103                alloy_sol_types::private::AssertTypeEq::<
5104                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5105                >(_) => {}
5106            }
5107        }
5108        #[automatically_derived]
5109        #[doc(hidden)]
5110        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5111            fn from(value: InvalidMaxStateHistory) -> Self {
5112                ()
5113            }
5114        }
5115        #[automatically_derived]
5116        #[doc(hidden)]
5117        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5118            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5119                Self
5120            }
5121        }
5122        #[automatically_derived]
5123        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5124            type Parameters<'a> = UnderlyingSolTuple<'a>;
5125            type Token<'a> = <Self::Parameters<
5126                'a,
5127            > as alloy_sol_types::SolType>::Token<'a>;
5128            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5129            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5130            #[inline]
5131            fn new<'a>(
5132                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5133            ) -> Self {
5134                tuple.into()
5135            }
5136            #[inline]
5137            fn tokenize(&self) -> Self::Token<'_> {
5138                ()
5139            }
5140            #[inline]
5141            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5142                <Self::Parameters<
5143                    '_,
5144                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5145                    .map(Self::new)
5146            }
5147        }
5148    };
5149    #[derive(serde::Serialize, serde::Deserialize)]
5150    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5151    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5152```solidity
5153error InvalidProof();
5154```*/
5155    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5156    #[derive(Clone)]
5157    pub struct InvalidProof;
5158    #[allow(
5159        non_camel_case_types,
5160        non_snake_case,
5161        clippy::pub_underscore_fields,
5162        clippy::style
5163    )]
5164    const _: () = {
5165        use alloy::sol_types as alloy_sol_types;
5166        #[doc(hidden)]
5167        #[allow(dead_code)]
5168        type UnderlyingSolTuple<'a> = ();
5169        #[doc(hidden)]
5170        type UnderlyingRustTuple<'a> = ();
5171        #[cfg(test)]
5172        #[allow(dead_code, unreachable_patterns)]
5173        fn _type_assertion(
5174            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5175        ) {
5176            match _t {
5177                alloy_sol_types::private::AssertTypeEq::<
5178                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5179                >(_) => {}
5180            }
5181        }
5182        #[automatically_derived]
5183        #[doc(hidden)]
5184        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5185            fn from(value: InvalidProof) -> Self {
5186                ()
5187            }
5188        }
5189        #[automatically_derived]
5190        #[doc(hidden)]
5191        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5192            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5193                Self
5194            }
5195        }
5196        #[automatically_derived]
5197        impl alloy_sol_types::SolError for InvalidProof {
5198            type Parameters<'a> = UnderlyingSolTuple<'a>;
5199            type Token<'a> = <Self::Parameters<
5200                'a,
5201            > as alloy_sol_types::SolType>::Token<'a>;
5202            const SIGNATURE: &'static str = "InvalidProof()";
5203            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5204            #[inline]
5205            fn new<'a>(
5206                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5207            ) -> Self {
5208                tuple.into()
5209            }
5210            #[inline]
5211            fn tokenize(&self) -> Self::Token<'_> {
5212                ()
5213            }
5214            #[inline]
5215            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5216                <Self::Parameters<
5217                    '_,
5218                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5219                    .map(Self::new)
5220            }
5221        }
5222    };
5223    #[derive(serde::Serialize, serde::Deserialize)]
5224    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5225    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5226```solidity
5227error InvalidScalar();
5228```*/
5229    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5230    #[derive(Clone)]
5231    pub struct InvalidScalar;
5232    #[allow(
5233        non_camel_case_types,
5234        non_snake_case,
5235        clippy::pub_underscore_fields,
5236        clippy::style
5237    )]
5238    const _: () = {
5239        use alloy::sol_types as alloy_sol_types;
5240        #[doc(hidden)]
5241        #[allow(dead_code)]
5242        type UnderlyingSolTuple<'a> = ();
5243        #[doc(hidden)]
5244        type UnderlyingRustTuple<'a> = ();
5245        #[cfg(test)]
5246        #[allow(dead_code, unreachable_patterns)]
5247        fn _type_assertion(
5248            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5249        ) {
5250            match _t {
5251                alloy_sol_types::private::AssertTypeEq::<
5252                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5253                >(_) => {}
5254            }
5255        }
5256        #[automatically_derived]
5257        #[doc(hidden)]
5258        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5259            fn from(value: InvalidScalar) -> Self {
5260                ()
5261            }
5262        }
5263        #[automatically_derived]
5264        #[doc(hidden)]
5265        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5266            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5267                Self
5268            }
5269        }
5270        #[automatically_derived]
5271        impl alloy_sol_types::SolError for InvalidScalar {
5272            type Parameters<'a> = UnderlyingSolTuple<'a>;
5273            type Token<'a> = <Self::Parameters<
5274                'a,
5275            > as alloy_sol_types::SolType>::Token<'a>;
5276            const SIGNATURE: &'static str = "InvalidScalar()";
5277            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5278            #[inline]
5279            fn new<'a>(
5280                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5281            ) -> Self {
5282                tuple.into()
5283            }
5284            #[inline]
5285            fn tokenize(&self) -> Self::Token<'_> {
5286                ()
5287            }
5288            #[inline]
5289            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5290                <Self::Parameters<
5291                    '_,
5292                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5293                    .map(Self::new)
5294            }
5295        }
5296    };
5297    #[derive(serde::Serialize, serde::Deserialize)]
5298    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5299    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5300```solidity
5301error NoChangeRequired();
5302```*/
5303    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5304    #[derive(Clone)]
5305    pub struct NoChangeRequired;
5306    #[allow(
5307        non_camel_case_types,
5308        non_snake_case,
5309        clippy::pub_underscore_fields,
5310        clippy::style
5311    )]
5312    const _: () = {
5313        use alloy::sol_types as alloy_sol_types;
5314        #[doc(hidden)]
5315        #[allow(dead_code)]
5316        type UnderlyingSolTuple<'a> = ();
5317        #[doc(hidden)]
5318        type UnderlyingRustTuple<'a> = ();
5319        #[cfg(test)]
5320        #[allow(dead_code, unreachable_patterns)]
5321        fn _type_assertion(
5322            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5323        ) {
5324            match _t {
5325                alloy_sol_types::private::AssertTypeEq::<
5326                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5327                >(_) => {}
5328            }
5329        }
5330        #[automatically_derived]
5331        #[doc(hidden)]
5332        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5333            fn from(value: NoChangeRequired) -> Self {
5334                ()
5335            }
5336        }
5337        #[automatically_derived]
5338        #[doc(hidden)]
5339        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5340            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5341                Self
5342            }
5343        }
5344        #[automatically_derived]
5345        impl alloy_sol_types::SolError for NoChangeRequired {
5346            type Parameters<'a> = UnderlyingSolTuple<'a>;
5347            type Token<'a> = <Self::Parameters<
5348                'a,
5349            > as alloy_sol_types::SolType>::Token<'a>;
5350            const SIGNATURE: &'static str = "NoChangeRequired()";
5351            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5352            #[inline]
5353            fn new<'a>(
5354                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5355            ) -> Self {
5356                tuple.into()
5357            }
5358            #[inline]
5359            fn tokenize(&self) -> Self::Token<'_> {
5360                ()
5361            }
5362            #[inline]
5363            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5364                <Self::Parameters<
5365                    '_,
5366                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5367                    .map(Self::new)
5368            }
5369        }
5370    };
5371    #[derive(serde::Serialize, serde::Deserialize)]
5372    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5373    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5374```solidity
5375error NotInitializing();
5376```*/
5377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5378    #[derive(Clone)]
5379    pub struct NotInitializing;
5380    #[allow(
5381        non_camel_case_types,
5382        non_snake_case,
5383        clippy::pub_underscore_fields,
5384        clippy::style
5385    )]
5386    const _: () = {
5387        use alloy::sol_types as alloy_sol_types;
5388        #[doc(hidden)]
5389        #[allow(dead_code)]
5390        type UnderlyingSolTuple<'a> = ();
5391        #[doc(hidden)]
5392        type UnderlyingRustTuple<'a> = ();
5393        #[cfg(test)]
5394        #[allow(dead_code, unreachable_patterns)]
5395        fn _type_assertion(
5396            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5397        ) {
5398            match _t {
5399                alloy_sol_types::private::AssertTypeEq::<
5400                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5401                >(_) => {}
5402            }
5403        }
5404        #[automatically_derived]
5405        #[doc(hidden)]
5406        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5407            fn from(value: NotInitializing) -> Self {
5408                ()
5409            }
5410        }
5411        #[automatically_derived]
5412        #[doc(hidden)]
5413        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5414            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5415                Self
5416            }
5417        }
5418        #[automatically_derived]
5419        impl alloy_sol_types::SolError for NotInitializing {
5420            type Parameters<'a> = UnderlyingSolTuple<'a>;
5421            type Token<'a> = <Self::Parameters<
5422                'a,
5423            > as alloy_sol_types::SolType>::Token<'a>;
5424            const SIGNATURE: &'static str = "NotInitializing()";
5425            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5426            #[inline]
5427            fn new<'a>(
5428                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5429            ) -> Self {
5430                tuple.into()
5431            }
5432            #[inline]
5433            fn tokenize(&self) -> Self::Token<'_> {
5434                ()
5435            }
5436            #[inline]
5437            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5438                <Self::Parameters<
5439                    '_,
5440                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5441                    .map(Self::new)
5442            }
5443        }
5444    };
5445    #[derive(serde::Serialize, serde::Deserialize)]
5446    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5447    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5448```solidity
5449error OutdatedState();
5450```*/
5451    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5452    #[derive(Clone)]
5453    pub struct OutdatedState;
5454    #[allow(
5455        non_camel_case_types,
5456        non_snake_case,
5457        clippy::pub_underscore_fields,
5458        clippy::style
5459    )]
5460    const _: () = {
5461        use alloy::sol_types as alloy_sol_types;
5462        #[doc(hidden)]
5463        #[allow(dead_code)]
5464        type UnderlyingSolTuple<'a> = ();
5465        #[doc(hidden)]
5466        type UnderlyingRustTuple<'a> = ();
5467        #[cfg(test)]
5468        #[allow(dead_code, unreachable_patterns)]
5469        fn _type_assertion(
5470            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5471        ) {
5472            match _t {
5473                alloy_sol_types::private::AssertTypeEq::<
5474                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5475                >(_) => {}
5476            }
5477        }
5478        #[automatically_derived]
5479        #[doc(hidden)]
5480        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5481            fn from(value: OutdatedState) -> Self {
5482                ()
5483            }
5484        }
5485        #[automatically_derived]
5486        #[doc(hidden)]
5487        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5488            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5489                Self
5490            }
5491        }
5492        #[automatically_derived]
5493        impl alloy_sol_types::SolError for OutdatedState {
5494            type Parameters<'a> = UnderlyingSolTuple<'a>;
5495            type Token<'a> = <Self::Parameters<
5496                'a,
5497            > as alloy_sol_types::SolType>::Token<'a>;
5498            const SIGNATURE: &'static str = "OutdatedState()";
5499            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5500            #[inline]
5501            fn new<'a>(
5502                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5503            ) -> Self {
5504                tuple.into()
5505            }
5506            #[inline]
5507            fn tokenize(&self) -> Self::Token<'_> {
5508                ()
5509            }
5510            #[inline]
5511            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5512                <Self::Parameters<
5513                    '_,
5514                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5515                    .map(Self::new)
5516            }
5517        }
5518    };
5519    #[derive(serde::Serialize, serde::Deserialize)]
5520    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5521    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5522```solidity
5523error OwnableInvalidOwner(address owner);
5524```*/
5525    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5526    #[derive(Clone)]
5527    pub struct OwnableInvalidOwner {
5528        #[allow(missing_docs)]
5529        pub owner: alloy::sol_types::private::Address,
5530    }
5531    #[allow(
5532        non_camel_case_types,
5533        non_snake_case,
5534        clippy::pub_underscore_fields,
5535        clippy::style
5536    )]
5537    const _: () = {
5538        use alloy::sol_types as alloy_sol_types;
5539        #[doc(hidden)]
5540        #[allow(dead_code)]
5541        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5542        #[doc(hidden)]
5543        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5544        #[cfg(test)]
5545        #[allow(dead_code, unreachable_patterns)]
5546        fn _type_assertion(
5547            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5548        ) {
5549            match _t {
5550                alloy_sol_types::private::AssertTypeEq::<
5551                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5552                >(_) => {}
5553            }
5554        }
5555        #[automatically_derived]
5556        #[doc(hidden)]
5557        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5558            fn from(value: OwnableInvalidOwner) -> Self {
5559                (value.owner,)
5560            }
5561        }
5562        #[automatically_derived]
5563        #[doc(hidden)]
5564        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5565            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5566                Self { owner: tuple.0 }
5567            }
5568        }
5569        #[automatically_derived]
5570        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5571            type Parameters<'a> = UnderlyingSolTuple<'a>;
5572            type Token<'a> = <Self::Parameters<
5573                'a,
5574            > as alloy_sol_types::SolType>::Token<'a>;
5575            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5576            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5577            #[inline]
5578            fn new<'a>(
5579                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5580            ) -> Self {
5581                tuple.into()
5582            }
5583            #[inline]
5584            fn tokenize(&self) -> Self::Token<'_> {
5585                (
5586                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5587                        &self.owner,
5588                    ),
5589                )
5590            }
5591            #[inline]
5592            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5593                <Self::Parameters<
5594                    '_,
5595                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5596                    .map(Self::new)
5597            }
5598        }
5599    };
5600    #[derive(serde::Serialize, serde::Deserialize)]
5601    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5602    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5603```solidity
5604error OwnableUnauthorizedAccount(address account);
5605```*/
5606    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5607    #[derive(Clone)]
5608    pub struct OwnableUnauthorizedAccount {
5609        #[allow(missing_docs)]
5610        pub account: alloy::sol_types::private::Address,
5611    }
5612    #[allow(
5613        non_camel_case_types,
5614        non_snake_case,
5615        clippy::pub_underscore_fields,
5616        clippy::style
5617    )]
5618    const _: () = {
5619        use alloy::sol_types as alloy_sol_types;
5620        #[doc(hidden)]
5621        #[allow(dead_code)]
5622        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5623        #[doc(hidden)]
5624        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5625        #[cfg(test)]
5626        #[allow(dead_code, unreachable_patterns)]
5627        fn _type_assertion(
5628            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5629        ) {
5630            match _t {
5631                alloy_sol_types::private::AssertTypeEq::<
5632                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5633                >(_) => {}
5634            }
5635        }
5636        #[automatically_derived]
5637        #[doc(hidden)]
5638        impl ::core::convert::From<OwnableUnauthorizedAccount>
5639        for UnderlyingRustTuple<'_> {
5640            fn from(value: OwnableUnauthorizedAccount) -> Self {
5641                (value.account,)
5642            }
5643        }
5644        #[automatically_derived]
5645        #[doc(hidden)]
5646        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5647        for OwnableUnauthorizedAccount {
5648            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5649                Self { account: tuple.0 }
5650            }
5651        }
5652        #[automatically_derived]
5653        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5654            type Parameters<'a> = UnderlyingSolTuple<'a>;
5655            type Token<'a> = <Self::Parameters<
5656                'a,
5657            > as alloy_sol_types::SolType>::Token<'a>;
5658            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5659            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5660            #[inline]
5661            fn new<'a>(
5662                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5663            ) -> Self {
5664                tuple.into()
5665            }
5666            #[inline]
5667            fn tokenize(&self) -> Self::Token<'_> {
5668                (
5669                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5670                        &self.account,
5671                    ),
5672                )
5673            }
5674            #[inline]
5675            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5676                <Self::Parameters<
5677                    '_,
5678                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5679                    .map(Self::new)
5680            }
5681        }
5682    };
5683    #[derive(serde::Serialize, serde::Deserialize)]
5684    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5685    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
5686```solidity
5687error OwnershipCannotBeRenounced();
5688```*/
5689    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5690    #[derive(Clone)]
5691    pub struct OwnershipCannotBeRenounced;
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<OwnershipCannotBeRenounced>
5719        for UnderlyingRustTuple<'_> {
5720            fn from(value: OwnershipCannotBeRenounced) -> Self {
5721                ()
5722            }
5723        }
5724        #[automatically_derived]
5725        #[doc(hidden)]
5726        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5727        for OwnershipCannotBeRenounced {
5728            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5729                Self
5730            }
5731        }
5732        #[automatically_derived]
5733        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
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 = "OwnershipCannotBeRenounced()";
5739            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
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::Parameters<
5753                    '_,
5754                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5755                    .map(Self::new)
5756            }
5757        }
5758    };
5759    #[derive(serde::Serialize, serde::Deserialize)]
5760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5761    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5762```solidity
5763error ProverNotPermissioned();
5764```*/
5765    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5766    #[derive(Clone)]
5767    pub struct ProverNotPermissioned;
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<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5795            fn from(value: ProverNotPermissioned) -> Self {
5796                ()
5797            }
5798        }
5799        #[automatically_derived]
5800        #[doc(hidden)]
5801        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5802            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5803                Self
5804            }
5805        }
5806        #[automatically_derived]
5807        impl alloy_sol_types::SolError for ProverNotPermissioned {
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 = "ProverNotPermissioned()";
5813            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
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::Parameters<
5827                    '_,
5828                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5829                    .map(Self::new)
5830            }
5831        }
5832    };
5833    #[derive(serde::Serialize, serde::Deserialize)]
5834    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5835    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5836```solidity
5837error UUPSUnauthorizedCallContext();
5838```*/
5839    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5840    #[derive(Clone)]
5841    pub struct UUPSUnauthorizedCallContext;
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<UUPSUnauthorizedCallContext>
5869        for UnderlyingRustTuple<'_> {
5870            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5871                ()
5872            }
5873        }
5874        #[automatically_derived]
5875        #[doc(hidden)]
5876        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5877        for UUPSUnauthorizedCallContext {
5878            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5879                Self
5880            }
5881        }
5882        #[automatically_derived]
5883        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5884            type Parameters<'a> = UnderlyingSolTuple<'a>;
5885            type Token<'a> = <Self::Parameters<
5886                'a,
5887            > as alloy_sol_types::SolType>::Token<'a>;
5888            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5889            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5890            #[inline]
5891            fn new<'a>(
5892                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5893            ) -> Self {
5894                tuple.into()
5895            }
5896            #[inline]
5897            fn tokenize(&self) -> Self::Token<'_> {
5898                ()
5899            }
5900            #[inline]
5901            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5902                <Self::Parameters<
5903                    '_,
5904                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5905                    .map(Self::new)
5906            }
5907        }
5908    };
5909    #[derive(serde::Serialize, serde::Deserialize)]
5910    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5911    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5912```solidity
5913error UUPSUnsupportedProxiableUUID(bytes32 slot);
5914```*/
5915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5916    #[derive(Clone)]
5917    pub struct UUPSUnsupportedProxiableUUID {
5918        #[allow(missing_docs)]
5919        pub slot: alloy::sol_types::private::FixedBytes<32>,
5920    }
5921    #[allow(
5922        non_camel_case_types,
5923        non_snake_case,
5924        clippy::pub_underscore_fields,
5925        clippy::style
5926    )]
5927    const _: () = {
5928        use alloy::sol_types as alloy_sol_types;
5929        #[doc(hidden)]
5930        #[allow(dead_code)]
5931        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5932        #[doc(hidden)]
5933        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5934        #[cfg(test)]
5935        #[allow(dead_code, unreachable_patterns)]
5936        fn _type_assertion(
5937            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5938        ) {
5939            match _t {
5940                alloy_sol_types::private::AssertTypeEq::<
5941                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5942                >(_) => {}
5943            }
5944        }
5945        #[automatically_derived]
5946        #[doc(hidden)]
5947        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
5948        for UnderlyingRustTuple<'_> {
5949            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5950                (value.slot,)
5951            }
5952        }
5953        #[automatically_derived]
5954        #[doc(hidden)]
5955        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5956        for UUPSUnsupportedProxiableUUID {
5957            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5958                Self { slot: tuple.0 }
5959            }
5960        }
5961        #[automatically_derived]
5962        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5963            type Parameters<'a> = UnderlyingSolTuple<'a>;
5964            type Token<'a> = <Self::Parameters<
5965                'a,
5966            > as alloy_sol_types::SolType>::Token<'a>;
5967            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5968            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5969            #[inline]
5970            fn new<'a>(
5971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5972            ) -> Self {
5973                tuple.into()
5974            }
5975            #[inline]
5976            fn tokenize(&self) -> Self::Token<'_> {
5977                (
5978                    <alloy::sol_types::sol_data::FixedBytes<
5979                        32,
5980                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5981                )
5982            }
5983            #[inline]
5984            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5985                <Self::Parameters<
5986                    '_,
5987                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5988                    .map(Self::new)
5989            }
5990        }
5991    };
5992    #[derive(serde::Serialize, serde::Deserialize)]
5993    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5994    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5995```solidity
5996error WrongStakeTableUsed();
5997```*/
5998    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5999    #[derive(Clone)]
6000    pub struct WrongStakeTableUsed;
6001    #[allow(
6002        non_camel_case_types,
6003        non_snake_case,
6004        clippy::pub_underscore_fields,
6005        clippy::style
6006    )]
6007    const _: () = {
6008        use alloy::sol_types as alloy_sol_types;
6009        #[doc(hidden)]
6010        #[allow(dead_code)]
6011        type UnderlyingSolTuple<'a> = ();
6012        #[doc(hidden)]
6013        type UnderlyingRustTuple<'a> = ();
6014        #[cfg(test)]
6015        #[allow(dead_code, unreachable_patterns)]
6016        fn _type_assertion(
6017            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6018        ) {
6019            match _t {
6020                alloy_sol_types::private::AssertTypeEq::<
6021                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6022                >(_) => {}
6023            }
6024        }
6025        #[automatically_derived]
6026        #[doc(hidden)]
6027        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6028            fn from(value: WrongStakeTableUsed) -> Self {
6029                ()
6030            }
6031        }
6032        #[automatically_derived]
6033        #[doc(hidden)]
6034        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6035            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6036                Self
6037            }
6038        }
6039        #[automatically_derived]
6040        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6041            type Parameters<'a> = UnderlyingSolTuple<'a>;
6042            type Token<'a> = <Self::Parameters<
6043                'a,
6044            > as alloy_sol_types::SolType>::Token<'a>;
6045            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6046            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6047            #[inline]
6048            fn new<'a>(
6049                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6050            ) -> Self {
6051                tuple.into()
6052            }
6053            #[inline]
6054            fn tokenize(&self) -> Self::Token<'_> {
6055                ()
6056            }
6057            #[inline]
6058            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6059                <Self::Parameters<
6060                    '_,
6061                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6062                    .map(Self::new)
6063            }
6064        }
6065    };
6066    #[derive(serde::Serialize, serde::Deserialize)]
6067    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6068    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6069```solidity
6070event Initialized(uint64 version);
6071```*/
6072    #[allow(
6073        non_camel_case_types,
6074        non_snake_case,
6075        clippy::pub_underscore_fields,
6076        clippy::style
6077    )]
6078    #[derive(Clone)]
6079    pub struct Initialized {
6080        #[allow(missing_docs)]
6081        pub version: u64,
6082    }
6083    #[allow(
6084        non_camel_case_types,
6085        non_snake_case,
6086        clippy::pub_underscore_fields,
6087        clippy::style
6088    )]
6089    const _: () = {
6090        use alloy::sol_types as alloy_sol_types;
6091        #[automatically_derived]
6092        impl alloy_sol_types::SolEvent for Initialized {
6093            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6094            type DataToken<'a> = <Self::DataTuple<
6095                'a,
6096            > as alloy_sol_types::SolType>::Token<'a>;
6097            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6098            const SIGNATURE: &'static str = "Initialized(uint64)";
6099            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6100                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6101                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6102                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6103            ]);
6104            const ANONYMOUS: bool = false;
6105            #[allow(unused_variables)]
6106            #[inline]
6107            fn new(
6108                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6109                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6110            ) -> Self {
6111                Self { version: data.0 }
6112            }
6113            #[inline]
6114            fn check_signature(
6115                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6116            ) -> alloy_sol_types::Result<()> {
6117                if topics.0 != Self::SIGNATURE_HASH {
6118                    return Err(
6119                        alloy_sol_types::Error::invalid_event_signature_hash(
6120                            Self::SIGNATURE,
6121                            topics.0,
6122                            Self::SIGNATURE_HASH,
6123                        ),
6124                    );
6125                }
6126                Ok(())
6127            }
6128            #[inline]
6129            fn tokenize_body(&self) -> Self::DataToken<'_> {
6130                (
6131                    <alloy::sol_types::sol_data::Uint<
6132                        64,
6133                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6134                )
6135            }
6136            #[inline]
6137            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6138                (Self::SIGNATURE_HASH.into(),)
6139            }
6140            #[inline]
6141            fn encode_topics_raw(
6142                &self,
6143                out: &mut [alloy_sol_types::abi::token::WordToken],
6144            ) -> alloy_sol_types::Result<()> {
6145                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6146                    return Err(alloy_sol_types::Error::Overrun);
6147                }
6148                out[0usize] = alloy_sol_types::abi::token::WordToken(
6149                    Self::SIGNATURE_HASH,
6150                );
6151                Ok(())
6152            }
6153        }
6154        #[automatically_derived]
6155        impl alloy_sol_types::private::IntoLogData for Initialized {
6156            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6157                From::from(self)
6158            }
6159            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6160                From::from(&self)
6161            }
6162        }
6163        #[automatically_derived]
6164        impl From<&Initialized> for alloy_sol_types::private::LogData {
6165            #[inline]
6166            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6167                alloy_sol_types::SolEvent::encode_log_data(this)
6168            }
6169        }
6170    };
6171    #[derive(serde::Serialize, serde::Deserialize)]
6172    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6173    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6174```solidity
6175event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6176```*/
6177    #[allow(
6178        non_camel_case_types,
6179        non_snake_case,
6180        clippy::pub_underscore_fields,
6181        clippy::style
6182    )]
6183    #[derive(Clone)]
6184    pub struct NewState {
6185        #[allow(missing_docs)]
6186        pub viewNum: u64,
6187        #[allow(missing_docs)]
6188        pub blockHeight: u64,
6189        #[allow(missing_docs)]
6190        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6191    }
6192    #[allow(
6193        non_camel_case_types,
6194        non_snake_case,
6195        clippy::pub_underscore_fields,
6196        clippy::style
6197    )]
6198    const _: () = {
6199        use alloy::sol_types as alloy_sol_types;
6200        #[automatically_derived]
6201        impl alloy_sol_types::SolEvent for NewState {
6202            type DataTuple<'a> = (BN254::ScalarField,);
6203            type DataToken<'a> = <Self::DataTuple<
6204                'a,
6205            > as alloy_sol_types::SolType>::Token<'a>;
6206            type TopicList = (
6207                alloy_sol_types::sol_data::FixedBytes<32>,
6208                alloy::sol_types::sol_data::Uint<64>,
6209                alloy::sol_types::sol_data::Uint<64>,
6210            );
6211            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6212            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6213                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6214                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6215                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6216            ]);
6217            const ANONYMOUS: bool = false;
6218            #[allow(unused_variables)]
6219            #[inline]
6220            fn new(
6221                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6222                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6223            ) -> Self {
6224                Self {
6225                    viewNum: topics.1,
6226                    blockHeight: topics.2,
6227                    blockCommRoot: data.0,
6228                }
6229            }
6230            #[inline]
6231            fn check_signature(
6232                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6233            ) -> alloy_sol_types::Result<()> {
6234                if topics.0 != Self::SIGNATURE_HASH {
6235                    return Err(
6236                        alloy_sol_types::Error::invalid_event_signature_hash(
6237                            Self::SIGNATURE,
6238                            topics.0,
6239                            Self::SIGNATURE_HASH,
6240                        ),
6241                    );
6242                }
6243                Ok(())
6244            }
6245            #[inline]
6246            fn tokenize_body(&self) -> Self::DataToken<'_> {
6247                (
6248                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6249                        &self.blockCommRoot,
6250                    ),
6251                )
6252            }
6253            #[inline]
6254            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6255                (
6256                    Self::SIGNATURE_HASH.into(),
6257                    self.viewNum.clone(),
6258                    self.blockHeight.clone(),
6259                )
6260            }
6261            #[inline]
6262            fn encode_topics_raw(
6263                &self,
6264                out: &mut [alloy_sol_types::abi::token::WordToken],
6265            ) -> alloy_sol_types::Result<()> {
6266                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6267                    return Err(alloy_sol_types::Error::Overrun);
6268                }
6269                out[0usize] = alloy_sol_types::abi::token::WordToken(
6270                    Self::SIGNATURE_HASH,
6271                );
6272                out[1usize] = <alloy::sol_types::sol_data::Uint<
6273                    64,
6274                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6275                out[2usize] = <alloy::sol_types::sol_data::Uint<
6276                    64,
6277                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6278                Ok(())
6279            }
6280        }
6281        #[automatically_derived]
6282        impl alloy_sol_types::private::IntoLogData for NewState {
6283            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6284                From::from(self)
6285            }
6286            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6287                From::from(&self)
6288            }
6289        }
6290        #[automatically_derived]
6291        impl From<&NewState> for alloy_sol_types::private::LogData {
6292            #[inline]
6293            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6294                alloy_sol_types::SolEvent::encode_log_data(this)
6295            }
6296        }
6297    };
6298    #[derive(serde::Serialize, serde::Deserialize)]
6299    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6300    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6301```solidity
6302event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6303```*/
6304    #[allow(
6305        non_camel_case_types,
6306        non_snake_case,
6307        clippy::pub_underscore_fields,
6308        clippy::style
6309    )]
6310    #[derive(Clone)]
6311    pub struct OwnershipTransferred {
6312        #[allow(missing_docs)]
6313        pub previousOwner: alloy::sol_types::private::Address,
6314        #[allow(missing_docs)]
6315        pub newOwner: alloy::sol_types::private::Address,
6316    }
6317    #[allow(
6318        non_camel_case_types,
6319        non_snake_case,
6320        clippy::pub_underscore_fields,
6321        clippy::style
6322    )]
6323    const _: () = {
6324        use alloy::sol_types as alloy_sol_types;
6325        #[automatically_derived]
6326        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6327            type DataTuple<'a> = ();
6328            type DataToken<'a> = <Self::DataTuple<
6329                'a,
6330            > as alloy_sol_types::SolType>::Token<'a>;
6331            type TopicList = (
6332                alloy_sol_types::sol_data::FixedBytes<32>,
6333                alloy::sol_types::sol_data::Address,
6334                alloy::sol_types::sol_data::Address,
6335            );
6336            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6337            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6338                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6339                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6340                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6341            ]);
6342            const ANONYMOUS: bool = false;
6343            #[allow(unused_variables)]
6344            #[inline]
6345            fn new(
6346                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6347                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6348            ) -> Self {
6349                Self {
6350                    previousOwner: topics.1,
6351                    newOwner: topics.2,
6352                }
6353            }
6354            #[inline]
6355            fn check_signature(
6356                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6357            ) -> alloy_sol_types::Result<()> {
6358                if topics.0 != Self::SIGNATURE_HASH {
6359                    return Err(
6360                        alloy_sol_types::Error::invalid_event_signature_hash(
6361                            Self::SIGNATURE,
6362                            topics.0,
6363                            Self::SIGNATURE_HASH,
6364                        ),
6365                    );
6366                }
6367                Ok(())
6368            }
6369            #[inline]
6370            fn tokenize_body(&self) -> Self::DataToken<'_> {
6371                ()
6372            }
6373            #[inline]
6374            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6375                (
6376                    Self::SIGNATURE_HASH.into(),
6377                    self.previousOwner.clone(),
6378                    self.newOwner.clone(),
6379                )
6380            }
6381            #[inline]
6382            fn encode_topics_raw(
6383                &self,
6384                out: &mut [alloy_sol_types::abi::token::WordToken],
6385            ) -> alloy_sol_types::Result<()> {
6386                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6387                    return Err(alloy_sol_types::Error::Overrun);
6388                }
6389                out[0usize] = alloy_sol_types::abi::token::WordToken(
6390                    Self::SIGNATURE_HASH,
6391                );
6392                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6393                    &self.previousOwner,
6394                );
6395                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6396                    &self.newOwner,
6397                );
6398                Ok(())
6399            }
6400        }
6401        #[automatically_derived]
6402        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6403            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6404                From::from(self)
6405            }
6406            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6407                From::from(&self)
6408            }
6409        }
6410        #[automatically_derived]
6411        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6412            #[inline]
6413            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6414                alloy_sol_types::SolEvent::encode_log_data(this)
6415            }
6416        }
6417    };
6418    #[derive(serde::Serialize, serde::Deserialize)]
6419    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6420    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6421```solidity
6422event PermissionedProverNotRequired();
6423```*/
6424    #[allow(
6425        non_camel_case_types,
6426        non_snake_case,
6427        clippy::pub_underscore_fields,
6428        clippy::style
6429    )]
6430    #[derive(Clone)]
6431    pub struct PermissionedProverNotRequired;
6432    #[allow(
6433        non_camel_case_types,
6434        non_snake_case,
6435        clippy::pub_underscore_fields,
6436        clippy::style
6437    )]
6438    const _: () = {
6439        use alloy::sol_types as alloy_sol_types;
6440        #[automatically_derived]
6441        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6442            type DataTuple<'a> = ();
6443            type DataToken<'a> = <Self::DataTuple<
6444                'a,
6445            > as alloy_sol_types::SolType>::Token<'a>;
6446            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6447            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6448            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6449                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6450                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6451                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6452            ]);
6453            const ANONYMOUS: bool = false;
6454            #[allow(unused_variables)]
6455            #[inline]
6456            fn new(
6457                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6458                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6459            ) -> Self {
6460                Self {}
6461            }
6462            #[inline]
6463            fn check_signature(
6464                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6465            ) -> alloy_sol_types::Result<()> {
6466                if topics.0 != Self::SIGNATURE_HASH {
6467                    return Err(
6468                        alloy_sol_types::Error::invalid_event_signature_hash(
6469                            Self::SIGNATURE,
6470                            topics.0,
6471                            Self::SIGNATURE_HASH,
6472                        ),
6473                    );
6474                }
6475                Ok(())
6476            }
6477            #[inline]
6478            fn tokenize_body(&self) -> Self::DataToken<'_> {
6479                ()
6480            }
6481            #[inline]
6482            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6483                (Self::SIGNATURE_HASH.into(),)
6484            }
6485            #[inline]
6486            fn encode_topics_raw(
6487                &self,
6488                out: &mut [alloy_sol_types::abi::token::WordToken],
6489            ) -> alloy_sol_types::Result<()> {
6490                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6491                    return Err(alloy_sol_types::Error::Overrun);
6492                }
6493                out[0usize] = alloy_sol_types::abi::token::WordToken(
6494                    Self::SIGNATURE_HASH,
6495                );
6496                Ok(())
6497            }
6498        }
6499        #[automatically_derived]
6500        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6501            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6502                From::from(self)
6503            }
6504            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6505                From::from(&self)
6506            }
6507        }
6508        #[automatically_derived]
6509        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6510            #[inline]
6511            fn from(
6512                this: &PermissionedProverNotRequired,
6513            ) -> alloy_sol_types::private::LogData {
6514                alloy_sol_types::SolEvent::encode_log_data(this)
6515            }
6516        }
6517    };
6518    #[derive(serde::Serialize, serde::Deserialize)]
6519    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6520    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6521```solidity
6522event PermissionedProverRequired(address permissionedProver);
6523```*/
6524    #[allow(
6525        non_camel_case_types,
6526        non_snake_case,
6527        clippy::pub_underscore_fields,
6528        clippy::style
6529    )]
6530    #[derive(Clone)]
6531    pub struct PermissionedProverRequired {
6532        #[allow(missing_docs)]
6533        pub permissionedProver: alloy::sol_types::private::Address,
6534    }
6535    #[allow(
6536        non_camel_case_types,
6537        non_snake_case,
6538        clippy::pub_underscore_fields,
6539        clippy::style
6540    )]
6541    const _: () = {
6542        use alloy::sol_types as alloy_sol_types;
6543        #[automatically_derived]
6544        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6545            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6546            type DataToken<'a> = <Self::DataTuple<
6547                'a,
6548            > as alloy_sol_types::SolType>::Token<'a>;
6549            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6550            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6551            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6552                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6553                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6554                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6555            ]);
6556            const ANONYMOUS: bool = false;
6557            #[allow(unused_variables)]
6558            #[inline]
6559            fn new(
6560                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6561                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6562            ) -> Self {
6563                Self { permissionedProver: data.0 }
6564            }
6565            #[inline]
6566            fn check_signature(
6567                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6568            ) -> alloy_sol_types::Result<()> {
6569                if topics.0 != Self::SIGNATURE_HASH {
6570                    return Err(
6571                        alloy_sol_types::Error::invalid_event_signature_hash(
6572                            Self::SIGNATURE,
6573                            topics.0,
6574                            Self::SIGNATURE_HASH,
6575                        ),
6576                    );
6577                }
6578                Ok(())
6579            }
6580            #[inline]
6581            fn tokenize_body(&self) -> Self::DataToken<'_> {
6582                (
6583                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6584                        &self.permissionedProver,
6585                    ),
6586                )
6587            }
6588            #[inline]
6589            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6590                (Self::SIGNATURE_HASH.into(),)
6591            }
6592            #[inline]
6593            fn encode_topics_raw(
6594                &self,
6595                out: &mut [alloy_sol_types::abi::token::WordToken],
6596            ) -> alloy_sol_types::Result<()> {
6597                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6598                    return Err(alloy_sol_types::Error::Overrun);
6599                }
6600                out[0usize] = alloy_sol_types::abi::token::WordToken(
6601                    Self::SIGNATURE_HASH,
6602                );
6603                Ok(())
6604            }
6605        }
6606        #[automatically_derived]
6607        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6608            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6609                From::from(self)
6610            }
6611            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6612                From::from(&self)
6613            }
6614        }
6615        #[automatically_derived]
6616        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6617            #[inline]
6618            fn from(
6619                this: &PermissionedProverRequired,
6620            ) -> alloy_sol_types::private::LogData {
6621                alloy_sol_types::SolEvent::encode_log_data(this)
6622            }
6623        }
6624    };
6625    #[derive(serde::Serialize, serde::Deserialize)]
6626    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6627    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6628```solidity
6629event Upgrade(address implementation);
6630```*/
6631    #[allow(
6632        non_camel_case_types,
6633        non_snake_case,
6634        clippy::pub_underscore_fields,
6635        clippy::style
6636    )]
6637    #[derive(Clone)]
6638    pub struct Upgrade {
6639        #[allow(missing_docs)]
6640        pub implementation: alloy::sol_types::private::Address,
6641    }
6642    #[allow(
6643        non_camel_case_types,
6644        non_snake_case,
6645        clippy::pub_underscore_fields,
6646        clippy::style
6647    )]
6648    const _: () = {
6649        use alloy::sol_types as alloy_sol_types;
6650        #[automatically_derived]
6651        impl alloy_sol_types::SolEvent for Upgrade {
6652            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6653            type DataToken<'a> = <Self::DataTuple<
6654                'a,
6655            > as alloy_sol_types::SolType>::Token<'a>;
6656            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6657            const SIGNATURE: &'static str = "Upgrade(address)";
6658            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6659                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6660                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6661                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6662            ]);
6663            const ANONYMOUS: bool = false;
6664            #[allow(unused_variables)]
6665            #[inline]
6666            fn new(
6667                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6668                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6669            ) -> Self {
6670                Self { implementation: data.0 }
6671            }
6672            #[inline]
6673            fn check_signature(
6674                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6675            ) -> alloy_sol_types::Result<()> {
6676                if topics.0 != Self::SIGNATURE_HASH {
6677                    return Err(
6678                        alloy_sol_types::Error::invalid_event_signature_hash(
6679                            Self::SIGNATURE,
6680                            topics.0,
6681                            Self::SIGNATURE_HASH,
6682                        ),
6683                    );
6684                }
6685                Ok(())
6686            }
6687            #[inline]
6688            fn tokenize_body(&self) -> Self::DataToken<'_> {
6689                (
6690                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6691                        &self.implementation,
6692                    ),
6693                )
6694            }
6695            #[inline]
6696            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6697                (Self::SIGNATURE_HASH.into(),)
6698            }
6699            #[inline]
6700            fn encode_topics_raw(
6701                &self,
6702                out: &mut [alloy_sol_types::abi::token::WordToken],
6703            ) -> alloy_sol_types::Result<()> {
6704                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6705                    return Err(alloy_sol_types::Error::Overrun);
6706                }
6707                out[0usize] = alloy_sol_types::abi::token::WordToken(
6708                    Self::SIGNATURE_HASH,
6709                );
6710                Ok(())
6711            }
6712        }
6713        #[automatically_derived]
6714        impl alloy_sol_types::private::IntoLogData for Upgrade {
6715            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6716                From::from(self)
6717            }
6718            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6719                From::from(&self)
6720            }
6721        }
6722        #[automatically_derived]
6723        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6724            #[inline]
6725            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6726                alloy_sol_types::SolEvent::encode_log_data(this)
6727            }
6728        }
6729    };
6730    #[derive(serde::Serialize, serde::Deserialize)]
6731    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6732    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6733```solidity
6734event Upgraded(address indexed implementation);
6735```*/
6736    #[allow(
6737        non_camel_case_types,
6738        non_snake_case,
6739        clippy::pub_underscore_fields,
6740        clippy::style
6741    )]
6742    #[derive(Clone)]
6743    pub struct Upgraded {
6744        #[allow(missing_docs)]
6745        pub implementation: alloy::sol_types::private::Address,
6746    }
6747    #[allow(
6748        non_camel_case_types,
6749        non_snake_case,
6750        clippy::pub_underscore_fields,
6751        clippy::style
6752    )]
6753    const _: () = {
6754        use alloy::sol_types as alloy_sol_types;
6755        #[automatically_derived]
6756        impl alloy_sol_types::SolEvent for Upgraded {
6757            type DataTuple<'a> = ();
6758            type DataToken<'a> = <Self::DataTuple<
6759                'a,
6760            > as alloy_sol_types::SolType>::Token<'a>;
6761            type TopicList = (
6762                alloy_sol_types::sol_data::FixedBytes<32>,
6763                alloy::sol_types::sol_data::Address,
6764            );
6765            const SIGNATURE: &'static str = "Upgraded(address)";
6766            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6767                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6768                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6769                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6770            ]);
6771            const ANONYMOUS: bool = false;
6772            #[allow(unused_variables)]
6773            #[inline]
6774            fn new(
6775                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6776                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6777            ) -> Self {
6778                Self { implementation: topics.1 }
6779            }
6780            #[inline]
6781            fn check_signature(
6782                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6783            ) -> alloy_sol_types::Result<()> {
6784                if topics.0 != Self::SIGNATURE_HASH {
6785                    return Err(
6786                        alloy_sol_types::Error::invalid_event_signature_hash(
6787                            Self::SIGNATURE,
6788                            topics.0,
6789                            Self::SIGNATURE_HASH,
6790                        ),
6791                    );
6792                }
6793                Ok(())
6794            }
6795            #[inline]
6796            fn tokenize_body(&self) -> Self::DataToken<'_> {
6797                ()
6798            }
6799            #[inline]
6800            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6801                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6802            }
6803            #[inline]
6804            fn encode_topics_raw(
6805                &self,
6806                out: &mut [alloy_sol_types::abi::token::WordToken],
6807            ) -> alloy_sol_types::Result<()> {
6808                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6809                    return Err(alloy_sol_types::Error::Overrun);
6810                }
6811                out[0usize] = alloy_sol_types::abi::token::WordToken(
6812                    Self::SIGNATURE_HASH,
6813                );
6814                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6815                    &self.implementation,
6816                );
6817                Ok(())
6818            }
6819        }
6820        #[automatically_derived]
6821        impl alloy_sol_types::private::IntoLogData for Upgraded {
6822            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6823                From::from(self)
6824            }
6825            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6826                From::from(&self)
6827            }
6828        }
6829        #[automatically_derived]
6830        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6831            #[inline]
6832            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6833                alloy_sol_types::SolEvent::encode_log_data(this)
6834            }
6835        }
6836    };
6837    #[derive(serde::Serialize, serde::Deserialize)]
6838    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6839    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6840```solidity
6841function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6842```*/
6843    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6844    #[derive(Clone)]
6845    pub struct UPGRADE_INTERFACE_VERSIONCall;
6846    #[derive(serde::Serialize, serde::Deserialize)]
6847    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6848    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6849    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6850    #[derive(Clone)]
6851    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6852        #[allow(missing_docs)]
6853        pub _0: alloy::sol_types::private::String,
6854    }
6855    #[allow(
6856        non_camel_case_types,
6857        non_snake_case,
6858        clippy::pub_underscore_fields,
6859        clippy::style
6860    )]
6861    const _: () = {
6862        use alloy::sol_types as alloy_sol_types;
6863        {
6864            #[doc(hidden)]
6865            #[allow(dead_code)]
6866            type UnderlyingSolTuple<'a> = ();
6867            #[doc(hidden)]
6868            type UnderlyingRustTuple<'a> = ();
6869            #[cfg(test)]
6870            #[allow(dead_code, unreachable_patterns)]
6871            fn _type_assertion(
6872                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6873            ) {
6874                match _t {
6875                    alloy_sol_types::private::AssertTypeEq::<
6876                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6877                    >(_) => {}
6878                }
6879            }
6880            #[automatically_derived]
6881            #[doc(hidden)]
6882            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
6883            for UnderlyingRustTuple<'_> {
6884                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6885                    ()
6886                }
6887            }
6888            #[automatically_derived]
6889            #[doc(hidden)]
6890            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6891            for UPGRADE_INTERFACE_VERSIONCall {
6892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6893                    Self
6894                }
6895            }
6896        }
6897        {
6898            #[doc(hidden)]
6899            #[allow(dead_code)]
6900            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6901            #[doc(hidden)]
6902            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6903            #[cfg(test)]
6904            #[allow(dead_code, unreachable_patterns)]
6905            fn _type_assertion(
6906                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6907            ) {
6908                match _t {
6909                    alloy_sol_types::private::AssertTypeEq::<
6910                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6911                    >(_) => {}
6912                }
6913            }
6914            #[automatically_derived]
6915            #[doc(hidden)]
6916            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6917            for UnderlyingRustTuple<'_> {
6918                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6919                    (value._0,)
6920                }
6921            }
6922            #[automatically_derived]
6923            #[doc(hidden)]
6924            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6925            for UPGRADE_INTERFACE_VERSIONReturn {
6926                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6927                    Self { _0: tuple.0 }
6928                }
6929            }
6930        }
6931        #[automatically_derived]
6932        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6933            type Parameters<'a> = ();
6934            type Token<'a> = <Self::Parameters<
6935                'a,
6936            > as alloy_sol_types::SolType>::Token<'a>;
6937            type Return = alloy::sol_types::private::String;
6938            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6939            type ReturnToken<'a> = <Self::ReturnTuple<
6940                'a,
6941            > as alloy_sol_types::SolType>::Token<'a>;
6942            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6943            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6944            #[inline]
6945            fn new<'a>(
6946                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6947            ) -> Self {
6948                tuple.into()
6949            }
6950            #[inline]
6951            fn tokenize(&self) -> Self::Token<'_> {
6952                ()
6953            }
6954            #[inline]
6955            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6956                (
6957                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6958                        ret,
6959                    ),
6960                )
6961            }
6962            #[inline]
6963            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6964                <Self::ReturnTuple<
6965                    '_,
6966                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6967                    .map(|r| {
6968                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6969                        r._0
6970                    })
6971            }
6972            #[inline]
6973            fn abi_decode_returns_validate(
6974                data: &[u8],
6975            ) -> alloy_sol_types::Result<Self::Return> {
6976                <Self::ReturnTuple<
6977                    '_,
6978                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6979                    .map(|r| {
6980                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6981                        r._0
6982                    })
6983            }
6984        }
6985    };
6986    #[derive(serde::Serialize, serde::Deserialize)]
6987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6988    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6989```solidity
6990function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6991```*/
6992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6993    #[derive(Clone)]
6994    pub struct _getVkCall;
6995    #[derive(serde::Serialize, serde::Deserialize)]
6996    #[derive()]
6997    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6998    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6999    #[derive(Clone)]
7000    pub struct _getVkReturn {
7001        #[allow(missing_docs)]
7002        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7003    }
7004    #[allow(
7005        non_camel_case_types,
7006        non_snake_case,
7007        clippy::pub_underscore_fields,
7008        clippy::style
7009    )]
7010    const _: () = {
7011        use alloy::sol_types as alloy_sol_types;
7012        {
7013            #[doc(hidden)]
7014            #[allow(dead_code)]
7015            type UnderlyingSolTuple<'a> = ();
7016            #[doc(hidden)]
7017            type UnderlyingRustTuple<'a> = ();
7018            #[cfg(test)]
7019            #[allow(dead_code, unreachable_patterns)]
7020            fn _type_assertion(
7021                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7022            ) {
7023                match _t {
7024                    alloy_sol_types::private::AssertTypeEq::<
7025                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7026                    >(_) => {}
7027                }
7028            }
7029            #[automatically_derived]
7030            #[doc(hidden)]
7031            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7032                fn from(value: _getVkCall) -> Self {
7033                    ()
7034                }
7035            }
7036            #[automatically_derived]
7037            #[doc(hidden)]
7038            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7039                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7040                    Self
7041                }
7042            }
7043        }
7044        {
7045            #[doc(hidden)]
7046            #[allow(dead_code)]
7047            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7048            #[doc(hidden)]
7049            type UnderlyingRustTuple<'a> = (
7050                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7051            );
7052            #[cfg(test)]
7053            #[allow(dead_code, unreachable_patterns)]
7054            fn _type_assertion(
7055                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7056            ) {
7057                match _t {
7058                    alloy_sol_types::private::AssertTypeEq::<
7059                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7060                    >(_) => {}
7061                }
7062            }
7063            #[automatically_derived]
7064            #[doc(hidden)]
7065            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7066                fn from(value: _getVkReturn) -> Self {
7067                    (value.vk,)
7068                }
7069            }
7070            #[automatically_derived]
7071            #[doc(hidden)]
7072            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7073                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7074                    Self { vk: tuple.0 }
7075                }
7076            }
7077        }
7078        #[automatically_derived]
7079        impl alloy_sol_types::SolCall for _getVkCall {
7080            type Parameters<'a> = ();
7081            type Token<'a> = <Self::Parameters<
7082                'a,
7083            > as alloy_sol_types::SolType>::Token<'a>;
7084            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7085            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7086            type ReturnToken<'a> = <Self::ReturnTuple<
7087                'a,
7088            > as alloy_sol_types::SolType>::Token<'a>;
7089            const SIGNATURE: &'static str = "_getVk()";
7090            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7091            #[inline]
7092            fn new<'a>(
7093                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7094            ) -> Self {
7095                tuple.into()
7096            }
7097            #[inline]
7098            fn tokenize(&self) -> Self::Token<'_> {
7099                ()
7100            }
7101            #[inline]
7102            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7103                (
7104                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7105                        ret,
7106                    ),
7107                )
7108            }
7109            #[inline]
7110            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7111                <Self::ReturnTuple<
7112                    '_,
7113                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7114                    .map(|r| {
7115                        let r: _getVkReturn = r.into();
7116                        r.vk
7117                    })
7118            }
7119            #[inline]
7120            fn abi_decode_returns_validate(
7121                data: &[u8],
7122            ) -> alloy_sol_types::Result<Self::Return> {
7123                <Self::ReturnTuple<
7124                    '_,
7125                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7126                    .map(|r| {
7127                        let r: _getVkReturn = r.into();
7128                        r.vk
7129                    })
7130            }
7131        }
7132    };
7133    #[derive(serde::Serialize, serde::Deserialize)]
7134    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7135    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7136```solidity
7137function currentBlockNumber() external view returns (uint256);
7138```*/
7139    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7140    #[derive(Clone)]
7141    pub struct currentBlockNumberCall;
7142    #[derive(serde::Serialize, serde::Deserialize)]
7143    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7144    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7146    #[derive(Clone)]
7147    pub struct currentBlockNumberReturn {
7148        #[allow(missing_docs)]
7149        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7150    }
7151    #[allow(
7152        non_camel_case_types,
7153        non_snake_case,
7154        clippy::pub_underscore_fields,
7155        clippy::style
7156    )]
7157    const _: () = {
7158        use alloy::sol_types as alloy_sol_types;
7159        {
7160            #[doc(hidden)]
7161            #[allow(dead_code)]
7162            type UnderlyingSolTuple<'a> = ();
7163            #[doc(hidden)]
7164            type UnderlyingRustTuple<'a> = ();
7165            #[cfg(test)]
7166            #[allow(dead_code, unreachable_patterns)]
7167            fn _type_assertion(
7168                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7169            ) {
7170                match _t {
7171                    alloy_sol_types::private::AssertTypeEq::<
7172                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7173                    >(_) => {}
7174                }
7175            }
7176            #[automatically_derived]
7177            #[doc(hidden)]
7178            impl ::core::convert::From<currentBlockNumberCall>
7179            for UnderlyingRustTuple<'_> {
7180                fn from(value: currentBlockNumberCall) -> Self {
7181                    ()
7182                }
7183            }
7184            #[automatically_derived]
7185            #[doc(hidden)]
7186            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7187            for currentBlockNumberCall {
7188                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7189                    Self
7190                }
7191            }
7192        }
7193        {
7194            #[doc(hidden)]
7195            #[allow(dead_code)]
7196            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7197            #[doc(hidden)]
7198            type UnderlyingRustTuple<'a> = (
7199                alloy::sol_types::private::primitives::aliases::U256,
7200            );
7201            #[cfg(test)]
7202            #[allow(dead_code, unreachable_patterns)]
7203            fn _type_assertion(
7204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7205            ) {
7206                match _t {
7207                    alloy_sol_types::private::AssertTypeEq::<
7208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7209                    >(_) => {}
7210                }
7211            }
7212            #[automatically_derived]
7213            #[doc(hidden)]
7214            impl ::core::convert::From<currentBlockNumberReturn>
7215            for UnderlyingRustTuple<'_> {
7216                fn from(value: currentBlockNumberReturn) -> Self {
7217                    (value._0,)
7218                }
7219            }
7220            #[automatically_derived]
7221            #[doc(hidden)]
7222            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7223            for currentBlockNumberReturn {
7224                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7225                    Self { _0: tuple.0 }
7226                }
7227            }
7228        }
7229        #[automatically_derived]
7230        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7231            type Parameters<'a> = ();
7232            type Token<'a> = <Self::Parameters<
7233                'a,
7234            > as alloy_sol_types::SolType>::Token<'a>;
7235            type Return = alloy::sol_types::private::primitives::aliases::U256;
7236            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7237            type ReturnToken<'a> = <Self::ReturnTuple<
7238                'a,
7239            > as alloy_sol_types::SolType>::Token<'a>;
7240            const SIGNATURE: &'static str = "currentBlockNumber()";
7241            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7242            #[inline]
7243            fn new<'a>(
7244                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7245            ) -> Self {
7246                tuple.into()
7247            }
7248            #[inline]
7249            fn tokenize(&self) -> Self::Token<'_> {
7250                ()
7251            }
7252            #[inline]
7253            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7254                (
7255                    <alloy::sol_types::sol_data::Uint<
7256                        256,
7257                    > as alloy_sol_types::SolType>::tokenize(ret),
7258                )
7259            }
7260            #[inline]
7261            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7262                <Self::ReturnTuple<
7263                    '_,
7264                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7265                    .map(|r| {
7266                        let r: currentBlockNumberReturn = r.into();
7267                        r._0
7268                    })
7269            }
7270            #[inline]
7271            fn abi_decode_returns_validate(
7272                data: &[u8],
7273            ) -> alloy_sol_types::Result<Self::Return> {
7274                <Self::ReturnTuple<
7275                    '_,
7276                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7277                    .map(|r| {
7278                        let r: currentBlockNumberReturn = r.into();
7279                        r._0
7280                    })
7281            }
7282        }
7283    };
7284    #[derive(serde::Serialize, serde::Deserialize)]
7285    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7286    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7287```solidity
7288function disablePermissionedProverMode() external;
7289```*/
7290    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7291    #[derive(Clone)]
7292    pub struct disablePermissionedProverModeCall;
7293    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7294    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7295    #[derive(Clone)]
7296    pub struct disablePermissionedProverModeReturn {}
7297    #[allow(
7298        non_camel_case_types,
7299        non_snake_case,
7300        clippy::pub_underscore_fields,
7301        clippy::style
7302    )]
7303    const _: () = {
7304        use alloy::sol_types as alloy_sol_types;
7305        {
7306            #[doc(hidden)]
7307            #[allow(dead_code)]
7308            type UnderlyingSolTuple<'a> = ();
7309            #[doc(hidden)]
7310            type UnderlyingRustTuple<'a> = ();
7311            #[cfg(test)]
7312            #[allow(dead_code, unreachable_patterns)]
7313            fn _type_assertion(
7314                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7315            ) {
7316                match _t {
7317                    alloy_sol_types::private::AssertTypeEq::<
7318                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7319                    >(_) => {}
7320                }
7321            }
7322            #[automatically_derived]
7323            #[doc(hidden)]
7324            impl ::core::convert::From<disablePermissionedProverModeCall>
7325            for UnderlyingRustTuple<'_> {
7326                fn from(value: disablePermissionedProverModeCall) -> Self {
7327                    ()
7328                }
7329            }
7330            #[automatically_derived]
7331            #[doc(hidden)]
7332            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7333            for disablePermissionedProverModeCall {
7334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7335                    Self
7336                }
7337            }
7338        }
7339        {
7340            #[doc(hidden)]
7341            #[allow(dead_code)]
7342            type UnderlyingSolTuple<'a> = ();
7343            #[doc(hidden)]
7344            type UnderlyingRustTuple<'a> = ();
7345            #[cfg(test)]
7346            #[allow(dead_code, unreachable_patterns)]
7347            fn _type_assertion(
7348                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7349            ) {
7350                match _t {
7351                    alloy_sol_types::private::AssertTypeEq::<
7352                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7353                    >(_) => {}
7354                }
7355            }
7356            #[automatically_derived]
7357            #[doc(hidden)]
7358            impl ::core::convert::From<disablePermissionedProverModeReturn>
7359            for UnderlyingRustTuple<'_> {
7360                fn from(value: disablePermissionedProverModeReturn) -> Self {
7361                    ()
7362                }
7363            }
7364            #[automatically_derived]
7365            #[doc(hidden)]
7366            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7367            for disablePermissionedProverModeReturn {
7368                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7369                    Self {}
7370                }
7371            }
7372        }
7373        impl disablePermissionedProverModeReturn {
7374            fn _tokenize(
7375                &self,
7376            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7377                '_,
7378            > {
7379                ()
7380            }
7381        }
7382        #[automatically_derived]
7383        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7384            type Parameters<'a> = ();
7385            type Token<'a> = <Self::Parameters<
7386                'a,
7387            > as alloy_sol_types::SolType>::Token<'a>;
7388            type Return = disablePermissionedProverModeReturn;
7389            type ReturnTuple<'a> = ();
7390            type ReturnToken<'a> = <Self::ReturnTuple<
7391                'a,
7392            > as alloy_sol_types::SolType>::Token<'a>;
7393            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7394            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7395            #[inline]
7396            fn new<'a>(
7397                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7398            ) -> Self {
7399                tuple.into()
7400            }
7401            #[inline]
7402            fn tokenize(&self) -> Self::Token<'_> {
7403                ()
7404            }
7405            #[inline]
7406            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7407                disablePermissionedProverModeReturn::_tokenize(ret)
7408            }
7409            #[inline]
7410            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7411                <Self::ReturnTuple<
7412                    '_,
7413                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7414                    .map(Into::into)
7415            }
7416            #[inline]
7417            fn abi_decode_returns_validate(
7418                data: &[u8],
7419            ) -> alloy_sol_types::Result<Self::Return> {
7420                <Self::ReturnTuple<
7421                    '_,
7422                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7423                    .map(Into::into)
7424            }
7425        }
7426    };
7427    #[derive(serde::Serialize, serde::Deserialize)]
7428    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7429    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7430```solidity
7431function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7432```*/
7433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7434    #[derive(Clone)]
7435    pub struct finalizedStateCall;
7436    #[derive(serde::Serialize, serde::Deserialize)]
7437    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7438    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7439    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7440    #[derive(Clone)]
7441    pub struct finalizedStateReturn {
7442        #[allow(missing_docs)]
7443        pub viewNum: u64,
7444        #[allow(missing_docs)]
7445        pub blockHeight: u64,
7446        #[allow(missing_docs)]
7447        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7448    }
7449    #[allow(
7450        non_camel_case_types,
7451        non_snake_case,
7452        clippy::pub_underscore_fields,
7453        clippy::style
7454    )]
7455    const _: () = {
7456        use alloy::sol_types as alloy_sol_types;
7457        {
7458            #[doc(hidden)]
7459            #[allow(dead_code)]
7460            type UnderlyingSolTuple<'a> = ();
7461            #[doc(hidden)]
7462            type UnderlyingRustTuple<'a> = ();
7463            #[cfg(test)]
7464            #[allow(dead_code, unreachable_patterns)]
7465            fn _type_assertion(
7466                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7467            ) {
7468                match _t {
7469                    alloy_sol_types::private::AssertTypeEq::<
7470                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7471                    >(_) => {}
7472                }
7473            }
7474            #[automatically_derived]
7475            #[doc(hidden)]
7476            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7477                fn from(value: finalizedStateCall) -> Self {
7478                    ()
7479                }
7480            }
7481            #[automatically_derived]
7482            #[doc(hidden)]
7483            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7484                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7485                    Self
7486                }
7487            }
7488        }
7489        {
7490            #[doc(hidden)]
7491            #[allow(dead_code)]
7492            type UnderlyingSolTuple<'a> = (
7493                alloy::sol_types::sol_data::Uint<64>,
7494                alloy::sol_types::sol_data::Uint<64>,
7495                BN254::ScalarField,
7496            );
7497            #[doc(hidden)]
7498            type UnderlyingRustTuple<'a> = (
7499                u64,
7500                u64,
7501                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7502            );
7503            #[cfg(test)]
7504            #[allow(dead_code, unreachable_patterns)]
7505            fn _type_assertion(
7506                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7507            ) {
7508                match _t {
7509                    alloy_sol_types::private::AssertTypeEq::<
7510                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7511                    >(_) => {}
7512                }
7513            }
7514            #[automatically_derived]
7515            #[doc(hidden)]
7516            impl ::core::convert::From<finalizedStateReturn>
7517            for UnderlyingRustTuple<'_> {
7518                fn from(value: finalizedStateReturn) -> Self {
7519                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7520                }
7521            }
7522            #[automatically_derived]
7523            #[doc(hidden)]
7524            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7525            for finalizedStateReturn {
7526                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7527                    Self {
7528                        viewNum: tuple.0,
7529                        blockHeight: tuple.1,
7530                        blockCommRoot: tuple.2,
7531                    }
7532                }
7533            }
7534        }
7535        impl finalizedStateReturn {
7536            fn _tokenize(
7537                &self,
7538            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7539                (
7540                    <alloy::sol_types::sol_data::Uint<
7541                        64,
7542                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7543                    <alloy::sol_types::sol_data::Uint<
7544                        64,
7545                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7546                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7547                        &self.blockCommRoot,
7548                    ),
7549                )
7550            }
7551        }
7552        #[automatically_derived]
7553        impl alloy_sol_types::SolCall for finalizedStateCall {
7554            type Parameters<'a> = ();
7555            type Token<'a> = <Self::Parameters<
7556                'a,
7557            > as alloy_sol_types::SolType>::Token<'a>;
7558            type Return = finalizedStateReturn;
7559            type ReturnTuple<'a> = (
7560                alloy::sol_types::sol_data::Uint<64>,
7561                alloy::sol_types::sol_data::Uint<64>,
7562                BN254::ScalarField,
7563            );
7564            type ReturnToken<'a> = <Self::ReturnTuple<
7565                'a,
7566            > as alloy_sol_types::SolType>::Token<'a>;
7567            const SIGNATURE: &'static str = "finalizedState()";
7568            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7569            #[inline]
7570            fn new<'a>(
7571                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7572            ) -> Self {
7573                tuple.into()
7574            }
7575            #[inline]
7576            fn tokenize(&self) -> Self::Token<'_> {
7577                ()
7578            }
7579            #[inline]
7580            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7581                finalizedStateReturn::_tokenize(ret)
7582            }
7583            #[inline]
7584            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7585                <Self::ReturnTuple<
7586                    '_,
7587                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7588                    .map(Into::into)
7589            }
7590            #[inline]
7591            fn abi_decode_returns_validate(
7592                data: &[u8],
7593            ) -> alloy_sol_types::Result<Self::Return> {
7594                <Self::ReturnTuple<
7595                    '_,
7596                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7597                    .map(Into::into)
7598            }
7599        }
7600    };
7601    #[derive(serde::Serialize, serde::Deserialize)]
7602    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7603    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7604```solidity
7605function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7606```*/
7607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7608    #[derive(Clone)]
7609    pub struct genesisStakeTableStateCall;
7610    #[derive(serde::Serialize, serde::Deserialize)]
7611    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7612    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7613    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7614    #[derive(Clone)]
7615    pub struct genesisStakeTableStateReturn {
7616        #[allow(missing_docs)]
7617        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7618        #[allow(missing_docs)]
7619        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7620        #[allow(missing_docs)]
7621        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7622        #[allow(missing_docs)]
7623        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7624    }
7625    #[allow(
7626        non_camel_case_types,
7627        non_snake_case,
7628        clippy::pub_underscore_fields,
7629        clippy::style
7630    )]
7631    const _: () = {
7632        use alloy::sol_types as alloy_sol_types;
7633        {
7634            #[doc(hidden)]
7635            #[allow(dead_code)]
7636            type UnderlyingSolTuple<'a> = ();
7637            #[doc(hidden)]
7638            type UnderlyingRustTuple<'a> = ();
7639            #[cfg(test)]
7640            #[allow(dead_code, unreachable_patterns)]
7641            fn _type_assertion(
7642                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7643            ) {
7644                match _t {
7645                    alloy_sol_types::private::AssertTypeEq::<
7646                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7647                    >(_) => {}
7648                }
7649            }
7650            #[automatically_derived]
7651            #[doc(hidden)]
7652            impl ::core::convert::From<genesisStakeTableStateCall>
7653            for UnderlyingRustTuple<'_> {
7654                fn from(value: genesisStakeTableStateCall) -> Self {
7655                    ()
7656                }
7657            }
7658            #[automatically_derived]
7659            #[doc(hidden)]
7660            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7661            for genesisStakeTableStateCall {
7662                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7663                    Self
7664                }
7665            }
7666        }
7667        {
7668            #[doc(hidden)]
7669            #[allow(dead_code)]
7670            type UnderlyingSolTuple<'a> = (
7671                alloy::sol_types::sol_data::Uint<256>,
7672                BN254::ScalarField,
7673                BN254::ScalarField,
7674                BN254::ScalarField,
7675            );
7676            #[doc(hidden)]
7677            type UnderlyingRustTuple<'a> = (
7678                alloy::sol_types::private::primitives::aliases::U256,
7679                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7680                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7681                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7682            );
7683            #[cfg(test)]
7684            #[allow(dead_code, unreachable_patterns)]
7685            fn _type_assertion(
7686                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7687            ) {
7688                match _t {
7689                    alloy_sol_types::private::AssertTypeEq::<
7690                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7691                    >(_) => {}
7692                }
7693            }
7694            #[automatically_derived]
7695            #[doc(hidden)]
7696            impl ::core::convert::From<genesisStakeTableStateReturn>
7697            for UnderlyingRustTuple<'_> {
7698                fn from(value: genesisStakeTableStateReturn) -> Self {
7699                    (
7700                        value.threshold,
7701                        value.blsKeyComm,
7702                        value.schnorrKeyComm,
7703                        value.amountComm,
7704                    )
7705                }
7706            }
7707            #[automatically_derived]
7708            #[doc(hidden)]
7709            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7710            for genesisStakeTableStateReturn {
7711                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7712                    Self {
7713                        threshold: tuple.0,
7714                        blsKeyComm: tuple.1,
7715                        schnorrKeyComm: tuple.2,
7716                        amountComm: tuple.3,
7717                    }
7718                }
7719            }
7720        }
7721        impl genesisStakeTableStateReturn {
7722            fn _tokenize(
7723                &self,
7724            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
7725                '_,
7726            > {
7727                (
7728                    <alloy::sol_types::sol_data::Uint<
7729                        256,
7730                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
7731                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7732                        &self.blsKeyComm,
7733                    ),
7734                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7735                        &self.schnorrKeyComm,
7736                    ),
7737                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7738                        &self.amountComm,
7739                    ),
7740                )
7741            }
7742        }
7743        #[automatically_derived]
7744        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7745            type Parameters<'a> = ();
7746            type Token<'a> = <Self::Parameters<
7747                'a,
7748            > as alloy_sol_types::SolType>::Token<'a>;
7749            type Return = genesisStakeTableStateReturn;
7750            type ReturnTuple<'a> = (
7751                alloy::sol_types::sol_data::Uint<256>,
7752                BN254::ScalarField,
7753                BN254::ScalarField,
7754                BN254::ScalarField,
7755            );
7756            type ReturnToken<'a> = <Self::ReturnTuple<
7757                'a,
7758            > as alloy_sol_types::SolType>::Token<'a>;
7759            const SIGNATURE: &'static str = "genesisStakeTableState()";
7760            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7761            #[inline]
7762            fn new<'a>(
7763                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7764            ) -> Self {
7765                tuple.into()
7766            }
7767            #[inline]
7768            fn tokenize(&self) -> Self::Token<'_> {
7769                ()
7770            }
7771            #[inline]
7772            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7773                genesisStakeTableStateReturn::_tokenize(ret)
7774            }
7775            #[inline]
7776            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7777                <Self::ReturnTuple<
7778                    '_,
7779                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7780                    .map(Into::into)
7781            }
7782            #[inline]
7783            fn abi_decode_returns_validate(
7784                data: &[u8],
7785            ) -> alloy_sol_types::Result<Self::Return> {
7786                <Self::ReturnTuple<
7787                    '_,
7788                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7789                    .map(Into::into)
7790            }
7791        }
7792    };
7793    #[derive(serde::Serialize, serde::Deserialize)]
7794    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7795    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7796```solidity
7797function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7798```*/
7799    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7800    #[derive(Clone)]
7801    pub struct genesisStateCall;
7802    #[derive(serde::Serialize, serde::Deserialize)]
7803    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7804    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7805    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7806    #[derive(Clone)]
7807    pub struct genesisStateReturn {
7808        #[allow(missing_docs)]
7809        pub viewNum: u64,
7810        #[allow(missing_docs)]
7811        pub blockHeight: u64,
7812        #[allow(missing_docs)]
7813        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7814    }
7815    #[allow(
7816        non_camel_case_types,
7817        non_snake_case,
7818        clippy::pub_underscore_fields,
7819        clippy::style
7820    )]
7821    const _: () = {
7822        use alloy::sol_types as alloy_sol_types;
7823        {
7824            #[doc(hidden)]
7825            #[allow(dead_code)]
7826            type UnderlyingSolTuple<'a> = ();
7827            #[doc(hidden)]
7828            type UnderlyingRustTuple<'a> = ();
7829            #[cfg(test)]
7830            #[allow(dead_code, unreachable_patterns)]
7831            fn _type_assertion(
7832                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7833            ) {
7834                match _t {
7835                    alloy_sol_types::private::AssertTypeEq::<
7836                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7837                    >(_) => {}
7838                }
7839            }
7840            #[automatically_derived]
7841            #[doc(hidden)]
7842            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7843                fn from(value: genesisStateCall) -> Self {
7844                    ()
7845                }
7846            }
7847            #[automatically_derived]
7848            #[doc(hidden)]
7849            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7850                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7851                    Self
7852                }
7853            }
7854        }
7855        {
7856            #[doc(hidden)]
7857            #[allow(dead_code)]
7858            type UnderlyingSolTuple<'a> = (
7859                alloy::sol_types::sol_data::Uint<64>,
7860                alloy::sol_types::sol_data::Uint<64>,
7861                BN254::ScalarField,
7862            );
7863            #[doc(hidden)]
7864            type UnderlyingRustTuple<'a> = (
7865                u64,
7866                u64,
7867                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7868            );
7869            #[cfg(test)]
7870            #[allow(dead_code, unreachable_patterns)]
7871            fn _type_assertion(
7872                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7873            ) {
7874                match _t {
7875                    alloy_sol_types::private::AssertTypeEq::<
7876                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7877                    >(_) => {}
7878                }
7879            }
7880            #[automatically_derived]
7881            #[doc(hidden)]
7882            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7883                fn from(value: genesisStateReturn) -> Self {
7884                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7885                }
7886            }
7887            #[automatically_derived]
7888            #[doc(hidden)]
7889            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7890                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7891                    Self {
7892                        viewNum: tuple.0,
7893                        blockHeight: tuple.1,
7894                        blockCommRoot: tuple.2,
7895                    }
7896                }
7897            }
7898        }
7899        impl genesisStateReturn {
7900            fn _tokenize(
7901                &self,
7902            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7903                (
7904                    <alloy::sol_types::sol_data::Uint<
7905                        64,
7906                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7907                    <alloy::sol_types::sol_data::Uint<
7908                        64,
7909                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7910                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7911                        &self.blockCommRoot,
7912                    ),
7913                )
7914            }
7915        }
7916        #[automatically_derived]
7917        impl alloy_sol_types::SolCall for genesisStateCall {
7918            type Parameters<'a> = ();
7919            type Token<'a> = <Self::Parameters<
7920                'a,
7921            > as alloy_sol_types::SolType>::Token<'a>;
7922            type Return = genesisStateReturn;
7923            type ReturnTuple<'a> = (
7924                alloy::sol_types::sol_data::Uint<64>,
7925                alloy::sol_types::sol_data::Uint<64>,
7926                BN254::ScalarField,
7927            );
7928            type ReturnToken<'a> = <Self::ReturnTuple<
7929                'a,
7930            > as alloy_sol_types::SolType>::Token<'a>;
7931            const SIGNATURE: &'static str = "genesisState()";
7932            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7933            #[inline]
7934            fn new<'a>(
7935                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7936            ) -> Self {
7937                tuple.into()
7938            }
7939            #[inline]
7940            fn tokenize(&self) -> Self::Token<'_> {
7941                ()
7942            }
7943            #[inline]
7944            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7945                genesisStateReturn::_tokenize(ret)
7946            }
7947            #[inline]
7948            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7949                <Self::ReturnTuple<
7950                    '_,
7951                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7952                    .map(Into::into)
7953            }
7954            #[inline]
7955            fn abi_decode_returns_validate(
7956                data: &[u8],
7957            ) -> alloy_sol_types::Result<Self::Return> {
7958                <Self::ReturnTuple<
7959                    '_,
7960                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7961                    .map(Into::into)
7962            }
7963        }
7964    };
7965    #[derive(serde::Serialize, serde::Deserialize)]
7966    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7967    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7968```solidity
7969function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7970```*/
7971    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7972    #[derive(Clone)]
7973    pub struct getHotShotCommitmentCall {
7974        #[allow(missing_docs)]
7975        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7976    }
7977    #[derive(serde::Serialize, serde::Deserialize)]
7978    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7979    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7980    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7981    #[derive(Clone)]
7982    pub struct getHotShotCommitmentReturn {
7983        #[allow(missing_docs)]
7984        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7985        #[allow(missing_docs)]
7986        pub hotshotBlockHeight: u64,
7987    }
7988    #[allow(
7989        non_camel_case_types,
7990        non_snake_case,
7991        clippy::pub_underscore_fields,
7992        clippy::style
7993    )]
7994    const _: () = {
7995        use alloy::sol_types as alloy_sol_types;
7996        {
7997            #[doc(hidden)]
7998            #[allow(dead_code)]
7999            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8000            #[doc(hidden)]
8001            type UnderlyingRustTuple<'a> = (
8002                alloy::sol_types::private::primitives::aliases::U256,
8003            );
8004            #[cfg(test)]
8005            #[allow(dead_code, unreachable_patterns)]
8006            fn _type_assertion(
8007                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8008            ) {
8009                match _t {
8010                    alloy_sol_types::private::AssertTypeEq::<
8011                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8012                    >(_) => {}
8013                }
8014            }
8015            #[automatically_derived]
8016            #[doc(hidden)]
8017            impl ::core::convert::From<getHotShotCommitmentCall>
8018            for UnderlyingRustTuple<'_> {
8019                fn from(value: getHotShotCommitmentCall) -> Self {
8020                    (value.hotShotBlockHeight,)
8021                }
8022            }
8023            #[automatically_derived]
8024            #[doc(hidden)]
8025            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8026            for getHotShotCommitmentCall {
8027                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8028                    Self {
8029                        hotShotBlockHeight: tuple.0,
8030                    }
8031                }
8032            }
8033        }
8034        {
8035            #[doc(hidden)]
8036            #[allow(dead_code)]
8037            type UnderlyingSolTuple<'a> = (
8038                BN254::ScalarField,
8039                alloy::sol_types::sol_data::Uint<64>,
8040            );
8041            #[doc(hidden)]
8042            type UnderlyingRustTuple<'a> = (
8043                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8044                u64,
8045            );
8046            #[cfg(test)]
8047            #[allow(dead_code, unreachable_patterns)]
8048            fn _type_assertion(
8049                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8050            ) {
8051                match _t {
8052                    alloy_sol_types::private::AssertTypeEq::<
8053                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8054                    >(_) => {}
8055                }
8056            }
8057            #[automatically_derived]
8058            #[doc(hidden)]
8059            impl ::core::convert::From<getHotShotCommitmentReturn>
8060            for UnderlyingRustTuple<'_> {
8061                fn from(value: getHotShotCommitmentReturn) -> Self {
8062                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8063                }
8064            }
8065            #[automatically_derived]
8066            #[doc(hidden)]
8067            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8068            for getHotShotCommitmentReturn {
8069                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8070                    Self {
8071                        hotShotBlockCommRoot: tuple.0,
8072                        hotshotBlockHeight: tuple.1,
8073                    }
8074                }
8075            }
8076        }
8077        impl getHotShotCommitmentReturn {
8078            fn _tokenize(
8079                &self,
8080            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
8081                '_,
8082            > {
8083                (
8084                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8085                        &self.hotShotBlockCommRoot,
8086                    ),
8087                    <alloy::sol_types::sol_data::Uint<
8088                        64,
8089                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
8090                )
8091            }
8092        }
8093        #[automatically_derived]
8094        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8095            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8096            type Token<'a> = <Self::Parameters<
8097                'a,
8098            > as alloy_sol_types::SolType>::Token<'a>;
8099            type Return = getHotShotCommitmentReturn;
8100            type ReturnTuple<'a> = (
8101                BN254::ScalarField,
8102                alloy::sol_types::sol_data::Uint<64>,
8103            );
8104            type ReturnToken<'a> = <Self::ReturnTuple<
8105                'a,
8106            > as alloy_sol_types::SolType>::Token<'a>;
8107            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8108            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
8109            #[inline]
8110            fn new<'a>(
8111                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8112            ) -> Self {
8113                tuple.into()
8114            }
8115            #[inline]
8116            fn tokenize(&self) -> Self::Token<'_> {
8117                (
8118                    <alloy::sol_types::sol_data::Uint<
8119                        256,
8120                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8121                )
8122            }
8123            #[inline]
8124            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8125                getHotShotCommitmentReturn::_tokenize(ret)
8126            }
8127            #[inline]
8128            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8129                <Self::ReturnTuple<
8130                    '_,
8131                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8132                    .map(Into::into)
8133            }
8134            #[inline]
8135            fn abi_decode_returns_validate(
8136                data: &[u8],
8137            ) -> alloy_sol_types::Result<Self::Return> {
8138                <Self::ReturnTuple<
8139                    '_,
8140                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8141                    .map(Into::into)
8142            }
8143        }
8144    };
8145    #[derive(serde::Serialize, serde::Deserialize)]
8146    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8147    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8148```solidity
8149function getStateHistoryCount() external view returns (uint256);
8150```*/
8151    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8152    #[derive(Clone)]
8153    pub struct getStateHistoryCountCall;
8154    #[derive(serde::Serialize, serde::Deserialize)]
8155    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8156    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8157    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8158    #[derive(Clone)]
8159    pub struct getStateHistoryCountReturn {
8160        #[allow(missing_docs)]
8161        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8162    }
8163    #[allow(
8164        non_camel_case_types,
8165        non_snake_case,
8166        clippy::pub_underscore_fields,
8167        clippy::style
8168    )]
8169    const _: () = {
8170        use alloy::sol_types as alloy_sol_types;
8171        {
8172            #[doc(hidden)]
8173            #[allow(dead_code)]
8174            type UnderlyingSolTuple<'a> = ();
8175            #[doc(hidden)]
8176            type UnderlyingRustTuple<'a> = ();
8177            #[cfg(test)]
8178            #[allow(dead_code, unreachable_patterns)]
8179            fn _type_assertion(
8180                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8181            ) {
8182                match _t {
8183                    alloy_sol_types::private::AssertTypeEq::<
8184                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8185                    >(_) => {}
8186                }
8187            }
8188            #[automatically_derived]
8189            #[doc(hidden)]
8190            impl ::core::convert::From<getStateHistoryCountCall>
8191            for UnderlyingRustTuple<'_> {
8192                fn from(value: getStateHistoryCountCall) -> Self {
8193                    ()
8194                }
8195            }
8196            #[automatically_derived]
8197            #[doc(hidden)]
8198            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8199            for getStateHistoryCountCall {
8200                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8201                    Self
8202                }
8203            }
8204        }
8205        {
8206            #[doc(hidden)]
8207            #[allow(dead_code)]
8208            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8209            #[doc(hidden)]
8210            type UnderlyingRustTuple<'a> = (
8211                alloy::sol_types::private::primitives::aliases::U256,
8212            );
8213            #[cfg(test)]
8214            #[allow(dead_code, unreachable_patterns)]
8215            fn _type_assertion(
8216                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8217            ) {
8218                match _t {
8219                    alloy_sol_types::private::AssertTypeEq::<
8220                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8221                    >(_) => {}
8222                }
8223            }
8224            #[automatically_derived]
8225            #[doc(hidden)]
8226            impl ::core::convert::From<getStateHistoryCountReturn>
8227            for UnderlyingRustTuple<'_> {
8228                fn from(value: getStateHistoryCountReturn) -> Self {
8229                    (value._0,)
8230                }
8231            }
8232            #[automatically_derived]
8233            #[doc(hidden)]
8234            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8235            for getStateHistoryCountReturn {
8236                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8237                    Self { _0: tuple.0 }
8238                }
8239            }
8240        }
8241        #[automatically_derived]
8242        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8243            type Parameters<'a> = ();
8244            type Token<'a> = <Self::Parameters<
8245                'a,
8246            > as alloy_sol_types::SolType>::Token<'a>;
8247            type Return = alloy::sol_types::private::primitives::aliases::U256;
8248            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8249            type ReturnToken<'a> = <Self::ReturnTuple<
8250                'a,
8251            > as alloy_sol_types::SolType>::Token<'a>;
8252            const SIGNATURE: &'static str = "getStateHistoryCount()";
8253            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8254            #[inline]
8255            fn new<'a>(
8256                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8257            ) -> Self {
8258                tuple.into()
8259            }
8260            #[inline]
8261            fn tokenize(&self) -> Self::Token<'_> {
8262                ()
8263            }
8264            #[inline]
8265            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8266                (
8267                    <alloy::sol_types::sol_data::Uint<
8268                        256,
8269                    > as alloy_sol_types::SolType>::tokenize(ret),
8270                )
8271            }
8272            #[inline]
8273            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8274                <Self::ReturnTuple<
8275                    '_,
8276                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8277                    .map(|r| {
8278                        let r: getStateHistoryCountReturn = r.into();
8279                        r._0
8280                    })
8281            }
8282            #[inline]
8283            fn abi_decode_returns_validate(
8284                data: &[u8],
8285            ) -> alloy_sol_types::Result<Self::Return> {
8286                <Self::ReturnTuple<
8287                    '_,
8288                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8289                    .map(|r| {
8290                        let r: getStateHistoryCountReturn = r.into();
8291                        r._0
8292                    })
8293            }
8294        }
8295    };
8296    #[derive(serde::Serialize, serde::Deserialize)]
8297    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8298    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8299```solidity
8300function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8301```*/
8302    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8303    #[derive(Clone)]
8304    pub struct getVersionCall;
8305    #[derive(serde::Serialize, serde::Deserialize)]
8306    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8307    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8308    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8309    #[derive(Clone)]
8310    pub struct getVersionReturn {
8311        #[allow(missing_docs)]
8312        pub majorVersion: u8,
8313        #[allow(missing_docs)]
8314        pub minorVersion: u8,
8315        #[allow(missing_docs)]
8316        pub patchVersion: u8,
8317    }
8318    #[allow(
8319        non_camel_case_types,
8320        non_snake_case,
8321        clippy::pub_underscore_fields,
8322        clippy::style
8323    )]
8324    const _: () = {
8325        use alloy::sol_types as alloy_sol_types;
8326        {
8327            #[doc(hidden)]
8328            #[allow(dead_code)]
8329            type UnderlyingSolTuple<'a> = ();
8330            #[doc(hidden)]
8331            type UnderlyingRustTuple<'a> = ();
8332            #[cfg(test)]
8333            #[allow(dead_code, unreachable_patterns)]
8334            fn _type_assertion(
8335                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8336            ) {
8337                match _t {
8338                    alloy_sol_types::private::AssertTypeEq::<
8339                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8340                    >(_) => {}
8341                }
8342            }
8343            #[automatically_derived]
8344            #[doc(hidden)]
8345            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8346                fn from(value: getVersionCall) -> Self {
8347                    ()
8348                }
8349            }
8350            #[automatically_derived]
8351            #[doc(hidden)]
8352            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8353                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8354                    Self
8355                }
8356            }
8357        }
8358        {
8359            #[doc(hidden)]
8360            #[allow(dead_code)]
8361            type UnderlyingSolTuple<'a> = (
8362                alloy::sol_types::sol_data::Uint<8>,
8363                alloy::sol_types::sol_data::Uint<8>,
8364                alloy::sol_types::sol_data::Uint<8>,
8365            );
8366            #[doc(hidden)]
8367            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8368            #[cfg(test)]
8369            #[allow(dead_code, unreachable_patterns)]
8370            fn _type_assertion(
8371                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8372            ) {
8373                match _t {
8374                    alloy_sol_types::private::AssertTypeEq::<
8375                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8376                    >(_) => {}
8377                }
8378            }
8379            #[automatically_derived]
8380            #[doc(hidden)]
8381            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8382                fn from(value: getVersionReturn) -> Self {
8383                    (value.majorVersion, value.minorVersion, value.patchVersion)
8384                }
8385            }
8386            #[automatically_derived]
8387            #[doc(hidden)]
8388            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8389                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8390                    Self {
8391                        majorVersion: tuple.0,
8392                        minorVersion: tuple.1,
8393                        patchVersion: tuple.2,
8394                    }
8395                }
8396            }
8397        }
8398        impl getVersionReturn {
8399            fn _tokenize(
8400                &self,
8401            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8402                (
8403                    <alloy::sol_types::sol_data::Uint<
8404                        8,
8405                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8406                    <alloy::sol_types::sol_data::Uint<
8407                        8,
8408                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8409                    <alloy::sol_types::sol_data::Uint<
8410                        8,
8411                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8412                )
8413            }
8414        }
8415        #[automatically_derived]
8416        impl alloy_sol_types::SolCall for getVersionCall {
8417            type Parameters<'a> = ();
8418            type Token<'a> = <Self::Parameters<
8419                'a,
8420            > as alloy_sol_types::SolType>::Token<'a>;
8421            type Return = getVersionReturn;
8422            type ReturnTuple<'a> = (
8423                alloy::sol_types::sol_data::Uint<8>,
8424                alloy::sol_types::sol_data::Uint<8>,
8425                alloy::sol_types::sol_data::Uint<8>,
8426            );
8427            type ReturnToken<'a> = <Self::ReturnTuple<
8428                'a,
8429            > as alloy_sol_types::SolType>::Token<'a>;
8430            const SIGNATURE: &'static str = "getVersion()";
8431            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8432            #[inline]
8433            fn new<'a>(
8434                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8435            ) -> Self {
8436                tuple.into()
8437            }
8438            #[inline]
8439            fn tokenize(&self) -> Self::Token<'_> {
8440                ()
8441            }
8442            #[inline]
8443            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8444                getVersionReturn::_tokenize(ret)
8445            }
8446            #[inline]
8447            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8448                <Self::ReturnTuple<
8449                    '_,
8450                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8451                    .map(Into::into)
8452            }
8453            #[inline]
8454            fn abi_decode_returns_validate(
8455                data: &[u8],
8456            ) -> alloy_sol_types::Result<Self::Return> {
8457                <Self::ReturnTuple<
8458                    '_,
8459                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8460                    .map(Into::into)
8461            }
8462        }
8463    };
8464    #[derive(serde::Serialize, serde::Deserialize)]
8465    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8466    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8467```solidity
8468function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8469```*/
8470    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8471    #[derive(Clone)]
8472    pub struct initializeCall {
8473        #[allow(missing_docs)]
8474        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8475        #[allow(missing_docs)]
8476        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8477        #[allow(missing_docs)]
8478        pub _stateHistoryRetentionPeriod: u32,
8479        #[allow(missing_docs)]
8480        pub owner: alloy::sol_types::private::Address,
8481    }
8482    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8484    #[derive(Clone)]
8485    pub struct initializeReturn {}
8486    #[allow(
8487        non_camel_case_types,
8488        non_snake_case,
8489        clippy::pub_underscore_fields,
8490        clippy::style
8491    )]
8492    const _: () = {
8493        use alloy::sol_types as alloy_sol_types;
8494        {
8495            #[doc(hidden)]
8496            #[allow(dead_code)]
8497            type UnderlyingSolTuple<'a> = (
8498                LightClient::LightClientState,
8499                LightClient::StakeTableState,
8500                alloy::sol_types::sol_data::Uint<32>,
8501                alloy::sol_types::sol_data::Address,
8502            );
8503            #[doc(hidden)]
8504            type UnderlyingRustTuple<'a> = (
8505                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8506                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8507                u32,
8508                alloy::sol_types::private::Address,
8509            );
8510            #[cfg(test)]
8511            #[allow(dead_code, unreachable_patterns)]
8512            fn _type_assertion(
8513                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8514            ) {
8515                match _t {
8516                    alloy_sol_types::private::AssertTypeEq::<
8517                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8518                    >(_) => {}
8519                }
8520            }
8521            #[automatically_derived]
8522            #[doc(hidden)]
8523            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8524                fn from(value: initializeCall) -> Self {
8525                    (
8526                        value._genesis,
8527                        value._genesisStakeTableState,
8528                        value._stateHistoryRetentionPeriod,
8529                        value.owner,
8530                    )
8531                }
8532            }
8533            #[automatically_derived]
8534            #[doc(hidden)]
8535            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8536                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8537                    Self {
8538                        _genesis: tuple.0,
8539                        _genesisStakeTableState: tuple.1,
8540                        _stateHistoryRetentionPeriod: tuple.2,
8541                        owner: tuple.3,
8542                    }
8543                }
8544            }
8545        }
8546        {
8547            #[doc(hidden)]
8548            #[allow(dead_code)]
8549            type UnderlyingSolTuple<'a> = ();
8550            #[doc(hidden)]
8551            type UnderlyingRustTuple<'a> = ();
8552            #[cfg(test)]
8553            #[allow(dead_code, unreachable_patterns)]
8554            fn _type_assertion(
8555                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8556            ) {
8557                match _t {
8558                    alloy_sol_types::private::AssertTypeEq::<
8559                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8560                    >(_) => {}
8561                }
8562            }
8563            #[automatically_derived]
8564            #[doc(hidden)]
8565            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8566                fn from(value: initializeReturn) -> Self {
8567                    ()
8568                }
8569            }
8570            #[automatically_derived]
8571            #[doc(hidden)]
8572            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8573                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8574                    Self {}
8575                }
8576            }
8577        }
8578        impl initializeReturn {
8579            fn _tokenize(
8580                &self,
8581            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8582                ()
8583            }
8584        }
8585        #[automatically_derived]
8586        impl alloy_sol_types::SolCall for initializeCall {
8587            type Parameters<'a> = (
8588                LightClient::LightClientState,
8589                LightClient::StakeTableState,
8590                alloy::sol_types::sol_data::Uint<32>,
8591                alloy::sol_types::sol_data::Address,
8592            );
8593            type Token<'a> = <Self::Parameters<
8594                'a,
8595            > as alloy_sol_types::SolType>::Token<'a>;
8596            type Return = initializeReturn;
8597            type ReturnTuple<'a> = ();
8598            type ReturnToken<'a> = <Self::ReturnTuple<
8599                'a,
8600            > as alloy_sol_types::SolType>::Token<'a>;
8601            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8602            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8603            #[inline]
8604            fn new<'a>(
8605                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8606            ) -> Self {
8607                tuple.into()
8608            }
8609            #[inline]
8610            fn tokenize(&self) -> Self::Token<'_> {
8611                (
8612                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8613                        &self._genesis,
8614                    ),
8615                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
8616                        &self._genesisStakeTableState,
8617                    ),
8618                    <alloy::sol_types::sol_data::Uint<
8619                        32,
8620                    > as alloy_sol_types::SolType>::tokenize(
8621                        &self._stateHistoryRetentionPeriod,
8622                    ),
8623                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8624                        &self.owner,
8625                    ),
8626                )
8627            }
8628            #[inline]
8629            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8630                initializeReturn::_tokenize(ret)
8631            }
8632            #[inline]
8633            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8634                <Self::ReturnTuple<
8635                    '_,
8636                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8637                    .map(Into::into)
8638            }
8639            #[inline]
8640            fn abi_decode_returns_validate(
8641                data: &[u8],
8642            ) -> alloy_sol_types::Result<Self::Return> {
8643                <Self::ReturnTuple<
8644                    '_,
8645                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8646                    .map(Into::into)
8647            }
8648        }
8649    };
8650    #[derive(serde::Serialize, serde::Deserialize)]
8651    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8652    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8653```solidity
8654function isPermissionedProverEnabled() external view returns (bool);
8655```*/
8656    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8657    #[derive(Clone)]
8658    pub struct isPermissionedProverEnabledCall;
8659    #[derive(serde::Serialize, serde::Deserialize)]
8660    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8661    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8662    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8663    #[derive(Clone)]
8664    pub struct isPermissionedProverEnabledReturn {
8665        #[allow(missing_docs)]
8666        pub _0: bool,
8667    }
8668    #[allow(
8669        non_camel_case_types,
8670        non_snake_case,
8671        clippy::pub_underscore_fields,
8672        clippy::style
8673    )]
8674    const _: () = {
8675        use alloy::sol_types as alloy_sol_types;
8676        {
8677            #[doc(hidden)]
8678            #[allow(dead_code)]
8679            type UnderlyingSolTuple<'a> = ();
8680            #[doc(hidden)]
8681            type UnderlyingRustTuple<'a> = ();
8682            #[cfg(test)]
8683            #[allow(dead_code, unreachable_patterns)]
8684            fn _type_assertion(
8685                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8686            ) {
8687                match _t {
8688                    alloy_sol_types::private::AssertTypeEq::<
8689                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8690                    >(_) => {}
8691                }
8692            }
8693            #[automatically_derived]
8694            #[doc(hidden)]
8695            impl ::core::convert::From<isPermissionedProverEnabledCall>
8696            for UnderlyingRustTuple<'_> {
8697                fn from(value: isPermissionedProverEnabledCall) -> Self {
8698                    ()
8699                }
8700            }
8701            #[automatically_derived]
8702            #[doc(hidden)]
8703            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8704            for isPermissionedProverEnabledCall {
8705                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8706                    Self
8707                }
8708            }
8709        }
8710        {
8711            #[doc(hidden)]
8712            #[allow(dead_code)]
8713            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8714            #[doc(hidden)]
8715            type UnderlyingRustTuple<'a> = (bool,);
8716            #[cfg(test)]
8717            #[allow(dead_code, unreachable_patterns)]
8718            fn _type_assertion(
8719                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8720            ) {
8721                match _t {
8722                    alloy_sol_types::private::AssertTypeEq::<
8723                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8724                    >(_) => {}
8725                }
8726            }
8727            #[automatically_derived]
8728            #[doc(hidden)]
8729            impl ::core::convert::From<isPermissionedProverEnabledReturn>
8730            for UnderlyingRustTuple<'_> {
8731                fn from(value: isPermissionedProverEnabledReturn) -> Self {
8732                    (value._0,)
8733                }
8734            }
8735            #[automatically_derived]
8736            #[doc(hidden)]
8737            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8738            for isPermissionedProverEnabledReturn {
8739                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8740                    Self { _0: tuple.0 }
8741                }
8742            }
8743        }
8744        #[automatically_derived]
8745        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
8746            type Parameters<'a> = ();
8747            type Token<'a> = <Self::Parameters<
8748                'a,
8749            > as alloy_sol_types::SolType>::Token<'a>;
8750            type Return = bool;
8751            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8752            type ReturnToken<'a> = <Self::ReturnTuple<
8753                'a,
8754            > as alloy_sol_types::SolType>::Token<'a>;
8755            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
8756            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
8757            #[inline]
8758            fn new<'a>(
8759                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8760            ) -> Self {
8761                tuple.into()
8762            }
8763            #[inline]
8764            fn tokenize(&self) -> Self::Token<'_> {
8765                ()
8766            }
8767            #[inline]
8768            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8769                (
8770                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8771                        ret,
8772                    ),
8773                )
8774            }
8775            #[inline]
8776            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8777                <Self::ReturnTuple<
8778                    '_,
8779                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8780                    .map(|r| {
8781                        let r: isPermissionedProverEnabledReturn = r.into();
8782                        r._0
8783                    })
8784            }
8785            #[inline]
8786            fn abi_decode_returns_validate(
8787                data: &[u8],
8788            ) -> alloy_sol_types::Result<Self::Return> {
8789                <Self::ReturnTuple<
8790                    '_,
8791                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8792                    .map(|r| {
8793                        let r: isPermissionedProverEnabledReturn = r.into();
8794                        r._0
8795                    })
8796            }
8797        }
8798    };
8799    #[derive(serde::Serialize, serde::Deserialize)]
8800    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8801    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
8802```solidity
8803function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
8804```*/
8805    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8806    #[derive(Clone)]
8807    pub struct lagOverEscapeHatchThresholdCall {
8808        #[allow(missing_docs)]
8809        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
8810        #[allow(missing_docs)]
8811        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
8812    }
8813    #[derive(serde::Serialize, serde::Deserialize)]
8814    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8815    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
8816    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8817    #[derive(Clone)]
8818    pub struct lagOverEscapeHatchThresholdReturn {
8819        #[allow(missing_docs)]
8820        pub _0: bool,
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                alloy::sol_types::sol_data::Uint<256>,
8835                alloy::sol_types::sol_data::Uint<256>,
8836            );
8837            #[doc(hidden)]
8838            type UnderlyingRustTuple<'a> = (
8839                alloy::sol_types::private::primitives::aliases::U256,
8840                alloy::sol_types::private::primitives::aliases::U256,
8841            );
8842            #[cfg(test)]
8843            #[allow(dead_code, unreachable_patterns)]
8844            fn _type_assertion(
8845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8846            ) {
8847                match _t {
8848                    alloy_sol_types::private::AssertTypeEq::<
8849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8850                    >(_) => {}
8851                }
8852            }
8853            #[automatically_derived]
8854            #[doc(hidden)]
8855            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
8856            for UnderlyingRustTuple<'_> {
8857                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
8858                    (value.blockNumber, value.blockThreshold)
8859                }
8860            }
8861            #[automatically_derived]
8862            #[doc(hidden)]
8863            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8864            for lagOverEscapeHatchThresholdCall {
8865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8866                    Self {
8867                        blockNumber: tuple.0,
8868                        blockThreshold: tuple.1,
8869                    }
8870                }
8871            }
8872        }
8873        {
8874            #[doc(hidden)]
8875            #[allow(dead_code)]
8876            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8877            #[doc(hidden)]
8878            type UnderlyingRustTuple<'a> = (bool,);
8879            #[cfg(test)]
8880            #[allow(dead_code, unreachable_patterns)]
8881            fn _type_assertion(
8882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8883            ) {
8884                match _t {
8885                    alloy_sol_types::private::AssertTypeEq::<
8886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8887                    >(_) => {}
8888                }
8889            }
8890            #[automatically_derived]
8891            #[doc(hidden)]
8892            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
8893            for UnderlyingRustTuple<'_> {
8894                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
8895                    (value._0,)
8896                }
8897            }
8898            #[automatically_derived]
8899            #[doc(hidden)]
8900            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8901            for lagOverEscapeHatchThresholdReturn {
8902                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8903                    Self { _0: tuple.0 }
8904                }
8905            }
8906        }
8907        #[automatically_derived]
8908        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
8909            type Parameters<'a> = (
8910                alloy::sol_types::sol_data::Uint<256>,
8911                alloy::sol_types::sol_data::Uint<256>,
8912            );
8913            type Token<'a> = <Self::Parameters<
8914                'a,
8915            > as alloy_sol_types::SolType>::Token<'a>;
8916            type Return = bool;
8917            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8918            type ReturnToken<'a> = <Self::ReturnTuple<
8919                'a,
8920            > as alloy_sol_types::SolType>::Token<'a>;
8921            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
8922            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
8923            #[inline]
8924            fn new<'a>(
8925                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8926            ) -> Self {
8927                tuple.into()
8928            }
8929            #[inline]
8930            fn tokenize(&self) -> Self::Token<'_> {
8931                (
8932                    <alloy::sol_types::sol_data::Uint<
8933                        256,
8934                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
8935                    <alloy::sol_types::sol_data::Uint<
8936                        256,
8937                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
8938                )
8939            }
8940            #[inline]
8941            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8942                (
8943                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8944                        ret,
8945                    ),
8946                )
8947            }
8948            #[inline]
8949            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8950                <Self::ReturnTuple<
8951                    '_,
8952                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8953                    .map(|r| {
8954                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8955                        r._0
8956                    })
8957            }
8958            #[inline]
8959            fn abi_decode_returns_validate(
8960                data: &[u8],
8961            ) -> alloy_sol_types::Result<Self::Return> {
8962                <Self::ReturnTuple<
8963                    '_,
8964                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8965                    .map(|r| {
8966                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8967                        r._0
8968                    })
8969            }
8970        }
8971    };
8972    #[derive(serde::Serialize, serde::Deserialize)]
8973    #[derive()]
8974    /**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`.
8975```solidity
8976function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
8977```*/
8978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8979    #[derive(Clone)]
8980    pub struct newFinalizedStateCall {
8981        #[allow(missing_docs)]
8982        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8983        #[allow(missing_docs)]
8984        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8985    }
8986    ///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))`](newFinalizedStateCall) function.
8987    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8988    #[derive(Clone)]
8989    pub struct newFinalizedStateReturn {}
8990    #[allow(
8991        non_camel_case_types,
8992        non_snake_case,
8993        clippy::pub_underscore_fields,
8994        clippy::style
8995    )]
8996    const _: () = {
8997        use alloy::sol_types as alloy_sol_types;
8998        {
8999            #[doc(hidden)]
9000            #[allow(dead_code)]
9001            type UnderlyingSolTuple<'a> = (
9002                LightClient::LightClientState,
9003                IPlonkVerifier::PlonkProof,
9004            );
9005            #[doc(hidden)]
9006            type UnderlyingRustTuple<'a> = (
9007                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9008                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9009            );
9010            #[cfg(test)]
9011            #[allow(dead_code, unreachable_patterns)]
9012            fn _type_assertion(
9013                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9014            ) {
9015                match _t {
9016                    alloy_sol_types::private::AssertTypeEq::<
9017                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9018                    >(_) => {}
9019                }
9020            }
9021            #[automatically_derived]
9022            #[doc(hidden)]
9023            impl ::core::convert::From<newFinalizedStateCall>
9024            for UnderlyingRustTuple<'_> {
9025                fn from(value: newFinalizedStateCall) -> Self {
9026                    (value.newState, value.proof)
9027                }
9028            }
9029            #[automatically_derived]
9030            #[doc(hidden)]
9031            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9032            for newFinalizedStateCall {
9033                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9034                    Self {
9035                        newState: tuple.0,
9036                        proof: tuple.1,
9037                    }
9038                }
9039            }
9040        }
9041        {
9042            #[doc(hidden)]
9043            #[allow(dead_code)]
9044            type UnderlyingSolTuple<'a> = ();
9045            #[doc(hidden)]
9046            type UnderlyingRustTuple<'a> = ();
9047            #[cfg(test)]
9048            #[allow(dead_code, unreachable_patterns)]
9049            fn _type_assertion(
9050                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9051            ) {
9052                match _t {
9053                    alloy_sol_types::private::AssertTypeEq::<
9054                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9055                    >(_) => {}
9056                }
9057            }
9058            #[automatically_derived]
9059            #[doc(hidden)]
9060            impl ::core::convert::From<newFinalizedStateReturn>
9061            for UnderlyingRustTuple<'_> {
9062                fn from(value: newFinalizedStateReturn) -> Self {
9063                    ()
9064                }
9065            }
9066            #[automatically_derived]
9067            #[doc(hidden)]
9068            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9069            for newFinalizedStateReturn {
9070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9071                    Self {}
9072                }
9073            }
9074        }
9075        impl newFinalizedStateReturn {
9076            fn _tokenize(
9077                &self,
9078            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9079                ()
9080            }
9081        }
9082        #[automatically_derived]
9083        impl alloy_sol_types::SolCall for newFinalizedStateCall {
9084            type Parameters<'a> = (
9085                LightClient::LightClientState,
9086                IPlonkVerifier::PlonkProof,
9087            );
9088            type Token<'a> = <Self::Parameters<
9089                'a,
9090            > as alloy_sol_types::SolType>::Token<'a>;
9091            type Return = newFinalizedStateReturn;
9092            type ReturnTuple<'a> = ();
9093            type ReturnToken<'a> = <Self::ReturnTuple<
9094                'a,
9095            > as alloy_sol_types::SolType>::Token<'a>;
9096            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))";
9097            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9098            #[inline]
9099            fn new<'a>(
9100                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9101            ) -> Self {
9102                tuple.into()
9103            }
9104            #[inline]
9105            fn tokenize(&self) -> Self::Token<'_> {
9106                (
9107                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9108                        &self.newState,
9109                    ),
9110                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
9111                        &self.proof,
9112                    ),
9113                )
9114            }
9115            #[inline]
9116            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9117                newFinalizedStateReturn::_tokenize(ret)
9118            }
9119            #[inline]
9120            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9121                <Self::ReturnTuple<
9122                    '_,
9123                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9124                    .map(Into::into)
9125            }
9126            #[inline]
9127            fn abi_decode_returns_validate(
9128                data: &[u8],
9129            ) -> alloy_sol_types::Result<Self::Return> {
9130                <Self::ReturnTuple<
9131                    '_,
9132                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9133                    .map(Into::into)
9134            }
9135        }
9136    };
9137    #[derive(serde::Serialize, serde::Deserialize)]
9138    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9139    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9140```solidity
9141function owner() external view returns (address);
9142```*/
9143    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9144    #[derive(Clone)]
9145    pub struct ownerCall;
9146    #[derive(serde::Serialize, serde::Deserialize)]
9147    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9148    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9150    #[derive(Clone)]
9151    pub struct ownerReturn {
9152        #[allow(missing_docs)]
9153        pub _0: alloy::sol_types::private::Address,
9154    }
9155    #[allow(
9156        non_camel_case_types,
9157        non_snake_case,
9158        clippy::pub_underscore_fields,
9159        clippy::style
9160    )]
9161    const _: () = {
9162        use alloy::sol_types as alloy_sol_types;
9163        {
9164            #[doc(hidden)]
9165            #[allow(dead_code)]
9166            type UnderlyingSolTuple<'a> = ();
9167            #[doc(hidden)]
9168            type UnderlyingRustTuple<'a> = ();
9169            #[cfg(test)]
9170            #[allow(dead_code, unreachable_patterns)]
9171            fn _type_assertion(
9172                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9173            ) {
9174                match _t {
9175                    alloy_sol_types::private::AssertTypeEq::<
9176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9177                    >(_) => {}
9178                }
9179            }
9180            #[automatically_derived]
9181            #[doc(hidden)]
9182            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9183                fn from(value: ownerCall) -> Self {
9184                    ()
9185                }
9186            }
9187            #[automatically_derived]
9188            #[doc(hidden)]
9189            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9190                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9191                    Self
9192                }
9193            }
9194        }
9195        {
9196            #[doc(hidden)]
9197            #[allow(dead_code)]
9198            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9199            #[doc(hidden)]
9200            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9201            #[cfg(test)]
9202            #[allow(dead_code, unreachable_patterns)]
9203            fn _type_assertion(
9204                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9205            ) {
9206                match _t {
9207                    alloy_sol_types::private::AssertTypeEq::<
9208                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9209                    >(_) => {}
9210                }
9211            }
9212            #[automatically_derived]
9213            #[doc(hidden)]
9214            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9215                fn from(value: ownerReturn) -> Self {
9216                    (value._0,)
9217                }
9218            }
9219            #[automatically_derived]
9220            #[doc(hidden)]
9221            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9223                    Self { _0: tuple.0 }
9224                }
9225            }
9226        }
9227        #[automatically_derived]
9228        impl alloy_sol_types::SolCall for ownerCall {
9229            type Parameters<'a> = ();
9230            type Token<'a> = <Self::Parameters<
9231                'a,
9232            > as alloy_sol_types::SolType>::Token<'a>;
9233            type Return = alloy::sol_types::private::Address;
9234            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9235            type ReturnToken<'a> = <Self::ReturnTuple<
9236                'a,
9237            > as alloy_sol_types::SolType>::Token<'a>;
9238            const SIGNATURE: &'static str = "owner()";
9239            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9240            #[inline]
9241            fn new<'a>(
9242                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9243            ) -> Self {
9244                tuple.into()
9245            }
9246            #[inline]
9247            fn tokenize(&self) -> Self::Token<'_> {
9248                ()
9249            }
9250            #[inline]
9251            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9252                (
9253                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9254                        ret,
9255                    ),
9256                )
9257            }
9258            #[inline]
9259            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9260                <Self::ReturnTuple<
9261                    '_,
9262                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9263                    .map(|r| {
9264                        let r: ownerReturn = r.into();
9265                        r._0
9266                    })
9267            }
9268            #[inline]
9269            fn abi_decode_returns_validate(
9270                data: &[u8],
9271            ) -> alloy_sol_types::Result<Self::Return> {
9272                <Self::ReturnTuple<
9273                    '_,
9274                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9275                    .map(|r| {
9276                        let r: ownerReturn = r.into();
9277                        r._0
9278                    })
9279            }
9280        }
9281    };
9282    #[derive(serde::Serialize, serde::Deserialize)]
9283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9284    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9285```solidity
9286function permissionedProver() external view returns (address);
9287```*/
9288    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9289    #[derive(Clone)]
9290    pub struct permissionedProverCall;
9291    #[derive(serde::Serialize, serde::Deserialize)]
9292    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9293    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9294    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9295    #[derive(Clone)]
9296    pub struct permissionedProverReturn {
9297        #[allow(missing_docs)]
9298        pub _0: alloy::sol_types::private::Address,
9299    }
9300    #[allow(
9301        non_camel_case_types,
9302        non_snake_case,
9303        clippy::pub_underscore_fields,
9304        clippy::style
9305    )]
9306    const _: () = {
9307        use alloy::sol_types as alloy_sol_types;
9308        {
9309            #[doc(hidden)]
9310            #[allow(dead_code)]
9311            type UnderlyingSolTuple<'a> = ();
9312            #[doc(hidden)]
9313            type UnderlyingRustTuple<'a> = ();
9314            #[cfg(test)]
9315            #[allow(dead_code, unreachable_patterns)]
9316            fn _type_assertion(
9317                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9318            ) {
9319                match _t {
9320                    alloy_sol_types::private::AssertTypeEq::<
9321                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9322                    >(_) => {}
9323                }
9324            }
9325            #[automatically_derived]
9326            #[doc(hidden)]
9327            impl ::core::convert::From<permissionedProverCall>
9328            for UnderlyingRustTuple<'_> {
9329                fn from(value: permissionedProverCall) -> Self {
9330                    ()
9331                }
9332            }
9333            #[automatically_derived]
9334            #[doc(hidden)]
9335            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9336            for permissionedProverCall {
9337                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9338                    Self
9339                }
9340            }
9341        }
9342        {
9343            #[doc(hidden)]
9344            #[allow(dead_code)]
9345            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9346            #[doc(hidden)]
9347            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9348            #[cfg(test)]
9349            #[allow(dead_code, unreachable_patterns)]
9350            fn _type_assertion(
9351                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9352            ) {
9353                match _t {
9354                    alloy_sol_types::private::AssertTypeEq::<
9355                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9356                    >(_) => {}
9357                }
9358            }
9359            #[automatically_derived]
9360            #[doc(hidden)]
9361            impl ::core::convert::From<permissionedProverReturn>
9362            for UnderlyingRustTuple<'_> {
9363                fn from(value: permissionedProverReturn) -> Self {
9364                    (value._0,)
9365                }
9366            }
9367            #[automatically_derived]
9368            #[doc(hidden)]
9369            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9370            for permissionedProverReturn {
9371                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9372                    Self { _0: tuple.0 }
9373                }
9374            }
9375        }
9376        #[automatically_derived]
9377        impl alloy_sol_types::SolCall for permissionedProverCall {
9378            type Parameters<'a> = ();
9379            type Token<'a> = <Self::Parameters<
9380                'a,
9381            > as alloy_sol_types::SolType>::Token<'a>;
9382            type Return = alloy::sol_types::private::Address;
9383            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9384            type ReturnToken<'a> = <Self::ReturnTuple<
9385                'a,
9386            > as alloy_sol_types::SolType>::Token<'a>;
9387            const SIGNATURE: &'static str = "permissionedProver()";
9388            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9389            #[inline]
9390            fn new<'a>(
9391                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9392            ) -> Self {
9393                tuple.into()
9394            }
9395            #[inline]
9396            fn tokenize(&self) -> Self::Token<'_> {
9397                ()
9398            }
9399            #[inline]
9400            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9401                (
9402                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9403                        ret,
9404                    ),
9405                )
9406            }
9407            #[inline]
9408            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9409                <Self::ReturnTuple<
9410                    '_,
9411                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9412                    .map(|r| {
9413                        let r: permissionedProverReturn = r.into();
9414                        r._0
9415                    })
9416            }
9417            #[inline]
9418            fn abi_decode_returns_validate(
9419                data: &[u8],
9420            ) -> alloy_sol_types::Result<Self::Return> {
9421                <Self::ReturnTuple<
9422                    '_,
9423                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9424                    .map(|r| {
9425                        let r: permissionedProverReturn = r.into();
9426                        r._0
9427                    })
9428            }
9429        }
9430    };
9431    #[derive(serde::Serialize, serde::Deserialize)]
9432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9433    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9434```solidity
9435function proxiableUUID() external view returns (bytes32);
9436```*/
9437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9438    #[derive(Clone)]
9439    pub struct proxiableUUIDCall;
9440    #[derive(serde::Serialize, serde::Deserialize)]
9441    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9442    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9443    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9444    #[derive(Clone)]
9445    pub struct proxiableUUIDReturn {
9446        #[allow(missing_docs)]
9447        pub _0: alloy::sol_types::private::FixedBytes<32>,
9448    }
9449    #[allow(
9450        non_camel_case_types,
9451        non_snake_case,
9452        clippy::pub_underscore_fields,
9453        clippy::style
9454    )]
9455    const _: () = {
9456        use alloy::sol_types as alloy_sol_types;
9457        {
9458            #[doc(hidden)]
9459            #[allow(dead_code)]
9460            type UnderlyingSolTuple<'a> = ();
9461            #[doc(hidden)]
9462            type UnderlyingRustTuple<'a> = ();
9463            #[cfg(test)]
9464            #[allow(dead_code, unreachable_patterns)]
9465            fn _type_assertion(
9466                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9467            ) {
9468                match _t {
9469                    alloy_sol_types::private::AssertTypeEq::<
9470                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9471                    >(_) => {}
9472                }
9473            }
9474            #[automatically_derived]
9475            #[doc(hidden)]
9476            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9477                fn from(value: proxiableUUIDCall) -> Self {
9478                    ()
9479                }
9480            }
9481            #[automatically_derived]
9482            #[doc(hidden)]
9483            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9484                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9485                    Self
9486                }
9487            }
9488        }
9489        {
9490            #[doc(hidden)]
9491            #[allow(dead_code)]
9492            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9493            #[doc(hidden)]
9494            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9495            #[cfg(test)]
9496            #[allow(dead_code, unreachable_patterns)]
9497            fn _type_assertion(
9498                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9499            ) {
9500                match _t {
9501                    alloy_sol_types::private::AssertTypeEq::<
9502                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9503                    >(_) => {}
9504                }
9505            }
9506            #[automatically_derived]
9507            #[doc(hidden)]
9508            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9509                fn from(value: proxiableUUIDReturn) -> Self {
9510                    (value._0,)
9511                }
9512            }
9513            #[automatically_derived]
9514            #[doc(hidden)]
9515            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9516                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9517                    Self { _0: tuple.0 }
9518                }
9519            }
9520        }
9521        #[automatically_derived]
9522        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9523            type Parameters<'a> = ();
9524            type Token<'a> = <Self::Parameters<
9525                'a,
9526            > as alloy_sol_types::SolType>::Token<'a>;
9527            type Return = alloy::sol_types::private::FixedBytes<32>;
9528            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9529            type ReturnToken<'a> = <Self::ReturnTuple<
9530                'a,
9531            > as alloy_sol_types::SolType>::Token<'a>;
9532            const SIGNATURE: &'static str = "proxiableUUID()";
9533            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9534            #[inline]
9535            fn new<'a>(
9536                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9537            ) -> Self {
9538                tuple.into()
9539            }
9540            #[inline]
9541            fn tokenize(&self) -> Self::Token<'_> {
9542                ()
9543            }
9544            #[inline]
9545            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9546                (
9547                    <alloy::sol_types::sol_data::FixedBytes<
9548                        32,
9549                    > as alloy_sol_types::SolType>::tokenize(ret),
9550                )
9551            }
9552            #[inline]
9553            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9554                <Self::ReturnTuple<
9555                    '_,
9556                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9557                    .map(|r| {
9558                        let r: proxiableUUIDReturn = r.into();
9559                        r._0
9560                    })
9561            }
9562            #[inline]
9563            fn abi_decode_returns_validate(
9564                data: &[u8],
9565            ) -> alloy_sol_types::Result<Self::Return> {
9566                <Self::ReturnTuple<
9567                    '_,
9568                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9569                    .map(|r| {
9570                        let r: proxiableUUIDReturn = r.into();
9571                        r._0
9572                    })
9573            }
9574        }
9575    };
9576    #[derive(serde::Serialize, serde::Deserialize)]
9577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9578    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9579```solidity
9580function renounceOwnership() external;
9581```*/
9582    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9583    #[derive(Clone)]
9584    pub struct renounceOwnershipCall;
9585    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9586    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9587    #[derive(Clone)]
9588    pub struct renounceOwnershipReturn {}
9589    #[allow(
9590        non_camel_case_types,
9591        non_snake_case,
9592        clippy::pub_underscore_fields,
9593        clippy::style
9594    )]
9595    const _: () = {
9596        use alloy::sol_types as alloy_sol_types;
9597        {
9598            #[doc(hidden)]
9599            #[allow(dead_code)]
9600            type UnderlyingSolTuple<'a> = ();
9601            #[doc(hidden)]
9602            type UnderlyingRustTuple<'a> = ();
9603            #[cfg(test)]
9604            #[allow(dead_code, unreachable_patterns)]
9605            fn _type_assertion(
9606                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9607            ) {
9608                match _t {
9609                    alloy_sol_types::private::AssertTypeEq::<
9610                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9611                    >(_) => {}
9612                }
9613            }
9614            #[automatically_derived]
9615            #[doc(hidden)]
9616            impl ::core::convert::From<renounceOwnershipCall>
9617            for UnderlyingRustTuple<'_> {
9618                fn from(value: renounceOwnershipCall) -> Self {
9619                    ()
9620                }
9621            }
9622            #[automatically_derived]
9623            #[doc(hidden)]
9624            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9625            for renounceOwnershipCall {
9626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9627                    Self
9628                }
9629            }
9630        }
9631        {
9632            #[doc(hidden)]
9633            #[allow(dead_code)]
9634            type UnderlyingSolTuple<'a> = ();
9635            #[doc(hidden)]
9636            type UnderlyingRustTuple<'a> = ();
9637            #[cfg(test)]
9638            #[allow(dead_code, unreachable_patterns)]
9639            fn _type_assertion(
9640                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9641            ) {
9642                match _t {
9643                    alloy_sol_types::private::AssertTypeEq::<
9644                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9645                    >(_) => {}
9646                }
9647            }
9648            #[automatically_derived]
9649            #[doc(hidden)]
9650            impl ::core::convert::From<renounceOwnershipReturn>
9651            for UnderlyingRustTuple<'_> {
9652                fn from(value: renounceOwnershipReturn) -> Self {
9653                    ()
9654                }
9655            }
9656            #[automatically_derived]
9657            #[doc(hidden)]
9658            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9659            for renounceOwnershipReturn {
9660                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9661                    Self {}
9662                }
9663            }
9664        }
9665        impl renounceOwnershipReturn {
9666            fn _tokenize(
9667                &self,
9668            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9669                ()
9670            }
9671        }
9672        #[automatically_derived]
9673        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9674            type Parameters<'a> = ();
9675            type Token<'a> = <Self::Parameters<
9676                'a,
9677            > as alloy_sol_types::SolType>::Token<'a>;
9678            type Return = renounceOwnershipReturn;
9679            type ReturnTuple<'a> = ();
9680            type ReturnToken<'a> = <Self::ReturnTuple<
9681                'a,
9682            > as alloy_sol_types::SolType>::Token<'a>;
9683            const SIGNATURE: &'static str = "renounceOwnership()";
9684            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
9685            #[inline]
9686            fn new<'a>(
9687                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9688            ) -> Self {
9689                tuple.into()
9690            }
9691            #[inline]
9692            fn tokenize(&self) -> Self::Token<'_> {
9693                ()
9694            }
9695            #[inline]
9696            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9697                renounceOwnershipReturn::_tokenize(ret)
9698            }
9699            #[inline]
9700            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9701                <Self::ReturnTuple<
9702                    '_,
9703                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9704                    .map(Into::into)
9705            }
9706            #[inline]
9707            fn abi_decode_returns_validate(
9708                data: &[u8],
9709            ) -> alloy_sol_types::Result<Self::Return> {
9710                <Self::ReturnTuple<
9711                    '_,
9712                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9713                    .map(Into::into)
9714            }
9715        }
9716    };
9717    #[derive(serde::Serialize, serde::Deserialize)]
9718    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9719    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
9720```solidity
9721function setPermissionedProver(address prover) external;
9722```*/
9723    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9724    #[derive(Clone)]
9725    pub struct setPermissionedProverCall {
9726        #[allow(missing_docs)]
9727        pub prover: alloy::sol_types::private::Address,
9728    }
9729    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
9730    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9731    #[derive(Clone)]
9732    pub struct setPermissionedProverReturn {}
9733    #[allow(
9734        non_camel_case_types,
9735        non_snake_case,
9736        clippy::pub_underscore_fields,
9737        clippy::style
9738    )]
9739    const _: () = {
9740        use alloy::sol_types as alloy_sol_types;
9741        {
9742            #[doc(hidden)]
9743            #[allow(dead_code)]
9744            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9745            #[doc(hidden)]
9746            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9747            #[cfg(test)]
9748            #[allow(dead_code, unreachable_patterns)]
9749            fn _type_assertion(
9750                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9751            ) {
9752                match _t {
9753                    alloy_sol_types::private::AssertTypeEq::<
9754                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9755                    >(_) => {}
9756                }
9757            }
9758            #[automatically_derived]
9759            #[doc(hidden)]
9760            impl ::core::convert::From<setPermissionedProverCall>
9761            for UnderlyingRustTuple<'_> {
9762                fn from(value: setPermissionedProverCall) -> Self {
9763                    (value.prover,)
9764                }
9765            }
9766            #[automatically_derived]
9767            #[doc(hidden)]
9768            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9769            for setPermissionedProverCall {
9770                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9771                    Self { prover: tuple.0 }
9772                }
9773            }
9774        }
9775        {
9776            #[doc(hidden)]
9777            #[allow(dead_code)]
9778            type UnderlyingSolTuple<'a> = ();
9779            #[doc(hidden)]
9780            type UnderlyingRustTuple<'a> = ();
9781            #[cfg(test)]
9782            #[allow(dead_code, unreachable_patterns)]
9783            fn _type_assertion(
9784                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9785            ) {
9786                match _t {
9787                    alloy_sol_types::private::AssertTypeEq::<
9788                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9789                    >(_) => {}
9790                }
9791            }
9792            #[automatically_derived]
9793            #[doc(hidden)]
9794            impl ::core::convert::From<setPermissionedProverReturn>
9795            for UnderlyingRustTuple<'_> {
9796                fn from(value: setPermissionedProverReturn) -> Self {
9797                    ()
9798                }
9799            }
9800            #[automatically_derived]
9801            #[doc(hidden)]
9802            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9803            for setPermissionedProverReturn {
9804                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9805                    Self {}
9806                }
9807            }
9808        }
9809        impl setPermissionedProverReturn {
9810            fn _tokenize(
9811                &self,
9812            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
9813                '_,
9814            > {
9815                ()
9816            }
9817        }
9818        #[automatically_derived]
9819        impl alloy_sol_types::SolCall for setPermissionedProverCall {
9820            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9821            type Token<'a> = <Self::Parameters<
9822                'a,
9823            > as alloy_sol_types::SolType>::Token<'a>;
9824            type Return = setPermissionedProverReturn;
9825            type ReturnTuple<'a> = ();
9826            type ReturnToken<'a> = <Self::ReturnTuple<
9827                'a,
9828            > as alloy_sol_types::SolType>::Token<'a>;
9829            const SIGNATURE: &'static str = "setPermissionedProver(address)";
9830            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
9831            #[inline]
9832            fn new<'a>(
9833                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9834            ) -> Self {
9835                tuple.into()
9836            }
9837            #[inline]
9838            fn tokenize(&self) -> Self::Token<'_> {
9839                (
9840                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9841                        &self.prover,
9842                    ),
9843                )
9844            }
9845            #[inline]
9846            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9847                setPermissionedProverReturn::_tokenize(ret)
9848            }
9849            #[inline]
9850            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9851                <Self::ReturnTuple<
9852                    '_,
9853                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9854                    .map(Into::into)
9855            }
9856            #[inline]
9857            fn abi_decode_returns_validate(
9858                data: &[u8],
9859            ) -> alloy_sol_types::Result<Self::Return> {
9860                <Self::ReturnTuple<
9861                    '_,
9862                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9863                    .map(Into::into)
9864            }
9865        }
9866    };
9867    #[derive(serde::Serialize, serde::Deserialize)]
9868    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9869    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
9870```solidity
9871function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
9872```*/
9873    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9874    #[derive(Clone)]
9875    pub struct setstateHistoryRetentionPeriodCall {
9876        #[allow(missing_docs)]
9877        pub historySeconds: u32,
9878    }
9879    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
9880    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9881    #[derive(Clone)]
9882    pub struct setstateHistoryRetentionPeriodReturn {}
9883    #[allow(
9884        non_camel_case_types,
9885        non_snake_case,
9886        clippy::pub_underscore_fields,
9887        clippy::style
9888    )]
9889    const _: () = {
9890        use alloy::sol_types as alloy_sol_types;
9891        {
9892            #[doc(hidden)]
9893            #[allow(dead_code)]
9894            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9895            #[doc(hidden)]
9896            type UnderlyingRustTuple<'a> = (u32,);
9897            #[cfg(test)]
9898            #[allow(dead_code, unreachable_patterns)]
9899            fn _type_assertion(
9900                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9901            ) {
9902                match _t {
9903                    alloy_sol_types::private::AssertTypeEq::<
9904                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9905                    >(_) => {}
9906                }
9907            }
9908            #[automatically_derived]
9909            #[doc(hidden)]
9910            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
9911            for UnderlyingRustTuple<'_> {
9912                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
9913                    (value.historySeconds,)
9914                }
9915            }
9916            #[automatically_derived]
9917            #[doc(hidden)]
9918            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9919            for setstateHistoryRetentionPeriodCall {
9920                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9921                    Self { historySeconds: tuple.0 }
9922                }
9923            }
9924        }
9925        {
9926            #[doc(hidden)]
9927            #[allow(dead_code)]
9928            type UnderlyingSolTuple<'a> = ();
9929            #[doc(hidden)]
9930            type UnderlyingRustTuple<'a> = ();
9931            #[cfg(test)]
9932            #[allow(dead_code, unreachable_patterns)]
9933            fn _type_assertion(
9934                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9935            ) {
9936                match _t {
9937                    alloy_sol_types::private::AssertTypeEq::<
9938                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9939                    >(_) => {}
9940                }
9941            }
9942            #[automatically_derived]
9943            #[doc(hidden)]
9944            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
9945            for UnderlyingRustTuple<'_> {
9946                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
9947                    ()
9948                }
9949            }
9950            #[automatically_derived]
9951            #[doc(hidden)]
9952            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9953            for setstateHistoryRetentionPeriodReturn {
9954                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9955                    Self {}
9956                }
9957            }
9958        }
9959        impl setstateHistoryRetentionPeriodReturn {
9960            fn _tokenize(
9961                &self,
9962            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
9963                '_,
9964            > {
9965                ()
9966            }
9967        }
9968        #[automatically_derived]
9969        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
9970            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9971            type Token<'a> = <Self::Parameters<
9972                'a,
9973            > as alloy_sol_types::SolType>::Token<'a>;
9974            type Return = setstateHistoryRetentionPeriodReturn;
9975            type ReturnTuple<'a> = ();
9976            type ReturnToken<'a> = <Self::ReturnTuple<
9977                'a,
9978            > as alloy_sol_types::SolType>::Token<'a>;
9979            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
9980            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
9981            #[inline]
9982            fn new<'a>(
9983                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9984            ) -> Self {
9985                tuple.into()
9986            }
9987            #[inline]
9988            fn tokenize(&self) -> Self::Token<'_> {
9989                (
9990                    <alloy::sol_types::sol_data::Uint<
9991                        32,
9992                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
9993                )
9994            }
9995            #[inline]
9996            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9997                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
9998            }
9999            #[inline]
10000            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10001                <Self::ReturnTuple<
10002                    '_,
10003                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10004                    .map(Into::into)
10005            }
10006            #[inline]
10007            fn abi_decode_returns_validate(
10008                data: &[u8],
10009            ) -> alloy_sol_types::Result<Self::Return> {
10010                <Self::ReturnTuple<
10011                    '_,
10012                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10013                    .map(Into::into)
10014            }
10015        }
10016    };
10017    #[derive(serde::Serialize, serde::Deserialize)]
10018    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10019    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
10020```solidity
10021function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
10022```*/
10023    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10024    #[derive(Clone)]
10025    pub struct stateHistoryCommitmentsCall(
10026        pub alloy::sol_types::private::primitives::aliases::U256,
10027    );
10028    #[derive(serde::Serialize, serde::Deserialize)]
10029    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10030    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
10031    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10032    #[derive(Clone)]
10033    pub struct stateHistoryCommitmentsReturn {
10034        #[allow(missing_docs)]
10035        pub l1BlockHeight: u64,
10036        #[allow(missing_docs)]
10037        pub l1BlockTimestamp: u64,
10038        #[allow(missing_docs)]
10039        pub hotShotBlockHeight: u64,
10040        #[allow(missing_docs)]
10041        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10042    }
10043    #[allow(
10044        non_camel_case_types,
10045        non_snake_case,
10046        clippy::pub_underscore_fields,
10047        clippy::style
10048    )]
10049    const _: () = {
10050        use alloy::sol_types as alloy_sol_types;
10051        {
10052            #[doc(hidden)]
10053            #[allow(dead_code)]
10054            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10055            #[doc(hidden)]
10056            type UnderlyingRustTuple<'a> = (
10057                alloy::sol_types::private::primitives::aliases::U256,
10058            );
10059            #[cfg(test)]
10060            #[allow(dead_code, unreachable_patterns)]
10061            fn _type_assertion(
10062                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10063            ) {
10064                match _t {
10065                    alloy_sol_types::private::AssertTypeEq::<
10066                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10067                    >(_) => {}
10068                }
10069            }
10070            #[automatically_derived]
10071            #[doc(hidden)]
10072            impl ::core::convert::From<stateHistoryCommitmentsCall>
10073            for UnderlyingRustTuple<'_> {
10074                fn from(value: stateHistoryCommitmentsCall) -> Self {
10075                    (value.0,)
10076                }
10077            }
10078            #[automatically_derived]
10079            #[doc(hidden)]
10080            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10081            for stateHistoryCommitmentsCall {
10082                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10083                    Self(tuple.0)
10084                }
10085            }
10086        }
10087        {
10088            #[doc(hidden)]
10089            #[allow(dead_code)]
10090            type UnderlyingSolTuple<'a> = (
10091                alloy::sol_types::sol_data::Uint<64>,
10092                alloy::sol_types::sol_data::Uint<64>,
10093                alloy::sol_types::sol_data::Uint<64>,
10094                BN254::ScalarField,
10095            );
10096            #[doc(hidden)]
10097            type UnderlyingRustTuple<'a> = (
10098                u64,
10099                u64,
10100                u64,
10101                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
10102            );
10103            #[cfg(test)]
10104            #[allow(dead_code, unreachable_patterns)]
10105            fn _type_assertion(
10106                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10107            ) {
10108                match _t {
10109                    alloy_sol_types::private::AssertTypeEq::<
10110                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10111                    >(_) => {}
10112                }
10113            }
10114            #[automatically_derived]
10115            #[doc(hidden)]
10116            impl ::core::convert::From<stateHistoryCommitmentsReturn>
10117            for UnderlyingRustTuple<'_> {
10118                fn from(value: stateHistoryCommitmentsReturn) -> Self {
10119                    (
10120                        value.l1BlockHeight,
10121                        value.l1BlockTimestamp,
10122                        value.hotShotBlockHeight,
10123                        value.hotShotBlockCommRoot,
10124                    )
10125                }
10126            }
10127            #[automatically_derived]
10128            #[doc(hidden)]
10129            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10130            for stateHistoryCommitmentsReturn {
10131                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10132                    Self {
10133                        l1BlockHeight: tuple.0,
10134                        l1BlockTimestamp: tuple.1,
10135                        hotShotBlockHeight: tuple.2,
10136                        hotShotBlockCommRoot: tuple.3,
10137                    }
10138                }
10139            }
10140        }
10141        impl stateHistoryCommitmentsReturn {
10142            fn _tokenize(
10143                &self,
10144            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
10145                '_,
10146            > {
10147                (
10148                    <alloy::sol_types::sol_data::Uint<
10149                        64,
10150                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
10151                    <alloy::sol_types::sol_data::Uint<
10152                        64,
10153                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
10154                    <alloy::sol_types::sol_data::Uint<
10155                        64,
10156                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10157                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10158                        &self.hotShotBlockCommRoot,
10159                    ),
10160                )
10161            }
10162        }
10163        #[automatically_derived]
10164        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
10165            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10166            type Token<'a> = <Self::Parameters<
10167                'a,
10168            > as alloy_sol_types::SolType>::Token<'a>;
10169            type Return = stateHistoryCommitmentsReturn;
10170            type ReturnTuple<'a> = (
10171                alloy::sol_types::sol_data::Uint<64>,
10172                alloy::sol_types::sol_data::Uint<64>,
10173                alloy::sol_types::sol_data::Uint<64>,
10174                BN254::ScalarField,
10175            );
10176            type ReturnToken<'a> = <Self::ReturnTuple<
10177                'a,
10178            > as alloy_sol_types::SolType>::Token<'a>;
10179            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
10180            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
10181            #[inline]
10182            fn new<'a>(
10183                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10184            ) -> Self {
10185                tuple.into()
10186            }
10187            #[inline]
10188            fn tokenize(&self) -> Self::Token<'_> {
10189                (
10190                    <alloy::sol_types::sol_data::Uint<
10191                        256,
10192                    > as alloy_sol_types::SolType>::tokenize(&self.0),
10193                )
10194            }
10195            #[inline]
10196            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10197                stateHistoryCommitmentsReturn::_tokenize(ret)
10198            }
10199            #[inline]
10200            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10201                <Self::ReturnTuple<
10202                    '_,
10203                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10204                    .map(Into::into)
10205            }
10206            #[inline]
10207            fn abi_decode_returns_validate(
10208                data: &[u8],
10209            ) -> alloy_sol_types::Result<Self::Return> {
10210                <Self::ReturnTuple<
10211                    '_,
10212                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10213                    .map(Into::into)
10214            }
10215        }
10216    };
10217    #[derive(serde::Serialize, serde::Deserialize)]
10218    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10219    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
10220```solidity
10221function stateHistoryFirstIndex() external view returns (uint64);
10222```*/
10223    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10224    #[derive(Clone)]
10225    pub struct stateHistoryFirstIndexCall;
10226    #[derive(serde::Serialize, serde::Deserialize)]
10227    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10228    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
10229    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10230    #[derive(Clone)]
10231    pub struct stateHistoryFirstIndexReturn {
10232        #[allow(missing_docs)]
10233        pub _0: u64,
10234    }
10235    #[allow(
10236        non_camel_case_types,
10237        non_snake_case,
10238        clippy::pub_underscore_fields,
10239        clippy::style
10240    )]
10241    const _: () = {
10242        use alloy::sol_types as alloy_sol_types;
10243        {
10244            #[doc(hidden)]
10245            #[allow(dead_code)]
10246            type UnderlyingSolTuple<'a> = ();
10247            #[doc(hidden)]
10248            type UnderlyingRustTuple<'a> = ();
10249            #[cfg(test)]
10250            #[allow(dead_code, unreachable_patterns)]
10251            fn _type_assertion(
10252                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10253            ) {
10254                match _t {
10255                    alloy_sol_types::private::AssertTypeEq::<
10256                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10257                    >(_) => {}
10258                }
10259            }
10260            #[automatically_derived]
10261            #[doc(hidden)]
10262            impl ::core::convert::From<stateHistoryFirstIndexCall>
10263            for UnderlyingRustTuple<'_> {
10264                fn from(value: stateHistoryFirstIndexCall) -> Self {
10265                    ()
10266                }
10267            }
10268            #[automatically_derived]
10269            #[doc(hidden)]
10270            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10271            for stateHistoryFirstIndexCall {
10272                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10273                    Self
10274                }
10275            }
10276        }
10277        {
10278            #[doc(hidden)]
10279            #[allow(dead_code)]
10280            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10281            #[doc(hidden)]
10282            type UnderlyingRustTuple<'a> = (u64,);
10283            #[cfg(test)]
10284            #[allow(dead_code, unreachable_patterns)]
10285            fn _type_assertion(
10286                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10287            ) {
10288                match _t {
10289                    alloy_sol_types::private::AssertTypeEq::<
10290                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10291                    >(_) => {}
10292                }
10293            }
10294            #[automatically_derived]
10295            #[doc(hidden)]
10296            impl ::core::convert::From<stateHistoryFirstIndexReturn>
10297            for UnderlyingRustTuple<'_> {
10298                fn from(value: stateHistoryFirstIndexReturn) -> Self {
10299                    (value._0,)
10300                }
10301            }
10302            #[automatically_derived]
10303            #[doc(hidden)]
10304            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10305            for stateHistoryFirstIndexReturn {
10306                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10307                    Self { _0: tuple.0 }
10308                }
10309            }
10310        }
10311        #[automatically_derived]
10312        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
10313            type Parameters<'a> = ();
10314            type Token<'a> = <Self::Parameters<
10315                'a,
10316            > as alloy_sol_types::SolType>::Token<'a>;
10317            type Return = u64;
10318            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10319            type ReturnToken<'a> = <Self::ReturnTuple<
10320                'a,
10321            > as alloy_sol_types::SolType>::Token<'a>;
10322            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
10323            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
10324            #[inline]
10325            fn new<'a>(
10326                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10327            ) -> Self {
10328                tuple.into()
10329            }
10330            #[inline]
10331            fn tokenize(&self) -> Self::Token<'_> {
10332                ()
10333            }
10334            #[inline]
10335            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10336                (
10337                    <alloy::sol_types::sol_data::Uint<
10338                        64,
10339                    > as alloy_sol_types::SolType>::tokenize(ret),
10340                )
10341            }
10342            #[inline]
10343            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10344                <Self::ReturnTuple<
10345                    '_,
10346                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10347                    .map(|r| {
10348                        let r: stateHistoryFirstIndexReturn = r.into();
10349                        r._0
10350                    })
10351            }
10352            #[inline]
10353            fn abi_decode_returns_validate(
10354                data: &[u8],
10355            ) -> alloy_sol_types::Result<Self::Return> {
10356                <Self::ReturnTuple<
10357                    '_,
10358                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10359                    .map(|r| {
10360                        let r: stateHistoryFirstIndexReturn = r.into();
10361                        r._0
10362                    })
10363            }
10364        }
10365    };
10366    #[derive(serde::Serialize, serde::Deserialize)]
10367    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10368    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
10369```solidity
10370function stateHistoryRetentionPeriod() external view returns (uint32);
10371```*/
10372    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10373    #[derive(Clone)]
10374    pub struct stateHistoryRetentionPeriodCall;
10375    #[derive(serde::Serialize, serde::Deserialize)]
10376    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10377    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
10378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10379    #[derive(Clone)]
10380    pub struct stateHistoryRetentionPeriodReturn {
10381        #[allow(missing_docs)]
10382        pub _0: u32,
10383    }
10384    #[allow(
10385        non_camel_case_types,
10386        non_snake_case,
10387        clippy::pub_underscore_fields,
10388        clippy::style
10389    )]
10390    const _: () = {
10391        use alloy::sol_types as alloy_sol_types;
10392        {
10393            #[doc(hidden)]
10394            #[allow(dead_code)]
10395            type UnderlyingSolTuple<'a> = ();
10396            #[doc(hidden)]
10397            type UnderlyingRustTuple<'a> = ();
10398            #[cfg(test)]
10399            #[allow(dead_code, unreachable_patterns)]
10400            fn _type_assertion(
10401                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10402            ) {
10403                match _t {
10404                    alloy_sol_types::private::AssertTypeEq::<
10405                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10406                    >(_) => {}
10407                }
10408            }
10409            #[automatically_derived]
10410            #[doc(hidden)]
10411            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
10412            for UnderlyingRustTuple<'_> {
10413                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
10414                    ()
10415                }
10416            }
10417            #[automatically_derived]
10418            #[doc(hidden)]
10419            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10420            for stateHistoryRetentionPeriodCall {
10421                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10422                    Self
10423                }
10424            }
10425        }
10426        {
10427            #[doc(hidden)]
10428            #[allow(dead_code)]
10429            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10430            #[doc(hidden)]
10431            type UnderlyingRustTuple<'a> = (u32,);
10432            #[cfg(test)]
10433            #[allow(dead_code, unreachable_patterns)]
10434            fn _type_assertion(
10435                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10436            ) {
10437                match _t {
10438                    alloy_sol_types::private::AssertTypeEq::<
10439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10440                    >(_) => {}
10441                }
10442            }
10443            #[automatically_derived]
10444            #[doc(hidden)]
10445            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
10446            for UnderlyingRustTuple<'_> {
10447                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
10448                    (value._0,)
10449                }
10450            }
10451            #[automatically_derived]
10452            #[doc(hidden)]
10453            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10454            for stateHistoryRetentionPeriodReturn {
10455                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10456                    Self { _0: tuple.0 }
10457                }
10458            }
10459        }
10460        #[automatically_derived]
10461        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
10462            type Parameters<'a> = ();
10463            type Token<'a> = <Self::Parameters<
10464                'a,
10465            > as alloy_sol_types::SolType>::Token<'a>;
10466            type Return = u32;
10467            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10468            type ReturnToken<'a> = <Self::ReturnTuple<
10469                'a,
10470            > as alloy_sol_types::SolType>::Token<'a>;
10471            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
10472            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
10473            #[inline]
10474            fn new<'a>(
10475                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10476            ) -> Self {
10477                tuple.into()
10478            }
10479            #[inline]
10480            fn tokenize(&self) -> Self::Token<'_> {
10481                ()
10482            }
10483            #[inline]
10484            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10485                (
10486                    <alloy::sol_types::sol_data::Uint<
10487                        32,
10488                    > as alloy_sol_types::SolType>::tokenize(ret),
10489                )
10490            }
10491            #[inline]
10492            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10493                <Self::ReturnTuple<
10494                    '_,
10495                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10496                    .map(|r| {
10497                        let r: stateHistoryRetentionPeriodReturn = r.into();
10498                        r._0
10499                    })
10500            }
10501            #[inline]
10502            fn abi_decode_returns_validate(
10503                data: &[u8],
10504            ) -> alloy_sol_types::Result<Self::Return> {
10505                <Self::ReturnTuple<
10506                    '_,
10507                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10508                    .map(|r| {
10509                        let r: stateHistoryRetentionPeriodReturn = r.into();
10510                        r._0
10511                    })
10512            }
10513        }
10514    };
10515    #[derive(serde::Serialize, serde::Deserialize)]
10516    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10517    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
10518```solidity
10519function transferOwnership(address newOwner) external;
10520```*/
10521    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10522    #[derive(Clone)]
10523    pub struct transferOwnershipCall {
10524        #[allow(missing_docs)]
10525        pub newOwner: alloy::sol_types::private::Address,
10526    }
10527    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
10528    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10529    #[derive(Clone)]
10530    pub struct transferOwnershipReturn {}
10531    #[allow(
10532        non_camel_case_types,
10533        non_snake_case,
10534        clippy::pub_underscore_fields,
10535        clippy::style
10536    )]
10537    const _: () = {
10538        use alloy::sol_types as alloy_sol_types;
10539        {
10540            #[doc(hidden)]
10541            #[allow(dead_code)]
10542            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10543            #[doc(hidden)]
10544            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10545            #[cfg(test)]
10546            #[allow(dead_code, unreachable_patterns)]
10547            fn _type_assertion(
10548                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10549            ) {
10550                match _t {
10551                    alloy_sol_types::private::AssertTypeEq::<
10552                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10553                    >(_) => {}
10554                }
10555            }
10556            #[automatically_derived]
10557            #[doc(hidden)]
10558            impl ::core::convert::From<transferOwnershipCall>
10559            for UnderlyingRustTuple<'_> {
10560                fn from(value: transferOwnershipCall) -> Self {
10561                    (value.newOwner,)
10562                }
10563            }
10564            #[automatically_derived]
10565            #[doc(hidden)]
10566            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10567            for transferOwnershipCall {
10568                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10569                    Self { newOwner: tuple.0 }
10570                }
10571            }
10572        }
10573        {
10574            #[doc(hidden)]
10575            #[allow(dead_code)]
10576            type UnderlyingSolTuple<'a> = ();
10577            #[doc(hidden)]
10578            type UnderlyingRustTuple<'a> = ();
10579            #[cfg(test)]
10580            #[allow(dead_code, unreachable_patterns)]
10581            fn _type_assertion(
10582                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10583            ) {
10584                match _t {
10585                    alloy_sol_types::private::AssertTypeEq::<
10586                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10587                    >(_) => {}
10588                }
10589            }
10590            #[automatically_derived]
10591            #[doc(hidden)]
10592            impl ::core::convert::From<transferOwnershipReturn>
10593            for UnderlyingRustTuple<'_> {
10594                fn from(value: transferOwnershipReturn) -> Self {
10595                    ()
10596                }
10597            }
10598            #[automatically_derived]
10599            #[doc(hidden)]
10600            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10601            for transferOwnershipReturn {
10602                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10603                    Self {}
10604                }
10605            }
10606        }
10607        impl transferOwnershipReturn {
10608            fn _tokenize(
10609                &self,
10610            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10611                ()
10612            }
10613        }
10614        #[automatically_derived]
10615        impl alloy_sol_types::SolCall for transferOwnershipCall {
10616            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10617            type Token<'a> = <Self::Parameters<
10618                'a,
10619            > as alloy_sol_types::SolType>::Token<'a>;
10620            type Return = transferOwnershipReturn;
10621            type ReturnTuple<'a> = ();
10622            type ReturnToken<'a> = <Self::ReturnTuple<
10623                'a,
10624            > as alloy_sol_types::SolType>::Token<'a>;
10625            const SIGNATURE: &'static str = "transferOwnership(address)";
10626            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
10627            #[inline]
10628            fn new<'a>(
10629                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10630            ) -> Self {
10631                tuple.into()
10632            }
10633            #[inline]
10634            fn tokenize(&self) -> Self::Token<'_> {
10635                (
10636                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10637                        &self.newOwner,
10638                    ),
10639                )
10640            }
10641            #[inline]
10642            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10643                transferOwnershipReturn::_tokenize(ret)
10644            }
10645            #[inline]
10646            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10647                <Self::ReturnTuple<
10648                    '_,
10649                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10650                    .map(Into::into)
10651            }
10652            #[inline]
10653            fn abi_decode_returns_validate(
10654                data: &[u8],
10655            ) -> alloy_sol_types::Result<Self::Return> {
10656                <Self::ReturnTuple<
10657                    '_,
10658                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10659                    .map(Into::into)
10660            }
10661        }
10662    };
10663    #[derive(serde::Serialize, serde::Deserialize)]
10664    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10665    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
10666```solidity
10667function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
10668```*/
10669    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10670    #[derive(Clone)]
10671    pub struct upgradeToAndCallCall {
10672        #[allow(missing_docs)]
10673        pub newImplementation: alloy::sol_types::private::Address,
10674        #[allow(missing_docs)]
10675        pub data: alloy::sol_types::private::Bytes,
10676    }
10677    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
10678    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10679    #[derive(Clone)]
10680    pub struct upgradeToAndCallReturn {}
10681    #[allow(
10682        non_camel_case_types,
10683        non_snake_case,
10684        clippy::pub_underscore_fields,
10685        clippy::style
10686    )]
10687    const _: () = {
10688        use alloy::sol_types as alloy_sol_types;
10689        {
10690            #[doc(hidden)]
10691            #[allow(dead_code)]
10692            type UnderlyingSolTuple<'a> = (
10693                alloy::sol_types::sol_data::Address,
10694                alloy::sol_types::sol_data::Bytes,
10695            );
10696            #[doc(hidden)]
10697            type UnderlyingRustTuple<'a> = (
10698                alloy::sol_types::private::Address,
10699                alloy::sol_types::private::Bytes,
10700            );
10701            #[cfg(test)]
10702            #[allow(dead_code, unreachable_patterns)]
10703            fn _type_assertion(
10704                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10705            ) {
10706                match _t {
10707                    alloy_sol_types::private::AssertTypeEq::<
10708                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10709                    >(_) => {}
10710                }
10711            }
10712            #[automatically_derived]
10713            #[doc(hidden)]
10714            impl ::core::convert::From<upgradeToAndCallCall>
10715            for UnderlyingRustTuple<'_> {
10716                fn from(value: upgradeToAndCallCall) -> Self {
10717                    (value.newImplementation, value.data)
10718                }
10719            }
10720            #[automatically_derived]
10721            #[doc(hidden)]
10722            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10723            for upgradeToAndCallCall {
10724                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10725                    Self {
10726                        newImplementation: tuple.0,
10727                        data: tuple.1,
10728                    }
10729                }
10730            }
10731        }
10732        {
10733            #[doc(hidden)]
10734            #[allow(dead_code)]
10735            type UnderlyingSolTuple<'a> = ();
10736            #[doc(hidden)]
10737            type UnderlyingRustTuple<'a> = ();
10738            #[cfg(test)]
10739            #[allow(dead_code, unreachable_patterns)]
10740            fn _type_assertion(
10741                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10742            ) {
10743                match _t {
10744                    alloy_sol_types::private::AssertTypeEq::<
10745                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10746                    >(_) => {}
10747                }
10748            }
10749            #[automatically_derived]
10750            #[doc(hidden)]
10751            impl ::core::convert::From<upgradeToAndCallReturn>
10752            for UnderlyingRustTuple<'_> {
10753                fn from(value: upgradeToAndCallReturn) -> Self {
10754                    ()
10755                }
10756            }
10757            #[automatically_derived]
10758            #[doc(hidden)]
10759            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10760            for upgradeToAndCallReturn {
10761                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10762                    Self {}
10763                }
10764            }
10765        }
10766        impl upgradeToAndCallReturn {
10767            fn _tokenize(
10768                &self,
10769            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10770                ()
10771            }
10772        }
10773        #[automatically_derived]
10774        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
10775            type Parameters<'a> = (
10776                alloy::sol_types::sol_data::Address,
10777                alloy::sol_types::sol_data::Bytes,
10778            );
10779            type Token<'a> = <Self::Parameters<
10780                'a,
10781            > as alloy_sol_types::SolType>::Token<'a>;
10782            type Return = upgradeToAndCallReturn;
10783            type ReturnTuple<'a> = ();
10784            type ReturnToken<'a> = <Self::ReturnTuple<
10785                'a,
10786            > as alloy_sol_types::SolType>::Token<'a>;
10787            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
10788            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
10789            #[inline]
10790            fn new<'a>(
10791                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10792            ) -> Self {
10793                tuple.into()
10794            }
10795            #[inline]
10796            fn tokenize(&self) -> Self::Token<'_> {
10797                (
10798                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10799                        &self.newImplementation,
10800                    ),
10801                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10802                        &self.data,
10803                    ),
10804                )
10805            }
10806            #[inline]
10807            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10808                upgradeToAndCallReturn::_tokenize(ret)
10809            }
10810            #[inline]
10811            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10812                <Self::ReturnTuple<
10813                    '_,
10814                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10815                    .map(Into::into)
10816            }
10817            #[inline]
10818            fn abi_decode_returns_validate(
10819                data: &[u8],
10820            ) -> alloy_sol_types::Result<Self::Return> {
10821                <Self::ReturnTuple<
10822                    '_,
10823                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10824                    .map(Into::into)
10825            }
10826        }
10827    };
10828    ///Container for all the [`LightClientArbitrum`](self) function calls.
10829    #[derive(Clone)]
10830    #[derive(serde::Serialize, serde::Deserialize)]
10831    #[derive()]
10832    pub enum LightClientArbitrumCalls {
10833        #[allow(missing_docs)]
10834        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
10835        #[allow(missing_docs)]
10836        _getVk(_getVkCall),
10837        #[allow(missing_docs)]
10838        currentBlockNumber(currentBlockNumberCall),
10839        #[allow(missing_docs)]
10840        disablePermissionedProverMode(disablePermissionedProverModeCall),
10841        #[allow(missing_docs)]
10842        finalizedState(finalizedStateCall),
10843        #[allow(missing_docs)]
10844        genesisStakeTableState(genesisStakeTableStateCall),
10845        #[allow(missing_docs)]
10846        genesisState(genesisStateCall),
10847        #[allow(missing_docs)]
10848        getHotShotCommitment(getHotShotCommitmentCall),
10849        #[allow(missing_docs)]
10850        getStateHistoryCount(getStateHistoryCountCall),
10851        #[allow(missing_docs)]
10852        getVersion(getVersionCall),
10853        #[allow(missing_docs)]
10854        initialize(initializeCall),
10855        #[allow(missing_docs)]
10856        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
10857        #[allow(missing_docs)]
10858        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
10859        #[allow(missing_docs)]
10860        newFinalizedState(newFinalizedStateCall),
10861        #[allow(missing_docs)]
10862        owner(ownerCall),
10863        #[allow(missing_docs)]
10864        permissionedProver(permissionedProverCall),
10865        #[allow(missing_docs)]
10866        proxiableUUID(proxiableUUIDCall),
10867        #[allow(missing_docs)]
10868        renounceOwnership(renounceOwnershipCall),
10869        #[allow(missing_docs)]
10870        setPermissionedProver(setPermissionedProverCall),
10871        #[allow(missing_docs)]
10872        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
10873        #[allow(missing_docs)]
10874        stateHistoryCommitments(stateHistoryCommitmentsCall),
10875        #[allow(missing_docs)]
10876        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
10877        #[allow(missing_docs)]
10878        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
10879        #[allow(missing_docs)]
10880        transferOwnership(transferOwnershipCall),
10881        #[allow(missing_docs)]
10882        upgradeToAndCall(upgradeToAndCallCall),
10883    }
10884    impl LightClientArbitrumCalls {
10885        /// All the selectors of this enum.
10886        ///
10887        /// Note that the selectors might not be in the same order as the variants.
10888        /// No guarantees are made about the order of the selectors.
10889        ///
10890        /// Prefer using `SolInterface` methods instead.
10891        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10892            [1u8, 63u8, 165u8, 252u8],
10893            [2u8, 181u8, 146u8, 243u8],
10894            [13u8, 142u8, 110u8, 44u8],
10895            [18u8, 23u8, 60u8, 44u8],
10896            [32u8, 99u8, 212u8, 247u8],
10897            [47u8, 121u8, 136u8, 157u8],
10898            [49u8, 61u8, 247u8, 177u8],
10899            [55u8, 142u8, 194u8, 59u8],
10900            [66u8, 109u8, 49u8, 148u8],
10901            [79u8, 30u8, 242u8, 134u8],
10902            [82u8, 209u8, 144u8, 45u8],
10903            [105u8, 204u8, 106u8, 4u8],
10904            [113u8, 80u8, 24u8, 166u8],
10905            [130u8, 110u8, 65u8, 252u8],
10906            [133u8, 132u8, 210u8, 63u8],
10907            [141u8, 165u8, 203u8, 91u8],
10908            [150u8, 193u8, 202u8, 97u8],
10909            [155u8, 170u8, 60u8, 201u8],
10910            [159u8, 219u8, 84u8, 167u8],
10911            [173u8, 60u8, 177u8, 204u8],
10912            [194u8, 59u8, 158u8, 158u8],
10913            [210u8, 77u8, 147u8, 61u8],
10914            [224u8, 48u8, 51u8, 1u8],
10915            [242u8, 253u8, 227u8, 139u8],
10916            [249u8, 229u8, 13u8, 25u8],
10917        ];
10918        /// The names of the variants in the same order as `SELECTORS`.
10919        pub const VARIANT_NAMES: &'static [&'static str] = &[
10920            ::core::stringify!(setPermissionedProver),
10921            ::core::stringify!(stateHistoryCommitments),
10922            ::core::stringify!(getVersion),
10923            ::core::stringify!(_getVk),
10924            ::core::stringify!(newFinalizedState),
10925            ::core::stringify!(stateHistoryFirstIndex),
10926            ::core::stringify!(permissionedProver),
10927            ::core::stringify!(currentBlockNumber),
10928            ::core::stringify!(genesisStakeTableState),
10929            ::core::stringify!(upgradeToAndCall),
10930            ::core::stringify!(proxiableUUID),
10931            ::core::stringify!(disablePermissionedProverMode),
10932            ::core::stringify!(renounceOwnership),
10933            ::core::stringify!(isPermissionedProverEnabled),
10934            ::core::stringify!(getHotShotCommitment),
10935            ::core::stringify!(owner),
10936            ::core::stringify!(setstateHistoryRetentionPeriod),
10937            ::core::stringify!(initialize),
10938            ::core::stringify!(finalizedState),
10939            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
10940            ::core::stringify!(stateHistoryRetentionPeriod),
10941            ::core::stringify!(genesisState),
10942            ::core::stringify!(lagOverEscapeHatchThreshold),
10943            ::core::stringify!(transferOwnership),
10944            ::core::stringify!(getStateHistoryCount),
10945        ];
10946        /// The signatures in the same order as `SELECTORS`.
10947        pub const SIGNATURES: &'static [&'static str] = &[
10948            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
10949            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
10950            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
10951            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
10952            <newFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
10953            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
10954            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
10955            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
10956            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
10957            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
10958            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
10959            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
10960            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
10961            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
10962            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
10963            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
10964            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
10965            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
10966            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
10967            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
10968            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
10969            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
10970            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
10971            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
10972            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
10973        ];
10974        /// Returns the signature for the given selector, if known.
10975        #[inline]
10976        pub fn signature_by_selector(
10977            selector: [u8; 4usize],
10978        ) -> ::core::option::Option<&'static str> {
10979            match Self::SELECTORS.binary_search(&selector) {
10980                ::core::result::Result::Ok(idx) => {
10981                    ::core::option::Option::Some(Self::SIGNATURES[idx])
10982                }
10983                ::core::result::Result::Err(_) => ::core::option::Option::None,
10984            }
10985        }
10986        /// Returns the enum variant name for the given selector, if known.
10987        #[inline]
10988        pub fn name_by_selector(
10989            selector: [u8; 4usize],
10990        ) -> ::core::option::Option<&'static str> {
10991            let sig = Self::signature_by_selector(selector)?;
10992            sig.split_once('(').map(|(name, _)| name)
10993        }
10994    }
10995    #[automatically_derived]
10996    impl alloy_sol_types::SolInterface for LightClientArbitrumCalls {
10997        const NAME: &'static str = "LightClientArbitrumCalls";
10998        const MIN_DATA_LENGTH: usize = 0usize;
10999        const COUNT: usize = 25usize;
11000        #[inline]
11001        fn selector(&self) -> [u8; 4] {
11002            match self {
11003                Self::UPGRADE_INTERFACE_VERSION(_) => {
11004                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
11005                }
11006                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
11007                Self::currentBlockNumber(_) => {
11008                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
11009                }
11010                Self::disablePermissionedProverMode(_) => {
11011                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
11012                }
11013                Self::finalizedState(_) => {
11014                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11015                }
11016                Self::genesisStakeTableState(_) => {
11017                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
11018                }
11019                Self::genesisState(_) => {
11020                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
11021                }
11022                Self::getHotShotCommitment(_) => {
11023                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
11024                }
11025                Self::getStateHistoryCount(_) => {
11026                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
11027                }
11028                Self::getVersion(_) => {
11029                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
11030                }
11031                Self::initialize(_) => {
11032                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
11033                }
11034                Self::isPermissionedProverEnabled(_) => {
11035                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
11036                }
11037                Self::lagOverEscapeHatchThreshold(_) => {
11038                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
11039                }
11040                Self::newFinalizedState(_) => {
11041                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
11042                }
11043                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
11044                Self::permissionedProver(_) => {
11045                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
11046                }
11047                Self::proxiableUUID(_) => {
11048                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
11049                }
11050                Self::renounceOwnership(_) => {
11051                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
11052                }
11053                Self::setPermissionedProver(_) => {
11054                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
11055                }
11056                Self::setstateHistoryRetentionPeriod(_) => {
11057                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11058                }
11059                Self::stateHistoryCommitments(_) => {
11060                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
11061                }
11062                Self::stateHistoryFirstIndex(_) => {
11063                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
11064                }
11065                Self::stateHistoryRetentionPeriod(_) => {
11066                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
11067                }
11068                Self::transferOwnership(_) => {
11069                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
11070                }
11071                Self::upgradeToAndCall(_) => {
11072                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
11073                }
11074            }
11075        }
11076        #[inline]
11077        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11078            Self::SELECTORS.get(i).copied()
11079        }
11080        #[inline]
11081        fn valid_selector(selector: [u8; 4]) -> bool {
11082            Self::SELECTORS.binary_search(&selector).is_ok()
11083        }
11084        #[inline]
11085        #[allow(non_snake_case)]
11086        fn abi_decode_raw(
11087            selector: [u8; 4],
11088            data: &[u8],
11089        ) -> alloy_sol_types::Result<Self> {
11090            static DECODE_SHIMS: &[fn(
11091                &[u8],
11092            ) -> alloy_sol_types::Result<LightClientArbitrumCalls>] = &[
11093                {
11094                    fn setPermissionedProver(
11095                        data: &[u8],
11096                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11097                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11098                                data,
11099                            )
11100                            .map(LightClientArbitrumCalls::setPermissionedProver)
11101                    }
11102                    setPermissionedProver
11103                },
11104                {
11105                    fn stateHistoryCommitments(
11106                        data: &[u8],
11107                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11108                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
11109                                data,
11110                            )
11111                            .map(LightClientArbitrumCalls::stateHistoryCommitments)
11112                    }
11113                    stateHistoryCommitments
11114                },
11115                {
11116                    fn getVersion(
11117                        data: &[u8],
11118                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11119                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
11120                                data,
11121                            )
11122                            .map(LightClientArbitrumCalls::getVersion)
11123                    }
11124                    getVersion
11125                },
11126                {
11127                    fn _getVk(
11128                        data: &[u8],
11129                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11130                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
11131                            .map(LightClientArbitrumCalls::_getVk)
11132                    }
11133                    _getVk
11134                },
11135                {
11136                    fn newFinalizedState(
11137                        data: &[u8],
11138                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11139                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11140                                data,
11141                            )
11142                            .map(LightClientArbitrumCalls::newFinalizedState)
11143                    }
11144                    newFinalizedState
11145                },
11146                {
11147                    fn stateHistoryFirstIndex(
11148                        data: &[u8],
11149                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11150                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
11151                                data,
11152                            )
11153                            .map(LightClientArbitrumCalls::stateHistoryFirstIndex)
11154                    }
11155                    stateHistoryFirstIndex
11156                },
11157                {
11158                    fn permissionedProver(
11159                        data: &[u8],
11160                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11161                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
11162                                data,
11163                            )
11164                            .map(LightClientArbitrumCalls::permissionedProver)
11165                    }
11166                    permissionedProver
11167                },
11168                {
11169                    fn currentBlockNumber(
11170                        data: &[u8],
11171                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11172                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
11173                                data,
11174                            )
11175                            .map(LightClientArbitrumCalls::currentBlockNumber)
11176                    }
11177                    currentBlockNumber
11178                },
11179                {
11180                    fn genesisStakeTableState(
11181                        data: &[u8],
11182                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11183                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11184                                data,
11185                            )
11186                            .map(LightClientArbitrumCalls::genesisStakeTableState)
11187                    }
11188                    genesisStakeTableState
11189                },
11190                {
11191                    fn upgradeToAndCall(
11192                        data: &[u8],
11193                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11194                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
11195                                data,
11196                            )
11197                            .map(LightClientArbitrumCalls::upgradeToAndCall)
11198                    }
11199                    upgradeToAndCall
11200                },
11201                {
11202                    fn proxiableUUID(
11203                        data: &[u8],
11204                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11205                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
11206                                data,
11207                            )
11208                            .map(LightClientArbitrumCalls::proxiableUUID)
11209                    }
11210                    proxiableUUID
11211                },
11212                {
11213                    fn disablePermissionedProverMode(
11214                        data: &[u8],
11215                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11216                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11217                                data,
11218                            )
11219                            .map(LightClientArbitrumCalls::disablePermissionedProverMode)
11220                    }
11221                    disablePermissionedProverMode
11222                },
11223                {
11224                    fn renounceOwnership(
11225                        data: &[u8],
11226                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11227                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11228                                data,
11229                            )
11230                            .map(LightClientArbitrumCalls::renounceOwnership)
11231                    }
11232                    renounceOwnership
11233                },
11234                {
11235                    fn isPermissionedProverEnabled(
11236                        data: &[u8],
11237                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11238                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
11239                                data,
11240                            )
11241                            .map(LightClientArbitrumCalls::isPermissionedProverEnabled)
11242                    }
11243                    isPermissionedProverEnabled
11244                },
11245                {
11246                    fn getHotShotCommitment(
11247                        data: &[u8],
11248                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11249                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
11250                                data,
11251                            )
11252                            .map(LightClientArbitrumCalls::getHotShotCommitment)
11253                    }
11254                    getHotShotCommitment
11255                },
11256                {
11257                    fn owner(
11258                        data: &[u8],
11259                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11260                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
11261                            .map(LightClientArbitrumCalls::owner)
11262                    }
11263                    owner
11264                },
11265                {
11266                    fn setstateHistoryRetentionPeriod(
11267                        data: &[u8],
11268                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11269                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11270                                data,
11271                            )
11272                            .map(
11273                                LightClientArbitrumCalls::setstateHistoryRetentionPeriod,
11274                            )
11275                    }
11276                    setstateHistoryRetentionPeriod
11277                },
11278                {
11279                    fn initialize(
11280                        data: &[u8],
11281                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11282                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11283                                data,
11284                            )
11285                            .map(LightClientArbitrumCalls::initialize)
11286                    }
11287                    initialize
11288                },
11289                {
11290                    fn finalizedState(
11291                        data: &[u8],
11292                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11293                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11294                                data,
11295                            )
11296                            .map(LightClientArbitrumCalls::finalizedState)
11297                    }
11298                    finalizedState
11299                },
11300                {
11301                    fn UPGRADE_INTERFACE_VERSION(
11302                        data: &[u8],
11303                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11304                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
11305                                data,
11306                            )
11307                            .map(LightClientArbitrumCalls::UPGRADE_INTERFACE_VERSION)
11308                    }
11309                    UPGRADE_INTERFACE_VERSION
11310                },
11311                {
11312                    fn stateHistoryRetentionPeriod(
11313                        data: &[u8],
11314                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11315                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11316                                data,
11317                            )
11318                            .map(LightClientArbitrumCalls::stateHistoryRetentionPeriod)
11319                    }
11320                    stateHistoryRetentionPeriod
11321                },
11322                {
11323                    fn genesisState(
11324                        data: &[u8],
11325                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11326                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11327                                data,
11328                            )
11329                            .map(LightClientArbitrumCalls::genesisState)
11330                    }
11331                    genesisState
11332                },
11333                {
11334                    fn lagOverEscapeHatchThreshold(
11335                        data: &[u8],
11336                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11337                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
11338                                data,
11339                            )
11340                            .map(LightClientArbitrumCalls::lagOverEscapeHatchThreshold)
11341                    }
11342                    lagOverEscapeHatchThreshold
11343                },
11344                {
11345                    fn transferOwnership(
11346                        data: &[u8],
11347                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11348                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11349                                data,
11350                            )
11351                            .map(LightClientArbitrumCalls::transferOwnership)
11352                    }
11353                    transferOwnership
11354                },
11355                {
11356                    fn getStateHistoryCount(
11357                        data: &[u8],
11358                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11359                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
11360                                data,
11361                            )
11362                            .map(LightClientArbitrumCalls::getStateHistoryCount)
11363                    }
11364                    getStateHistoryCount
11365                },
11366            ];
11367            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11368                return Err(
11369                    alloy_sol_types::Error::unknown_selector(
11370                        <Self as alloy_sol_types::SolInterface>::NAME,
11371                        selector,
11372                    ),
11373                );
11374            };
11375            DECODE_SHIMS[idx](data)
11376        }
11377        #[inline]
11378        #[allow(non_snake_case)]
11379        fn abi_decode_raw_validate(
11380            selector: [u8; 4],
11381            data: &[u8],
11382        ) -> alloy_sol_types::Result<Self> {
11383            static DECODE_VALIDATE_SHIMS: &[fn(
11384                &[u8],
11385            ) -> alloy_sol_types::Result<LightClientArbitrumCalls>] = &[
11386                {
11387                    fn setPermissionedProver(
11388                        data: &[u8],
11389                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11390                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11391                                data,
11392                            )
11393                            .map(LightClientArbitrumCalls::setPermissionedProver)
11394                    }
11395                    setPermissionedProver
11396                },
11397                {
11398                    fn stateHistoryCommitments(
11399                        data: &[u8],
11400                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11401                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11402                                data,
11403                            )
11404                            .map(LightClientArbitrumCalls::stateHistoryCommitments)
11405                    }
11406                    stateHistoryCommitments
11407                },
11408                {
11409                    fn getVersion(
11410                        data: &[u8],
11411                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11412                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11413                                data,
11414                            )
11415                            .map(LightClientArbitrumCalls::getVersion)
11416                    }
11417                    getVersion
11418                },
11419                {
11420                    fn _getVk(
11421                        data: &[u8],
11422                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11423                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11424                                data,
11425                            )
11426                            .map(LightClientArbitrumCalls::_getVk)
11427                    }
11428                    _getVk
11429                },
11430                {
11431                    fn newFinalizedState(
11432                        data: &[u8],
11433                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11434                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11435                                data,
11436                            )
11437                            .map(LightClientArbitrumCalls::newFinalizedState)
11438                    }
11439                    newFinalizedState
11440                },
11441                {
11442                    fn stateHistoryFirstIndex(
11443                        data: &[u8],
11444                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11445                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11446                                data,
11447                            )
11448                            .map(LightClientArbitrumCalls::stateHistoryFirstIndex)
11449                    }
11450                    stateHistoryFirstIndex
11451                },
11452                {
11453                    fn permissionedProver(
11454                        data: &[u8],
11455                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11456                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11457                                data,
11458                            )
11459                            .map(LightClientArbitrumCalls::permissionedProver)
11460                    }
11461                    permissionedProver
11462                },
11463                {
11464                    fn currentBlockNumber(
11465                        data: &[u8],
11466                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11467                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11468                                data,
11469                            )
11470                            .map(LightClientArbitrumCalls::currentBlockNumber)
11471                    }
11472                    currentBlockNumber
11473                },
11474                {
11475                    fn genesisStakeTableState(
11476                        data: &[u8],
11477                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11478                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11479                                data,
11480                            )
11481                            .map(LightClientArbitrumCalls::genesisStakeTableState)
11482                    }
11483                    genesisStakeTableState
11484                },
11485                {
11486                    fn upgradeToAndCall(
11487                        data: &[u8],
11488                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11489                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11490                                data,
11491                            )
11492                            .map(LightClientArbitrumCalls::upgradeToAndCall)
11493                    }
11494                    upgradeToAndCall
11495                },
11496                {
11497                    fn proxiableUUID(
11498                        data: &[u8],
11499                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11500                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11501                                data,
11502                            )
11503                            .map(LightClientArbitrumCalls::proxiableUUID)
11504                    }
11505                    proxiableUUID
11506                },
11507                {
11508                    fn disablePermissionedProverMode(
11509                        data: &[u8],
11510                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11511                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11512                                data,
11513                            )
11514                            .map(LightClientArbitrumCalls::disablePermissionedProverMode)
11515                    }
11516                    disablePermissionedProverMode
11517                },
11518                {
11519                    fn renounceOwnership(
11520                        data: &[u8],
11521                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11522                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11523                                data,
11524                            )
11525                            .map(LightClientArbitrumCalls::renounceOwnership)
11526                    }
11527                    renounceOwnership
11528                },
11529                {
11530                    fn isPermissionedProverEnabled(
11531                        data: &[u8],
11532                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11533                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11534                                data,
11535                            )
11536                            .map(LightClientArbitrumCalls::isPermissionedProverEnabled)
11537                    }
11538                    isPermissionedProverEnabled
11539                },
11540                {
11541                    fn getHotShotCommitment(
11542                        data: &[u8],
11543                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11544                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11545                                data,
11546                            )
11547                            .map(LightClientArbitrumCalls::getHotShotCommitment)
11548                    }
11549                    getHotShotCommitment
11550                },
11551                {
11552                    fn owner(
11553                        data: &[u8],
11554                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11555                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11556                                data,
11557                            )
11558                            .map(LightClientArbitrumCalls::owner)
11559                    }
11560                    owner
11561                },
11562                {
11563                    fn setstateHistoryRetentionPeriod(
11564                        data: &[u8],
11565                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11566                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11567                                data,
11568                            )
11569                            .map(
11570                                LightClientArbitrumCalls::setstateHistoryRetentionPeriod,
11571                            )
11572                    }
11573                    setstateHistoryRetentionPeriod
11574                },
11575                {
11576                    fn initialize(
11577                        data: &[u8],
11578                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11579                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11580                                data,
11581                            )
11582                            .map(LightClientArbitrumCalls::initialize)
11583                    }
11584                    initialize
11585                },
11586                {
11587                    fn finalizedState(
11588                        data: &[u8],
11589                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11590                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11591                                data,
11592                            )
11593                            .map(LightClientArbitrumCalls::finalizedState)
11594                    }
11595                    finalizedState
11596                },
11597                {
11598                    fn UPGRADE_INTERFACE_VERSION(
11599                        data: &[u8],
11600                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11601                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11602                                data,
11603                            )
11604                            .map(LightClientArbitrumCalls::UPGRADE_INTERFACE_VERSION)
11605                    }
11606                    UPGRADE_INTERFACE_VERSION
11607                },
11608                {
11609                    fn stateHistoryRetentionPeriod(
11610                        data: &[u8],
11611                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11612                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11613                                data,
11614                            )
11615                            .map(LightClientArbitrumCalls::stateHistoryRetentionPeriod)
11616                    }
11617                    stateHistoryRetentionPeriod
11618                },
11619                {
11620                    fn genesisState(
11621                        data: &[u8],
11622                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11623                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11624                                data,
11625                            )
11626                            .map(LightClientArbitrumCalls::genesisState)
11627                    }
11628                    genesisState
11629                },
11630                {
11631                    fn lagOverEscapeHatchThreshold(
11632                        data: &[u8],
11633                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11634                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11635                                data,
11636                            )
11637                            .map(LightClientArbitrumCalls::lagOverEscapeHatchThreshold)
11638                    }
11639                    lagOverEscapeHatchThreshold
11640                },
11641                {
11642                    fn transferOwnership(
11643                        data: &[u8],
11644                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11645                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11646                                data,
11647                            )
11648                            .map(LightClientArbitrumCalls::transferOwnership)
11649                    }
11650                    transferOwnership
11651                },
11652                {
11653                    fn getStateHistoryCount(
11654                        data: &[u8],
11655                    ) -> alloy_sol_types::Result<LightClientArbitrumCalls> {
11656                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11657                                data,
11658                            )
11659                            .map(LightClientArbitrumCalls::getStateHistoryCount)
11660                    }
11661                    getStateHistoryCount
11662                },
11663            ];
11664            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11665                return Err(
11666                    alloy_sol_types::Error::unknown_selector(
11667                        <Self as alloy_sol_types::SolInterface>::NAME,
11668                        selector,
11669                    ),
11670                );
11671            };
11672            DECODE_VALIDATE_SHIMS[idx](data)
11673        }
11674        #[inline]
11675        fn abi_encoded_size(&self) -> usize {
11676            match self {
11677                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11678                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
11679                        inner,
11680                    )
11681                }
11682                Self::_getVk(inner) => {
11683                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11684                }
11685                Self::currentBlockNumber(inner) => {
11686                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11687                        inner,
11688                    )
11689                }
11690                Self::disablePermissionedProverMode(inner) => {
11691                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11692                        inner,
11693                    )
11694                }
11695                Self::finalizedState(inner) => {
11696                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11697                        inner,
11698                    )
11699                }
11700                Self::genesisStakeTableState(inner) => {
11701                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11702                        inner,
11703                    )
11704                }
11705                Self::genesisState(inner) => {
11706                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11707                        inner,
11708                    )
11709                }
11710                Self::getHotShotCommitment(inner) => {
11711                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
11712                        inner,
11713                    )
11714                }
11715                Self::getStateHistoryCount(inner) => {
11716                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
11717                        inner,
11718                    )
11719                }
11720                Self::getVersion(inner) => {
11721                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11722                }
11723                Self::initialize(inner) => {
11724                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11725                }
11726                Self::isPermissionedProverEnabled(inner) => {
11727                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
11728                        inner,
11729                    )
11730                }
11731                Self::lagOverEscapeHatchThreshold(inner) => {
11732                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
11733                        inner,
11734                    )
11735                }
11736                Self::newFinalizedState(inner) => {
11737                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11738                        inner,
11739                    )
11740                }
11741                Self::owner(inner) => {
11742                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11743                }
11744                Self::permissionedProver(inner) => {
11745                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11746                        inner,
11747                    )
11748                }
11749                Self::proxiableUUID(inner) => {
11750                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
11751                        inner,
11752                    )
11753                }
11754                Self::renounceOwnership(inner) => {
11755                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11756                        inner,
11757                    )
11758                }
11759                Self::setPermissionedProver(inner) => {
11760                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11761                        inner,
11762                    )
11763                }
11764                Self::setstateHistoryRetentionPeriod(inner) => {
11765                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11766                        inner,
11767                    )
11768                }
11769                Self::stateHistoryCommitments(inner) => {
11770                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11771                        inner,
11772                    )
11773                }
11774                Self::stateHistoryFirstIndex(inner) => {
11775                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11776                        inner,
11777                    )
11778                }
11779                Self::stateHistoryRetentionPeriod(inner) => {
11780                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11781                        inner,
11782                    )
11783                }
11784                Self::transferOwnership(inner) => {
11785                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11786                        inner,
11787                    )
11788                }
11789                Self::upgradeToAndCall(inner) => {
11790                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
11791                        inner,
11792                    )
11793                }
11794            }
11795        }
11796        #[inline]
11797        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11798            match self {
11799                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11800                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
11801                        inner,
11802                        out,
11803                    )
11804                }
11805                Self::_getVk(inner) => {
11806                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11807                }
11808                Self::currentBlockNumber(inner) => {
11809                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11810                        inner,
11811                        out,
11812                    )
11813                }
11814                Self::disablePermissionedProverMode(inner) => {
11815                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11816                        inner,
11817                        out,
11818                    )
11819                }
11820                Self::finalizedState(inner) => {
11821                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11822                        inner,
11823                        out,
11824                    )
11825                }
11826                Self::genesisStakeTableState(inner) => {
11827                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11828                        inner,
11829                        out,
11830                    )
11831                }
11832                Self::genesisState(inner) => {
11833                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11834                        inner,
11835                        out,
11836                    )
11837                }
11838                Self::getHotShotCommitment(inner) => {
11839                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
11840                        inner,
11841                        out,
11842                    )
11843                }
11844                Self::getStateHistoryCount(inner) => {
11845                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
11846                        inner,
11847                        out,
11848                    )
11849                }
11850                Self::getVersion(inner) => {
11851                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
11852                        inner,
11853                        out,
11854                    )
11855                }
11856                Self::initialize(inner) => {
11857                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11858                        inner,
11859                        out,
11860                    )
11861                }
11862                Self::isPermissionedProverEnabled(inner) => {
11863                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
11864                        inner,
11865                        out,
11866                    )
11867                }
11868                Self::lagOverEscapeHatchThreshold(inner) => {
11869                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
11870                        inner,
11871                        out,
11872                    )
11873                }
11874                Self::newFinalizedState(inner) => {
11875                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11876                        inner,
11877                        out,
11878                    )
11879                }
11880                Self::owner(inner) => {
11881                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11882                }
11883                Self::permissionedProver(inner) => {
11884                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11885                        inner,
11886                        out,
11887                    )
11888                }
11889                Self::proxiableUUID(inner) => {
11890                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
11891                        inner,
11892                        out,
11893                    )
11894                }
11895                Self::renounceOwnership(inner) => {
11896                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11897                        inner,
11898                        out,
11899                    )
11900                }
11901                Self::setPermissionedProver(inner) => {
11902                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11903                        inner,
11904                        out,
11905                    )
11906                }
11907                Self::setstateHistoryRetentionPeriod(inner) => {
11908                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11909                        inner,
11910                        out,
11911                    )
11912                }
11913                Self::stateHistoryCommitments(inner) => {
11914                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11915                        inner,
11916                        out,
11917                    )
11918                }
11919                Self::stateHistoryFirstIndex(inner) => {
11920                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11921                        inner,
11922                        out,
11923                    )
11924                }
11925                Self::stateHistoryRetentionPeriod(inner) => {
11926                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11927                        inner,
11928                        out,
11929                    )
11930                }
11931                Self::transferOwnership(inner) => {
11932                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11933                        inner,
11934                        out,
11935                    )
11936                }
11937                Self::upgradeToAndCall(inner) => {
11938                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
11939                        inner,
11940                        out,
11941                    )
11942                }
11943            }
11944        }
11945    }
11946    ///Container for all the [`LightClientArbitrum`](self) custom errors.
11947    #[derive(Clone)]
11948    #[derive(serde::Serialize, serde::Deserialize)]
11949    #[derive(Debug, PartialEq, Eq, Hash)]
11950    pub enum LightClientArbitrumErrors {
11951        #[allow(missing_docs)]
11952        AddressEmptyCode(AddressEmptyCode),
11953        #[allow(missing_docs)]
11954        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
11955        #[allow(missing_docs)]
11956        ERC1967NonPayable(ERC1967NonPayable),
11957        #[allow(missing_docs)]
11958        FailedInnerCall(FailedInnerCall),
11959        #[allow(missing_docs)]
11960        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
11961        #[allow(missing_docs)]
11962        InvalidAddress(InvalidAddress),
11963        #[allow(missing_docs)]
11964        InvalidArgs(InvalidArgs),
11965        #[allow(missing_docs)]
11966        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
11967        #[allow(missing_docs)]
11968        InvalidInitialization(InvalidInitialization),
11969        #[allow(missing_docs)]
11970        InvalidMaxStateHistory(InvalidMaxStateHistory),
11971        #[allow(missing_docs)]
11972        InvalidProof(InvalidProof),
11973        #[allow(missing_docs)]
11974        InvalidScalar(InvalidScalar),
11975        #[allow(missing_docs)]
11976        NoChangeRequired(NoChangeRequired),
11977        #[allow(missing_docs)]
11978        NotInitializing(NotInitializing),
11979        #[allow(missing_docs)]
11980        OutdatedState(OutdatedState),
11981        #[allow(missing_docs)]
11982        OwnableInvalidOwner(OwnableInvalidOwner),
11983        #[allow(missing_docs)]
11984        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
11985        #[allow(missing_docs)]
11986        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
11987        #[allow(missing_docs)]
11988        ProverNotPermissioned(ProverNotPermissioned),
11989        #[allow(missing_docs)]
11990        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
11991        #[allow(missing_docs)]
11992        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
11993        #[allow(missing_docs)]
11994        WrongStakeTableUsed(WrongStakeTableUsed),
11995    }
11996    impl LightClientArbitrumErrors {
11997        /// All the selectors of this enum.
11998        ///
11999        /// Note that the selectors might not be in the same order as the variants.
12000        /// No guarantees are made about the order of the selectors.
12001        ///
12002        /// Prefer using `SolInterface` methods instead.
12003        pub const SELECTORS: &'static [[u8; 4usize]] = &[
12004            [5u8, 28u8, 70u8, 239u8],
12005            [5u8, 176u8, 92u8, 204u8],
12006            [9u8, 189u8, 227u8, 57u8],
12007            [17u8, 140u8, 218u8, 167u8],
12008            [20u8, 37u8, 234u8, 66u8],
12009            [30u8, 79u8, 189u8, 247u8],
12010            [47u8, 171u8, 146u8, 202u8],
12011            [76u8, 156u8, 140u8, 227u8],
12012            [81u8, 97u8, 128u8, 137u8],
12013            [97u8, 90u8, 146u8, 100u8],
12014            [153u8, 150u8, 179u8, 21u8],
12015            [161u8, 186u8, 7u8, 238u8],
12016            [163u8, 166u8, 71u8, 128u8],
12017            [168u8, 99u8, 174u8, 201u8],
12018            [170u8, 29u8, 73u8, 164u8],
12019            [176u8, 180u8, 56u8, 119u8],
12020            [179u8, 152u8, 151u8, 159u8],
12021            [215u8, 230u8, 188u8, 248u8],
12022            [224u8, 124u8, 141u8, 186u8],
12023            [230u8, 196u8, 36u8, 123u8],
12024            [244u8, 160u8, 238u8, 224u8],
12025            [249u8, 46u8, 232u8, 169u8],
12026        ];
12027        /// The names of the variants in the same order as `SELECTORS`.
12028        pub const VARIANT_NAMES: &'static [&'static str] = &[
12029            ::core::stringify!(OutdatedState),
12030            ::core::stringify!(InvalidScalar),
12031            ::core::stringify!(InvalidProof),
12032            ::core::stringify!(OwnableUnauthorizedAccount),
12033            ::core::stringify!(FailedInnerCall),
12034            ::core::stringify!(OwnableInvalidOwner),
12035            ::core::stringify!(OwnershipCannotBeRenounced),
12036            ::core::stringify!(ERC1967InvalidImplementation),
12037            ::core::stringify!(WrongStakeTableUsed),
12038            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
12039            ::core::stringify!(AddressEmptyCode),
12040            ::core::stringify!(InvalidArgs),
12041            ::core::stringify!(ProverNotPermissioned),
12042            ::core::stringify!(NoChangeRequired),
12043            ::core::stringify!(UUPSUnsupportedProxiableUUID),
12044            ::core::stringify!(InsufficientSnapshotHistory),
12045            ::core::stringify!(ERC1967NonPayable),
12046            ::core::stringify!(NotInitializing),
12047            ::core::stringify!(UUPSUnauthorizedCallContext),
12048            ::core::stringify!(InvalidAddress),
12049            ::core::stringify!(InvalidMaxStateHistory),
12050            ::core::stringify!(InvalidInitialization),
12051        ];
12052        /// The signatures in the same order as `SELECTORS`.
12053        pub const SIGNATURES: &'static [&'static str] = &[
12054            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
12055            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
12056            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
12057            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
12058            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
12059            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
12060            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
12061            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
12062            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
12063            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
12064            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
12065            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
12066            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
12067            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
12068            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
12069            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
12070            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
12071            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
12072            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
12073            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
12074            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
12075            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
12076        ];
12077        /// Returns the signature for the given selector, if known.
12078        #[inline]
12079        pub fn signature_by_selector(
12080            selector: [u8; 4usize],
12081        ) -> ::core::option::Option<&'static str> {
12082            match Self::SELECTORS.binary_search(&selector) {
12083                ::core::result::Result::Ok(idx) => {
12084                    ::core::option::Option::Some(Self::SIGNATURES[idx])
12085                }
12086                ::core::result::Result::Err(_) => ::core::option::Option::None,
12087            }
12088        }
12089        /// Returns the enum variant name for the given selector, if known.
12090        #[inline]
12091        pub fn name_by_selector(
12092            selector: [u8; 4usize],
12093        ) -> ::core::option::Option<&'static str> {
12094            let sig = Self::signature_by_selector(selector)?;
12095            sig.split_once('(').map(|(name, _)| name)
12096        }
12097    }
12098    #[automatically_derived]
12099    impl alloy_sol_types::SolInterface for LightClientArbitrumErrors {
12100        const NAME: &'static str = "LightClientArbitrumErrors";
12101        const MIN_DATA_LENGTH: usize = 0usize;
12102        const COUNT: usize = 22usize;
12103        #[inline]
12104        fn selector(&self) -> [u8; 4] {
12105            match self {
12106                Self::AddressEmptyCode(_) => {
12107                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
12108                }
12109                Self::ERC1967InvalidImplementation(_) => {
12110                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
12111                }
12112                Self::ERC1967NonPayable(_) => {
12113                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
12114                }
12115                Self::FailedInnerCall(_) => {
12116                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
12117                }
12118                Self::InsufficientSnapshotHistory(_) => {
12119                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
12120                }
12121                Self::InvalidAddress(_) => {
12122                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
12123                }
12124                Self::InvalidArgs(_) => {
12125                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
12126                }
12127                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
12128                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
12129                }
12130                Self::InvalidInitialization(_) => {
12131                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
12132                }
12133                Self::InvalidMaxStateHistory(_) => {
12134                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
12135                }
12136                Self::InvalidProof(_) => {
12137                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
12138                }
12139                Self::InvalidScalar(_) => {
12140                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
12141                }
12142                Self::NoChangeRequired(_) => {
12143                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
12144                }
12145                Self::NotInitializing(_) => {
12146                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
12147                }
12148                Self::OutdatedState(_) => {
12149                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
12150                }
12151                Self::OwnableInvalidOwner(_) => {
12152                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
12153                }
12154                Self::OwnableUnauthorizedAccount(_) => {
12155                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
12156                }
12157                Self::OwnershipCannotBeRenounced(_) => {
12158                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
12159                }
12160                Self::ProverNotPermissioned(_) => {
12161                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
12162                }
12163                Self::UUPSUnauthorizedCallContext(_) => {
12164                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
12165                }
12166                Self::UUPSUnsupportedProxiableUUID(_) => {
12167                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
12168                }
12169                Self::WrongStakeTableUsed(_) => {
12170                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
12171                }
12172            }
12173        }
12174        #[inline]
12175        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
12176            Self::SELECTORS.get(i).copied()
12177        }
12178        #[inline]
12179        fn valid_selector(selector: [u8; 4]) -> bool {
12180            Self::SELECTORS.binary_search(&selector).is_ok()
12181        }
12182        #[inline]
12183        #[allow(non_snake_case)]
12184        fn abi_decode_raw(
12185            selector: [u8; 4],
12186            data: &[u8],
12187        ) -> alloy_sol_types::Result<Self> {
12188            static DECODE_SHIMS: &[fn(
12189                &[u8],
12190            ) -> alloy_sol_types::Result<LightClientArbitrumErrors>] = &[
12191                {
12192                    fn OutdatedState(
12193                        data: &[u8],
12194                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12195                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
12196                                data,
12197                            )
12198                            .map(LightClientArbitrumErrors::OutdatedState)
12199                    }
12200                    OutdatedState
12201                },
12202                {
12203                    fn InvalidScalar(
12204                        data: &[u8],
12205                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12206                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
12207                                data,
12208                            )
12209                            .map(LightClientArbitrumErrors::InvalidScalar)
12210                    }
12211                    InvalidScalar
12212                },
12213                {
12214                    fn InvalidProof(
12215                        data: &[u8],
12216                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12217                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
12218                            .map(LightClientArbitrumErrors::InvalidProof)
12219                    }
12220                    InvalidProof
12221                },
12222                {
12223                    fn OwnableUnauthorizedAccount(
12224                        data: &[u8],
12225                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12226                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
12227                                data,
12228                            )
12229                            .map(LightClientArbitrumErrors::OwnableUnauthorizedAccount)
12230                    }
12231                    OwnableUnauthorizedAccount
12232                },
12233                {
12234                    fn FailedInnerCall(
12235                        data: &[u8],
12236                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12237                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
12238                                data,
12239                            )
12240                            .map(LightClientArbitrumErrors::FailedInnerCall)
12241                    }
12242                    FailedInnerCall
12243                },
12244                {
12245                    fn OwnableInvalidOwner(
12246                        data: &[u8],
12247                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12248                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
12249                                data,
12250                            )
12251                            .map(LightClientArbitrumErrors::OwnableInvalidOwner)
12252                    }
12253                    OwnableInvalidOwner
12254                },
12255                {
12256                    fn OwnershipCannotBeRenounced(
12257                        data: &[u8],
12258                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12259                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
12260                                data,
12261                            )
12262                            .map(LightClientArbitrumErrors::OwnershipCannotBeRenounced)
12263                    }
12264                    OwnershipCannotBeRenounced
12265                },
12266                {
12267                    fn ERC1967InvalidImplementation(
12268                        data: &[u8],
12269                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12270                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
12271                                data,
12272                            )
12273                            .map(LightClientArbitrumErrors::ERC1967InvalidImplementation)
12274                    }
12275                    ERC1967InvalidImplementation
12276                },
12277                {
12278                    fn WrongStakeTableUsed(
12279                        data: &[u8],
12280                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12281                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
12282                                data,
12283                            )
12284                            .map(LightClientArbitrumErrors::WrongStakeTableUsed)
12285                    }
12286                    WrongStakeTableUsed
12287                },
12288                {
12289                    fn InvalidHotShotBlockForCommitmentCheck(
12290                        data: &[u8],
12291                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12292                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
12293                                data,
12294                            )
12295                            .map(
12296                                LightClientArbitrumErrors::InvalidHotShotBlockForCommitmentCheck,
12297                            )
12298                    }
12299                    InvalidHotShotBlockForCommitmentCheck
12300                },
12301                {
12302                    fn AddressEmptyCode(
12303                        data: &[u8],
12304                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12305                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
12306                                data,
12307                            )
12308                            .map(LightClientArbitrumErrors::AddressEmptyCode)
12309                    }
12310                    AddressEmptyCode
12311                },
12312                {
12313                    fn InvalidArgs(
12314                        data: &[u8],
12315                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12316                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
12317                            .map(LightClientArbitrumErrors::InvalidArgs)
12318                    }
12319                    InvalidArgs
12320                },
12321                {
12322                    fn ProverNotPermissioned(
12323                        data: &[u8],
12324                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12325                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
12326                                data,
12327                            )
12328                            .map(LightClientArbitrumErrors::ProverNotPermissioned)
12329                    }
12330                    ProverNotPermissioned
12331                },
12332                {
12333                    fn NoChangeRequired(
12334                        data: &[u8],
12335                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12336                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
12337                                data,
12338                            )
12339                            .map(LightClientArbitrumErrors::NoChangeRequired)
12340                    }
12341                    NoChangeRequired
12342                },
12343                {
12344                    fn UUPSUnsupportedProxiableUUID(
12345                        data: &[u8],
12346                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12347                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
12348                                data,
12349                            )
12350                            .map(LightClientArbitrumErrors::UUPSUnsupportedProxiableUUID)
12351                    }
12352                    UUPSUnsupportedProxiableUUID
12353                },
12354                {
12355                    fn InsufficientSnapshotHistory(
12356                        data: &[u8],
12357                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12358                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
12359                                data,
12360                            )
12361                            .map(LightClientArbitrumErrors::InsufficientSnapshotHistory)
12362                    }
12363                    InsufficientSnapshotHistory
12364                },
12365                {
12366                    fn ERC1967NonPayable(
12367                        data: &[u8],
12368                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12369                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
12370                                data,
12371                            )
12372                            .map(LightClientArbitrumErrors::ERC1967NonPayable)
12373                    }
12374                    ERC1967NonPayable
12375                },
12376                {
12377                    fn NotInitializing(
12378                        data: &[u8],
12379                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12380                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
12381                                data,
12382                            )
12383                            .map(LightClientArbitrumErrors::NotInitializing)
12384                    }
12385                    NotInitializing
12386                },
12387                {
12388                    fn UUPSUnauthorizedCallContext(
12389                        data: &[u8],
12390                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12391                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
12392                                data,
12393                            )
12394                            .map(LightClientArbitrumErrors::UUPSUnauthorizedCallContext)
12395                    }
12396                    UUPSUnauthorizedCallContext
12397                },
12398                {
12399                    fn InvalidAddress(
12400                        data: &[u8],
12401                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12402                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
12403                                data,
12404                            )
12405                            .map(LightClientArbitrumErrors::InvalidAddress)
12406                    }
12407                    InvalidAddress
12408                },
12409                {
12410                    fn InvalidMaxStateHistory(
12411                        data: &[u8],
12412                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12413                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
12414                                data,
12415                            )
12416                            .map(LightClientArbitrumErrors::InvalidMaxStateHistory)
12417                    }
12418                    InvalidMaxStateHistory
12419                },
12420                {
12421                    fn InvalidInitialization(
12422                        data: &[u8],
12423                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12424                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
12425                                data,
12426                            )
12427                            .map(LightClientArbitrumErrors::InvalidInitialization)
12428                    }
12429                    InvalidInitialization
12430                },
12431            ];
12432            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12433                return Err(
12434                    alloy_sol_types::Error::unknown_selector(
12435                        <Self as alloy_sol_types::SolInterface>::NAME,
12436                        selector,
12437                    ),
12438                );
12439            };
12440            DECODE_SHIMS[idx](data)
12441        }
12442        #[inline]
12443        #[allow(non_snake_case)]
12444        fn abi_decode_raw_validate(
12445            selector: [u8; 4],
12446            data: &[u8],
12447        ) -> alloy_sol_types::Result<Self> {
12448            static DECODE_VALIDATE_SHIMS: &[fn(
12449                &[u8],
12450            ) -> alloy_sol_types::Result<LightClientArbitrumErrors>] = &[
12451                {
12452                    fn OutdatedState(
12453                        data: &[u8],
12454                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12455                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
12456                                data,
12457                            )
12458                            .map(LightClientArbitrumErrors::OutdatedState)
12459                    }
12460                    OutdatedState
12461                },
12462                {
12463                    fn InvalidScalar(
12464                        data: &[u8],
12465                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12466                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
12467                                data,
12468                            )
12469                            .map(LightClientArbitrumErrors::InvalidScalar)
12470                    }
12471                    InvalidScalar
12472                },
12473                {
12474                    fn InvalidProof(
12475                        data: &[u8],
12476                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12477                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
12478                                data,
12479                            )
12480                            .map(LightClientArbitrumErrors::InvalidProof)
12481                    }
12482                    InvalidProof
12483                },
12484                {
12485                    fn OwnableUnauthorizedAccount(
12486                        data: &[u8],
12487                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12488                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
12489                                data,
12490                            )
12491                            .map(LightClientArbitrumErrors::OwnableUnauthorizedAccount)
12492                    }
12493                    OwnableUnauthorizedAccount
12494                },
12495                {
12496                    fn FailedInnerCall(
12497                        data: &[u8],
12498                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12499                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
12500                                data,
12501                            )
12502                            .map(LightClientArbitrumErrors::FailedInnerCall)
12503                    }
12504                    FailedInnerCall
12505                },
12506                {
12507                    fn OwnableInvalidOwner(
12508                        data: &[u8],
12509                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12510                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
12511                                data,
12512                            )
12513                            .map(LightClientArbitrumErrors::OwnableInvalidOwner)
12514                    }
12515                    OwnableInvalidOwner
12516                },
12517                {
12518                    fn OwnershipCannotBeRenounced(
12519                        data: &[u8],
12520                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12521                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
12522                                data,
12523                            )
12524                            .map(LightClientArbitrumErrors::OwnershipCannotBeRenounced)
12525                    }
12526                    OwnershipCannotBeRenounced
12527                },
12528                {
12529                    fn ERC1967InvalidImplementation(
12530                        data: &[u8],
12531                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12532                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
12533                                data,
12534                            )
12535                            .map(LightClientArbitrumErrors::ERC1967InvalidImplementation)
12536                    }
12537                    ERC1967InvalidImplementation
12538                },
12539                {
12540                    fn WrongStakeTableUsed(
12541                        data: &[u8],
12542                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12543                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
12544                                data,
12545                            )
12546                            .map(LightClientArbitrumErrors::WrongStakeTableUsed)
12547                    }
12548                    WrongStakeTableUsed
12549                },
12550                {
12551                    fn InvalidHotShotBlockForCommitmentCheck(
12552                        data: &[u8],
12553                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12554                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
12555                                data,
12556                            )
12557                            .map(
12558                                LightClientArbitrumErrors::InvalidHotShotBlockForCommitmentCheck,
12559                            )
12560                    }
12561                    InvalidHotShotBlockForCommitmentCheck
12562                },
12563                {
12564                    fn AddressEmptyCode(
12565                        data: &[u8],
12566                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12567                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
12568                                data,
12569                            )
12570                            .map(LightClientArbitrumErrors::AddressEmptyCode)
12571                    }
12572                    AddressEmptyCode
12573                },
12574                {
12575                    fn InvalidArgs(
12576                        data: &[u8],
12577                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12578                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
12579                                data,
12580                            )
12581                            .map(LightClientArbitrumErrors::InvalidArgs)
12582                    }
12583                    InvalidArgs
12584                },
12585                {
12586                    fn ProverNotPermissioned(
12587                        data: &[u8],
12588                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12589                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
12590                                data,
12591                            )
12592                            .map(LightClientArbitrumErrors::ProverNotPermissioned)
12593                    }
12594                    ProverNotPermissioned
12595                },
12596                {
12597                    fn NoChangeRequired(
12598                        data: &[u8],
12599                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12600                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
12601                                data,
12602                            )
12603                            .map(LightClientArbitrumErrors::NoChangeRequired)
12604                    }
12605                    NoChangeRequired
12606                },
12607                {
12608                    fn UUPSUnsupportedProxiableUUID(
12609                        data: &[u8],
12610                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12611                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
12612                                data,
12613                            )
12614                            .map(LightClientArbitrumErrors::UUPSUnsupportedProxiableUUID)
12615                    }
12616                    UUPSUnsupportedProxiableUUID
12617                },
12618                {
12619                    fn InsufficientSnapshotHistory(
12620                        data: &[u8],
12621                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12622                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12623                                data,
12624                            )
12625                            .map(LightClientArbitrumErrors::InsufficientSnapshotHistory)
12626                    }
12627                    InsufficientSnapshotHistory
12628                },
12629                {
12630                    fn ERC1967NonPayable(
12631                        data: &[u8],
12632                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12633                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
12634                                data,
12635                            )
12636                            .map(LightClientArbitrumErrors::ERC1967NonPayable)
12637                    }
12638                    ERC1967NonPayable
12639                },
12640                {
12641                    fn NotInitializing(
12642                        data: &[u8],
12643                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12644                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
12645                                data,
12646                            )
12647                            .map(LightClientArbitrumErrors::NotInitializing)
12648                    }
12649                    NotInitializing
12650                },
12651                {
12652                    fn UUPSUnauthorizedCallContext(
12653                        data: &[u8],
12654                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12655                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
12656                                data,
12657                            )
12658                            .map(LightClientArbitrumErrors::UUPSUnauthorizedCallContext)
12659                    }
12660                    UUPSUnauthorizedCallContext
12661                },
12662                {
12663                    fn InvalidAddress(
12664                        data: &[u8],
12665                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12666                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
12667                                data,
12668                            )
12669                            .map(LightClientArbitrumErrors::InvalidAddress)
12670                    }
12671                    InvalidAddress
12672                },
12673                {
12674                    fn InvalidMaxStateHistory(
12675                        data: &[u8],
12676                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12677                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12678                                data,
12679                            )
12680                            .map(LightClientArbitrumErrors::InvalidMaxStateHistory)
12681                    }
12682                    InvalidMaxStateHistory
12683                },
12684                {
12685                    fn InvalidInitialization(
12686                        data: &[u8],
12687                    ) -> alloy_sol_types::Result<LightClientArbitrumErrors> {
12688                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
12689                                data,
12690                            )
12691                            .map(LightClientArbitrumErrors::InvalidInitialization)
12692                    }
12693                    InvalidInitialization
12694                },
12695            ];
12696            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12697                return Err(
12698                    alloy_sol_types::Error::unknown_selector(
12699                        <Self as alloy_sol_types::SolInterface>::NAME,
12700                        selector,
12701                    ),
12702                );
12703            };
12704            DECODE_VALIDATE_SHIMS[idx](data)
12705        }
12706        #[inline]
12707        fn abi_encoded_size(&self) -> usize {
12708            match self {
12709                Self::AddressEmptyCode(inner) => {
12710                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
12711                        inner,
12712                    )
12713                }
12714                Self::ERC1967InvalidImplementation(inner) => {
12715                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
12716                        inner,
12717                    )
12718                }
12719                Self::ERC1967NonPayable(inner) => {
12720                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
12721                        inner,
12722                    )
12723                }
12724                Self::FailedInnerCall(inner) => {
12725                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
12726                        inner,
12727                    )
12728                }
12729                Self::InsufficientSnapshotHistory(inner) => {
12730                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
12731                        inner,
12732                    )
12733                }
12734                Self::InvalidAddress(inner) => {
12735                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
12736                        inner,
12737                    )
12738                }
12739                Self::InvalidArgs(inner) => {
12740                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
12741                }
12742                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12743                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
12744                        inner,
12745                    )
12746                }
12747                Self::InvalidInitialization(inner) => {
12748                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
12749                        inner,
12750                    )
12751                }
12752                Self::InvalidMaxStateHistory(inner) => {
12753                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
12754                        inner,
12755                    )
12756                }
12757                Self::InvalidProof(inner) => {
12758                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
12759                }
12760                Self::InvalidScalar(inner) => {
12761                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
12762                }
12763                Self::NoChangeRequired(inner) => {
12764                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
12765                        inner,
12766                    )
12767                }
12768                Self::NotInitializing(inner) => {
12769                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
12770                        inner,
12771                    )
12772                }
12773                Self::OutdatedState(inner) => {
12774                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
12775                }
12776                Self::OwnableInvalidOwner(inner) => {
12777                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
12778                        inner,
12779                    )
12780                }
12781                Self::OwnableUnauthorizedAccount(inner) => {
12782                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
12783                        inner,
12784                    )
12785                }
12786                Self::OwnershipCannotBeRenounced(inner) => {
12787                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
12788                        inner,
12789                    )
12790                }
12791                Self::ProverNotPermissioned(inner) => {
12792                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
12793                        inner,
12794                    )
12795                }
12796                Self::UUPSUnauthorizedCallContext(inner) => {
12797                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
12798                        inner,
12799                    )
12800                }
12801                Self::UUPSUnsupportedProxiableUUID(inner) => {
12802                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
12803                        inner,
12804                    )
12805                }
12806                Self::WrongStakeTableUsed(inner) => {
12807                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
12808                        inner,
12809                    )
12810                }
12811            }
12812        }
12813        #[inline]
12814        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12815            match self {
12816                Self::AddressEmptyCode(inner) => {
12817                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
12818                        inner,
12819                        out,
12820                    )
12821                }
12822                Self::ERC1967InvalidImplementation(inner) => {
12823                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
12824                        inner,
12825                        out,
12826                    )
12827                }
12828                Self::ERC1967NonPayable(inner) => {
12829                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
12830                        inner,
12831                        out,
12832                    )
12833                }
12834                Self::FailedInnerCall(inner) => {
12835                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
12836                        inner,
12837                        out,
12838                    )
12839                }
12840                Self::InsufficientSnapshotHistory(inner) => {
12841                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
12842                        inner,
12843                        out,
12844                    )
12845                }
12846                Self::InvalidAddress(inner) => {
12847                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
12848                        inner,
12849                        out,
12850                    )
12851                }
12852                Self::InvalidArgs(inner) => {
12853                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
12854                        inner,
12855                        out,
12856                    )
12857                }
12858                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12859                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
12860                        inner,
12861                        out,
12862                    )
12863                }
12864                Self::InvalidInitialization(inner) => {
12865                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
12866                        inner,
12867                        out,
12868                    )
12869                }
12870                Self::InvalidMaxStateHistory(inner) => {
12871                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
12872                        inner,
12873                        out,
12874                    )
12875                }
12876                Self::InvalidProof(inner) => {
12877                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
12878                        inner,
12879                        out,
12880                    )
12881                }
12882                Self::InvalidScalar(inner) => {
12883                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
12884                        inner,
12885                        out,
12886                    )
12887                }
12888                Self::NoChangeRequired(inner) => {
12889                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
12890                        inner,
12891                        out,
12892                    )
12893                }
12894                Self::NotInitializing(inner) => {
12895                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12896                        inner,
12897                        out,
12898                    )
12899                }
12900                Self::OutdatedState(inner) => {
12901                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
12902                        inner,
12903                        out,
12904                    )
12905                }
12906                Self::OwnableInvalidOwner(inner) => {
12907                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12908                        inner,
12909                        out,
12910                    )
12911                }
12912                Self::OwnableUnauthorizedAccount(inner) => {
12913                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12914                        inner,
12915                        out,
12916                    )
12917                }
12918                Self::OwnershipCannotBeRenounced(inner) => {
12919                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
12920                        inner,
12921                        out,
12922                    )
12923                }
12924                Self::ProverNotPermissioned(inner) => {
12925                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
12926                        inner,
12927                        out,
12928                    )
12929                }
12930                Self::UUPSUnauthorizedCallContext(inner) => {
12931                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12932                        inner,
12933                        out,
12934                    )
12935                }
12936                Self::UUPSUnsupportedProxiableUUID(inner) => {
12937                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12938                        inner,
12939                        out,
12940                    )
12941                }
12942                Self::WrongStakeTableUsed(inner) => {
12943                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
12944                        inner,
12945                        out,
12946                    )
12947                }
12948            }
12949        }
12950    }
12951    ///Container for all the [`LightClientArbitrum`](self) events.
12952    #[derive(Clone)]
12953    #[derive(serde::Serialize, serde::Deserialize)]
12954    #[derive(Debug, PartialEq, Eq, Hash)]
12955    pub enum LightClientArbitrumEvents {
12956        #[allow(missing_docs)]
12957        Initialized(Initialized),
12958        #[allow(missing_docs)]
12959        NewState(NewState),
12960        #[allow(missing_docs)]
12961        OwnershipTransferred(OwnershipTransferred),
12962        #[allow(missing_docs)]
12963        PermissionedProverNotRequired(PermissionedProverNotRequired),
12964        #[allow(missing_docs)]
12965        PermissionedProverRequired(PermissionedProverRequired),
12966        #[allow(missing_docs)]
12967        Upgrade(Upgrade),
12968        #[allow(missing_docs)]
12969        Upgraded(Upgraded),
12970    }
12971    impl LightClientArbitrumEvents {
12972        /// All the selectors of this enum.
12973        ///
12974        /// Note that the selectors might not be in the same order as the variants.
12975        /// No guarantees are made about the order of the selectors.
12976        ///
12977        /// Prefer using `SolInterface` methods instead.
12978        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12979            [
12980                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
12981                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
12982                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
12983            ],
12984            [
12985                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
12986                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
12987                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
12988            ],
12989            [
12990                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
12991                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
12992                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
12993            ],
12994            [
12995                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
12996                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
12997                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
12998            ],
12999            [
13000                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
13001                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
13002                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
13003            ],
13004            [
13005                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
13006                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
13007                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
13008            ],
13009            [
13010                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
13011                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
13012                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
13013            ],
13014        ];
13015        /// The names of the variants in the same order as `SELECTORS`.
13016        pub const VARIANT_NAMES: &'static [&'static str] = &[
13017            ::core::stringify!(PermissionedProverRequired),
13018            ::core::stringify!(OwnershipTransferred),
13019            ::core::stringify!(PermissionedProverNotRequired),
13020            ::core::stringify!(NewState),
13021            ::core::stringify!(Upgraded),
13022            ::core::stringify!(Initialized),
13023            ::core::stringify!(Upgrade),
13024        ];
13025        /// The signatures in the same order as `SELECTORS`.
13026        pub const SIGNATURES: &'static [&'static str] = &[
13027            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
13028            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
13029            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
13030            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
13031            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
13032            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
13033            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
13034        ];
13035        /// Returns the signature for the given selector, if known.
13036        #[inline]
13037        pub fn signature_by_selector(
13038            selector: [u8; 32usize],
13039        ) -> ::core::option::Option<&'static str> {
13040            match Self::SELECTORS.binary_search(&selector) {
13041                ::core::result::Result::Ok(idx) => {
13042                    ::core::option::Option::Some(Self::SIGNATURES[idx])
13043                }
13044                ::core::result::Result::Err(_) => ::core::option::Option::None,
13045            }
13046        }
13047        /// Returns the enum variant name for the given selector, if known.
13048        #[inline]
13049        pub fn name_by_selector(
13050            selector: [u8; 32usize],
13051        ) -> ::core::option::Option<&'static str> {
13052            let sig = Self::signature_by_selector(selector)?;
13053            sig.split_once('(').map(|(name, _)| name)
13054        }
13055    }
13056    #[automatically_derived]
13057    impl alloy_sol_types::SolEventInterface for LightClientArbitrumEvents {
13058        const NAME: &'static str = "LightClientArbitrumEvents";
13059        const COUNT: usize = 7usize;
13060        fn decode_raw_log(
13061            topics: &[alloy_sol_types::Word],
13062            data: &[u8],
13063        ) -> alloy_sol_types::Result<Self> {
13064            match topics.first().copied() {
13065                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13066                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
13067                            topics,
13068                            data,
13069                        )
13070                        .map(Self::Initialized)
13071                }
13072                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13073                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13074                        .map(Self::NewState)
13075                }
13076                Some(
13077                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13078                ) => {
13079                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
13080                            topics,
13081                            data,
13082                        )
13083                        .map(Self::OwnershipTransferred)
13084                }
13085                Some(
13086                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13087                ) => {
13088                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
13089                            topics,
13090                            data,
13091                        )
13092                        .map(Self::PermissionedProverNotRequired)
13093                }
13094                Some(
13095                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
13096                ) => {
13097                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
13098                            topics,
13099                            data,
13100                        )
13101                        .map(Self::PermissionedProverRequired)
13102                }
13103                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13104                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13105                        .map(Self::Upgrade)
13106                }
13107                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
13108                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
13109                        .map(Self::Upgraded)
13110                }
13111                _ => {
13112                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
13113                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
13114                        log: alloy_sol_types::private::Box::new(
13115                            alloy_sol_types::private::LogData::new_unchecked(
13116                                topics.to_vec(),
13117                                data.to_vec().into(),
13118                            ),
13119                        ),
13120                    })
13121                }
13122            }
13123        }
13124    }
13125    #[automatically_derived]
13126    impl alloy_sol_types::private::IntoLogData for LightClientArbitrumEvents {
13127        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
13128            match self {
13129                Self::Initialized(inner) => {
13130                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13131                }
13132                Self::NewState(inner) => {
13133                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13134                }
13135                Self::OwnershipTransferred(inner) => {
13136                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13137                }
13138                Self::PermissionedProverNotRequired(inner) => {
13139                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13140                }
13141                Self::PermissionedProverRequired(inner) => {
13142                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13143                }
13144                Self::Upgrade(inner) => {
13145                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13146                }
13147                Self::Upgraded(inner) => {
13148                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
13149                }
13150            }
13151        }
13152        fn into_log_data(self) -> alloy_sol_types::private::LogData {
13153            match self {
13154                Self::Initialized(inner) => {
13155                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13156                }
13157                Self::NewState(inner) => {
13158                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13159                }
13160                Self::OwnershipTransferred(inner) => {
13161                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13162                }
13163                Self::PermissionedProverNotRequired(inner) => {
13164                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13165                }
13166                Self::PermissionedProverRequired(inner) => {
13167                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13168                }
13169                Self::Upgrade(inner) => {
13170                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13171                }
13172                Self::Upgraded(inner) => {
13173                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
13174                }
13175            }
13176        }
13177    }
13178    use alloy::contract as alloy_contract;
13179    /**Creates a new wrapper around an on-chain [`LightClientArbitrum`](self) contract instance.
13180
13181See the [wrapper's documentation](`LightClientArbitrumInstance`) for more details.*/
13182    #[inline]
13183    pub const fn new<
13184        P: alloy_contract::private::Provider<N>,
13185        N: alloy_contract::private::Network,
13186    >(
13187        address: alloy_sol_types::private::Address,
13188        __provider: P,
13189    ) -> LightClientArbitrumInstance<P, N> {
13190        LightClientArbitrumInstance::<P, N>::new(address, __provider)
13191    }
13192    /**Deploys this contract using the given `provider` and constructor arguments, if any.
13193
13194Returns a new instance of the contract, if the deployment was successful.
13195
13196For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13197    #[inline]
13198    pub fn deploy<
13199        P: alloy_contract::private::Provider<N>,
13200        N: alloy_contract::private::Network,
13201    >(
13202        __provider: P,
13203    ) -> impl ::core::future::Future<
13204        Output = alloy_contract::Result<LightClientArbitrumInstance<P, N>>,
13205    > {
13206        LightClientArbitrumInstance::<P, N>::deploy(__provider)
13207    }
13208    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13209and constructor arguments, if any.
13210
13211This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13212the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13213    #[inline]
13214    pub fn deploy_builder<
13215        P: alloy_contract::private::Provider<N>,
13216        N: alloy_contract::private::Network,
13217    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
13218        LightClientArbitrumInstance::<P, N>::deploy_builder(__provider)
13219    }
13220    /**A [`LightClientArbitrum`](self) instance.
13221
13222Contains type-safe methods for interacting with an on-chain instance of the
13223[`LightClientArbitrum`](self) contract located at a given `address`, using a given
13224provider `P`.
13225
13226If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
13227documentation on how to provide it), the `deploy` and `deploy_builder` methods can
13228be used to deploy a new instance of the contract.
13229
13230See the [module-level documentation](self) for all the available methods.*/
13231    #[derive(Clone)]
13232    pub struct LightClientArbitrumInstance<P, N = alloy_contract::private::Ethereum> {
13233        address: alloy_sol_types::private::Address,
13234        provider: P,
13235        _network: ::core::marker::PhantomData<N>,
13236    }
13237    #[automatically_derived]
13238    impl<P, N> ::core::fmt::Debug for LightClientArbitrumInstance<P, N> {
13239        #[inline]
13240        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
13241            f.debug_tuple("LightClientArbitrumInstance").field(&self.address).finish()
13242        }
13243    }
13244    /// Instantiation and getters/setters.
13245    impl<
13246        P: alloy_contract::private::Provider<N>,
13247        N: alloy_contract::private::Network,
13248    > LightClientArbitrumInstance<P, N> {
13249        /**Creates a new wrapper around an on-chain [`LightClientArbitrum`](self) contract instance.
13250
13251See the [wrapper's documentation](`LightClientArbitrumInstance`) for more details.*/
13252        #[inline]
13253        pub const fn new(
13254            address: alloy_sol_types::private::Address,
13255            __provider: P,
13256        ) -> Self {
13257            Self {
13258                address,
13259                provider: __provider,
13260                _network: ::core::marker::PhantomData,
13261            }
13262        }
13263        /**Deploys this contract using the given `provider` and constructor arguments, if any.
13264
13265Returns a new instance of the contract, if the deployment was successful.
13266
13267For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
13268        #[inline]
13269        pub async fn deploy(
13270            __provider: P,
13271        ) -> alloy_contract::Result<LightClientArbitrumInstance<P, N>> {
13272            let call_builder = Self::deploy_builder(__provider);
13273            let contract_address = call_builder.deploy().await?;
13274            Ok(Self::new(contract_address, call_builder.provider))
13275        }
13276        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
13277and constructor arguments, if any.
13278
13279This is a simple wrapper around creating a `RawCallBuilder` with the data set to
13280the bytecode concatenated with the constructor's ABI-encoded arguments.*/
13281        #[inline]
13282        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
13283            alloy_contract::RawCallBuilder::new_raw_deploy(
13284                __provider,
13285                ::core::clone::Clone::clone(&BYTECODE),
13286            )
13287        }
13288        /// Returns a reference to the address.
13289        #[inline]
13290        pub const fn address(&self) -> &alloy_sol_types::private::Address {
13291            &self.address
13292        }
13293        /// Sets the address.
13294        #[inline]
13295        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
13296            self.address = address;
13297        }
13298        /// Sets the address and returns `self`.
13299        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
13300            self.set_address(address);
13301            self
13302        }
13303        /// Returns a reference to the provider.
13304        #[inline]
13305        pub const fn provider(&self) -> &P {
13306            &self.provider
13307        }
13308    }
13309    impl<P: ::core::clone::Clone, N> LightClientArbitrumInstance<&P, N> {
13310        /// Clones the provider and returns a new instance with the cloned provider.
13311        #[inline]
13312        pub fn with_cloned_provider(self) -> LightClientArbitrumInstance<P, N> {
13313            LightClientArbitrumInstance {
13314                address: self.address,
13315                provider: ::core::clone::Clone::clone(&self.provider),
13316                _network: ::core::marker::PhantomData,
13317            }
13318        }
13319    }
13320    /// Function calls.
13321    impl<
13322        P: alloy_contract::private::Provider<N>,
13323        N: alloy_contract::private::Network,
13324    > LightClientArbitrumInstance<P, N> {
13325        /// Creates a new call builder using this contract instance's provider and address.
13326        ///
13327        /// Note that the call can be any function call, not just those defined in this
13328        /// contract. Prefer using the other methods for building type-safe contract calls.
13329        pub fn call_builder<C: alloy_sol_types::SolCall>(
13330            &self,
13331            call: &C,
13332        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
13333            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
13334        }
13335        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
13336        pub fn UPGRADE_INTERFACE_VERSION(
13337            &self,
13338        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
13339            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
13340        }
13341        ///Creates a new call builder for the [`_getVk`] function.
13342        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
13343            self.call_builder(&_getVkCall)
13344        }
13345        ///Creates a new call builder for the [`currentBlockNumber`] function.
13346        pub fn currentBlockNumber(
13347            &self,
13348        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
13349            self.call_builder(&currentBlockNumberCall)
13350        }
13351        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
13352        pub fn disablePermissionedProverMode(
13353            &self,
13354        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
13355            self.call_builder(&disablePermissionedProverModeCall)
13356        }
13357        ///Creates a new call builder for the [`finalizedState`] function.
13358        pub fn finalizedState(
13359            &self,
13360        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
13361            self.call_builder(&finalizedStateCall)
13362        }
13363        ///Creates a new call builder for the [`genesisStakeTableState`] function.
13364        pub fn genesisStakeTableState(
13365            &self,
13366        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
13367            self.call_builder(&genesisStakeTableStateCall)
13368        }
13369        ///Creates a new call builder for the [`genesisState`] function.
13370        pub fn genesisState(
13371            &self,
13372        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
13373            self.call_builder(&genesisStateCall)
13374        }
13375        ///Creates a new call builder for the [`getHotShotCommitment`] function.
13376        pub fn getHotShotCommitment(
13377            &self,
13378            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
13379        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
13380            self.call_builder(
13381                &getHotShotCommitmentCall {
13382                    hotShotBlockHeight,
13383                },
13384            )
13385        }
13386        ///Creates a new call builder for the [`getStateHistoryCount`] function.
13387        pub fn getStateHistoryCount(
13388            &self,
13389        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
13390            self.call_builder(&getStateHistoryCountCall)
13391        }
13392        ///Creates a new call builder for the [`getVersion`] function.
13393        pub fn getVersion(
13394            &self,
13395        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
13396            self.call_builder(&getVersionCall)
13397        }
13398        ///Creates a new call builder for the [`initialize`] function.
13399        pub fn initialize(
13400            &self,
13401            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13402            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13403            _stateHistoryRetentionPeriod: u32,
13404            owner: alloy::sol_types::private::Address,
13405        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
13406            self.call_builder(
13407                &initializeCall {
13408                    _genesis,
13409                    _genesisStakeTableState,
13410                    _stateHistoryRetentionPeriod,
13411                    owner,
13412                },
13413            )
13414        }
13415        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
13416        pub fn isPermissionedProverEnabled(
13417            &self,
13418        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
13419            self.call_builder(&isPermissionedProverEnabledCall)
13420        }
13421        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
13422        pub fn lagOverEscapeHatchThreshold(
13423            &self,
13424            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
13425            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
13426        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
13427            self.call_builder(
13428                &lagOverEscapeHatchThresholdCall {
13429                    blockNumber,
13430                    blockThreshold,
13431                },
13432            )
13433        }
13434        ///Creates a new call builder for the [`newFinalizedState`] function.
13435        pub fn newFinalizedState(
13436            &self,
13437            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
13438            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
13439        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
13440            self.call_builder(
13441                &newFinalizedStateCall {
13442                    newState,
13443                    proof,
13444                },
13445            )
13446        }
13447        ///Creates a new call builder for the [`owner`] function.
13448        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
13449            self.call_builder(&ownerCall)
13450        }
13451        ///Creates a new call builder for the [`permissionedProver`] function.
13452        pub fn permissionedProver(
13453            &self,
13454        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
13455            self.call_builder(&permissionedProverCall)
13456        }
13457        ///Creates a new call builder for the [`proxiableUUID`] function.
13458        pub fn proxiableUUID(
13459            &self,
13460        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
13461            self.call_builder(&proxiableUUIDCall)
13462        }
13463        ///Creates a new call builder for the [`renounceOwnership`] function.
13464        pub fn renounceOwnership(
13465            &self,
13466        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
13467            self.call_builder(&renounceOwnershipCall)
13468        }
13469        ///Creates a new call builder for the [`setPermissionedProver`] function.
13470        pub fn setPermissionedProver(
13471            &self,
13472            prover: alloy::sol_types::private::Address,
13473        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
13474            self.call_builder(
13475                &setPermissionedProverCall {
13476                    prover,
13477                },
13478            )
13479        }
13480        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
13481        pub fn setstateHistoryRetentionPeriod(
13482            &self,
13483            historySeconds: u32,
13484        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
13485            self.call_builder(
13486                &setstateHistoryRetentionPeriodCall {
13487                    historySeconds,
13488                },
13489            )
13490        }
13491        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
13492        pub fn stateHistoryCommitments(
13493            &self,
13494            _0: alloy::sol_types::private::primitives::aliases::U256,
13495        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
13496            self.call_builder(&stateHistoryCommitmentsCall(_0))
13497        }
13498        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
13499        pub fn stateHistoryFirstIndex(
13500            &self,
13501        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
13502            self.call_builder(&stateHistoryFirstIndexCall)
13503        }
13504        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
13505        pub fn stateHistoryRetentionPeriod(
13506            &self,
13507        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
13508            self.call_builder(&stateHistoryRetentionPeriodCall)
13509        }
13510        ///Creates a new call builder for the [`transferOwnership`] function.
13511        pub fn transferOwnership(
13512            &self,
13513            newOwner: alloy::sol_types::private::Address,
13514        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
13515            self.call_builder(&transferOwnershipCall { newOwner })
13516        }
13517        ///Creates a new call builder for the [`upgradeToAndCall`] function.
13518        pub fn upgradeToAndCall(
13519            &self,
13520            newImplementation: alloy::sol_types::private::Address,
13521            data: alloy::sol_types::private::Bytes,
13522        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
13523            self.call_builder(
13524                &upgradeToAndCallCall {
13525                    newImplementation,
13526                    data,
13527                },
13528            )
13529        }
13530    }
13531    /// Event filters.
13532    impl<
13533        P: alloy_contract::private::Provider<N>,
13534        N: alloy_contract::private::Network,
13535    > LightClientArbitrumInstance<P, N> {
13536        /// Creates a new event filter using this contract instance's provider and address.
13537        ///
13538        /// Note that the type can be any event, not just those defined in this contract.
13539        /// Prefer using the other methods for building type-safe event filters.
13540        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13541            &self,
13542        ) -> alloy_contract::Event<&P, E, N> {
13543            alloy_contract::Event::new_sol(&self.provider, &self.address)
13544        }
13545        ///Creates a new event filter for the [`Initialized`] event.
13546        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
13547            self.event_filter::<Initialized>()
13548        }
13549        ///Creates a new event filter for the [`NewState`] event.
13550        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
13551            self.event_filter::<NewState>()
13552        }
13553        ///Creates a new event filter for the [`OwnershipTransferred`] event.
13554        pub fn OwnershipTransferred_filter(
13555            &self,
13556        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
13557            self.event_filter::<OwnershipTransferred>()
13558        }
13559        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
13560        pub fn PermissionedProverNotRequired_filter(
13561            &self,
13562        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
13563            self.event_filter::<PermissionedProverNotRequired>()
13564        }
13565        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
13566        pub fn PermissionedProverRequired_filter(
13567            &self,
13568        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
13569            self.event_filter::<PermissionedProverRequired>()
13570        }
13571        ///Creates a new event filter for the [`Upgrade`] event.
13572        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
13573            self.event_filter::<Upgrade>()
13574        }
13575        ///Creates a new event filter for the [`Upgraded`] event.
13576        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
13577            self.event_filter::<Upgraded>()
13578        }
13579    }
13580}